Created
May 8, 2015 10:32
-
-
Save HillLiu/af1b6e632b9d083eef4b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| if (!window["googleNDT_"]) { | |
| /** @type {number} */ | |
| window["googleNDT_"] = (new Date).getTime(); | |
| } | |
| /** @type {number} */ | |
| window["_googCsaX"] = 4; | |
| /** @type {number} */ | |
| window._googCsaRelSearch = 2631661; | |
| /** @type {number} */ | |
| window.googleGws = 1; | |
| (function() { | |
| /** | |
| * @param {?} str | |
| * @return {?} | |
| */ | |
| function getComputedStyle(str) { | |
| return parseFloat(str.replace("px", "")) || 0; | |
| } | |
| /** | |
| * @param {string} obj | |
| * @param {boolean} recurring | |
| * @return {?} | |
| */ | |
| function setShortStyleProperty(obj, recurring) { | |
| if ("string" == typeof obj) { | |
| /** @type {(HTMLElement|null)} */ | |
| obj = document.getElementById(obj); | |
| } | |
| var current = document.defaultView || {}; | |
| var subtract = recurring ? obj.offsetHeight : obj.offsetWidth; | |
| /** @type {Array} */ | |
| var tokens = recurring ? ["Top", "Bottom"] : ["Right", "Left"]; | |
| var resolveValues; | |
| /** @type {Array} */ | |
| resolveValues = setFillAndStroke() ? ["margin"] : ["border", "margin", "padding"]; | |
| /** @type {number} */ | |
| var length = resolveValues.length; | |
| /** @type {number} */ | |
| var nTokens = tokens.length; | |
| if (current && current.getComputedStyle) { | |
| var computedStyle = current.getComputedStyle(obj, false); | |
| /** @type {number} */ | |
| current = 0; | |
| for (;current < length;current++) { | |
| /** @type {number} */ | |
| var ti = 0; | |
| for (;ti < nTokens;ti++) { | |
| subtract += getComputedStyle(computedStyle.getPropertyValue([resolveValues[current], tokens[ti].toLowerCase()].join("-"))); | |
| } | |
| } | |
| } else { | |
| computedStyle = obj.currentStyle; | |
| if (!setFillAndStroke()) { | |
| /** @type {number} */ | |
| ti = 0; | |
| for (;ti < nTokens;ti++) { | |
| subtract += getComputedStyle(computedStyle[["border", tokens[ti], "Width"].join("")]); | |
| } | |
| } | |
| /** @type {number} */ | |
| current = 0; | |
| for (;current < length;current++) { | |
| if ("border" != resolveValues[current]) { | |
| /** @type {number} */ | |
| ti = 0; | |
| for (;ti < nTokens;ti++) { | |
| subtract += getComputedStyle(computedStyle[[resolveValues[current], tokens[ti]].join("")]); | |
| } | |
| } | |
| } | |
| } | |
| return subtract; | |
| } | |
| /** @type {number} */ | |
| window.googleAltLoader = 4; | |
| /** @type {string} */ | |
| var io = "3.0"; | |
| /** @type {string} */ | |
| var xformed = "8180cc552d14dcbcfafe6ec1162573e3bc809143"; | |
| /** @type {string} */ | |
| var offset = "ads"; | |
| /** @type {string} */ | |
| var SNAP_VERSION = "search"; | |
| /** @type {string} */ | |
| var firstByIndex = "//ajax.googleapis.com/ajax"; | |
| /** @type {string} */ | |
| var opts = "//www.google.com/uds"; | |
| /** @type {string} */ | |
| var name = "www.google.com"; | |
| var p; | |
| var global = this; | |
| /** | |
| * @param {?} value | |
| * @return {?} | |
| */ | |
| var isArray = function(value) { | |
| /** @type {string} */ | |
| var $s = typeof value; | |
| if ("object" == $s) { | |
| if (value) { | |
| if (value instanceof Array) { | |
| return "array"; | |
| } | |
| if (value instanceof Object) { | |
| return $s; | |
| } | |
| /** @type {string} */ | |
| var isFunction = Object.prototype.toString.call(value); | |
| if ("[object Window]" == isFunction) { | |
| return "object"; | |
| } | |
| if ("[object Array]" == isFunction || "number" == typeof value.length && ("undefined" != typeof value.splice && ("undefined" != typeof value.propertyIsEnumerable && !value.propertyIsEnumerable("splice")))) { | |
| return "array"; | |
| } | |
| if ("[object Function]" == isFunction || "undefined" != typeof value.call && ("undefined" != typeof value.propertyIsEnumerable && !value.propertyIsEnumerable("call"))) { | |
| return "function"; | |
| } | |
| } else { | |
| return "null"; | |
| } | |
| } else { | |
| if ("function" == $s && "undefined" == typeof value.call) { | |
| return "object"; | |
| } | |
| } | |
| return $s; | |
| }; | |
| /** | |
| * @param {string} depth | |
| * @return {?} | |
| */ | |
| var spaces = function(depth) { | |
| return null != depth; | |
| }; | |
| /** | |
| * @param {?} arg | |
| * @return {?} | |
| */ | |
| var isObject = function(arg) { | |
| return "string" == typeof arg; | |
| }; | |
| /** | |
| * @param {Function} fn | |
| * @param {Object} obj | |
| * @param {?} exports | |
| * @return {?} | |
| */ | |
| var program = function(fn, obj, exports) { | |
| return fn.call.apply(fn.bind, arguments); | |
| }; | |
| /** | |
| * @param {Function} fn | |
| * @param {Object} obj | |
| * @param {?} $var_args$$ | |
| * @return {?} | |
| */ | |
| var $goog$bindJs_$ = function(fn, obj, $var_args$$) { | |
| if (!fn) { | |
| throw Error(); | |
| } | |
| if (2 < arguments.length) { | |
| /** @type {Array.<?>} */ | |
| var args = Array.prototype.slice.call(arguments, 2); | |
| return function() { | |
| /** @type {Array.<?>} */ | |
| var newArgs = Array.prototype.slice.call(arguments); | |
| Array.prototype.unshift.apply(newArgs, args); | |
| return fn.apply(obj, newArgs); | |
| }; | |
| } | |
| return function() { | |
| return fn.apply(obj, arguments); | |
| }; | |
| }; | |
| /** | |
| * @param {Function} dataAndEvents | |
| * @param {Object} obj | |
| * @param {?} bytesRead | |
| * @return {?} | |
| */ | |
| var wrapper = function(dataAndEvents, obj, bytesRead) { | |
| /** @type {function (Function, Object, ?): ?} */ | |
| wrapper = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? program : $goog$bindJs_$; | |
| return wrapper.apply(null, arguments); | |
| }; | |
| /** | |
| * @param {Function} fn | |
| * @param {Function} name | |
| * @return {?} | |
| */ | |
| var defer = function(fn, name) { | |
| /** @type {Array.<?>} */ | |
| var args = Array.prototype.slice.call(arguments, 1); | |
| return function() { | |
| /** @type {Array.<?>} */ | |
| var newArgs = args.slice(); | |
| newArgs.push.apply(newArgs, arguments); | |
| return fn.apply(this, newArgs); | |
| }; | |
| }; | |
| /** @type {function (): number} */ | |
| var _randomVal = Date.now || function() { | |
| return+new Date; | |
| }; | |
| /** | |
| * @param {Function} obj | |
| * @param {Function} type | |
| * @return {undefined} | |
| */ | |
| var isPlainObject = function(obj, type) { | |
| /** | |
| * @return {undefined} | |
| */ | |
| function Fn() { | |
| } | |
| Fn.prototype = type.prototype; | |
| obj.pk = type.prototype; | |
| obj.prototype = new Fn; | |
| /** @type {Function} */ | |
| obj.prototype.constructor = obj; | |
| /** | |
| * @param {?} opt_context | |
| * @param {?} method | |
| * @param {?} dataAndEvents | |
| * @return {?} | |
| */ | |
| obj.jk = function(opt_context, method, dataAndEvents) { | |
| /** @type {Array} */ | |
| var args = Array(arguments.length - 2); | |
| /** @type {number} */ | |
| var i = 2; | |
| for (;i < arguments.length;i++) { | |
| args[i - 2] = arguments[i]; | |
| } | |
| return type.prototype[method].apply(opt_context, args); | |
| }; | |
| }; | |
| /** @type {function (this:Function, (Object|null|undefined), ...[*]): Function} */ | |
| Function.prototype.bind = Function.prototype.bind || function(walkers, dataAndEvents) { | |
| if (1 < arguments.length) { | |
| /** @type {Array.<?>} */ | |
| var args = Array.prototype.slice.call(arguments, 1); | |
| args.unshift(this, walkers); | |
| return wrapper.apply(null, args); | |
| } | |
| return wrapper(this, walkers); | |
| }; | |
| /** @type {Array} */ | |
| var codeSegments = ["iPhone OS 5_", "iPhone OS 4_", "SC-02C Build/GINGERBREAD"]; | |
| /** @type {string} */ | |
| var ua = window.navigator ? window.navigator.userAgent : ""; | |
| /** | |
| * @return {?} | |
| */ | |
| var createTextNode = function() { | |
| return 5 == rgbToHex(newRed) || (6 == rgbToHex(newRed) || 7 == rgbToHex(newRed)); | |
| }; | |
| /** @type {RegExp} */ | |
| var newRed = /MSIE\s+(\d+)\./; | |
| /** @type {RegExp} */ | |
| var r = /Opera\/.*Version\/(\d+)\./; | |
| /** @type {RegExp} */ | |
| var elems = /Firefox\/(\d+)\./; | |
| /** @type {RegExp} */ | |
| var angle = /Version\/(\d+)\..*Safari/; | |
| /** | |
| * @param {Object} r | |
| * @return {?} | |
| */ | |
| var rgbToHex = function(r) { | |
| r = (r = r.exec(ua)) ? r[1] : ""; | |
| return 0 < r.length && (r = parseInt(r, 10)) ? r : null; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| var endsWith = function() { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| if (-1 != ua.indexOf(codeSegments[i])) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| }; | |
| /** | |
| * @param {string} text | |
| * @return {?} | |
| */ | |
| var trim = function(text) { | |
| /** @type {string} */ | |
| text = String(text); | |
| if (/^\s*$/.test(text) ? 0 : /^[\],:{}\s\u2028\u2029]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, "@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, ""))) { | |
| try { | |
| return eval("(" + text + ")"); | |
| } catch (b) { | |
| } | |
| } | |
| throw Error("Invalid JSON string: " + text); | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var ke = function() { | |
| this.zd = void 0; | |
| }; | |
| /** | |
| * @param {?} options | |
| * @param {Object} value | |
| * @param {Array} ret | |
| * @return {undefined} | |
| */ | |
| var walk = function(options, value, ret) { | |
| if (null == value) { | |
| ret.push("null"); | |
| } else { | |
| if ("object" == typeof value) { | |
| if ("array" == isArray(value)) { | |
| /** @type {Object} */ | |
| var text = value; | |
| value = text.length; | |
| ret.push("["); | |
| /** @type {string} */ | |
| var c = ""; | |
| /** @type {number} */ | |
| var j = 0; | |
| for (;j < value;j++) { | |
| ret.push(c); | |
| c = text[j]; | |
| walk(options, options.zd ? options.zd.call(text, String(j), c) : c, ret); | |
| /** @type {string} */ | |
| c = ","; | |
| } | |
| ret.push("]"); | |
| return; | |
| } | |
| if (value instanceof String || (value instanceof Number || value instanceof Boolean)) { | |
| /** @type {*} */ | |
| value = value.valueOf(); | |
| } else { | |
| ret.push("{"); | |
| /** @type {string} */ | |
| j = ""; | |
| for (text in value) { | |
| if (Object.prototype.hasOwnProperty.call(value, text)) { | |
| c = value[text]; | |
| if ("function" != typeof c) { | |
| ret.push(j); | |
| encode(text, ret); | |
| ret.push(":"); | |
| walk(options, options.zd ? options.zd.call(value, text, c) : c, ret); | |
| /** @type {string} */ | |
| j = ","; | |
| } | |
| } | |
| } | |
| ret.push("}"); | |
| return; | |
| } | |
| } | |
| switch(typeof value) { | |
| case "string": | |
| encode(value, ret); | |
| break; | |
| case "number": | |
| ret.push(isFinite(value) && !isNaN(value) ? value : "null"); | |
| break; | |
| case "boolean": | |
| ret.push(value); | |
| break; | |
| case "function": | |
| break; | |
| default: | |
| throw Error("Unknown type: " + typeof value);; | |
| } | |
| } | |
| }; | |
| var flags = { | |
| '"' : '\\"', | |
| "\\" : "\\\\", | |
| "/" : "\\/", | |
| "\b" : "\\b", | |
| "\f" : "\\f", | |
| "\n" : "\\n", | |
| "\r" : "\\r", | |
| "\t" : "\\t", | |
| "\x0B" : "\\u000b" | |
| }; | |
| /** @type {RegExp} */ | |
| var nbspRegExp = /\uffff/.test("\uffff") ? /[\\\"\x00-\x1f\x7f-\uffff]/g : /[\\\"\x00-\x1f\x7f-\xff]/g; | |
| /** | |
| * @param {string} text | |
| * @param {Array} string | |
| * @return {undefined} | |
| */ | |
| var encode = function(text, string) { | |
| string.push('"', text.replace(nbspRegExp, function(key) { | |
| var value = flags[key]; | |
| if (!value) { | |
| /** @type {string} */ | |
| value = "\\u" + (key.charCodeAt(0) | 65536).toString(16).substr(1); | |
| /** @type {string} */ | |
| flags[key] = value; | |
| } | |
| return value; | |
| }), '"'); | |
| }; | |
| /** | |
| * @param {string} path | |
| * @param {Object} imageElement | |
| * @return {undefined} | |
| */ | |
| var loadImage = function(path, imageElement) { | |
| var source = imageElement || new Image; | |
| source.onload = source.onerror = executeScript(source); | |
| /** @type {string} */ | |
| source.src = path; | |
| }; | |
| /** | |
| * @param {Array} command | |
| * @return {undefined} | |
| */ | |
| var execCommand = function(command) { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < command.length;i++) { | |
| loadImage(command[i]); | |
| } | |
| }; | |
| /** | |
| * @param {Node} source | |
| * @return {?} | |
| */ | |
| var executeScript = function(source) { | |
| return function() { | |
| /** @type {null} */ | |
| source.onload = source.onerror = null; | |
| }; | |
| }; | |
| /** | |
| * @param {?} n | |
| * @param {?} num | |
| * @return {undefined} | |
| */ | |
| var plural = function(n, num) { | |
| /** @type {number} */ | |
| this.qc = Math.ceil(n); | |
| /** @type {number} */ | |
| this.oc = Math.floor(num); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| plural.prototype.da = function() { | |
| return this.qc + "px - " + this.oc + "px"; | |
| }; | |
| /** | |
| * @param {?} n | |
| * @return {?} | |
| */ | |
| plural.prototype.S = function(n) { | |
| /** @type {number} */ | |
| n = parseInt(n, 10); | |
| return isNaN(n) ? null : Math.max(this.qc, Math.min(this.oc, n)); | |
| }; | |
| /** | |
| * @param {string} c | |
| * @return {?} | |
| */ | |
| plural.prototype.ca = function(c) { | |
| return this.S(c); | |
| }; | |
| /** @type {string} */ | |
| var url_or_hash = (window._googCsaAlwaysHttps ? "https:" : "") + "//www.google.com/uds"; | |
| /** @type {string} */ | |
| var parameter = (window._googCsaAlwaysHttps ? "https:" : "") + "//ads.google.com/uds"; | |
| /** @type {string} */ | |
| var reqUrl = (window._googCsaAlwaysHttps ? "https:" : "") + "//afs.googlesyndication.com/uds"; | |
| /** | |
| * @return {?} | |
| */ | |
| var onload = function() { | |
| if ("undefined" != typeof gwsHost_) { | |
| return gwsHost_; | |
| } | |
| if ("undefined" != typeof name) { | |
| return(window._googCsaAlwaysHttps ? "https://" : "//") + name; | |
| } | |
| /** @type {string} */ | |
| var url = ""; | |
| if ("undefined" != typeof opts) { | |
| /** @type {string} */ | |
| url = opts; | |
| } else { | |
| if (window.google) { | |
| if (window.google.loader) { | |
| if (window.google.loader.ServiceBase) { | |
| url = window.google.loader.ServiceBase; | |
| } | |
| } | |
| } | |
| } | |
| if (1 == window.googleSynd) { | |
| if (url == reqUrl) { | |
| /** @type {string} */ | |
| url = parameter; | |
| } | |
| } | |
| /** @type {string} */ | |
| url = url ? url : url_or_hash; | |
| return url.match(/(.+)\/uds$/)[1]; | |
| }; | |
| /** | |
| * @param {?} standalone | |
| * @param {?} version | |
| * @param {?} encoding | |
| * @param {?} vn | |
| * @param {?} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| var XMLDeclaration = function(standalone, version, encoding, vn, dataAndEvents) { | |
| this.fj = standalone; | |
| this.lj = version; | |
| this.Ui = encoding; | |
| this.version = vn; | |
| this.Ie = dataAndEvents; | |
| }; | |
| onload(); | |
| var oSpace = {}; | |
| /** | |
| * @param {?} opt_attributes | |
| * @param {string} str | |
| * @return {?} | |
| */ | |
| XMLDeclaration.prototype.log = function(opt_attributes, str) { | |
| var n; | |
| if (true === window.IS_GOOGLE_AFS_IFRAME_ && window.parent == window) { | |
| /** @type {boolean} */ | |
| n = false; | |
| } else { | |
| /** @type {string} */ | |
| n = (window.google && (window.google.loader && window.google.loader.GoogleApisBase) ? window.google.loader.GoogleApisBase : firstByIndex ? firstByIndex : (window._googCsaAlwaysHttps ? "https:" : "") + "//ajax.googleapis.com/ajax") + "/services/js/error"; | |
| var data = {}; | |
| /** @type {string} */ | |
| data.mn = this.fj + "." + this.lj; | |
| data.vh = this.Ui; | |
| data.v = this.version; | |
| data.em = opt_attributes.message; | |
| /** @type {string} */ | |
| data.cem = str; | |
| /** @type {Array} */ | |
| var tagNameArr = []; | |
| var name; | |
| for (name in data) { | |
| if (data.hasOwnProperty(name)) { | |
| if (data[name]) { | |
| tagNameArr.push([name, encodeURIComponent(data[name])].join("=")); | |
| } | |
| } | |
| } | |
| /** @type {Element} */ | |
| data = document.createElement("img"); | |
| /** @type {string} */ | |
| n = n + "?" + tagNameArr.join("&"); | |
| if (oSpace[n]) { | |
| /** @type {boolean} */ | |
| n = false; | |
| } else { | |
| /** @type {string} */ | |
| data.src = [n, "&nc", (new Date).getTime()].join(""); | |
| /** @type {boolean} */ | |
| n = oSpace[n] = true; | |
| } | |
| } | |
| return n; | |
| }; | |
| /** | |
| * @param {Function} callback | |
| * @param {string} obj | |
| * @return {?} | |
| */ | |
| var _handle = function(callback, obj) { | |
| var options = util; | |
| return function() { | |
| /** @type {Array.<?>} */ | |
| var err = Array.prototype.slice.call(arguments, 0) || []; | |
| try { | |
| return callback.apply(this, err); | |
| } catch (backtrace) { | |
| err = backtrace; | |
| if ("string" == (typeof err).toLowerCase()) { | |
| err = { | |
| message : err | |
| }; | |
| } | |
| var data = err.message; | |
| if (obj) { | |
| if (-1 == data.indexOf(options.Ie)) { | |
| options.log(err, obj); | |
| } | |
| } | |
| throw-1 != data.indexOf(options.Ie) ? data : options.Ie + data; | |
| } | |
| }; | |
| }; | |
| /** | |
| * @param {string} fn | |
| * @return {?} | |
| */ | |
| var removeListener = function(fn) { | |
| return "google.ads.search.Ads: " + fn; | |
| }; | |
| /** @type {string} */ | |
| var expires = "unknown"; | |
| if (window.google && window.google.ads) { | |
| var err = window.google.ads; | |
| if (err && err.LoadArgs) { | |
| var results = err.LoadArgs.match(/file=([^&]*)/); | |
| expires = results && results[1] ? results[1] : ""; | |
| } else { | |
| /** @type {string} */ | |
| expires = ""; | |
| } | |
| } else { | |
| if ("undefined" != typeof offset) { | |
| /** @type {string} */ | |
| expires = offset; | |
| } | |
| } | |
| /** @type {string} */ | |
| var version = "unknown"; | |
| if (window.google && window.google.ads) { | |
| var er = window.google.ads; | |
| if (er && er.LoadArgs) { | |
| var arr = er.LoadArgs.match(/packages=([^&]*)/); | |
| version = arr && arr[1] ? arr[1] : ""; | |
| } else { | |
| /** @type {string} */ | |
| version = ""; | |
| } | |
| } else { | |
| if ("undefined" != typeof SNAP_VERSION) { | |
| /** @type {string} */ | |
| version = SNAP_VERSION; | |
| } | |
| } | |
| /** @type {string} */ | |
| var reason_start = "unknown"; | |
| if (window.google && window.google.ads) { | |
| reason_start = window.google.ads.JSHash; | |
| } else { | |
| if ("undefined" != typeof xformed) { | |
| /** @type {string} */ | |
| reason_start = xformed; | |
| } | |
| } | |
| /** @type {string} */ | |
| var play_context = "unknown"; | |
| if (window.google && window.google.ads) { | |
| play_context = window.google.ads.Version; | |
| } else { | |
| if ("undefined" != typeof io) { | |
| /** @type {string} */ | |
| play_context = io; | |
| } | |
| } | |
| var util = new XMLDeclaration(expires, version, reason_start, play_context, "google.ads.search.Ads: "); | |
| /** | |
| * @param {Function} obj | |
| * @param {string} value | |
| * @return {?} | |
| */ | |
| var cb = function(obj, value) { | |
| return value ? _handle(obj, value) : _handle(obj); | |
| }; | |
| /** | |
| * @param {string} match | |
| * @return {undefined} | |
| */ | |
| var token = function(match) { | |
| /** @type {Array} */ | |
| this.Fd = []; | |
| /** @type {Array} */ | |
| this.ce = []; | |
| match = match.split("#"); | |
| this.gg = match[0]; | |
| /** @type {string} */ | |
| this.ad = 1 < match.length ? decodeURI(match[1]) : ""; | |
| /** @type {number} */ | |
| this.maxLength = 1999; | |
| }; | |
| /** | |
| * @param {?} object | |
| * @param {string} data | |
| * @param {number} msg | |
| * @param {boolean} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| var callback = function(object, data, msg, dataAndEvents) { | |
| if (msg || (0 === msg || false === msg)) { | |
| (dataAndEvents ? object.Fd : object.ce).push([encodeURIComponent(data), encodeURIComponent("" + msg)]); | |
| } | |
| }; | |
| /** | |
| * @param {?} options | |
| * @return {?} | |
| */ | |
| var require = function(options) { | |
| var res = options.gg; | |
| /** @type {boolean} */ | |
| var c = -1 != options.gg.indexOf("?"); | |
| var i; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < options.ce.length;i++) { | |
| var number = (c ? "&" : "?") + options.ce[i].join("="); | |
| if (number.length + res.length <= options.maxLength) { | |
| res += number; | |
| /** @type {boolean} */ | |
| c = true; | |
| } | |
| } | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < options.Fd.length;i++) { | |
| if (options.Fd[i][0].length + 3 + res.length <= options.maxLength) { | |
| res += (c ? "&" : "?") + options.Fd[i].join("="); | |
| /** @type {boolean} */ | |
| c = true; | |
| } | |
| } | |
| res = res.substring(0, options.maxLength); | |
| res = res.replace(/%\w?$/, ""); | |
| if (options.ad) { | |
| res += "#" + encodeURI(options.ad); | |
| } | |
| return res; | |
| }; | |
| /** @type {string} */ | |
| var protocol = (window._googCsaAlwaysHttps ? "https:" : "") + "//www.google.com"; | |
| /** @type {RegExp} */ | |
| var ignore = /^https?:\/\//; | |
| /** | |
| * @param {string} path | |
| * @return {?} | |
| */ | |
| var resolveModule = function(path) { | |
| return ignore.test(path) ? path : "/" == path.charAt(0) ? protocol + path : protocol + "/" + path; | |
| }; | |
| /** @type {RegExp} */ | |
| var re = /\/aclk\?.*/; | |
| var sorted = { | |
| ads : 0, | |
| plas : 1, | |
| singleProduct : 2, | |
| relatedsearch : 3 | |
| }; | |
| /** @type {string} */ | |
| var ret = (window._googCsaAlwaysHttps ? "https:" : "") + "//www.google.com/csi?s=csa&v=3&action="; | |
| /** @type {boolean} */ | |
| var hasFocus = 42 == Math.floor(100 * Math.random()); | |
| var items = {}; | |
| /** | |
| * @param {string} token | |
| * @param {number} execAsap | |
| * @return {undefined} | |
| */ | |
| var handler = function(token, execAsap) { | |
| this.Zg = execAsap || (new Date).getTime(); | |
| /** @type {string} */ | |
| this.action = token; | |
| }; | |
| /** | |
| * @param {string} dataAndEvents | |
| * @return {?} | |
| */ | |
| handler.prototype.clone = function(dataAndEvents) { | |
| return new handler(dataAndEvents, this.Zg); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @param {string} x | |
| * @return {undefined} | |
| */ | |
| var process = function(data, x) { | |
| if (delta) { | |
| if (hasFocus) { | |
| items[data.action] = items[data.action] || []; | |
| items[data.action].push([x, (new Date).getTime() - data.Zg].join(".")); | |
| } | |
| } | |
| }; | |
| /** | |
| * @param {string} name | |
| * @return {undefined} | |
| */ | |
| var removeNode = function(name) { | |
| var props = delta; | |
| props.action = props.action ? props.action + ("," + name) : name; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var restore = function() { | |
| if (delta && (hasFocus && "//afs.googlesyndication.com" != onload())) { | |
| var tests = items; | |
| items = {}; | |
| var testName; | |
| for (testName in tests) { | |
| if (tests.hasOwnProperty(testName)) { | |
| var test = tests[testName]; | |
| if (test) { | |
| if (0 < test.length) { | |
| loadImage([ret, testName, "&rt=", test.join(",")].join("")); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| /** @type {null} */ | |
| var delta = null; | |
| if (window._googCsa && window._googCsa.t) { | |
| delta = new handler("ppla", window._googCsa.t); | |
| } else { | |
| if (window.googleNDT_ && !window.googleLT_) { | |
| delta = new handler("pplnd", window.googleNDT_); | |
| } else { | |
| if (window.googleLT_) { | |
| delta = new handler("pplal", window.googleLT_); | |
| } | |
| } | |
| } | |
| var arr2 = { | |
| "google-hotels" : true | |
| }; | |
| var nb = window.caps_ && window.caps_.largeFonts; | |
| /** @type {number} */ | |
| var threshold = !window.IS_GOOGLE_AFS_IFRAME_ || nb ? 8 : 6; | |
| /** @type {number} */ | |
| var pageCount = !window.IS_GOOGLE_AFS_IFRAME_ || nb ? 24 : 16; | |
| var ELEMENT_NODE = new plural(8, pageCount); | |
| /** | |
| * @param {Object} value | |
| * @param {string} sel | |
| * @return {?} | |
| */ | |
| var matches = function(value, sel) { | |
| var match = value.a.S(sel); | |
| if (null == match && !value.K) { | |
| throw removeListener(value.key + " has an invalid value. Valid input values: [" + value.a.da() + "]."); | |
| } | |
| return match; | |
| }; | |
| /** | |
| * @param {Object} obj | |
| * @param {Array} a | |
| * @return {undefined} | |
| */ | |
| var win = function(obj, a) { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < a.length;i++) { | |
| obj[a[i].key] = a[i]; | |
| } | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| var detect = function() { | |
| var suiteView = randomName(); | |
| var dateSQL = any(); | |
| return isUndefined(suiteView, function(dataAndEvents, word) { | |
| return dateSQL.hasOwnProperty(word); | |
| }); | |
| }; | |
| /** | |
| * @param {?} value | |
| * @return {?} | |
| */ | |
| var isFunction = function(value) { | |
| /** @type {boolean} */ | |
| var b = 8 == rgbToHex(newRed); | |
| var hex = rgbToHex(r); | |
| var isArray = rgbToHex(elems); | |
| var c = rgbToHex(angle); | |
| return!!(obj.S(value.waitForAds) && (!b && ((null == hex || 11 < hex) && ((null == isArray || 3 < isArray) && (null == c || 4 < c))))); | |
| }; | |
| /** | |
| * @param {string} x | |
| * @return {?} | |
| */ | |
| var round = function(x) { | |
| return(x = x.match(/slave-(\d+)-/)) ? parseInt(x[1], 10) + 1 : 1; | |
| }; | |
| /** | |
| * @param {string} body | |
| * @param {string} arg | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var send = function(body, arg, data) { | |
| /** @type {Array} */ | |
| var _results = []; | |
| /** @type {number} */ | |
| var root = 0; | |
| var item; | |
| for (;item = data[root];root++) { | |
| item = new token(item); | |
| callback(item, body, arg); | |
| _results.push(require(item)); | |
| } | |
| return _results; | |
| }; | |
| /** | |
| * @param {Array} text | |
| * @return {?} | |
| */ | |
| var generate = function(text) { | |
| /** @type {Array} */ | |
| var _results = []; | |
| /** @type {number} */ | |
| var currentIndex = 0; | |
| for (;currentIndex < text.length;currentIndex++) { | |
| var view = new token(text[currentIndex]); | |
| callback(view, "nc", [Math.round(9E6 * Math.random()), (new Date).getTime()].join("")); | |
| _results.push(require(view)); | |
| } | |
| return _results; | |
| }; | |
| /** | |
| * @param {Object} c | |
| * @return {?} | |
| */ | |
| var tmpl = function(c) { | |
| var i = c.pubId; | |
| return/^pub-.*/.test(i) || ("gcsc" in c || i in arr2); | |
| }; | |
| /** @type {null} */ | |
| var readyList = null; | |
| /** @type {null} */ | |
| var all = null; | |
| /** | |
| * @param {string} from_instance | |
| * @return {undefined} | |
| */ | |
| var copy = function(from_instance) { | |
| /** @type {string} */ | |
| this.sessionId = from_instance; | |
| this.state = {}; | |
| /** @type {null} */ | |
| this.Ka = null; | |
| /** @type {boolean} */ | |
| this.P = false; | |
| }; | |
| copy = cb(copy, "fsI"); | |
| p = copy.prototype; | |
| /** | |
| * @param {string} k | |
| * @return {?} | |
| */ | |
| p.se = function(k) { | |
| return this.state.hasOwnProperty(k) ? this.state[k].value : null; | |
| }; | |
| p.se = cb(copy.prototype.se, "fsiGS"); | |
| /** | |
| * @param {string} id | |
| * @param {string} isXML | |
| * @return {undefined} | |
| */ | |
| p.Dd = function(id, isXML) { | |
| if (!this.state.hasOwnProperty(id)) { | |
| this.state[id] = new e; | |
| } | |
| this.ub(id, isXML); | |
| }; | |
| p.Dd = cb(copy.prototype.Dd, "fsiSS"); | |
| /** | |
| * @param {string} k | |
| * @return {?} | |
| */ | |
| p.le = function(k) { | |
| return this.state[k].value; | |
| }; | |
| p.le = cb(copy.prototype.le, "fsiGI"); | |
| /** | |
| * @param {string} id | |
| * @param {string} tag | |
| * @return {undefined} | |
| */ | |
| p.Lb = function(id, tag) { | |
| if (!this.state.hasOwnProperty(id)) { | |
| this.state[id] = new node; | |
| } | |
| this.ub(id, tag); | |
| }; | |
| p.Lb = cb(copy.prototype.Lb, "fsiSI"); | |
| /** | |
| * @param {string} key | |
| * @param {boolean} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| p.Kb = function(key, deepDataAndEvents) { | |
| if (!this.state.hasOwnProperty(key)) { | |
| this.state[key] = new C; | |
| } | |
| this.ub(key, deepDataAndEvents); | |
| }; | |
| p.Kb = cb(copy.prototype.Kb, "fsiSB"); | |
| /** | |
| * @param {string} id | |
| * @param {Object} n | |
| * @param {Function} obj | |
| * @return {undefined} | |
| */ | |
| p.aa = function(id, n, obj) { | |
| if (null == readyList) { | |
| acc(); | |
| } | |
| if (readyList != scope || n != e) { | |
| if (!this.state.hasOwnProperty(id)) { | |
| this.state[id] = new n; | |
| } | |
| n = this.state[id]; | |
| n.bb = obj || null; | |
| if (n.bb) { | |
| if (null != n.value) { | |
| n.bb(this, this.sessionId, id, n.value); | |
| } | |
| } | |
| } | |
| }; | |
| p.aa = cb(copy.prototype.aa, "fsiSTC"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.Fb = function() { | |
| return!!(this.Ka && (this.Ka.parentNode && this.Ka.contentWindow)); | |
| }; | |
| p.Fb = cb(copy.prototype.Fb, "fsiHVI"); | |
| /** | |
| * @param {string} id | |
| * @param {string} value | |
| * @return {undefined} | |
| */ | |
| p.ub = function(id, value) { | |
| var item = this.state[id]; | |
| value = item.xa(id, value); | |
| if (null != value) { | |
| if (item.value != value) { | |
| item = this.state[id]; | |
| /** @type {string} */ | |
| item.value = value; | |
| /** @type {boolean} */ | |
| this.P = item.P = true; | |
| } | |
| } | |
| }; | |
| p.ub = cb(copy.prototype.ub, "fsiS"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| p.ud = function() { | |
| if (this.P) { | |
| var k; | |
| for (k in this.state) { | |
| if (this.state.hasOwnProperty(k)) { | |
| var r = this.state[k]; | |
| if (r.P) { | |
| /** @type {boolean} */ | |
| r.P = false; | |
| if (r.bb) { | |
| r.bb(this, this.sessionId, k, r.value); | |
| } | |
| } | |
| } | |
| } | |
| /** @type {boolean} */ | |
| this.P = false; | |
| } | |
| }; | |
| p.ud = cb(copy.prototype.ud, "fsiNC"); | |
| /** | |
| * @param {boolean} recurring | |
| * @return {?} | |
| */ | |
| p.fd = function(recurring) { | |
| /** @type {Array} */ | |
| var tagNameArr = ["FSXDC"]; | |
| var key; | |
| for (key in this.state) { | |
| if (this.state.hasOwnProperty(key)) { | |
| var current = this.state[key]; | |
| if (recurring || current.P) { | |
| var querystring = current.Ia(); | |
| tagNameArr.push([encodeURIComponent(key), current.Id, querystring].join(":")); | |
| /** @type {boolean} */ | |
| current.P = false; | |
| } | |
| } | |
| } | |
| /** @type {boolean} */ | |
| this.P = false; | |
| return tagNameArr.join(","); | |
| }; | |
| p.fd = cb(copy.prototype.fd, "fsiGCM"); | |
| /** | |
| * @param {(Array|string)} path | |
| * @return {undefined} | |
| */ | |
| p.cd = function(path) { | |
| if (path && (path.split && (path = path.split(","), "FSXDC" == path[0]))) { | |
| /** @type {number} */ | |
| var i = 1; | |
| for (;i < path.length;i++) { | |
| var m = path[i].split(":"); | |
| /** @type {string} */ | |
| var key = decodeURIComponent(m[0]); | |
| if (!this.state.hasOwnProperty(key)) { | |
| this.state[key] = new (tmp[parseInt(m[1], 10)]); | |
| } | |
| m = this.state[key].Fa(m[2]); | |
| this.ub(key, m); | |
| } | |
| this.ud(); | |
| } | |
| }; | |
| p.cd = cb(copy.prototype.cd, "fsiECM"); | |
| /** | |
| * @param {string} x | |
| * @param {string} str | |
| * @return {undefined} | |
| */ | |
| var out = function(x, str) { | |
| util.log({ | |
| message : x | |
| }, str); | |
| }; | |
| out = cb(out, "fsLE"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var C = function() { | |
| /** @type {null} */ | |
| this.bb = this.value = null; | |
| /** @type {boolean} */ | |
| this.P = false; | |
| }; | |
| C = cb(C, "fsB"); | |
| p = C.prototype; | |
| /** @type {number} */ | |
| p.Id = 0; | |
| /** @type {number} */ | |
| p.Fc = 1; | |
| /** | |
| * @param {string} timer | |
| * @param {string} putativeSpy | |
| * @return {?} | |
| */ | |
| p.xa = function(timer, putativeSpy) { | |
| return!!putativeSpy; | |
| }; | |
| p.xa = cb(C.prototype.xa, "fsbGVV"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.yb = function() { | |
| return this.value ? 1 : 0; | |
| }; | |
| p.yb = cb(C.prototype.yb, "fsbTB"); | |
| /** | |
| * @param {number} dataAndEvents | |
| * @return {?} | |
| */ | |
| p.Ib = function(dataAndEvents) { | |
| return!!dataAndEvents; | |
| }; | |
| p.Ib = cb(C.prototype.Ib, "fsbPFB"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ia = function() { | |
| return this.value ? "t" : "f"; | |
| }; | |
| p.Ia = cb(C.prototype.Ia, "fsbTES"); | |
| /** | |
| * @param {string} reset | |
| * @return {?} | |
| */ | |
| p.Fa = function(reset) { | |
| return "t" == reset; | |
| }; | |
| p.Fa = cb(C.prototype.Fa, "fsbPES"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var node = function() { | |
| /** @type {null} */ | |
| this.bb = this.value = null; | |
| /** @type {boolean} */ | |
| this.P = false; | |
| }; | |
| node = cb(node, "fsSI"); | |
| p = node.prototype; | |
| /** @type {number} */ | |
| p.Id = 1; | |
| /** @type {number} */ | |
| p.Fc = 14; | |
| /** @type {number} */ | |
| p.xf = (1 << node.prototype.Fc) - 1; | |
| /** | |
| * @param {string} timer | |
| * @param {string} b | |
| * @return {?} | |
| */ | |
| p.xa = function(timer, b) { | |
| /** @type {number} */ | |
| var num2 = parseInt(b, 10); | |
| if (isNaN(num2)) { | |
| return out("Tried to set int value to a non-number ( " + timer + " = " + b + ")", "sIGVV"), null; | |
| } | |
| if (num2 > this.xf) { | |
| out("Tried to set int value to a number too large ( " + timer + " = " + b + ")", "sIGVV"); | |
| num2 = this.xf; | |
| } | |
| if (0 > num2) { | |
| out("Tried to set int value to a number too small ( " + timer + " = " + b + ")", "sIGVV"); | |
| /** @type {number} */ | |
| num2 = 0; | |
| } | |
| return num2; | |
| }; | |
| p.xa = cb(node.prototype.xa, "fssiGVV"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.yb = function() { | |
| return this.value || 0; | |
| }; | |
| p.yb = cb(node.prototype.yb, "fssiTB"); | |
| /** | |
| * @param {number} dataAndEvents | |
| * @return {?} | |
| */ | |
| p.Ib = function(dataAndEvents) { | |
| return dataAndEvents; | |
| }; | |
| p.Ib = cb(node.prototype.Ib, "fssiPFB"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ia = function() { | |
| return this.value + ""; | |
| }; | |
| p.Ia = cb(node.prototype.Ia, "fssiTES"); | |
| /** | |
| * @param {?} m1 | |
| * @return {?} | |
| */ | |
| p.Fa = function(m1) { | |
| return parseInt(m1, 10); | |
| }; | |
| p.Fa = cb(node.prototype.Fa, "fssiPES"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var e = function() { | |
| /** @type {null} */ | |
| this.bb = this.value = null; | |
| /** @type {boolean} */ | |
| this.P = false; | |
| }; | |
| e = cb(e, "fsES"); | |
| p = e.prototype; | |
| /** @type {number} */ | |
| p.Id = 2; | |
| /** | |
| * @param {string} timer | |
| * @param {boolean} right | |
| * @return {?} | |
| */ | |
| p.xa = function(timer, right) { | |
| return right = right ? right.toString() : ""; | |
| }; | |
| p.xa = cb(e.prototype.xa, "fsesGVV"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ia = function() { | |
| return this.value ? encodeURIComponent(this.value) : ""; | |
| }; | |
| p.Ia = cb(e.prototype.Ia, "fsesTES"); | |
| /** | |
| * @param {?} part | |
| * @return {?} | |
| */ | |
| p.Fa = function(part) { | |
| return decodeURIComponent(part); | |
| }; | |
| p.Fa = cb(e.prototype.Fa, "fsesPES"); | |
| /** @type {Array} */ | |
| var tmp = [C, node, e]; | |
| /** | |
| * @param {Object} obj | |
| * @return {?} | |
| */ | |
| var _ = function(obj) { | |
| if (null == readyList) { | |
| acc(); | |
| } | |
| return readyList.Ha(obj); | |
| }; | |
| _ = cb(_, "fsSC"); | |
| /** | |
| * @param {Object} obj | |
| * @param {Function} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| var formatted = function(obj, deepDataAndEvents) { | |
| if (null == readyList) { | |
| acc(); | |
| } | |
| if (null == all) { | |
| all = {}; | |
| errors(); | |
| } | |
| /** @type {Function} */ | |
| obj.Ka = deepDataAndEvents; | |
| /** @type {Object} */ | |
| all[obj.sessionId] = obj; | |
| }; | |
| formatted = cb(formatted, "fsLFC"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var errors = function() { | |
| window.setInterval(foo, 500); | |
| readyList.za(); | |
| }; | |
| errors = cb(errors, "fsIL"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var foo = function() { | |
| var id; | |
| for (id in all) { | |
| if (all.hasOwnProperty(id)) { | |
| var target = all[id]; | |
| if (!target.Fb()) { | |
| /** @type {null} */ | |
| target.Ka = null; | |
| delete all[id]; | |
| } | |
| } | |
| } | |
| }; | |
| foo = cb(foo, "fsCDI"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var acc = function() { | |
| that.Ee(); | |
| /** @type {({Cd: function (string): undefined, Ha: ?, Ud: function (HTMLElement): undefined, ba: function (): undefined, cf: function (Object, string, Text): undefined, qe: function (Object, string): ?, uf: string, za: function (): undefined}|{Ee: function (): undefined, Ha: ?, Qe: (Document|Window), ba: function (Event): undefined, za: function (): undefined}|{Ha: ?, Zd: function (string, string): undefined, ba: function (): undefined, be: function (Node, number): undefined, me: function (?): ?, za: function (): undefined})} */ | |
| readyList = that.Qe ? that : createTextNode() ? scope : _this; | |
| }; | |
| acc = cb(acc, "fsLT"); | |
| var scope = { | |
| uf : "exists", | |
| /** | |
| * @param {Object} parent | |
| * @return {?} | |
| */ | |
| Ha : function(parent) { | |
| if (!parent.P) { | |
| return true; | |
| } | |
| var k; | |
| for (k in parent.state) { | |
| if (parent.state.hasOwnProperty(k)) { | |
| var p = parent.state[k]; | |
| if (p.P && p.yb) { | |
| var pl = p.Fc; | |
| var b = p.yb(); | |
| /** @type {string} */ | |
| var name = k + ":"; | |
| scope.Cd(name + scope.uf); | |
| /** @type {number} */ | |
| var extension = 0; | |
| /** @type {number} */ | |
| var c = 1; | |
| for (;extension < pl;extension++, c <<= 1) { | |
| /** @type {string} */ | |
| var newName = name + extension; | |
| if (b & c) { | |
| scope.Cd(newName); | |
| } else { | |
| scope.Ud(newName); | |
| } | |
| } | |
| /** @type {boolean} */ | |
| p.P = false; | |
| } | |
| } | |
| } | |
| /** @type {boolean} */ | |
| parent.P = false; | |
| return true; | |
| } | |
| }; | |
| scope.Ha = cb(scope.Ha, "fsnbtSC"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| scope.za = function() { | |
| window.setInterval(scope.ba, 50); | |
| }; | |
| scope.za = cb(scope.za, "fsnbtIL"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| scope.ba = function() { | |
| var id; | |
| for (id in all) { | |
| if (all.hasOwnProperty(id)) { | |
| var e = all[id]; | |
| if (e.Fb()) { | |
| var udataCur = e.Ka.contentWindow; | |
| var i; | |
| for (i in e.state) { | |
| if (e.state.hasOwnProperty(i)) { | |
| scope.cf(e, i, udataCur); | |
| } | |
| } | |
| e.ud(); | |
| } | |
| } | |
| } | |
| }; | |
| scope.ba = cb(scope.ba, "fsnbtEC"); | |
| /** | |
| * @param {Object} e | |
| * @param {string} k | |
| * @param {Text} value | |
| * @return {undefined} | |
| */ | |
| scope.cf = function(e, k, value) { | |
| /** @type {function (Object, string): ?} */ | |
| var lookupIterator = scope.qe; | |
| /** @type {string} */ | |
| var startPage = k + ":"; | |
| if (lookupIterator(value, startPage + scope.uf)) { | |
| var input = e.state[k]; | |
| var il = input.Fc; | |
| /** @type {number} */ | |
| var node = 0; | |
| /** @type {number} */ | |
| var i = 0; | |
| /** @type {number} */ | |
| var n = 1; | |
| for (;i < il;i++, n <<= 1) { | |
| var iterator = lookupIterator(value, startPage + i); | |
| if (null === iterator) { | |
| return; | |
| } | |
| if (iterator) { | |
| node += n; | |
| } | |
| } | |
| value = input.Ib(node); | |
| e.ub(k, value); | |
| } | |
| }; | |
| scope.cf = cb(scope.cf, "fsnbtSV"); | |
| /** | |
| * @param {Object} obj | |
| * @param {string} key | |
| * @return {?} | |
| */ | |
| scope.qe = function(obj, key) { | |
| /** @type {null} */ | |
| var rv = null; | |
| try { | |
| /** @type {boolean} */ | |
| rv = key in obj; | |
| } catch (d) { | |
| out(key, "fsnbtGSB2"); | |
| } | |
| return rv; | |
| }; | |
| scope.qe = cb(scope.qe, "fsnbtGSB"); | |
| /** | |
| * @param {string} name | |
| * @return {undefined} | |
| */ | |
| scope.Cd = function(name) { | |
| if (!document.getElementById(name)) { | |
| /** @type {Element} */ | |
| var img = document.createElement("img"); | |
| /** @type {string} */ | |
| img.name = name; | |
| /** @type {string} */ | |
| img.id = name; | |
| /** @type {number} */ | |
| img.height = 0; | |
| /** @type {number} */ | |
| img.width = 0; | |
| document.body.appendChild(img); | |
| } | |
| }; | |
| scope.Cd = cb(scope.Cd, "fsnbtSSB"); | |
| /** | |
| * @param {HTMLElement} table | |
| * @return {undefined} | |
| */ | |
| scope.Ud = function(table) { | |
| if (table = document.getElementById(table)) { | |
| table.parentNode.removeChild(table); | |
| } | |
| }; | |
| scope.Ud = cb(scope.Ud, "fsnbtCSB"); | |
| var that = { | |
| /** | |
| * @param {Object} stream | |
| * @return {?} | |
| */ | |
| Ha : function(stream) { | |
| if (stream.P) { | |
| if (!that.Qe) { | |
| return false; | |
| } | |
| that.Qe.postMessage(stream.fd(false), "*"); | |
| } | |
| return true; | |
| } | |
| }; | |
| that.Ha = cb(that.Ha, "fspmtSC"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| that.za = function() { | |
| if (window.attachEvent) { | |
| window.attachEvent("onmessage", that.ba); | |
| } else { | |
| if (window.addEventListener) { | |
| window.addEventListener("message", that.ba, false); | |
| } | |
| } | |
| }; | |
| that.za = cb(that.za, "fspmtIL"); | |
| /** | |
| * @param {Event} e | |
| * @return {undefined} | |
| */ | |
| that.ba = function(e) { | |
| if (e = e ? e : window.event) { | |
| var id; | |
| for (id in all) { | |
| if (all.hasOwnProperty(id)) { | |
| var t = all[id]; | |
| if (t.Fb() && e.source == t.Ka.contentWindow) { | |
| t.cd(e.data); | |
| break; | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| that.ba = cb(that.ba, "fspmtEC"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| that.Ee = function() { | |
| /** @type {Window} */ | |
| var win = window.parent; | |
| try { | |
| /** @type {(Document|Window|null)} */ | |
| var root = win.postMessage ? win : win.document.postMessage ? win.document : null; | |
| if (root) { | |
| if (root.postMessage) { | |
| /** @type {(Document|Window)} */ | |
| that.Qe = root; | |
| } | |
| } | |
| } catch (c) { | |
| } | |
| }; | |
| that.Ee = cb(that.Ee, "fspmtLPM"); | |
| var _this = { | |
| /** | |
| * @param {Object} stream | |
| * @return {?} | |
| */ | |
| Ha : function(stream) { | |
| if (stream.P) { | |
| if (!window.relay) { | |
| return false; | |
| } | |
| _this.Zd(window.relay, stream.fd(true)); | |
| } | |
| return true; | |
| } | |
| }; | |
| _this.Ha = cb(_this.Ha, "fsnitSC"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| _this.za = function() { | |
| window.setInterval(_this.ba, 5); | |
| }; | |
| _this.za = cb(_this.za, "fsnitIL"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| _this.ba = function() { | |
| var id; | |
| for (id in all) { | |
| if (all.hasOwnProperty(id)) { | |
| var e = all[id]; | |
| var start = _this.me(e); | |
| if (start) { | |
| e.cd(start); | |
| } | |
| } | |
| } | |
| }; | |
| _this.ba = cb(_this.ba, "fsnitEC"); | |
| /** | |
| * @param {?} e | |
| * @return {?} | |
| */ | |
| _this.me = function(e) { | |
| try { | |
| if (e.Fb()) { | |
| var win = e.Ka.contentWindow; | |
| if (win.frames && (win.frames.length && (0 < win.frames.length && win.frames[win.frames.length - 1].name))) { | |
| return win.frames[win.frames.length - 1].name; | |
| } | |
| } | |
| } catch (c) { | |
| } | |
| return null; | |
| }; | |
| _this.me = cb(_this.me, "fsnitGM"); | |
| /** | |
| * @param {string} uri | |
| * @param {string} name | |
| * @return {undefined} | |
| */ | |
| _this.Zd = function(uri, name) { | |
| /** @type {Element} */ | |
| var iframe = document.createElement("iframe"); | |
| /** @type {string} */ | |
| iframe.style.position = "absolute"; | |
| /** @type {string} */ | |
| iframe.style.top = "0"; | |
| /** @type {string} */ | |
| iframe.style.left = "0"; | |
| /** @type {string} */ | |
| iframe.style.display = "none"; | |
| /** @type {string} */ | |
| iframe.width = "0"; | |
| /** @type {string} */ | |
| iframe.height = "0"; | |
| /** @type {string} */ | |
| iframe.src = uri + "crossdomain.xml"; | |
| /** @type {string} */ | |
| iframe.name = name; | |
| /** | |
| * @return {undefined} | |
| */ | |
| iframe.onload = function() { | |
| _this.be(this, 100); | |
| }; | |
| document.body.appendChild(iframe); | |
| }; | |
| _this.Zd = cb(_this.Zd, "fsnitCRI"); | |
| /** | |
| * @param {Node} t | |
| * @param {number} milliseconds | |
| * @return {undefined} | |
| */ | |
| _this.be = function(t, milliseconds) { | |
| window.setTimeout(function() { | |
| t.parentNode.removeChild(t); | |
| }, milliseconds); | |
| }; | |
| _this.be = cb(_this.be, "fsnitDMI"); | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Object} done | |
| * @return {?} | |
| */ | |
| var scale = function(done) { | |
| return function(id, dataAndEvents) { | |
| return "undefined" == typeof done[id] ? dataAndEvents || null : done[id]; | |
| }; | |
| }; | |
| /** | |
| * @param {Object} arg | |
| * @return {?} | |
| */ | |
| var _filter = function(arg) { | |
| return function(x, elt) { | |
| if (arg.hasOwnProperty(x)) { | |
| var codeSegments = arg[x].split(","); | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| if (codeSegments[i] == elt) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| return true; | |
| }; | |
| }; | |
| /** | |
| * @param {string} data | |
| * @param {Object} b | |
| * @return {?} | |
| */ | |
| var equals = function(data, b) { | |
| return!b.clickBg && !b.mclickBg || (!data.clickableBackgrounds || b.isHighendMobile && !b.mclickBg) ? false : true; | |
| }; | |
| /** | |
| * @param {Object} expr | |
| * @return {?} | |
| */ | |
| var eval = function(expr) { | |
| return 6 == rgbToHex(newRed) ? true : "_blank" == (expr.linkTarget ? expr.linkTarget : "_top"); | |
| }; | |
| /** | |
| * @param {Object} actual | |
| * @param {Function} message | |
| * @return {?} | |
| */ | |
| var equal = function(actual, message) { | |
| return 1 == (true === actual.heightConstrained && !!message.mayLimitHeight); | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** @type {number} */ | |
| var Rb = 1; | |
| /** | |
| * @return {?} | |
| */ | |
| var min = function() { | |
| return "e" + Rb++; | |
| }; | |
| /** | |
| * @param {?} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| var TemplateClass = function(dataAndEvents) { | |
| this.vb = dataAndEvents; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| TemplateClass.prototype.f = function() { | |
| return this.vb; | |
| }; | |
| var result = new TemplateClass(""); | |
| } | |
| var hasMembers; | |
| /** @type {function (string): ?} */ | |
| var pad = String.prototype.trim ? function(buf) { | |
| return buf.trim(); | |
| } : function(lastLine) { | |
| return lastLine.replace(/^[\s\xa0]+|[\s\xa0]+$/g, ""); | |
| }; | |
| /** | |
| * @param {string} requestUrl | |
| * @return {?} | |
| */ | |
| var complete = function(requestUrl) { | |
| if (!rhtml.test(requestUrl)) { | |
| return requestUrl; | |
| } | |
| if (-1 != requestUrl.indexOf("&")) { | |
| requestUrl = requestUrl.replace(rreturn, "&"); | |
| } | |
| if (-1 != requestUrl.indexOf("<")) { | |
| requestUrl = requestUrl.replace(rCurrLoc, "<"); | |
| } | |
| if (-1 != requestUrl.indexOf(">")) { | |
| requestUrl = requestUrl.replace(rclass, ">"); | |
| } | |
| if (-1 != requestUrl.indexOf('"')) { | |
| requestUrl = requestUrl.replace(badChars, """); | |
| } | |
| if (-1 != requestUrl.indexOf("'")) { | |
| requestUrl = requestUrl.replace(normalizr, "'"); | |
| } | |
| if (-1 != requestUrl.indexOf("\x00")) { | |
| requestUrl = requestUrl.replace(newlineRe, "�"); | |
| } | |
| return requestUrl; | |
| }; | |
| /** @type {RegExp} */ | |
| var rreturn = /&/g; | |
| /** @type {RegExp} */ | |
| var rCurrLoc = /</g; | |
| /** @type {RegExp} */ | |
| var rclass = />/g; | |
| /** @type {RegExp} */ | |
| var badChars = /"/g; | |
| /** @type {RegExp} */ | |
| var normalizr = /'/g; | |
| /** @type {RegExp} */ | |
| var newlineRe = /\x00/g; | |
| /** @type {RegExp} */ | |
| var rhtml = /[\x00&<>"']/; | |
| /** | |
| * @return {?} | |
| */ | |
| var randomColor = function() { | |
| return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ _randomVal()).toString(36); | |
| }; | |
| /** | |
| * @param {(boolean|number|string)} a | |
| * @param {(boolean|number|string)} b | |
| * @return {?} | |
| */ | |
| var cmp = function(a, b) { | |
| return a < b ? -1 : a > b ? 1 : 0; | |
| }; | |
| var aProt = Array.prototype; | |
| /** @type {function (?, number, ?): ?} */ | |
| var promote = aProt.indexOf ? function(object, mapper, graphics) { | |
| return aProt.indexOf.call(object, mapper, graphics); | |
| } : function(arr, obj, fromIndex) { | |
| fromIndex = null == fromIndex ? 0 : 0 > fromIndex ? Math.max(0, arr.length + fromIndex) : fromIndex; | |
| if (isObject(arr)) { | |
| return isObject(obj) && 1 == obj.length ? arr.indexOf(obj, fromIndex) : -1; | |
| } | |
| for (;fromIndex < arr.length;fromIndex++) { | |
| if (fromIndex in arr && arr[fromIndex] === obj) { | |
| return fromIndex; | |
| } | |
| } | |
| return-1; | |
| }; | |
| /** @type {function (Array, Function, ?): ?} */ | |
| var repeat = aProt.filter ? function(next_scope, mapper, graphics) { | |
| return aProt.filter.call(next_scope, mapper, graphics); | |
| } : function(arr, f, opt_this) { | |
| var e = arr.length; | |
| /** @type {Array} */ | |
| var res = []; | |
| /** @type {number} */ | |
| var resLength = 0; | |
| var arr2 = isObject(arr) ? arr.split("") : arr; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < e;i++) { | |
| if (i in arr2) { | |
| var val = arr2[i]; | |
| if (f.call(opt_this, val, i, arr)) { | |
| res[resLength++] = val; | |
| } | |
| } | |
| } | |
| return res; | |
| }; | |
| /** @type {function (?, Function, ?): ?} */ | |
| var connect = aProt.map ? function(next_scope, mapper, graphics) { | |
| return aProt.map.call(next_scope, mapper, graphics); | |
| } : function(arr, f, opt_obj) { | |
| var e = arr.length; | |
| /** @type {Array} */ | |
| var res = Array(e); | |
| var arr2 = isObject(arr) ? arr.split("") : arr; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < e;i++) { | |
| if (i in arr2) { | |
| res[i] = f.call(opt_obj, arr2[i], i, arr); | |
| } | |
| } | |
| return res; | |
| }; | |
| /** | |
| * @param {Object} obj | |
| * @param {Function} f | |
| * @return {?} | |
| */ | |
| var isUndefined = function(obj, f) { | |
| var copy = {}; | |
| var key; | |
| for (key in obj) { | |
| if (f.call(void 0, obj[key], key, obj)) { | |
| copy[key] = obj[key]; | |
| } | |
| } | |
| return copy; | |
| }; | |
| /** | |
| * @param {Array} ev | |
| * @return {?} | |
| */ | |
| var _fn = function(ev) { | |
| /** @type {number} */ | |
| var argLength = arguments.length; | |
| if (1 == argLength && "array" == isArray(arguments[0])) { | |
| return _fn.apply(null, arguments[0]); | |
| } | |
| var wkw = {}; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < argLength;i++) { | |
| /** @type {boolean} */ | |
| wkw[arguments[i]] = true; | |
| } | |
| return wkw; | |
| }; | |
| _fn("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")); | |
| /** @type {RegExp} */ | |
| var _problemUrlChars = /<[^>]*>|&[^;]+;/g; | |
| /** | |
| * @param {string} url | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var getQuery = function(url, opt_attributes) { | |
| return opt_attributes ? url.replace(_problemUrlChars, "") : url; | |
| }; | |
| /** @type {RegExp} */ | |
| var regex = RegExp("[A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u200e\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]"); | |
| /** @type {RegExp} */ | |
| var regexp = RegExp("^[^A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u200e\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff]*[\u0591-\u07ff\u200f\ufb1d-\ufdff\ufe70-\ufefc]"); | |
| /** @type {RegExp} */ | |
| var STACK_TRACE_REGEXP = /^http:\/\/.*/; | |
| /** @type {RegExp} */ | |
| var rspace = /\s+/; | |
| /** @type {RegExp} */ | |
| var reParent = /\d/; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var current = function() { | |
| /** @type {string} */ | |
| this.wj = ""; | |
| this.Ih = ParseUser; | |
| }; | |
| var ParseUser = {}; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var Sprite = function() { | |
| /** @type {string} */ | |
| this.Se = ""; | |
| this.Jh = random; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Sprite.prototype.kg = function() { | |
| return 1; | |
| }; | |
| var random = {}; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var type = function() { | |
| /** @type {string} */ | |
| this.Se = ""; | |
| this.Hh = listener; | |
| /** @type {null} */ | |
| this.vi = null; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| type.prototype.kg = function() { | |
| return this.vi; | |
| }; | |
| var listener = {}; | |
| /** | |
| * @return {?} | |
| */ | |
| var tryIt = function() { | |
| return null; | |
| }; | |
| /** | |
| * @param {Function} func | |
| * @return {?} | |
| */ | |
| var once = function(func) { | |
| /** @type {Arguments} */ | |
| var functions = arguments; | |
| /** @type {number} */ | |
| var length = functions.length; | |
| return function() { | |
| var memo; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < length;i++) { | |
| memo = functions[i].apply(this, arguments); | |
| } | |
| return memo; | |
| }; | |
| }; | |
| /** | |
| * @param {?} a | |
| * @param {?} b | |
| * @param {number} x | |
| * @return {?} | |
| */ | |
| var Number = function(a, b, x) { | |
| return a + x * (b - a); | |
| }; | |
| var userAgent; | |
| a: { | |
| var nav = global.navigator; | |
| if (nav) { | |
| var originalUserAgent = nav.userAgent; | |
| if (originalUserAgent) { | |
| userAgent = originalUserAgent; | |
| break a; | |
| } | |
| } | |
| /** @type {string} */ | |
| userAgent = ""; | |
| } | |
| /** | |
| * @return {?} | |
| */ | |
| var isBogus = function() { | |
| return-1 != userAgent.indexOf("Edge"); | |
| }; | |
| /** @type {boolean} */ | |
| var os = -1 != userAgent.indexOf("Opera") || -1 != userAgent.indexOf("OPR"); | |
| /** @type {boolean} */ | |
| var isValid = -1 != userAgent.indexOf("Edge") || (-1 != userAgent.indexOf("Trident") || -1 != userAgent.indexOf("MSIE")); | |
| /** @type {boolean} */ | |
| var strict = -1 != userAgent.indexOf("Gecko") && (!(-1 != userAgent.toLowerCase().indexOf("webkit") && !isBogus()) && (!(-1 != userAgent.indexOf("Trident") || -1 != userAgent.indexOf("MSIE")) && !isBogus())); | |
| /** @type {boolean} */ | |
| var documentElement = -1 != userAgent.toLowerCase().indexOf("webkit") && !isBogus(); | |
| /** | |
| * @return {?} | |
| */ | |
| var valueAccessor = function() { | |
| var ua = userAgent; | |
| if (strict) { | |
| return/rv\:([^\);]+)(\)|;)/.exec(ua); | |
| } | |
| if (isValid && isBogus()) { | |
| return/Edge\/([\d\.]+)/.exec(ua); | |
| } | |
| if (isValid) { | |
| return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(ua); | |
| } | |
| if (documentElement) { | |
| return/WebKit\/(\S+)/.exec(ua); | |
| } | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| var iframeCssFixes = function() { | |
| var doc = global.document; | |
| return doc ? doc.documentMode : void 0; | |
| }; | |
| var cDigit = function() { | |
| if (os && global.opera) { | |
| var v = global.opera.version; | |
| return "function" == isArray(v) ? v() : v; | |
| } | |
| /** @type {string} */ | |
| v = ""; | |
| var value = valueAccessor(); | |
| if (value) { | |
| v = value ? value[1] : ""; | |
| } | |
| return isValid && (!isBogus() && (value = iframeCssFixes(), value > parseFloat(v))) ? String(value) : v; | |
| }(); | |
| var opt_nodes = {}; | |
| /** | |
| * @param {string} ms | |
| * @return {?} | |
| */ | |
| var format = function(ms) { | |
| var node; | |
| if (!(node = opt_nodes[ms])) { | |
| /** @type {number} */ | |
| node = 0; | |
| var v1Subs = pad(String(cDigit)).split("."); | |
| var v2Subs = pad(String(ms)).split("."); | |
| /** @type {number} */ | |
| var subCount = Math.max(v1Subs.length, v2Subs.length); | |
| /** @type {number} */ | |
| var subIdx = 0; | |
| for (;0 == node && subIdx < subCount;subIdx++) { | |
| var value = v1Subs[subIdx] || ""; | |
| var v2Sub = v2Subs[subIdx] || ""; | |
| /** @type {RegExp} */ | |
| var re = RegExp("(\\d*)(\\D*)", "g"); | |
| /** @type {RegExp} */ | |
| var regex = RegExp("(\\d*)(\\D*)", "g"); | |
| do { | |
| /** @type {Array} */ | |
| var a = re.exec(value) || ["", "", ""]; | |
| /** @type {Array} */ | |
| var b = regex.exec(v2Sub) || ["", "", ""]; | |
| if (0 == a[0].length && 0 == b[0].length) { | |
| break; | |
| } | |
| node = cmp(0 == a[1].length ? 0 : parseInt(a[1], 10), 0 == b[1].length ? 0 : parseInt(b[1], 10)) || (cmp(0 == a[2].length, 0 == b[2].length) || cmp(a[2], b[2])); | |
| } while (0 == node); | |
| } | |
| /** @type {boolean} */ | |
| node = opt_nodes[ms] = 0 <= node; | |
| } | |
| return node; | |
| }; | |
| var DOC = global.document; | |
| var checkStart = iframeCssFixes(); | |
| var Pc = !DOC || (!isValid || !checkStart && isBogus()) ? void 0 : checkStart || ("CSS1Compat" == DOC.compatMode ? parseInt(cDigit, 10) : 5); | |
| /** | |
| * @param {number} x | |
| * @param {number} y | |
| * @return {undefined} | |
| */ | |
| var Rect = function(x, y) { | |
| this.x = void 0 !== x ? x : 0; | |
| this.y = void 0 !== y ? y : 0; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Rect.prototype.clone = function() { | |
| return new Rect(this.x, this.y); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Rect.prototype.ceil = function() { | |
| /** @type {number} */ | |
| this.x = Math.ceil(this.x); | |
| /** @type {number} */ | |
| this.y = Math.ceil(this.y); | |
| return this; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Rect.prototype.floor = function() { | |
| /** @type {number} */ | |
| this.x = Math.floor(this.x); | |
| /** @type {number} */ | |
| this.y = Math.floor(this.y); | |
| return this; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Rect.prototype.round = function() { | |
| /** @type {number} */ | |
| this.x = Math.round(this.x); | |
| /** @type {number} */ | |
| this.y = Math.round(this.y); | |
| return this; | |
| }; | |
| /** | |
| * @param {?} w | |
| * @param {?} h | |
| * @return {undefined} | |
| */ | |
| var Node = function(w, h) { | |
| this.width = w; | |
| this.height = h; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Node.prototype.clone = function() { | |
| return new Node(this.width, this.height); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Node.prototype.ceil = function() { | |
| /** @type {number} */ | |
| this.width = Math.ceil(this.width); | |
| /** @type {number} */ | |
| this.height = Math.ceil(this.height); | |
| return this; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Node.prototype.floor = function() { | |
| /** @type {number} */ | |
| this.width = Math.floor(this.width); | |
| /** @type {number} */ | |
| this.height = Math.floor(this.height); | |
| return this; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Node.prototype.round = function() { | |
| /** @type {number} */ | |
| this.width = Math.round(this.width); | |
| /** @type {number} */ | |
| this.height = Math.round(this.height); | |
| return this; | |
| }; | |
| if (!(!strict && !isValid)) { | |
| if (!(isValid && (isValid && (isBogus() || 9 <= Pc)))) { | |
| if (strict) { | |
| format("1.9.1"); | |
| } | |
| } | |
| } | |
| if (isValid) { | |
| format("9"); | |
| } | |
| /** | |
| * @param {Error} el | |
| * @return {?} | |
| */ | |
| var isNode = function(el) { | |
| return el ? new target(getWindow(el)) : hasMembers || (hasMembers = new target); | |
| }; | |
| /** | |
| * @param {Object} el | |
| * @return {?} | |
| */ | |
| var getWindow = function(el) { | |
| return 9 == el.nodeType ? el : el.ownerDocument || el.document; | |
| }; | |
| /** | |
| * @param {(Document|string)} el | |
| * @return {undefined} | |
| */ | |
| var target = function(el) { | |
| this.Rb = el || (global.document || document); | |
| }; | |
| /** | |
| * @param {?} value | |
| * @return {?} | |
| */ | |
| target.prototype.lg = function(value) { | |
| return isObject(value) ? this.Rb.getElementById(value) : value; | |
| }; | |
| /** | |
| * @param {string} name | |
| * @return {?} | |
| */ | |
| target.prototype.createElement = function(name) { | |
| return this.Rb.createElement(name); | |
| }; | |
| /** | |
| * @param {?} text | |
| * @param {string} val | |
| * @return {?} | |
| */ | |
| var toDom = function(text, val) { | |
| var fragment = text.Rb; | |
| var node = fragment.createElement("DIV"); | |
| if (isValid) { | |
| /** @type {string} */ | |
| node.innerHTML = "<br>" + val; | |
| node.removeChild(node.firstChild); | |
| } else { | |
| /** @type {string} */ | |
| node.innerHTML = val; | |
| } | |
| if (1 == node.childNodes.length) { | |
| node = node.removeChild(node.firstChild); | |
| } else { | |
| fragment = fragment.createDocumentFragment(); | |
| for (;node.firstChild;) { | |
| fragment.appendChild(node.firstChild); | |
| } | |
| node = fragment; | |
| } | |
| return node; | |
| }; | |
| /** | |
| * @param {Element} element | |
| * @param {Element} child | |
| * @return {undefined} | |
| */ | |
| target.prototype.appendChild = function(element, child) { | |
| element.appendChild(child); | |
| }; | |
| /** | |
| * @param {Object} parent | |
| * @param {Object} descendant | |
| * @return {?} | |
| */ | |
| target.prototype.contains = function(parent, descendant) { | |
| if (parent.contains && 1 == descendant.nodeType) { | |
| return parent == descendant || parent.contains(descendant); | |
| } | |
| if ("undefined" != typeof parent.compareDocumentPosition) { | |
| return parent == descendant || Boolean(parent.compareDocumentPosition(descendant) & 16); | |
| } | |
| for (;descendant && parent != descendant;) { | |
| descendant = descendant.parentNode; | |
| } | |
| return descendant == parent; | |
| }; | |
| if (isValid) { | |
| format(8); | |
| } | |
| var lowerTagName = {}; | |
| var n = {}; | |
| var me = {}; | |
| var elem = {}; | |
| var wildcardName = {}; | |
| /** | |
| * @return {?} | |
| */ | |
| var fun = function() { | |
| throw Error("Do not instantiate directly"); | |
| }; | |
| /** @type {null} */ | |
| fun.prototype.Na = null; | |
| /** | |
| * @return {?} | |
| */ | |
| fun.prototype.toString = function() { | |
| return this.content; | |
| }; | |
| /** | |
| * @param {string} object | |
| * @param {?} elt | |
| * @return {?} | |
| */ | |
| var indexOf = function(object, elt) { | |
| return null != object && object.fb === elt; | |
| }; | |
| /** | |
| * @param {string} putativeSpy | |
| * @return {?} | |
| */ | |
| var sorter = function(putativeSpy) { | |
| if (null != putativeSpy) { | |
| switch(putativeSpy.Na) { | |
| case 1: | |
| return 1; | |
| case -1: | |
| return-1; | |
| case 0: | |
| return 0; | |
| } | |
| } | |
| return null; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var src = function() { | |
| fun.call(this); | |
| }; | |
| isPlainObject(src, fun); | |
| src.prototype.fb = lowerTagName; | |
| /** | |
| * @param {?} value | |
| * @return {?} | |
| */ | |
| var $ = function(value) { | |
| return null != value && value.fb === lowerTagName ? value : value instanceof type ? func(value instanceof type && (value.constructor === type && value.Hh === listener) ? value.Se : "type_error:SafeHtml", value.kg()) : func(complete(String(String(value))), sorter(value)); | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var model = function() { | |
| fun.call(this); | |
| }; | |
| isPlainObject(model, fun); | |
| model.prototype.fb = {}; | |
| /** @type {number} */ | |
| model.prototype.Na = 1; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var value = function() { | |
| fun.call(this); | |
| }; | |
| isPlainObject(value, fun); | |
| value.prototype.fb = n; | |
| /** @type {number} */ | |
| value.prototype.Na = 1; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var req = function() { | |
| fun.call(this); | |
| }; | |
| isPlainObject(req, fun); | |
| req.prototype.fb = me; | |
| /** @type {number} */ | |
| req.prototype.Na = 1; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var source = function() { | |
| fun.call(this); | |
| }; | |
| isPlainObject(source, fun); | |
| source.prototype.fb = elem; | |
| /** @type {number} */ | |
| source.prototype.Na = 1; | |
| /** | |
| * @param {?} obj | |
| * @param {number} silent | |
| * @return {undefined} | |
| */ | |
| var view = function(obj, silent) { | |
| /** @type {string} */ | |
| this.content = String(obj); | |
| this.Na = null != silent ? silent : null; | |
| }; | |
| isPlainObject(view, fun); | |
| view.prototype.fb = wildcardName; | |
| /** | |
| * @param {Function} fn | |
| * @return {?} | |
| */ | |
| var when = function(fn) { | |
| /** | |
| * @param {?} c | |
| * @return {undefined} | |
| */ | |
| function handler(c) { | |
| this.content = c; | |
| } | |
| handler.prototype = fn.prototype; | |
| return function(opt_message) { | |
| return new handler(String(opt_message)); | |
| }; | |
| }; | |
| var func = function(b) { | |
| /** | |
| * @param {?} value | |
| * @return {undefined} | |
| */ | |
| function __(value) { | |
| this.content = value; | |
| } | |
| __.prototype = b.prototype; | |
| return function(opt_message, lvl) { | |
| var o = new __(String(opt_message)); | |
| if (void 0 !== lvl) { | |
| /** @type {number} */ | |
| o.Na = lvl; | |
| } | |
| return o; | |
| }; | |
| }(src); | |
| when(model); | |
| when(value); | |
| var fix_xhr = when(req); | |
| var log = when(source); | |
| /** | |
| * @param {Object} o | |
| * @param {?} iterable | |
| * @return {?} | |
| */ | |
| var beget = function(o, iterable) { | |
| /** | |
| * @return {undefined} | |
| */ | |
| function F() { | |
| } | |
| /** @type {Object} */ | |
| F.prototype = o; | |
| var object = new F; | |
| var key; | |
| for (key in iterable) { | |
| object[key] = iterable[key]; | |
| } | |
| return object; | |
| }; | |
| /** | |
| * @param {Function} o | |
| * @return {?} | |
| */ | |
| var validator = function(o) { | |
| /** | |
| * @param {?} content | |
| * @return {undefined} | |
| */ | |
| function node(content) { | |
| this.content = content; | |
| } | |
| node.prototype = o.prototype; | |
| return function(data) { | |
| return(data = String(data)) ? new node(data) : ""; | |
| }; | |
| }; | |
| /** | |
| * @param {string} str | |
| * @return {?} | |
| */ | |
| var is = function(str) { | |
| return(str = String(str)) ? new view(str, void 0) : ""; | |
| }; | |
| var apply = function(b) { | |
| /** | |
| * @param {?} count | |
| * @return {undefined} | |
| */ | |
| function c(count) { | |
| this.content = count; | |
| } | |
| c.prototype = b.prototype; | |
| return function(obj, lvl) { | |
| /** @type {string} */ | |
| var o = String(obj); | |
| if (!o) { | |
| return ""; | |
| } | |
| o = new c(o); | |
| if (void 0 !== lvl) { | |
| /** @type {number} */ | |
| o.Na = lvl; | |
| } | |
| return o; | |
| }; | |
| }(src); | |
| validator(model); | |
| validator(value); | |
| validator(req); | |
| var valid = validator(source); | |
| /** | |
| * @param {?} selector | |
| * @return {?} | |
| */ | |
| var parent = function(selector) { | |
| return $(selector); | |
| }; | |
| /** | |
| * @param {?} values | |
| * @return {?} | |
| */ | |
| var start = function(values) { | |
| return indexOf(values, lowerTagName) ? (values = String(values.content).replace(rLt, "").replace(rQuot, "<"), String(values).replace(rApos, boundary)) : complete(String(values)); | |
| }; | |
| /** | |
| * @param {Object} a | |
| * @return {?} | |
| */ | |
| var slice = function(a) { | |
| if (indexOf(a, me)) { | |
| return a.content.replace(/([^"'\s])$/, "$1 "); | |
| } | |
| /** @type {string} */ | |
| a = String(a); | |
| /** @type {string} */ | |
| a = exclude.test(a) ? a : "zSoyz"; | |
| return a; | |
| }; | |
| /** | |
| * @param {?} content | |
| * @return {?} | |
| */ | |
| var replace = function(content) { | |
| if (indexOf(content, n)) { | |
| return String(content).replace(r20, block); | |
| } | |
| if (content instanceof Sprite) { | |
| content = content instanceof Sprite && (content.constructor === Sprite && content.Jh === random) ? content.Se : "type_error:SafeUrl"; | |
| /** @type {string} */ | |
| content = String(content).replace(r20, block); | |
| } else { | |
| /** @type {string} */ | |
| content = String(content); | |
| /** @type {string} */ | |
| content = supportedTransforms.test(content) ? content.replace(r20, block) : "#zSoyz"; | |
| } | |
| return content; | |
| }; | |
| /** | |
| * @param {string} type | |
| * @return {?} | |
| */ | |
| var toString = function(type) { | |
| if (indexOf(type, elem)) { | |
| return type.content; | |
| } | |
| if (null == type) { | |
| /** @type {string} */ | |
| type = ""; | |
| } else { | |
| if (type instanceof current) { | |
| type = type instanceof current && (type.constructor === current && type.Ih === ParseUser) ? type.wj : "type_error:SafeStyle"; | |
| } else { | |
| /** @type {string} */ | |
| type = String(type); | |
| /** @type {string} */ | |
| type = manipulation_rcheckableType.test(type) ? type : "zSoyz"; | |
| } | |
| } | |
| return type; | |
| }; | |
| /** | |
| * @param {string} value | |
| * @return {?} | |
| */ | |
| var quote = function(value) { | |
| var key = sorter(value); | |
| if (null == key) { | |
| /** @type {number} */ | |
| var string = key = 0; | |
| /** @type {boolean} */ | |
| var multiple = false; | |
| value = getQuery(value + "", indexOf(value, lowerTagName)).split(rspace); | |
| /** @type {number} */ | |
| var index = 0; | |
| for (;index < value.length;index++) { | |
| var url = value[index]; | |
| if (regexp.test(getQuery(url, void 0))) { | |
| key++; | |
| string++; | |
| } else { | |
| if (STACK_TRACE_REGEXP.test(url)) { | |
| /** @type {boolean} */ | |
| multiple = true; | |
| } else { | |
| if (regex.test(getQuery(url, void 0))) { | |
| string++; | |
| } else { | |
| if (reParent.test(url)) { | |
| /** @type {boolean} */ | |
| multiple = true; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| /** @type {number} */ | |
| key = 0 == string ? multiple ? 1 : 0 : 0.4 < key / string ? -1 : 1; | |
| } | |
| return key; | |
| }; | |
| var _entryCharToButtonIdMap = { | |
| "\x00" : "�", | |
| "\t" : "	", | |
| "\n" : " ", | |
| "\x0B" : "", | |
| "\f" : "", | |
| "\r" : " ", | |
| " " : " ", | |
| '"' : """, | |
| "&" : "&", | |
| "'" : "'", | |
| "-" : "-", | |
| "/" : "/", | |
| "<" : "<", | |
| "=" : "=", | |
| ">" : ">", | |
| "`" : "`", | |
| "\u0085" : "…", | |
| "\u00a0" : " ", | |
| "\u2028" : "
", | |
| "\u2029" : "
" | |
| }; | |
| /** | |
| * @param {?} timeoutKey | |
| * @return {?} | |
| */ | |
| var boundary = function(timeoutKey) { | |
| return _entryCharToButtonIdMap[timeoutKey]; | |
| }; | |
| var special = { | |
| "\x00" : "%00", | |
| "\u0001" : "%01", | |
| "\u0002" : "%02", | |
| "\u0003" : "%03", | |
| "\u0004" : "%04", | |
| "\u0005" : "%05", | |
| "\u0006" : "%06", | |
| "\u0007" : "%07", | |
| "\b" : "%08", | |
| "\t" : "%09", | |
| "\n" : "%0A", | |
| "\x0B" : "%0B", | |
| "\f" : "%0C", | |
| "\r" : "%0D", | |
| "\u000e" : "%0E", | |
| "\u000f" : "%0F", | |
| "\u0010" : "%10", | |
| "\u0011" : "%11", | |
| "\u0012" : "%12", | |
| "\u0013" : "%13", | |
| "\u0014" : "%14", | |
| "\u0015" : "%15", | |
| "\u0016" : "%16", | |
| "\u0017" : "%17", | |
| "\u0018" : "%18", | |
| "\u0019" : "%19", | |
| "\u001a" : "%1A", | |
| "\u001b" : "%1B", | |
| "\u001c" : "%1C", | |
| "\u001d" : "%1D", | |
| "\u001e" : "%1E", | |
| "\u001f" : "%1F", | |
| " " : "%20", | |
| '"' : "%22", | |
| "'" : "%27", | |
| "(" : "%28", | |
| ")" : "%29", | |
| "<" : "%3C", | |
| ">" : "%3E", | |
| "\\" : "%5C", | |
| "{" : "%7B", | |
| "}" : "%7D", | |
| "\u007f" : "%7F", | |
| "\u0085" : "%C2%85", | |
| "\u00a0" : "%C2%A0", | |
| "\u2028" : "%E2%80%A8", | |
| "\u2029" : "%E2%80%A9", | |
| "\uff01" : "%EF%BC%81", | |
| "\uff03" : "%EF%BC%83", | |
| "\uff04" : "%EF%BC%84", | |
| "\uff06" : "%EF%BC%86", | |
| "\uff07" : "%EF%BC%87", | |
| "\uff08" : "%EF%BC%88", | |
| "\uff09" : "%EF%BC%89", | |
| "\uff0a" : "%EF%BC%8A", | |
| "\uff0b" : "%EF%BC%8B", | |
| "\uff0c" : "%EF%BC%8C", | |
| "\uff0f" : "%EF%BC%8F", | |
| "\uff1a" : "%EF%BC%9A", | |
| "\uff1b" : "%EF%BC%9B", | |
| "\uff1d" : "%EF%BC%9D", | |
| "\uff1f" : "%EF%BC%9F", | |
| "\uff20" : "%EF%BC%A0", | |
| "\uff3b" : "%EF%BC%BB", | |
| "\uff3d" : "%EF%BC%BD" | |
| }; | |
| /** | |
| * @param {?} type | |
| * @return {?} | |
| */ | |
| var block = function(type) { | |
| return special[type]; | |
| }; | |
| /** @type {RegExp} */ | |
| var rApos = /[\x00\x22\x27\x3c\x3e]/g; | |
| /** @type {RegExp} */ | |
| var r20 = /[\x00- \x22\x27-\x29\x3c\x3e\\\x7b\x7d\x7f\x85\xa0\u2028\u2029\uff01\uff03\uff04\uff06-\uff0c\uff0f\uff1a\uff1b\uff1d\uff1f\uff20\uff3b\uff3d]/g; | |
| /** @type {RegExp} */ | |
| var manipulation_rcheckableType = /^(?!-*(?:expression|(?:moz-)?binding))(?:[.#]?-?(?:[_a-z0-9-]+)(?:-[_a-z0-9-]+)*-?|-?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[a-z]{1,2}|%)?|!important|)$/i; | |
| /** @type {RegExp} */ | |
| var supportedTransforms = /^(?![^#?]*\/(?:\.|%2E){2}(?:[\/?#]|$))(?:(?:https?|mailto):|[^&:\/?#]*(?:[\/?#]|$))/i; | |
| /** @type {RegExp} */ | |
| var exclude = /^(?!style|on|action|archive|background|cite|classid|codebase|data|dsync|href|longdesc|src|usemap)(?:[a-z0-9_$:-]*)$/i; | |
| /** @type {RegExp} */ | |
| var rLt = /<(?:!|\/?([a-zA-Z][a-zA-Z0-9:\-]*))(?:[^>'"]|"[^"]*"|'[^']*')*>/g; | |
| /** @type {RegExp} */ | |
| var rQuot = /</g; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var animate = function(opt_attributes) { | |
| return func("<span class='individualLabel " + (opt_attributes.X ? start(opt_attributes.X) : "") + "'>" + $(opt_attributes.text) + "</span>"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} clear | |
| * @param {Function} opt_rightAlign | |
| * @return {undefined} | |
| */ | |
| var Renderer = function(clear, opt_rightAlign) { | |
| this.Yh = clear; | |
| this.C = opt_rightAlign || animate; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Renderer.prototype.f = function() { | |
| return this.C({ | |
| text : this.Yh, | |
| X : null | |
| }); | |
| }; | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var getStyle = function(opt_attributes) { | |
| /** @type {string} */ | |
| var later = ""; | |
| opt_attributes = opt_attributes.elements; | |
| var valuesLen = opt_attributes.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < valuesLen;i++) { | |
| later += $(opt_attributes[i]); | |
| } | |
| return func(later); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} lb | |
| * @param {Function} value | |
| * @return {undefined} | |
| */ | |
| var Float32Array = function(lb, value) { | |
| this.D = min(); | |
| this.lb = lb; | |
| this.C = value || createSvgElement_; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Float32Array.prototype.f = function() { | |
| /** @type {Array} */ | |
| var eventPath = []; | |
| /** @type {number} */ | |
| var l = 0; | |
| for (;l < this.lb.length;l++) { | |
| eventPath.push(this.lb[l].f()); | |
| } | |
| return this.C({ | |
| uid : this.D, | |
| yd : eventPath | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| Float32Array.prototype.G = function(d) { | |
| /** @type {Array} */ | |
| var vars = []; | |
| /** @type {number} */ | |
| var j = 0; | |
| for (;j < this.lb.length;j++) { | |
| if (this.lb[j].G) { | |
| /** @type {Array} */ | |
| vars = vars.concat(this.lb[j].G(d)); | |
| } | |
| } | |
| return vars; | |
| }; | |
| /** | |
| * @param {Window} d | |
| * @param {Object} opts | |
| * @return {undefined} | |
| */ | |
| Float32Array.prototype.W = function(d, opts) { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < this.lb.length;i++) { | |
| var t = this.lb[i]; | |
| if (t.W) { | |
| t.W(d, opts); | |
| } | |
| } | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var createSvgElement_ = function(opt_attributes) { | |
| return getStyle({ | |
| elements : opt_attributes.yd | |
| }); | |
| }; | |
| } | |
| /** | |
| * @return {?} | |
| */ | |
| var innerHeight = function() { | |
| return log("display: -moz-inline-box; display:inline-block; zoom: 1; *display: inline;"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var errorHandler = function(opt_attributes) { | |
| return log("-webkit-box-shadow: " + toString(opt_attributes.value) + "; -moz-box-shadow: " + toString(opt_attributes.value) + "; box-shadow: " + toString(opt_attributes.value) + ";"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var reject = function(opt_attributes) { | |
| return fix_xhr('target="' + (opt_attributes.j ? "_blank" : "_top") + '"'); | |
| }; | |
| /** | |
| * @param {Text} params | |
| * @return {?} | |
| */ | |
| var load = function(params) { | |
| /** @type {string} */ | |
| var direction = params.Tb ? "right" : "left"; | |
| /** @type {string} */ | |
| params = "" + ('<div style="overflow: hidden;"><div style="float: ' + start(toString(direction)) + "; width: " + start(toString(params.oa + "px")) + ';">' + $(params.Pa) + '</div><div style="margin-' + start(toString(direction)) + ": " + start(toString(params.oa + params.$a + "px")) + ';">' + $(params.Qa) + "</div></div>"); | |
| return func(params); | |
| }; | |
| /** | |
| * @param {Text} options | |
| * @return {?} | |
| */ | |
| var bind = function(options) { | |
| /** @type {string} */ | |
| var corners = options.Tb ? "right" : "left"; | |
| return options = "" + ('<div style="overflow: hidden;"><div style="float: ' + corners + "; width: " + (options.oa + "px") + ';">' + options.Pa + '</div><div style="margin-' + corners + ": " + (options.oa + options.$a + "px") + ';">' + options.Qa + "</div></div>"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} endRow | |
| * @param {?} endColumn | |
| * @param {?} isInt | |
| * @param {?} R | |
| * @param {Function} success | |
| * @return {undefined} | |
| */ | |
| var Range = function(endRow, endColumn, isInt, R, success) { | |
| this.D = min(); | |
| this.ma = endRow; | |
| this.Yb = endColumn; | |
| this.vb = isInt; | |
| this.R = R; | |
| this.C = success || fail; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Range.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| url : this.ma, | |
| ya : this.Yb, | |
| text : this.vb, | |
| j : this.R | |
| }); | |
| }; | |
| /** | |
| * @param {string} self | |
| * @param {Object} pos | |
| * @return {?} | |
| */ | |
| var contains = function(self, pos) { | |
| /** @type {Array} */ | |
| var configList = []; | |
| if (self.ctc) { | |
| configList.push(new Range(self.ctc.u, (window._googCsaAlwaysHttps ? "https:" : "") + "//www.google.com/images/afs/mobile/button_ctc.png", self.ctc.bt, pos.j, void 0)); | |
| } | |
| if (self.ctd) { | |
| configList.push(new Range(self.u, (window._googCsaAlwaysHttps ? "https:" : "") + "//www.google.com/images/afs/mobile/ctd-dl-icon.png", self.ctd.ps, pos.j, void 0)); | |
| } | |
| if (1 <= configList.length) { | |
| if (!(self.ctc && self.ctc.coa || self.ctd)) { | |
| configList.push(new Range(self.u, (window._googCsaAlwaysHttps ? "https:" : "") + "//www.google.com/images/afs/mobile/button_visit_site.png", pos.ek, pos.j, void 0)); | |
| } | |
| } | |
| return configList; | |
| }; | |
| /** | |
| * @param {string} value | |
| * @param {Object} m | |
| * @return {?} | |
| */ | |
| var h = function(value, m) { | |
| var left = contains(value, m); | |
| return 1 < left.length ? new Float32Array(left, decode) : result; | |
| }; | |
| } | |
| /** | |
| * @param {Element} item | |
| * @param {string} className | |
| * @return {?} | |
| */ | |
| var addClass = function(item, className) { | |
| if (item.classList) { | |
| return item.classList.contains(className); | |
| } | |
| var codeSegments = item.className.split(" "); | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| if (codeSegments[i] == className) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| }; | |
| /** | |
| * @param {Element} elem | |
| * @param {string} c | |
| * @return {undefined} | |
| */ | |
| var removeClass = function(elem, c) { | |
| if (elem.classList) { | |
| elem.classList.remove(c); | |
| } else { | |
| var tail = elem.className.split(" "); | |
| /** @type {Array} */ | |
| var context = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < tail.length;i++) { | |
| if (tail[i] != c) { | |
| context.push(tail[i]); | |
| } | |
| } | |
| /** @type {string} */ | |
| elem.className = context.join(" "); | |
| } | |
| }; | |
| /** | |
| * @param {Element} elem | |
| * @param {string} name | |
| * @return {undefined} | |
| */ | |
| var close = function(elem, name) { | |
| if (elem.classList) { | |
| elem.classList.add(name); | |
| } else { | |
| if (elem.className) { | |
| if (!addClass(elem, name)) { | |
| elem.className += " " + name; | |
| } | |
| } else { | |
| /** @type {string} */ | |
| elem.className = name; | |
| } | |
| } | |
| }; | |
| /** | |
| * @param {Object} node | |
| * @param {string} selector | |
| * @param {string} className | |
| * @return {?} | |
| */ | |
| var qsa = function(node, selector, className) { | |
| /** @type {Array} */ | |
| var paragraph = []; | |
| if ("getElementsByClassName" in document) { | |
| node = node.getElementsByClassName(className); | |
| /** @type {number} */ | |
| var _i = 0; | |
| var child; | |
| for (;child = node[_i];_i++) { | |
| if (child.nodeName) { | |
| if (child.nodeName.toLowerCase() == selector) { | |
| paragraph.push(child); | |
| } | |
| } | |
| } | |
| } else { | |
| node = node.getElementsByTagName(selector); | |
| /** @type {number} */ | |
| _i = 0; | |
| for (;child = node[_i];_i++) { | |
| if (addClass(child, className)) { | |
| paragraph.push(child); | |
| } | |
| } | |
| } | |
| return paragraph; | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @param {?} id | |
| * @return {?} | |
| */ | |
| var parseFloat = function(v23, id) { | |
| var ret = v23.getElementById(id); | |
| if (!ret) { | |
| throw "Could not find element with id: " + id; | |
| } | |
| return ret; | |
| }; | |
| /** | |
| * @param {Object} element | |
| * @param {?} id | |
| * @return {?} | |
| */ | |
| var visit = function(element, id) { | |
| for (;element.parentNode;) { | |
| if (element = element.parentNode, element.id == id) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| }; | |
| /** | |
| * @param {Object} result | |
| * @return {?} | |
| */ | |
| var fragment = function(result) { | |
| /** @type {Element} */ | |
| var tip = document.createElement("div"); | |
| result = isObject(result) ? result : result.content; | |
| /** @type {string} */ | |
| tip.innerHTML = "<table><tbody>" + result + "</tbody></table>"; | |
| var elem; | |
| try { | |
| /** @type {(Node|null)} */ | |
| elem = tip.firstChild.firstChild.firstChild; | |
| } catch (d) { | |
| return null; | |
| } | |
| return 1 == elem.nodeType && "tr" == elem.tagName.toLowerCase() ? elem : null; | |
| }; | |
| /** | |
| * @param {Element} element | |
| * @return {?} | |
| */ | |
| var runTest = function(element) { | |
| var parent = element.parentNode; | |
| var next = element.nextSibling; | |
| /** @type {Element} */ | |
| var d = document.createElement("div"); | |
| d.appendChild(element); | |
| if (parent) { | |
| if (next) { | |
| parent.insertBefore(d, next); | |
| } else { | |
| parent.appendChild(d); | |
| } | |
| } | |
| return d; | |
| }; | |
| /** | |
| * @param {Window} target | |
| * @param {?} scope | |
| * @param {?} attr | |
| * @return {?} | |
| */ | |
| var link = function(target, scope, attr) { | |
| return function() { | |
| if (300 <= target.innerWidth) { | |
| /** @type {string} */ | |
| parseFloat(target.document, scope).style.display = "block"; | |
| /** @type {string} */ | |
| parseFloat(target.document, attr).style.display = "none"; | |
| } else { | |
| /** @type {string} */ | |
| parseFloat(target.document, scope).style.display = "none"; | |
| /** @type {string} */ | |
| parseFloat(target.document, attr).style.display = "block"; | |
| } | |
| }; | |
| }; | |
| /** | |
| * @param {Object} el | |
| * @param {string} type | |
| * @param {Function} eventName | |
| * @return {undefined} | |
| */ | |
| var addEvent = function(el, type, eventName) { | |
| if (el.addEventListener) { | |
| el.addEventListener(type, eventName, false); | |
| } else { | |
| if (el.attachEvent) { | |
| el.attachEvent("on" + type, eventName); | |
| } else { | |
| var postfix = el["on" + type]; | |
| el["on" + type] = null != postfix ? once(eventName, postfix) : eventName; | |
| } | |
| } | |
| }; | |
| /** | |
| * @param {Object} el | |
| * @param {Function} fn | |
| * @return {undefined} | |
| */ | |
| var attach = function(el, fn) { | |
| addEvent(el, "mousedown", fn); | |
| addEvent(el, "mousedown", function(el, sType, fn) { | |
| /** @type {boolean} */ | |
| var f = false; | |
| return function() { | |
| if (!f) { | |
| if (el.removeEventListener) { | |
| el.removeEventListener(sType, fn, false); | |
| } else { | |
| if (el.detachEvent) { | |
| el.detachEvent("on" + sType, fn); | |
| } | |
| } | |
| /** @type {boolean} */ | |
| f = true; | |
| } | |
| }; | |
| }(el, "mousedown", fn)); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var loop = function(opt_attributes) { | |
| return func('<div id="' + start(opt_attributes.Bc) + '" style="display:' + start(toString(opt_attributes.yc ? "none" : "block")) + ';"><div>' + $(opt_attributes.Ba) + "</div>" + parent(load({ | |
| Pa : apply("" + (opt_attributes.ea && opt_attributes.ga ? '<div class="ctd-itd"><a class="ctd-il" href="' + start(replace(opt_attributes.jc)) + '"><span class="ctd-ico-s"></span><img class="ctd-ico' + (opt_attributes.dc ? " rc" : "") + '" ' + slice(opt_attributes.ga) + '="45" src="' + start(replace(opt_attributes.ea)) + '" alt></a>' + (opt_attributes.I && opt_attributes.L ? end({ | |
| I : opt_attributes.I, | |
| L : opt_attributes.L, | |
| fc : false | |
| }) : "") + "</div>" : "")), | |
| Qa : apply('<div class="ctd-td-cr">' + (!opt_attributes.I || (!opt_attributes.L || opt_attributes.ea && opt_attributes.ga) ? "" : end({ | |
| I : opt_attributes.I, | |
| L : opt_attributes.L, | |
| fc : true | |
| })) + $(opt_attributes.Ca) + '<div class="ctd-text" id="' + start(opt_attributes.Qb) + '">' + $(opt_attributes.od) + "</div></div>"), | |
| oa : opt_attributes.ea && opt_attributes.ga ? 45 : 0, | |
| $a : 0, | |
| Tb : opt_attributes.g | |
| })) + "</div>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var push = function(opt_attributes) { | |
| return func('<div id="' + start(opt_attributes.Bc) + '" style="display:' + start(toString(opt_attributes.yc ? "none" : "block")) + ';"><div>' + $(opt_attributes.Ba) + "</div>" + parent(load({ | |
| Pa : apply("" + (opt_attributes.ea && opt_attributes.ga ? '<div class="ctd-itd"><a class="ctd-il" href="' + start(replace(opt_attributes.jc)) + '"><span class="ctd-ico-s"></span><img class="ctd-ico' + (opt_attributes.dc ? " rc" : "") + '" ' + slice(opt_attributes.ga) + '="45" src="' + start(replace(opt_attributes.ea)) + '" alt></a>' + (opt_attributes.I && opt_attributes.L ? end({ | |
| I : opt_attributes.I, | |
| L : opt_attributes.L, | |
| fc : false | |
| }) : "") + "</div>" : "")), | |
| Qa : apply('<div class="ctd-td-cr">' + (!opt_attributes.I || (!opt_attributes.L || opt_attributes.ea && opt_attributes.ga) ? "" : end({ | |
| I : opt_attributes.I, | |
| L : opt_attributes.L, | |
| fc : true | |
| })) + '<div class="ctd-text" id="' + start(opt_attributes.Qb) + '">' + $(opt_attributes.Ca) + "</div></div>"), | |
| oa : opt_attributes.ea && opt_attributes.ga ? 45 : 0, | |
| $a : 0, | |
| Tb : opt_attributes.g | |
| })) + "</div>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var ready = function(opt_attributes) { | |
| return func("<div>" + (opt_attributes.ea && opt_attributes.ga ? '<a class="ctd-i-mini" href="' + start(replace(opt_attributes.jc)) + '"><img class="ctd-ico' + (opt_attributes.dc ? " rc-mini" : "") + '" style="' + start(toString(opt_attributes.ga)) + ': inherit; vertical-align: text-bottom;" src="' + start(replace(opt_attributes.ea)) + '"></a>' : "") + $(opt_attributes.Wi) + (opt_attributes.I && opt_attributes.L ? " " + end({ | |
| I : opt_attributes.I, | |
| L : opt_attributes.L, | |
| fc : true | |
| }) : "") + $(opt_attributes.Xi) + "</div>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var end = function(opt_attributes) { | |
| return func('<div class="ctd-rate"><div class="ctd-rate-bg"><div class="ctd-rate-fg" style="width: ' + start(toString(opt_attributes.I / 5 * 100)) + '%;"></div></div><div class="ctd-rate-txt' + (opt_attributes.fc ? " inline" : "") + '">(<span class="ctd-usr-ico"></span>' + $(opt_attributes.L) + ")</div></div>"); | |
| }; | |
| /** | |
| * @param {?} res | |
| * @return {?} | |
| */ | |
| var loaded = function(res) { | |
| return func('<img class="adIcon" src="' + start(replace(res.sa)) + '"/>'); | |
| }; | |
| /** | |
| * @param {?} rest | |
| * @return {?} | |
| */ | |
| var parseStartTag = function(rest) { | |
| return func('<iframe class="adIcon" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowTransparency="true" sandbox="" src="' + start(replace(rest.sa)) + '"></iframe>'); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} opt_vars | |
| * @param {?} opt_size | |
| * @return {undefined} | |
| */ | |
| var Player = function(opt_vars, opt_size) { | |
| this.Pj = opt_vars; | |
| this.C = opt_size; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Player.prototype.f = function() { | |
| return this.C({ | |
| sa : this.Pj | |
| }); | |
| }; | |
| } | |
| /** | |
| * @param {Object} doc | |
| * @return {?} | |
| */ | |
| var getOffset = function(doc) { | |
| var el = getWindow(doc); | |
| var pos = new Rect(0, 0); | |
| var node; | |
| node = el ? getWindow(el) : document; | |
| var opt_useFirstChild; | |
| if (!(opt_useFirstChild = !isValid || isValid && (isBogus() || 9 <= Pc))) { | |
| /** @type {boolean} */ | |
| opt_useFirstChild = "CSS1Compat" == isNode(node).Rb.compatMode; | |
| } | |
| if (doc == (opt_useFirstChild ? node.documentElement : node.body)) { | |
| return pos; | |
| } | |
| var viewport; | |
| a: { | |
| try { | |
| viewport = doc.getBoundingClientRect(); | |
| } catch (g) { | |
| viewport = { | |
| left : 0, | |
| top : 0, | |
| right : 0, | |
| bottom : 0 | |
| }; | |
| break a; | |
| } | |
| if (isValid) { | |
| if (doc.ownerDocument.body) { | |
| doc = doc.ownerDocument; | |
| viewport.left -= doc.documentElement.clientLeft + doc.body.clientLeft; | |
| viewport.top -= doc.documentElement.clientTop + doc.body.clientTop; | |
| } | |
| } | |
| } | |
| doc = isNode(el).Rb; | |
| el = documentElement || "CSS1Compat" != doc.compatMode ? doc.body || doc.documentElement : doc.documentElement; | |
| doc = doc.parentWindow || doc.defaultView; | |
| el = isValid && (format("10") && doc.pageYOffset != el.scrollTop) ? new Rect(el.scrollLeft, el.scrollTop) : new Rect(doc.pageXOffset || el.scrollLeft, doc.pageYOffset || el.scrollTop); | |
| pos.x = viewport.left + el.x; | |
| pos.y = viewport.top + el.y; | |
| return pos; | |
| }; | |
| if (isValid) { | |
| format(12); | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var createDocument = function(opt_attributes) { | |
| return func(g({ | |
| text : opt_attributes.text.c, | |
| Aa : opt_attributes.text.rtl, | |
| g : opt_attributes.g | |
| })); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var forEach = function(opt_attributes) { | |
| return func(g({ | |
| text : opt_attributes.text, | |
| Aa : 0 > quote(opt_attributes.text), | |
| g : opt_attributes.g | |
| })); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var g = function(opt_attributes) { | |
| return func(0 < opt_attributes.text.toString().length ? '<span dir="' + (opt_attributes.Aa ? "rtl" : "ltr") + '">' + $(opt_attributes.text) + "</span>" + (opt_attributes.g ? "‏" : "‎") : ""); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var exports = function(opt_attributes) { | |
| return func('<a id="' + start(opt_attributes.uid) + '" href="' + start(replace(opt_attributes.url)) + '" class="titleLink"' + slice(reject(opt_attributes)) + ">" + parent(createDocument(opt_attributes)) + "</a>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var test = function(opt_attributes) { | |
| return func('<div class="ctcT"><img src="//www.google.com/images/mobile_ad/phone_icon-lb32.png" class="ctcCOI" /><a id="' + start(opt_attributes.uid) + '" href="' + start(replace(opt_attributes.url)) + '"' + slice(reject(opt_attributes)) + ">" + parent(g({ | |
| text : opt_attributes.rj, | |
| Aa : false, | |
| g : opt_attributes.g | |
| })) + "</a>" + (opt_attributes.cg ? '<span class="ctcLD"> (' + parent(forEach({ | |
| text : opt_attributes.cg, | |
| g : opt_attributes.g | |
| })) + ")</span>" : "") + "</div>" + (opt_attributes.Oi ? "" : '<span class="ctcCO">' + parent(createDocument(opt_attributes)) + "</span>")); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var execute = function(opt_attributes) { | |
| return func('<a id="' + start(opt_attributes.uid) + '" href="' + start(replace(opt_attributes.url)) + '" class="domainLink"' + slice(reject(opt_attributes)) + ">" + parent(g({ | |
| text : opt_attributes.text, | |
| Aa : false, | |
| g : opt_attributes.g | |
| })) + "</a>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var flush = function(opt_attributes) { | |
| var props = func; | |
| var config; | |
| config = opt_attributes.ah; | |
| var o = opt_attributes.bh; | |
| opt_attributes = opt_attributes.g; | |
| /** @type {string} */ | |
| var name = ""; | |
| if (o && 0 < o.c.toString().length) { | |
| var green = config.rtl || o.rtl; | |
| /** @type {string} */ | |
| name = name + g({ | |
| Aa : green, | |
| g : opt_attributes, | |
| text : apply(createDocument({ | |
| text : config, | |
| g : green | |
| }) + " " + createDocument({ | |
| text : o, | |
| g : green | |
| })) | |
| }); | |
| } else { | |
| name += createDocument({ | |
| text : config, | |
| g : opt_attributes | |
| }); | |
| } | |
| config = func(name); | |
| return props('<span class="descText">' + $(config) + "</span>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var write = function(opt_attributes) { | |
| return func('<a id="' + start(opt_attributes.uid) + '" href="' + start(replace(opt_attributes.url)) + '" class="textLink"' + slice(reject(opt_attributes)) + ">" + flush(opt_attributes) + "</a>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var use = function(opt_attributes) { | |
| return func("<div>" + $(opt_attributes.Ba) + "</div>" + $(opt_attributes.Ca) + "<br />" + $(opt_attributes.od)); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var limit = function(opt_attributes) { | |
| return func("<div>" + $(opt_attributes.Ba) + "</div>" + $(opt_attributes.Ca)); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var onSuccess = function(data) { | |
| /** @type {string} */ | |
| var options = ""; | |
| switch(data.rc) { | |
| case 1: | |
| options += "oneLine"; | |
| break; | |
| case 2: | |
| options += "twoLine"; | |
| break; | |
| case 3: | |
| options += "threeLine"; | |
| } | |
| options = is(options); | |
| /** @type {string} */ | |
| data = "" + ('<div class="adStd ' + start(options) + '"' + (data.cb ? 'data-click-s="' + start(data.url) + '"' + slice(fix_xhr('data-click-trg="' + (data.j ? "_blank" : "_top") + '"')) : "") + ">" + $(data.content) + "</div>"); | |
| return func(data); | |
| }; | |
| /** | |
| * @param {?} object | |
| * @return {?} | |
| */ | |
| var freeze = function(object) { | |
| freeze[" "](object); | |
| return object; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| freeze[" "] = function() { | |
| }; | |
| if (isValid) { | |
| format("9"); | |
| } | |
| if (!!documentElement) { | |
| format("528"); | |
| } | |
| if (!(strict && format("1.9b"))) { | |
| if (!(isValid && format("8"))) { | |
| if (!(os && format("9.5"))) { | |
| if (documentElement) { | |
| format("528"); | |
| } | |
| } | |
| } | |
| } | |
| if (!(strict && !format("8"))) { | |
| if (isValid) { | |
| format("9"); | |
| } | |
| } | |
| /** | |
| * @param {?} y | |
| * @param {?} x | |
| * @param {?} node | |
| * @param {?} ypos | |
| * @param {?} mass | |
| * @param {?} xpos | |
| * @param {?} coordinates | |
| * @param {?} round | |
| * @return {undefined} | |
| */ | |
| var Point = function(y, x, node, ypos, mass, xpos, coordinates, round) { | |
| this.Dc = y; | |
| this.pf = x; | |
| this.nf = node; | |
| this.qf = ypos; | |
| this.of = mass; | |
| this.rf = xpos; | |
| this.Gd = coordinates; | |
| this.sf = round; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Point.prototype.clone = function() { | |
| return new Point(this.Dc, this.pf, this.nf, this.qf, this.of, this.rf, this.Gd, this.sf); | |
| }; | |
| /** | |
| * @param {Object} options | |
| * @param {number} a | |
| * @return {?} | |
| */ | |
| var number = function(options, a) { | |
| if (0 == a) { | |
| return options.Dc; | |
| } | |
| if (1 == a) { | |
| return options.Gd; | |
| } | |
| var c = Number(options.Dc, options.nf, a); | |
| var b = Number(options.nf, options.of, a); | |
| var y = Number(options.of, options.Gd, a); | |
| c = Number(c, b, a); | |
| b = Number(b, y, a); | |
| return Number(c, b, a); | |
| }; | |
| /** | |
| * @param {?} b | |
| * @return {?} | |
| */ | |
| var loadConfig = function(b) { | |
| var x = point; | |
| /** @type {number} */ | |
| var args = (b - x.Dc) / (x.Gd - x.Dc); | |
| if (0 >= args) { | |
| return 0; | |
| } | |
| if (1 <= args) { | |
| return 1; | |
| } | |
| /** @type {number} */ | |
| var triggerArguments = 0; | |
| /** @type {number} */ | |
| var lastArgs = 1; | |
| /** @type {number} */ | |
| var f = 0; | |
| for (;8 > f;f++) { | |
| var a = number(x, args); | |
| /** @type {number} */ | |
| var c = (number(x, args + 1E-6) - a) / 1E-6; | |
| if (1E-6 > Math.abs(a - b)) { | |
| return args; | |
| } | |
| if (1E-6 > Math.abs(c)) { | |
| break; | |
| } else { | |
| if (a < b) { | |
| /** @type {number} */ | |
| triggerArguments = args; | |
| } else { | |
| /** @type {number} */ | |
| lastArgs = args; | |
| } | |
| args -= (a - b) / c; | |
| } | |
| } | |
| /** @type {number} */ | |
| f = 0; | |
| for (;1E-6 < Math.abs(a - b) && 8 > f;f++) { | |
| if (a < b) { | |
| /** @type {number} */ | |
| triggerArguments = args; | |
| /** @type {number} */ | |
| args = (args + lastArgs) / 2; | |
| } else { | |
| /** @type {number} */ | |
| lastArgs = args; | |
| /** @type {number} */ | |
| args = (args + triggerArguments) / 2; | |
| } | |
| a = number(x, args); | |
| } | |
| return args; | |
| }; | |
| var point = new Point(0, 0, 0.25, 0.1, 0.25, 1, 1, 1); | |
| /** | |
| * @param {?} config | |
| * @return {?} | |
| */ | |
| var route = function(config) { | |
| config = loadConfig(config); | |
| if (0 == config) { | |
| config = point.pf; | |
| } else { | |
| if (1 == config) { | |
| config = point.sf; | |
| } else { | |
| var c = Number(point.pf, point.qf, config); | |
| var val = Number(point.qf, point.rf, config); | |
| var b = Number(point.rf, point.sf, config); | |
| c = Number(c, val, config); | |
| val = Number(val, b, config); | |
| config = Number(c, val, config); | |
| } | |
| } | |
| return config; | |
| }; | |
| /** | |
| * @param {Element} node | |
| * @param {number} a | |
| * @param {number} e | |
| * @return {?} | |
| */ | |
| var increment = function(node, a, e) { | |
| /** @type {number} */ | |
| var d = e - a; | |
| return function(x) { | |
| /** @type {string} */ | |
| node.style.left = a + x * d + "px"; | |
| }; | |
| }; | |
| /** | |
| * @param {number} failing_message | |
| * @return {undefined} | |
| */ | |
| var report = function(failing_message) { | |
| this.Cc = void 0; | |
| /** @type {number} */ | |
| this.eg = failing_message; | |
| /** @type {boolean} */ | |
| this.rb = false; | |
| /** @type {function (?): ?} */ | |
| this.Vj = route; | |
| /** @type {number} */ | |
| this.ug = 0; | |
| }; | |
| /** | |
| * @param {Object} options | |
| * @return {?} | |
| */ | |
| var tick = function(options) { | |
| if (options.rb || !options.Cc) { | |
| return false; | |
| } | |
| /** @type {boolean} */ | |
| options.rb = true; | |
| var remove = options.Cc; | |
| var css = wrapper(function(func, dataAndEvents) { | |
| var node = this.Vj(func); | |
| if (dataAndEvents) { | |
| /** @type {number} */ | |
| node = 0; | |
| } else { | |
| if (1 <= func) { | |
| /** @type {number} */ | |
| node = 1; | |
| } | |
| } | |
| remove(node); | |
| }, options); | |
| if (window.requestAnimationFrame && window.performance) { | |
| /** @type {number} */ | |
| var source = window.performance.now(); | |
| /** @type {boolean} */ | |
| var cssObj = true; | |
| var func = wrapper(function(target) { | |
| /** @type {number} */ | |
| target = (target - source) / this.eg; | |
| css(target, cssObj); | |
| /** @type {boolean} */ | |
| cssObj = false; | |
| if (1 <= target) { | |
| remove(1); | |
| /** @type {boolean} */ | |
| this.rb = false; | |
| } else { | |
| window.requestAnimationFrame(func); | |
| } | |
| }, options); | |
| window.requestAnimationFrame(func); | |
| } else { | |
| /** @type {number} */ | |
| source = (new Date).getTime(); | |
| /** @type {boolean} */ | |
| cssObj = true; | |
| func = wrapper(function() { | |
| /** @type {number} */ | |
| var ol = ((new Date).getTime() - source) / this.eg; | |
| css(ol, cssObj); | |
| /** @type {boolean} */ | |
| cssObj = false; | |
| if (1 <= ol) { | |
| remove(1); | |
| /** @type {boolean} */ | |
| this.rb = false; | |
| window.clearInterval(this.ug); | |
| } | |
| }, options); | |
| /** @type {number} */ | |
| options.ug = window.setInterval(func, 1E3 / 60); | |
| } | |
| return true; | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var getElementById = function(opt_attributes) { | |
| return func('<a href="' + start(replace(opt_attributes.href)) + '" target="' + (opt_attributes.j ? "_blank" : "_top") + '"' + (opt_attributes.Oa ? 'id="' + start(opt_attributes.Oa) + '"' : "") + " " + (opt_attributes.na ? 'class="' + start(opt_attributes.na) + '"' : "") + ">" + $(opt_attributes.content) + "</a>"); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var decode = function(data) { | |
| /** @type {string} */ | |
| var fn = ""; | |
| if (data.yd) { | |
| /** @type {string} */ | |
| fn = fn + ('<div class="buttonsWrapper" id="' + start(data.uid) + '">'); | |
| var arr = data.yd; | |
| var e = arr.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < e;i++) { | |
| var val = arr[i]; | |
| /** @type {string} */ | |
| fn = fn + ('<div style="width: ' + start(toString(Math.floor(1 / data.yd.length * 100))) + '%;" class="inlineButton' + (0 == i ? " firstButton" : "") + '">' + $(val) + "</div>"); | |
| } | |
| fn += "</div>"; | |
| } | |
| return func(fn); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var fail = function(opt_attributes) { | |
| return func('<div class="button" id="' + start(opt_attributes.uid) + '"><div class="buttonImageWrapper"><a href="' + start(replace(opt_attributes.url)) + '" ' + slice(reject(opt_attributes)) + '><img class="buttonImage" src="' + start(replace(opt_attributes.ya)) + '" width="28" height="28"></a></div><div class="buttonTextWrapper"><a href="' + start(replace(opt_attributes.url)) + '" class="buttonText" ' + slice(reject(opt_attributes)) + ">" + $(opt_attributes.text) + "</a></div></div>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var text = function(opt_attributes) { | |
| return "" + emit({ | |
| text : opt_attributes.text.c, | |
| Aa : opt_attributes.text.rtl, | |
| g : opt_attributes.g | |
| }); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var emit = function(data) { | |
| return'<span dir="' + (data.Aa ? "rtl" : "ltr") + '">' + data.text + "</span>" + (data.g ? "‏" : "‎"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var after = function(opt_attributes) { | |
| return func(opt_attributes.De ? "<div class='location'>" + parent(forEach({ | |
| text : opt_attributes.De, | |
| g : opt_attributes.g | |
| })) + "</div>" : ""); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} vertexShader | |
| * @param {?} vertex | |
| * @param {Function} displayName | |
| * @return {undefined} | |
| */ | |
| var Program = function(vertexShader, vertex, displayName) { | |
| this.D = min(); | |
| this.vb = vertexShader; | |
| this.H = vertex; | |
| this.C = displayName || after; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Program.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| De : this.vb, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {Object} value | |
| * @param {Object} t | |
| * @return {?} | |
| */ | |
| var calc = function(value, t) { | |
| return value.location ? new Program(value.location, t.g) : result; | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} filterFn | |
| * @param {?} o | |
| * @param {string} onFinished | |
| * @param {?} stream | |
| * @return {undefined} | |
| */ | |
| var Loader = function(filterFn, o, onFinished, stream) { | |
| this.D = min(); | |
| this.ra = filterFn; | |
| this.ue = o; | |
| /** @type {string} */ | |
| this.hk = onFinished; | |
| this.C = stream || _set; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Loader.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| vd : this.ra, | |
| nb : this.ue, | |
| kh : this.hk | |
| }); | |
| }; | |
| /** | |
| * @param {string} obj | |
| * @param {Object} val | |
| * @return {?} | |
| */ | |
| var getter = function(obj, val) { | |
| var isLarge = obj.gt && ("oh" == obj.gt.r && obj.gt.t) ? obj.gt.t : null; | |
| return obj.oh && 0 < obj.oh.length || isLarge ? new Loader(obj.oh, isLarge, val.ij) : result; | |
| }; | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var each = function(opt_attributes) { | |
| /** @type {string} */ | |
| var fn = ""; | |
| if (opt_attributes.Pe) { | |
| /** @type {string} */ | |
| fn = fn + "<div class='plus-ones'>"; | |
| var values = opt_attributes.Pe; | |
| var valuesLen = values.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < valuesLen;i++) { | |
| var val = values[i]; | |
| /** @type {string} */ | |
| fn = fn + ("TARGET" == val ? parent(func('target="' + (opt_attributes.j ? "_blank" : "_top") + '"')) : $(val)); | |
| } | |
| fn += "</div>"; | |
| } | |
| return func(fn); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} compute | |
| * @param {?} R | |
| * @param {?} t | |
| * @param {Function} Var | |
| * @return {undefined} | |
| */ | |
| var X = function(compute, R, t, Var) { | |
| this.D = min(); | |
| this.Tj = compute; | |
| this.R = R; | |
| this.H = t; | |
| this.C = Var || each; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| X.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| Pe : this.Tj, | |
| j : this.R, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {string} value | |
| * @param {Object} options | |
| * @return {?} | |
| */ | |
| var validate = function(value, options) { | |
| return value.plus_ones ? new X(step(value), options.j, options.g) : result; | |
| }; | |
| /** | |
| * @param {string} value | |
| * @return {?} | |
| */ | |
| var step = function(value) { | |
| /** @type {Array} */ | |
| var ret = []; | |
| if (value.plus_ones) { | |
| /** @type {number} */ | |
| var i = 0; | |
| var valuesLen = value.plus_ones.length; | |
| for (;i < valuesLen;i++) { | |
| ret.push(func(value.plus_ones[i])); | |
| } | |
| } | |
| return ret; | |
| }; | |
| } | |
| /** | |
| * @param {?} args | |
| * @return {?} | |
| */ | |
| var constructor = function(args) { | |
| return func(args.zc ? template({ | |
| I : args.zc.r, | |
| dk : true | |
| }) + '<span class="sr-p"> </span><span class="sr-gt"> (' + parent(getElementById({ | |
| href : args.zc.u, | |
| content : Math.round(10 * args.zc.r) / 10, | |
| j : args.j, | |
| na : "sr-gt sr-gl" | |
| })) + ")</span>" : ""); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var check = function(opt_attributes) { | |
| /** @type {string} */ | |
| var point = '<div class="sr-div">'; | |
| var resultItems = opt_attributes.Sj; | |
| var valuesLen = resultItems.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < valuesLen;i++) { | |
| var result = resultItems[i]; | |
| /** @type {string} */ | |
| point = point + ("RATING" == result ? template({ | |
| I : opt_attributes.r | |
| }) + '<span class="sr-p"> </span>' : "LINK_START" == result ? '<a href="' + start(replace(opt_attributes.ck)) + '" class="sr-rl"' + slice(reject(opt_attributes)) + ">" : "LINK_END" == result ? "</a>" : "NUM_START" == result ? '<span class="sr-number">' : "NUM_END" == result ? "</span> " : parent(forEach({ | |
| text : result, | |
| g : opt_attributes.g | |
| }))); | |
| } | |
| return func(point + "</div>"); | |
| }; | |
| /** | |
| * @param {?} data | |
| * @return {?} | |
| */ | |
| var template = function(data) { | |
| return func('<div class="sr-nsc"><img src="//www.google.com/images/sr-star-off.png" class="sr-star"/><img src="//www.google.com/images/sr-star-on' + (data.dk ? "-gray" : "") + '.png" class="sr-star" style="clip: rect(0px, ' + start(toString(13.2 * data.I)) + 'px, 13px, 0px);"/></div>'); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} initialState | |
| * @param {string} R | |
| * @param {?} debugMode | |
| * @param {?} round | |
| * @param {?} sock | |
| * @param {Function} rootModel | |
| * @return {undefined} | |
| */ | |
| var Game = function(initialState, R, debugMode, round, sock, rootModel) { | |
| this.D = min(); | |
| this.vb = initialState; | |
| /** @type {string} */ | |
| this.R = R; | |
| this.Ga = debugMode; | |
| this.ma = round; | |
| this.H = sock; | |
| this.C = rootModel || check; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Game.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| Sj : this.vb, | |
| j : this.R, | |
| r : this.Ga, | |
| ck : this.ma, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {string} d | |
| * @param {Object} v | |
| * @return {?} | |
| */ | |
| var val = function(d, v) { | |
| return d.sr && (d.sr.nt && (d.sr.r && d.sr.u)) ? new Game(d.sr.nt, v.j, d.sr.r, d.sr.u, v.g) : result; | |
| }; | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var toggle = function(opt_attributes) { | |
| /** @type {string} */ | |
| var fn = ""; | |
| if (opt_attributes.af && 0 < opt_attributes.af.length) { | |
| /** @type {string} */ | |
| fn = fn + ('<table class="sl-table" cellspacing="0" cellpadding="0" id="' + start(opt_attributes.uid) + '"><tbody><tr><td>'); | |
| var employees = opt_attributes.af; | |
| var l = employees.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < l;i++) { | |
| fn += show({ | |
| position : "left", | |
| Ed : employees[i], | |
| j : opt_attributes.j, | |
| g : opt_attributes.g | |
| }); | |
| } | |
| fn += "</td><td>"; | |
| employees = opt_attributes.Nj; | |
| l = employees.length; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < l;i++) { | |
| fn += show({ | |
| position : "right", | |
| Ed : employees[i], | |
| j : opt_attributes.j, | |
| g : opt_attributes.g | |
| }); | |
| } | |
| fn += "</td></tr></tbody></table>"; | |
| if (opt_attributes.Je && (opt_attributes.ha && 0 < opt_attributes.ha.length)) { | |
| fn += '<div class="c_">'; | |
| employees = opt_attributes.ha; | |
| l = employees.length; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < l;i++) { | |
| fn += show({ | |
| position : "left", | |
| Ed : employees[i], | |
| j : opt_attributes.j, | |
| g : opt_attributes.g | |
| }); | |
| } | |
| fn += "</div>"; | |
| } | |
| } | |
| return func(fn); | |
| }; | |
| /** | |
| * @param {?} e | |
| * @return {?} | |
| */ | |
| var show = function(e) { | |
| return func("<div class='sl-" + start(e.position) + "'><a href=\"" + start(replace(e.Ed.u)) + '" class="sl" ' + slice(reject(e)) + ">" + parent(forEach({ | |
| text : e.Ed.t, | |
| g : e.g | |
| })) + "</a></div>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var off = function(opt_attributes) { | |
| /** @type {string} */ | |
| var point = '<ul class="sitelinks">'; | |
| var codeSegments = opt_attributes.ha; | |
| var valuesLen = codeSegments.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < valuesLen;i++) { | |
| var options = codeSegments[i]; | |
| /** @type {string} */ | |
| point = point + ('<li class="' + (2 == opt_attributes.Zf ? "twoColSitelink " : "") + start(opt_attributes.$e) + '"><div class="sitelink-spacer"><div class="sitelink-nowrap" style="direction: ' + (0 > quote(options.t) ? "rtl" : "ltr") + ';"><a href="' + start(replace(options.u)) + '" class="' + start(opt_attributes.$e) + '" ' + slice(reject(opt_attributes)) + ">" + $(options.t) + "</a></div></div></li>"); | |
| } | |
| return func(point + "</ul>"); | |
| }; | |
| /** | |
| * @param {Object} args | |
| * @return {?} | |
| */ | |
| var remove = function(args) { | |
| return func('<div class="sitelinksWrapper_js ' + start(args.nh) + '" ' + (args.uid ? ' id="' + start(args.uid) + '" ' : "") + '><div class="wideSitelinksWrapper_js">' + off({ | |
| ha : args.ha, | |
| j : args.j, | |
| Zf : 2, | |
| $e : args.Wg | |
| }) + '</div><div class="narrowSitelinksWrapper_js" style="display: none;">' + off({ | |
| ha : args.ha.slice(0, 3), | |
| j : args.j, | |
| Zf : 1, | |
| $e : args.Vg | |
| }) + "</div></div>"); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var removeModel = function(opt_attributes) { | |
| return func(remove({ | |
| uid : opt_attributes.uid, | |
| ha : opt_attributes.ha, | |
| j : opt_attributes.j, | |
| Wg : "sitelinksTruncatedWide", | |
| Vg : "sitelinksTruncatedNarrow", | |
| nh : "nonSfblSitelinksWrapper" | |
| })); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Array} consumerKey | |
| * @param {string} R | |
| * @param {Array} realm | |
| * @param {?} nonceSize | |
| * @param {Function} a | |
| * @return {undefined} | |
| */ | |
| var OAuth = function(consumerKey, R, realm, nonceSize, a) { | |
| this.D = min(); | |
| /** @type {Array} */ | |
| this.Nb = consumerKey; | |
| /** @type {string} */ | |
| this.R = R; | |
| /** @type {Array} */ | |
| this.Aj = realm; | |
| this.H = nonceSize; | |
| this.C = a || toggle; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| OAuth.prototype.f = function() { | |
| /** @type {Array} */ | |
| var arrayOfArgs = []; | |
| /** @type {Array} */ | |
| var matched = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < this.Nb.length;i++) { | |
| if (0 == i % 2) { | |
| arrayOfArgs.push(this.Nb[i]); | |
| } else { | |
| matched.push(this.Nb[i]); | |
| } | |
| } | |
| return this.C({ | |
| uid : this.D, | |
| ha : this.Nb, | |
| af : arrayOfArgs, | |
| Nj : matched, | |
| j : this.R, | |
| Je : this.Aj, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @return {?} | |
| */ | |
| OAuth.prototype.G = function(v23) { | |
| return addLink(v23, this.D); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @param {?} url | |
| * @return {?} | |
| */ | |
| var addLink = function(v23, url) { | |
| /** @type {Array} */ | |
| var value = []; | |
| var items = parseFloat(v23, url).getElementsByTagName("a"); | |
| /** @type {number} */ | |
| var i = 0; | |
| var item; | |
| for (;item = items[i];i++) { | |
| value.push(new Resource(item, "&nb=6")); | |
| } | |
| return value; | |
| }; | |
| /** | |
| * @param {string} value | |
| * @param {Object} options | |
| * @return {?} | |
| */ | |
| var build = function(value, options) { | |
| return value.sls && 0 < value.sls.length ? options.Mj ? new ctor(value.sls, options.j) : new OAuth(value.sls, options.j, options.Je, options.g) : result; | |
| }; | |
| /** | |
| * @param {Array} maxNum | |
| * @param {?} R | |
| * @param {Function} initiator | |
| * @return {undefined} | |
| */ | |
| var ctor = function(maxNum, R, initiator) { | |
| this.D = min(); | |
| /** @type {Array} */ | |
| this.Nb = maxNum; | |
| this.R = R; | |
| this.C = initiator || removeModel; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| ctor.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| ha : this.Nb, | |
| j : this.R | |
| }); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @return {?} | |
| */ | |
| ctor.prototype.G = function(v23) { | |
| return addLink(v23, this.D); | |
| }; | |
| } | |
| var _ColorsRef = { | |
| aliceblue : "#f0f8ff", | |
| antiquewhite : "#faebd7", | |
| aqua : "#00ffff", | |
| aquamarine : "#7fffd4", | |
| azure : "#f0ffff", | |
| beige : "#f5f5dc", | |
| bisque : "#ffe4c4", | |
| black : "#000000", | |
| blanchedalmond : "#ffebcd", | |
| blue : "#0000ff", | |
| blueviolet : "#8a2be2", | |
| brown : "#a52a2a", | |
| burlywood : "#deb887", | |
| cadetblue : "#5f9ea0", | |
| chartreuse : "#7fff00", | |
| chocolate : "#d2691e", | |
| coral : "#ff7f50", | |
| cornflowerblue : "#6495ed", | |
| cornsilk : "#fff8dc", | |
| crimson : "#dc143c", | |
| cyan : "#00ffff", | |
| darkblue : "#00008b", | |
| darkcyan : "#008b8b", | |
| darkgoldenrod : "#b8860b", | |
| darkgray : "#a9a9a9", | |
| darkgreen : "#006400", | |
| darkgrey : "#a9a9a9", | |
| darkkhaki : "#bdb76b", | |
| darkmagenta : "#8b008b", | |
| darkolivegreen : "#556b2f", | |
| darkorange : "#ff8c00", | |
| darkorchid : "#9932cc", | |
| darkred : "#8b0000", | |
| darksalmon : "#e9967a", | |
| darkseagreen : "#8fbc8f", | |
| darkslateblue : "#483d8b", | |
| darkslategray : "#2f4f4f", | |
| darkslategrey : "#2f4f4f", | |
| darkturquoise : "#00ced1", | |
| darkviolet : "#9400d3", | |
| deeppink : "#ff1493", | |
| deepskyblue : "#00bfff", | |
| dimgray : "#696969", | |
| dimgrey : "#696969", | |
| dodgerblue : "#1e90ff", | |
| firebrick : "#b22222", | |
| floralwhite : "#fffaf0", | |
| forestgreen : "#228b22", | |
| fuchsia : "#ff00ff", | |
| gainsboro : "#dcdcdc", | |
| ghostwhite : "#f8f8ff", | |
| gold : "#ffd700", | |
| goldenrod : "#daa520", | |
| gray : "#808080", | |
| green : "#008000", | |
| greenyellow : "#adff2f", | |
| grey : "#808080", | |
| honeydew : "#f0fff0", | |
| hotpink : "#ff69b4", | |
| indianred : "#cd5c5c", | |
| indigo : "#4b0082", | |
| ivory : "#fffff0", | |
| khaki : "#f0e68c", | |
| lavender : "#e6e6fa", | |
| lavenderblush : "#fff0f5", | |
| lawngreen : "#7cfc00", | |
| lemonchiffon : "#fffacd", | |
| lightblue : "#add8e6", | |
| lightcoral : "#f08080", | |
| lightcyan : "#e0ffff", | |
| lightgoldenrodyellow : "#fafad2", | |
| lightgray : "#d3d3d3", | |
| lightgreen : "#90ee90", | |
| lightgrey : "#d3d3d3", | |
| lightpink : "#ffb6c1", | |
| lightsalmon : "#ffa07a", | |
| lightseagreen : "#20b2aa", | |
| lightskyblue : "#87cefa", | |
| lightslategray : "#778899", | |
| lightslategrey : "#778899", | |
| lightsteelblue : "#b0c4de", | |
| lightyellow : "#ffffe0", | |
| lime : "#00ff00", | |
| limegreen : "#32cd32", | |
| linen : "#faf0e6", | |
| magenta : "#ff00ff", | |
| maroon : "#800000", | |
| mediumaquamarine : "#66cdaa", | |
| mediumblue : "#0000cd", | |
| mediumorchid : "#ba55d3", | |
| mediumpurple : "#9370db", | |
| mediumseagreen : "#3cb371", | |
| mediumslateblue : "#7b68ee", | |
| mediumspringgreen : "#00fa9a", | |
| mediumturquoise : "#48d1cc", | |
| mediumvioletred : "#c71585", | |
| midnightblue : "#191970", | |
| mintcream : "#f5fffa", | |
| mistyrose : "#ffe4e1", | |
| moccasin : "#ffe4b5", | |
| navajowhite : "#ffdead", | |
| navy : "#000080", | |
| oldlace : "#fdf5e6", | |
| olive : "#808000", | |
| olivedrab : "#6b8e23", | |
| orange : "#ffa500", | |
| orangered : "#ff4500", | |
| orchid : "#da70d6", | |
| palegoldenrod : "#eee8aa", | |
| palegreen : "#98fb98", | |
| paleturquoise : "#afeeee", | |
| palevioletred : "#db7093", | |
| papayawhip : "#ffefd5", | |
| peachpuff : "#ffdab9", | |
| peru : "#cd853f", | |
| pink : "#ffc0cb", | |
| plum : "#dda0dd", | |
| powderblue : "#b0e0e6", | |
| purple : "#800080", | |
| red : "#ff0000", | |
| rosybrown : "#bc8f8f", | |
| royalblue : "#4169e1", | |
| saddlebrown : "#8b4513", | |
| salmon : "#fa8072", | |
| sandybrown : "#f4a460", | |
| seagreen : "#2e8b57", | |
| seashell : "#fff5ee", | |
| sienna : "#a0522d", | |
| silver : "#c0c0c0", | |
| skyblue : "#87ceeb", | |
| slateblue : "#6a5acd", | |
| slategray : "#708090", | |
| slategrey : "#708090", | |
| snow : "#fffafa", | |
| springgreen : "#00ff7f", | |
| steelblue : "#4682b4", | |
| tan : "#d2b48c", | |
| teal : "#008080", | |
| thistle : "#d8bfd8", | |
| tomato : "#ff6347", | |
| turquoise : "#40e0d0", | |
| violet : "#ee82ee", | |
| wheat : "#f5deb3", | |
| white : "#ffffff", | |
| whitesmoke : "#f5f5f5", | |
| yellow : "#ffff00", | |
| yellowgreen : "#9acd32" | |
| }; | |
| /** | |
| * @param {string} str | |
| * @return {?} | |
| */ | |
| var parseTime = function(str) { | |
| var result = {}; | |
| /** @type {string} */ | |
| str = String(str); | |
| /** @type {string} */ | |
| var value = "#" == str.charAt(0) ? str : "#" + str; | |
| if (rchecked.test(value)) { | |
| return result.jd = match(value), result.type = "hex", result; | |
| } | |
| a: { | |
| /** @type {(Array.<string>|null)} */ | |
| var pos = str.match(pat); | |
| if (pos) { | |
| /** @type {number} */ | |
| value = Number(pos[1]); | |
| /** @type {number} */ | |
| var month = Number(pos[2]); | |
| /** @type {number} */ | |
| pos = Number(pos[3]); | |
| if (0 <= value && (255 >= value && (0 <= month && (255 >= month && (0 <= pos && 255 >= pos))))) { | |
| /** @type {Array} */ | |
| value = [value, month, pos]; | |
| break a; | |
| } | |
| } | |
| /** @type {Array} */ | |
| value = []; | |
| } | |
| if (value.length) { | |
| return result.jd = serialize(value[0], value[1], value[2]), result.type = "rgb", result; | |
| } | |
| if (_ColorsRef && (value = _ColorsRef[str.toLowerCase()])) { | |
| return result.jd = value, result.type = "named", result; | |
| } | |
| throw Error(str + " is not a valid color string"); | |
| }; | |
| /** @type {RegExp} */ | |
| var cx = /#(.)(.)(.)/; | |
| /** | |
| * @param {string} text | |
| * @return {?} | |
| */ | |
| var match = function(text) { | |
| if (!rchecked.test(text)) { | |
| throw Error("'" + text + "' is not a valid hex color"); | |
| } | |
| if (4 == text.length) { | |
| text = text.replace(cx, "#$1$1$2$2$3$3"); | |
| } | |
| return text.toLowerCase(); | |
| }; | |
| /** | |
| * @param {number} val | |
| * @param {number} index | |
| * @param {number} number | |
| * @return {?} | |
| */ | |
| var serialize = function(val, index, number) { | |
| /** @type {number} */ | |
| val = Number(val); | |
| /** @type {number} */ | |
| index = Number(index); | |
| /** @type {number} */ | |
| number = Number(number); | |
| if (isNaN(val) || (0 > val || (255 < val || (isNaN(index) || (0 > index || (255 < index || (isNaN(number) || (0 > number || 255 < number)))))))) { | |
| throw Error('"(' + val + "," + index + "," + number + '") is not a valid RGB color'); | |
| } | |
| val = arrayIndexOf(val.toString(16)); | |
| index = arrayIndexOf(index.toString(16)); | |
| number = arrayIndexOf(number.toString(16)); | |
| return "#" + val + index + number; | |
| }; | |
| /** @type {RegExp} */ | |
| var rchecked = /^#(?:[0-9a-f]{3}){1,2}$/i; | |
| /** @type {RegExp} */ | |
| var pat = /^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i; | |
| /** | |
| * @param {string} a | |
| * @return {?} | |
| */ | |
| var arrayIndexOf = function(a) { | |
| return 1 == a.length ? "0" + a : a; | |
| }; | |
| /** | |
| * @param {Array} x | |
| * @param {Array} obj | |
| * @return {?} | |
| */ | |
| var _get = function(x, obj) { | |
| /** @type {Array} */ | |
| var results = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < obj.length;i++) { | |
| results.push({ | |
| color : obj[i], | |
| bg : isEmpty(obj[i], x) + makeStructured(obj[i], x) | |
| }); | |
| } | |
| results.sort(function(b, a) { | |
| return a.bg - b.bg; | |
| }); | |
| return results[0].color; | |
| }; | |
| /** | |
| * @param {Array} value | |
| * @param {Array} str | |
| * @return {?} | |
| */ | |
| var isEmpty = function(value, str) { | |
| return Math.abs(Math.round((299 * value[0] + 587 * value[1] + 114 * value[2]) / 1E3) - Math.round((299 * str[0] + 587 * str[1] + 114 * str[2]) / 1E3)); | |
| }; | |
| /** | |
| * @param {Array} obj | |
| * @param {Array} v00 | |
| * @return {?} | |
| */ | |
| var makeStructured = function(obj, v00) { | |
| return Math.abs(obj[0] - v00[0]) + Math.abs(obj[1] - v00[1]) + Math.abs(obj[2] - v00[2]); | |
| }; | |
| /** | |
| * @param {?} obj | |
| * @return {undefined} | |
| */ | |
| var objectType = function(obj) { | |
| this.Nf = obj; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| objectType.prototype.da = function() { | |
| /** @type {string} */ | |
| var da = "A CSS color"; | |
| if (this.Nf) { | |
| da += " including 'transparent'"; | |
| } | |
| return da; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| objectType.prototype.S = function(n) { | |
| if (this.Nf && (isObject(n) && "transparent" == n.toLowerCase())) { | |
| return "transparent"; | |
| } | |
| try { | |
| return parseTime("" + n).jd; | |
| } catch (b) { | |
| return null; | |
| } | |
| }; | |
| /** @type {function (): ?} */ | |
| objectType.prototype.ca = tryIt; | |
| var docCount = new objectType(false); | |
| /** | |
| * @param {Array} array | |
| * @return {?} | |
| */ | |
| var clean = function(array) { | |
| /** @type {string} */ | |
| var ret = ""; | |
| array = array.Bj; | |
| var ln = array.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < ln;i++) { | |
| ret += '<div class="ad' + (0 == i ? " f" : "") + (i == ln - 1 ? " l" : "") + ' adUnit_js">' + array[i] + "</div>"; | |
| } | |
| return ret; | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var onLoad = function(opt_attributes) { | |
| return "" + (opt_attributes.B.adIconUrl && ("ad-left" == opt_attributes.B.adIconLocation && opt_attributes.B.img) ? (opt_attributes.Tc ? '<a href="' + opt_attributes.B.u + '" ' + reject(opt_attributes) + 'id="' + opt_attributes.Zi + '">' : "") + '<img class="adIcon" src="' + opt_attributes.B.adIconUrl + '"/>' + (opt_attributes.Tc ? "</a>" : "") : ""); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var call = function(opt_attributes) { | |
| return "" + (opt_attributes.B.adIconUrl && ("ad-left" == opt_attributes.B.adIconLocation && !opt_attributes.B.img) ? '<iframe class="adIcon" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowTransparency="true" sandbox="" src="' + opt_attributes.B.adIconUrl + '"></iframe>' : ""); | |
| }; | |
| /** | |
| * @param {?} o | |
| * @return {?} | |
| */ | |
| var def = function(o) { | |
| return "" + (o.Rd ? '<span class="' + (o.X ? $(o.X) : "") + '" id="attribution">' + (o.Pc ? '<a href="' + $(o.Pc) + '" target="_blank">' : "") + $(o.Rd) + (o.Pc ? "</a>" : "") + "</span>" : ""); | |
| }; | |
| /** | |
| * @param {(Object|string)} o | |
| * @return {?} | |
| */ | |
| var toArray = function(o) { | |
| var id; | |
| if (o.gc) { | |
| /** @type {string} */ | |
| id = '<span class="' + (o.X ? $(o.X) : "") + '" id="' + $(o.id) + '">'; | |
| o = o.gc; | |
| o = indexOf(o, wildcardName) ? "zSoyz" : o; | |
| /** @type {string} */ | |
| id = id + o + "</span>"; | |
| } else { | |
| /** @type {string} */ | |
| id = ""; | |
| } | |
| return "" + id; | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var onReadyStateChange = function(opt_attributes) { | |
| /** @type {string} */ | |
| var a = (opt_attributes.Tg ? "" : call(opt_attributes)) + '<div class="a_ b_' + (opt_attributes.B.rais && 0 < opt_attributes.B.rais.length ? " raiDiv" : "") + '" id="' + opt_attributes.uid + '">' + (opt_attributes.Tg ? "" : onLoad({ | |
| B : opt_attributes.B, | |
| Tc : opt_attributes.Vd, | |
| j : opt_attributes.j, | |
| Zi : opt_attributes.Sh | |
| })) + '<div class="adD' + (opt_attributes.nk ? " nesWrapper" : "") + (opt_attributes.B.topad ? " g_" : "") + '">'; | |
| var b; | |
| b = opt_attributes.Uj ? func('<a href="' + start(replace(opt_attributes.B.u)) + '" class="thumbicon" style="background-image:url(\'' + start(replace(opt_attributes.B.kodachrome.u)) + "');\"" + slice(reject(opt_attributes)) + "></a>") : ""; | |
| return a + b + opt_attributes.Th + opt_attributes.ai + "</div></div>" + ("" + (opt_attributes.B.adIconUrl && ("ad-left" == opt_attributes.B.adIconLocation && !opt_attributes.B.img) ? '<div style="clear: both;"></div>' : "")); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var trigger = function(data) { | |
| return func(data.text ? '<div class="l_">' + $(data.text) + "</div>" : ""); | |
| }; | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var fn = function(opt_attributes) { | |
| /** @type {string} */ | |
| var url = ""; | |
| if (opt_attributes.Ad && 0 < opt_attributes.Ad.length) { | |
| /** @type {string} */ | |
| url = url + '<div class="apareviews">'; | |
| var codeSegments = opt_attributes.Ad; | |
| var valuesLen = codeSegments.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < valuesLen;i++) { | |
| var data = codeSegments[i]; | |
| data = { | |
| text : data.t, | |
| source : data.s, | |
| Xg : data.su, | |
| g : opt_attributes.g | |
| }; | |
| data = func(data.text ? '<div class="apareview">' + parent(forEach(data)) + " - " + (data.Xg ? '<a href="' + start(replace(data.Xg)) + '" class="reviewlink"' + slice(reject({ | |
| j : true | |
| })) + ">" + parent(forEach({ | |
| text : data.source, | |
| g : data.g | |
| })) + "</a>" : parent(forEach({ | |
| text : data.source, | |
| g : data.g | |
| }))) + "</div>" : ""); | |
| /** @type {string} */ | |
| url = url + data; | |
| } | |
| url += "</div>"; | |
| } else { | |
| if (opt_attributes.nb) { | |
| url += parent(trigger({ | |
| text : opt_attributes.nb | |
| })); | |
| } | |
| } | |
| return func(url); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} line | |
| * @param {?} _arg | |
| * @param {?} parentEl | |
| * @param {Function} context | |
| * @return {undefined} | |
| */ | |
| var Text = function(line, _arg, parentEl, context) { | |
| this.D = min(); | |
| this.Dj = line; | |
| this.ue = _arg; | |
| this.H = parentEl; | |
| this.C = context || fn; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Text.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| Ad : this.Dj, | |
| nb : this.ue, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {string} options | |
| * @param {Object} settings | |
| * @return {?} | |
| */ | |
| var animation = function(options, settings) { | |
| var _x = options.gt && ("ar" == options.gt.r && options.gt.t) ? options.gt.t : null; | |
| return options.ar && 0 < options.ar.length || _x ? new Text(options.ar, _x, settings.g) : result; | |
| }; | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var _set = function(opt_attributes) { | |
| /** @type {string} */ | |
| var later = ""; | |
| if (opt_attributes.vd && 0 < opt_attributes.vd.length) { | |
| later += '<div class="m_">' + (opt_attributes.kh ? '<img class="p_" src="//www.google.com/images/afs/offer_tag_light.png" />' : ""); | |
| opt_attributes = opt_attributes.vd; | |
| var valuesLen = opt_attributes.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < valuesLen;i++) { | |
| later += '<span class="n_">' + (0 != i ? "· " : "") + '<span class="o_">' + $(opt_attributes[i].t) + "</span> </span>"; | |
| } | |
| later += "</div>"; | |
| } else { | |
| if (opt_attributes.nb) { | |
| later += parent(trigger({ | |
| text : opt_attributes.nb | |
| })); | |
| } | |
| } | |
| return func(later); | |
| }; | |
| /** @type {null} */ | |
| var bool = null; | |
| /** | |
| * @return {?} | |
| */ | |
| var setFillAndStroke = function() { | |
| if (null != bool) { | |
| return bool; | |
| } | |
| /** @type {Element} */ | |
| var container = document.createElement("div"); | |
| /** @type {string} */ | |
| container.style.width = "1px"; | |
| /** @type {string} */ | |
| container.style.height = "1px"; | |
| /** @type {string} */ | |
| container.style.border = "1px solid black"; | |
| /** @type {string} */ | |
| container.style.padding = "1px"; | |
| /** @type {string} */ | |
| container.style.visibility = "hidden"; | |
| document.body.appendChild(container); | |
| var width = container.offsetWidth; | |
| document.body.removeChild(container); | |
| return bool = 5 == width; | |
| }; | |
| /** | |
| * @param {string} obj | |
| * @return {?} | |
| */ | |
| var isNaN = function(obj) { | |
| return setShortStyleProperty(obj, true); | |
| }; | |
| /** | |
| * @param {string} value | |
| * @return {?} | |
| */ | |
| var stringify = function(value) { | |
| return value.replace(/<[^>^<]*>/g, ""); | |
| }; | |
| /** | |
| * @param {Object} style | |
| * @return {?} | |
| */ | |
| var style = function(style) { | |
| var value = style.offsetWidth; | |
| if (!setFillAndStroke()) { | |
| return value; | |
| } | |
| var doc = document.defaultView || {}; | |
| if (doc && doc.getComputedStyle) { | |
| style = doc.getComputedStyle(style, false); | |
| value -= getComputedStyle(style.getPropertyValue("padding-left")) + getComputedStyle(style.getPropertyValue("padding-right")); | |
| } else { | |
| style = style.currentStyle; | |
| value -= getComputedStyle(style.paddingLeft) + getComputedStyle(style.paddingRight); | |
| } | |
| return value; | |
| }; | |
| /** | |
| * @param {Node} node | |
| * @return {?} | |
| */ | |
| var createElement = function(node) { | |
| var n = node.cloneNode(true); | |
| /** @type {string} */ | |
| n.style.visibility = "hidden"; | |
| /** @type {string} */ | |
| n.style.position = "absolute"; | |
| if (createTextNode()) { | |
| var el = node.ownerDocument.createElement("div"); | |
| /** @type {string} */ | |
| el.style.visibility = "hidden"; | |
| /** @type {string} */ | |
| el.style.position = "relative"; | |
| /** @type {string} */ | |
| el.style.width = "9999px"; | |
| el.appendChild(n); | |
| node.parentNode.appendChild(el); | |
| } else { | |
| /** @type {string} */ | |
| n.style.top = "0"; | |
| /** @type {string} */ | |
| n.style.whiteSpace = "nowrap"; | |
| node.parentNode.appendChild(n); | |
| } | |
| node = new Node(n.offsetWidth, n.offsetHeight); | |
| if (createTextNode()) { | |
| el.parentNode.removeChild(el); | |
| } else { | |
| n.parentNode.removeChild(n); | |
| } | |
| return node; | |
| }; | |
| /** @type {RegExp} */ | |
| var percentPattern = /([?|&]{1}nm=)([\d]{1,})/; | |
| /** @type {RegExp} */ | |
| var cjsRequireRegExp = /(\?|&)clkt=-?[\d]*/g; | |
| /** @type {RegExp} */ | |
| var rxhtmlTag = /[&\?]nb=\d/; | |
| /** @type {RegExp} */ | |
| var rSlash = /(\?|&)nx=-?[\d]+/g; | |
| /** @type {RegExp} */ | |
| var trimReplace = /(\?|&)ny=-?[\d]+/g; | |
| /** | |
| * @param {Array} ca | |
| * @return {?} | |
| */ | |
| var create = function(ca) { | |
| return function() { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < ca.length;i++) { | |
| var c = ca[i]; | |
| var value = c.element.href; | |
| var reqVerArray = value.match(percentPattern); | |
| if (reqVerArray) { | |
| if (3 == reqVerArray.length) { | |
| value = value.replace(percentPattern, reqVerArray[1] + (parseInt(reqVerArray[2], 10) + 1)); | |
| } | |
| } else { | |
| value += (-1 == value.indexOf("?") ? "?" : "&") + "nm=1"; | |
| } | |
| append(c, value); | |
| } | |
| }; | |
| }; | |
| /** | |
| * @param {?} el | |
| * @return {?} | |
| */ | |
| var compile = function(el) { | |
| return function() { | |
| if (el.He) { | |
| /** @type {string} */ | |
| var post = "&clkt=" + ((new Date).getTime() - el.He); | |
| var base = el.element.href; | |
| base = base.replace(cjsRequireRegExp, ""); | |
| append(el, base + post); | |
| } | |
| }; | |
| }; | |
| /** | |
| * @param {?} el | |
| * @return {?} | |
| */ | |
| var postLink = function(el) { | |
| return function(e) { | |
| /** @type {number} */ | |
| el.He = (new Date).getTime(); | |
| var pos = getOffset(el.element); | |
| var y = e.clientY; | |
| /** @type {number} */ | |
| e = Math.round(e.clientX - pos.x); | |
| /** @type {number} */ | |
| pos = Math.round(y - pos.y); | |
| y = el.element.href; | |
| y = y.replace(rSlash, ""); | |
| y = y.replace(trimReplace, ""); | |
| /** @type {string} */ | |
| y = y + ("&nx=" + e) + ("&ny=" + pos); | |
| append(el, y); | |
| }; | |
| }; | |
| /** | |
| * @param {string} result | |
| * @param {string} prefix | |
| * @param {string} v | |
| * @return {?} | |
| */ | |
| var getName = function(result, prefix, v) { | |
| return-1 == result.indexOf(prefix) && (1950 > result.length + prefix.length && (result += prefix + encodeURIComponent(v), 1950 < result.length)) ? result.substring(0, 1950) : result; | |
| }; | |
| /** | |
| * @param {?} el | |
| * @param {(number|string)} o | |
| * @return {undefined} | |
| */ | |
| var insert = function(el, o) { | |
| attach(el.element, function() { | |
| var a; | |
| var b; | |
| try { | |
| a = isNaN(o); | |
| b = setShortStyleProperty(o, false); | |
| } catch (e) { | |
| } | |
| if (a && b) { | |
| var value = el.element.href; | |
| value = getName(value, "&is=", [b, a].join("x")); | |
| append(el, value); | |
| } | |
| }); | |
| }; | |
| /** | |
| * @param {Element} element | |
| * @param {?} resource_id | |
| * @return {undefined} | |
| */ | |
| var Resource = function(element, resource_id) { | |
| this.mi = resource_id; | |
| /** @type {Element} */ | |
| this.element = element; | |
| /** @type {null} */ | |
| this.He = null; | |
| }; | |
| /** | |
| * @param {?} container | |
| * @param {?} value | |
| * @return {undefined} | |
| */ | |
| var append = function(container, value) { | |
| var el = container.element; | |
| if (!(2E3 < value.length)) { | |
| /** @type {Array} */ | |
| var codeSegments = []; | |
| var i = el.innerHTML; | |
| var first = el.firstChild; | |
| for (;first;first = first.nextSibling) { | |
| codeSegments.push(first.cloneNode(true)); | |
| } | |
| el.href = value; | |
| if (isValid && el.innerHTML != i) { | |
| /** @type {string} */ | |
| el.innerHTML = ""; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| el.appendChild(codeSegments[i]); | |
| } | |
| } | |
| } | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| Resource.prototype.Qd = function() { | |
| addEvent(this.element, "mouseover", create([this])); | |
| addEvent(this.element, "mousedown", postLink(this)); | |
| addEvent(this.element, "mouseup", compile(this)); | |
| var value = this.element.href; | |
| value = value.replace(rxhtmlTag, ""); | |
| value = value + this.mi; | |
| append(this, value); | |
| }; | |
| /** | |
| * @param {(Array|string)} data | |
| * @param {Object} e | |
| * @param {number} target | |
| * @param {Object} options | |
| * @return {undefined} | |
| */ | |
| var refresh = function(data, e, target, options) { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < data.length;i++) { | |
| var el = data[i]; | |
| el.Qd(); | |
| insert(el, target); | |
| if (void 0 != options.resultUrl) { | |
| var val = options.resultUrl; | |
| val = void 0 == val ? document.location.href : val; | |
| if ("" != val) { | |
| var value = el.element.href; | |
| value = getName(value, "&res_url=", val); | |
| append(el, value); | |
| } | |
| } | |
| if (void 0 != options.refererUrl) { | |
| val = options.refererUrl; | |
| val = void 0 == val ? document.referrer : val; | |
| if ("" != val) { | |
| value = el.element.href; | |
| value = getName(value, "&rurl=", val); | |
| append(el, value); | |
| } | |
| } | |
| } | |
| if (0 < data.length) { | |
| addEvent(e, "mouseover", create(data)); | |
| } | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** @type {RegExp} */ | |
| var isSimple = /^https?:\/\/afs.googleusercontent.com\//; | |
| /** | |
| * @param {Array} images | |
| * @param {string} qualifier | |
| * @param {?} x | |
| * @param {string} recurring | |
| * @return {undefined} | |
| */ | |
| var formatter = function(images, qualifier, x, recurring) { | |
| if (!recurring || isSimple.test(qualifier)) { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < images.length;i++) { | |
| /** @type {string} */ | |
| images[i].adIconUrl = qualifier; | |
| images[i].adIconLocation = x; | |
| /** @type {string} */ | |
| images[i].img = recurring; | |
| } | |
| } | |
| }; | |
| formatter = cb(formatter, "aiIID"); | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} data | |
| * @param {number} element | |
| * @param {?} obj | |
| * @param {Object} elements | |
| * @return {undefined} | |
| */ | |
| var register = function(data, element, obj, elements) { | |
| if ((data = concatCall(data, elements)) && 0 < data.length) { | |
| if (elements.adClicktracking) { | |
| obj = send("block", "" + obj, data); | |
| elements = qsa(element, "div", "b_"); | |
| elements = elements.concat(qsa(element, "tr", "b_")); | |
| /** @type {number} */ | |
| element = 0; | |
| var instance; | |
| for (;instance = elements[element];element++) { | |
| data = obj; | |
| data = send("ad", "" + (element + 1), data); | |
| bindEvents(instance, data); | |
| } | |
| } else { | |
| bindEvents(element, data); | |
| } | |
| } | |
| }; | |
| /** | |
| * @param {?} data | |
| * @param {Object} elements | |
| * @return {?} | |
| */ | |
| var concatCall = function(data, elements) { | |
| return elements.clicktracking && (data.clicktrackUrl && 0 < data.clicktrackUrl.length) ? data.clicktrackUrl : null; | |
| }; | |
| /** | |
| * @param {Object} element | |
| * @param {?} el | |
| * @return {undefined} | |
| */ | |
| var bindEvents = function(element, el) { | |
| var codeSegments = element.getElementsByTagName("a"); | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| var e = codeSegments[i]; | |
| if (re.test(e.href)) { | |
| if ("ontouchstart" in document.documentElement) { | |
| addEvent(e, "touchstart", touchstart); | |
| addEvent(e, "touchmove", touchmove); | |
| addEvent(e, "touchend", function() { | |
| if (Zf) { | |
| execCommand(generate(el)); | |
| } | |
| /** @type {boolean} */ | |
| Zf = false; | |
| }); | |
| } else { | |
| addEvent(e, "mousedown", function(event) { | |
| /** @type {boolean} */ | |
| var c = false; | |
| if (c = event.which ? 2 > event.which : 2 > event.button) { | |
| execCommand(generate(el)); | |
| } | |
| }); | |
| } | |
| } | |
| } | |
| }; | |
| var x; | |
| var y; | |
| /** @type {boolean} */ | |
| var Zf = false; | |
| /** | |
| * @param {Object} e | |
| * @return {undefined} | |
| */ | |
| var touchstart = function(e) { | |
| /** @type {boolean} */ | |
| Zf = false; | |
| e = e.touches; | |
| if (1 == e.length) { | |
| e = e[0]; | |
| x = e.clientX; | |
| y = e.clientY; | |
| /** @type {boolean} */ | |
| Zf = true; | |
| } | |
| }; | |
| /** | |
| * @param {Object} event | |
| * @return {undefined} | |
| */ | |
| var touchmove = function(event) { | |
| event = event.touches[0]; | |
| if (10 < Math.abs(event.clientX - x) || 10 < Math.abs(event.clientY - y)) { | |
| /** @type {boolean} */ | |
| Zf = false; | |
| } | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Object} done | |
| * @return {?} | |
| */ | |
| var transform = function(done) { | |
| /** @type {Array} */ | |
| var out = []; | |
| done = qsa(done, "div", "adUnit_js"); | |
| /** @type {number} */ | |
| var id = 0; | |
| var matches; | |
| for (;matches = done[id];id++) { | |
| matches = qsa(matches, "div", "adStd"); | |
| /** @type {number} */ | |
| var sel = 0; | |
| var copies; | |
| for (;copies = matches[sel];sel++) { | |
| out.push(copies); | |
| } | |
| } | |
| return out; | |
| }; | |
| transform = cb(transform, "fCE"); | |
| /** | |
| * @param {HTMLElement} e | |
| * @param {number} index | |
| * @param {string} data | |
| * @return {undefined} | |
| */ | |
| var click = function(e, index, data) { | |
| var udataCur = e.getAttribute("data-click-s"); | |
| var suiteView = e.getAttribute("data-click-trg"); | |
| if (udataCur) { | |
| if (suiteView) { | |
| addEvent(e, "click", select(udataCur, suiteView, data && 0 < data.length ? generate(send("ad", "" + (index + 1), data)) : null)); | |
| } | |
| } | |
| }; | |
| click = cb(click, "aCB"); | |
| /** | |
| * @param {Object} v | |
| * @param {string} data | |
| * @param {(number|string)} index | |
| * @return {undefined} | |
| */ | |
| var enter = function(v, data, index) { | |
| if (data) { | |
| if (0 < data.length) { | |
| data = send("block", "" + index, data); | |
| } | |
| } | |
| v = transform(v); | |
| /** @type {number} */ | |
| index = 0; | |
| var e; | |
| for (;e = v[index];index++) { | |
| click(e, index, data); | |
| } | |
| }; | |
| enter = cb(enter, "cbACB"); | |
| /** | |
| * @param {string} value | |
| * @param {string} obj | |
| * @param {Array} data | |
| * @return {?} | |
| */ | |
| var select = function(value, obj, data) { | |
| return function(e) { | |
| if (e) { | |
| if (e = e.target || e.srcElement) { | |
| if (3 == e.nodeType) { | |
| e = e.parentNode; | |
| } | |
| if (!focus(e)) { | |
| if (data) { | |
| execCommand(data); | |
| } | |
| value += "&nb=2"; | |
| if ("_blank" == obj) { | |
| window.open(value); | |
| } else { | |
| /** @type {string} */ | |
| window.top.location.href = value; | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| }; | |
| select = cb(select, "cbBCH"); | |
| /** | |
| * @param {Object} elm | |
| * @return {?} | |
| */ | |
| var focus = function(elm) { | |
| for (;elm && !addClass(elm, "adStd");) { | |
| if ("a" == elm.nodeName.toLowerCase()) { | |
| return true; | |
| } | |
| elm = elm.parentNode; | |
| } | |
| return false; | |
| }; | |
| focus = cb(focus, "cbLTOCH"); | |
| } | |
| /** | |
| * @param {Node} node | |
| * @param {boolean} code | |
| * @return {?} | |
| */ | |
| var highlight = function(node, code) { | |
| if (!node) { | |
| return false; | |
| } | |
| if (3 == node.nodeType && (node.nodeValue && (code && (node.nodeValue += " ..."), 4 < node.nodeValue.length))) { | |
| var text = node.nodeValue; | |
| /** @type {number} */ | |
| var availableTextChars = node.nodeValue.length - 1; | |
| if (text.length > availableTextChars) { | |
| /** @type {string} */ | |
| text = text.substring(0, availableTextChars - 3) + "..."; | |
| } | |
| node.nodeValue = text; | |
| return false; | |
| } | |
| text = node.textContent || node.innerText; | |
| if (!text || text.length <= (code ? 0 : 4)) { | |
| return node.parentNode.removeChild(node), true; | |
| } | |
| text = highlight(node.lastChild, code); | |
| for (;text;) { | |
| text = highlight(node.lastChild, text); | |
| } | |
| return false; | |
| }; | |
| /** | |
| * @param {Element} node | |
| * @param {number} h | |
| * @return {undefined} | |
| */ | |
| var hide = function(node, h) { | |
| if (!(0 >= h)) { | |
| var cnl = node.innerHTML.length; | |
| for (;0 < cnl && node.offsetHeight > h;cnl--) { | |
| /** @type {Element} */ | |
| var startNode = node; | |
| var code = highlight(startNode.lastChild, false); | |
| for (;code;) { | |
| code = highlight(startNode.lastChild, code); | |
| } | |
| } | |
| if (node.offsetHeight > h) { | |
| /** @type {string} */ | |
| node.innerHTML = ""; | |
| } | |
| } | |
| }; | |
| /** | |
| * @param {Element} node | |
| * @param {number} opt_attributes | |
| * @return {undefined} | |
| */ | |
| var slide = function(node, opt_attributes) { | |
| var whiteSpace = node.style.whiteSpace; | |
| var wordWrap = node.style.wordWrap; | |
| /** @type {string} */ | |
| node.style.whiteSpace = "nowrap"; | |
| /** @type {string} */ | |
| node.style.wordWrap = "normal"; | |
| var height = node.offsetHeight; | |
| node.style.whiteSpace = whiteSpace; | |
| node.style.wordWrap = wordWrap; | |
| hide(node, height * opt_attributes + opt_attributes); | |
| }; | |
| /** | |
| * @param {Element} a | |
| * @param {undefined} y | |
| * @param {?} content | |
| * @param {?} xhtml | |
| * @param {?} c | |
| * @return {undefined} | |
| */ | |
| var f = function(a, y, content, xhtml, c) { | |
| var h = a.offsetHeight; | |
| if (!(h <= y)) { | |
| var t = runTest(a); | |
| a = runTest(t); | |
| /** @type {string} */ | |
| t.style.overflow = "hidden"; | |
| /** @type {string} */ | |
| t.style.position = "relative"; | |
| /** @type {Element} */ | |
| var e = document.createElement("div"); | |
| try { | |
| /** @type {string} */ | |
| e.style.backgroundImage = "linear-gradient(to bottom, rgba(255,255,255,0), #ffffff)"; | |
| } catch (p) { | |
| } | |
| /** @type {string} */ | |
| e.style.height = "30px"; | |
| /** @type {string} */ | |
| e.style.position = "absolute"; | |
| /** @type {number} */ | |
| e.style.bottom = 0; | |
| /** @type {string} */ | |
| e.style.width = "100%"; | |
| /** @type {string} */ | |
| e.style.pointerEvents = "none"; | |
| t.appendChild(e); | |
| /** @type {Element} */ | |
| var element = document.createElement("div"); | |
| element.innerHTML = content; | |
| /** @type {string} */ | |
| element.className = "expander"; | |
| /** @type {string} */ | |
| element.style.textAlign = "center"; | |
| element.style.color = c; | |
| /** @type {string} */ | |
| element.style.cursor = "pointer"; | |
| /** @type {string} */ | |
| element.style.fontSize = "11px"; | |
| a.appendChild(element); | |
| /** @type {number} */ | |
| var bottom = y - element.offsetHeight; | |
| /** @type {string} */ | |
| t.style.height = bottom + "px"; | |
| /** @type {number} */ | |
| var i = h - bottom; | |
| /** @type {(HTMLElement|null)} */ | |
| var n = document.getElementById("adBlock"); | |
| /** | |
| * @param {number} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| var init = function(dataAndEvents) { | |
| /** @type {(null|number)} */ | |
| var h = n ? n.offsetHeight : null; | |
| /** @type {string} */ | |
| t.style.height = bottom + dataAndEvents * i + "px"; | |
| if (0.8 <= dataAndEvents) { | |
| element.innerHTML = xhtml; | |
| /** @type {string} */ | |
| e.style.background = ""; | |
| } | |
| if (n) { | |
| if (h) { | |
| if (n.offsetHeight > h) { | |
| if (n) { | |
| if (0.2 >= dataAndEvents) { | |
| /** @type {string} */ | |
| n.style.paddingBottom = "4px"; | |
| } | |
| } | |
| if (n && 0.98 <= dataAndEvents) { | |
| /** @type {string} */ | |
| n.style.paddingBottom = "1px"; | |
| } else { | |
| if (n && 0.97 <= dataAndEvents) { | |
| /** @type {string} */ | |
| n.style.paddingBottom = "2px"; | |
| } else { | |
| if (n) { | |
| if (0.96 <= dataAndEvents) { | |
| /** @type {string} */ | |
| n.style.paddingBottom = "3px"; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (n) { | |
| if (1 == dataAndEvents) { | |
| /** @type {string} */ | |
| n.style.paddingBottom = ""; | |
| } | |
| } | |
| if (window.onresize) { | |
| window.onresize(); | |
| } | |
| }; | |
| /** | |
| * @param {number} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| var drawScroll = function(dataAndEvents) { | |
| /** @type {string} */ | |
| t.style.height = h - dataAndEvents * i + "px"; | |
| if (0.2 >= dataAndEvents) { | |
| try { | |
| /** @type {string} */ | |
| e.style.backgroundImage = "linear-gradient(to bottom, rgba(255,255,255,0), #ffffff)"; | |
| } catch (b) { | |
| } | |
| } | |
| if (0.8 <= dataAndEvents) { | |
| element.innerHTML = content; | |
| } | |
| if (window.onresize) { | |
| window.onresize(); | |
| } | |
| }; | |
| var memory = new report(400); | |
| addEvent(element, "click", function() { | |
| if (memory.rb || element.innerHTML != content) { | |
| if (!memory.rb) { | |
| /** @type {function (number): undefined} */ | |
| memory.Cc = drawScroll; | |
| tick(memory); | |
| } | |
| } else { | |
| /** @type {function (number): undefined} */ | |
| memory.Cc = init; | |
| tick(memory); | |
| } | |
| }); | |
| } | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Window} b | |
| * @param {?} message | |
| * @param {?} xhtml | |
| * @return {undefined} | |
| */ | |
| var assertEquals = function(b, message, xhtml) { | |
| slide(parseFloat(b.document, message), 2); | |
| addEvent(b, "resize", function() { | |
| var e = parseFloat(b.document, message); | |
| e.innerHTML = xhtml; | |
| slide(e, 2); | |
| }); | |
| }; | |
| /** | |
| * @param {?} escape | |
| * @param {string} i | |
| * @param {?} page | |
| * @param {?} val | |
| * @param {?} index | |
| * @param {?} data | |
| * @param {string} list | |
| * @param {?} nc | |
| * @param {?} x | |
| * @param {string} n | |
| * @param {?} error | |
| * @param {?} selection | |
| * @param {?} v | |
| * @param {Function} row_id | |
| * @return {undefined} | |
| */ | |
| var item = function(escape, i, page, val, index, data, list, nc, x, n, error, selection, v, row_id) { | |
| this.D = min(); | |
| this.J = escape; | |
| /** @type {string} */ | |
| this.O = i; | |
| this.ib = min(); | |
| this.N = page; | |
| this.cc = val; | |
| this.pb = index; | |
| this.ia = data; | |
| /** @type {string} */ | |
| this.Xb = list; | |
| this.nc = nc; | |
| this.kc = x; | |
| /** @type {string} */ | |
| this.ec = n; | |
| this.Ga = error; | |
| this.sb = selection; | |
| this.H = v; | |
| this.$ = row_id || loop; | |
| this.Ab = min(); | |
| this.va = min(); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| item.prototype.f = function() { | |
| var value = getStyle({ | |
| elements : [this.ia.f(), this.N.f()] | |
| }); | |
| var elements = getStyle({ | |
| elements : [this.J.f(), this.pb.f()] | |
| }); | |
| var arr = this.cc ? value : this.O.f(); | |
| var computed = this.cc ? this.O.f() : value; | |
| value = this.$({ | |
| Ba : elements, | |
| Ca : arr, | |
| od : computed, | |
| Bc : this.D, | |
| Qb : this.ib, | |
| ea : this.Xb, | |
| ga : this.nc, | |
| jc : this.kc, | |
| dc : this.ec, | |
| I : this.Ga, | |
| L : this.sb, | |
| yc : false, | |
| g : this.H | |
| }); | |
| elements = this.$({ | |
| Ba : elements, | |
| Ca : arr, | |
| od : computed, | |
| Bc : this.Ab, | |
| Qb : this.va, | |
| I : this.Ga, | |
| L : this.sb, | |
| yc : true, | |
| g : this.H | |
| }); | |
| return getStyle({ | |
| elements : [value, elements] | |
| }); | |
| }; | |
| /** | |
| * @param {Window} input | |
| * @return {undefined} | |
| */ | |
| item.prototype.W = function(input) { | |
| var html = parseFloat(input.document, this.ib).innerHTML; | |
| assertEquals(input, this.ib, html); | |
| if (this.va) { | |
| html = parseFloat(input.document, this.va).innerHTML; | |
| assertEquals(input, this.va, html); | |
| } | |
| if (this.Ab) { | |
| addEvent(input, "resize", link(input, this.D, this.Ab)); | |
| } | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| item.prototype.G = function(d) { | |
| return this.J.G(d).concat(this.N.G(d)); | |
| }; | |
| /** | |
| * @param {?} key | |
| * @param {string} module | |
| * @param {?} node | |
| * @param {?} exports | |
| * @param {?} newValue | |
| * @param {string} sel | |
| * @param {string} nc | |
| * @param {?} force | |
| * @param {string} localScope | |
| * @param {?} scope | |
| * @param {?} blank | |
| * @param {?} t | |
| * @param {?} code | |
| * @return {undefined} | |
| */ | |
| var a = function(key, module, node, exports, newValue, sel, nc, force, localScope, scope, blank, t, code) { | |
| this.D = min(); | |
| this.J = key; | |
| /** @type {string} */ | |
| this.O = module; | |
| this.ib = min(); | |
| this.N = node; | |
| this.pb = exports; | |
| this.ia = newValue; | |
| /** @type {string} */ | |
| this.Xb = sel; | |
| /** @type {string} */ | |
| this.nc = nc; | |
| this.kc = force; | |
| /** @type {string} */ | |
| this.ec = localScope; | |
| this.Ga = scope; | |
| this.sb = blank; | |
| this.H = t; | |
| this.$ = code || push; | |
| this.Ab = min(); | |
| this.va = min(); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| a.prototype.f = function() { | |
| var elements = getStyle({ | |
| elements : [this.J.f(), this.pb.f()] | |
| }); | |
| var style = getStyle({ | |
| elements : [this.ia.f(), " ", this.N.f(), " ", this.O.f()] | |
| }); | |
| var element = this.$({ | |
| Ba : elements, | |
| Ca : style, | |
| Bc : this.D, | |
| Qb : this.ib, | |
| ea : this.Xb, | |
| ga : this.nc, | |
| jc : this.kc, | |
| dc : this.ec, | |
| I : this.Ga, | |
| L : this.sb, | |
| yc : false, | |
| g : this.H | |
| }); | |
| elements = this.$({ | |
| Ba : elements, | |
| Ca : style, | |
| Bc : this.Ab, | |
| Qb : this.va, | |
| I : this.Ga, | |
| L : this.sb, | |
| yc : true, | |
| g : this.H | |
| }); | |
| return getStyle({ | |
| elements : [element, elements] | |
| }); | |
| }; | |
| /** | |
| * @param {Window} input | |
| * @return {undefined} | |
| */ | |
| a.prototype.W = function(input) { | |
| var html = parseFloat(input.document, this.ib).innerHTML; | |
| assertEquals(input, this.ib, html); | |
| if (this.va) { | |
| html = parseFloat(input.document, this.va).innerHTML; | |
| assertEquals(input, this.va, html); | |
| } | |
| if (this.Ab) { | |
| addEvent(input, "resize", link(input, this.D, this.Ab)); | |
| } | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| a.prototype.G = function(d) { | |
| return this.J.G(d).concat(this.N.G(d)); | |
| }; | |
| /** | |
| * @param {?} tileHeight | |
| * @param {string} book | |
| * @param {?} inputStr | |
| * @param {?} author | |
| * @param {?} image | |
| * @param {string} nc | |
| * @param {?} dataAndEvents | |
| * @param {string} path | |
| * @param {?} tileWidth | |
| * @param {?} PREFIX | |
| * @param {?} o | |
| * @return {undefined} | |
| */ | |
| var Type = function(tileHeight, book, inputStr, author, image, nc, dataAndEvents, path, tileWidth, PREFIX, o) { | |
| this.J = tileHeight; | |
| /** @type {string} */ | |
| this.O = book; | |
| this.N = inputStr; | |
| this.ia = author; | |
| this.Xb = image; | |
| /** @type {string} */ | |
| this.nc = nc; | |
| this.kc = dataAndEvents; | |
| /** @type {string} */ | |
| this.ec = path; | |
| this.Ga = tileWidth; | |
| this.sb = PREFIX; | |
| this.$ = o || ready; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Type.prototype.f = function() { | |
| var style = getStyle({ | |
| elements : [this.ia.f(), " ", this.J.f(), " "] | |
| }); | |
| var elem_styles = getStyle({ | |
| elements : [" ", this.O.f(), " ", this.N.f()] | |
| }); | |
| return this.$({ | |
| Wi : style, | |
| Xi : elem_styles, | |
| ea : this.Xb, | |
| ga : this.nc, | |
| jc : this.kc, | |
| dc : this.ec, | |
| I : this.Ga, | |
| L : this.sb | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| Type.prototype.G = function(d) { | |
| return this.J.G(d).concat(this.N.G(d)); | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {string} data | |
| * @param {boolean} recurring | |
| * @param {Object} o | |
| * @param {string} object | |
| * @param {string} type | |
| * @return {undefined} | |
| */ | |
| var draw = function(data, recurring, o, object, type) { | |
| this.D = min(); | |
| /** @type {string} */ | |
| this.Lc = data; | |
| /** @type {boolean} */ | |
| this.caps_ = recurring; | |
| /** @type {Object} */ | |
| this.o = o; | |
| this.C = type || onReadyStateChange; | |
| object = data.ctc && data.ctc.coa ? new R(func(data.tr.c), data.ctc.u, o.j, data.tr.rtl, o.g, data.ctc.ph, !!data.ctc.ht, data.ctc.d, void 0) : new SwaggerOperation(func(data.tr.c), data.u, o.j, data.tr.rtl, o.g, void 0); | |
| var options; | |
| options = new Ellipse(func(data.v), data.u, o.j, o.g, void 0); | |
| type = func(data.l1r && data.l1r.c ? data.l1r.c : ""); | |
| var actual = func(data.l2r && data.l2r.c ? data.l2r.c : ""); | |
| var attrs = data.l1r && data.l1r.rtl ? data.l1r.rtl : false; | |
| type = o.ni && !o.cb ? new Color(type, actual, attrs, o.g, data.u, o.j, void 0) : new Event(type, actual, attrs, o.g, void 0); | |
| actual = data.adIconUrl && "title-right" == data.adIconLocation ? new Player(data.adIconUrl, data.img ? loaded : parseStartTag) : result; | |
| if (data.ctd) { | |
| options = "" != data.ctd.as ? new Ellipse(data.ctd.as, data.u, o.j, o.g) : options; | |
| if (attrs = data.ctd.iu) { | |
| /** @type {string} */ | |
| var ref = data.ctd.ih > data.ctd.iw ? "height" : "width"; | |
| var u = data.u; | |
| var radius = data.ctd.ir; | |
| } else { | |
| radius = u = ref = void 0; | |
| } | |
| var r = data.ctd.r; | |
| var nr = data.ctd.nr; | |
| switch(o.rc) { | |
| case 1: | |
| object = new Type(object, type, options, o.Gb, attrs, ref, u, radius, r, nr); | |
| break; | |
| case 2: | |
| object = new a(object, type, options, actual, o.Gb, attrs, ref, u, radius, r, nr, o.g); | |
| break; | |
| default: | |
| object = new item(object, type, options, o.dg, actual, o.Gb, attrs, ref, u, radius, r, nr, o.g); | |
| } | |
| } else { | |
| switch(o.rc) { | |
| case 1: | |
| object = new Item(object, type, options, o.Gb); | |
| break; | |
| case 2: | |
| object = new LonLat(object, type, options, actual, o.Gb); | |
| break; | |
| default: | |
| object = new anonymous(object, type, options, o.dg, actual, o.Gb); | |
| } | |
| } | |
| this.ta = new Validator(object, data, o); | |
| /** @type {Array} */ | |
| data = recurring.isHighendMobile ? recurring.reviewUnderSellerRating ? [build(data, o), val(data, o), animation(data, o), validate(data, o), calc(data, o), getter(data, o), h(data, o)] : [animation(data, o), build(data, o), val(data, o), validate(data, o), calc(data, o), getter(data, o), h(data, o)] : recurring.reviewUnderSellerRating ? [validate(data, o), calc(data, o), build(data, o), val(data, o), animation(data, o), getter(data, o)] : [animation(data, o), validate(data, o), calc(data, o), | |
| build(data, o), val(data, o), getter(data, o)]; | |
| this.Qc = new Float32Array(data); | |
| this.Mf = min(); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| draw.prototype.f = function() { | |
| var attributes = { | |
| uid : this.D, | |
| B : this.Lc, | |
| j : this.o.j, | |
| Th : this.ta.f(), | |
| ai : this.Qc.f(), | |
| Vd : this.o.cb || this.o.Vd, | |
| Sh : this.Mf, | |
| Uj : null, | |
| Tg : null | |
| }; | |
| return this.C(attributes); | |
| }; | |
| /** | |
| * @param {Window} d | |
| * @param {Object} opts | |
| * @return {undefined} | |
| */ | |
| draw.prototype.W = function(d, opts) { | |
| var memory = this.ta.G(d.document).concat(this.Qc.G(d.document)); | |
| /** @type {(HTMLElement|null)} */ | |
| var current = document.getElementById(this.Mf); | |
| if (current) { | |
| memory.push(new Resource(current, "&nb=18")); | |
| } | |
| current = parseFloat(d.document, this.D); | |
| for (;null != current && !addClass(current, "adUnit_js");) { | |
| current = current.parentElement; | |
| } | |
| if (current) { | |
| refresh(memory, current, parseFloat(d.document, "adBlock"), opts); | |
| } | |
| if (this.ta.W) { | |
| this.ta.W(d, opts); | |
| } | |
| if (this.Qc.W) { | |
| this.Qc.W(d, opts); | |
| } | |
| }; | |
| /** | |
| * @param {?} yy | |
| * @param {string} yylineno | |
| * @param {?} yyleng | |
| * @param {?} yystate | |
| * @param {?} yytext | |
| * @param {?} YY_START | |
| * @param {Function} $avoiding_name_collisions | |
| * @return {undefined} | |
| */ | |
| var anonymous = function(yy, yylineno, yyleng, yystate, yytext, YY_START, $avoiding_name_collisions) { | |
| this.J = yy; | |
| /** @type {string} */ | |
| this.O = yylineno; | |
| this.N = yyleng; | |
| this.cc = yystate; | |
| this.pb = yytext; | |
| this.ia = YY_START; | |
| this.$ = $avoiding_name_collisions || use; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| anonymous.prototype.f = function() { | |
| var cc = getStyle({ | |
| elements : [this.ia.f(), this.N.f()] | |
| }); | |
| return this.$({ | |
| Ba : getStyle({ | |
| elements : [this.J.f(), this.pb.f()] | |
| }), | |
| Ca : this.cc ? cc : this.O.f(), | |
| od : this.cc ? this.O.f() : cc | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| anonymous.prototype.G = function(d) { | |
| return this.J.G(d).concat(this.N.G(d).concat(this.O.G(d))); | |
| }; | |
| /** | |
| * @param {?} dataAndEvents | |
| * @param {?} lon | |
| * @param {?} lat | |
| * @param {?} deepDataAndEvents | |
| * @param {?} ignoreMethodDoesntExist | |
| * @param {?} alt | |
| * @return {undefined} | |
| */ | |
| var LonLat = function(dataAndEvents, lon, lat, deepDataAndEvents, ignoreMethodDoesntExist, alt) { | |
| this.J = dataAndEvents; | |
| this.O = lon; | |
| this.N = lat; | |
| this.pb = deepDataAndEvents; | |
| this.ia = ignoreMethodDoesntExist; | |
| this.$ = alt || limit; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| LonLat.prototype.f = function() { | |
| var style = getStyle({ | |
| elements : [this.J.f(), this.pb.f()] | |
| }); | |
| var elem_styles = getStyle({ | |
| elements : [this.ia.f(), this.N.f(), this.O.f()] | |
| }); | |
| return this.$({ | |
| Ba : style, | |
| Ca : elem_styles | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| LonLat.prototype.G = function(d) { | |
| return this.J.G(d).concat(this.N.G(d).concat(this.O.G(d))); | |
| }; | |
| /** | |
| * @param {?} opt_renderer | |
| * @param {?} notCreate | |
| * @param {?} quantity | |
| * @param {?} field | |
| * @return {undefined} | |
| */ | |
| var Item = function(opt_renderer, notCreate, quantity, field) { | |
| this.J = opt_renderer; | |
| this.O = notCreate; | |
| this.N = quantity; | |
| this.ia = field; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Item.prototype.f = function() { | |
| return getStyle({ | |
| elements : [this.ia.f(), this.J.f(), this.O.f(), func("<wbr>"), this.N.f()] | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| Item.prototype.G = function(d) { | |
| return this.J.G(d).concat(this.N.G(d).concat(this.O.G(d))); | |
| }; | |
| /** | |
| * @param {?} el | |
| * @param {?} model | |
| * @param {?} data | |
| * @param {?} featureId | |
| * @return {undefined} | |
| */ | |
| var Validator = function(el, model, data, featureId) { | |
| this.ta = el; | |
| this.Lc = model; | |
| this.xd = data; | |
| this.$ = featureId || onSuccess; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Validator.prototype.f = function() { | |
| var code = this.ta.f(); | |
| var right = this.xd; | |
| var items = contains(this.Lc, right); | |
| if (1 == items.length) { | |
| items = items[0].f(); | |
| /** @type {string} */ | |
| var direction = (right = right.g) ? "right" : "left"; | |
| /** @type {string} */ | |
| code = "" + ('<table style="border-collapse: collapse; border-spacing: 0; width: 100%; table-layout: fixed;"><tr><td style="vertical-align: middle; padding-' + start(toString(right ? "left" : "right")) + ": " + start(toString(12)) + 'px;">' + $(code) + '</td><td style="width: ' + start(toString(78)) + "px; vertical-align: middle;" + ("border-" + start(toString(direction)) + ": 1px solid " + start(toString("#DDDDDD"))) + '">' + $(items) + "</td></tr></table>"); | |
| code = func(code); | |
| } | |
| return this.$({ | |
| content : code, | |
| url : this.Lc.u, | |
| cb : this.xd.cb, | |
| j : this.xd.j, | |
| rc : this.xd.rc | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| Validator.prototype.G = function(d) { | |
| return this.ta.G(d); | |
| }; | |
| /** | |
| * @param {Window} d | |
| * @param {Object} opts | |
| * @return {undefined} | |
| */ | |
| Validator.prototype.W = function(d, opts) { | |
| if (this.ta.W) { | |
| this.ta.W(d, opts); | |
| } | |
| }; | |
| /** | |
| * @param {?} consumes | |
| * @param {?} errorResponses | |
| * @param {?} R | |
| * @param {?} responseClass | |
| * @param {?} responseMessages | |
| * @param {Function} authorizations | |
| * @return {undefined} | |
| */ | |
| var SwaggerOperation = function(consumes, errorResponses, R, responseClass, responseMessages, authorizations) { | |
| this.D = min(); | |
| this.hf = consumes; | |
| this.ma = errorResponses; | |
| this.R = R; | |
| this.Be = responseClass; | |
| this.H = responseMessages; | |
| this.C = authorizations || exports; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| SwaggerOperation.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| text : { | |
| c : this.hf, | |
| rtl : this.Be | |
| }, | |
| url : this.ma, | |
| j : this.R, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @return {?} | |
| */ | |
| SwaggerOperation.prototype.G = function(v23) { | |
| return[new Resource(parseFloat(v23, this.D), "&nb=0")]; | |
| }; | |
| /** | |
| * @param {?} n | |
| * @param {?} a | |
| * @param {string} r | |
| * @param {?} err | |
| * @param {string} t | |
| * @param {?} mod | |
| * @param {string} m | |
| * @param {string} extra | |
| * @param {Function} er | |
| * @return {undefined} | |
| */ | |
| var R = function(n, a, r, err, t, mod, m, extra, er) { | |
| this.D = min(); | |
| this.hf = n; | |
| this.ma = a; | |
| /** @type {string} */ | |
| this.R = r; | |
| this.Be = err; | |
| /** @type {string} */ | |
| this.H = t; | |
| this.sj = mod; | |
| /** @type {string} */ | |
| this.Pi = m; | |
| this.wi = extra || ""; | |
| this.C = er || test; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| R.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| text : { | |
| c : this.hf, | |
| rtl : this.Be | |
| }, | |
| rj : this.sj, | |
| cg : this.wi, | |
| url : this.ma, | |
| j : this.R, | |
| g : this.H, | |
| Oi : this.Pi | |
| }); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @return {?} | |
| */ | |
| R.prototype.G = function(v23) { | |
| return[new Resource(parseFloat(v23, this.D), "&nb=0")]; | |
| }; | |
| /** | |
| * @param {?} radiusX | |
| * @param {?} radiusY | |
| * @param {?} R | |
| * @param {?} y | |
| * @param {Function} x | |
| * @return {undefined} | |
| */ | |
| var Ellipse = function(radiusX, radiusY, R, y, x) { | |
| this.D = min(); | |
| this.N = radiusX; | |
| this.ma = radiusY; | |
| this.R = R; | |
| this.H = y; | |
| this.C = x || execute; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Ellipse.prototype.f = function() { | |
| return this.C({ | |
| uid : this.D, | |
| text : this.N, | |
| url : this.ma, | |
| j : this.R, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @return {?} | |
| */ | |
| Ellipse.prototype.G = function(v23) { | |
| return[new Resource(parseFloat(v23, this.D), "&nb=1")]; | |
| }; | |
| /** | |
| * @param {?} opt_target | |
| * @param {?} type | |
| * @param {?} target | |
| * @param {?} eventType | |
| * @param {Function} options | |
| * @return {undefined} | |
| */ | |
| var Event = function(opt_target, type, target, eventType, options) { | |
| this.ef = opt_target; | |
| this.gf = type; | |
| this.ze = target; | |
| this.H = eventType; | |
| this.C = options || flush; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Event.prototype.f = function() { | |
| return this.C({ | |
| ah : { | |
| c : this.ef, | |
| rtl : this.ze | |
| }, | |
| bh : { | |
| c : this.gf | |
| }, | |
| g : this.H | |
| }); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Event.prototype.G = function() { | |
| return[]; | |
| }; | |
| /** | |
| * @param {?} a | |
| * @param {?} green | |
| * @param {?} rgb | |
| * @param {?} b | |
| * @param {?} r | |
| * @param {string} R | |
| * @param {?} blue | |
| * @return {undefined} | |
| */ | |
| var Color = function(a, green, rgb, b, r, R, blue) { | |
| this.D = min(); | |
| this.ef = a; | |
| this.gf = green; | |
| this.ze = rgb; | |
| this.H = b; | |
| this.ma = r; | |
| /** @type {string} */ | |
| this.R = R; | |
| this.C = blue || write; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Color.prototype.f = function() { | |
| return this.C({ | |
| ah : { | |
| c : this.ef, | |
| rtl : this.ze | |
| }, | |
| bh : { | |
| c : this.gf | |
| }, | |
| g : this.H, | |
| uid : this.D, | |
| url : this.ma, | |
| j : this.R | |
| }); | |
| }; | |
| /** | |
| * @param {?} v23 | |
| * @return {?} | |
| */ | |
| Color.prototype.G = function(v23) { | |
| return[new Resource(parseFloat(v23, this.D), "&nb=7")]; | |
| }; | |
| /** | |
| * @param {?} n | |
| * @param {string} cb | |
| * @param {?} size | |
| * @param {string} errorcallback | |
| * @param {string} dirEntry | |
| * @param {Array} recursive | |
| * @param {string} inIt | |
| * @param {?} dataAndEvents | |
| * @param {?} g | |
| * @param {?} j | |
| * @param {?} buffer | |
| * @param {?} isText | |
| * @return {undefined} | |
| */ | |
| var _read = function(n, cb, size, errorcallback, dirEntry, recursive, inIt, dataAndEvents, g, j, buffer, isText) { | |
| this.rc = n; | |
| /** @type {string} */ | |
| this.cb = cb; | |
| this.ni = size; | |
| /** @type {string} */ | |
| this.Vd = errorcallback; | |
| /** @type {string} */ | |
| this.dg = dirEntry; | |
| /** @type {Array} */ | |
| this.Je = recursive; | |
| /** @type {string} */ | |
| this.Gb = inIt; | |
| this.ek = dataAndEvents; | |
| this.g = g; | |
| this.j = j; | |
| this.ij = buffer; | |
| this.Mj = isText; | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} buffer | |
| * @param {?} bigEndian | |
| * @return {undefined} | |
| */ | |
| var Buffer = function(buffer, bigEndian) { | |
| this.Mc = buffer; | |
| this.Rj = bigEndian; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Buffer.prototype.f = function() { | |
| /** @type {Array} */ | |
| var eventPath = []; | |
| /** @type {number} */ | |
| var l = 0; | |
| for (;l < this.Mc.length;l++) { | |
| eventPath.push(this.Mc[l].f()); | |
| } | |
| return this.Rj({ | |
| Bj : eventPath | |
| }); | |
| }; | |
| /** | |
| * @param {Window} d | |
| * @param {Object} opts | |
| * @return {undefined} | |
| */ | |
| Buffer.prototype.W = function(d, opts) { | |
| /** @type {number} */ | |
| var conditionIndex = 0; | |
| for (;conditionIndex < this.Mc.length;conditionIndex++) { | |
| this.Mc[conditionIndex].W(d, opts); | |
| } | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Object} o | |
| * @param {Object} node | |
| * @param {number} el | |
| * @param {string} d | |
| * @param {string} b | |
| * @return {undefined} | |
| */ | |
| var render = function(o, node, el, d, b) { | |
| var template = scale(d); | |
| var margin = _filter(d); | |
| var direction = template("type") || "ads"; | |
| var html = template("colorDomainLink", o.sellerFirstBoxLeft ? "#4272db" : o.linkColorSchemeVisUrlLinkColor || "#008000"); | |
| var frag = template("colorTitleLink", o.sellerFirstBoxLeft ? "#4272db" : o.linkColorSchemeTitleLinkColor || "#0000CC"); | |
| var size = d.width; | |
| size = size && "auto" != size ? size : "100%"; | |
| var tapOpts = { | |
| Eb : false, | |
| Gf : null, | |
| Rf : null | |
| }; | |
| if (d.verticalSpacing) { | |
| /** @type {number} */ | |
| var f = Math.min(d.verticalSpacing, 12) / 2; | |
| /** @type {boolean} */ | |
| tapOpts.Eb = true; | |
| /** @type {number} */ | |
| tapOpts.Gf = Math.floor(f); | |
| /** @type {number} */ | |
| tapOpts.Rf = Math.ceil(f); | |
| } | |
| f = (f = template("colorAdSeparator")) ? f : o.isHighendMobile || o.isTablet ? "#E6E6E6" : null; | |
| var result = template("colorAdBackground"); | |
| var t = template("colorAdBorder"); | |
| var eb = template("colorText"); | |
| var frag1 = template("colorBackground"); | |
| var ua = template("colorBorder"); | |
| var Uc = template("colorAttribution"); | |
| var Xc = template("colorPlusOnes"); | |
| var Yf = template("colorKeyword"); | |
| var Wc = template("colorLocation"); | |
| var T = template("colorAnnotation"); | |
| var optlist; | |
| /** @type {Array} */ | |
| optlist = [[0, 0, 0], [255, 255, 255]]; | |
| if (html) { | |
| var fn; | |
| fn = match(html); | |
| optlist = _get([parseInt(fn.substr(1, 2), 16), parseInt(fn.substr(3, 2), 16), parseInt(fn.substr(5, 2), 16)], optlist); | |
| optlist = serialize(optlist[0], optlist[1], optlist[2]); | |
| } else { | |
| /** @type {null} */ | |
| optlist = null; | |
| } | |
| o = { | |
| A : o, | |
| fi : size, | |
| Bb : tapOpts, | |
| Pb : f, | |
| Wf : result, | |
| La : t, | |
| eb : eb, | |
| Yc : frag, | |
| Vc : html, | |
| Xf : frag1, | |
| ua : ua, | |
| Uc : Uc, | |
| Xc : Xc, | |
| Yf : Yf, | |
| Wc : Wc, | |
| T : T, | |
| pi : optlist, | |
| fontFamily : template("fontFamily"), | |
| de : template("fontFamilyAttribution"), | |
| mb : template("fontSizeTitle"), | |
| Ra : template("fontSizeDescription"), | |
| Ub : template("fontSizeDomainLink"), | |
| Db : template("fontSizeAttribution"), | |
| ed : template("fontSizePlusOnes"), | |
| dd : template("fontSizeLocation"), | |
| M : template("fontSizeAnnotation"), | |
| Wj : template("titleBold"), | |
| ak : b, | |
| Ej : template("rolloverLinkBold"), | |
| Rg : template("rolloverLinkColor"), | |
| Qg : template("rolloverLinkBackgroundColor"), | |
| Fj : template("rolloverLinkUnderline"), | |
| Pg : template("rolloverAdBackgroundColor"), | |
| Ag : template("noTitleUnderline"), | |
| eh : translate(o), | |
| Oh : margin("adBorderSelections", "left"), | |
| If : margin("adBorderSelections", "right"), | |
| Ph : margin("adBorderSelections", "top"), | |
| Nh : margin("adBorderSelections", "bottom"), | |
| ci : margin("borderSelections", "left"), | |
| Sf : margin("borderSelections", "right"), | |
| di : margin("borderSelections", "top"), | |
| bi : margin("borderSelections", "bottom"), | |
| cb : equals(d, o), | |
| xg : template("lineHeightTitle"), | |
| Ce : template("lineHeightDescription"), | |
| wg : template("lineHeightDomainLink"), | |
| Pf : template("attributionSpacingBelow") | |
| }; | |
| if (template("adIconUrl")) { | |
| o.Jc = template("adIconWidth"); | |
| o.Jd = template("adIconHeight"); | |
| o.Kd = template("adIconLocation"); | |
| o.Jf = template("adIconSpacingAbove"); | |
| o.Lf = template("adIconSpacingBefore"); | |
| o.Kf = template("adIconSpacingAfter"); | |
| o.Rh = template("adIconSpacingBelow"); | |
| /** @type {boolean} */ | |
| o.Ld = true; | |
| } else { | |
| if (template("adIconPageUrl")) { | |
| o.Jc = template("adIconPageWidth"); | |
| o.Jd = template("adIconPageHeight"); | |
| o.Kd = template("adIconPageLocation"); | |
| o.Jf = template("adIconPageSpacingAbove"); | |
| o.Lf = template("adIconPageSpacingBefore"); | |
| o.Kf = template("adIconPageSpacingAfter"); | |
| /** @type {boolean} */ | |
| o.Ld = false; | |
| } | |
| } | |
| if ("relatedsearch" == direction) { | |
| /** @type {string} */ | |
| o.type = "relatedsearch"; | |
| o.Cb = template("columnSpacing"); | |
| o.kd = template("horizontalFlow"); | |
| o.ob = template("horizontalAlignment"); | |
| } | |
| var value; | |
| var scope; | |
| /** @type {string} */ | |
| direction = o.A.isRtl ? "right" : "left"; | |
| /** @type {string} */ | |
| d = o.A.isRtl ? "left" : "right"; | |
| /** @type {string} */ | |
| template = ""; | |
| /** @type {string} */ | |
| direction = "<style>body {" + (o.A.isHighendMobile ? "-webkit-text-size-adjust: 100%;" : "") + "color: " + (o.eb ? o.eb : "black") + "; font-family: " + (o.fk ? "'" + o.fk + "'," : "") + (o.fontFamily ? o.fontFamily : "arial") + ", sans-serif; font-size: " + (o.A.isHighendMobile || o.A.isTablet ? "14" : "12") + "px; width: " + o.fi + "; padding: 0px; margin: 0px;" + (o.ua && (o.Sf || o.If) ? "padding-right: 2px;" : "") + "}.ad {padding: 2px 0; margin: 0px; word-wrap: break-word;" + (o.Bb.Eb ? | |
| "padding-top: " + o.Bb.Gf + "px; padding-bottom: " + o.Bb.Rf + "px;" : o.A.isHighendMobile || o.A.isTablet ? "padding-top: 7px;" : "") + (o.Pb ? "border-bottom: 1px solid " + o.Pb + ";" : "") + "}" + (o.Pg ? ".a_:hover {background-color: " + o.Pg + ";}" : "") + ".ad.f {" + (o.Bb.Eb ? "padding-top:2px;" : "") + "}.ad.fr {" + (o.Bb.Eb ? "padding-top:2px;" : "") + "}.ad.l {" + (o.Bb.Eb ? "padding-bottom:2px;" : "") + (o.Pb ? "border-bottom: 0px;" : "") + "}.ad.lr {" + (o.Bb.Eb ? "padding-bottom:2px;" : | |
| "") + "}#adBlock b {" + (o.A.adbold ? "" : "font-weight: normal;") + (o.A.keywordColor && o.Yf ? "color: " + o.Yf + ";" : "") + "}.descText, .ctcCO {" + (o.Ra ? "font-size: " + o.Ra + "px;" : "") + "}.sr-div, .sl-table-ol td, .sl-table td, .c_ {" + (o.M ? "font-size: " + o.M + "px;" : o.Ra ? "font-size: " + o.Ra + "px;" : "") + "}" + (o.Ce || (o.A.isHighendMobile || o.A.isTablet) ? ".descText {line-height: " + (o.Ce ? o.Ce + "px" : "1.5em") + ";}" : "") + ".a_ {padding: 4px 4px; position: relative;" + | |
| (o.Wf ? "background-color: " + o.Wf + ";" : "") + (o.La && o.Oh ? "border-left: 1px solid " + o.La + ";" : "") + (o.La && o.If ? "border-right: 1px solid " + o.La + ";" : "") + (o.La && o.Ph ? "border-top: 1px solid " + o.La + ";" : "") + (o.La && o.Nh ? "border-bottom: 1px solid " + o.La + ";" : "") + "}.ad span {_width: 99%;}" + (o.cb ? ".adStd {cursor: pointer; width: 100%;}" : "") + "#adBlock {background: #FFFFFF none repeat scroll 0 0; margin: 0; padding: 0;" + (o.Xf ? "background-color: " + | |
| o.Xf + ";" : "") + (o.ua && o.ci ? "border-left: 1px solid " + o.ua + ";" : "") + (o.ua && o.Sf ? "border-right: 1px solid " + o.ua + ";" : "") + (o.ua && o.di ? "border-top: 1px solid " + o.ua + ";" : "") + (o.ua && o.bi ? "border-bottom: 1px solid " + o.ua + ";" : "") + "}#adBlock h2 {font-size: " + (o.Db ? o.Db : o.A.isTablet ? "15" : "13") + "px; font-weight: normal;" + (o.Pf ? "padding-bottom: " + o.Pf + "px;" : "padding: 0;") + "margin: 0;" + (o.de || o.jh ? "font-family: " + (o.jh ? | |
| "'" + o.jh + "'," : "") + (o.de ? o.de + "," : "") + " sans-serif;" : "") + (o.A.isCse ? "text-align: " + direction + ";" : "") + "}#adBlock span.lhHeader {margin: 3px 4px 0;}#adBlock span.rhHeader {margin: 0 4px; float: " + d + ";" + (o.A.isHighendMobile ? "display: inline;" : "") + "position: relative; z-index: 1;}#adBlock h2 a, #adBlock h2 {color: " + (o.Uc ? o.Uc : "#676767") + "; text-decoration: none;}.titleLink, .sl-table a, .sl-table-ol a, .c_ a {color: " + o.Yc + ";}.titleLink, .ctcT a {" + | |
| (o.mb ? "font-size: " + o.mb + "px;" : o.A.isHighendMobile ? "font-size: 18px;" : "") + "font-weight: " + (o.Wj ? "bold" : "normal") + ";}.titleLink {" + (o.ak ? innerHeight() : "") + "line-height: " + (o.xg ? o.xg + "px" : "1.4em") + ";" + (o.Ag ? "text-decoration: none;" : "") + (o.eh ? "letter-spacing: " + o.eh + ";" : "") + "margin: 0; padding: 0;}" + (o.Fj ? ".titleLink:hover, .domainLink:hover, .sr-rl:hover {text-decoration: underline;}a {text-decoration: none;}" : "") + "h2 a:hover {color: " + | |
| (o.Uc ? o.Uc : "#676767") + "; text-decoration: none; font-weight: normal; background-color: transparent;}.domainLink {" + (o.wg ? "line-height: " + o.wg + "px;" : o.A.isHighendMobile || o.A.isTablet ? "line-height: 1.5em;" : "") + "color: " + o.Vc + "; font-style: normal; font-weight: normal;" + (o.Ub ? "font-size: " + o.Ub + "px;" : "") + "text-decoration: none;}.invisible {display: none;}.adStd.oneLine .descText {margin: 0 4px;}.adStd.twoLine .domainLink {margin-" + d + ": 8px;}.textLink {color: " + | |
| (o.eb ? o.eb : "black") + "; text-decoration: none;}.individualLabel {background-color: " + o.Vc + ";" + (o.Ub ? "font-size: " + o.Ub + "px;" : "") + "color: " + o.pi + "; border-radius: 2px; padding: 0 2px; margin-" + d + ": 3px; vertical-align: baseline;}.sl-table, .c_ {visibility: hidden; margin-top: " + (o.A.isHighendMobile ? "0px" : "4px") + ";}.sl-table-ol a, .sl-table a, .c_ a {text-decoration: none;}.sl-table-ol td {vertical-align: top; padding: 0px;}.sl-table a:hover, .c_ a:hover, .sl-table-ol a:hover {text-decoration: underline;}.sl-table td {vertical-align: top; padding: 0px;}.sl-right {" + | |
| (o.A.isHighendMobile ? "margin: 4px 0 4px; margin-" + direction + ": 8px;" : "margin-" + direction + ": 13px;") + "}.sl-left {" + (o.A.isHighendMobile ? "margin: 4px 0 4px; margin-" + d + ": 8px;" : "margin-" + direction + ": 12px;") + "}" + (o.A.isTablet ? "" : ".sl-table, .c_ {line-height: 1.5;}") + (o.A.isHighendMobile || o.A.isTablet ? ".sl.l {margin-" + d + ": 5px;}.sl.r {margin-" + direction + ": 5px;}" : "") + ".sitelinks {margin: 0; padding: 0; list-style-type: none; overflow: hidden;}.twoColSitelink {float: " + | |
| direction + "; width: 49%;}.sitelink-spacer {padding-" + d + ": 10px;}.sitelink-nowrap {white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: " + direction + ";}.plus-ones, .plus-ones a {text-decoration: none; color: " + (o.Xc ? o.Xc : o.T ? o.T : "#666666") + ";" + (o.ed ? "font-size: " + o.ed + "px;" : o.M ? "font-size: " + o.M + "px;" : "") + "}.plus-ones a:hover {text-decoration: underline;}.apareview, .reviewlink {" + (o.M ? "font-size: " + o.M + "px;" : "") + "color: " + | |
| (null == (value = o.T) ? "#666666" : value) + ";}.reviewlink {text-decoration: none;}.reviewlink:hover {text-decoration: underline;}.sr-div, .sr-rl {color: " + (o.T ? o.T : o.eb ? o.eb : "#666666") + ";}.sr-rl {text-decoration: none;}.sr-rl:hover {text-decoration: underline;}.sr-gt {color: " + (null == (value = o.T) ? "#777777" : value) + ";}.sr-gl {text-decoration: none;}.sr-gl:hover {text-decoration: underline;}.sr-p {padding-right: 62px;}.sr-nsc {display: inline; position: relative;}.sr-star {position: absolute;}.sr-number {color: #F99B00;}a:hover {" + | |
| (o.Ej ? "font-weight: bold;" : "") + (o.Rg ? "color: " + o.Rg + ";" : "") + (o.Qg ? "background-color: " + o.Qg + ";" : "") + "}.ctcLD {color: #676767; font-size: 80%;}.ctcI {width: 10px; height: 10px; margin-" + d + ": 1px;}.ctcCOI {width: 16px; height:16px;" + (o.A.isRtl ? '-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";' : "") + "}.ctcT {margin: 4px 0px 2px;}.ctcT a {" + (o.A.isHighendMobile && | |
| !o.Ag ? "text-decoration: underline;" : "text-decoration: none;") + "}.ctcCO {font-weight: bold;}.ctd-tbl {border-collapse: collapse; border-spacing: 0; width: 100%; table-layout: fixed;}.ctd-td-cr {vertical-align: top; padding-" + d + ": 12px; padding-" + direction + ": 6px;}.ctd-itd {width: 45px;}.ctd-i-mini {margin-top: 5px; margin-" + d + ": 1px; margin-bottom: 0px; margin-" + direction + ": 1px; width: 16px; height: 16px;}.ctd-il {width: 45px; height: 45px; display: block; margin: auto;}.ctd-ico {border:none; vertical-align: middle;}.ctd-ico-s {" + | |
| innerHeight() + "height: 100%; vertical-align: middle;}.ctd-ico.rc {border-radius:8px;}.ctd-ico.rc-mini {border-radius:4px;}.ctd-rate {color: #8d8d8d;" + innerHeight() + "font-weight: 300; margin-top:2px;}.ctd-rate-bg {background: url(//www.google.com/images/afs/mobile/ctd-star-off.png); height: 13px; width: 65px;" + innerHeight() + "vertical-align: top; white-space: nowrap;}.ctd-rate-fg {background: url(//www.google.com/images/afs/mobile/ctd-star-on.png) " + direction + " bottom; height: 13px;}.ctd-rate-txt {" + | |
| innerHeight() + "vertical-align: top; white-space: nowrap;}.ctd-rate-txt.inline {margin-" + direction + ": 4px; margin-" + d + ": 4px;}.ctd-usr-ico {background: url(//www.google.com/images/afs/mobile/ctd-user-icon.png); background-position: center; background-repeat: no-repeat;" + innerHeight() + "width: 13px; height: 13px; position: relative; top: 1px; margin-" + direction + ":2px; margin-" + d + ":4px;}" + (o.Jc && (o.Jd && o.A.customAdIcons) ? ".adIcon {visibility: visible; width: " + o.Jc + | |
| "px; height: " + o.Jd + "px; border: none;" + ("title-right" == o.Kd ? "padding-left: 2px; padding-right: 2px;" : "float: " + direction + "; margin-" + direction + ": " + (null == (value = o.Lf) ? 0 : value) + "px; margin-" + d + ": " + (null == (value = o.Kf) ? 4 : value) + "px; margin-top: " + (null == (value = o.Jf) ? 4 : value) + "px; margin-bottom: " + (null == (value = o.Rh) ? 0 : value) + "px;") + "}" + ("ad-left" == o.Kd ? (o.Ld ? ".adD, " : "") + ".a_ {display: block; overflow: hidden;" + | |
| (o.Ld ? "" : "margin-" + direction + ": " + o.Jc + "px;") + "}" : "") : "") + ".location {color: " + (o.Wc ? o.Wc : o.T ? o.T : "#666666") + ";" + (o.dd ? "font-size: " + o.dd + "px;" : o.M ? "font-size: " + o.M + "px;" : "") + "}" + (o.A.isHighendMobile || o.A.isTablet ? ".adStd {margin-bottom: " + (o.A.isTablet ? "5" : "10") + "px;}.sr-div, .sl-table-ol, .sl-left, .sl-right, .apareview {margin-bottom: 12px;}.location, .plus-ones, .l_, .m_ {margin-bottom: 10px;}" : "") + (o.A.isHighendMobile && | |
| o.A.uiExp1 ? ".adStd {clear: " + d + ";}" : "") + ".m_ {overflow: hidden; height: 1.2em; white-space: nowrap; text-overflow: ellipsis; word-wrap: normal; color: " + (null == (value = o.T) ? "#666666" : value) + ";" + (o.M ? "font-size: " + o.M + "px;" : "") + "}.n_ {white-space: normal;}.o_ {white-space: nowrap;}.p_ {width: 1em; height: 1em; vertical-align: text-bottom; margin-bottom: 1px; margin-" + d + ": 5px;}.l_ {color: " + (null == (value = o.T) ? "#666666" : value) + ";" + (o.M ? "font-size: " + | |
| o.M + "px;" : "") + "}" + ("relatedsearch" == o.type ? ".radlinkC {" + (o.kd && o.mb < o.Db ? "padding: " + (1 + (o.Db - o.mb)) + "px 4px;" : "padding: 1px 4px;") + "}.col {" + (o.ob ? "text-align:" + ("right" == direction && "left" == o.ob ? "right" : "right" == direction && "right" == o.ob ? "left" : o.ob) + ";" : "") + (o.kd ? "border-" + d + ": 1px solid " + o.Pb + ";" : "") + "vertical-align: top;" + (o.Cb ? o.kd && o.ob ? "center" == o.ob ? "padding-right: " + Math.floor(o.Cb / 2) + "px; padding-left: " + | |
| Math.floor(o.Cb / 2) + "px;" : "right" == o.ob ? "padding-" + direction + ": " + o.Cb + "px;" : "padding-" + d + ": " + o.Cb + "px;" : "padding-right: " + o.Cb + "px;" : "") + "}" + (o.kd ? "#adBlock h2 {float: " + direction + "; line-height: 1.4em; vertical-align: top;" + (o.mb >= o.Db ? "padding: " + (3 + (o.mb - o.Db)) + "px 4px;" : "padding: 3px 4px;") + "}.ad {border-bottom: none;}.col.l {border-" + d + ": none;}" : "#adBlock h2 {text-align: " + direction + ";}") : "") + ".raiDiv {margin-bottom: 20px;}.raiImg {margin-right: 5px; margin-top: 10px; margin-bottom: 0px; border: 1px solid #CCCCCC;}.nowrap {white-space: nowrap;}"; | |
| /** @type {string} */ | |
| d = (value = o.A.isRtl) ? "right" : "left"; | |
| /** @type {string} */ | |
| value = "" + (".buttonsWrapper {margin: 10px 0 13px; white-space: nowrap;}.inlineButton {" + parent(innerHeight()) + "box-sizing: border-box; text-align: center; border-" + $(d) + ": 1px solid #DDDDDD; vertical-align: top;}.inlineButton.firstButton {border-" + $(d) + ": none;}.button {text-align: center;}.buttonImageWrapper {margin-top: 10px; line-height: 0;}.buttonTextWrapper {margin-top: 7px;}.buttonText {text-decoration: none; color: #5897F1; font-size: 12px;}" + (value ? '.buttonImage {-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";}' : | |
| "")); | |
| value = func(value); | |
| /** @type {string} */ | |
| value = direction + value; | |
| /** @type {string} */ | |
| direction = o.A.sellerFirstBoxLeft ? ".sfblAd {padding: 17px 0;}.sfblAd.notLast {border-bottom: 1px solid " + parent(null == (scope = o.Pb) ? "#E1E1E1" : scope) + ";}.sfblNarrowPadder {padding-top: 4px;}.sfblFavicon {vertical-align: top; width: 16px; height: 16px; padding: 0 1px;}.sfblSellerNameWrapper {overflow: hidden; text-overflow: ellipsis; color: " + $(o.Vc) + "; font-size: " + parent(null == (scope = o.Ub) ? "13" : scope) + "px;}.sfblSellerNameLink {text-decoration: none; color: " + | |
| $(o.Vc) + ";}.sfblSellerNameLink:hover {text-decoration: underline;}.sfblSellerRatingsWrapper {padding-top: 3px;}.sfblTitleLink {font-size: " + parent(null == (scope = o.mb) ? "15" : scope) + "px; font-weight: bold; text-decoration: none; color: " + $(o.Yc) + ";}.sfblTitleLink:hover {text-decoration: underline;}.sfblDescriptionWrapper {padding-top: 3px; color: " + parent(null == (scope = o.eb) ? "#333333" : scope) + "; font-size: " + parent(null == (scope = o.Ra) ? "13" : scope) + "px;}.sfblSitelinksWrapper {padding-top: 4px; max-width: 450px; font-size: " + | |
| parent(null == (scope = o.Ra) ? "13" : scope) + "px;}.sfblSitelink {text-decoration: none; line-height: 17px; color: " + $(o.Yc) + ";}.sfblSitelink:hover {text-decoration: underline;}.plus-ones, .plus-ones a {color: " + (o.Xc ? $(o.Xc) : o.T ? $(o.T) : "#777777") + "; font-size: " + (o.ed ? $(o.ed) : o.M ? $(o.M) : "13") + "px; line-height: 1.3;}.location {color: " + (o.Wc ? $(o.Wc) : o.T ? $(o.T) : "#777777") + "; font-size: " + (o.dd ? $(o.dd) : o.M ? $(o.M) : "13") + "px; line-height: 1.3;}.apareview, .l_, .m_ {font-size: " + | |
| parent(null == (scope = o.M) ? "13" : scope) + "px; color: " + parent(null == (scope = o.T) ? "#777777" : scope) + "; line-height: 1.3;}.a_ {padding: 0;}" : ""; | |
| /** @type {string} */ | |
| scope = template + (value + direction + ".nonSfblSitelinksWrapper {" + (o.A.isHighendMobile || o.A.isTablet ? "margin-top: 0px;" : "margin-top: 4px;") + (o.A.isHighendMobile ? "" : "margin-left: 12px;") + "max-width: 450px;}.sitelinksTruncatedNarrow, .sitelinksTruncatedWide {" + (o.M ? "font-size: " + o.M + "px;" : o.Ra ? "font-size: " + o.Ra + "px;" : "") + "text-decoration: none; line-height: 1.5; color: " + o.Yc + ";" + (o.A.isHighendMobile || o.A.isTablet ? "margin-bottom: 12px;" : "margin-bottom: 0px;") + | |
| "word-wrap: normal;}.sitelinksTruncatedWide {" + (o.A.isTablet || o.A.isHighendMobile ? "line-height: normal;" : "") + "}</style>"); | |
| appendChild(scope, node, el); | |
| }; | |
| /** | |
| * @param {Object} obj | |
| * @param {string} array | |
| * @param {string} callback | |
| * @param {Array} key | |
| * @param {?} value | |
| * @param {?} elem | |
| * @param {Object} from | |
| * @param {number} el | |
| * @param {boolean} selector | |
| * @return {undefined} | |
| */ | |
| var first = function(obj, array, callback, key, value, elem, from, el, selector) { | |
| /** @type {string} */ | |
| obj = "<h2 " + (selector ? ' class="' + $(selector) + '" ' : "") + " id='attrHeader'>" + (elem ? obj ? animate({ | |
| text : obj, | |
| X : "rhHeader" | |
| }) + "<br />" : def({ | |
| Rd : callback, | |
| Pc : array, | |
| X : "rhHeader" | |
| }) + (value ? toArray({ | |
| gc : value, | |
| X : "rhHeader", | |
| id : "megaLabel" | |
| }) : toArray({ | |
| gc : key, | |
| X : "lhHeader", | |
| id : "adsLabel" | |
| })) : obj ? animate({ | |
| text : obj, | |
| X : "lhHeader" | |
| }) : (value ? toArray({ | |
| gc : value, | |
| X : "lhHeader", | |
| id : "megaLabel" | |
| }) : toArray({ | |
| gc : key, | |
| X : "rhHeader", | |
| id : "adsLabel" | |
| })) + def({ | |
| Rd : callback, | |
| Pc : array, | |
| X : "lhHeader" | |
| })) + "</h2>"; | |
| appendChild(obj, from, el); | |
| }; | |
| /** | |
| * @param {?} child | |
| * @param {?} node | |
| * @param {number} clicked | |
| * @return {undefined} | |
| */ | |
| var appendChild = function(child, node, clicked) { | |
| if (!isObject(child)) { | |
| child = child.toString(); | |
| } | |
| if (createTextNode()) { | |
| node.populate(child); | |
| } else { | |
| clicked.appendChild(toDom(isNode(), child)); | |
| } | |
| }; | |
| } | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {string} path | |
| * @param {?} global | |
| * @param {?} typeName | |
| * @param {string} dependencies | |
| * @param {?} variadic | |
| * @param {?} sc | |
| * @param {?} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| var Definition = function(path, global, typeName, dependencies, variadic, sc, dataAndEvents) { | |
| this.ic = resolveModule(path); | |
| this.Ge = global; | |
| this.wc = typeName; | |
| /** @type {string} */ | |
| this.Mb = dependencies; | |
| this.Ob = variadic; | |
| this.sc = sc; | |
| this.C = dataAndEvents; | |
| this.rd = min(); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Definition.prototype.f = function() { | |
| return this.C({ | |
| la : this.ic, | |
| Ya : this.wc, | |
| td : this.Ge, | |
| sd : this.rd, | |
| V : this.Mb, | |
| Y : this.Ob, | |
| Da : this.sc | |
| }); | |
| }; | |
| } | |
| /** | |
| * @param {?} data | |
| * @return {?} | |
| */ | |
| var restart = function(data) { | |
| return func(data.zg ? '<table style="width: 100%"><tr class="e_"><td class="f_">' + $(data.zg) + "</td></tr></table>" : '<div id="' + start(data.jj) + '" class="kb_"><div id="' + start(data.Ij) + '" class="lb_"></div><div class="mb_" id="' + start(data.nj) + '"><span class="nb_" id="' + start(data.oj) + '"></span><div class="left ob_ fb_" id="' + start(data.Gj) + '"><img width="21" height="21" class="pb_" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAXklEQVQ4y2P4//8/A7Uxw6ih2CWwAwMgvg+iqWUoyMD3QAySvE8NQ5ENfE8Nl2IYCBKkxFCsBlJiKE4DKTH0PtRAEE5AD+RB5VKahCnNYp9m6ZRmOYo6eX+0kCYbAwBPgxTnnBag1wAAAABJRU5ErkJggg==" /></div><div class="right ob_ fb_" id="' + | |
| start(data.Hj) + '"><img width="21" height="21" class="pb_" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAXElEQVQ4y2P4//8/A7Uxw6ihuCUZGAyA+D6UxgDkGgoyEMR4j81gSlz6HpfB5BqK12BKDMVpMKWGYjWYGoaCQALUUBC+PyhdSvUwpXrs0ySd0ixHUTfvjxbSZGEA/QcU5yLp498AAAAASUVORK5CYII=" /></div></div></div>'); | |
| }; | |
| /** | |
| * @param {?} obj | |
| * @return {?} | |
| */ | |
| var max = function(obj) { | |
| return log(".mb_ {padding-top: 10px; text-align: right; height: 29px; font-size: 12px; color: #666666; line-height: 29px; margin-bottom: 2px;}.nb_ {padding-right: 10px; height: 100%; display: inline-block;}.fb_ {display: inline-block; text-align: center; border-radius: 2px; background: white; border: 1px solid #f3f3f3; cursor: default; white-space: nowrap; text-decoration: none; color: #444444; font-size: 11px; font-weight: bold; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;}.ob_.fb_ {height: 100%; width: 34px; font-size: inherit; position: relative;}.fb_.k_ {border: 1px solid #dcdcdc; background: #f5f5f5; z-index: 10;}.fb_.k_:active {-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1); box-shadow: inset 0 1px 2px rgba(0,0,0,.1); background: #f8f8f8; color: #333;}.fb_.k_:hover {border: 1px solid #c6c6c6; z-index: 20;}.left.fb_ {border-top-right-radius: 0; border-bottom-right-radius: 0;}.right.fb_ {border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: -1px;}.pb_ {margin-top: -3px; vertical-align: middle; filter: alpha(opacity=33); opacity: .333;}.fb_.k_:hover > .pb_ {filter: alpha(opacity=90); opacity: .9;}.fb_.k_ > .pb_ {filter: alpha(opacity=55); opacity: .55;}table {font-size: " + | |
| toString(obj.fontSize) + "px; border-collapse: collapse; display: inline-table; white-space: normal; margin-right: 10px; vertical-align: top; border-top: 1px solid #ebebeb;}.kb_ {position: relative; overflow: hidden;}.lb_ {white-space: nowrap; position: relative; left: 0px;}.f_ {color: #777777;}"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} book | |
| * @param {?} opt_label | |
| * @param {?} chapters | |
| * @param {?} index | |
| * @param {?} deepCopy | |
| * @param {?} opt | |
| * @return {undefined} | |
| */ | |
| var Component = function(book, opt_label, chapters, index, deepCopy, opt) { | |
| this.ra = book; | |
| this.pj = opt_label; | |
| this.Lj = chapters; | |
| this.hj = index; | |
| this.Ni = deepCopy; | |
| /** @type {number} */ | |
| this.gb = 0; | |
| /** @type {Array} */ | |
| this.vc = []; | |
| this.C = opt; | |
| this.Pd = new report(300); | |
| this.Bg = min(); | |
| this.We = min(); | |
| this.Dg = min(); | |
| this.Ue = min(); | |
| this.Ve = min(); | |
| this.Eg = min(); | |
| }; | |
| p = Component.prototype; | |
| /** | |
| * @return {?} | |
| */ | |
| p.f = function() { | |
| return this.C({ | |
| jj : this.Bg, | |
| Ij : this.We, | |
| nj : this.Dg, | |
| Gj : this.Ue, | |
| Hj : this.Ve, | |
| oj : this.Eg, | |
| zg : 0 == this.ra.length ? this.hj : "" | |
| }); | |
| }; | |
| /** | |
| * @param {number} state | |
| * @param {number} val | |
| * @return {?} | |
| */ | |
| p.jg = function(state, val) { | |
| return state == val ? this.Lj.replace("%1$d", "" + state).replace("%2$d", "" + this.ra.length) : this.pj.replace("%1$d", "" + state).replace("%2$d", "" + val).replace("%3$d", "" + this.ra.length); | |
| }; | |
| /** | |
| * @param {Document} d | |
| * @param {number} h | |
| * @return {undefined} | |
| */ | |
| p.mj = function(d, h) { | |
| if (0 != this.ra.length) { | |
| var w = parseFloat(d, this.Bg); | |
| h -= w.offsetHeight; | |
| var r = parseFloat(d, this.We); | |
| w = w.offsetWidth; | |
| var el = d.createElement("table"); | |
| /** @type {string} */ | |
| el.style.width = w + "px"; | |
| r.appendChild(el); | |
| /** @type {number} */ | |
| var type = 0; | |
| /** @type {number} */ | |
| var j = 0; | |
| for (;j < this.ra.length;j++) { | |
| if (el.appendChild(fragment(this.ra[j].f())), el.offsetHeight > h) { | |
| var childEl = el.removeChild(el.lastChild); | |
| if (0 == type) { | |
| h = el.offsetHeight; | |
| } | |
| this.vc.push(this.jg(type + 1, j)); | |
| el = d.createElement("table"); | |
| /** @type {string} */ | |
| el.style.width = w + "px"; | |
| r.appendChild(el); | |
| el.appendChild(childEl); | |
| /** @type {number} */ | |
| type = j; | |
| } | |
| } | |
| this.vc.push(this.jg(type + 1, this.ra.length)); | |
| this.hh(d); | |
| } | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.Uf = function() { | |
| return 0 < this.gb; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.Vf = function() { | |
| return this.gb < this.vc.length - 1; | |
| }; | |
| /** | |
| * @param {Document} d | |
| * @return {undefined} | |
| */ | |
| p.hh = function(d) { | |
| if (this.Ni && 1 == this.vc.length) { | |
| /** @type {string} */ | |
| parseFloat(d, this.Dg).style.display = "none"; | |
| } else { | |
| var key = parseFloat(d, this.Ue); | |
| if (this.Uf()) { | |
| close(key, "k_"); | |
| } else { | |
| removeClass(key, "k_"); | |
| } | |
| key = parseFloat(d, this.Ve); | |
| if (this.Vf()) { | |
| close(key, "k_"); | |
| } else { | |
| removeClass(key, "k_"); | |
| } | |
| parseFloat(d, this.Eg).innerHTML = this.vc[this.gb]; | |
| } | |
| }; | |
| /** | |
| * @param {Object} d | |
| * @param {boolean} recurring | |
| * @return {undefined} | |
| */ | |
| p.Sg = function(d, recurring) { | |
| if (!this.Pd.rb && 0 < d.getElementsByTagName("table").length) { | |
| var n = parseFloat(d, this.We); | |
| var gb = setShortStyleProperty(d.getElementsByTagName("table")[0], false); | |
| /** @type {number} */ | |
| var QUnit = gb * this.gb * -1; | |
| if (recurring) { | |
| this.gb--; | |
| } else { | |
| this.gb++; | |
| } | |
| this.Pd.Cc = increment(n, QUnit, gb * this.gb * -1); | |
| if (!tick(this.Pd)) { | |
| throw "Animator got out of sync with page state."; | |
| } | |
| this.hh(d); | |
| } | |
| }; | |
| /** | |
| * @param {Object} dir | |
| * @return {?} | |
| */ | |
| p.Gi = function(dir) { | |
| return wrapper(function() { | |
| if (this.Uf()) { | |
| this.Sg(dir, true); | |
| } | |
| }, this); | |
| }; | |
| /** | |
| * @param {Object} dir | |
| * @return {?} | |
| */ | |
| p.Ii = function(dir) { | |
| return wrapper(function() { | |
| if (this.Vf()) { | |
| this.Sg(dir, false); | |
| } | |
| }, this); | |
| }; | |
| /** | |
| * @param {Object} d | |
| * @return {undefined} | |
| */ | |
| p.Qd = function(d) { | |
| if (0 != this.ra.length) { | |
| var b = parseFloat(d, this.Ue); | |
| addEvent(b, "click", this.Gi(d)); | |
| b = parseFloat(d, this.Ve); | |
| addEvent(b, "click", this.Ii(d)); | |
| } | |
| }; | |
| } | |
| /** | |
| * @param {Element} options | |
| * @return {?} | |
| */ | |
| var next = function(options) { | |
| /** @type {string} */ | |
| var str = '<div style="display: none;" id="_googAFShSingleProduct"></div><style>'; | |
| var value = options.$g; | |
| var len = value.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < len;i++) { | |
| str += toString(value[i]); | |
| } | |
| str += '</style><div class="ra_"><div id="' + start(options.Ef) + '">'; | |
| /** @type {string} */ | |
| value = '<div class="d_" id="' + start(options.xb) + '">' + $(options.title) + "</div>" + (options.U ? '<div class="wa_">' + $(options.U) + "</div>" : ""); | |
| value = apply(value); | |
| str += (options.ya ? parent(load({ | |
| Pa : apply('<div class="ta_"><img class="ua_" src="' + start(replace(options.ya)) + '"></div>'), | |
| Qa : apply("" + $(value)), | |
| oa : 69, | |
| $a : 10 | |
| })) : $(value)) + '<div class="va_">' + $(options.Yg) + "</div></div>" + $(options.Ng) + "</div>"; | |
| return func(str); | |
| }; | |
| /** | |
| * @param {Object} options | |
| * @return {?} | |
| */ | |
| var update = function(options) { | |
| /** @type {string} */ | |
| var str = '<div style="display: none;" id="_googAFShSingleProduct"></div><style>#adBlock {width: ' + toString(options.ei) + "px;}"; | |
| var value = options.$g; | |
| var len = value.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < len;i++) { | |
| str += toString(value[i]); | |
| } | |
| str += '</style><div class="ra_">'; | |
| /** @type {string} */ | |
| value = '<div id="' + start(options.Li) + '"><div id="' + start(options.Ef) + '"><div class="xa_"><div class="d_" id="' + start(options.xb) + '">' + $(options.title) + '</div><div class="wa_">' + $(options.U) + '</div></div><div class="va_">' + $(options.Yg) + "</div></div>" + $(options.Ng) + "</div>"; | |
| value = apply(value); | |
| str += (options.ya ? parent(load({ | |
| Pa : apply('<div class="ta_" id="' + start(options.Mh) + '"><img src="' + start(replace(options.ya)) + '" class="ua_"/></div>' + (options.description ? '<div class="ya_" id="' + start(options.ui) + '">' + $(options.description) + "</div>" : "")), | |
| Qa : apply("" + $(value)), | |
| oa : 224, | |
| $a : 20 | |
| })) : $(value)) + "</div>"; | |
| return func(str); | |
| }; | |
| /** | |
| * @param {?} a | |
| * @return {?} | |
| */ | |
| var up = function(a) { | |
| var ln; | |
| return func('<tr class="e_">' + successCallback(a) + "<td>" + parent(null == (ln = a.V) ? "" : ln) + '</td><td class="za_">' + $(a.Ya) + "</td></tr>"); | |
| }; | |
| /** | |
| * @param {?} data | |
| * @return {?} | |
| */ | |
| var successCallback = function(data) { | |
| return func('<td class="ab_"><div style="position: relative;"><div style="position: absolute; max-width: 100%; white-space: nowrap;">' + parent(getElementById({ | |
| href : data.la, | |
| content : data.td, | |
| j : data.Da, | |
| na : is("bb_"), | |
| Oa : data.sd | |
| })) + "</div><div> </div></div></td>"); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var _callback = function(data) { | |
| var dataText; | |
| return func('<tr class="e_">' + successCallback(data) + "<td>" + parent(null == (dataText = data.V) ? "" : dataText) + "</td><td><div>" + $(data.Ya) + '</div><div class="cb_">' + $(data.Y) + '</div></td><td class="db_">' + parent(getElementById({ | |
| href : data.la, | |
| content : "Buy", | |
| j : data.Da, | |
| na : is("k_ eb_ fb_") | |
| })) + "</td></tr>"); | |
| }; | |
| /** | |
| * @param {?} options | |
| * @return {?} | |
| */ | |
| var setValue = function(options) { | |
| return log(".e_ {border-bottom: 1px solid #ebebeb; vertical-align: middle;}.e_ td {padding: 7px 4px 7px 0;}.ab_ {width: 40%;}.e_ .za_ {text-align: right; padding: 7px 0; font-weight: bold;}.bb_ {text-decoration: none; color: " + toString(options.linkColor) + "; display: block; overflow: hidden; text-overflow: ellipsis;}.bb_:hover {text-decoration: underline;}"); | |
| }; | |
| /** | |
| * @param {Object} that | |
| * @return {?} | |
| */ | |
| var download = function(that) { | |
| var newY; | |
| that = that || {}; | |
| return func('<tr class="e_">' + successCallback(that) + '<td class="za_"><div class="gb_">' + $(that.Ya) + '</div><div class="cb_">' + parent(null == (newY = that.Y) ? "" : newY) + '</div></td><td class="hb_"><div class="ib_">' + parent(null == (newY = that.V) ? "" : newY) + "</div></td></tr>"); | |
| }; | |
| /** | |
| * @param {?} options | |
| * @return {?} | |
| */ | |
| var startsWith = function(options) { | |
| return log(".e_ {border-bottom: 1px solid #ebebeb; vertical-align: middle;}.e_ td {height: 50px; padding-right: 4px;}.ab_ {width: 40%;}.e_ .db_ {text-align: right; padding-right: 0;}.eb_.fb_ {padding: 0 8px; min-width: 54px; height: 27px; line-height: 27px;}.bb_ {text-decoration: none; color: " + toString(options.linkColor) + "; display: block; overflow: hidden; text-overflow: ellipsis;}.bb_:hover {text-decoration: underline;}.cb_ {color: #7d7d7d; font-size: 80%;}"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {number} obj | |
| * @param {?} height | |
| * @return {undefined} | |
| */ | |
| var size = function(obj, height) { | |
| /** @type {number} */ | |
| this.Tf = obj; | |
| this.maxHeight = height; | |
| }; | |
| var initialN = new size(10, 350); | |
| var newN = new size(20, 700); | |
| /** | |
| * @param {?} opt_acc | |
| * @param {?} interpolationPass | |
| * @param {?} blendAlpha | |
| * @param {?} useWebWorker | |
| * @param {?} opt_height | |
| * @param {?} end | |
| * @param {string} time | |
| * @param {string} element | |
| * @param {?} new_emitter | |
| * @param {?} heightOriginal | |
| * @param {(HTMLElement|boolean)} widthOriginal | |
| * @param {(Array|string)} start | |
| * @param {?} resizeCallback | |
| * @return {undefined} | |
| */ | |
| var Resize = function(opt_acc, interpolationPass, blendAlpha, useWebWorker, opt_height, end, time, element, new_emitter, heightOriginal, widthOriginal, start, resizeCallback) { | |
| this.Yb = opt_acc; | |
| this.J = interpolationPass; | |
| this.O = blendAlpha; | |
| this.Sb = useWebWorker; | |
| this.Yi = opt_height; | |
| this.Oj = end; | |
| /** @type {string} */ | |
| this.gj = time + " \u25bc"; | |
| /** @type {string} */ | |
| this.Vi = element + " \u25b2"; | |
| this.ee = new_emitter; | |
| this.Me = heightOriginal; | |
| /** @type {(Array|string)} */ | |
| this.Qj = start; | |
| this.C = resizeCallback; | |
| /** @type {(HTMLElement|boolean)} */ | |
| this.tb = widthOriginal; | |
| /** @type {number} */ | |
| this.tb.height = Math.min(this.tb.height, this.ee.maxHeight); | |
| /** @type {number} */ | |
| this.tb.width = Math.min(this.tb.width, 1E3); | |
| this.dh = min(); | |
| this.ag = min(); | |
| this.Ff = min(); | |
| this.Df = min(); | |
| this.mg = min(); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Resize.prototype.f = function() { | |
| return this.C({ | |
| ya : this.Yb, | |
| title : this.J, | |
| description : this.O, | |
| U : this.Sb, | |
| Yg : this.Oj, | |
| Ng : this.Me.f(), | |
| ei : this.tb.width, | |
| $g : this.Qj, | |
| xb : this.dh, | |
| ui : this.ag, | |
| Ef : this.Ff, | |
| Mh : this.Df, | |
| Li : this.mg | |
| }); | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| Resize.prototype.Ki = function(d) { | |
| return parseFloat(d, "adBlock").offsetWidth; | |
| }; | |
| /** | |
| * @param {Object} d | |
| * @return {undefined} | |
| */ | |
| Resize.prototype.xj = function(d) { | |
| this.bk(d); | |
| var targetHeight = parseFloat(d, this.Ff).offsetHeight; | |
| targetHeight = targetHeight + 2 * this.ee.Tf; | |
| this.Me.mj(d, this.tb.height - targetHeight); | |
| this.Me.Qd(d); | |
| }; | |
| /** | |
| * @param {Object} c | |
| * @return {undefined} | |
| */ | |
| Resize.prototype.bk = function(c) { | |
| var item = parseFloat(c, this.dh); | |
| slide(item, 3); | |
| if (item = c.getElementById(this.ag)) { | |
| var targetHeight = isNaN(parseFloat(c, this.Df)); | |
| targetHeight = targetHeight + 2 * this.ee.Tf; | |
| isNaN(parseFloat(c, this.mg)); | |
| f(item, this.tb.height - targetHeight - 50, this.gj, this.Vi, this.Yi); | |
| } | |
| }; | |
| /** | |
| * @param {Element} self | |
| * @param {Object} data | |
| * @param {?} evt | |
| * @param {?} type | |
| * @param {boolean} models | |
| * @return {?} | |
| */ | |
| var reset = function(self, data, evt, type, models) { | |
| var callback; | |
| var args; | |
| var action; | |
| /** @type {Array} */ | |
| var _results = []; | |
| /** @type {null} */ | |
| var n = null; | |
| var linkColor = self.lc || "#0651cf"; | |
| switch(self.id) { | |
| case 1: | |
| ; | |
| case "SMALL_FORMAT": | |
| /** @type {function (?): ?} */ | |
| callback = up; | |
| /** @type {function (?): ?} */ | |
| args = restart; | |
| /** @type {function (Element): ?} */ | |
| action = next; | |
| _results.push(setValue({ | |
| linkColor : linkColor | |
| })); | |
| _results.push(log(max({ | |
| fontSize : 12 | |
| }))); | |
| _results.push(log("#adBlock {font-family: arial; font-size: 0; width: 300px; background: white;}.d_ {font-size: 18px; font-weight: bold; color: #222222; word-wrap: break-word;}.ra_ {padding: 9px; border: 1px solid #e0e0e0;}.ua_ {max-width: 67px; max-height: 67px; vertical-align: middle;}.ta_ {width: 67px; height: 67px; border: 1px solid #eeeeee; text-align: center; line-height: 67px;}.va_ {padding: 10px 0; font-size: 12px; font-weight: bold; color: #222222;}.wa_ {color: #787878; font-size: 13px;}")); | |
| if (type) { | |
| /** @type {function (Object): ?} */ | |
| callback = download; | |
| _results.push(log(".e_ .hb_ {padding: 7px 0; width: 46px;}.e_ .za_ {text-align: left; padding-right: 4px;}.cb_ {color: #7d7d7d; font-size: 90%; font-weight: normal;}")); | |
| } | |
| n = initialN; | |
| break; | |
| case 3: | |
| ; | |
| case "WIDE_FORMAT": | |
| /** @type {function (Object): ?} */ | |
| callback = _callback; | |
| /** @type {function (?): ?} */ | |
| args = restart; | |
| /** @type {function (Object): ?} */ | |
| action = update; | |
| _results.push(startsWith({ | |
| linkColor : linkColor | |
| })); | |
| _results.push(log(max({ | |
| fontSize : 14 | |
| }))); | |
| _results.push(log("#adBlock {font-family: arial; font-size: 0; background: white;}.ra_ {padding: 19px; border: 1px solid #e0e0e0;}.ua_ {max-width: 222px; max-height: 222px; vertical-align: middle;}.ta_ {width: 222px; height: 222px; border: 1px solid #eeeeee; text-align: center; line-height: 222px; margin-bottom: 20px;}.ya_ {font-size: 12px; line-height: 18px; color: #222222; word-wrap: break-word;}.xa_ {padding-bottom: 20px;}.d_ {font-size: 18px; font-weight: bold; color: #222222; word-wrap: break-word;}.wa_ {color: #7d7d7d; font-size: 13px;}.va_ {font-size: 14px; font-weight: bold; color: #222222; padding-bottom: 8px;}")); | |
| n = newN; | |
| break; | |
| default: | |
| return util.log({ | |
| message : "Jackpot block json failed to provide a known format." | |
| }, "crjc"), null; | |
| } | |
| /** @type {Array} */ | |
| var app = []; | |
| if (self.offers) { | |
| app = connect(self.offers, function(data) { | |
| return new Definition(data.u, data.m, data.pr, data.s, type && data.ppu ? data.ppu : "", evt, callback); | |
| }); | |
| } | |
| models = new Component(app, data.pt, data.sipt, data.nl, models, args); | |
| return new Resize(self.pd.i, self.pd.t, self.pd.d, type && self.pd.er ? self.pd.er : "", linkColor, data.sl, data.m, data.l, n, models, new Node(self.mw, self.mh), _results, action); | |
| }; | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var createDom = function(opt_attributes) { | |
| return func('<div class="button" id="' + start(opt_attributes.li) + '">' + $(opt_attributes.ji) + '<div class="q_ j_" id="' + start(opt_attributes.hi) + '"><div class="r_ s_"><div class="t_"><div class="u_">' + $(opt_attributes.gi) + '</div></div><div class="r_ v_"> </div></div></div></div>'); | |
| }; | |
| /** | |
| * @param {?} o | |
| * @return {?} | |
| */ | |
| var positionTooltip = function(o) { | |
| return log(".button {position: relative;" + toString(innerHeight()) + "}.t_ {position: absolute;" + toString(errorHandler({ | |
| value : valid("0 4px 16px rgba(0, 0, 0, 0.2)") | |
| })) + "width: " + toString(o.Sc) + "px; bottom: " + toString(o.ja ? o.Of : 9) + "px; right: " + toString(o.ja ? 8 : o.Of) + "px; background: white;}.u_ {border: 1px solid #CCCCCC; padding: 10px; word-wrap: break-word;}.q_ {position: absolute; cursor: default;}.q_.j_ {visibility: hidden;}.r_ {width: 0; border-style: solid; border-" + toString(o.ja ? "left" : "top") + "-color: #CCCCCC; border-" + toString(o.ja ? "top" : "left") + "-color: transparent; border-right-color: transparent; border-bottom-color: transparent;}.r_.s_ {border-width: 10px; border-" + | |
| toString(o.ja ? "right" : "bottom") + "-width: 0; position: absolute; bottom: " + toString(o.ja ? 17 : 41) + "px; left: " + toString(o.ja ? -5 : 2) + "px;}.r_.v_ {border-width: 9px; border-" + toString(o.ja ? "right" : "bottom") + "-width: 0; border-" + toString(o.ja ? "left" : "top") + "-color: white; position: absolute; margin-" + toString(o.ja ? "left" : "top") + ": -10px; margin-" + toString(o.ja ? "top" : "left") + ": -9px;}"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} pseudoQuote | |
| * @param {?} ua | |
| * @param {number} inError | |
| * @param {number} pseudoMarker | |
| * @param {string} strict | |
| * @param {Function} rawMatch | |
| * @param {string} attributeQuote | |
| * @return {undefined} | |
| */ | |
| var parser = function(pseudoQuote, ua, inError, pseudoMarker, strict, rawMatch, attributeQuote) { | |
| this.Td = min(); | |
| this.Rc = min(); | |
| this.ki = pseudoQuote; | |
| this.Sd = ua; | |
| /** @type {number} */ | |
| this.ii = inError; | |
| /** @type {number} */ | |
| this.Wh = pseudoMarker; | |
| /** @type {string} */ | |
| this.Xh = strict; | |
| this.C = rawMatch || createDom; | |
| this.bf = attributeQuote || positionTooltip; | |
| }; | |
| p = parser.prototype; | |
| /** | |
| * @return {?} | |
| */ | |
| p.f = function() { | |
| return this.C({ | |
| li : this.Td, | |
| hi : this.Rc, | |
| ji : this.ki.f(), | |
| gi : this.Sd.f() | |
| }); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.te = function() { | |
| return this.bf({ | |
| Sc : this.ii, | |
| Of : this.Wh, | |
| ja : this.Xh | |
| }); | |
| }; | |
| /** | |
| * @param {Object} context | |
| * @return {?} | |
| */ | |
| p.Ei = function(context) { | |
| var args = this; | |
| return function(obj) { | |
| if (!visit(obj.target || obj.srcElement, args.Rc)) { | |
| if (obj = context.getElementById(args.Rc)) { | |
| if (obj.classList) { | |
| obj.classList.toggle("j_"); | |
| } else { | |
| if (addClass(obj, "j_")) { | |
| removeClass(obj, "j_"); | |
| } else { | |
| close(obj, "j_"); | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| }; | |
| /** | |
| * @param {Object} context | |
| * @return {?} | |
| */ | |
| p.Fi = function(context) { | |
| var args = this; | |
| return function(obj) { | |
| if (!visit(obj.target || obj.srcElement, args.Td)) { | |
| if (obj = context.getElementById(args.Rc)) { | |
| close(obj, "j_"); | |
| } | |
| } | |
| }; | |
| }; | |
| /** | |
| * @param {Object} context | |
| * @return {undefined} | |
| */ | |
| p.Md = function(context) { | |
| var failuresLink = context.getElementById(this.Td); | |
| if (failuresLink) { | |
| addEvent(failuresLink, "click", this.Ei(context)); | |
| addEvent(context.body, "click", this.Fi(context)); | |
| } | |
| }; | |
| /** | |
| * @param {?} deepDataAndEvents | |
| * @return {?} | |
| */ | |
| p.Wb = function(deepDataAndEvents) { | |
| return this.Sd.Wb(deepDataAndEvents); | |
| }; | |
| /** | |
| * @param {?} win | |
| * @return {undefined} | |
| */ | |
| p.Ac = function(win) { | |
| this.Sd.Ac(win); | |
| }; | |
| } | |
| /** | |
| * @param {?} opt_attributes | |
| * @return {?} | |
| */ | |
| var onComplete = function(opt_attributes) { | |
| return func('<div style="font-size: 14px;"><div><a href="' + start(replace(opt_attributes.la)) + '" style="color: #281ab3; text-decoration: none" id="' + start(opt_attributes.xb) + '" ' + slice(reject(opt_attributes)) + ">" + $(opt_attributes.title) + '</a></div><div id="' + start(opt_attributes.zi) + '"><div style="color: #222222; font-weight: bold;">' + $(opt_attributes.Ya) + '</div><div style="color: #777777; font-size: 13px;">' + (opt_attributes.V ? "<div>" + $(opt_attributes.V) + "</div>" : | |
| "") + (opt_attributes.Y ? "<div>" + $(opt_attributes.Y) + "</div>" : "") + (opt_attributes.U ? "<div>" + $(opt_attributes.U) + "</div>" : "") + "</div></div></div>"); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| var err2 = function() { | |
| return func('<div style="width: 30px; height: 42px;"><div style="cursor: pointer; width: 15px; padding-left: 5px;"><div style="width: 5px; padding-left: 5px; padding-top: 7px;"><div style="height: 5px; background: gray; margin-bottom: 2px; border-radius: 50%;"> </div><div style="height: 5px; background: gray; margin-bottom: 2px; border-radius: 50%;"> </div><div style="height: 5px; background: gray; border-radius: 50%;"> </div></div></div></div>'); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} node | |
| * @param {?} partialText | |
| * @param {?} clonePartiallySelectedTextNodes | |
| * @param {?} dataAndEvents | |
| * @param {?} deepDataAndEvents | |
| * @param {?} ignoreMethodDoesntExist | |
| * @param {?} sc | |
| * @param {?} textAlt | |
| * @param {Function} opt_reverse | |
| * @return {undefined} | |
| */ | |
| var RangeIterator = function(node, partialText, clonePartiallySelectedTextNodes, dataAndEvents, deepDataAndEvents, ignoreMethodDoesntExist, sc, textAlt, opt_reverse) { | |
| this.ic = node; | |
| this.J = partialText; | |
| this.wc = clonePartiallySelectedTextNodes; | |
| this.Mb = dataAndEvents; | |
| this.Ob = deepDataAndEvents; | |
| this.Sb = ignoreMethodDoesntExist; | |
| this.sc = sc; | |
| this.bj = textAlt; | |
| this.C = opt_reverse || onComplete; | |
| this.wb = min(); | |
| this.ig = min(); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| RangeIterator.prototype.f = function() { | |
| return this.C({ | |
| la : this.ic, | |
| title : this.J, | |
| xb : this.wb, | |
| Ya : this.wc, | |
| V : this.Mb, | |
| Y : this.Ob, | |
| U : this.Sb, | |
| j : this.sc, | |
| zi : this.ig | |
| }); | |
| }; | |
| /** | |
| * @param {?} deepDataAndEvents | |
| * @return {?} | |
| */ | |
| RangeIterator.prototype.Wb = function(deepDataAndEvents) { | |
| return[new Resource(parseFloat(deepDataAndEvents, this.wb), "&nb=0")]; | |
| }; | |
| /** | |
| * @param {?} win | |
| * @return {undefined} | |
| */ | |
| RangeIterator.prototype.Ac = function(win) { | |
| var node = win.document.getElementById(this.ig); | |
| if (node) { | |
| hide(win.document.getElementById(this.wb), this.bj - node.offsetHeight); | |
| } | |
| }; | |
| /** | |
| * @param {Function} err | |
| * @return {undefined} | |
| */ | |
| var IdentityMatrix = function(err) { | |
| this.C = err || err2; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| IdentityMatrix.prototype.f = function() { | |
| return this.C({}); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @param {number} quat | |
| * @param {number} scopes | |
| * @param {string} val | |
| * @param {number} v23 | |
| * @param {number} opt_attributes | |
| * @param {boolean} recurring | |
| * @return {?} | |
| */ | |
| var inverse = function(data, quat, scopes, val, v23, opt_attributes, recurring) { | |
| data = new RangeIterator(val, data.t, data.pr, data.s, data.ppu, data.er, v23, scopes); | |
| return new parser(new IdentityMatrix, data, quat, opt_attributes, recurring); | |
| }; | |
| } | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var initialize = function(data) { | |
| /** @type {string} */ | |
| var copies = '<div class="tb_ b_" id="' + start(data.Fg) + '"><div class="ub_">'; | |
| /** @type {string} */ | |
| var frame = '<div class="yb_"><div style="position: absolute;" class="zb_">' + parent(getElementById({ | |
| href : data.la, | |
| content : data.title, | |
| j : data.Da, | |
| na : is("ac_"), | |
| Oa : data.xb | |
| })) + '</div><div id="' + start(data.Gg) + '" style="position: absolute; bottom: 0;">'; | |
| /** @type {string} */ | |
| frame = frame + ('<div class="bc_" style="padding-bottom: ' + start(toString(data.wd && (data.V || (data.U || data.Y)) ? 2 : 4)) + 'px;"><span class="gb_" title="' + start(data.Jg) + '">' + $(data.Ya) + "</span></div>" + (data.wd ? (data.V ? '<div class="cc_" title="' + start(data.V) + '">' + $(data.V) + "</div>" : "") + (data.U ? '<div class="cc_" title="' + start(data.U) + '">' + $(data.U) + "</div>" : "") + (data.Y ? '<div class="cc_" title="' + start(data.Y) + '">' + $(data.Y) + "</div>" : | |
| "") : "") + '<div class="dc_">' + parent(getElementById({ | |
| href : data.la, | |
| content : data.td, | |
| j : data.Da, | |
| na : is("ec_"), | |
| Oa : data.sd | |
| })) + "</div></div></div>"); | |
| /** @type {string} */ | |
| copies = copies + parent(load({ | |
| Pa : apply("<div>" + parent(getElementById({ | |
| href : data.la, | |
| content : apply('<div class="vb_" style="background-image:url(' + start(replace(data.ya)) + ');"><div class="va_">' + $(data.Qf) + "</div></div>"), | |
| j : data.Da, | |
| na : is("xb_"), | |
| Oa : data.qg | |
| })) + "</div>"), | |
| Qa : apply(frame), | |
| oa : data.ve, | |
| $a : data.$b | |
| })); | |
| /** @type {string} */ | |
| copies = copies + ('<div style="position: absolute; bottom: -8px; right: -6px;">' + $(data.Mg) + "</div></div></div>"); | |
| return func(copies); | |
| }; | |
| /** | |
| * @param {Object} d | |
| * @return {?} | |
| */ | |
| var s = function(d) { | |
| return log(".tb_ {background: white; margin-right: " + toString(d.ac) + "px; margin-bottom: " + toString(d.ac) + "px;" + (d.fg ? toString(errorHandler({ | |
| value : valid("1px 2px 1px rgba(0, 0, 0, 0.1)") | |
| })) + "border: 1px solid #E0E0E0; box-sizing: border-box; border-radius: 3px;" : toString(errorHandler({ | |
| value : valid("0 2px 1px rgba(0, 0, 0, 0.1), 0 0 1px rgba(0, 0, 0, 0.1)") | |
| })) + "border-radius: 2px;") + "width: " + toString(d.Uh) + "px; height: " + toString(d.Qh) + "px;" + toString(innerHeight()) + "}.ub_ {" + (d.fg ? "padding: " + toString(d.$b - 1) + "px;" : "padding: " + toString(d.$b) + "px;") + "position: relative;}.xb_ {text-decoration: none;}.vb_ {width: " + toString(d.ve) + "px; height: " + toString(d.Qi) + "px; background-repeat: no-repeat; background-position: center; background-size: contain; cursor: pointer; position: relative;}.yb_ {position: relative; height: " + | |
| toString(d.si) + "px;}.ac_ {color: " + toString(d.Xj) + "; font-size: " + toString(d.Zj) + "px; text-decoration: none;}.zb_ {width: " + toString(d.Zc) + "px; word-wrap: break-word;}.gb_ {font-size: " + toString(d.uj) + "px; font-weight: bold; color: " + toString(d.Ig) + ";}.bc_ {color: " + toString(d.Ig) + "; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: " + toString(d.Zc - d.Sc) + "px;}.ec_ {color: " + toString(d.yg) + "; text-decoration: none;}.dc_ {font-size: " + toString(d.dj) + | |
| "px; padding-bottom: 2px; color: " + toString(d.yg) + "; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: " + toString(d.Zc - d.Sc) + "px;}.va_ {font-size: 13px;" + toString(innerHeight()) + "text-decoration: none; background-color: #555555; position: absolute; bottom: 1px; left: 1px; padding: 0 3px; color: white; border-radius: 2px;}.cc_ {font-size: 12px; color: #777777; padding-bottom: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: " + toString(d.Zc) + | |
| "px;}" + toString(d.yi)); | |
| }; | |
| /** | |
| * @param {Object} data | |
| * @return {?} | |
| */ | |
| var assert = function(data) { | |
| /** @type {string} */ | |
| var copies = '<div class="tb_ b_" id="' + start(data.Fg) + '"><div class="ub_"><div>' + parent(getElementById({ | |
| href : data.la, | |
| content : apply('<div class="vb_" style="background-image:url(' + start(replace(data.ya)) + ');"><div class="va_">' + $(data.Qf) + "</div></div>"), | |
| j : data.Da, | |
| na : is("xb_"), | |
| Oa : data.qg | |
| })) + '</div><div class="yb_"><div style="position: absolute;" class="zb_">' + parent(getElementById({ | |
| href : data.la, | |
| content : data.title, | |
| j : data.Da, | |
| na : is("ac_"), | |
| Oa : data.xb | |
| })) + '</div><div id="' + start(data.Gg) + '" style="position: absolute; bottom: 0;">'; | |
| /** @type {string} */ | |
| copies = copies + ('<div class="bc_" style="padding-bottom: ' + start(toString(data.wd && (data.V || (data.U || data.Y)) ? 2 : 4)) + 'px;"><span class="gb_" title="' + start(data.Jg) + '">' + $(data.Ya) + "</span></div>" + (data.wd ? (data.V ? '<div class="cc_" title="' + start(data.V) + '">' + $(data.V) + "</div>" : "") + (data.U ? '<div class="cc_" title="' + start(data.U) + '">' + $(data.U) + "</div>" : "") + (data.Y ? '<div class="cc_" title="' + start(data.Y) + '">' + $(data.Y) + "</div>" : | |
| "") : "") + '<div class="dc_">' + parent(getElementById({ | |
| href : data.la, | |
| content : data.td, | |
| j : data.Da, | |
| na : is("ec_"), | |
| Oa : data.sd | |
| })) + '</div></div><div style="position: absolute; bottom: -14px; right: -14px;">' + $(data.Mg) + "</div></div></div></div>"); | |
| return func(copies); | |
| }; | |
| /** | |
| * @param {Object} a | |
| * @return {?} | |
| */ | |
| var wrap = function(a) { | |
| return log(toString(s(a)) + ".vb_ {margin-bottom: " + toString(a.$b) + "px;}"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Object} data | |
| * @param {Object} self | |
| * @param {?} allBindingsAccessor | |
| * @param {?} depMaps | |
| * @param {?} rootjQuery | |
| * @param {?} opt_setup | |
| * @param {?} mojitSpec | |
| * @param {?} mojitProxy | |
| * @param {?} viewModel | |
| * @param {string} opt_handler | |
| * @param {string} bindingContext | |
| * @param {string} curVal | |
| * @param {?} apiKey | |
| * @param {?} allBindings | |
| * @return {undefined} | |
| */ | |
| var init = function(data, self, allBindingsAccessor, depMaps, rootjQuery, opt_setup, mojitSpec, mojitProxy, viewModel, opt_handler, bindingContext, curVal, apiKey, allBindings) { | |
| this.Zh = allBindingsAccessor; | |
| this.ic = depMaps; | |
| this.J = data.t; | |
| this.Ge = data.m; | |
| this.wc = data.pr; | |
| this.Yb = data.i; | |
| this.Mb = data.s; | |
| this.Ob = data.ppu; | |
| this.Sb = data.er; | |
| /** @type {string} */ | |
| this.zj = curVal; | |
| this.Mi = self.h; | |
| this.gk = self.w; | |
| this.ye = rootjQuery; | |
| this.tg = opt_setup; | |
| this.Ri = self.ih; | |
| this.rg = self.iw; | |
| this.$f = mojitSpec; | |
| this.ti = mojitProxy; | |
| this.$j = self.ts; | |
| this.ej = self.ms; | |
| this.vj = self.ps; | |
| this.Yj = self.tc; | |
| this.cj = self.mc; | |
| this.tj = self.pc; | |
| this.sc = viewModel; | |
| /** @type {string} */ | |
| this.xi = opt_handler; | |
| /** @type {string} */ | |
| this.ka = bindingContext; | |
| this.bf = apiKey; | |
| this.C = allBindings; | |
| this.ng = min(); | |
| this.pg = min(); | |
| this.wb = min(); | |
| this.rd = min(); | |
| this.Hg = min(); | |
| }; | |
| p = init.prototype; | |
| /** | |
| * @return {?} | |
| */ | |
| p.f = function() { | |
| var failureMessage = this.ka ? this.ka.f() : ""; | |
| return this.C({ | |
| Fg : this.ng, | |
| Qf : this.Zh, | |
| la : this.ic, | |
| ya : this.Yb, | |
| qg : this.pg, | |
| title : this.J, | |
| xb : this.wb, | |
| Ya : this.wc, | |
| td : this.Ge, | |
| sd : this.rd, | |
| Gg : this.Hg, | |
| ve : this.rg, | |
| $b : this.tg, | |
| Jg : this.ri(), | |
| Da : this.sc, | |
| Mg : failureMessage, | |
| V : this.Mb, | |
| Y : this.Ob, | |
| U : this.Sb, | |
| wd : this.zj | |
| }); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.te = function() { | |
| var failureMessage = this.ka ? this.ka.te() : ""; | |
| return this.bf({ | |
| Uh : this.gk, | |
| Qh : this.Mi, | |
| ac : this.ye, | |
| $b : this.tg, | |
| Qi : this.Ri, | |
| ve : this.rg, | |
| si : this.$f, | |
| Zc : this.ti, | |
| Zj : this.$j, | |
| dj : this.ej, | |
| uj : this.vj, | |
| Xj : this.Yj, | |
| yg : this.cj, | |
| Ig : this.tj, | |
| fg : this.xi, | |
| Sc : this.ka ? 20 : 0, | |
| yi : failureMessage | |
| }); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.ri = function() { | |
| return repeat([this.Ob, this.Mb], spaces).join("\n"); | |
| }; | |
| /** | |
| * @param {?} win | |
| * @return {undefined} | |
| */ | |
| p.Ac = function(win) { | |
| var node = win.document.getElementById(this.Hg); | |
| if (node) { | |
| hide(win.document.getElementById(this.wb), this.$f - (node.offsetHeight + 4)); | |
| } | |
| if (this.ka) { | |
| this.ka.Ac(win); | |
| } | |
| }; | |
| /** | |
| * @param {Object} fragment | |
| * @return {undefined} | |
| */ | |
| p.Md = function(fragment) { | |
| if (this.ka) { | |
| this.ka.Md(fragment); | |
| } | |
| }; | |
| /** | |
| * @param {?} d | |
| * @return {?} | |
| */ | |
| p.lg = function(d) { | |
| return parseFloat(d, this.ng); | |
| }; | |
| /** | |
| * @param {?} deepDataAndEvents | |
| * @return {?} | |
| */ | |
| p.Wb = function(deepDataAndEvents) { | |
| var caseSensitive = this.ka ? this.ka.Wb(deepDataAndEvents) : []; | |
| return[new Resource(parseFloat(deepDataAndEvents, this.wb), "&nb=0"), new Resource(parseFloat(deepDataAndEvents, this.rd), "&nb=1"), new Resource(parseFloat(deepDataAndEvents, this.pg), "&nb=9")].concat(caseSensitive); | |
| }; | |
| /** | |
| * @param {Object} args | |
| * @param {string} n | |
| * @param {number} var_args | |
| * @param {string} y | |
| * @param {number} v23 | |
| * @param {string} charOffset | |
| * @param {string} width | |
| * @param {boolean} el | |
| * @return {?} | |
| */ | |
| var drawImage = function(args, n, var_args, y, v23, charOffset, width, el) { | |
| var indents = resolveModule(args.u); | |
| var c = new Node(n.w, n.h); | |
| var p = new Node(n.iw, n.ih); | |
| /** @type {number} */ | |
| var defaultMargin = Math.floor((c.height - p.height) / 2); | |
| var pl = p.height; | |
| /** @type {number} */ | |
| p = c.width - (3 * defaultMargin + p.width); | |
| width = width ? inverse(args, c.width - 90, c.height - 20, indents, v23, -22, true) : null; | |
| return new init(args, n, var_args, indents, y, defaultMargin, pl, p, v23, charOffset, width, el, s, initialize); | |
| }; | |
| /** | |
| * @param {string} packet | |
| * @param {string} n | |
| * @param {number} opt_arr | |
| * @param {string} v11 | |
| * @param {number} v23 | |
| * @param {string} charOffset | |
| * @param {string} options | |
| * @param {boolean} el | |
| * @return {?} | |
| */ | |
| var onWindowResize = function(packet, n, opt_arr, v11, v23, charOffset, options, el) { | |
| var indents = resolveModule(packet.u); | |
| var c = new Node(n.w, n.h); | |
| var text = new Node(n.iw, n.ih); | |
| /** @type {number} */ | |
| var margin = Math.floor((c.width - text.width) / 2); | |
| /** @type {number} */ | |
| var v = c.height - (3 * margin + text.height); | |
| text = text.width; | |
| options = options ? inverse(packet, c.width, c.height - 50, indents, v23, -19, false) : null; | |
| return new init(packet, n, opt_arr, indents, v11, margin, v, text, v23, charOffset, options, el, wrap, assert); | |
| }; | |
| } | |
| /** | |
| * @param {Object} options | |
| * @return {?} | |
| */ | |
| var flow = function(options) { | |
| /** @type {string} */ | |
| var point = '<div style="display: none;" id="_googAFShPLAs"></div><style>' + log("#adBlock {width: " + toString(options.width) + "px; font-size: 0;}.rb_ {background-color: " + toString(options.backgroundColor) + "; font-family: " + toString(options.fontFamily) + ";}.sb_ {padding-top: " + toString(options.ac) + "px; padding-left: " + toString(options.ac) + "px;}" + toString(options.Si)) + '</style><div class="rb_"><div class="sb_">'; | |
| options = options.Cj; | |
| var len = options.length; | |
| /** @type {number} */ | |
| var idx = 0; | |
| for (;idx < len;idx++) { | |
| point += $(options[idx]); | |
| } | |
| return func(point + "</div></div>"); | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} canvs | |
| * @param {?} dataAndEvents | |
| * @param {?} deepDataAndEvents | |
| * @param {?} ignoreMethodDoesntExist | |
| * @param {string} textAlt | |
| * @param {?} keepData | |
| * @param {?} opt_attributes | |
| * @return {undefined} | |
| */ | |
| var Processing = function(canvs, dataAndEvents, deepDataAndEvents, ignoreMethodDoesntExist, textAlt, keepData, opt_attributes) { | |
| this.Jb = canvs; | |
| this.Ug = dataAndEvents; | |
| this.ye = deepDataAndEvents; | |
| this.$h = ignoreMethodDoesntExist; | |
| /** @type {string} */ | |
| this.Ai = textAlt; | |
| this.Ti = keepData; | |
| this.C = opt_attributes; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Processing.prototype.f = function() { | |
| /** @type {Array} */ | |
| var eventPath = []; | |
| /** @type {number} */ | |
| var l = 0; | |
| for (;l < this.Jb.length;l++) { | |
| eventPath.push(this.Jb[l].f()); | |
| } | |
| return this.C({ | |
| Cj : eventPath, | |
| width : this.Ug.width, | |
| Si : this.Ti, | |
| ac : this.ye, | |
| backgroundColor : this.$h, | |
| fontFamily : this.Ai | |
| }); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Processing.prototype.Ji = function() { | |
| return this.Ug; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Processing.prototype.Hi = function() { | |
| return this.Jb; | |
| }; | |
| /** | |
| * @param {?} win | |
| * @return {undefined} | |
| */ | |
| Processing.prototype.Vh = function(win) { | |
| /** @type {number} */ | |
| var conditionIndex = 0; | |
| for (;conditionIndex < this.Jb.length;conditionIndex++) { | |
| this.Jb[conditionIndex].Ac(win); | |
| this.Jb[conditionIndex].Md(win.document); | |
| } | |
| }; | |
| } | |
| /** | |
| * @param {?} route | |
| * @return {?} | |
| */ | |
| var clone_geometry = function(route) { | |
| var b; | |
| /** @type {number} */ | |
| var c = 0; | |
| /** @type {string} */ | |
| b = '<div class="SponsoredLinksBoxNoBorder"><div style="margin-left:2px"><div class="SponsoredLinksContentWrapper" id="A9AdsWidgetAdsWrapper"><div class="SponsoredLinksAdBox"><table id="SponsoredLinksTable" class="SponsoredLinkColumnAds"><tbody>'; | |
| var keys = route.ads; | |
| var il = keys.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < il;i++) { | |
| var key = keys[i]; | |
| b += '<tr class="adUnit_js b_"><td valign="top"><span style="white-space:nowrap; padding-right:18px">' + (1 == route.ads.length ? '<span class="SponsoredLinkYellowBlockEnclosure"><span class="SponsoredLinkYellowBlock"> </span> </span>' : '<span class="SponsoredLinkNumberItem">' + ++c + ". </span>") + '<span class="SponsoredLinkTitle"> <a target="_blank" href="' + key.u + '" rel="nofollow" class="titleLink"><b>' + key.cleanTitle + '</b></a> <a rel="nofollow" href="' + key.u + | |
| '" target="_blank" class="amazonExternalLinkImage_js"><img width="23" height="20" border="0" align="absbottom" style="padding-bottom:0px; margin-bottom:0px; display:inline;" alt="opens new browser window" src="//afs.googleusercontent.com/amazon/icon-offsite-sl-7069-t4._V171196157_.png"></a></span></span></td><td><span class="SponsoredLinkDescription" style="white-space:normal; padding-left:0px"><span style="padding-right:10px;" class="SponsoredLinkDescriptionText">' + key.l1 + " " + key.l2 + | |
| '</span></span> <span class="SponsoredLinkDescription" style="padding-left:0px"><a class="SponsoredLinkDescriptionUrlLink" rel="nofollow" href="' + key.u + '" target="_blank" class="domainLink">' + key.v + "</a></span></td></tr>"; | |
| } | |
| return b + "</tbody></table></div></div></div></div><style>#adBlock {font-size: 13px;}#adBlock a:hover {text-decoration: none;}#SponsoredLinksTable {width: 100%;}#sponsoredLinks {font-family: verdana,arial,helvetica,sans-serif;}.SponsoredLinksBoxNoBorder td, .SponsoredLinksBoxNoBorder th{font-family: verdana,arial,helvetica,sans-serif;}.SponsoredLinksBoxNoBorder a {color: #004B91; font-family: verdana, arial,helvetica,sans-serif;}.SponsoredLinksBox td, .SponsoredLinksBox th{font-family: verdana,arial,helvetica,sans-serif;}.SponsoredLinksBox a {color: #004B91; font-family: verdana, arial,helvetica,sans-serif;}.SponsoredFeedbackDiv{display: block; font-size: 90%; padding-left: 2px; padding-top: 5px;}.SponsoredLinkDescriptionUrlLink:link, #sponsoredLinks .SponsoredLinkDescriptionUrlLink:link {color: black; font-weight: normal; text-decoration: none;}.SponsoredLinkDescriptionUrlLink:visited, #sponsoredLinks .SponsoredLinkDescriptionUrlLink:visited {color: black; font-weight: normal; text-decoration: none;}.SponsoredLinkDescriptionUrlLink:hover, #sponsoredLinks .SponsoredLinkDescriptionUrlLink:hover {color: black; font-weight: normal; text-decoration: none;}.SponsoredLinksBox{height: auto; padding-left: 5px; padding-right: 5px; padding-top: 3px; padding-bottom: 10px; margin-top: 0px; margin-bottom: 10px; border: 1px solid #D0EAF8;}.SponsoredLinksBoxNoBorder{height: auto; padding-left: 0px; padding-right: 0px; padding-top: 0px; margin-top: 0px; border: none;}.SponsoredLinkYellowBlock {position: absolute; background-color: #db9234; width: 4px; height: 4px; margin-right: 2px; margin-left: 2px; margin-top: 9px; left: 0px; line-height: 1px;}#sponsoredLinks {width: 100%; padding-top: 4px;}.SponsoredLinkYellowBlockEnclosure {position: relative; margin-right: 2px;}.SponsoredLinkContentDeclaration {text-align: right; padding-right: 20px; color: #C2C2C2}.SponsoredLinksBottomBox {padding-top: 5px; padding-right: 20px;}.SponsoredLinksAdvertiseYourServices {font-size: 90%; float: right;}#sponsoredLinks a:link, #sponsoredLinks a:visited {text-decoration: underline;}.SponsoredLinksSearchSeperator {margin-top: 6px; border-bottom: 1px dotted gray;}.SponsoredLinkDescriptionUrlLink {white-space: nowrap;}.SponsoredLinkNumberItem {font-family: verdana; color: #666666; font-size: 110%;}.SponsoredLinkNumberItemEnclose {padding-top: 3px;}.SponsoredLinksAdBox{padding: 0px; margin: 0px;}.SponsoredLinksAdBox ul {list-style-type: none; padding-left: 0px; margin-left: 0px;}.SponsoredLinksAdBox ul li {clear: both; margin-top: 10px; padding-left: 5px; border: 0px solid #ffcc00;}.SponsoredLinksAdBox ul li span{float: left; padding: 0 0 0 0}.SponsoredLinksAdBox ul li div{float: left; padding: 0 10px 0 0}.SponsoredLinksAdBox .SponsoredLinkTitle {font-size: 125%; white-space: nowrap; min-width: 250px; padding-left: 0px; padding-bottom: 5px}.SponsoredLinksAdBox .SponsoredLinkTitle a:hover {color: #CC6600;}.SponsoredLinksAdBox .SponsoredLinkTitle a {font-family: arial;}.SponsoredLinksAdBox .SponsoredLinkDescription{font-size: 115%; color: #000; min-width: 240px; white-space: nowrap; padding-left: 18px; padding-top: 3px; font-family: arial;}.SponsoredLinksAdBox .SponsoredLinkDescription a:link {color: black; text-decoration: none; font-family: arial;}table.SponsoredLinkColumnAds td {padding-bottom: 12px;}</style>"; | |
| }; | |
| /** | |
| * @param {Element} file | |
| * @return {?} | |
| */ | |
| var _forEach = function(file) { | |
| /** @type {string} */ | |
| var copies = '<div id="AUI_A9AdsWidgetAdsWrapper"><table class="AUI_SponsoredLinkColumnAds" style="width:auto; margin-right:40px;"><tbody>'; | |
| var ca = file.ads; | |
| var len = ca.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < len;i++) { | |
| var c = ca[i]; | |
| /** @type {string} */ | |
| copies = copies + ('<tr class="adUnit_js b_"><td><ul><li><div class="AUI_SponsoredLinkTitle"><a class="a-size-medium" style="font-size:15px; padding-top:3px; display:inline-block;" target="_blank" href="' + c.u + '" rel="nofollow">' + (file.options.amazonGrayBullets ? "<b>" + c.t + "</b>" : "<b>" + c.cleanTitle + "</b>") + '</a> <a target="_blank" href="' + c.u + '" rel="nofollow"><img src="//afs.googleusercontent.com/amazon/icon-offsite-sl-7069-t4._V171196157_.png" width="23" alt="opens new browser window" align="absbottom" style="padding-bottom:0px; margin-bottom:0px;" height="20" border="0"></a></div></li></ul></td><td><div class="AUI_SponsoredLinkDescriptionDIV"><span style="padding-top:2px; display:inline-block;"> - </span></div></td><td><div class="AUI_SponsoredLinkDescriptionDIV"><span class="a-size-base" style="padding-top:2px; display:inline-block;">' + | |
| c.l1 + " " + c.l2 + '</span></div></td><td style="padding-left: 10px;"><div class="AUI_SponsoredLinkDescriptionDIV"><a class="a-size-base" style="padding-top:2px; display:inline-block;" target="_blank" href="' + c.u + '" rel="nofollow"><span class="a-color-secondary">' + c.v + "</span></a></div></td></tr>"); | |
| } | |
| return copies += "</tbody></table></div><style>#adBlock {margin-top: 10px;}* {-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;}body {font-size: 13px; line-height: 19px; color: #333; font-family: Arial,sans-serif;}" + (file.options.amazonGrayBullets ? "" : "#AUI_A9AdsWidgetAdsWrapper table {margin-left: 27px; font-family: verdana,arial,helvetica,sans-serif;}") + "table:last-child {margin-bottom: 0!important;}table {margin-bottom: 18px; border-collapse: collapse; width: 100%;}tr:first-child td, tr:first-child th {padding-top: 0;}td:first-child, th:first-child {padding-left: 0;}td, th {padding: 3px;}td, th {vertical-align: top;}td:last-child, th:last-child {padding-right: 0;}ul:last-child, ol:last-child {margin-bottom: 0!important;}ul, ol {padding: 0;}ul {margin: 0 0 18px 18px; color: #aaa;}ul li {" + | |
| (file.options.amazonGrayBullets ? "" : "color: #db9234;") + "}ul li, ol li {word-wrap: break-word; margin: 0;}ul li {list-style: disc;}a, a:visited, a:active, a:link {text-decoration: none; color: #0066c0;}.a-size-medium {font-size: 17px!important; line-height: 1.255!important; font-family: Arial,sans-serif; text-rendering: optimizeLegibility;}a:hover {text-decoration: underline; cursor: pointer; color: #e47911;}.a-size-base {font-size: 13px!important; line-height: 19px!important;}.a-color-secondary {color: #888!important;}img {vertical-align: top;}img {max-width: 100%; border: 0; -ms-interpolation-mode: bicubic;}</style>"; | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Window} context | |
| * @param {number} max | |
| * @return {undefined} | |
| */ | |
| var layout = function(context, max) { | |
| max = max || 130; | |
| /** @type {number} */ | |
| var min = Math.max(1.5 * max, 160); | |
| min = max + min; | |
| var elements = context.document.getElementById("wideSfbl"); | |
| var span = context.document.getElementById("narrowSfbl"); | |
| if (elements) { | |
| if (span) { | |
| if (setShortStyleProperty(context.document.body, false) < min) { | |
| /** @type {string} */ | |
| elements.style.display = "none"; | |
| /** @type {string} */ | |
| span.style.display = "block"; | |
| } else { | |
| /** @type {string} */ | |
| elements.style.display = "block"; | |
| /** @type {string} */ | |
| span.style.display = "none"; | |
| } | |
| } | |
| } | |
| min = qsa(context.document, "div", "wideSitelinksWrapper_js"); | |
| elements = qsa(context.document, "div", "narrowSitelinksWrapper_js"); | |
| span = qsa(context.document, "div", "sitelinksWrapper_js"); | |
| /** @type {null} */ | |
| var suiteView = null; | |
| /** @type {number} */ | |
| var i = 0; | |
| var el; | |
| for (;el = span[i];i++) { | |
| if (0 < el.offsetWidth) { | |
| suiteView = el; | |
| break; | |
| } | |
| } | |
| if (suiteView && 260 > setShortStyleProperty(suiteView, false)) { | |
| /** @type {number} */ | |
| i = 0; | |
| for (;el = min[i];i++) { | |
| /** @type {string} */ | |
| el.style.display = "none"; | |
| } | |
| /** @type {number} */ | |
| i = 0; | |
| for (;el = elements[i];i++) { | |
| /** @type {string} */ | |
| el.style.display = "block"; | |
| } | |
| } else { | |
| /** @type {number} */ | |
| i = 0; | |
| for (;el = min[i];i++) { | |
| /** @type {string} */ | |
| el.style.display = "block"; | |
| } | |
| /** @type {number} */ | |
| i = 0; | |
| for (;el = elements[i];i++) { | |
| /** @type {string} */ | |
| el.style.display = "none"; | |
| } | |
| } | |
| } | |
| } | |
| /** | |
| * @param {?} self | |
| * @return {?} | |
| */ | |
| var listen = function(self) { | |
| return'<div class="sfblSellerNameWrapper" title="' + $(self.B.visDomain) + '"><a class="sfblSellerNameLink" href="' + $(self.B.u) + '"' + reject(self) + ">" + emit({ | |
| text : self.B.nonBreakingVisDomain, | |
| Aa : false, | |
| g : self.A.isRtl | |
| }) + "</a></div>" + (self.sg ? '<div class="sfblSellerRatingsWrapper">' + constructor({ | |
| zc : self.B.sr | |
| }) + "</div>" : ""); | |
| }; | |
| /** | |
| * @param {Object} item | |
| * @return {?} | |
| */ | |
| var has = function(item) { | |
| return "" + (item.A.disableSellerFirstFavicon ? listen({ | |
| B : item.B, | |
| A : item.A, | |
| j : item.j, | |
| sg : item.ld | |
| }) : bind({ | |
| Pa : '<img src="' + $(item.B.furl) + '" class="sfblFavicon"/>', | |
| Qa : "" + listen({ | |
| B : item.B, | |
| A : item.A, | |
| j : item.j, | |
| sg : item.ld | |
| }), | |
| oa : 18, | |
| $a : 3, | |
| Tb : item.A.isRtl | |
| })) + (item.ld ? "" : '<div class="sfblSellerRatingsWrapper">' + constructor({ | |
| zc : item.B.sr | |
| }) + "</div>"); | |
| }; | |
| /** | |
| * @param {Object} self | |
| * @return {?} | |
| */ | |
| var map = function(self) { | |
| /** @type {string} */ | |
| var prefix = '<div class="sfblTitleWrapper"><a href="' + self.B.u + '" class="sfblTitleLink" ' + reject(self) + ">" + text({ | |
| text : self.B.tr, | |
| g : self.A.isRtl | |
| }) + '</a></div><div class="sfblDescriptionWrapper">'; | |
| var config = self.B.l1r; | |
| var options = self.B.l2r; | |
| var green = self.A.isRtl; | |
| /** @type {string} */ | |
| var code = ""; | |
| if (options && options.c) { | |
| var gval = config.rtl || options.rtl; | |
| /** @type {string} */ | |
| code = code + emit({ | |
| Aa : gval, | |
| g : green, | |
| text : text({ | |
| text : config, | |
| g : gval | |
| }) + " " + text({ | |
| text : options, | |
| g : gval | |
| }) | |
| }); | |
| } else { | |
| code += text({ | |
| text : config, | |
| g : green | |
| }); | |
| } | |
| /** @type {string} */ | |
| prefix = prefix + code + "</div>" + fn({ | |
| Ad : self.B.ar, | |
| nb : self.B.gt && "ar" == self.B.gt.r ? self.B.gt.t : null, | |
| g : self.A.isRtl | |
| }) + each({ | |
| Pe : self.B.plus_ones, | |
| j : self.j | |
| }) + after({ | |
| De : self.B.location, | |
| g : self.A.isRtl | |
| }) + _set({ | |
| vd : self.B.oh, | |
| nb : self.B.gt && "oh" == self.B.gt.r ? self.B.gt.t : null, | |
| kh : self.A.offerHighlightWithIcon | |
| }); | |
| self = self.B.sls && 0 < self.B.sls.length ? func(remove({ | |
| uid : "", | |
| ha : self.B.sls, | |
| j : self.j, | |
| Wg : "sfblSitelink", | |
| Vg : "sfblSitelink", | |
| nh : "sfblSitelinksWrapper" | |
| })) : ""; | |
| return prefix + self; | |
| }; | |
| /** @type {Window} */ | |
| var context = window; | |
| /** | |
| * @param {boolean} recurring | |
| * @param {Object} element | |
| * @return {?} | |
| */ | |
| var getWindowSize = function(recurring, element) { | |
| var win = element || context; | |
| if (recurring) { | |
| if (win.top != win) { | |
| win = win.top; | |
| } | |
| } | |
| try { | |
| var d; | |
| if (win.document && !win.document.body) { | |
| d = new Node(-1, -1); | |
| } else { | |
| var doc = (win || window).document; | |
| var n = "CSS1Compat" == doc.compatMode ? doc.documentElement : doc.body; | |
| d = new Node(n.clientWidth, n.clientHeight); | |
| } | |
| return d; | |
| } catch (g) { | |
| return new Node(-12245933, -12245933); | |
| } | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| var pdataCur = new handler("ijsp"); | |
| var defs = {}; | |
| /** @type {null} */ | |
| var tok = null; | |
| var self = new copy("iframe"); | |
| var ecConfig = { | |
| zf : 0, | |
| Gh : 2, | |
| Hc : 3, | |
| Ec : 6 | |
| }; | |
| var vals = { | |
| ads : ecConfig.zf, | |
| rss : ecConfig.Gh, | |
| pbs : ecConfig.Hc, | |
| jb : ecConfig.Ec | |
| }; | |
| var collection = { | |
| /** @type {function (Element): ?} */ | |
| bulleted : _forEach, | |
| /** @type {function (?): ?} */ | |
| numbered : clone_geometry | |
| }; | |
| var message = { | |
| 0 : "ad-left", | |
| 1 : "title-right" | |
| }; | |
| var els = { | |
| 0 : "off", | |
| 1 : "low", | |
| 2 : "med", | |
| 3 : "high" | |
| }; | |
| var json = {}; | |
| var files = {}; | |
| /** | |
| * @param {Object} b | |
| * @return {?} | |
| */ | |
| var expect = function(b) { | |
| if (!tok) { | |
| if (b.name) { | |
| tok = (b = b.name.match(/master-(\d+)/)) && b[1] ? b[1] : null; | |
| } | |
| } | |
| if (!tok) { | |
| /** @type {number} */ | |
| tok = -1; | |
| } | |
| return tok; | |
| }; | |
| expect = cb(expect, "gMN"); | |
| /** | |
| * @param {Window} ctx | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| var t = function(ctx, n) { | |
| try { | |
| return isNaN(ctx.document.getElementById(n)); | |
| } catch (c) { | |
| return null; | |
| } | |
| }; | |
| t = cb(t, "gBH"); | |
| /** | |
| * @param {Window} ctx | |
| * @param {string} id | |
| * @return {?} | |
| */ | |
| var id = function(ctx, id) { | |
| try { | |
| return setShortStyleProperty(ctx.document.getElementById(id), false); | |
| } catch (c) { | |
| return null; | |
| } | |
| }; | |
| id = cb(id, "gBW"); | |
| /** | |
| * @param {Object} a | |
| * @param {?} key | |
| * @return {?} | |
| */ | |
| var make = function(a, key) { | |
| /** @type {Array} */ | |
| var buf = []; | |
| /** @type {Array} */ | |
| var eventPath = []; | |
| var prefix; | |
| for (prefix in a) { | |
| var cur = ok(prefix, key); | |
| if (null == cur) { | |
| delete a[prefix]; | |
| } else { | |
| buf.push(prefix); | |
| eventPath.push(cur); | |
| } | |
| } | |
| return{ | |
| frames : eventPath, | |
| names : buf | |
| }; | |
| }; | |
| make = cb(make, "cFr"); | |
| /** | |
| * @param {?} context | |
| * @return {undefined} | |
| */ | |
| var base = function(context) { | |
| var testSource = make(defs, context).names; | |
| var name; | |
| for (name in testSource) { | |
| clear(ok(testSource[name], context), testSource[name]); | |
| var revisionCheckbox = sort(testSource[name], context); | |
| layout(ok(testSource[name], context), revisionCheckbox.sellerColumnWidth); | |
| } | |
| }; | |
| base = cb(base, "aPE"); | |
| /** | |
| * @param {?} name | |
| * @return {undefined} | |
| */ | |
| var el = function(name) { | |
| var f = make(defs, name); | |
| var files = f.names; | |
| name = content(f.frames, defer(el, name)); | |
| /** @type {number} */ | |
| f = 0; | |
| for (;f < name.length;f++) { | |
| if (null != name[f]) { | |
| self.Lb(files[f] + ".h", name[f]); | |
| } | |
| } | |
| _(self); | |
| }; | |
| el = cb(el, "sPH"); | |
| /** | |
| * @param {?} node | |
| * @param {Object} args | |
| * @return {undefined} | |
| */ | |
| var params = function(node, args) { | |
| base(node, args); | |
| el(node); | |
| }; | |
| params = cb(params, "oR"); | |
| var testSource = { | |
| titleLink : "&nb=0", | |
| sfblTitleLink : "&nb=0", | |
| domainLink : "&nb=1", | |
| sfblSellerNameLink : "&nb=1", | |
| sl : "&nb=6", | |
| sfblSitelink : "&nb=6", | |
| textLink : "&nb=7", | |
| nArr : "&nb=8", | |
| ctcBtnLink : "&nb=14", | |
| amazonExternalLinkImage_js : "&nb=9" | |
| }; | |
| /** | |
| * @param {Element} list | |
| * @return {?} | |
| */ | |
| var _showElement = function(list) { | |
| /** @type {Array} */ | |
| var value = []; | |
| list = list.getElementsByTagName("a"); | |
| /** @type {number} */ | |
| var _i = 0; | |
| var item; | |
| for (;item = list[_i];_i++) { | |
| var e; | |
| /** @type {HTMLDocument} */ | |
| var doc = document; | |
| try { | |
| var y; | |
| var node = item; | |
| var view = doc.defaultView || {}; | |
| if (view && view.getComputedStyle) { | |
| var style = view.getComputedStyle(node, false); | |
| y = style ? style.getPropertyValue("display") : null; | |
| } else { | |
| var s = node.currentStyle; | |
| y = s ? s.display : null; | |
| } | |
| /** @type {boolean} */ | |
| e = null != y && "none" != y; | |
| } catch (w) { | |
| /** @type {boolean} */ | |
| e = false; | |
| } | |
| if (e) { | |
| var name; | |
| for (name in testSource) { | |
| if (addClass(item, name)) { | |
| value.push(new Resource(item, testSource[name])); | |
| break; | |
| } | |
| } | |
| } | |
| } | |
| return value; | |
| }; | |
| _showElement = cb(_showElement, "gTASSL"); | |
| /** | |
| * @param {Window} obj | |
| * @param {string} name | |
| * @return {undefined} | |
| */ | |
| var clear = function(obj, name) { | |
| var iframe = obj.document.getElementById("attribution"); | |
| var label = obj.document.getElementById("adsLabel"); | |
| var node = obj.document.getElementById("megaLabel"); | |
| if (label || node) { | |
| var file; | |
| if (files[name]) { | |
| file = files[name]; | |
| } else { | |
| /** @type {number} */ | |
| file = 20; | |
| if (node) { | |
| file += createElement(node).width; | |
| } else { | |
| if (label) { | |
| file += createElement(label).width; | |
| if (iframe) { | |
| file += createElement(iframe).width; | |
| file += 20; | |
| } | |
| } | |
| } | |
| /** @type {number} */ | |
| files[name] = file; | |
| } | |
| var ret = parseFloat(obj.document, "adBlock"); | |
| ret = style(ret); | |
| if (file > ret) { | |
| if (node) { | |
| /** @type {string} */ | |
| node.style.display = "none"; | |
| if (iframe) { | |
| /** @type {string} */ | |
| iframe.style.display = ""; | |
| } else { | |
| /** @type {string} */ | |
| node.parentNode.style.display = "none"; | |
| } | |
| } else { | |
| /** @type {string} */ | |
| label.style.display = "none"; | |
| if (!iframe) { | |
| /** @type {string} */ | |
| label.parentNode.style.display = "none"; | |
| } | |
| } | |
| } else { | |
| if (node) { | |
| /** @type {string} */ | |
| node.style.display = ""; | |
| /** @type {string} */ | |
| node.parentNode.style.display = ""; | |
| if (iframe) { | |
| /** @type {string} */ | |
| iframe.style.display = "none"; | |
| } | |
| } else { | |
| /** @type {string} */ | |
| label.style.display = ""; | |
| /** @type {string} */ | |
| label.parentNode.style.display = ""; | |
| } | |
| } | |
| } | |
| }; | |
| clear = cb(clear, "aH"); | |
| /** | |
| * @param {Object} el | |
| * @param {?} resp | |
| * @param {Object} options | |
| * @return {undefined} | |
| */ | |
| var query = function(el, resp, options) { | |
| el = el.document.getElementsByTagName("table"); | |
| var len = el.length; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < len;i++) { | |
| var e = el[i]; | |
| if (addClass(e, "sl-table")) { | |
| if (!addClass(e.parentNode, "invisible")) { | |
| success(e, resp, options); | |
| } | |
| } | |
| } | |
| }; | |
| query = cb(query, "aSL"); | |
| /** | |
| * @param {Object} node | |
| * @return {?} | |
| */ | |
| var empty = function(node) { | |
| if (node instanceof Array) { | |
| /** @type {number} */ | |
| var t = 0; | |
| for (;t < node.length;t++) { | |
| if (empty(node[t])) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| return node.offsetHeight > createElement(node).height; | |
| }; | |
| empty = cb(empty, "iW"); | |
| /** | |
| * @param {Array} body | |
| * @return {undefined} | |
| */ | |
| var pop = function(body) { | |
| for (;0 < body.length;) { | |
| var tabPage = body.pop(); | |
| if (tabPage) { | |
| tabPage.parentNode.removeChild(tabPage); | |
| } | |
| } | |
| }; | |
| pop = cb(pop, "rLON"); | |
| /** | |
| * @param {Element} el | |
| * @param {?} status | |
| * @param {Object} resp | |
| * @return {undefined} | |
| */ | |
| var success = function(el, status, resp) { | |
| var data = el.getElementsByTagName("div"); | |
| /** @type {Array} */ | |
| var parts = []; | |
| /** @type {Array} */ | |
| var toread = []; | |
| /** @type {number} */ | |
| var name = 0; | |
| var src; | |
| for (;src = data[name];name++) { | |
| if ("sl-left" == src.className && 3 > parts.length) { | |
| parts.push(src); | |
| } else { | |
| if ("sl-right" == src.className) { | |
| if (3 > toread.length) { | |
| toread.push(src); | |
| } | |
| } | |
| } | |
| } | |
| /** @type {Array} */ | |
| data = []; | |
| for (;0 < parts.length;) { | |
| if (0 < toread.length) { | |
| data.push([parts.shift(), toread.shift()]); | |
| } else { | |
| data.push([parts.shift()]); | |
| } | |
| } | |
| if (status) { | |
| finish(el, data); | |
| } else { | |
| destroy(el, data, resp); | |
| } | |
| css(el, "visibility", "visible"); | |
| }; | |
| success = cb(success, "aSL"); | |
| /** | |
| * @param {Element} e | |
| * @param {Array} data | |
| * @return {undefined} | |
| */ | |
| var destroy = function(e, data) { | |
| var valuesLen = e.getElementsByTagName("a").length; | |
| for (;1 < data.length && empty(data);) { | |
| pop(data.pop()); | |
| } | |
| if (1 == data.length) { | |
| finish(e, data); | |
| } | |
| var el = qsa(e.parentNode, "div", "c_"); | |
| if (1 == el.length) { | |
| el = el[0]; | |
| var i = e.getElementsByTagName("a").length; | |
| if (i < valuesLen && 3 > i) { | |
| /** @type {number} */ | |
| valuesLen = style(el) - 15; | |
| if (125 > valuesLen) { | |
| /** @type {number} */ | |
| valuesLen = 125; | |
| } | |
| var elem = el.getElementsByTagName("div"); | |
| /** @type {number} */ | |
| var l = 0; | |
| /** @type {number} */ | |
| var pos = 0; | |
| var node; | |
| for (;node = elem[pos];pos++) { | |
| if (createElement(node).width <= valuesLen && 3 > l) { | |
| l++; | |
| } else { | |
| /** @type {string} */ | |
| node.style.display = "none"; | |
| } | |
| } | |
| if (l > i) { | |
| css(el, "visibility", "visible"); | |
| /** @type {string} */ | |
| e.style.display = "none"; | |
| } else { | |
| /** @type {string} */ | |
| el.style.display = "none"; | |
| } | |
| } else { | |
| /** @type {string} */ | |
| el.style.display = "none"; | |
| } | |
| } | |
| }; | |
| destroy = cb(destroy, "uS"); | |
| /** | |
| * @param {Element} e | |
| * @param {Array} r | |
| * @return {undefined} | |
| */ | |
| var finish = function(e, r) { | |
| var node = r.shift(); | |
| for (;0 < r.length;) { | |
| pop(r.pop()); | |
| } | |
| if (node[1]) { | |
| if (!empty(node)) { | |
| close(node[0].firstChild, "l"); | |
| close(node[1].firstChild, "r"); | |
| node[0].innerHTML += " - " + node[1].innerHTML; | |
| } | |
| node[1].parentNode.removeChild(node[1]); | |
| node.pop(); | |
| } | |
| /** @type {string} */ | |
| e.className = "sl-table-ol"; | |
| /** @type {string} */ | |
| node[0].className = "sl-left-ol"; | |
| if (empty(node[0])) { | |
| pop(node); | |
| } | |
| }; | |
| finish = cb(finish, "hSLS"); | |
| /** | |
| * @param {number} el | |
| * @param {number} opt_attributes | |
| * @return {?} | |
| */ | |
| var one = function(el, opt_attributes) { | |
| return style(el) < opt_attributes; | |
| }; | |
| one = cb(one, "sHNE"); | |
| /** | |
| * @param {boolean} text | |
| * @return {?} | |
| */ | |
| var info = function(text) { | |
| return createTextNode() && !text; | |
| }; | |
| info = cb(info, "rCS"); | |
| /** | |
| * @param {string} text | |
| * @return {?} | |
| */ | |
| var merge = function(text) { | |
| /** @type {Array} */ | |
| var r = []; | |
| var lineEnd = text.indexOf("<a"); | |
| if (-1 != lineEnd) { | |
| /** @type {Array} */ | |
| r = r.concat([text.substring(0, lineEnd + 3), "TARGET", text.substring(lineEnd + 2)]); | |
| } else { | |
| r.push(text); | |
| } | |
| return r; | |
| }; | |
| merge = cb(merge, "pPSTA"); | |
| /** | |
| * @param {Object} elem | |
| * @return {undefined} | |
| */ | |
| var children = function(elem) { | |
| /** @type {number} */ | |
| var pos = 0; | |
| var node; | |
| for (;node = elem[pos];pos++) { | |
| if (node.plus_ones) { | |
| node.plus_ones = merge(node.plus_ones); | |
| } | |
| } | |
| }; | |
| children = cb(children, "aPOT"); | |
| /** | |
| * @param {string} e | |
| * @param {Object} d | |
| * @return {?} | |
| */ | |
| var sort = function(e, d) { | |
| var data = d[e]; | |
| if (!data) { | |
| util.log({ | |
| message : "frameOptions is undefined for " + e | |
| }, "fAU"); | |
| data = {}; | |
| } | |
| return data; | |
| }; | |
| sort = cb(sort, "gFO"); | |
| /** | |
| * @param {?} obj | |
| * @param {string} value | |
| * @param {number} el | |
| * @param {Object} cfg | |
| * @param {Object} data | |
| * @param {Object} name | |
| * @param {Object} val | |
| * @return {undefined} | |
| */ | |
| var _init = function(obj, value, el, cfg, data, name, val) { | |
| data = sort(value, data); | |
| /** @type {boolean} */ | |
| var i = !!name.fillEuData && !name.fillPlaEuData; | |
| /** @type {boolean} */ | |
| var failuresLink = !!name.fillPlaEuData; | |
| var d = (0,eval)(data); | |
| if (cfg.hasOwnProperty("gbrs")) { | |
| b: { | |
| var arr = val.ipa; | |
| /** @type {null} */ | |
| var fn = null; | |
| /** @type {null} */ | |
| var n = null; | |
| val = cfg.gbrs; | |
| if (val.hasOwnProperty("scrs")) { | |
| /** @type {function (string, string, number, string, number, string, string, boolean): ?} */ | |
| fn = onWindowResize; | |
| n = val.scrs; | |
| } else { | |
| if (val.hasOwnProperty("fcrs")) { | |
| /** @type {function (Object, string, number, string, number, string, string, boolean): ?} */ | |
| fn = drawImage; | |
| n = val.fcrs; | |
| } else { | |
| util.log({ | |
| message : "PLA grid render spec failed to provide a valid format." | |
| }, "crpGc"); | |
| cfg = result; | |
| break b; | |
| } | |
| } | |
| var u = n.bc; | |
| var charOffset = u && "#ffffff" == u.toLowerCase(); | |
| var info = log(n.ff); | |
| var y = val.i; | |
| /** @type {Array} */ | |
| var ret = []; | |
| /** @type {number} */ | |
| var prop = 0; | |
| for (;prop < cfg.plas.length;prop++) { | |
| ret.push(fn(cfg.plas[prop], n, arr, y, d, charOffset, i, failuresLink)); | |
| } | |
| cfg = new Node(n.w, n.h); | |
| cfg = 0 == ret.length ? result : new Processing(ret, new Node(y + val.c * (cfg.width + y), y + val.r * (cfg.height + y)), y, u, info, ret[0].te(), flow); | |
| } | |
| } else { | |
| util.log({ | |
| message : "PLA block json failed to provide a known render spec." | |
| }, "crpBc"); | |
| cfg = result; | |
| } | |
| appendChild(cfg.f(), obj, el); | |
| cfg.Vh(obj); | |
| self.Lb(value + ".w", cfg.Ji().width); | |
| cfg = cfg.Hi(); | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < cfg.length;i++) { | |
| refresh(cfg[i].Wb(obj.document), cfg[i].lg(obj.document), el, name); | |
| } | |
| obj = round(value); | |
| register(data, el, obj, name); | |
| }; | |
| _init = cb(_init, "fP"); | |
| /** | |
| * @param {Element} s | |
| * @param {string} x | |
| * @param {number} el | |
| * @param {Element} m | |
| * @param {Object} data | |
| * @param {Object} name | |
| * @param {Object} options | |
| * @return {undefined} | |
| */ | |
| var warn = function(s, x, el, m, data, name, options) { | |
| data = sort(x, data); | |
| var camelKey = {}; | |
| output(options.msgs, camelKey); | |
| if (m = reset(m, camelKey, (0,eval)(data), !!name.fillSingleProductEuData, !!name.uiExp2)) { | |
| appendChild(m.f(), s, el); | |
| m.xj(s.document); | |
| self.Lb(x + ".w", m.Ki(s.document)); | |
| s = round(x); | |
| register(data, el, s, name); | |
| } | |
| }; | |
| warn = cb(warn, "fJ"); | |
| /** | |
| * @param {?} node | |
| * @param {string} x | |
| * @param {number} el | |
| * @param {?} dataAndEvents | |
| * @param {Object} data | |
| * @param {Object} name | |
| * @return {?} | |
| */ | |
| var getValue = function(node, x, el, dataAndEvents, data, name) { | |
| if (!name.uiExp1 && !name.amazonTemplateEnabled) { | |
| return false; | |
| } | |
| data = sort(x, data); | |
| var method = data.amazonTheme; | |
| if (!collection.hasOwnProperty(method)) { | |
| return false; | |
| } | |
| appendChild((0, collection[method])({ | |
| ads : dataAndEvents, | |
| options : data | |
| }), node, el); | |
| element(el, name); | |
| node = round(x); | |
| register(data, el, node, name); | |
| return true; | |
| }; | |
| getValue = cb(getValue, "fAA"); | |
| /** | |
| * @param {Window} context | |
| * @param {string} value | |
| * @param {number} el | |
| * @param {Element} parent | |
| * @param {Object} data | |
| * @param {Object} item | |
| * @param {Object} options | |
| * @return {undefined} | |
| */ | |
| var setup = function(context, value, el, parent, data, item, options) { | |
| data = sort(value, data); | |
| var row = options.attr; | |
| /** @type {null} */ | |
| var rv = null; | |
| /** @type {null} */ | |
| var restoreScript = null; | |
| /** @type {null} */ | |
| var camelKey = null; | |
| var later = item.rhsAttribution && data.rightHandAttribution || item.isHighendMobile && false !== data.rightHandAttribution; | |
| var oldconfig = later && !(item.isHighendMobile && item.uiExp1); | |
| /** @type {boolean} */ | |
| var typePattern = 0 != data.domainLinkAboveDescription; | |
| var udataCur = data.type || "ads"; | |
| /** @type {boolean} */ | |
| var text = false; | |
| var obj = options.iaa; | |
| /** @type {null} */ | |
| var scripts = null; | |
| /** @type {null} */ | |
| var suiteView = null; | |
| /** @type {null} */ | |
| var res = null; | |
| res = options.vw; | |
| if (null != obj) { | |
| scripts = obj.t; | |
| suiteView = obj.b; | |
| /** @type {boolean} */ | |
| oldconfig = false; | |
| } | |
| if (item.isRtl) { | |
| /** @type {string} */ | |
| context.document.dir = "rtl"; | |
| } | |
| if (data.adsLabel) { | |
| camelKey = options.ads_label || null; | |
| } | |
| if ("relatedsearch" == udataCur) { | |
| if (row) { | |
| if ("ads" == udataCur) { | |
| rv = row.u; | |
| var key = data.attributionText; | |
| restoreScript = row.alt_t && row.alt_t[key] ? row.alt_t[key] : "Ads" == data.attributionText ? "Ads" : row.t; | |
| } else { | |
| if ("relatedsearch" == udataCur) { | |
| restoreScript = options.rs_attr.t; | |
| rv = options.rs_attr.u; | |
| if (data.horizontalFlow) { | |
| restoreScript += ":"; | |
| } | |
| } | |
| } | |
| } | |
| if (restoreScript || camelKey) { | |
| first(null, rv, restoreScript, camelKey, null, later, context, el); | |
| /** @type {boolean} */ | |
| text = true; | |
| } else { | |
| (void 0)(context); | |
| } | |
| } else { | |
| /** @type {null} */ | |
| udataCur = null; | |
| if (item.suppliedAttribution && data.attributionText) { | |
| obj = { | |
| t : data.attributionText | |
| }; | |
| if (data.attributionHref) { | |
| obj.u = data.attributionHref; | |
| } | |
| } else { | |
| /** @type {null} */ | |
| obj = null; | |
| } | |
| if (null != obj) { | |
| row = obj; | |
| } else { | |
| /** @type {(string|undefined)} */ | |
| key = data.position ? "ad-block-position-" + data.position : void 0; | |
| } | |
| if (null != row) { | |
| if (data.detailedAttribution || 0 != data.detailedAttribution && item.megaLabelExp) { | |
| udataCur = row.t2; | |
| } | |
| rv = row.u; | |
| restoreScript = row.t; | |
| } | |
| if (suiteView || (restoreScript || (camelKey || udataCur))) { | |
| first(suiteView, rv, restoreScript, camelKey, udataCur, later, context, el, key); | |
| /** @type {boolean} */ | |
| text = true; | |
| } | |
| } | |
| children(parent); | |
| if (!(row = info(text))) { | |
| render(item, context, el, data, oldconfig); | |
| } | |
| rv = one(el, 300); | |
| scripts = scripts && !rv ? new Renderer(scripts) : result; | |
| res = run(parent, context, value, el, data, equals(data, item), !!item.clickableText, typePattern, scripts, res, item, options); | |
| if (row) { | |
| render(item, context, el, data, oldconfig); | |
| } | |
| if (parent = context.document.getElementById("attrHeader")) { | |
| if (scripts != result) { | |
| css(parent, "display", "none"); | |
| } | |
| } | |
| clear(context, value); | |
| query(context, equal(data, item), item); | |
| value = round(value); | |
| register(data, el, value, item); | |
| if (equals(data, item)) { | |
| enter(el, concatCall(data, item), value); | |
| } | |
| if (res) { | |
| res.W(context, item); | |
| } else { | |
| element(el, item); | |
| } | |
| layout(context, data.sellerColumnWidth); | |
| }; | |
| setup = cb(setup, "fA"); | |
| /** | |
| * @param {number} element | |
| * @param {Object} o | |
| * @return {undefined} | |
| */ | |
| var element = function(element, o) { | |
| var result = qsa(element, "div", "adUnit_js"); | |
| result = result.concat(qsa(element, "tr", "adUnit_js")); | |
| /** @type {number} */ | |
| var _i = 0; | |
| var x; | |
| for (;x = result[_i];_i++) { | |
| refresh(_showElement(x), x, element, o); | |
| } | |
| }; | |
| element = cb(element, "aSSTATU"); | |
| /** | |
| * @param {Object} el | |
| * @param {Object} record | |
| * @param {Object} p | |
| * @return {undefined} | |
| */ | |
| var find = function(el, record, p) { | |
| var props = {}; | |
| if (p.bs) { | |
| /** @type {number} */ | |
| var j = 0; | |
| var route; | |
| for (;route = p.bs[j];j++) { | |
| if (route.container == el.container) { | |
| props = route; | |
| break; | |
| } | |
| } | |
| } | |
| if (p = p.ps) { | |
| var i; | |
| for (i in p) { | |
| if (p.hasOwnProperty(i)) { | |
| props[i] = p[i]; | |
| } | |
| } | |
| } | |
| for (i in props) { | |
| if (props.hasOwnProperty(i)) { | |
| if ("" !== props[i]) { | |
| /** @type {string} */ | |
| p = i.replace(/_(.)/g, function(dataAndEvents, letter) { | |
| return letter.toUpperCase(); | |
| }); | |
| if (!!record[p]) { | |
| if (!("clicktrackUrl" == p && el[p])) { | |
| el[p] = props[i]; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if ("boolean" == typeof el.linkTarget) { | |
| /** @type {string} */ | |
| el.linkTarget = el.linkTarget ? "_blank" : "_top"; | |
| } | |
| if ("number" == typeof el.adIconLocation) { | |
| el.adIconLocation = message[el.adIconLocation]; | |
| } | |
| if ("number" == typeof el.adsafe) { | |
| el.adsafe = els[el.adsafe]; | |
| } | |
| html(el, "adBorderSelections"); | |
| html(el, "borderSelections"); | |
| html(el, "fontFamily"); | |
| html(el, "fontFamilyAttribution"); | |
| }; | |
| find = cb(find, "fSSS"); | |
| /** | |
| * @param {Object} object | |
| * @param {string} index | |
| * @return {undefined} | |
| */ | |
| var html = function(object, index) { | |
| if (object[index] instanceof Array) { | |
| if (0 == object[index].length) { | |
| delete object[index]; | |
| } else { | |
| object[index] = object[index].join(","); | |
| } | |
| } | |
| }; | |
| html = cb(html, "cSLSTS"); | |
| /** | |
| * @param {string} name | |
| * @param {Function} value | |
| * @return {?} | |
| */ | |
| var ok = function(name, value) { | |
| if (name == value.name) { | |
| return window; | |
| } | |
| /** @type {null} */ | |
| var src = null; | |
| try { | |
| if (src = window.parent.frames[name + "|" + window.name]) { | |
| return src; | |
| } | |
| } catch (d) { | |
| } | |
| try { | |
| if (src = window.parent.frames[name]) { | |
| return src; | |
| } | |
| } catch (e) { | |
| } | |
| return null; | |
| }; | |
| ok = cb(ok, "gFBN"); | |
| /** | |
| * @param {Object} s | |
| * @param {Object} res | |
| * @param {Object} names | |
| * @return {undefined} | |
| */ | |
| var list = function(s, res, names) { | |
| var key; | |
| for (key in json) { | |
| var node = json[key]; | |
| if (0 == node.length) { | |
| util.log({ | |
| message : key | |
| }, "mPAASH2"); | |
| } else { | |
| var e = ok(key, s); | |
| if (null != e) { | |
| /** @type {null} */ | |
| var failuresLink = null; | |
| try { | |
| failuresLink = e.document.getElementById("adBlock"); | |
| } catch (h) { | |
| } | |
| if (null != failuresLink) { | |
| if (node[0].type == ecConfig.Hc) { | |
| _init(e, key, failuresLink, node[0], s, res, names); | |
| } else { | |
| if (node[0].type == ecConfig.Ec) { | |
| warn(e, key, failuresLink, node[0], s, res, names); | |
| } else { | |
| if (!getValue(e, key, failuresLink, node, s, res)) { | |
| setup(e, key, failuresLink, node, s, res, names); | |
| } | |
| } | |
| } | |
| /** @type {boolean} */ | |
| defs[key] = true; | |
| delete json[key]; | |
| } | |
| } | |
| } | |
| } | |
| params(s, res); | |
| }; | |
| list = cb(list, "mPAASH"); | |
| /** | |
| * @param {Element} ctx | |
| * @param {number} node | |
| * @param {number} value | |
| * @return {?} | |
| */ | |
| var post = function(ctx, node, value) { | |
| return("number" == typeof node && 16 > node || "number" == typeof value && 16 > value) && ((ctx = ctx.document.getElementById("adBlock")) && "" != ctx.innerHTML) ? true : false; | |
| }; | |
| post = cb(post, "iCSI"); | |
| /** | |
| * @param {Array} codeSegments | |
| * @param {?} callback | |
| * @return {?} | |
| */ | |
| var content = function(codeSegments, callback) { | |
| /** @type {boolean} */ | |
| var c = false; | |
| /** @type {Array} */ | |
| var assigns = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| var test = codeSegments[i]; | |
| var vvar = t(test, "adBlock"); | |
| var tests = id(test, "adBlock"); | |
| if (post(test, vvar, tests)) { | |
| /** @type {null} */ | |
| vvar = null; | |
| /** @type {boolean} */ | |
| c = true; | |
| } | |
| assigns.push(vvar); | |
| } | |
| if (c) { | |
| window.setTimeout(callback, 10); | |
| } | |
| return assigns; | |
| }; | |
| content = cb(content, "gFH"); | |
| /** | |
| * @param {number} i | |
| * @param {Array} x | |
| * @param {Object} result | |
| * @return {?} | |
| */ | |
| var bound = function(i, x, result) { | |
| var value; | |
| /** @type {number} */ | |
| value = Math.max.apply(Math, i); | |
| /** @type {number} */ | |
| i = Math.min.apply(Math, i); | |
| if (value - i > threshold) { | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < x.length;i++) { | |
| value = x[i]; | |
| /** @type {null} */ | |
| result[value] = null; | |
| } | |
| } | |
| return result; | |
| }; | |
| bound = cb(bound, "pBDF"); | |
| /** | |
| * @param {Object} o | |
| * @param {Object} obj | |
| * @return {?} | |
| */ | |
| var event = function(o, obj) { | |
| var result = {}; | |
| /** @type {boolean} */ | |
| var valid = false; | |
| /** @type {Array} */ | |
| var classNames = []; | |
| /** @type {Array} */ | |
| var c = []; | |
| var key; | |
| for (key in obj) { | |
| if (key in o) { | |
| var element = obj[key]; | |
| var value = o[key]; | |
| if ("undefined" != typeof value) { | |
| value = matches(element, value); | |
| if (null != value) { | |
| result[key] = value; | |
| if (element.a == ELEMENT_NODE) { | |
| classNames.push(value); | |
| c.push(key); | |
| } | |
| /** @type {boolean} */ | |
| valid = true; | |
| } | |
| } | |
| } | |
| } | |
| if (0 < classNames.length) { | |
| result = bound(classNames, c, result); | |
| } | |
| return valid ? result : null; | |
| }; | |
| event = cb(event, "vO"); | |
| /** | |
| * @param {string} name | |
| * @param {Object} selector | |
| * @return {?} | |
| */ | |
| var jQuery = function(name, selector) { | |
| return name ? event(name, selector) : null; | |
| }; | |
| jQuery = cb(jQuery, "vCO"); | |
| /** | |
| * @param {Object} o | |
| * @param {Object} c | |
| * @return {undefined} | |
| */ | |
| var color = function(o, c) { | |
| var p; | |
| for (p in c) { | |
| o[p] = c[p]; | |
| } | |
| }; | |
| color = cb(color, "iCO"); | |
| /** | |
| * @param {?} eventName | |
| * @param {?} arg | |
| * @return {?} | |
| */ | |
| var define = function(eventName, arg) { | |
| return(/^slave-\d+-\d+$/.test(eventName) || /^master-\d+$/.test(eventName)) && "object" == typeof arg; | |
| }; | |
| define = cb(define, "iPABO"); | |
| /** | |
| * @param {string} value | |
| * @return {?} | |
| */ | |
| var iterator = function(value) { | |
| return trim(value) || {}; | |
| }; | |
| iterator = cb(iterator, "pNAO"); | |
| /** | |
| * @param {Object} item | |
| * @param {Object} root | |
| * @param {Object} nodes | |
| * @return {?} | |
| */ | |
| var attr = function(item, root, nodes) { | |
| var c = jQuery(window.CSE_OPTIONS_, root); | |
| var attrs = {}; | |
| var key; | |
| for (key in item) { | |
| var name = item[key]; | |
| if ("name" == key) { | |
| attrs[key] = /^slave-\d+-\d+$/.test(name) || /^master-\d+$/.test(name) ? name : null; | |
| } else { | |
| if (define(key, name)) { | |
| if (name.adPageId) { | |
| find(name, root, nodes); | |
| } | |
| name = event(name, root); | |
| if (c) { | |
| color(name, c); | |
| } | |
| attrs[key] = name; | |
| /** @type {Array} */ | |
| json[key] = []; | |
| } | |
| } | |
| } | |
| return attrs; | |
| }; | |
| attr = cb(attr, "vNAO"); | |
| /** | |
| * @param {Element} el | |
| * @param {string} property | |
| * @param {string} value | |
| * @return {undefined} | |
| */ | |
| var css = function(el, property, value) { | |
| /** @type {string} */ | |
| el.style[property] = value; | |
| }; | |
| css = cb(css, "sS"); | |
| /** | |
| * @param {Object} t | |
| * @return {?} | |
| */ | |
| var translate = function(t) { | |
| return t.titleLetterSpacing || ""; | |
| }; | |
| translate = cb(translate, "gTLS"); | |
| /** | |
| * @param {Object} event | |
| * @param {Array} data | |
| * @return {undefined} | |
| */ | |
| var error = function(event, data) { | |
| var type = event.resultsPageBaseUrl; | |
| var files = event.resultsPageQueryParam; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < data.length;i++) { | |
| var arg = data[i].t; | |
| var photo = data[i].afdt; | |
| if (null != arg && null != photo) { | |
| if (!type) { | |
| throw removeListener("resultsPageBaseUrl resultsPageBaseUrl needs to be set."); | |
| } | |
| var result = new token(type); | |
| callback(result, files, arg); | |
| callback(result, "rsToken", photo); | |
| data[i].l = require(result); | |
| data[i].u = require(result); | |
| } | |
| } | |
| }; | |
| error = cb(error, "fRSCL"); | |
| /** | |
| * @param {Object} msg | |
| * @param {number} i | |
| * @param {boolean} value | |
| * @param {string} obj | |
| * @param {Object} length | |
| * @return {?} | |
| */ | |
| var save = function(msg, i, value, obj, length) { | |
| var l = i.horizontalFlow ? -1 : i.columns; | |
| if (2 <= l) { | |
| /** @type {Object} */ | |
| var message = msg; | |
| if (0 >= l) { | |
| msg = message; | |
| } else { | |
| /** @type {Array} */ | |
| msg = []; | |
| /** @type {number} */ | |
| var n = 0; | |
| /** @type {number} */ | |
| var c = 0; | |
| for (;c < l;c++) { | |
| /** @type {number} */ | |
| var z = Math.ceil((message.length - n) / (l - c)); | |
| /** @type {number} */ | |
| var y = 0; | |
| for (;y < z;y++) { | |
| msg[y * l + c] = message[n++]; | |
| } | |
| } | |
| } | |
| } | |
| /** @type {Object} */ | |
| message = msg; | |
| /** @type {boolean} */ | |
| i = !i.horizontalFlow; | |
| if (length && (length.mk && (1 == l || 2 <= l && length.lk))) { | |
| value = (void 0)(length, msg.length); | |
| l = obj.g; | |
| /** @type {string} */ | |
| obj = '<div class="la_">'; | |
| length = message.length; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < length;i++) { | |
| msg = message[i]; | |
| obj += '<div class="ma_" style="border-' + (l ? "right" : "left") + "-color: " + start(toString(value[i])) + '"><a href="' + start(replace(msg.l)) + '" class="titleLink popstripeRs" target="_top">' + parent(forEach({ | |
| text : msg.t, | |
| g : l | |
| })); | |
| obj += '<div class="na_" style="background-image: url(' + start(replace(msg.adIconUrl && ("ad-left" == msg.adIconLocation && msg.img) ? msg.adIconUrl : "//www.gstatic.com/domainads/images/chevron-white.png")) + ')"></div></a></div>'; | |
| } | |
| value = func(obj + "</div>"); | |
| } else { | |
| /** @type {string} */ | |
| obj = "" + ('<table cellspacing="0" cellpadding="0"' + (2 <= l || i ? ' width="100%"' : "") + "><tbody><tr>"); | |
| length = message.length; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < length;i++) { | |
| msg = message[i]; | |
| /** @type {boolean} */ | |
| n = 0 > l || 2 <= l && i < l; | |
| obj += (0 != i && (0 < l && 0 == i % l) ? "</tr><tr>" : "") + '<td class="col' + (i == length - 1 ? " l" : "") + '"' + (2 <= l ? ' width="' + 100 / l + '%"' : "") + ">"; | |
| c = message.length % l || l; | |
| obj += '<div class="ad' + (0 == i ? " f" : "") + (n ? " fr" : "") + (i == length - 1 ? " l" : "") + (!n && (2 <= l && i >= message.length - c) ? " lr" : "") + '">' + call({ | |
| B : msg, | |
| Tc : false, | |
| $i : "_top" | |
| }) + '<div class="a_ b_ radlinkC">' + onLoad({ | |
| B : msg, | |
| Tc : false, | |
| $i : "_top" | |
| }) + '<div class="adD"><div class="adStd" ' + (value ? 'data-click-s="' + msg.l + '" data-click-trg="_top"' : "") + '><a href="' + msg.l + '" class="titleLink" target="_top">' + msg.t + "</a></div></div></div></div></td>"; | |
| } | |
| /** @type {string} */ | |
| value = obj + "</tr></tbody></table>"; | |
| } | |
| return value; | |
| }; | |
| save = cb(save, "cRSN"); | |
| /** | |
| * @param {Object} e | |
| * @param {Object} block | |
| * @param {Object} chunk | |
| * @param {number} el | |
| * @param {Object} data | |
| * @param {string} i | |
| * @param {string} id | |
| * @param {string} args | |
| * @param {string} callback | |
| * @param {string} o | |
| * @param {(Function|string)} options | |
| * @return {?} | |
| */ | |
| var run = function(e, block, chunk, el, data, i, id, args, callback, o, options) { | |
| if (0 >= e.length) { | |
| return null; | |
| } | |
| var m = (0,eval)(data); | |
| /** @type {string} */ | |
| var r = ""; | |
| /** @type {null} */ | |
| chunk = null; | |
| if (options.customAdIcons) { | |
| if (null != data.adIconUrl && (0 < data.adIconHeight && 0 < data.adIconWidth)) { | |
| formatter(e, data.adIconUrl, data.adIconLocation, true); | |
| } else { | |
| if (null != data.adIconPageUrl) { | |
| if (0 < data.adIconPageHeight) { | |
| if (0 < data.adIconPageWidth) { | |
| formatter(e, data.adIconPageUrl, data.adIconPageLocation, false); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| error(data, e); | |
| var matches = equal(data, options); | |
| id = new _read(data.lines, i, id, !!options.clickableIcon, args, !matches, callback, o, !!options.isRtl, m, !!options.offerHighlightWithIcon, !!options.sitelinkTruncate && !matches); | |
| args = data.type || "ads"; | |
| if ("ads" == args) { | |
| if (options.sellerFirstBoxLeft) { | |
| data = data.sellerColumnWidth; | |
| if (e) { | |
| /** @type {number} */ | |
| i = 0; | |
| r = e.length; | |
| for (;i < r;i++) { | |
| if (e[i].plus_ones) { | |
| e[i].plus_ones = step(e[i]); | |
| } | |
| } | |
| } | |
| e = { | |
| ads : e, | |
| A : options, | |
| Jj : data, | |
| j : m | |
| }; | |
| var self; | |
| /** @type {string} */ | |
| m = '<div id="wideSfbl">'; | |
| data = e.ads; | |
| i = data.length; | |
| /** @type {number} */ | |
| r = 0; | |
| for (;r < i;r++) { | |
| id = data[r]; | |
| m += '<div class="a_ b_ adUnit_js"><div class="sfblAd' + (r != i - 1 ? " notLast" : "") + (id.topad ? " g_" : "") + '">' + bind({ | |
| Pa : "" + has(beget(e, { | |
| B : id, | |
| ld : true | |
| })), | |
| Qa : "" + map(beget(e, { | |
| B : id | |
| })), | |
| oa : null == (self = e.Jj) ? 130 : self, | |
| $a : 10, | |
| Tb : e.A.isRtl | |
| }) + "</div></div>"; | |
| } | |
| m += '</div><div id="narrowSfbl" style="display: none;">'; | |
| self = e.ads; | |
| data = self.length; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < data;i++) { | |
| r = self[i]; | |
| m += '<div class="a_ b_ adUnit_js"><div class="sfblAd' + (i != data - 1 ? " notLast" : "") + (r.topad ? " g_" : "") + '">' + has(beget(e, { | |
| B : r, | |
| ld : false | |
| })) + '<div class="sfblNarrowPadder">' + map(beget(e, { | |
| B : r, | |
| kk : true | |
| })) + "</div></div></div>"; | |
| } | |
| /** @type {string} */ | |
| r = m + "</div>"; | |
| } else { | |
| /** @type {Array} */ | |
| chunk = []; | |
| /** @type {function (string, boolean, Object, string, string): undefined} */ | |
| self = draw; | |
| /** @type {number} */ | |
| m = 0; | |
| for (;m < e.length;++m) { | |
| chunk.push(new self(e[m], options, id)); | |
| } | |
| chunk = new Buffer(chunk, clean); | |
| r = chunk.f(); | |
| } | |
| } else { | |
| if ("relatedsearch" == args) { | |
| r = save(e, data, i, id, null); | |
| } | |
| } | |
| options = func('<div style="display: none;" id="_googAFS_' + start(options.pubId || "unknown_pubId") + '"></div>'); | |
| appendChild(options, block, el); | |
| appendChild(r, block, el); | |
| return chunk; | |
| }; | |
| run = cb(run, "cAN"); | |
| /** | |
| * @param {string} pattern | |
| * @return {?} | |
| */ | |
| var add = function(pattern) { | |
| /** @type {Array} */ | |
| var list = [{ | |
| index : pattern.indexOf("{{NUM_START}}"), | |
| Hb : 13 | |
| }, { | |
| index : pattern.indexOf("{{NUM_END}}"), | |
| Hb : 11 | |
| }, { | |
| index : pattern.indexOf("{{LINK_START}}"), | |
| Hb : 14 | |
| }, { | |
| index : pattern.indexOf("{{LINK_END}}"), | |
| Hb : 12 | |
| }, { | |
| index : pattern.indexOf("{{RATING}}"), | |
| Hb : 10 | |
| }]; | |
| list.sort(function(a, b) { | |
| return a.index - b.index; | |
| }); | |
| /** @type {Array} */ | |
| var acc = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| /** @type {number} */ | |
| var p = 0; | |
| for (;-1 == list[p].index;) { | |
| p++; | |
| } | |
| for (;p < list.length;p++) { | |
| if (i < list[p].index) { | |
| acc.push(pattern.substring(i, list[p].index)); | |
| } | |
| i = pattern.substring(list[p].index, list[p].index + list[p].Hb); | |
| i = i.replace("{{", "").replace("}}", ""); | |
| acc.push(i); | |
| i = list[p].index + list[p].Hb; | |
| } | |
| if (i < pattern.length) { | |
| acc.push(pattern.substring(i)); | |
| } | |
| return acc; | |
| }; | |
| add = cb(add, "pSSTA"); | |
| /** | |
| * @param {?} key | |
| * @return {undefined} | |
| */ | |
| var length = function(key) { | |
| if (key.u && (key.u = resolveModule(key.u), key.ctc && (key.ctc.u = resolveModule(key.ctc.u)), key.sls)) { | |
| /** @type {number} */ | |
| var j = 0; | |
| for (;j < key.sls.length;j++) { | |
| key.sls[j].u = resolveModule(key.sls[j].u); | |
| } | |
| } | |
| }; | |
| length = cb(length, "aDTU"); | |
| /** | |
| * @param {?} fn | |
| * @return {undefined} | |
| */ | |
| var param = function(fn) { | |
| if (fn.sr) { | |
| fn.sr.wt = add(fn.sr.wt); | |
| fn.sr.nt = add(fn.sr.nt); | |
| } | |
| }; | |
| param = cb(param, "fSRD"); | |
| /** | |
| * @param {Function} url | |
| * @param {Object} event | |
| * @return {?} | |
| */ | |
| var resize = function(url, event) { | |
| if (!event.isHighendMobile || !endsWith()) { | |
| return null; | |
| } | |
| /** @type {string} */ | |
| var currentValue = "100%"; | |
| return cb(function() { | |
| var value = getWindowSize(false, window).width; | |
| /** @type {number} */ | |
| var result = window.screen.width; | |
| /** @type {string} */ | |
| value = value > result && value < 2 * result ? result + "px" : "100%"; | |
| if (value != currentValue) { | |
| /** @type {string} */ | |
| currentValue = value; | |
| var i; | |
| for (i in defs) { | |
| result = ok(i, url); | |
| if (null == result) { | |
| delete defs[i]; | |
| } else { | |
| css(result.document.body, "width", value); | |
| } | |
| } | |
| setTimeout(defer(el, url), 10); | |
| } | |
| }, "mWS"); | |
| }; | |
| resize = cb(resize, "gMWS"); | |
| /** | |
| * @param {Array} array | |
| * @param {string} name | |
| * @param {?} obj | |
| * @return {undefined} | |
| */ | |
| var get = function(array, name, obj) { | |
| /** @type {boolean} */ | |
| var f = false; | |
| name = expect(name); | |
| if (obj.isRtl) { | |
| self.Kb("rtl", true); | |
| } | |
| if (obj.queryId) { | |
| self.Dd("qi", obj.queryId); | |
| } | |
| var context = {}; | |
| /** @type {number} */ | |
| var d = 0; | |
| for (;d < array.length;d++) { | |
| var data = array[d]; | |
| var key = data.fn; | |
| if ("slave-0" == key) { | |
| /** @type {boolean} */ | |
| f = true; | |
| } | |
| /** @type {string} */ | |
| key = key + "-" + name; | |
| if (!json[key]) { | |
| var msg = { | |
| message : key | |
| }; | |
| util.log(msg, "pAJ2"); | |
| /** @type {Array} */ | |
| json[key] = []; | |
| } | |
| json[key].push(data); | |
| if (data.type != ecConfig.Hc) { | |
| if (data.type != ecConfig.Ec) { | |
| if (data.ctc) { | |
| if (data.ctc.coa) { | |
| if (!data.u) { | |
| data.u = data.ctc.u; | |
| } | |
| } | |
| } | |
| length(data); | |
| if (data.t) { | |
| data.cleanTitle = stringify(data.t); | |
| } | |
| if (data.v) { | |
| data.visDomain = stringify(data.v).replace(/\/.*$/, "").replace(/^www\./, ""); | |
| data.nonBreakingVisDomain = data.visDomain.replace(/-/g, "‑"); | |
| } | |
| if (data.type == ecConfig.zf) { | |
| param(data); | |
| } | |
| if (obj.getVisUrls) { | |
| if (data) { | |
| if (data.v) { | |
| /** @type {number} */ | |
| context[stringify(data.v)] = 1; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (obj.getVisUrls) { | |
| /** @type {Array} */ | |
| array = []; | |
| var match; | |
| for (match in context) { | |
| array.push(match); | |
| } | |
| self.Dd("v." + name, array.sort().join("|")); | |
| } | |
| var i; | |
| for (i in json) { | |
| match = json[i].length; | |
| /** @type {boolean} */ | |
| array = false; | |
| if (0 < match && json[i][0].type == ecConfig.Hc) { | |
| match = json[i][0].plas ? json[i][0].plas.length : 0; | |
| } else { | |
| if (0 < match) { | |
| if (json[i][0].type == ecConfig.Ec) { | |
| match = json[i][0].offers ? json[i][0].offers.length : 0; | |
| if (0 == match) { | |
| if (json[i][0].pd) { | |
| /** @type {boolean} */ | |
| array = true; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (f && /^master/.test(i)) { | |
| if (0 < match) { | |
| msg = { | |
| message : json[i].length | |
| }; | |
| util.log(msg, "pAJ3"); | |
| } | |
| delete json[i]; | |
| } else { | |
| self.Kb(i + ".hA", 0 < match); | |
| if (obj.getNumAds) { | |
| self.Lb(i + ".aC", match); | |
| } | |
| if (1 > match) { | |
| if (!array) { | |
| delete json[i]; | |
| } | |
| } | |
| } | |
| } | |
| if (obj.getNumAds) { | |
| self.Kb("aD." + name, true); | |
| } | |
| self.Kb("r." + name, !!obj.isRejected); | |
| _(self); | |
| }; | |
| get = cb(get, "pAJ"); | |
| /** | |
| * @param {Object} stop | |
| * @return {?} | |
| */ | |
| var change = function(stop) { | |
| /** @type {Array} */ | |
| var ret = []; | |
| var key; | |
| for (key in vals) { | |
| var elems = stop[key]; | |
| if (elems) { | |
| var val = vals[key]; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < elems.length;i++) { | |
| elems[i].type = val; | |
| } | |
| /** @type {Array} */ | |
| ret = ret.concat(elems); | |
| } | |
| } | |
| return ret; | |
| }; | |
| change = cb(change, "cAA"); | |
| /** | |
| * @param {Object} options | |
| * @param {Object} res | |
| * @param {string} type | |
| * @return {undefined} | |
| */ | |
| var request = function(options, res, type) { | |
| /** @type {null} */ | |
| var req = null; | |
| if (window.XMLHttpRequest) { | |
| /** @type {XMLHttpRequest} */ | |
| req = new XMLHttpRequest; | |
| } else { | |
| if (window.ActiveXObject) { | |
| req = new ActiveXObject("Microsoft.XMLHTTP"); | |
| } | |
| } | |
| if (req) { | |
| req.open("GET", "/afs/ads?" + type, true); | |
| req.setRequestHeader("Duplicate", "1"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| req.onreadystatechange = function() { | |
| if (4 == req.readyState) { | |
| var title = trim(req.responseText.substr(req.responseText.indexOf("//") + 2)); | |
| if (!title) { | |
| throw Error("Unable to use waitForAds"); | |
| } | |
| window.ad_json = title; | |
| handle(options, res); | |
| } | |
| }; | |
| req.send(); | |
| } else { | |
| throw Error("Unable to create the HTTP request object."); | |
| } | |
| }; | |
| request = cb(request, "rCAAC"); | |
| /** | |
| * @param {Array} ca | |
| * @param {?} key | |
| * @return {undefined} | |
| */ | |
| var output = function(ca, key) { | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < ca.length;i++) { | |
| var c = ca[i]; | |
| var n = c.n; | |
| c = c.v; | |
| if ("t" == c) { | |
| /** @type {boolean} */ | |
| key[n] = true; | |
| } else { | |
| if ("f" != c) { | |
| key[n] = c; | |
| } | |
| } | |
| } | |
| }; | |
| output = cb(output, "cPATO"); | |
| /** | |
| * @param {?} config | |
| * @return {?} | |
| */ | |
| var reply = function(config) { | |
| var camelKey = window.caps_ || {}; | |
| if (config.hasOwnProperty("caps")) { | |
| output(config.caps, camelKey); | |
| } | |
| if (window.relay) { | |
| camelKey.relay = window.relay; | |
| } | |
| if (window.resultUrl) { | |
| camelKey.resultUrl = window.resultUrl; | |
| } | |
| if (window.refererUrl) { | |
| camelKey.refererUrl = window.refererUrl; | |
| } | |
| return camelKey; | |
| }; | |
| reply = cb(reply, "pCFJPD"); | |
| /** | |
| * @param {Object} options | |
| * @param {Object} fn | |
| * @param {Object} c | |
| * @return {undefined} | |
| */ | |
| var method = function(options, fn, c) { | |
| /** | |
| * @param {?} $sanitize | |
| * @return {undefined} | |
| */ | |
| window.cMF_ = function($sanitize) { | |
| if (/Opera/i.test(ua)) { | |
| setTimeout(function() { | |
| $sanitize(); | |
| }, 0); | |
| } else { | |
| $sanitize(); | |
| } | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| window.sPH = function() { | |
| window.cMF_(defer(el, options)); | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| window.mPAASH = function() { | |
| window.cMF_(defer(list, options, fn, c)); | |
| }; | |
| list(options, fn, c); | |
| var args = resize(options, fn); | |
| if (args) { | |
| setInterval(args, 500); | |
| } | |
| }; | |
| method = cb(method, "sCFC"); | |
| /** | |
| * @param {Object} namespace | |
| * @param {Object} obj | |
| * @return {undefined} | |
| */ | |
| var handle = function(namespace, obj) { | |
| var val = window.ad_json || {}; | |
| if ("string" == typeof val) { | |
| val = trim(val); | |
| } | |
| var fn = reply(val); | |
| var name = attr(obj, namespace, val); | |
| get(change(val), name, fn); | |
| window.onresize = defer(params, name, fn); | |
| method(name, fn, val); | |
| setTimeout(function() { | |
| el(name); | |
| }, 1); | |
| }; | |
| handle = cb(handle, "raa"); | |
| /** | |
| * @param {Object} options | |
| * @param {Object} args | |
| * @return {undefined} | |
| */ | |
| var fetch = function(options, args) { | |
| var method = args.name; | |
| if (args && (args[method] && isFunction(args[method]))) { | |
| request(options, args, args[method].adRequestUrlParams); | |
| } else { | |
| handle(options, args); | |
| } | |
| }; | |
| fetch = cb(fetch, "init"); | |
| /** | |
| * @return {?} | |
| */ | |
| var cache = function() { | |
| return function() { | |
| if (window.startTime) { | |
| process(new handler("ipl", window.startTime), "ol"); | |
| } | |
| }; | |
| }; | |
| cache = cb(cache, "onload"); | |
| addEvent(window, "load", cache()); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var action = function() { | |
| restore(); | |
| }; | |
| action = cb(action, "istats"); | |
| if (delta) { | |
| addEvent(window, "unload", action); | |
| setTimeout(action, 15E3); | |
| process(delta.clone("ipl"), "jlt"); | |
| } | |
| process(pdataCur, "pt"); | |
| } | |
| /** | |
| * @param {?} kb | |
| * @param {number} require | |
| * @return {undefined} | |
| */ | |
| var game = function(kb, require) { | |
| this.kb = kb; | |
| /** @type {number} */ | |
| this.nd = require; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| game.prototype.da = function() { | |
| var a = this.kb.da() + " (one by itself, or multiple in an Array"; | |
| if (this.nd) { | |
| a += " with fewer than " + (this.nd + 1) + " elements"; | |
| } | |
| return a + ")"; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| game.prototype.S = function(n) { | |
| n = "array" == isArray(n) ? n : [n]; | |
| if (this.nd && n.length > this.nd) { | |
| return null; | |
| } | |
| /** @type {Array} */ | |
| var out = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < n.length;i++) { | |
| var copies = this.kb.S(n[i]); | |
| if (null == copies) { | |
| return null; | |
| } | |
| out.push(copies); | |
| } | |
| return 0 == out.length ? null : out; | |
| }; | |
| /** | |
| * @param {string} c | |
| * @return {?} | |
| */ | |
| game.prototype.ca = function(c) { | |
| c = this.S(c); | |
| return null == c || 1 > c.length ? null : this.kb.ca(c[0]); | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var constr = function() { | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| constr.prototype.da = function() { | |
| return "true, false"; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| constr.prototype.S = function(n) { | |
| return "true" == n || 1 == n ? true : "false" == n || false === n ? false : null; | |
| }; | |
| /** | |
| * @param {string} c | |
| * @return {?} | |
| */ | |
| constr.prototype.ca = function(c) { | |
| c = this.S(c); | |
| return null == c ? null : c ? 1 : 0; | |
| }; | |
| var obj = new constr; | |
| /** | |
| * @param {?} from | |
| * @param {?} v | |
| * @return {undefined} | |
| */ | |
| var move = function(from, v) { | |
| /** @type {number} */ | |
| this.qc = Math.ceil(from); | |
| /** @type {number} */ | |
| this.oc = Math.floor(v); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| move.prototype.da = function() { | |
| return this.qc + " - " + this.oc; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| move.prototype.S = function(n) { | |
| /** @type {number} */ | |
| n = parseInt(n, 10); | |
| return n >= this.qc && n <= this.oc ? n : null; | |
| }; | |
| /** | |
| * @param {string} c | |
| * @return {?} | |
| */ | |
| move.prototype.ca = function(c) { | |
| return this.S(c); | |
| }; | |
| /** | |
| * @param {?} cli | |
| * @return {undefined} | |
| */ | |
| var config = function(cli) { | |
| this.kb = cli; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| config.prototype.da = function() { | |
| return this.kb.da() + " (one or more, comma separated)"; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| config.prototype.S = function(n) { | |
| n = getText(n); | |
| /** @type {Array} */ | |
| var out = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < n.length;i++) { | |
| var copies = this.kb.S(n[i]); | |
| if (null != copies) { | |
| out.push(copies); | |
| } | |
| } | |
| return 0 == out.length ? null : out.join(","); | |
| }; | |
| /** | |
| * @param {(Array|string)} data | |
| * @return {?} | |
| */ | |
| config.prototype.ca = function(data) { | |
| data = getText(data); | |
| /** @type {number} */ | |
| var byteIndex = 0; | |
| for (;byteIndex < data.length;byteIndex++) { | |
| var ca = this.kb.ca(data[byteIndex]); | |
| if (null != ca) { | |
| return ca; | |
| } | |
| } | |
| return null; | |
| }; | |
| /** | |
| * @param {string} key | |
| * @return {?} | |
| */ | |
| var getText = function(key) { | |
| if (!isObject(key)) { | |
| return[]; | |
| } | |
| key = key.split(","); | |
| /** @type {Array} */ | |
| var ret = []; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < key.length;i++) { | |
| ret.push(pad(key[i])); | |
| } | |
| return ret; | |
| }; | |
| /** | |
| * @param {Array} var_args | |
| * @param {number} target | |
| * @return {undefined} | |
| */ | |
| var extend = function(var_args, target) { | |
| /** @type {Array} */ | |
| this.jf = var_args; | |
| var result = target || 0; | |
| this.kf = {}; | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < this.jf.length;i++) { | |
| var part = this.jf[i]; | |
| this.kf[part.toLowerCase()] = new clone(part, result + i); | |
| } | |
| }; | |
| /** | |
| * @param {?} dataAndEvents | |
| * @param {?} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| var clone = function(dataAndEvents, deepDataAndEvents) { | |
| this.kj = dataAndEvents; | |
| this.id = deepDataAndEvents; | |
| }; | |
| var nodeHook = new clone(null, null); | |
| /** | |
| * @return {?} | |
| */ | |
| extend.prototype.da = function() { | |
| return this.jf.join(", ") + " (case insensitive)"; | |
| }; | |
| /** | |
| * @param {?} self | |
| * @param {string} name | |
| * @return {?} | |
| */ | |
| var search = function(self, name) { | |
| if (!isObject(name)) { | |
| return nodeHook; | |
| } | |
| name = name.toLowerCase(); | |
| return self.kf.hasOwnProperty(name) ? self.kf[name] : nodeHook; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| extend.prototype.S = function(n) { | |
| return search(this, n).kj; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| extend.prototype.ca = function(n) { | |
| return search(this, n).id; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var EventEmitter2 = function() { | |
| }; | |
| /** @type {RegExp} */ | |
| var rRadial = /^\d+px$/i; | |
| /** @type {RegExp} */ | |
| var host = /^\d+%$/; | |
| /** | |
| * @return {?} | |
| */ | |
| EventEmitter2.prototype.da = function() { | |
| return "Width in px (e.g. '500px') or 'auto'"; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| EventEmitter2.prototype.S = function(n) { | |
| var c = isNumber(n); | |
| return null != c ? c + "px" : isObject(n) && ("auto" == n || host.test(n)) ? n : null; | |
| }; | |
| /** | |
| * @param {?} i | |
| * @return {?} | |
| */ | |
| EventEmitter2.prototype.ca = function(i) { | |
| return isNumber(i); | |
| }; | |
| /** | |
| * @param {?} value | |
| * @return {?} | |
| */ | |
| var isNumber = function(value) { | |
| return "number" == typeof value || isObject(value) && (!/[^0-9]/.test(value) || rRadial.test(value)) ? (value = parseInt(value, 10), isNaN(value) ? null : value) : null; | |
| }; | |
| var emitter = new EventEmitter2; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var Contact = function() { | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| Contact.prototype.da = function() { | |
| return "A string"; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| Contact.prototype.S = function(n) { | |
| return isObject(n) ? n : null; | |
| }; | |
| /** @type {function (): ?} */ | |
| Contact.prototype.ca = tryIt; | |
| var contact = new Contact; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var Position = function() { | |
| }; | |
| /** @type {RegExp} */ | |
| var numbers = /^((https?):)?\/\/([a-zA-Z0-9\~\!\@\#\$\&\*\(\)_\+\-\=\:\;\'\,\.\?\/\%]*)$/; | |
| /** | |
| * @return {?} | |
| */ | |
| Position.prototype.da = function() { | |
| return "An http(s) url"; | |
| }; | |
| /** | |
| * @param {string} n | |
| * @return {?} | |
| */ | |
| Position.prototype.S = function(n) { | |
| return isObject(n) && numbers.test(n) ? n : null; | |
| }; | |
| /** @type {function (): ?} */ | |
| Position.prototype.ca = tryIt; | |
| var _position = new Position; | |
| var alphaVar = new move(2, 400); | |
| var qtruntimeobject = new move(0, 400); | |
| var appCount = new extend(["title-right", "ad-left"]); | |
| var order = new move(8, 50); | |
| var aP1 = new config(new extend("verdana;arial;tahoma;times new roman;georgia;trebuchet ms".split(";"), 1)); | |
| var cos = new config(new extend(["right", "left", "top", "bottom"])); | |
| var targetRow = new extend(["off", "low", "med", "high"]); | |
| var m = new extend(["_top", "_blank"]); | |
| var sample_json = { | |
| key : "container", | |
| a : contact | |
| }; | |
| var options = { | |
| key : "adtest", | |
| a : obj, | |
| F : "at", | |
| qa : true | |
| }; | |
| var doc = { | |
| key : "adsafe", | |
| a : targetRow, | |
| F : "as", | |
| qa : true | |
| }; | |
| var extra = { | |
| key : "clicktrackUrl", | |
| a : new game(_position) | |
| }; | |
| var expr = { | |
| key : "linkTarget", | |
| a : m, | |
| hb : "_top", | |
| K : true | |
| }; | |
| /** | |
| * @param {Object} o | |
| * @param {Object} obj | |
| * @return {undefined} | |
| */ | |
| var isString = function(o, obj) { | |
| var k; | |
| for (k in obj) { | |
| if (obj.hasOwnProperty(k)) { | |
| if (!o.hasOwnProperty(k)) { | |
| o[k] = obj[k]; | |
| } | |
| } | |
| } | |
| }; | |
| var reversed = { | |
| role : 2, | |
| slaveNumber : 1, | |
| masterNumber : 1, | |
| cx : 1, | |
| cref : 1, | |
| bgresponse : 1, | |
| sbsignals : 1, | |
| gcsc : 1, | |
| fexp : 1, | |
| forceEx : 1, | |
| expflags : 1, | |
| userAgent : 1, | |
| domainName : 1, | |
| adRequestUrlParams : 1, | |
| deb : 1, | |
| uideb : 1, | |
| debug : 1, | |
| fcap : 1, | |
| adsRejectedCallback : 1, | |
| fakeads : 1, | |
| uuld : 1, | |
| jsSrc : 1, | |
| iframeFromScs : 1 | |
| }; | |
| var suiteView = { | |
| pubId : 1, | |
| propertyCode : 1, | |
| container : 2, | |
| channel : 1, | |
| hl : 1, | |
| adtest : 1, | |
| adsafe : 1, | |
| clicktrackUrl : 1, | |
| adLoadedCallback : 1, | |
| adsResponseCallback : 1, | |
| linkTarget : 1, | |
| type : 1 | |
| }; | |
| var defaults = { | |
| lines : 1, | |
| width : 1, | |
| verticalSpacing : 1, | |
| colorAdBackground : 1, | |
| colorAdBorder : 1, | |
| colorAdSeparator : 1, | |
| colorText : 1, | |
| colorTitleLink : 1, | |
| colorDomainLink : 1, | |
| colorBackground : 1, | |
| colorBorder : 1, | |
| colorAttribution : 1, | |
| colorPlusOnes : 1, | |
| colorLocation : 1, | |
| colorAnnotation : 1, | |
| fontFamily : 1, | |
| fontFamilyAttribution : 1, | |
| fontSizeTitle : 1, | |
| fontSizeDescription : 1, | |
| fontSizeDomainLink : 1, | |
| fontSizeAttribution : 1, | |
| fontSizePlusOnes : 1, | |
| fontSizeLocation : 1, | |
| fontSizeAnnotation : 1, | |
| titleBold : 1, | |
| rolloverLinkBold : 1, | |
| rolloverLinkColor : 1, | |
| rolloverLinkBackgroundColor : 1, | |
| rolloverLinkUnderline : 1, | |
| rolloverAdBackgroundColor : 1, | |
| noTitleUnderline : 1, | |
| attributionSpacingBelow : 1, | |
| rightHandAttribution : 1, | |
| attributionText : 1, | |
| attributionHref : 1, | |
| adsLabel : 1, | |
| adBorderSelections : 1, | |
| borderSelections : 1, | |
| position : 1, | |
| adIconPageUrl : 1, | |
| adIconPageWidth : 1, | |
| adIconPageHeight : 1, | |
| adIconPageLocation : 1, | |
| adIconPageSpacingAbove : 1, | |
| adIconPageSpacingBefore : 1, | |
| adIconPageSpacingAfter : 1, | |
| adIconUrl : 1, | |
| adIconWidth : 1, | |
| adIconHeight : 1, | |
| adIconLocation : 1, | |
| adIconSpacingAbove : 1, | |
| adIconSpacingBefore : 1, | |
| adIconSpacingAfter : 1, | |
| adIconSpacingBelow : 1, | |
| lineHeightTitle : 1, | |
| lineHeightDescription : 1, | |
| lineHeightDomainLink : 1, | |
| domainLinkAboveDescription : 1, | |
| detailedAttribution : 1, | |
| columns : 1, | |
| columnSpacing : 1, | |
| horizontalFlow : 1, | |
| horizontalAlignment : 1, | |
| maxTermLength : 1, | |
| sellerColumnWidth : 1, | |
| amazonTheme : 1, | |
| amazonGrayBullets : 1 | |
| }; | |
| var fromIndex = { | |
| query : 2, | |
| number : 1, | |
| oe : 1, | |
| ie : 1, | |
| maxTop : 1, | |
| minTop : 1, | |
| gcse_nc : 1, | |
| queryLink : 1, | |
| queryContext : 1, | |
| siteLinks : 1, | |
| location : 1, | |
| sellerRatings : 1, | |
| reviewExtension : 1, | |
| adPage : 1, | |
| adpage : 1, | |
| clickToCall : 1, | |
| adstyle : 1, | |
| numRepeated : 1, | |
| gl : 1, | |
| gcs : 1, | |
| gr : 1, | |
| gm : 1, | |
| longerHeadlines : 1, | |
| afdToken : 1, | |
| plusOnes : 1, | |
| colorKeyword : 1, | |
| relatedSearches : 1, | |
| offerHighlight : 1, | |
| adPageId : 1, | |
| heightConstrained : 1, | |
| referrer : 1, | |
| plas : 1, | |
| topPlas : 1, | |
| plaFormat : 1, | |
| noAdLoadedCallback : 1, | |
| iframeHeightCallback : 1, | |
| visibleUrlsCallback : 1, | |
| clickableBackgrounds : 1, | |
| cseGoogleHosting : 1, | |
| waitForAds : 1, | |
| resultsPageBaseUrl : 1, | |
| resultsPageQueryParam : 1 | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| var randomName = function() { | |
| var suiteView = {}; | |
| win(suiteView, [doc, options, extra, sample_json, expr, { | |
| key : "verticalSpacing", | |
| a : new move(2, 30) | |
| }, { | |
| key : "lines", | |
| a : new move(1, 3), | |
| F : "af", | |
| hb : 3 | |
| }, { | |
| key : "colorAdBackground", | |
| a : docCount | |
| }, { | |
| key : "colorAdBorder", | |
| a : docCount | |
| }, { | |
| key : "colorAdSeparator", | |
| a : docCount | |
| }, { | |
| key : "colorText", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "colorTitleLink", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "colorDomainLink", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "colorBackground", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "colorBorder", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "colorAttribution", | |
| a : docCount | |
| }, { | |
| key : "colorPlusOnes", | |
| a : docCount | |
| }, { | |
| key : "colorKeyword", | |
| a : docCount | |
| }, { | |
| key : "colorLocation", | |
| a : docCount | |
| }, { | |
| key : "colorAnnotation", | |
| a : docCount | |
| }, { | |
| key : "fontFamily", | |
| a : aP1, | |
| F : "ff", | |
| K : true | |
| }, { | |
| key : "fontFamilyAttribution", | |
| a : aP1, | |
| F : "fa" | |
| }, { | |
| key : "fontSizeTitle", | |
| a : ELEMENT_NODE, | |
| F : "st", | |
| K : true | |
| }, { | |
| key : "fontSizeDescription", | |
| a : ELEMENT_NODE, | |
| F : "sd", | |
| K : true | |
| }, { | |
| key : "fontSizeDomainLink", | |
| a : ELEMENT_NODE, | |
| F : "sv", | |
| K : true | |
| }, { | |
| key : "fontSizeAttribution", | |
| a : ELEMENT_NODE, | |
| F : "sa", | |
| K : true | |
| }, { | |
| key : "fontSizePlusOnes", | |
| a : ELEMENT_NODE, | |
| F : "so", | |
| K : true | |
| }, { | |
| key : "fontSizeLocation", | |
| a : ELEMENT_NODE, | |
| F : "sc", | |
| K : true | |
| }, { | |
| key : "fontSizeAnnotation", | |
| a : ELEMENT_NODE, | |
| F : "sn", | |
| K : true | |
| }, { | |
| key : "titleBold", | |
| a : obj, | |
| K : true | |
| }, { | |
| key : "rolloverLinkBold", | |
| a : obj, | |
| K : true | |
| }, { | |
| key : "rolloverLinkColor", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "rolloverLinkBackgroundColor", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "rolloverLinkUnderline", | |
| a : obj, | |
| K : true | |
| }, { | |
| key : "rolloverAdBackgroundColor", | |
| a : docCount, | |
| K : true | |
| }, { | |
| key : "noTitleUnderline", | |
| a : obj | |
| }, { | |
| key : "rightHandAttribution", | |
| a : obj | |
| }, { | |
| key : "clickableBackgrounds", | |
| a : obj | |
| }, { | |
| key : "attributionText", | |
| a : contact | |
| }, { | |
| key : "attributionHref", | |
| a : _position | |
| }, { | |
| key : "adsLabel", | |
| a : obj | |
| }, { | |
| key : "adBorderSelections", | |
| a : cos | |
| }, { | |
| key : "borderSelections", | |
| a : cos | |
| }, { | |
| key : "position", | |
| a : new extend(["top", "right", "bottom"]) | |
| }, { | |
| key : "cseGoogleHosting", | |
| a : new extend(["full", "iframe", "partner"]) | |
| }, { | |
| key : "adIconPageUrl", | |
| a : _position | |
| }, { | |
| key : "adIconPageWidth", | |
| a : alphaVar | |
| }, { | |
| key : "adIconPageHeight", | |
| a : alphaVar | |
| }, { | |
| key : "adIconPageLocation", | |
| a : appCount | |
| }, { | |
| key : "adIconPageSpacingAbove", | |
| a : qtruntimeobject | |
| }, { | |
| key : "adIconPageSpacingBefore", | |
| a : qtruntimeobject | |
| }, { | |
| key : "adIconPageSpacingAfter", | |
| a : qtruntimeobject | |
| }, { | |
| key : "adIconUrl", | |
| a : _position | |
| }, { | |
| key : "adIconWidth", | |
| a : alphaVar | |
| }, { | |
| key : "adIconHeight", | |
| a : alphaVar | |
| }, { | |
| key : "adIconLocation", | |
| a : appCount, | |
| hb : "ad-left" | |
| }, { | |
| key : "adIconSpacingAbove", | |
| a : qtruntimeobject, | |
| K : true | |
| }, { | |
| key : "adIconSpacingBefore", | |
| a : qtruntimeobject | |
| }, { | |
| key : "adIconSpacingAfter", | |
| a : qtruntimeobject | |
| }, { | |
| key : "adIconSpacingBelow", | |
| a : qtruntimeobject | |
| }, { | |
| key : "lineHeightTitle", | |
| a : order, | |
| F : "lt" | |
| }, { | |
| key : "lineHeightDescription", | |
| a : order, | |
| F : "ld" | |
| }, { | |
| key : "lineHeightDomainLink", | |
| a : order, | |
| F : "lv" | |
| }, { | |
| key : "domainLinkAboveDescription", | |
| a : obj, | |
| F : "va" | |
| }, { | |
| key : "plaFormat", | |
| a : new extend(["horizontal", "twoColumn", "threeColumn"]), | |
| hb : "twoColumn" | |
| }, { | |
| key : "adRequestUrlParams", | |
| a : contact | |
| }, { | |
| key : "waitForAds", | |
| a : obj, | |
| F : "wa" | |
| }, { | |
| key : "heightConstrained", | |
| a : obj, | |
| F : "hc" | |
| }, { | |
| key : "width", | |
| a : emitter, | |
| F : "wi", | |
| K : true | |
| }, { | |
| key : "detailedAttribution", | |
| a : obj, | |
| F : "da" | |
| }, { | |
| key : "attributionSpacingBelow", | |
| a : new move(0, 40) | |
| }, { | |
| key : "siteLinks", | |
| a : obj, | |
| F : "sl", | |
| qa : true | |
| }, { | |
| key : "sellerRatings", | |
| a : obj, | |
| F : "sr", | |
| qa : true | |
| }, { | |
| key : "location", | |
| a : obj, | |
| F : "lo", | |
| qa : true | |
| }, { | |
| key : "clickToCall", | |
| a : obj, | |
| F : "cc", | |
| qa : true | |
| }, { | |
| key : "longerHeadlines", | |
| a : obj, | |
| F : "lh", | |
| qa : true | |
| }, { | |
| key : "plusOnes", | |
| a : obj, | |
| F : "po", | |
| qa : true | |
| }, { | |
| key : "resultsPageBaseUrl", | |
| a : _position | |
| }, { | |
| key : "offerHighlight", | |
| a : obj, | |
| F : "oh", | |
| qa : true | |
| }, { | |
| key : "type", | |
| a : new extend(["ads", "relatedsearch"]) | |
| }, { | |
| key : "columns", | |
| a : new move(1, 20), | |
| hb : 1 | |
| }, { | |
| key : "columnSpacing", | |
| a : new move(2, 100) | |
| }, { | |
| key : "horizontalFlow", | |
| a : obj | |
| }, { | |
| key : "horizontalAlignment", | |
| a : new extend(["center", "left", "right"]), | |
| hb : "left" | |
| }, { | |
| key : "resultsPageQueryParam", | |
| a : contact, | |
| hb : "query" | |
| }, { | |
| key : "adPageId", | |
| a : new move(0, 4294967295) | |
| }, { | |
| key : "reviewExtension", | |
| a : obj, | |
| F : "ap", | |
| qa : true | |
| }, { | |
| key : "sellerColumnWidth", | |
| a : new move(130, 200) | |
| }, { | |
| key : "amazonTheme", | |
| a : new extend(["numbered", "bulleted"]) | |
| }, { | |
| key : "amazonGrayBullets", | |
| a : obj | |
| }]); | |
| return suiteView; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| var any = function() { | |
| var result = {}; | |
| isString(result, fromIndex); | |
| isString(result, defaults); | |
| isString(result, reversed); | |
| isString(result, suiteView); | |
| return result; | |
| }; | |
| if (window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @return {undefined} | |
| */ | |
| var i = function() { | |
| var memory = detect(); | |
| fetch(memory, iterator(window.name)); | |
| }; | |
| if (0 == ua.indexOf("Opera") || -1 == ua.indexOf("MSIE") && -1 == ua.indexOf("Trident")) { | |
| i(); | |
| } else { | |
| /** @type {function (): undefined} */ | |
| window.onload = i; | |
| } | |
| } | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @return {undefined} | |
| */ | |
| var DOMHandler = function() { | |
| }; | |
| p = DOMHandler.prototype; | |
| /** | |
| * @return {?} | |
| */ | |
| p.he = function() { | |
| return new token(onload() + "/afs/ads"); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.re = function() { | |
| return new token(onload() + "/uds/afs/i"); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.pe = function() { | |
| return new token(onload() + "/afs/ads/i/iframe.html"); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.ne = function() { | |
| return "uds_ads_only"; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ke = function() { | |
| return false; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var file = function() { | |
| }; | |
| p = file.prototype; | |
| /** | |
| * @return {?} | |
| */ | |
| p.he = function() { | |
| return new token((window.dafeBase_ || (window._googCsaAlwaysHttps ? "https:" : "") + "//domains.googlesyndication.com") + "/apps/domainpark/domainpark.cgi?"); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.re = function() { | |
| return null; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.pe = function() { | |
| return null; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.ne = function() { | |
| return "caf"; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ke = function() { | |
| return true; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var Callbacks = function() { | |
| }; | |
| p = Callbacks.prototype; | |
| /** | |
| * @return {?} | |
| */ | |
| p.he = function() { | |
| return new token((window._googCsaAlwaysHttps ? "https:" : "") + "//" + (window.google && (window.google.loader && window.google.loader.GoogleLocale) ? window.google.loader.GoogleLocale : "www.google.com") + "/cse"); | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.re = function() { | |
| return null; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.pe = function() { | |
| return null; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.ne = function() { | |
| return "uds_ads_only"; | |
| }; | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ke = function() { | |
| return false; | |
| }; | |
| } | |
| /** | |
| * @param {?} index | |
| * @return {undefined} | |
| */ | |
| var go = function(index) { | |
| /** @type {function (): number} */ | |
| var nativeRandom = Math.random; | |
| this.oi = index; | |
| /** @type {function (): ?} */ | |
| this.Di = randomColor; | |
| /** @type {function (string, Object): undefined} */ | |
| this.Kj = loadImage; | |
| /** @type {function (): number} */ | |
| this.yj = nativeRandom; | |
| }; | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Object} i | |
| * @param {?} name | |
| * @param {Object} data | |
| * @param {Object} key | |
| * @param {?} dataName | |
| * @param {?} deepDataAndEvents | |
| * @param {(Function|string)} obj | |
| * @param {Object} customTags | |
| * @return {undefined} | |
| */ | |
| var data = function(i, name, data, key, dataName, deepDataAndEvents, obj, customTags) { | |
| /** @type {Object} */ | |
| this.Ea = i; | |
| this.Nc = name; | |
| this.we(data, key, dataName, deepDataAndEvents, obj, customTags); | |
| }; | |
| data = cb(data, "ab"); | |
| data.qj = new handler("pjsp"); | |
| /** @type {string} */ | |
| data.xh = "gcsc"; | |
| /** @type {string} */ | |
| data.qh = "21404"; | |
| /** @type {string} */ | |
| data.Ch = "4031211"; | |
| /** @type {string} */ | |
| data.wh = "20606"; | |
| /** @type {Array} */ | |
| data.vf = ["", "7000105", "7000106", "7000107", "7000108"]; | |
| /** @type {string} */ | |
| data.ab = "longerHeadlines"; | |
| /** @type {string} */ | |
| data.Hd = "n"; | |
| /** @type {string} */ | |
| data.Cf = "w"; | |
| /** @type {string} */ | |
| data.wf = "p"; | |
| /** @type {string} */ | |
| data.Bh = "a"; | |
| /** @type {string} */ | |
| data.yf = "pn"; | |
| /** @type {string} */ | |
| data.Af = "pt"; | |
| /** @type {number} */ | |
| data.Lh = 6E4; | |
| /** @type {string} */ | |
| data.zh = "on"; | |
| /** @type {boolean} */ | |
| data.prototype.qd = false; | |
| /** @type {string} */ | |
| data.fh = ""; | |
| /** @type {number} */ | |
| data.Kg = Math.floor(100 * Math.random()); | |
| /** @type {string} */ | |
| data.Dh = "7000126"; | |
| /** @type {string} */ | |
| data.Eh = "7000127"; | |
| /** @type {string} */ | |
| data.Kh = "7000128"; | |
| /** @type {RegExp} */ | |
| data.Fh = /(^|,|\+)csa_(use|no)_rs(_aa)?($|,|\+)/; | |
| data.Gc = { | |
| query : "q", | |
| type : "type", | |
| format : "format", | |
| ads : "ad", | |
| pubId : "client", | |
| channel : "channel", | |
| adtest : "adtest", | |
| hl : "hl", | |
| adsafe : "adsafe", | |
| adPage : "adpage", | |
| adpage : "adpage", | |
| oe : "oe", | |
| ie : "ie", | |
| output : "output", | |
| role : "r", | |
| referer : "referer", | |
| rurl : "rurl", | |
| res_url : "res_url", | |
| v : "v", | |
| source : "source", | |
| safe : "safe", | |
| num : "num", | |
| fexp : "fexp", | |
| jsei : "jsei", | |
| nocache : "nocache", | |
| cx : "cx", | |
| cref : "cref", | |
| bgresponse : "bgresponse", | |
| sbsignals : "sbsignals", | |
| gcse_nc : "gcse_nc", | |
| queryLink : "qry_lnk", | |
| queryContext : "qry_ctxt", | |
| adExtensions : { | |
| arg : "adext", | |
| siteLinks : "as1", | |
| location : "l1", | |
| sellerRatings : "sr1", | |
| clickToCall : "ctc1" | |
| }, | |
| allwcallad : "allwcallad", | |
| adstyle : "adstyle", | |
| adlh : "adlh", | |
| numRepeated : "adrep", | |
| gl : "gl", | |
| uuld : "uuld", | |
| gcs : "gcs", | |
| gr : "gr", | |
| gm : "gm", | |
| preload : "preload", | |
| forceEx : "expid", | |
| e : "e", | |
| expflags : "expflags", | |
| userAgent : "useragent", | |
| fcap : "fcap", | |
| afdToken : "afdt", | |
| plusOnes : "po", | |
| colorKeyword : "clkwd", | |
| deb : "deb", | |
| uideb : "uideb", | |
| debug : "debug", | |
| fakeads : "fakeads", | |
| jsSrc : "csa_js_src", | |
| location : "lo", | |
| domainName : "domain_name", | |
| maxTermLength : "max_radlink_len", | |
| adPageId : "apid", | |
| theme : "theme", | |
| textColorPalette : "tcpal", | |
| merchantFilter : "cmf", | |
| gtin : "gtin", | |
| brand : "brand", | |
| mpn : "mpn", | |
| priceCurrency : "pfcrncy", | |
| priceMin : "pfmin", | |
| priceMax : "pfmax" | |
| }; | |
| /** @type {string} */ | |
| data.uh = "UTF-8"; | |
| /** @type {string} */ | |
| data.sh = "UTF-8"; | |
| /** @type {number} */ | |
| data.tf = 2; | |
| /** @type {number} */ | |
| data.ik = 2; | |
| /** @type {string} */ | |
| data.Bf = "googleSynd"; | |
| data.gh = {}; | |
| /** @type {number} */ | |
| data.Ah = 80; | |
| p = data.prototype; | |
| /** | |
| * @param {(Function|string)} b | |
| * @return {?} | |
| */ | |
| p.Wd = function(b) { | |
| if (this.fa) { | |
| return data.Hd + "0"; | |
| } | |
| var zoom = b.minTop + this.Ta; | |
| var mz = b.maxTop + this.Sa; | |
| var l = b.narrow + this.Va; | |
| var r = b.wide + this.Xa; | |
| var c = b.plas + this.Ua; | |
| var m = b.topPlas + this.Wa; | |
| b = 0 < zoom ? data.Bh + zoom : ""; | |
| var g = 0 < mz ? data.wf + mz : ""; | |
| l = 0 < l ? data.Hd + l : ""; | |
| r = 0 < r ? data.Cf + r : ""; | |
| c = 0 < c ? data.yf + c : ""; | |
| m = 0 < m ? data.Af + m : ""; | |
| if (mz && zoom > mz) { | |
| throw removeListener("Cannot request more minTop ads than maxTop."); | |
| } | |
| return r + l + g + b + c + m; | |
| }; | |
| p.Wd = cb(data.prototype.Wd, "cAA"); | |
| /** | |
| * @param {string} args | |
| * @param {Array} namespaces | |
| * @return {?} | |
| */ | |
| p.Yd = function(args, namespaces) { | |
| var block = this.Z(args); | |
| if (namespaces) { | |
| if (0 < namespaces.length) { | |
| namespaces.splice(0, 0, block); | |
| block = namespaces.join("|"); | |
| } | |
| } | |
| return block; | |
| }; | |
| p.Yd = cb(data.prototype.Yd, "cFAM"); | |
| /** | |
| * @param {Object} args | |
| * @return {?} | |
| */ | |
| p.Z = function(args) { | |
| this.Va = args.number && !args[data.ab] ? args.number : 0; | |
| this.Xa = args.number && args[data.ab] ? args.number : 0; | |
| this.Ta = args.minTop; | |
| this.Sa = args.maxTop; | |
| this.Ua = args.plas; | |
| this.Wa = args.topPlas; | |
| if (!this.Va) { | |
| if (!this.Ta) { | |
| if (!this.Sa) { | |
| if (!this.Xa) { | |
| if (!this.Ua) { | |
| if (!this.Wa) { | |
| if (args[data.ab]) { | |
| this.Xa = data.tf; | |
| } else { | |
| this.Va = data.tf; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| var a = this.Va || this.Xa; | |
| var b = this.Sa || this.Ta; | |
| var c = this.Ua || this.Wa; | |
| if (a && b) { | |
| throw removeListener("Cannot request standard and top ads in the same ad block."); | |
| } | |
| if (a && c) { | |
| throw removeListener("Cannot request standard and PLA ads in the same ad block."); | |
| } | |
| if (b && c) { | |
| throw removeListener("Cannot request top and PLA ads in the same ad block."); | |
| } | |
| if (this.Ua && this.Wa) { | |
| throw removeListener("Cannot request top PLAs and standard PLAs in the same ad block."); | |
| } | |
| if (this.fa && (0 != args.slaveNumber && (!args.firstAdBlock && (this.Sa || this.Ta)))) { | |
| throw removeListener("Only the first ad block can have top ads."); | |
| } | |
| var dataText; | |
| if (this.Sa || this.Ta) { | |
| dataText = data.wf; | |
| } else { | |
| if (this.Va) { | |
| dataText = data.Hd; | |
| } else { | |
| if (this.Xa) { | |
| dataText = data.Cf; | |
| } else { | |
| if (this.Ua) { | |
| dataText = data.yf; | |
| } else { | |
| if (this.Wa) { | |
| dataText = data.Af; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return dataText + (this.Sa || (this.Ta || (this.Va || (this.Xa || (this.Ua || (this.Wa || 0)))))); | |
| }; | |
| p.Z = cb(data.prototype.Z, "cFA"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.je = function() { | |
| return this.Bi; | |
| }; | |
| p.je = cb(data.prototype.je, "gFA"); | |
| /** | |
| * @param {Object} v | |
| * @return {?} | |
| */ | |
| p.Bd = function(v) { | |
| if (tmpl(v)) { | |
| /** @type {boolean} */ | |
| v.siteLinks = 0 != v.siteLinks; | |
| /** @type {boolean} */ | |
| v.sellerRatings = 0 != v.sellerRatings; | |
| /** @type {boolean} */ | |
| v.clickToCall = 0 != v.clickToCall; | |
| } | |
| return v = data.mf(v); | |
| }; | |
| p.Bd = cb(data.prototype.Bd, "sDIUP"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| p.Ja = function() { | |
| }; | |
| p.Ja = cb(data.prototype.Ja, "vAURSO"); | |
| /** | |
| * @param {Object} args | |
| * @param {?} deepDataAndEvents | |
| * @param {(Function|string)} key | |
| * @param {Object} tags | |
| * @return {?} | |
| */ | |
| p.lf = function(args, deepDataAndEvents, key, tags) { | |
| var options = {}; | |
| var i; | |
| for (i in this.Nc) { | |
| if (this.Nc.hasOwnProperty(i)) { | |
| if (2 != this.Nc[i] || args[i]) { | |
| if ("undefined" != typeof args[i]) { | |
| if (null != args[i]) { | |
| options[i] = args[i]; | |
| } | |
| } | |
| } else { | |
| throw removeListener("Missing option '" + i + "'."); | |
| } | |
| } | |
| } | |
| /** @type {boolean} */ | |
| this.fa = "m" != args.role; | |
| if (!this.fa) { | |
| var c; | |
| a: { | |
| /** @type {(Array.<string>|null)} */ | |
| var m = window.location.href.match(/[?&]rsToken=([^&]*)/); | |
| if (m && m[1]) { | |
| try { | |
| /** @type {string} */ | |
| c = decodeURIComponent(m[1]); | |
| break a; | |
| } catch (p) { | |
| } | |
| } | |
| /** @type {null} */ | |
| c = null; | |
| } | |
| if (c) { | |
| /** @type {string} */ | |
| options.afdToken = c; | |
| } | |
| } | |
| options.adLoadedCallback = args.adLoadedCallback || (args.callback || null); | |
| options.adsRejectedCallback = args.adsRejectedCallback || null; | |
| options.oe = options.oe || data.uh; | |
| options.ie = options.ie || data.sh; | |
| options.number = data.zb(options.number, 0); | |
| options.minTop = data.zb(options.minTop, 0); | |
| options.maxTop = data.zb(options.maxTop, 0); | |
| options.plas = data.zb(options.plas, 0); | |
| options.topPlas = data.zb(options.topPlas, 0); | |
| if (1 == options.slaveNumber) { | |
| if (options.numRepeated) { | |
| if (options.longerHeadlines) { | |
| /** @type {boolean} */ | |
| options.longerHeadlines = false; | |
| } | |
| } | |
| } | |
| /** @type {string} */ | |
| options.fexp = (options.fexp ? options.fexp + "," : "") + (options.gcsc ? data.wh : data.qh); | |
| if (!window.postMessage) { | |
| options.fexp += "," + data.Ch; | |
| } | |
| if (c = window.googlev3ex) { | |
| if (!isNaN(parseInt(c, 10))) { | |
| options.fexp += "," + c; | |
| } | |
| } | |
| /** @type {number} */ | |
| c = parseInt(window._googCsaX, 10) || 0; | |
| if (0 < c) { | |
| if (c < data.vf.length) { | |
| /** @type {number} */ | |
| options.jsei = c; | |
| options.fexp += "," + data.vf[c]; | |
| } | |
| } | |
| /** @type {number} */ | |
| c = parseInt(window._googCsaExp, 10) || 0; | |
| if (0 < c) { | |
| options.fexp += "," + c; | |
| } | |
| /** @type {number} */ | |
| c = parseInt(window._googCsaJsLoad, 10) || 0; | |
| if (0 < c) { | |
| options.fexp += "," + c; | |
| if (delta) { | |
| if (7000615 == c || 7000637 == c) { | |
| removeNode("pplsc"); | |
| } else { | |
| if (!(7000616 != c && 7000638 != c)) { | |
| removeNode("pplse"); | |
| } | |
| } | |
| } | |
| } | |
| /** @type {number} */ | |
| c = parseInt(window._googCsaRelSearch, 10) || 0; | |
| if (0 < c) { | |
| options.fexp += "," + c; | |
| } | |
| if (options.channel) { | |
| if ("string" == typeof options.channel) { | |
| if (c = options.channel.match(data.Fh)) { | |
| options.fexp += "," + ("use" == c[2] ? data.Kh : "_aa" == c[3] ? data.Eh : data.Dh); | |
| } | |
| } | |
| } | |
| if (options.forceEx) { | |
| /** @type {string} */ | |
| options.e = "ForceExperiment"; | |
| } else { | |
| if (0 === options.forceEx) { | |
| /** @type {string} */ | |
| options.e = "0"; | |
| } | |
| } | |
| if (options.gcsc) { | |
| if (5 > data.Kg) { | |
| options.fexp += ",37108"; | |
| } else { | |
| if (10 > data.Kg) { | |
| options.fexp += ",37109"; | |
| } | |
| } | |
| if ("top" == args.position) { | |
| options.maxTop = args.number; | |
| /** @type {boolean} */ | |
| options.longerHeadlines = false; | |
| /** @type {null} */ | |
| options.number = null; | |
| } | |
| } | |
| options.format = this.fa ? this.Z(options) : this.Yd(options, deepDataAndEvents); | |
| this.Bi = options.format; | |
| options.ads = this.Wd(key); | |
| /** @type {string} */ | |
| options.nocache = [Math.floor(1E3 * Math.random()), (new Date).getTime()].join(""); | |
| /** @type {string} */ | |
| options.num = "0"; | |
| options.output = this.xc.ne(); | |
| if (this.xc.Ke()) { | |
| if (!options.domainName) { | |
| /** @type {string} */ | |
| options.domainName = window.document.domain; | |
| } | |
| options.domainName = options.domainName.substring(0, data.Ah); | |
| } else { | |
| /** @type {string} */ | |
| options.domainName = ""; | |
| } | |
| if (options.gcsc) { | |
| options.source = data.xh; | |
| } | |
| /** @type {string} */ | |
| options.v = isFunction(options) ? "4" : "3"; | |
| if (options.adPageId) { | |
| options.pubId = options.propertyCode; | |
| options.adPageId = matches(this.Ea.adPageId, options.adPageId); | |
| } | |
| if (!isObject(options.pubId)) { | |
| /** @type {string} */ | |
| options.pubId = "" + options.pubId; | |
| } | |
| if (0 == options.pubId.indexOf("partner-")) { | |
| options.pubId = options.pubId.substring(8); | |
| } | |
| options = this.Bd(options); | |
| if (!options.titleBold || true !== options.titleBold && 1 != options.titleBold) { | |
| if (options.titleBold) { | |
| delete options.titleBold; | |
| } | |
| } else { | |
| /** @type {number} */ | |
| options.titleBold = 1; | |
| } | |
| if (tmpl(options)) { | |
| if (!(!options.maxTop && !options.minTop)) { | |
| if (!options.hasOwnProperty(data.ab)) { | |
| /** @type {boolean} */ | |
| options[data.ab] = true; | |
| } | |
| } | |
| } | |
| if (!this.fa) { | |
| args = options[data.ab] || false; | |
| for (i in tags) { | |
| if (tags.hasOwnProperty(i)) { | |
| args = args || tags[i].o[data.ab]; | |
| } | |
| } | |
| if (args) { | |
| options.adlh = data.zh; | |
| } | |
| } | |
| if (options.clickToCall) { | |
| /** @type {number} */ | |
| options.allwcallad = 1; | |
| } | |
| this.Ja(options); | |
| return options; | |
| }; | |
| p.lf = cb(data.prototype.lf, "vASDO"); | |
| /** | |
| * @param {?} b | |
| * @param {number} mayParseLabeledStatementInstead | |
| * @return {?} | |
| */ | |
| data.zb = function(b, mayParseLabeledStatementInstead) { | |
| /** @type {number} */ | |
| var num2 = parseInt(b, 10); | |
| return!isNaN(num2) && 0 <= num2 ? num2 : mayParseLabeledStatementInstead; | |
| }; | |
| data.zb = cb(data.zb, "tNNIOD"); | |
| /** | |
| * @param {number} mode | |
| * @return {?} | |
| */ | |
| data.md = function(mode) { | |
| /** @type {number} */ | |
| mode = parseInt(mode, 10); | |
| return!isNaN(mode) && 0 <= mode; | |
| }; | |
| data.md = cb(data.md, "iNNN"); | |
| data.yh = { | |
| hc : 1, | |
| lh : 1, | |
| oh : 1, | |
| pa : 1 | |
| }; | |
| /** | |
| * @param {string} l | |
| * @param {Node} params | |
| * @return {?} | |
| */ | |
| data.gd = function(l, params) { | |
| var p = params.F; | |
| var s = params.a.ca(l); | |
| return null != s && data.md(s) ? data.yh.hasOwnProperty(p) ? s ? p.charAt(0) + p.charAt(1).toUpperCase() : p : p + s : ""; | |
| }; | |
| data.gd = cb(data.gd, "gPFO"); | |
| p = data.prototype; | |
| /** | |
| * @param {Object} fields | |
| * @return {?} | |
| */ | |
| p.Ne = function(fields) { | |
| /** @type {Array} */ | |
| var tagNameArr = []; | |
| var k; | |
| for (k in fields) { | |
| if (fields.hasOwnProperty(k)) { | |
| if (k in this.Ea) { | |
| if (this.Ea[k].F) { | |
| tagNameArr.push(data.gd(fields[k], this.Ea[k])); | |
| } | |
| } | |
| } | |
| } | |
| return tagNameArr.join(""); | |
| }; | |
| p.Ne = cb(data.prototype.Ne, "oTPP"); | |
| /** | |
| * @param {Object} o | |
| * @param {Object} arr2 | |
| * @return {?} | |
| */ | |
| p.uc = function(o, arr2) { | |
| /** @type {Array} */ | |
| var tagNameArr = []; | |
| var i; | |
| for (i in o) { | |
| if (!!(o.hasOwnProperty(i) && (i in this.Ea && this.Ea[i].F))) { | |
| if (!(i in arr2 && arr2[i] == o[i])) { | |
| tagNameArr.push(data.gd(o[i], this.Ea[i])); | |
| } | |
| } | |
| } | |
| return tagNameArr.join(""); | |
| }; | |
| p.uc = cb(data.prototype.uc, "oTBP"); | |
| /** | |
| * @param {Object} data | |
| * @param {Object} args | |
| * @param {Object} value | |
| * @return {?} | |
| */ | |
| p.$d = function(data, args, value) { | |
| var output = data.v ? data.v : "3"; | |
| var result = this.Xd(data, args, value); | |
| if (0 == args.length) { | |
| return["uv", output, result, this.uc(data, {}), "-"].join(""); | |
| } | |
| value.pubId = data.pubId; | |
| value = this.Bd(value); | |
| var key = this.Ne(value); | |
| /** @type {string} */ | |
| key = ["uv", output, result, key].join(""); | |
| /** @type {Array} */ | |
| output = []; | |
| output.push(this.uc(data, value)); | |
| /** @type {number} */ | |
| data = 0; | |
| for (;result = args[data];data++) { | |
| if (result.o.slaveNumber) { | |
| if (0 != result.o.slaveNumber) { | |
| output.push(this.uc(result.o, value)); | |
| } | |
| } | |
| } | |
| return[key, output.join("-")].join("-"); | |
| }; | |
| p.$d = cb(data.prototype.$d, "cUIP"); | |
| /** | |
| * @param {?} key | |
| * @param {Object} children | |
| * @param {Object} child | |
| * @return {?} | |
| */ | |
| p.Xd = function(key, children, child) { | |
| if (key.colorTitleLink || (key.colorDomainLink || (child.colorTitleLink || child.colorDomainLink))) { | |
| return "cs1"; | |
| } | |
| /** @type {number} */ | |
| key = 0; | |
| for (;child = children[key];key++) { | |
| if (child.o.colorTitleLink || child.o.colorDomainLink) { | |
| return "cs1"; | |
| } | |
| } | |
| return ""; | |
| }; | |
| p.Xd = cb(data.prototype.Xd, "cCTPP"); | |
| /** | |
| * @param {Object} style | |
| * @return {?} | |
| */ | |
| data.mf = function(style) { | |
| /** @type {Array} */ | |
| var diffs = ["fontSizeTitle", "fontSizeDescription", "fontSizeDomainLink", "fontSizeAttribution"]; | |
| /** @type {number} */ | |
| var x = 0; | |
| for (;x < diffs.length;x++) { | |
| var i = diffs[x]; | |
| if (style[i]) { | |
| var n = "string" == typeof style[i] ? parseInt(style[i].replace("px", ""), 10) : style[i]; | |
| n = n > pageCount ? pageCount : n; | |
| n = 8 > n ? 8 : n; | |
| /** @type {string} */ | |
| style[i] = n + "px"; | |
| } | |
| } | |
| return style; | |
| }; | |
| data.mf = cb(data.mf, "vFS"); | |
| p = data.prototype; | |
| /** | |
| * @param {Object} options | |
| * @param {Window} global | |
| * @return {?} | |
| */ | |
| p.ae = function(options, global) { | |
| var e; | |
| var doc; | |
| var which = this.xc.he(); | |
| if (which) { | |
| this.Nd(options, which); | |
| /** @type {boolean} */ | |
| var win = 2 == window.googleAltLoader || 4 == window.googleAltLoader; | |
| /** @type {boolean} */ | |
| doc = 1 == window[data.Bf]; | |
| if (3 == window.googleAltLoader && doc) { | |
| callback(which, "bsl", 9); | |
| } else { | |
| if (3 == window.googleAltLoader) { | |
| callback(which, "bsl", 8); | |
| } else { | |
| if (4 == window.googleAltLoader && doc) { | |
| callback(which, "bsl", 11); | |
| } else { | |
| if (4 == window.googleAltLoader) { | |
| callback(which, "bsl", 10); | |
| } else { | |
| if (doc) { | |
| callback(which, "bsl", win ? 7 : 3); | |
| } else { | |
| if (15 == global.googleAltLoader) { | |
| callback(which, "bsl", 2); | |
| } else { | |
| if (win) { | |
| callback(which, "bsl", 6); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (!this.fa) { | |
| /** @type {Window} */ | |
| win = window; | |
| /** @type {HTMLDocument} */ | |
| doc = document; | |
| /** @type {Date} */ | |
| var relative_to = new Date; | |
| /** @type {Window} */ | |
| var env = win || window; | |
| try { | |
| /** @type {number} */ | |
| e = env.history.length; | |
| } catch (p) { | |
| /** @type {number} */ | |
| e = 0; | |
| } | |
| callback(which, "u_his", e); | |
| callback(which, "u_tz", -relative_to.getTimezoneOffset()); | |
| callback(which, "dt", relative_to.getTime()); | |
| callback(which, "u_w", win.screen.width); | |
| callback(which, "u_h", win.screen.height); | |
| e = getWindowSize(true, win); | |
| callback(which, "biw", e.width); | |
| callback(which, "bih", e.height); | |
| if (win.top != win) { | |
| e = getWindowSize(false, win); | |
| callback(which, "isw", e.width); | |
| callback(which, "ish", e.height); | |
| } | |
| if (doc.body) { | |
| /** @type {number} */ | |
| e = (relative_to = !win.scrollY && "CSS1Compat" != doc.compatMode) ? doc.body.scrollWidth : doc.body.offsetWidth; | |
| /** @type {number} */ | |
| doc = relative_to ? doc.body.scrollHeight : doc.body.offsetHeight; | |
| } else { | |
| /** @type {number} */ | |
| doc = e = -1; | |
| } | |
| callback(which, "psw", e); | |
| callback(which, "psh", doc); | |
| var msg; | |
| if (win.top == win) { | |
| /** @type {number} */ | |
| msg = 0; | |
| } else { | |
| /** @type {Window} */ | |
| win = win.top; | |
| try { | |
| var type; | |
| if (type = !!win && null != win.location.href) { | |
| b: { | |
| try { | |
| freeze(win.foo); | |
| /** @type {boolean} */ | |
| type = true; | |
| break b; | |
| } catch (w) { | |
| } | |
| /** @type {boolean} */ | |
| type = false; | |
| } | |
| } | |
| /** @type {boolean} */ | |
| msg = type; | |
| } catch (v) { | |
| /** @type {boolean} */ | |
| msg = false; | |
| } | |
| /** @type {number} */ | |
| msg = msg ? 1 : 2; | |
| } | |
| callback(which, "frm", msg); | |
| } | |
| callback(which, "uio", this.fh); | |
| callback(which, "rurl", global.location.href, true); | |
| callback(which, data.Gc.referer, global.document.referrer, true); | |
| if (options.referrer) { | |
| callback(which, "optref", options.referrer, true); | |
| } | |
| } | |
| return which; | |
| }; | |
| p.ae = cb(data.prototype.ae, "cU"); | |
| /** | |
| * @param {Object} params | |
| * @param {Object} parameters | |
| * @param {?} which | |
| * @return {undefined} | |
| */ | |
| p.Od = function(params, parameters, which) { | |
| var ex = params.arg; | |
| /** @type {Array} */ | |
| var args = []; | |
| var key; | |
| for (key in params) { | |
| if ("arg" != key) { | |
| if (params.hasOwnProperty(key)) { | |
| if (parameters.hasOwnProperty(key)) { | |
| if (parameters[key]) { | |
| args.push(params[key]); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| if (0 < args.length) { | |
| callback(which, ex, args.join(",")); | |
| } | |
| }; | |
| p.Od = cb(data.prototype.Od, "aSCSA"); | |
| /** | |
| * @param {Object} parameters | |
| * @param {?} which | |
| * @return {undefined} | |
| */ | |
| p.Nd = function(parameters, which) { | |
| var key; | |
| for (key in parameters) { | |
| if (parameters.hasOwnProperty(key) && data.Gc.hasOwnProperty(key)) { | |
| var k = data.Gc[key]; | |
| var p = parameters[key]; | |
| if ("clkwd" == k) { | |
| /** @type {string} */ | |
| p = "t"; | |
| } | |
| if ("mvtb" != k || ("low" == p || ("medium" == p || "high" == p))) { | |
| if ("type" == k) { | |
| p = sorted[parameters[key]]; | |
| } | |
| callback(which, k, p); | |
| } | |
| } | |
| } | |
| this.Od(data.Gc.adExtensions, parameters, which); | |
| }; | |
| p.Nd = cb(data.prototype.Nd, "aOTU"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.wa = function() { | |
| return "s" == this.o.role ? ["slave", this.o.slaveNumber, this.o.masterNumber].join("-") : ["master", this.o.masterNumber].join("-"); | |
| }; | |
| p.wa = cb(data.prototype.wa, "gFN"); | |
| /** | |
| * @param {Array} value | |
| * @param {Object} method | |
| * @param {Array} data | |
| * @param {?} j | |
| * @return {?} | |
| */ | |
| p.ke = function(value, method, data, j) { | |
| var fn = {}; | |
| /** @type {Object} */ | |
| fn.name = method; | |
| value = data.concat([value]); | |
| method = j.concat([method]); | |
| /** @type {number} */ | |
| j = 0; | |
| for (;j < value.length;j++) { | |
| data = value[j]; | |
| var nameToAliasesMap = this.Ea; | |
| var benchmarks = {}; | |
| var name = void 0; | |
| for (name in nameToAliasesMap) { | |
| if (nameToAliasesMap.hasOwnProperty(name) && !nameToAliasesMap[name].qa) { | |
| var prop = data[name]; | |
| var ref = nameToAliasesMap[name].hb; | |
| if ("undefined" == typeof prop || "container" == name && "object" == typeof prop) { | |
| if ("undefined" != typeof ref) { | |
| benchmarks[name] = ref; | |
| } | |
| } else { | |
| benchmarks[name] = prop; | |
| } | |
| } | |
| } | |
| fn[method[j]] = benchmarks; | |
| } | |
| /** @type {Array} */ | |
| value = []; | |
| walk(new ke, fn, value); | |
| return value.join(""); | |
| }; | |
| p.ke = cb(data.prototype.ke, "gFNAOAJ"); | |
| /** | |
| * @param {string} id | |
| * @param {?} name | |
| * @param {string} path | |
| * @return {?} | |
| */ | |
| p.fe = function(id, name, path) { | |
| if (document.getElementById(id)) { | |
| util.log({ | |
| message : id | |
| }, "dI"); | |
| } | |
| /** @type {Element} */ | |
| var iframe = document.createElement("iframe"); | |
| /** @type {number} */ | |
| iframe.frameBorder = 0; | |
| /** @type {number} */ | |
| iframe.marginWidth = 0; | |
| /** @type {number} */ | |
| iframe.marginHeight = 0; | |
| /** @type {number} */ | |
| iframe.vspace = 0; | |
| /** @type {number} */ | |
| iframe.hspace = 0; | |
| iframe.setAttribute("allowTransparency", "true"); | |
| /** @type {string} */ | |
| iframe.scrolling = "no"; | |
| /** @type {string} */ | |
| iframe.style.visibility = "hidden"; | |
| /** @type {string} */ | |
| iframe.width = "100%"; | |
| /** @type {string} */ | |
| iframe.style.height = "0px"; | |
| iframe.name = name; | |
| /** @type {string} */ | |
| iframe.id = id; | |
| if (createTextNode()) { | |
| /** @type {string} */ | |
| iframe.style.display = "none"; | |
| this.Oc(iframe); | |
| /** @type {string} */ | |
| iframe.src = path; | |
| /** @type {string} */ | |
| iframe.style.display = ""; | |
| } else { | |
| /** @type {string} */ | |
| iframe.src = path; | |
| this.Oc(iframe); | |
| } | |
| try { | |
| iframe.contentWindow.name = name; | |
| } catch (e) { | |
| } | |
| return iframe; | |
| }; | |
| p.fe = cb(data.prototype.fe, "gAI"); | |
| /** | |
| * @param {Object} callback | |
| * @param {?} serviceName | |
| * @param {string} attr | |
| * @return {undefined} | |
| */ | |
| p.Zb = function(callback, serviceName, attr) { | |
| callback = this.fe(callback, serviceName, attr); | |
| this.og = new handler(this.fa ? "sipl" : "mipl"); | |
| addEvent(callback, "load", this.ge()); | |
| if (!this.fa) { | |
| this.xe(callback); | |
| } | |
| }; | |
| p.Zb = cb(data.prototype.Zb, "iAI"); | |
| /** | |
| * @param {string} dataAndEvents | |
| * @return {undefined} | |
| */ | |
| p.df = function(dataAndEvents) { | |
| document.write('<script src="' + dataAndEvents + '">\x3c/script>'); | |
| }; | |
| p.df = cb(data.prototype.df, "sAP"); | |
| /** | |
| * @param {Element} element | |
| * @return {undefined} | |
| */ | |
| p.Oc = function(element) { | |
| /** @type {string} */ | |
| this.Ma.style.fontWeight = "normal"; | |
| /** @type {string} */ | |
| this.Ma.style.textAlign = "center"; | |
| /** @type {string} */ | |
| this.Ma.innerHTML = ""; | |
| this.Ma.appendChild(element); | |
| }; | |
| p.Oc = cb(data.prototype.Oc, "aI"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| p.Re = function() { | |
| var tmp = {}; | |
| var key; | |
| for (key in this.o) { | |
| if (this.o.hasOwnProperty(key)) { | |
| tmp[key] = this.o[key]; | |
| } | |
| } | |
| /** @type {string} */ | |
| tmp.ads = "n0"; | |
| /** @type {string} */ | |
| tmp[""] = ""; | |
| /** @type {string} */ | |
| tmp.slaveNumber = "0"; | |
| /** @type {string} */ | |
| tmp.role = "s"; | |
| tmp = on(this.Ea, this.Nc, tmp); | |
| fields[tmp.wa()] = tmp; | |
| this.Za.splice(0, 0, tmp); | |
| /** @type {Element} */ | |
| tmp = document.createElement("div"); | |
| document.body.appendChild(tmp); | |
| /** @type {string} */ | |
| tmp.style.height = "0px"; | |
| /** @type {string} */ | |
| tmp.style.visibility = "hidden"; | |
| /** @type {Element} */ | |
| this.o.container = tmp; | |
| /** @type {boolean} */ | |
| this.vg = this.o.preload = true; | |
| }; | |
| p.Re = cb(data.prototype.Re, "pM"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.Ae = function() { | |
| self.hg = self.hg || (new Date).getTime(); | |
| return(new Date).getTime() - self.hg > data.Lh ? true : false; | |
| }; | |
| p.Ae = cb(data.prototype.Ae, "iTU"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.hd = function() { | |
| return this.o.iframeFromScs && this.xc.pe() || this.xc.re(); | |
| }; | |
| p.hd = cb(data.prototype.hd, "gSIU"); | |
| /** | |
| * @param {Array} r | |
| * @param {Array} bytes | |
| * @param {?} i | |
| * @param {?} deepDataAndEvents | |
| * @param {(Function|string)} subKey | |
| * @param {Object} customTags | |
| * @return {undefined} | |
| */ | |
| p.we = function(r, bytes, i, deepDataAndEvents, subKey, customTags) { | |
| /** @type {number} */ | |
| this.Wa = this.Ua = this.Xa = this.Ta = this.Sa = this.Va = 0; | |
| /** @type {Array} */ | |
| this.xc = bytes; | |
| this.Za = customTags || null; | |
| this.Cg = i || null; | |
| this.o = this.lf(r, deepDataAndEvents, subKey, customTags); | |
| this.Ci = new go(this.o.pubId); | |
| if (!this.bd()) { | |
| if (!this.fa) { | |
| if (!!document.body) { | |
| if (!done()) { | |
| this.Re(); | |
| } | |
| } | |
| } | |
| } | |
| this.fh = null == this.Cg ? "" : this.$d(this.o, this.Za, this.Cg); | |
| if (this.Kc = this.fa && this.hd() || this.ae(this.o, window)) { | |
| if (this.qb = this.id = this.Vb = this.wa(), this.Kc.ad = this.Vb, this.sa = require(this.Kc), !this.fa) { | |
| /** @type {Array} */ | |
| r = []; | |
| /** @type {Array} */ | |
| bytes = []; | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < this.Za.length;i++) { | |
| r.push(this.Za[i].wa()); | |
| bytes.push(this.Za[i].o); | |
| } | |
| if (isFunction(this.o)) { | |
| this.o.adRequestUrlParams = this.sa.substr(this.sa.indexOf("?") + 1); | |
| } | |
| this.qb = this.ke(this.o, this.Vb, bytes, r); | |
| if (data.gh[this.sa]) { | |
| util.log({ | |
| message : this.sa | |
| }, "dAU"); | |
| } else { | |
| /** @type {boolean} */ | |
| data.gh[this.sa] = true; | |
| } | |
| } | |
| } | |
| }; | |
| p.we = cb(data.prototype.we, "i"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| p.$c = function() { | |
| var _this = this; | |
| _this.Ic = new handler("plabl"); | |
| var throttledUpdate = cb(function() { | |
| if (!_this.bd()) { | |
| return false; | |
| } | |
| _this.Ic = _this.Ic.clone("iabl"); | |
| _this.Ye(_this.o.container); | |
| if (_this.o.width) { | |
| if (!_this.vg) { | |
| if ("auto" == _this.o.width) { | |
| /** @type {string} */ | |
| _this.Ma.style.width = "100%"; | |
| } else { | |
| if (data.md(_this.o.width)) { | |
| _this.Ma.style.width = _this.o.width; | |
| } | |
| } | |
| } | |
| } | |
| _this.Fe(); | |
| return true; | |
| }, "mA"); | |
| if (!throttledUpdate()) { | |
| /** @type {number} */ | |
| this.Og = window.setInterval(function() { | |
| if (throttledUpdate()) { | |
| clearInterval(_this.Og); | |
| } else { | |
| if (_this.Ae()) { | |
| throw clearInterval(_this.Og), removeListener('container "' + _this.o.container + '" does not exist.'); | |
| } | |
| } | |
| }, 5); | |
| } | |
| }; | |
| p.$c = cb(data.prototype.$c, "cI"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| p.Fe = function() { | |
| if (this.Kc) { | |
| var view = this.hd(); | |
| if (view && (require(view) && isFunction(this.o))) { | |
| if (true === this.o.debug) { | |
| callback(view, "debug", true); | |
| } | |
| if ("1" == window[data.Bf]) { | |
| callback(view, "bsl", "3"); | |
| } | |
| view.ad = this.Vb; | |
| var v = require(view); | |
| if (this.fa) { | |
| this.Zb(this.id, this.qb, v); | |
| } else { | |
| var that = this; | |
| /** | |
| * @return {undefined} | |
| */ | |
| window.google.renderCsaAds = function() { | |
| that.Zb(that.id, that.qb, v); | |
| }; | |
| this.df(this.sa); | |
| } | |
| } else { | |
| this.Zb(this.id, this.qb, this.sa); | |
| } | |
| } | |
| }; | |
| p.Fe = cb(data.prototype.Fe, "mA"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.ge = function() { | |
| var col = this; | |
| return cb(function() { | |
| if (col.og) { | |
| process(col.og, "ol"); | |
| } | |
| }, "iLC"); | |
| }; | |
| p.ge = cb(data.prototype.ge, "gILC"); | |
| /** | |
| * @param {Function} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| p.xe = function(deepDataAndEvents) { | |
| /** @type {string} */ | |
| var num = "" + this.o.masterNumber; | |
| var console = new copy(num); | |
| console.aa("aD." + num, C, code); | |
| console.aa("qi", e); | |
| /** @type {null} */ | |
| var text = null; | |
| if (!this.vg) { | |
| text = this.wa(); | |
| console.aa(text + ".hA", C, c); | |
| console.aa(text + ".h", node, args); | |
| console.aa(text + ".w", node, headers); | |
| console.aa(text + ".aC", node); | |
| } | |
| console.aa("v." + num, e, rgb); | |
| if (this.o.hasOwnProperty("gcsc")) { | |
| if (this.o.gcsc) { | |
| console.aa("r." + num, C, tag); | |
| } | |
| } | |
| if (this.Za) { | |
| /** @type {number} */ | |
| num = 0; | |
| for (;num < this.Za.length;num++) { | |
| text = this.Za[num].wa(); | |
| console.aa(text + ".hA", C, c); | |
| console.aa(text + ".h", node, args); | |
| console.aa(text + ".aC", node); | |
| } | |
| } | |
| formatted(console, deepDataAndEvents); | |
| }; | |
| p.xe = cb(data.prototype.xe, "iFS"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| p.Le = function() { | |
| if (!this.qd) { | |
| /** @type {boolean} */ | |
| this.qd = true; | |
| var suiteView = this.o.container; | |
| var restoreScript = this.o.noAdLoadedCallback; | |
| if (restoreScript) { | |
| values(restoreScript, suiteView, false); | |
| } | |
| if (restoreScript = this.o.adLoadedCallback) { | |
| values(restoreScript, suiteView, false); | |
| } | |
| } | |
| }; | |
| p.Le = cb(data.prototype.Le, "nNA"); | |
| /** | |
| * @param {HTMLElement} el | |
| * @param {number} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| p.Ze = function(el, deepDataAndEvents) { | |
| /** @type {string} */ | |
| el.width = "100%"; | |
| /** @type {string} */ | |
| el.style.visibility = 0 < deepDataAndEvents ? "visible" : "hidden"; | |
| /** @type {string} */ | |
| el.style.height = deepDataAndEvents + "px"; | |
| /** @type {string} */ | |
| this.Ma.style.height = deepDataAndEvents + "px"; | |
| }; | |
| p.Ze = cb(data.prototype.Ze, "sIH"); | |
| /** | |
| * @param {number} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| p.Xe = function(deepDataAndEvents) { | |
| /** @type {string} */ | |
| this.Ma.style.width = deepDataAndEvents + "px"; | |
| }; | |
| p.Xe = cb(data.prototype.Xe, "sCW"); | |
| /** | |
| * @param {number} deepDataAndEvents | |
| * @param {?} result | |
| * @return {undefined} | |
| */ | |
| p.Te = function(deepDataAndEvents, result) { | |
| var obj = this.wa(); | |
| var body = filter(obj, true); | |
| if (body && (this.Ze(body, deepDataAndEvents), !this.qd && 0 < deepDataAndEvents)) { | |
| /** @type {boolean} */ | |
| this.qd = true; | |
| if (this.Ic) { | |
| process(this.Ic, "alt"); | |
| } | |
| if (window.googleNDT_) { | |
| if (!Hj) { | |
| if (delta) { | |
| /** @type {boolean} */ | |
| Hj = true; | |
| process(delta, "palt"); | |
| } | |
| } | |
| } | |
| var pos = getOffset(body); | |
| var self = this.Ci; | |
| var p = pos.y; | |
| pos = pos.x; | |
| var height = body.offsetHeight; | |
| body = body.offsetWidth; | |
| var photo = result.se("qi"); | |
| if (!(0.01 < self.yj())) { | |
| var a = new token("https:" + onload() + "/afs/gen_204"); | |
| callback(a, "client", self.oi); | |
| callback(a, "output", "uds_ads_only"); | |
| callback(a, "zx", self.Di()); | |
| callback(a, "adbx", pos); | |
| callback(a, "adby", p); | |
| callback(a, "adbh", height); | |
| callback(a, "adbw", body); | |
| callback(a, "adbn", obj); | |
| callback(a, "aqid", photo); | |
| self.Kj(require(a)); | |
| } | |
| if (obj = this.o.adLoadedCallback) { | |
| values(obj, this.o.container, true); | |
| } | |
| } | |
| }; | |
| p.Te = cb(data.prototype.Te, "rIS"); | |
| /** | |
| * @return {?} | |
| */ | |
| p.bd = function() { | |
| var cont = this.o.container; | |
| return "string" == typeof cont ? (cont = document.getElementById(cont), !!cont) : "string" == typeof cont.innerHTML ? true : false; | |
| }; | |
| p.bd = cb(data.prototype.bd, "dCE"); | |
| /** | |
| * @param {Element} opt_id | |
| * @return {undefined} | |
| */ | |
| p.Ye = function(opt_id) { | |
| if ("string" == typeof opt_id) { | |
| /** @type {(HTMLElement|null)} */ | |
| opt_id = document.getElementById(opt_id); | |
| } | |
| /** @type {Element} */ | |
| this.Ma = opt_id; | |
| }; | |
| p.Ye = cb(data.prototype.Ye, "sC"); | |
| } | |
| var keys = { | |
| key : "textColorPalette", | |
| a : new game(docCount, 5) | |
| }; | |
| /** | |
| * @param {Array} values | |
| * @return {?} | |
| */ | |
| var combine = function(values) { | |
| if (!("array" == isArray(values))) { | |
| /** @type {Array} */ | |
| values = [values]; | |
| } | |
| values = matches(keys, values); | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < values.length;i++) { | |
| values[i] = parseTime(values[i]).jd.substr(1); | |
| } | |
| return values.join(","); | |
| }; | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} list | |
| * @param {?} conf | |
| * @param {?} opt_scope | |
| * @param {?} callback | |
| * @param {?} opt_acc | |
| * @param {?} settings | |
| * @param {?} cb_ | |
| * @param {?} cb | |
| * @return {undefined} | |
| */ | |
| var Test = function(list, conf, opt_scope, callback, opt_acc, settings, cb_, cb) { | |
| data.call(this, list, conf, opt_scope, callback, opt_acc, settings, cb_, cb); | |
| }; | |
| Test = cb(Test, "JB"); | |
| isPlainObject(Test, data); | |
| /** | |
| * @return {?} | |
| */ | |
| Test.prototype.Z = function() { | |
| return ""; | |
| }; | |
| Test.prototype.Z = cb(Test.prototype.Z, "cFA_cJB"); | |
| /** | |
| * @param {Object} data | |
| * @return {undefined} | |
| */ | |
| Test.prototype.Ja = function(data) { | |
| if (!data.brand && data.mpn || data.brand && !data.mpn) { | |
| throw removeListener("Both brand and mpn should be present in the request."); | |
| } | |
| if (data.gtin) { | |
| data.query = data.gtin; | |
| } else { | |
| if (data.brand) { | |
| if (data.mpn) { | |
| /** @type {string} */ | |
| data.query = data.brand + " " + data.mpn; | |
| } | |
| } | |
| } | |
| if (data.textColorPalette) { | |
| data.textColorPalette = combine(data.textColorPalette); | |
| } | |
| }; | |
| Test.prototype.Ja = cb(Test.prototype.Ja, "vURSO_cJB"); | |
| } | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} n | |
| * @param {?} start | |
| * @param {?} obj | |
| * @param {?} method | |
| * @param {?} t | |
| * @param {?} o | |
| * @param {?} props | |
| * @param {?} protos | |
| * @return {undefined} | |
| */ | |
| var methods = function(n, start, obj, method, t, o, props, protos) { | |
| data.call(this, n, start, obj, method, t, o, props, protos); | |
| }; | |
| methods = cb(methods, "pb"); | |
| isPlainObject(methods, data); | |
| /** | |
| * @return {?} | |
| */ | |
| methods.prototype.Z = function() { | |
| return ""; | |
| }; | |
| methods.prototype.Z = cb(methods.prototype.Z, "cFA_PB"); | |
| /** | |
| * @param {?} requestOptions | |
| * @return {undefined} | |
| */ | |
| methods.prototype.Ja = function(requestOptions) { | |
| if (requestOptions.textColorPalette) { | |
| requestOptions.textColorPalette = combine(requestOptions.textColorPalette); | |
| } | |
| }; | |
| methods.prototype.Ja = cb(methods.prototype.Ja, "vAURSO_PB"); | |
| } | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {?} next | |
| * @param {?} start | |
| * @param {?} value | |
| * @param {?} a | |
| * @param {?} val | |
| * @param {?} callback | |
| * @param {?} stop | |
| * @param {?} cb | |
| * @return {undefined} | |
| */ | |
| var input = function(next, start, value, a, val, callback, stop, cb) { | |
| data.call(this, next, start, value, a, val, callback, stop, cb); | |
| }; | |
| input = cb(input, "rsb"); | |
| isPlainObject(input, data); | |
| /** @type {string} */ | |
| input.rh = "r"; | |
| /** @type {number} */ | |
| input.th = 10; | |
| /** | |
| * @param {string} args | |
| * @return {?} | |
| */ | |
| input.prototype.Z = function(args) { | |
| var val = args.relatedSearches; | |
| if (!val) { | |
| if (!(0 === val)) { | |
| val = args.number; | |
| if (!val) { | |
| if (!(0 === val)) { | |
| val = input.th; | |
| } | |
| } | |
| } | |
| } | |
| return input.rh + val; | |
| }; | |
| input.prototype.Z = cb(input.prototype.Z, "cFA_RS"); | |
| } | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {string} name | |
| * @param {string} fn | |
| * @param {string} cb | |
| * @param {string} callback | |
| * @param {string} el | |
| * @param {string} id | |
| * @param {string} type | |
| * @return {?} | |
| */ | |
| var on = function(name, fn, cb, callback, el, id, type) { | |
| if (cb.relatedSearches) { | |
| /** @type {string} */ | |
| cb.type = "relatedsearch"; | |
| } else { | |
| if (!cb.type) { | |
| /** @type {string} */ | |
| cb.type = "ads"; | |
| } | |
| } | |
| if ("relatedsearch" == cb.type) { | |
| return new input(name, fn, cb, new file, callback, el, id, type); | |
| } | |
| if ("ads" == cb.type) { | |
| return new data(name, fn, cb, cb.gcsc ? new Callbacks : new DOMHandler, callback, el, id, type); | |
| } | |
| if ("plas" == cb.type) { | |
| return new methods(name, fn, cb, new DOMHandler, callback, el, id, type); | |
| } | |
| if ("singleProduct" == cb.type) { | |
| return new Test(name, fn, cb, new DOMHandler, callback, el, id, type); | |
| } | |
| throw removeListener("invalid block type: " + cb.type); | |
| }; | |
| on = cb(on, "nAB"); | |
| } | |
| /** | |
| * @return {undefined} | |
| */ | |
| var Model = function() { | |
| this.options = {}; | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var File = function() { | |
| this.Oe = {}; | |
| /** @type {Array} */ | |
| this.Hf = []; | |
| /** @type {Array} */ | |
| this.Lg = []; | |
| }; | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {Array} obj | |
| * @return {?} | |
| */ | |
| var proxy = function(obj) { | |
| if (2 > obj.length) { | |
| throw removeListener("No options specified."); | |
| } | |
| return 1 < obj.length && obj[1] instanceof Array ? [obj[0]].concat(obj[1]) : Array.prototype.slice.call(obj, 0); | |
| }; | |
| proxy = cb(proxy, "ppata"); | |
| /** | |
| * @param {string} val | |
| * @param {?} parent | |
| * @param {Object} result | |
| * @param {(Object|string)} model | |
| * @return {undefined} | |
| */ | |
| var resolve = function(val, parent, result, model) { | |
| result = proxy(result); | |
| /** @type {string} */ | |
| var flags = ua.toLowerCase(); | |
| if (-1 == flags.indexOf("series60") && -1 == flags.indexOf("series 60")) { | |
| if (model) { | |
| /** @type {(Object|string)} */ | |
| result[0].type = model; | |
| } | |
| model = new File; | |
| flags = result[0]; | |
| /** @type {null} */ | |
| var test = null; | |
| /** @type {number} */ | |
| var n = 1; | |
| for (;n < result.length;n++) { | |
| var elem = test = new Model; | |
| var info = flags; | |
| var old = result[n]; | |
| var name = void 0; | |
| for (name in old) { | |
| if (old.hasOwnProperty(name)) { | |
| elem.options[name] = old[name]; | |
| } | |
| } | |
| for (name in info) { | |
| if (info.hasOwnProperty(name)) { | |
| if ("longerHeadlines" != name || (elem.options.maxTop || elem.options.minTop)) { | |
| elem.options[name] = info[name]; | |
| } | |
| } | |
| } | |
| if (test.options.relatedSearches) { | |
| model.Lg.push(test); | |
| } else { | |
| model.Hf.push(test); | |
| } | |
| } | |
| var flag; | |
| for (flag in flags) { | |
| if (flags.hasOwnProperty(flag)) { | |
| model.Oe[flag] = flags[flag]; | |
| } | |
| } | |
| parse(val, parent, model.Oe, model.Hf, {}); | |
| parse(val, parent, model.Oe, model.Lg); | |
| } | |
| }; | |
| resolve = cb(resolve, "aasi"); | |
| /** | |
| * @param {string} field | |
| * @param {string} prop | |
| * @param {string} opt | |
| * @param {Object} token | |
| * @return {undefined} | |
| */ | |
| var parse = function(field, prop, opt, token) { | |
| if (0 != token.length) { | |
| /** @type {Array} */ | |
| var failuresLink = []; | |
| /** @type {Array} */ | |
| var cookie = []; | |
| var is = { | |
| maxTop : 0, | |
| narrow : 0, | |
| minTop : 0, | |
| wide : 0, | |
| plas : 0, | |
| topPlas : 0 | |
| }; | |
| var ret = done(); | |
| if (!ret) { | |
| path++; | |
| } | |
| /** @type {number} */ | |
| var p = token.length - 1; | |
| for (;0 <= p;p--) { | |
| var options = token[p].options; | |
| var o = options; | |
| var lvl; | |
| /** @type {boolean} */ | |
| lvl = 0 <= promote(events, 4031803); | |
| /** @type {boolean} */ | |
| o.iframeFromScs = lvl; | |
| if (0 == p || ret) { | |
| if (ret) { | |
| /** @type {Array} */ | |
| failuresLink = []; | |
| is = { | |
| maxTop : 0, | |
| narrow : 0, | |
| minTop : 0, | |
| wide : 0, | |
| plas : 0, | |
| topPlas : 0 | |
| }; | |
| path++; | |
| } | |
| /** @type {string} */ | |
| options.role = "m"; | |
| options.masterNumber = path; | |
| options.fexp = events.join(","); | |
| options = on(field, prop, options, opt, failuresLink, is, cookie); | |
| } else { | |
| /** @type {string} */ | |
| options.role = "s"; | |
| /** @type {number} */ | |
| options.slaveNumber = p; | |
| options.masterNumber = path; | |
| options = on(field, prop, options); | |
| failuresLink.splice(0, 0, options.je()); | |
| cookie.splice(0, 0, options); | |
| is.narrow += options.Va; | |
| is.maxTop += options.Sa; | |
| is.minTop += options.Ta; | |
| is.wide += options.Xa; | |
| is.plas += options.Ua; | |
| is.topPlas += options.Wa; | |
| } | |
| fields[options.wa()] = options; | |
| } | |
| field = "master-" + path; | |
| /** @type {RegExp} */ | |
| p = new RegExp("slave-[0-9]+-" + path); | |
| var name; | |
| for (name in fields) { | |
| if (p.test(name)) { | |
| fields[name].qb += "|" + fields[field].qb; | |
| } | |
| } | |
| /** @type {number} */ | |
| p = token.length - 1; | |
| for (;0 <= p;p--) { | |
| /** @type {string} */ | |
| token = ["slave", p, path].join("-"); | |
| if (fields.hasOwnProperty(token)) { | |
| fields[token].$c(); | |
| } | |
| } | |
| if (fields.hasOwnProperty(field)) { | |
| fields[field].$c(); | |
| } else { | |
| util.log({ | |
| message : "Missing ad block for " + field | |
| }, "cAFOMM"); | |
| } | |
| } | |
| }; | |
| parse = cb(parse, "cAFO"); | |
| /** | |
| * @param {string} name | |
| * @param {boolean} inplace | |
| * @return {?} | |
| */ | |
| var filter = function(name, inplace) { | |
| /** @type {(HTMLElement|null)} */ | |
| var event = document.getElementById(name); | |
| if (!event && inplace) { | |
| /** @type {Array} */ | |
| var tagNameArr = []; | |
| try { | |
| /** @type {NodeList} */ | |
| var resultItems = document.getElementsByTagName("iframe"); | |
| /** @type {number} */ | |
| var i = 0; | |
| for (;i < resultItems.length;i++) { | |
| var result = resultItems[i]; | |
| try { | |
| tagNameArr.push(["N=" + result.name + "ID=" + result.id]); | |
| } catch (h) { | |
| } | |
| } | |
| } catch (p) { | |
| } | |
| util.log({ | |
| message : "iframe name: " + name + ". existing frames: " + tagNameArr.join(",") + ". num masters: " + path | |
| }, "gAFBN2"); | |
| } | |
| return event; | |
| }; | |
| filter = cb(filter, "gAFBN"); | |
| /** | |
| * @param {?} m3 | |
| * @param {?} force | |
| * @param {string} sel | |
| * @param {?} scope | |
| * @return {undefined} | |
| */ | |
| var c = function(m3, force, sel, scope) { | |
| if (!scope) { | |
| fields[sel.split(".")[0]].Le(); | |
| } | |
| }; | |
| c = cb(c, "hAC"); | |
| /** | |
| * @param {Object} el | |
| * @param {string} i | |
| * @param {?} tagMap | |
| * @param {?} content | |
| * @return {undefined} | |
| */ | |
| var tag = function(el, i, tagMap, content) { | |
| if (el = fields["master-" + i]) { | |
| if (el.o) { | |
| if (el = el.o.adsRejectedCallback) { | |
| prop(el, content); | |
| } | |
| } | |
| } | |
| }; | |
| tag = cb(tag, "aRC"); | |
| /** | |
| * @param {?} callback | |
| * @param {Object} a | |
| * @param {string} arg | |
| * @param {number} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| var args = function(callback, a, arg, deepDataAndEvents) { | |
| a = fields[arg.split(".")[0]]; | |
| a.Te(deepDataAndEvents, callback); | |
| if (a) { | |
| if (a.o) { | |
| if (a.o.iframeHeightCallback) { | |
| client(a.o.iframeHeightCallback, 0 < deepDataAndEvents ? deepDataAndEvents : 0); | |
| } | |
| } | |
| } | |
| }; | |
| args = cb(args, "hC"); | |
| /** | |
| * @param {?} get | |
| * @param {?} headers | |
| * @param {string} token | |
| * @param {number} deepDataAndEvents | |
| * @return {undefined} | |
| */ | |
| var headers = function(get, headers, token, deepDataAndEvents) { | |
| fields[token.split(".")[0]].Xe(deepDataAndEvents); | |
| }; | |
| headers = cb(headers, "wC"); | |
| /** | |
| * @param {?} style | |
| * @param {string} baseName | |
| * @return {?} | |
| */ | |
| var normalize = function(style, baseName) { | |
| var normalized = {}; | |
| var prop; | |
| for (prop in fields) { | |
| if (fields.hasOwnProperty(prop)) { | |
| var field = fields[prop]; | |
| if (field.o) { | |
| if (field.o.masterNumber == baseName) { | |
| if ("string" == typeof field.o.container) { | |
| normalized[field.o.container] = style.le(prop + ".aC"); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return normalized; | |
| }; | |
| normalize = cb(normalize, "gAC"); | |
| /** | |
| * @param {?} style | |
| * @param {string} parentName | |
| * @return {undefined} | |
| */ | |
| var code = function(style, parentName) { | |
| var m = fields["master-" + parentName]; | |
| if (m && (m.o && m.o.adsResponseCallback)) { | |
| var target = normalize(style, parentName); | |
| v(m.o.adsResponseCallback, target); | |
| } | |
| }; | |
| code = cb(code, "aCC"); | |
| /** | |
| * @param {Object} v | |
| * @param {string} b | |
| * @param {?} g | |
| * @param {string} r | |
| * @return {undefined} | |
| */ | |
| var rgb = function(v, b, g, r) { | |
| if (v = fields["master-" + b]) { | |
| if (v.o) { | |
| if (v.o.visibleUrlsCallback) { | |
| wrapped(v.o.visibleUrlsCallback, r ? r.split("|") : []); | |
| } | |
| } | |
| } | |
| }; | |
| rgb = cb(rgb, "vUC"); | |
| /** @type {null} */ | |
| var _done = null; | |
| /** | |
| * @return {?} | |
| */ | |
| var done = function() { | |
| if (null != _done) { | |
| return _done; | |
| } | |
| if (6 != rgbToHex(newRed)) { | |
| return _done = false; | |
| } | |
| var name; | |
| if (2 < window.location.host.split(".").length) { | |
| /** @type {string} */ | |
| name = window.location.host.split(".").slice(1).join("."); | |
| /** @type {string} */ | |
| name = name.replace(/:\d*/, ""); | |
| } else { | |
| return _done = true; | |
| } | |
| /** @type {boolean} */ | |
| window.google.disallowedSameDomain_ = false; | |
| /** @type {Element} */ | |
| var iframe = document.createElement("iframe"); | |
| /** @type {Element} */ | |
| var node = document.createElement("iframe"); | |
| /** @type {string} */ | |
| iframe.style.display = "none"; | |
| /** @type {string} */ | |
| node.style.display = "none"; | |
| var parent = document.getElementsByTagName("head")[0]; | |
| parent.appendChild(iframe); | |
| parent.appendChild(node); | |
| try { | |
| var c = iframe.contentWindow.document; | |
| var doc = node.contentWindow.document; | |
| } catch (g) { | |
| /** @type {(Document|null)} */ | |
| c = iframe.document; | |
| /** @type {(Document|null)} */ | |
| doc = node.document; | |
| } | |
| if (c.domain == name) { | |
| return _done = true; | |
| } | |
| c.open(); | |
| /** @type {string} */ | |
| c.domain = name; | |
| c.write("<script>function test() {}\x3c/script>"); | |
| c.close(); | |
| doc.open(); | |
| doc.write("<script>var theParent = window.parent;\x3c/script>"); | |
| /** @type {string} */ | |
| doc.domain = name; | |
| doc.write("<script>try{window.parent.frames[" + (window.frames.length - 2) + "].location} catch(e){theParent.google.disallowedSameDomain_ = true;}\x3c/script>"); | |
| doc.close(); | |
| /** @type {boolean} */ | |
| _done = window.google.disallowedSameDomain_; | |
| iframe.parentNode.removeChild(iframe); | |
| node.parentNode.removeChild(node); | |
| return _done; | |
| }; | |
| done = cb(done, "dBDSDIC"); | |
| /** @type {number} */ | |
| var path = 0; | |
| var fields = {}; | |
| /** @type {boolean} */ | |
| var Hj = false; | |
| /** | |
| * @param {Array} fileExtensions | |
| * @param {string} opt_attributes | |
| * @param {number} p | |
| * @return {?} | |
| */ | |
| var key = function(fileExtensions, opt_attributes, p) { | |
| /** @type {number} */ | |
| p = 1 - (p || Math.random)(); | |
| if (p < opt_attributes * fileExtensions.length) { | |
| try { | |
| /** @type {Uint16Array} */ | |
| var buf = new Uint16Array(1); | |
| window.crypto.getRandomValues(buf); | |
| /** @type {number} */ | |
| p = buf[0] / 65536; | |
| } catch (e) { | |
| /** @type {number} */ | |
| p = Math.random(); | |
| } | |
| return fileExtensions[Math.floor(p * fileExtensions.length)]; | |
| } | |
| return null; | |
| }; | |
| key = cb(key, "pE"); | |
| var events = repeat([key([2631601, 2631602], 0.05), key([4031801, 4031802, 4031803], 0.1)], spaces); | |
| /** | |
| * @param {?} callback | |
| * @param {?} obj | |
| * @param {boolean} recurring | |
| * @return {undefined} | |
| */ | |
| var values = function(callback, obj, recurring) { | |
| callback(obj, recurring); | |
| }; | |
| values = cb(values); | |
| /** | |
| * @param {Object} setter | |
| * @param {?} node | |
| * @return {undefined} | |
| */ | |
| var prop = function(setter, node) { | |
| setter(node); | |
| }; | |
| prop = cb(prop); | |
| /** | |
| * @param {?} n | |
| * @param {?} a | |
| * @return {undefined} | |
| */ | |
| var v = function(n, a) { | |
| n(a); | |
| }; | |
| v = cb(v); | |
| /** | |
| * @param {?} fn | |
| * @param {?} err | |
| * @return {undefined} | |
| */ | |
| var wrapped = function(fn, err) { | |
| fn(err); | |
| }; | |
| wrapped = cb(wrapped); | |
| /** | |
| * @param {?} callback | |
| * @param {?} basis | |
| * @return {undefined} | |
| */ | |
| var client = function(callback, basis) { | |
| callback(basis); | |
| }; | |
| client = cb(client); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var baz = function() { | |
| if (delta) { | |
| process(delta, "ol"); | |
| } | |
| }; | |
| baz = cb(baz, "rCPL"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var initial = function() { | |
| if (delta) { | |
| if (!delta.aj) { | |
| /** @type {boolean} */ | |
| delta.aj = true; | |
| addEvent(window, "load", baz); | |
| setTimeout(actual, 15E3); | |
| } | |
| } | |
| addEvent(window, "unload", actual); | |
| }; | |
| initial = cb(initial, "sCEL"); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var actual = function() { | |
| restore(); | |
| }; | |
| actual = cb(actual, "sCS"); | |
| /** | |
| * @param {?} fn | |
| * @return {undefined} | |
| */ | |
| var plugin = function(fn) { | |
| if (fn) { | |
| fn(); | |
| } | |
| }; | |
| plugin = cb(plugin); | |
| /** | |
| * @return {undefined} | |
| */ | |
| var line = function() { | |
| if (delta) { | |
| initial(); | |
| process(data.qj, "pt"); | |
| process(delta, "jlt"); | |
| } | |
| }; | |
| line = cb(line, "sCOLT"); | |
| } | |
| /** | |
| * @param {?} fn | |
| * @return {undefined} | |
| */ | |
| var watch = function(fn) { | |
| var result; | |
| result = {}; | |
| win(result, [doc, options, extra, sample_json, expr, { | |
| key : "width", | |
| a : new move(0, 1E4), | |
| F : "wi" | |
| }, { | |
| key : "height", | |
| a : new move(0, 1E4), | |
| F : "he" | |
| }]); | |
| var d = { | |
| query : 1, | |
| gtin : 1, | |
| brand : 1, | |
| mpn : 1, | |
| width : 2, | |
| height : 2, | |
| priceMin : 1, | |
| priceMax : 1, | |
| priceCurrency : 1, | |
| textColorPalette : 1 | |
| }; | |
| isString(d, reversed); | |
| isString(d, suiteView); | |
| resolve(result, d, arguments, "singleProduct"); | |
| }; | |
| watch = cb(watch, "jmpMJ"); | |
| /** | |
| * @param {?} replace | |
| * @return {undefined} | |
| */ | |
| var hash = function(replace) { | |
| var result; | |
| result = {}; | |
| win(result, [doc, options, extra, sample_json, expr, { | |
| key : "width", | |
| a : new move(0, 1E4), | |
| F : "wi" | |
| }, { | |
| key : "height", | |
| a : new move(0, 1E4), | |
| F : "he" | |
| }, { | |
| key : "promoted", | |
| a : obj, | |
| F : "pa" | |
| }]); | |
| var config = { | |
| query : 2, | |
| width : 2, | |
| height : 2, | |
| promoted : 1, | |
| theme : 1, | |
| priceMin : 1, | |
| priceMax : 1, | |
| priceCurrency : 1, | |
| textColorPalette : 1, | |
| merchantFilter : 1 | |
| }; | |
| isString(config, reversed); | |
| isString(config, suiteView); | |
| resolve(result, config, arguments, "plas"); | |
| }; | |
| hash = cb(hash, "cmpp"); | |
| if (!window.IS_GOOGLE_AFS_IFRAME_) { | |
| /** | |
| * @param {string} object | |
| * @return {undefined} | |
| */ | |
| var promise = function(object) { | |
| var name = randomName(); | |
| var parent = any(); | |
| resolve(name, parent, arguments); | |
| }; | |
| promise = cb(promise, "cmpc"); | |
| var object = { | |
| ads : promise, | |
| plas : hash, | |
| "single-product" : watch | |
| }; | |
| /** | |
| * @return {undefined} | |
| */ | |
| var store = function() { | |
| /** @type {function (): undefined} */ | |
| var i = window._googCsa; | |
| /** @type {null} */ | |
| var codeSegments = null; | |
| /** @type {null} */ | |
| var t = null; | |
| if (i) { | |
| codeSegments = i.q; | |
| t = i.t; | |
| } | |
| /** | |
| * @return {undefined} | |
| */ | |
| window._googCsa = function() { | |
| set(arguments); | |
| }; | |
| if (t) { | |
| window._googCsa.t = t; | |
| } | |
| if (codeSegments && 0 < codeSegments.length) { | |
| /** @type {number} */ | |
| i = 0; | |
| for (;i < codeSegments.length;i++) { | |
| set(codeSegments[i]); | |
| } | |
| } | |
| }; | |
| store = cb(store, "cmps"); | |
| /** | |
| * @param {Array} properties | |
| * @return {undefined} | |
| */ | |
| var set = function(properties) { | |
| if (properties && 1 < properties.length) { | |
| if (object.hasOwnProperty(properties[0])) { | |
| var type = object[properties[0]]; | |
| if (3 == properties.length) { | |
| new type(properties[1], properties[2]); | |
| } else { | |
| new type(properties[1], Array.prototype.slice.call(properties, 2)); | |
| } | |
| } else { | |
| if ("jsLoadedCallback" == properties[0]) { | |
| plugin(properties[1]); | |
| } | |
| } | |
| } | |
| }; | |
| set = cb(set, "cmpe"); | |
| window.google = window.google || {}; | |
| window.google.ads = window.google.ads || {}; | |
| window.google.ads.search = window.google.ads.search || {}; | |
| if (!window.google.ads.search.Ads) { | |
| window.google.ads.search.Ads = promise; | |
| line(); | |
| store(); | |
| } | |
| } | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment