Last active
February 12, 2016 13:51
-
-
Save fraszczakszymon/d93540ea162e11e88752 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
/* LEGAL NOTICE: COPYRIGHT 2015 THE RUBICON PROJECT, INC. ALL RIGHTS RESERVED. THIS CODE CONTAINS TRADE SECRETS OR OTHERWISE CONFIDENTIAL AND/OR PROPRIETARY INFORMATION THAT IS THE EXCLUSIVE INTELLECTUAL PROPERTY OF THE RUBICON PROJECT, INC. AND IS PROTECTED BY COPYRIGHT, TRADE SECRET AND/OR OTHER STATE AND FEDERAL LAW. SEE http://bit.ly/1g7QAOO FOR FULL TERMS AND CONDITIONS. */ ! function a(b, c, d) { | |
function e(g, h) { | |
if (!c[g]) { | |
if (!b[g]) { | |
var i = "function" == typeof require && require; | |
if (!h && i) return i(g, !0); | |
if (f) return f(g, !0); | |
var j = new Error("Cannot find module '" + g + "'"); | |
throw j.code = "MODULE_NOT_FOUND", j | |
} | |
var k = c[g] = { | |
exports: {} | |
}; | |
b[g][0].call(k.exports, function(a) { | |
var c = b[g][1][a]; | |
return e(c ? c : a) | |
}, k, k.exports, a, b, c, d) | |
} | |
return c[g].exports | |
} | |
for (var f = "function" == typeof require && require, g = 0; g < d.length; g++) e(d[g]); | |
return e | |
}({ | |
1: [function(a, b, c) { | |
! function(a, c) { | |
"use strict"; | |
"object" == typeof b && "object" == typeof b.exports ? b.exports = c() : "function" == typeof define && define.amd ? define([], c) : a.objectPath = c() | |
}(this, function() { | |
"use strict"; | |
function a(a) { | |
if (!a) return !0; | |
if (l(a) && 0 === a.length) return !0; | |
if (!d(a)) { | |
for (var b in a) | |
if (k.call(a, b)) return !1; | |
return !0 | |
} | |
return !1 | |
} | |
function b(a) { | |
return j.call(a) | |
} | |
function c(a) { | |
return "number" == typeof a || "[object Number]" === b(a) | |
} | |
function d(a) { | |
return "string" == typeof a || "[object String]" === b(a) | |
} | |
function e(a) { | |
return "object" == typeof a && "[object Object]" === b(a) | |
} | |
function f(a) { | |
return "boolean" == typeof a || "[object Boolean]" === b(a) | |
} | |
function g(a) { | |
var b = parseInt(a); | |
return b.toString() === a ? b : a | |
} | |
function h(b, e, f, i) { | |
if (c(e) && (e = [e]), a(e)) return b; | |
if (d(e)) return h(b, e.split(".").map(g), f, i); | |
var j = e[0]; | |
if (1 === e.length) { | |
var k = b[j]; | |
return void 0 !== k && i || (b[j] = f), k | |
} | |
return void 0 === b[j] && (c(e[1]) ? b[j] = [] : b[j] = {}), h(b[j], e.slice(1), f, i) | |
} | |
function i(b, e) { | |
if (c(e) && (e = [e]), !a(b)) { | |
if (a(e)) return b; | |
if (d(e)) return i(b, e.split(".")); | |
var f = g(e[0]), | |
h = b[f]; | |
if (1 === e.length) void 0 !== h && (l(b) ? b.splice(f, 1) : delete b[f]); | |
else if (void 0 !== b[f]) return i(b[f], e.slice(1)); | |
return b | |
} | |
} | |
var j = Object.prototype.toString, | |
k = Object.prototype.hasOwnProperty, | |
l = Array.isArray || function(a) { | |
return "[object Array]" === j.call(a) | |
}, | |
m = function(a) { | |
return Object.keys(m).reduce(function(b, c) { | |
return "function" == typeof m[c] && (b[c] = m[c].bind(m, a)), b | |
}, {}) | |
}; | |
return m.has = function(b, f) { | |
if (a(b)) return !1; | |
if (c(f) ? f = [f] : d(f) && (f = f.split(".")), a(f) || 0 === f.length) return !1; | |
for (var g = 0; g < f.length; g++) { | |
var h = f[g]; | |
if (!e(b) && !l(b) || !k.call(b, h)) return !1; | |
b = b[h] | |
} | |
return !0 | |
}, m.ensureExists = function(a, b, c) { | |
return h(a, b, c, !0) | |
}, m.set = function(a, b, c, d) { | |
return h(a, b, c, d) | |
}, m.insert = function(a, b, c, d) { | |
var e = m.get(a, b); | |
d = ~~d, l(e) || (e = [], m.set(a, b, e)), e.splice(d, 0, c) | |
}, m.empty = function(b, g) { | |
if (a(g)) return b; | |
if (!a(b)) { | |
var h, i; | |
if (!(h = m.get(b, g))) return b; | |
if (d(h)) return m.set(b, g, ""); | |
if (f(h)) return m.set(b, g, !1); | |
if (c(h)) return m.set(b, g, 0); | |
if (l(h)) h.length = 0; | |
else { | |
if (!e(h)) return m.set(b, g, null); | |
for (i in h) k.call(h, i) && delete h[i] | |
} | |
} | |
}, m.push = function(a, b) { | |
var c = m.get(a, b); | |
l(c) || (c = [], m.set(a, b, c)), c.push.apply(c, Array.prototype.slice.call(arguments, 2)) | |
}, m.coalesce = function(a, b, c) { | |
for (var d, e = 0, f = b.length; f > e; e++) | |
if (void 0 !== (d = m.get(a, b[e]))) return d; | |
return c | |
}, m.get = function(b, e, f) { | |
if (c(e) && (e = [e]), a(e)) return b; | |
if (a(b)) return f; | |
if (d(e)) return m.get(b, e.split("."), f); | |
var h = g(e[0]); | |
return 1 === e.length ? void 0 === b[h] ? f : b[h] : m.get(b[h], e.slice(1), f) | |
}, m.del = function(a, b) { | |
return i(a, b) | |
}, m | |
}) | |
}, {}], | |
2: [function(a, b, c) { | |
var d = a(18), | |
e = a(13); | |
b.exports.rubicontag = new e, void 0 !== d && (d.rubicontag && (d.origrubicontag = d.rubicontag), d.rubicontag = b.exports.rubicontag) | |
}, { | |
13: 13, | |
18: 18 | |
}], | |
3: [function(a, b, c) { | |
"use strict"; | |
var d = a(19), | |
e = a(11), | |
f = a(17), | |
g = function() { | |
var a, b = this, | |
c = new d; | |
b.requestTime = 0; | |
var g = null, | |
h = null, | |
i = null, | |
j = { | |
url: "", | |
type: "post", | |
cache: !1, | |
async: !0, | |
dataType: "json", | |
data: null, | |
timeout: 0, | |
jsonpCallback: "", | |
jsonpCallbackParam: "" | |
}; | |
b.ajax = function(d) { | |
if (j = f.mergeObjects(j, d, !0), "jsonp" === j.dataType.toLowerCase()) { | |
if (j.type = "GET", !j.jsonpCallback) { | |
if (!j.jsonpCallbackParam) return f.error("cannot create a jsonp request with no callback or callbackParam specified:", j), b; | |
var h = "rp_callback_" + parseInt(1e8 * Math.random(), 10); | |
j.data = j.data || {}, j.data[j.jsonpCallbackParam] = h, j.jsonpCallback = h | |
} | |
c = new e(j.jsonpCallback) | |
} | |
var i = []; | |
if ("get" === j.type.toLowerCase() && j.data) | |
for (var k in j.data) j.data.hasOwnProperty(k) && i.push(encodeURIComponent(k) + "=" + encodeURIComponent(j.data[k])); | |
return j.cache !== !0 && "get" === j.type.toLowerCase() && i.push(1e18 * Math.random()), i.length > 0 && (j.url += j.url.indexOf("?") > 0 ? "&" : "?", j.url += i.join("&")), c.open(j.type, j.url, j.async), c.withCredentials = !0, j.timeout && j.async && (c.timeout = j.timeout), "post" === j.type.toLowerCase() && c.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), c.onreadystatechange = g, a = (new Date).getTime(), c.send("get" !== j.type.toLowerCase() ? j.data : null), b | |
}, g = function() { | |
if (4 === c.readyState) | |
if (b.requestTime = (new Date).getTime() - a, 200 === c.status) | |
for (; h.length;) h.shift()(c); | |
else | |
for (; i.length;) i.shift()(c) | |
}, h = [], i = [], b.done = function(a) { | |
return c && 4 === c.readyState && 200 === c.status ? a(c) : h.push(a), b | |
}, b.fail = function(a) { | |
return c && 4 === c.readyState && 200 !== c.status ? a(c) : i.push(a), b | |
}, b.always = function(a) { | |
return c && 4 === c.readyState ? a(c) : (h.push(a), i.push(a)), b | |
}, b.abort = function() { | |
return c.abort(), b | |
} | |
}; | |
b.exports = g | |
}, { | |
11: 11, | |
17: 17, | |
19: 19 | |
}], | |
4: [function(a, b, c) { | |
"use strict"; | |
var d = a(6), | |
e = a(17), | |
f = a(3), | |
g = function() { | |
var a = this, | |
b = !1, | |
c = null, | |
g = null, | |
h = e.browserSupportsXHR(), | |
i = { | |
nAccountId: null, | |
oBatching: { | |
bEnabled: !0, | |
nBatchSize: 100, | |
nBatchWindow: 3e3 | |
}, | |
sHost: "stats.aws.rubiconproject.com/stats/", | |
sBucket: "fastlane" | |
}, | |
j = [], | |
k = null, | |
l = function(b) { | |
var c = b[0]; | |
i.nAccountId = c.accountId; | |
var d = c && c.configuration && c.configuration.analytics ? c.configuration.analytics : {}; | |
return i.sBucket = d.bucket ? d.bucket : i.sBucket, i.sHost = d.host ? d.host : i.sHost, i.sHost.match(/^http(s)?:/) || (i.sHost = e.getProtocol() + i.sHost), d.batching && (i.oBatching.bEnabled = "boolean" == typeof d.batching.enabled ? d.batching.enabled : i.oBatching.bEnabled, i.oBatching.nBatchSize = isNaN(d.batching.batchSize) ? i.oBatching.nBatchSize : d.batching.batchSize, i.oBatching.nBatchWindow = isNaN(d.batching.batchWindow) ? i.oBatching.nBatchWindow : d.batching.batchWindow), e.addUserDistractionEventListener(function() { | |
a.flushEvents() | |
}), a | |
}; | |
a.publish = function(e, f) { | |
return b || (b = !0, l(d.getConfigs())), i.oBatching.bEnabled && h ? c(e, f) : g([{ | |
sEventCode: e, | |
sLine: f | |
}]), a | |
}, c = function(b, c) { | |
j.push({ | |
sEventCode: b, | |
sLine: c | |
}), j.length >= i.oBatching.nBatchSize ? a.flushEvents() : null === k && (k = setTimeout(function() { | |
a.flushEvents() | |
}, i.oBatching.nBatchWindow)) | |
}, g = function(a) { | |
var b = [], | |
c = 0; | |
if (h) { | |
for (c = 0; c < a.length; c++) b.push(encodeURIComponent(i.sBucket + "/" + a[c].sLine)); | |
var d = b.join("|"), | |
e = new f; | |
e.ajax({ | |
url: i.sHost, | |
type: "POST", | |
async: !0, | |
data: d | |
}) | |
} else | |
for (c = 0; c < a.length; c++) { | |
var g = i.sHost; | |
g += encodeURIComponent(i.sBucket) + "/"; | |
var j = encodeURIComponent(a[c].sLine); | |
j = j.replace(/%2F/g, "/"), (new Image).src = g + j + "?rnd=" + Math.random() | |
} | |
}, a.flushEvents = function() { | |
var a = j; | |
j = [], null !== k && (clearTimeout(k), k = null), a.length && g(a) | |
} | |
}; | |
b.exports = new g | |
}, { | |
17: 17, | |
3: 3, | |
6: 6 | |
}], | |
5: [function(a, b, c) { | |
"use strict"; | |
var d = (a(18), function() { | |
var a = this; | |
a.push = function(a) { | |
a() | |
} | |
}); | |
b.exports = new d | |
}, { | |
18: 18 | |
}], | |
6: [function(a, b, c) { | |
"use strict"; | |
var d = function() { | |
var b = this, | |
c = [], | |
d = [], | |
e = a(1); | |
b.getConfigs = function() { | |
return c | |
}, b.hasConfig = function() { | |
return c.length > 0 | |
}, b.addConfig = function(a) { | |
c.push(a); | |
for (var b = 0; b < d.length; b++) d[b]() | |
}, b.onLoad = function(a) { | |
"[object Function]" === Object.prototype.toString.call(a) && d.push(a) | |
}, b.getConfigValue = function(a, b, d) { | |
return a >= c.length ? d : e.get(c[a], b, d) | |
} | |
}; | |
b.exports = new d | |
}, { | |
1: 1 | |
}], | |
7: [function(a, b, c) { | |
"use strict"; | |
var d = a(17), | |
e = a(15), | |
f = (a(8), function() { | |
var a = this, | |
b = new e, | |
c = {}, | |
f = {}, | |
g = null; | |
a.setFPI = function(a, b) { | |
d.isArray(b) || (b = [b]), c[a] = b | |
}, a.addFPI = function(a, b) { | |
c.hasOwnProperty(a) && d.isArray(c[a]) || (c[a] = []), d.isArray(b) || (b = [b]); | |
for (var e = 0; e < b.length; e++) { | |
var f = b[e]; | |
d.inArray(f, c[a]) || c[a].push(f) | |
} | |
}, a.getFPI = function() { | |
return g(c) | |
}, a.setFPV = function(a, b) { | |
d.isArray(b) || (b = [b]), f[a] = b | |
}, a.addFPV = function(a, b) { | |
f.hasOwnProperty(a) && d.isArray(f[a]) || (f[a] = []), d.isArray(b) || (b = [b]); | |
for (var c = 0; c < b.length; c++) { | |
var e = b[c]; | |
d.inArray(e, f[a]) || f[a].push(e) | |
} | |
}, a.getFPV = function() { | |
return g(f) | |
}, a.addKW = function(a) { | |
d.isArray(a) || (a = [a]); | |
for (var c = 0; c < a.length; c++) b.add(a[c]) | |
}, a.getKWs = function() { | |
return b.toArray() | |
}, g = function(a) { | |
return d.convertKeyValuePairObjectToArray(a) | |
} | |
}); | |
b.exports = f | |
}, { | |
15: 15, | |
17: 17, | |
8: 8 | |
}], | |
8: [function(a, b, c) { | |
"use strict"; | |
var d = a(6), | |
e = a(4), | |
f = a(17), | |
g = {}, | |
h = { | |
LOG_DISABLE: 1 / 0, | |
LOG_ALWAYS: 0, | |
LOG_ERROR: 1, | |
LOG_WARN: 2, | |
LOG_INFO: 3, | |
LOG_DEBUG: 4 | |
}, | |
i = { | |
BAD_EVENT: { | |
sLabel: "badEvent", | |
sAnalyticsPattern: "bad-event/{sEventType}", | |
sLogPattern: "Unknown event triggered: {sEventType}", | |
nAnalyticsLevel: h.LOG_ERROR, | |
nLogLevel: h.LOG_ERROR | |
}, | |
HL_INIT: { | |
sLabel: "init", | |
sAnalyticsPattern: "init/{nAccountId}/{sVersion}", | |
sLogPattern: "initialized account: {nAccountId}", | |
nAnalyticsLevel: h.LOG_ALWAYS, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
HL_RUN_CALLED: { | |
sLabel: "runCalled", | |
sAnalyticsPattern: "run-called/{nAccountId}", | |
sLogPattern: "rubicontag.run() function called", | |
nAnalyticsLevel: h.LOG_DEBUG, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
HL_RUN_BAD_CALLBACK: { | |
sLabel: "badRunCallback", | |
sAnalyticsPattern: "", | |
sLogPattern: "Missing or invalid callback provided to rubicontag.run(). Overiding with empty function.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_ERROR | |
}, | |
HL_BAD_TIMEOUT: { | |
sLabel: "badTimeout", | |
sAnalyticsPattern: "badtimeout/{nTimeout}", | |
sLogPattern: "Invalid timeout value: {nTimeout}. Must be at least 300", | |
nAnalyticsLevel: h.LOG_ERROR, | |
nLogLevel: h.LOG_ERROR | |
}, | |
HL_BAD_DEFINE_SLOT: { | |
sLabel: "badDefineSlot", | |
sAnalyticsPattern: "", | |
sLogPattern: "Too few arguments passed to defineSlot. Name: {sSlotName}; sizes list: {aDimensions}; element ID: {sElementId}.", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_WARN | |
}, | |
HL_BAD_DEFINE_SLOT_FROM_OBJ: { | |
sLabel: "badDefineSlotFromObj", | |
sAnalyticsPattern: "", | |
sLogPattern: "Incorrect object params passed to defineSlot. SiteId: {nSiteId}; zoneId: {nZoneId}; sizes list: {aSizes}; unique id: {nId}.", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_WARN | |
}, | |
SLOT_BAD_DIMENSIONS: { | |
sLabel: "badDimensions", | |
sAnalyticsPattern: "", | |
sLogPattern: "Given dimensions {sGivenDimensions} were parsed to {sParsedDimensions}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_START: { | |
sLabel: "slotSpecificityStart", | |
sAnalyticsPattern: "", | |
sLogPattern: "Starting slot specificity calculation for slot name: {sSlotName}, element ID: {sElementId}, contexts: {sContexts}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_SLOTNAME_EXACT: { | |
sLabel: "slotSpecificitySlotExact", | |
sAnalyticsPattern: "", | |
sLogPattern: "Exact slot name match. slot name: {sSlotName}, pattern: {sSlotNamePattern}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_SLOTNAME_PATTERN: { | |
sLabel: "slotSpecificitySlotPattern", | |
sAnalyticsPattern: "", | |
sLogPattern: "Partial slot name match. slot name: {sSlotName}, pattern: {sSlotNamePattern}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_SLOTNAME_FAILED: { | |
sLabel: "slotSpecificitySlotFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Slot name match failed. Slot name: {sSlotName}, pattern: {sSlotNamePattern}. Skipping.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_ELEMENT_EXACT: { | |
sLabel: "slotSpecificityElementIdExact", | |
sAnalyticsPattern: "", | |
sLogPattern: "Exact element ID match. element ID: {sElementId}, pattern: {sElementIdPattern}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_ELEMENT_PATTERN: { | |
sLabel: "slotSpecificityElementIdPattern", | |
sAnalyticsPattern: "", | |
sLogPattern: "Partial element ID match. element ID: {sElementId}, pattern: {sElementIdPattern}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_ELEMENT_FAILED: { | |
sLabel: "slotSpecificityElementIdFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Element Id match failed. Element Id: {sElementId}, pattern: {sElementIdPattern}. Skipping.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_POSITION: { | |
sLabel: "slotSpecificityPosition", | |
sAnalyticsPattern: "", | |
sLogPattern: "Position match. Position: {sPosition}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_POSITION_FAILED: { | |
sLabel: "slotSpecificityPositionFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Position match failed. Slot position: {sSlotPosition}, configured: {sPosition}. Skipping.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_DEVICE_TYPE: { | |
sLabel: "slotSpecificityDeviceType", | |
sAnalyticsPattern: "", | |
sLogPattern: "Device type match. Device type: {sDeviceType}, configured: {sDeviceTypes}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_DEVICE_TYPE_FAILED: { | |
sLabel: "slotSpecificityDeviceTypeFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Device type match failed. Device type: {sDeviceType}, configured: {sDeviceTypes}. Skipping.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_URL_PATTERN: { | |
sLabel: "slotSpecificityUrlPattern", | |
sAnalyticsPattern: "", | |
sLogPattern: "Partial URL match. URL: {sUrl}, pattern: {sUrlPattern}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_URL_FAILED: { | |
sLabel: "slotSpecificityUrlFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "URL match failed. URL: {sUrl}, pattern: {sUrlPattern}. Skipping.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_CONTEXT: { | |
sLabel: "slotSpecificityContext", | |
sAnalyticsPattern: "", | |
sLogPattern: "Context matching. Page contexts: {sPageContexts}, configured contexts: {sConfiguredContexts}, matches: {nMatches}, points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_CONTEXT_FAILED: { | |
sLabel: "slotSpecificityContextFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Context match failed. Page contexts: {sPageContexts}, configured contexts: {sConfiguredContexts}. Skipping.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SPECIFICITY_END: { | |
sLabel: "slotSpecificityEnd", | |
sAnalyticsPattern: "", | |
sLogPattern: "End slot specificity calculation for slot name: {sSlotName}, element ID: {sElementId}, contexts: {sContexts}. Points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_USING_CATCH_ALL: { | |
sLabel: "slotCatchAllConfig", | |
sAnalyticsPattern: "", | |
sLogPattern: "No configuration match found for slot: {sSlotName}, element ID: {sElementId}. Using catch-all.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_SIZE_NOT_MAPPED: { | |
sLabel: "slotSizeNotMapped", | |
sAnalyticsPattern: "slot-size-not-mapped/{sDimensions}/{sSlotName}", | |
sLogPattern: "Could not map dimension: {sDimensions} for slot: {sSlotName}.", | |
nAnalyticsLevel: h.LOG_DEBUG, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
SLOT_GPT_TARGETING_SET: { | |
sLabel: "gptTargetingSet", | |
sAnalyticsPattern: "gpt-targeting-set/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}/{sTier}/{sValue}", | |
sLogPattern: "Setting key/value pair for GPT Slot. Key: {sKey} Value: {sValue}.", | |
nAnalyticsLevel: h.LOG_ALWAYS, | |
nLogLevel: h.LOG_INFO | |
}, | |
HL_CREATIVE_RENDERED: { | |
sLabel: "creativeRenderCalled", | |
sAnalyticsPattern: "render/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}/{sTier}/{nCpm}/{sAuctionId}", | |
sLogPattern: "Creative rendering called for size: {nSizeId}, element: {sElementId}, account: {nAccountId}.", | |
nAnalyticsLevel: h.LOG_ALWAYS, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
HL_CREATIVE_RENDER_SLOT_NOT_FOUND: { | |
sLabel: "creativeRenderSlotNotFound", | |
sAnalyticsPattern: "render-no-slot/{nSizeId}/{sElementId}/{nAccountId}", | |
sLogPattern: "Creative rendering could not find slot for size: {nSizeId}, element: {sElementId}, account: {nAccountId}.", | |
nAnalyticsLevel: h.LOG_ERROR, | |
nLogLevel: h.LOG_ERROR | |
}, | |
HL_CREATIVE_RENDER_CREATIVE_NOT_FOUND: { | |
sLabel: "creativeRenderCreativeNotFound", | |
sAnalyticsPattern: "render-no-creative/{nSizeId}/{sElementId}/{nAccountId}", | |
sLogPattern: "Creative rendering could not find creative for size: {nSizeId}, element: {sElementId}, account: {nAccountId}.", | |
nAnalyticsLevel: h.LOG_ERROR, | |
nLogLevel: h.LOG_ERROR | |
}, | |
FL_RESPONSE_SUCCESS: { | |
sLabel: "responseSuccess", | |
sAnalyticsPattern: "response/success/{nStatusCode}/{sRequestType}/{nTimeout}/{nRequestTime}/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}", | |
sLogPattern: "Auction request finished successfully before timeout {nTimeout} in {nRequestTime} ms, elementId: {sElementId}, sizeId: {nSizeId}.", | |
nAnalyticsLevel: h.LOG_INFO, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_RESPONSE_TIMEOUT: { | |
sLabel: "responseTimeout", | |
sAnalyticsPattern: "response/timeout/{nStatusCode}/{sRequestType}/{nTimeout}/{nRequestTime}/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}", | |
sLogPattern: "Auction request finished AFTER timeout {nTimeout} in {nRequestTime} ms, elementId: {sElementId}, sizeId: {nSizeId}.", | |
nAnalyticsLevel: h.LOG_INFO, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_RESPONSE_FAILURE: { | |
sLabel: "responseFailure", | |
sAnalyticsPattern: "response/failure/{nStatusCode}/{sRequestType}/{nTimeout}/{nRequestTime}/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}", | |
sLogPattern: "Auction request failed: {sStatus}, with status code {nStatusCode}, elementId: {sElementId}, sizeId: {nSizeId}.", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_WARN | |
}, | |
FL_RESPONSE_PARSE_ERROR: { | |
sLabel: "responseParseError", | |
sAnalyticsPattern: "parse-error/{sSlotName}/size/{nSizeId}/response/{sRequestData}", | |
sLogPattern: "Error parsing response data: {sRequestData}.", | |
nAnalyticsLevel: h.LOG_INFO, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_BAD_RESPONSE_STATUS: { | |
sLabel: "badResponseStatus", | |
sAnalyticsPattern: "status/{sStatus}", | |
sLogPattern: "Invalid auction ad: {sStatus} / {sReason}", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_AUCTION_CPM_OVERRIDE: { | |
sLabel: "auctionCpmOverride", | |
sAnalyticsPattern: "cpm-override/{nOriginalCpm}/{nOverrideCpm}", | |
sLogPattern: "Overriding Auction CPM. Original: {nOriginalCpm}. Override: {nOverrideCpm}", | |
nAnalyticsLevel: h.LOG_ERROR, | |
nLogLevel: h.LOG_ERROR | |
}, | |
FL_NO_ADS: { | |
sLabel: "noAds", | |
sAnalyticsPattern: "no-ads/{sSlotName}", | |
sLogPattern: "No ads found for slot: {sSlotName}", | |
nAnalyticsLevel: h.LOG_DEBUG, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_TIER_MAPPED: { | |
sLabel: "tierMapped", | |
sAnalyticsPattern: "tier-mapped/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}/{sTier}/{nCpm}", | |
sLogPattern: "Tier mapped. Price: {nCpm}. Tier: {sTier}. Slot: {sElementId}.", | |
nAnalyticsLevel: h.LOG_ALWAYS, | |
nLogLevel: h.LOG_INFO | |
}, | |
FL_TIER_NOT_MAPPED: { | |
sLabel: "tierNotMapped", | |
sAnalyticsPattern: "tier-not-mapped/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}/{nPrice}", | |
sLogPattern: 'Could not map "{nPrice}" to any tier for slot "{sSlotName}".', | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_TIER_SPECIFICITY_PRICE: { | |
sLabel: "tierSpecificityPrice", | |
sAnalyticsPattern: "", | |
sLogPattern: "Price matched for tier: {sTierMapping}. Bounds: {nFloor} <= {nAuctionCpm} <= {nCeiling}. Points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_INFO | |
}, | |
FL_TIER_SPECIFICITY_PRICE_FAILED: { | |
sLabel: "tierSpecificityPriceFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Price did not match for tier: {sTierMapping}. Bounds: {nFloor} <= {nAuctionCpm} <= {nCeiling}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_DEBUG | |
}, | |
FL_TIER_SPECIFICITY_DEAL_WILDCARD: { | |
sLabel: "tierSpecificityDealWildcard", | |
sAnalyticsPattern: "", | |
sLogPattern: "Deal wildcard matched for tier: {sTierMapping}. Deal ID: {nDeal}. Points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_INFO | |
}, | |
FL_TIER_SPECIFICITY_DEAL_EXACT: { | |
sLabel: "tierSpecificityDealExact", | |
sAnalyticsPattern: "", | |
sLogPattern: "Deal matched for tier: {sTierMapping}. Deal ID: {nDeal}. Points: {nPoints}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_INFO | |
}, | |
FL_TIER_SPECIFICITY_DEAL_FAILED: { | |
sLabel: "tierSpecificityDealFailed", | |
sAnalyticsPattern: "", | |
sLogPattern: "Deal did not match for tier: {sTierMapping}. Deal ID: {nDeal}.", | |
nAnalyticsLevel: h.LOG_DISABLE, | |
nLogLevel: h.LOG_INFO | |
}, | |
FL_EXCEEDED_REQUESTS_PER_SLOT: { | |
sLabel: "exceededReqPerSlotLimit", | |
sAnalyticsPattern: "exceed-slot-requests/{sSlotName}/limit/{nLimit}", | |
sLogPattern: "Exceeded size limit per slot for slot: {sSlotName}. Limit: {nLimit}.", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_WARN | |
}, | |
FL_EXCEEDED_REQUESTS_PER_PAGE: { | |
sLabel: "exceededReqPerPageLimit", | |
sAnalyticsPattern: "exceed-page-requests/{nLimit}", | |
sLogPattern: "Exceeded requests-per-page limit: {nLimit}.", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_WARN | |
}, | |
FL_USING_JSONP_REQUEST: { | |
sLabel: "usingJsonpRequest", | |
sAnalyticsPattern: "using-jsonp-request/{nAccountId}", | |
sLogPattern: "Using JSONP rather than xhr for auction requests.", | |
nAnalyticsLevel: h.LOG_INFO, | |
nLogLevel: h.LOG_INFO | |
}, | |
FL_CREATIVE_CACHED: { | |
sLabel: "creativeCached", | |
sAnalyticsPattern: "creative-cached/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}", | |
sLogPattern: "Found creative for slot: {sSlotName}, size: {nSizeId}. Skipping auction.", | |
nAnalyticsLevel: h.LOG_WARN, | |
nLogLevel: h.LOG_WARN | |
}, | |
FL_SLOT_AUCTION: { | |
sLabel: "slotAuction", | |
sAnalyticsPattern: "slot-auction/{nAccountId}/{nSiteId}/{nZoneId}/{nSizeId}", | |
sLogPattern: "Running auction for slot: {sSlotName}, size: {nSizeId}.", | |
nAnalyticsLevel: h.LOG_ALWAYS, | |
nLogLevel: h.LOG_DEBUG | |
} | |
}, | |
j = !1, | |
k = function() { | |
j || (j = !0, g.nAnalyticsLevel = d.getConfigValue(0, "configuration.analyticsLevel"), g.nAccountId = d.getConfigValue(0, "accountId"), g.nLogLevel = parseInt(f.getUrlCookieParam("rp_loglevel"), 10), isNaN(g.nLogLevel) && (g.nLogLevel = d.getConfigValue(0, "configuration.logLevel", 0))) | |
}, | |
l = function(a, b) { | |
var c = this; | |
k(); | |
var d, j = !1; | |
c.publish = function() { | |
if (!j) { | |
j = !0, i.hasOwnProperty(a) || (b = { | |
sEventType: a | |
}, a = "BAD_EVENT"); | |
var c = i[a]; | |
c.nAnalyticsLevel <= g.nAnalyticsLevel && (d = f.formatString(c.sAnalyticsPattern, b, !0), d = "account/" + g.nAccountId + "/" + d, e.publish(c.sLabel, d)), c.nLogLevel <= g.nLogLevel && (d = f.formatString(c.sLogPattern, b), c.nLogLevel === h.LOG_ERROR ? f.error(d) : c.nLogLevel === h.LOG_WARN ? f.warn(d) : c.nLogLevel === h.LOG_INFO ? f.info(d) : c.nLogLevel === h.LOG_DEBUG && f.debug(d)) | |
} | |
} | |
}; | |
l.factory = function(a, b, c) { | |
var d = new l(a, b); | |
return (arguments.length <= 2 || c) && d.publish(), d | |
}, b.exports = l | |
}, { | |
17: 17, | |
4: 4, | |
6: 6 | |
}], | |
9: [function(a, b, c) { | |
"use strict"; | |
var d = a(3), | |
e = a(12), | |
f = a(15), | |
g = a(8), | |
h = function() { | |
var b = this, | |
c = null, | |
h = 0, | |
i = 0, | |
j = null, | |
k = a(6), | |
l = a(17), | |
m = (a(10), []), | |
n = [], | |
o = null, | |
p = null, | |
q = null, | |
r = null, | |
s = null, | |
t = null, | |
u = null, | |
v = null, | |
w = 0, | |
x = { | |
nPrice: 10, | |
nDealWildcard: 25, | |
nDealExact: 50 | |
}, | |
y = !l.browserSupportsXHR(); | |
b.init = function(a) { | |
if (i = a, m = k.getConfigValue(i, "tiers", m), j = k.getConfigValue(i, "accountId"), h = v(m), n = k.getConfigValue(i, "fastlane.optimizedHosts", ["optimized-by.rubiconproject.com/a/api/fastlane.json"]), y) | |
for (var b = 0; b < n.length; b++) n[b] += "p" | |
}; | |
var z = function(a, b, c) { | |
var d; | |
try { | |
d = "object" == typeof c ? c : JSON.parse(c) | |
} catch (e) { | |
return void g.factory("FL_RESPONSE_PARSE_ERROR", { | |
sSlotName: a.getSlotName(), | |
nSizeId: b, | |
sRequestData: c | |
}) | |
} | |
if (!d || !d.ads || d.ads.length < 1) return void g.factory("FL_NO_ADS", { | |
sSlotName: a.getSlotName(), | |
nSizeId: b | |
}); | |
if ("ok" !== d.ads[0].status) return void g.factory("FL_BAD_RESPONSE_STATUS", { | |
sStatus: d.ads[0].status, | |
sReason: d.ads[0].reason | |
}); | |
var f = parseFloat(l.getUrlCookieParam("rp_cpm_override")); | |
f && (g.factory("FL_AUCTION_CPM_OVERRIDE", { | |
nOriginalCpm: d.ads[0].cpm, | |
nOverrideCpm: f | |
}), d.ads[0].cpm = f); | |
var i = d.ads[0].cpm; | |
if (h > i) return void g.factory("FL_BAD_RESPONSE_STATUS", { | |
sStatus: d.ads[0].status, | |
sReason: d.ads[0].reason | |
}); | |
var k = p(d, m), | |
n = k.nPoints ? k.oTier.mapping : !1; | |
n !== !1 ? (o(a, d.size_id, n), a.storeCreative(d.account_id, d.size_id, d.ads[0], n), g.factory("FL_TIER_MAPPED", { | |
nAccountId: j, | |
sElementId: a.getElementId(), | |
nSiteId: a.getSiteId(j), | |
nZoneId: a.getZoneId(j), | |
nSizeId: b, | |
sTier: n, | |
nCpm: i | |
})) : g.factory("FL_TIER_NOT_MAPPED", { | |
sSlotName: a.getSlotName(), | |
sElementId: a.getElementId(), | |
nAccountId: j, | |
nSiteId: a.getSiteId(j), | |
nZoneId: a.getZoneId(j), | |
nSizeId: b, | |
nPrice: i | |
}) | |
}; | |
o = function(a, b, c) { | |
var d = "rpfl_" + j; | |
a.addAdServerTargeting(d, [b, "_", c].join("")), a.addAdServerTargeting("rpfl_elemid", a.getElementId()) | |
}, p = function(a, b) { | |
var c = { | |
nPoints: 0, | |
oTier: {} | |
}; | |
for (var d in b) | |
if (b.hasOwnProperty(d)) { | |
var e = q(a, b[d]); | |
e > c.nPoints && (c.nPoints = e, c.oTier = b[d]) | |
} | |
return c | |
}, q = function(a, b) { | |
var c = 0, | |
d = Math.round(100 * a.ads[0].cpm) / 100; | |
if (b.hasOwnProperty("floor") && b.hasOwnProperty("ceiling")) { | |
if (!(d >= b.floor && d <= b.ceiling)) return g.factory("FL_TIER_SPECIFICITY_PRICE_FAILED", { | |
nAuctionCpm: d, | |
sTierMapping: b.mapping, | |
nFloor: b.floor, | |
nCeiling: b.ceiling | |
}), 0; | |
c += x.nPrice, g.factory("FL_TIER_SPECIFICITY_PRICE", { | |
nAuctionCpm: d, | |
sTierMapping: b.mapping, | |
nFloor: b.floor, | |
nCeiling: b.ceiling, | |
nPoints: c | |
}) | |
} | |
if (b.hasDeals) { | |
var e = a.ads[0].deal ? parseInt(a.ads[0].deal, 10) : !1; | |
if (b.hasDeals !== !0 || !e) return g.factory("FL_TIER_SPECIFICITY_DEAL_FAILED", { | |
sTierMapping: b.mapping, | |
nDeal: e | |
}), 0; | |
c += x.nDealWildcard, g.factory("FL_TIER_SPECIFICITY_DEAL_WILDCARD", { | |
sTierMapping: b.mapping, | |
nDeal: e, | |
nPoints: c | |
}) | |
} else if (b.deals) { | |
var f = a.ads[0].deal ? parseInt(a.ads[0].deal, 10) : !1; | |
if (b.deals === !0 && f) c += x.nDealWildcard, g.factory("FL_TIER_SPECIFICITY_DEAL_WILDCARD", { | |
sTierMapping: b.mapping, | |
nDeal: f, | |
nPoints: c | |
}); | |
else { | |
if (!l.isArray(b.deals) || !l.inArray(f, b.deals)) return g.factory("FL_TIER_SPECIFICITY_DEAL_FAILED", { | |
sTierMapping: b.mapping, | |
nDeal: f | |
}), 0; | |
c += x.nDealExact, g.factory("FL_TIER_SPECIFICITY_DEAL_EXACT", { | |
sTierMapping: b.mapping, | |
nDeal: f, | |
nPoints: c | |
}) | |
} | |
} | |
return c | |
}, b.run = function(a, c) { | |
if ("function" != typeof a) throw new Error("first argument to 'run' must be a callback function"); | |
if (!u()) return void a([]); | |
var h = new e(15e3), | |
i = new f, | |
m = { | |
bTimedout: !1, | |
nTimeout: c.nTimeout || 2e3 | |
}; | |
m.oTimeout = setTimeout(function() { | |
l.info("fastlane:", " timeout after " + m.nTimeout + " ms. " + h.getSuccessfulRequests().length + "/" + h.totalRequests() + " requests finished successfully before timeout"), m.bTimedout = !0, a(i.toArray()) | |
}, m.nTimeout); | |
var n = { | |
url: "", | |
type: "GET", | |
cache: !0, | |
async: !0, | |
dataType: "", | |
data: null | |
}; | |
y && (n.dataType = "jsonp", n.jsonpCallbackParam = "cb", g.factory("FL_USING_JSONP_REQUEST", { | |
nAccountId: j | |
})); | |
for (var o = k.getConfigValue(0, "configuration.maximumRequestsPerPage", 100), p = k.getConfigValue(0, "configuration.maximumSizesPerSlot", 10), q = k.getConfigValue(0, "configuration.cacheResponses", !1), v = l.getNow(), w = 0; w < c.aSlots.length; w++) { | |
for (var x = c.aSlots[w], z = x.getRubiconSizeIds(j), A = 0; A < z.length; A++) { | |
var B = z[A], | |
C = x.getCreative(j, B); | |
if (null !== C) { | |
if (q && !(C.nExpires <= v)) { | |
g.factory("FL_CREATIVE_CACHED", { | |
sSlotName: x.getSlotName(), | |
nAccountId: j, | |
nSiteId: x.getSiteId(j), | |
nZoneId: x.getZoneId(j), | |
nSizeId: B | |
}); | |
break | |
} | |
x.purgeCreative(j, B) | |
} | |
if (h.totalRequests() >= o) break; | |
if (A >= p) { | |
g.factory("FL_EXCEEDED_REQUESTS_PER_SLOT", { | |
sSlotName: x.getSlotName(), | |
nLimit: p | |
}); | |
break | |
} | |
g.factory("FL_SLOT_AUCTION", { | |
sSlotName: x.getSlotName(), | |
nAccountId: j, | |
nSiteId: x.getSiteId(j), | |
nZoneId: x.getZoneId(j), | |
nSizeId: B | |
}), n.url = t(x, B); | |
var D = new d; | |
h.addRequest(D.ajax(n).done(r(x, B, i, D, m)).fail(s(x, B, D, m))) | |
} | |
if (h.totalRequests() >= o) { | |
g.factory("FL_EXCEEDED_REQUESTS_PER_PAGE", { | |
nLimit: o | |
}); | |
break | |
} | |
} | |
h.allRequestsAdded(), l.info("fastlane:", "sent ", h.totalRequests(), " auction request(s)"), h.finished(function() { | |
m.bTimedout || (l.info("fastlane:", h.getSuccessfulRequests().length + "/" + h.totalRequests() + " requests finished successfully before timeout (" + m.nTimeout + " ms)"), clearTimeout(m.oTimeout), a(i.toArray())) | |
}), setTimeout(function() { | |
b.purgeExpiredCreatives(c.aSlots, j) | |
}, 3e5) | |
}, b.purgeExpiredCreatives = function(a, b) { | |
for (var c = l.getNow(), d = 0; d < a.length; d++) | |
for (var e = a[d], f = e.getRubiconSizeIds(b), g = 0; g < f.length; g++) { | |
var h = e.getCreative(b, f[g]); | |
h && h.nExpires <= c && e.purgeCreative(b, f[g]) | |
} | |
}, r = function(a, b, c, d, e) { | |
return function(f) { | |
e.bTimedout ? g.factory("FL_RESPONSE_TIMEOUT", { | |
nAccountId: j, | |
sElementId: a.getElementId(), | |
nSiteId: a.getSiteId(j), | |
nZoneId: a.getZoneId(j), | |
nSizeId: b, | |
nTimeout: e.nTimeout, | |
nRequestTime: d.requestTime, | |
sRequestType: f.isJsonp ? "jsonp" : "xhr", | |
nStatusCode: f.status | |
}) : g.factory("FL_RESPONSE_SUCCESS", { | |
nAccountId: j, | |
sElementId: a.getElementId(), | |
nSiteId: a.getSiteId(j), | |
nZoneId: a.getZoneId(j), | |
nSizeId: b, | |
nTimeout: e.nTimeout, | |
nRequestTime: d.requestTime, | |
sRequestType: f.isJsonp ? "jsonp" : "xhr", | |
nStatusCode: f.status | |
}), c.add(a.getPublicVersion()), z(a, b, f.responseText) | |
} | |
}, s = function(a, b, c, d) { | |
return function(e) { | |
g.factory("FL_RESPONSE_FAILURE", { | |
nAccountId: j, | |
sElementId: a.getElementId(), | |
nSiteId: a.getSiteId(j), | |
nZoneId: a.getZoneId(j), | |
nSizeId: b, | |
nTimeout: d.nTimeout, | |
nRequestTime: c.requestTime, | |
sRequestType: e.isJsonp ? "jsonp" : "xhr", | |
nStatusCode: e.status, | |
sStatus: e.statusText || "" | |
}) | |
} | |
}; | |
var A = function() { | |
return w++, w >= n.length && (w = 0), n[w] | |
}; | |
t = function(a, b) { | |
var c = l.getProtocol(), | |
d = A(), | |
e = h, | |
f = Math.random(), | |
g = a.getKWs(), | |
i = a.getFPV(), | |
k = a.getFPI(), | |
m = { | |
account_id: j, | |
site_id: a.getSiteId(j), | |
zone_id: a.getZoneId(j), | |
size_id: b, | |
p_pos: a.getPosition(), | |
rp_floor: Math.max(e, .01), | |
rf: l.getFullPageUrl(), | |
p_screen_res: l.getScreenResolution() | |
}; | |
if (g.push("rp.fastlane"), m.kw = g.join(","), i.length) { | |
var n = l.generateComplexQueryStringObject(i, "tg_v"); | |
m = l.mergeObjects(m, n, !0) | |
} | |
if (k.length) { | |
var o = l.generateComplexQueryStringObject(k, "tg_i"); | |
m = l.mergeObjects(m, o, !0) | |
} | |
return m.rand = f, [c, d, "?", l.convertObjectToQueryString(m)].join("") | |
}, u = function() { | |
if ("boolean" == typeof c) return c; | |
var a = parseInt(k.getConfigValue(i, "fastlane.pageSampling", 1), 10); | |
return c = a > Math.random() | |
}, v = function(a) { | |
var b = []; | |
for (var c in a) a.hasOwnProperty(c) && b.push(parseFloat(a[c].floor)); | |
return b.sort(function(a, b) { | |
return a - b | |
}), b.length ? b[0] : 0 | |
} | |
}; | |
b.exports = h | |
}, { | |
10: 10, | |
12: 12, | |
15: 15, | |
17: 17, | |
3: 3, | |
6: 6, | |
8: 8 | |
}], | |
10: [function(a, b, c) { | |
"use strict"; | |
var d = a(18), | |
e = a(16), | |
f = a(9), | |
g = a(6), | |
h = a(7), | |
i = a(17), | |
j = a(8), | |
k = (a(4), a(14)), | |
l = function() { | |
var a = this, | |
b = null, | |
c = null, | |
l = null, | |
m = {}, | |
n = new h, | |
o = !1, | |
p = [], | |
q = [], | |
r = 1e3, | |
s = 300, | |
t = '<!doctype html>\n\n<html lang="en"><head><meta charset="utf-8"><title></title><script type="text/javascript">var inDapIF = true;</script></head><body style="margin: 0px; padding: 0px;"><script type="text/javascript">', | |
u = "</script></body></html>"; | |
a.loadConfiguration = function(a) { | |
o || g.addConfig(a) | |
}, a.init = function() { | |
if (!o) { | |
o = !0, a.writeDnsPrefetchElements(); | |
var c = g.getConfigValue(0, "sizeMap", !1); | |
c && (i.oSizeMap = c), p = b(), d.origrubicontag && d.origrubicontag.cmd && i.isArray(d.origrubicontag.cmd) && a.processCommands(d.origrubicontag.cmd), j.factory("HL_INIT", { | |
nAccountId: g.getConfigValue(0, "accountId"), | |
sVersion: g.getConfigValue(0, "configuration.version") | |
}) | |
} | |
}, a.writeDnsPrefetchElements = function() { | |
var a = d.document.createElement("link"); | |
a.rel = "dns-prefetch", a.href = "//optimized-by.rubiconproject.com/"; | |
var b = d.document.getElementsByTagName("script")[0]; | |
b && b.parentNode.appendChild(a) | |
}, b = function() { | |
for (var a = [], b = g.getConfigs(), c = 0; c < b.length; c++) | |
for (var d = g.getConfigValue(c, "services", []), e = 0; e < d.length; e++) { | |
var h = d[e]; | |
if ("fastlane" === h) { | |
var i = new f; | |
i.init(c), a.push(i) | |
} | |
} | |
return a | |
}, a.run = function(a, b) { | |
j.factory("HL_RUN_CALLED", { | |
nAccountId: g.getConfigValue(0, "accountId") | |
}), "function" != typeof a && (j.factory("HL_RUN_BAD_CALLBACK"), a = function() {}); | |
var d = c(b); | |
k.run(p, a, d) | |
}, c = function(b) { | |
if (b = b || {}, b && i.isInteger(b)) { | |
var c = b; | |
b = { | |
timeout: c | |
} | |
} | |
var d = b.slots ? !0 : !1, | |
e = { | |
nTimeout: b.timeout ? b.timeout : g.getConfigValue(0, "configuration.timeout", r), | |
aSlots: b.slots ? b.slots : !1, | |
bSlotsSpecified: d | |
}; | |
e.nTimeout < s && (j.factory("HL_BAD_TIMEOUT", { | |
nTimeout: e.nTimeout | |
}), e.nTimeout = s); | |
var f = []; | |
if (e.bSlotsSpecified) { | |
if (i.isArray(e.aSlots)) | |
for (var h = 0; h < e.aSlots.length; h++) | |
if (e.aSlots[h] && "function" == typeof e.aSlots[h].getElementId) { | |
var k = a.getSlot(e.aSlots[h].getElementId()); | |
k && f.push(k) | |
} | |
} else f = a.getAllSlots(); | |
return e.aSlots = f, e | |
}, a.processCommands = function(a) { | |
for (var b = 0; b < a.length; b++) a[b]() | |
}, a.defineSlot = function(b, c, d) { | |
if (1 === arguments.length && i.isObject(b)) return l(b); | |
if (arguments.length < 3) return j.factory("HL_BAD_DEFINE_SLOT", { | |
sSlotName: b, | |
aDimensions: c, | |
sElementId: d | |
}), new e(b || null, c || [], d || null); | |
var f = a.getSlot(d); | |
return f === !1 && (f = new e(b, c, d), m[d] = f), f | |
}, l = function(b) { | |
if (!(i.isObject(b) && i.isArray(b.sizes) && b.siteId && b.zoneId && b.id)) return j.factory("HL_BAD_DEFINE_SLOT_FROM_OBJ", { | |
aSizes: b.sizes, | |
nSiteId: b.siteId, | |
nZoneId: b.zoneId, | |
nId: b.id | |
}), new e(b.id ? b.id : null, [], b.id || null); | |
var c = a.getSlot(b.id); | |
if (c === !1) { | |
c = new e(b.id, [], b.id); | |
var d = g.getConfigValue(0, "accountId"); | |
c.loadSlotConfiguration(d, { | |
siteId: b.siteId, | |
zoneId: b.zoneId, | |
sizes: b.sizes | |
}), m[b.id] = c | |
} | |
return c | |
}, a.getAllSlots = function() { | |
var a = []; | |
for (var b in m) m.hasOwnProperty(b) && a.push(m[b]); | |
return a | |
}, a.getSlot = function(a) { | |
for (var b in m) | |
if (m.hasOwnProperty(b) && b === a) return m[b]; | |
return !1 | |
}, a.setTargetingForGPTSlot = function(b) { | |
if (!(b && i.isObject(b) && i.isFunction(b.getSlotElementId) && i.isFunction(b.setTargeting))) return !1; | |
var c = a.getSlot(b.getSlotElementId()); | |
return c && i.isObject(c) && i.isFunction(c.getAdServerTargeting) ? c.setTargetingForGPTSlot(b) : !1 | |
}, a.renderCreative = function(b, c, d, e) { | |
arguments.length < 4 && (e = g.getConfigValue(0, "accountId")); | |
var f, h = d && d.match && d.match(/^([0-9]+)_.+$/); | |
f = i.isArray(h) && 2 === h.length ? h[1] : d; | |
var k = a.getSlot(c); | |
if (k === !1) return void j.factory("HL_CREATIVE_RENDER_SLOT_NOT_FOUND", { | |
sElementId: c, | |
nSizeId: f, | |
nAccountId: e | |
}); | |
var l = k.getCreative(e, f); | |
if (null === l) return void j.factory("HL_CREATIVE_RENDER_CREATIVE_NOT_FOUND", { | |
sElementId: c, | |
nSizeId: f, | |
nAccountId: e | |
}); | |
k.purgeCreative(e, f), j.factory("HL_CREATIVE_RENDERED", { | |
nAccountId: e, | |
sElementId: c, | |
nSiteId: k.getSiteId(e), | |
nZoneId: k.getZoneId(e), | |
nSizeId: f, | |
sTier: l.sTier, | |
nCpm: l.oResponse.cpm, | |
sAuctionId: l.oResponse.impression_id | |
}); | |
var m = ["rpfl", e, k.getSlotName().replace(/[^a-zA-Z0-9]/g, "_"), f].join("_"); | |
a.writeContentToFriendlyIFrame(b, l.oResponse.script, m) | |
}, a.writeContentToFriendlyIFrame = function(a, b, c) { | |
try { | |
c = c ? c : "rp_ct_" + Math.round(1e15 * Math.random()); | |
var e = d.document.createElement("iframe"); | |
e.setAttribute("scrolling", "no"), e.src = "about:blank", e.style.cssText = "width: 100%; height: 100%; border: 0; margin: 0; padding: 0; overflow: hidden;", e.id = c, e.className = "rp-creative-iframe-wrapper", a.appendChild(e); | |
var f = e.contentWindow.document; | |
f.open(), f.write(t + b + u), f.close() | |
} catch (g) { | |
i.error(g) | |
} | |
}, a.setFPI = function(b, c) { | |
return n.setFPI(b, c), a | |
}, a.addFPI = function(b, c) { | |
return n.addFPI(b, c), a | |
}, a.getFPI = function() { | |
return n.getFPI() | |
}, a.setFPV = function(b, c) { | |
return n.setFPV(b, c), a | |
}, a.addFPV = function(b, c) { | |
return n.addFPV(b, c), a | |
}, a.getFPV = function() { | |
return n.getFPV() | |
}, a.addKW = function(b) { | |
return n.addKW(b), a | |
}, a.getKWs = function() { | |
return n.getKWs() | |
}, a.addContext = function() { | |
for (var b = 0; b < arguments.length; b++) q.push(arguments[b]); | |
return a | |
}, a.getContexts = function() { | |
return q | |
} | |
}; | |
b.exports = new l | |
}, { | |
14: 14, | |
16: 16, | |
17: 17, | |
18: 18, | |
4: 4, | |
6: 6, | |
7: 7, | |
8: 8, | |
9: 9 | |
}], | |
11: [function(a, b, c) { | |
"use strict"; | |
var d = a(17), | |
e = a(18), | |
f = function(a) { | |
d.debug("creating jsonp request object with callback:", a); | |
var b, c, f, g, h = this, | |
i = !1, | |
j = null, | |
k = null, | |
l = null, | |
m = null, | |
n = null, | |
o = null, | |
p = null; | |
h.readyState = 0, h.status = 0, h.statusText = "", h.responseText = "", h.timeout = 0, h.onreadystatechange = function() { | |
d.debug('jsonp "onreadystatechange" function called for request:', h, ", url:", b) | |
}, h.isJsonp = !0, h.jsonpArgs = [], h.open = function(a, c) { | |
b = c | |
}, h.send = function() { | |
return i ? void d.warn('"send" called multiple times for jsonp request:', b) : (i = !0, b ? a ? (d.debug("sending jsonp request:", b), j(), n(), void(h.timeout && (g = setTimeout(o, h.timeout)))) : (d.error("no callback given for jsonp request"), void p(0, "jsonp: no callback")) : (d.error("no url given for jsonp request"), void p(0, "jsonp: no url"))) | |
}, h.abort = function() { | |
p(0, "jsonp aborted") | |
}, j = function() { | |
var b = k().contentWindow; | |
b[a] = m | |
}; | |
var q = function() { | |
f && f.contentWindow && delete f.contentWindow[a] | |
}; | |
k = function() { | |
for (var b = e.rp_fl_iframes = e.rp_fl_iframes || [], c = 0; c < b.length; c++) | |
if (!b[c].contentWindow[a]) { | |
f = b[c]; | |
break | |
} | |
return f || (f = l(), b.push(f)), f | |
}, l = function() { | |
var a = "rp_fl_iframe_" + parseInt(1e8 * Math.random(), 10), | |
b = d.createInvisibleIframe(a), | |
c = document.getElementsByTagName("head")[0]; | |
c.insertBefore(b, c.firstChild); | |
var e = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><base target="_top" /><script>inDapIF=true;</script></head><body></body></html>', | |
f = b.contentWindow.document; | |
return f.open(), f.write(e), f.close(), b | |
}, m = function() { | |
for (var a = 0; a < arguments.length; a++) h.jsonpArgs.push(arguments[a]); | |
var b = arguments.length > 0 ? arguments[0] : ""; | |
p(200, "success", b) | |
}, n = function() { | |
var a = f.contentWindow.document; | |
c = a.createElement("script"); | |
var d = a.getElementsByTagName("script")[0]; | |
c.async = 1, c.src = b, d.parentNode.insertBefore(c, d) | |
}, o = function() { | |
p(0, "jsonp timeout") | |
}, p = function(a, e, f) { | |
4 !== h.readyState && (200 === a ? d.info("jsonp request finished successfully:", b, "arguments: ", h.jsonpArgs) : d.warn(e, ": closing jsonp request:", b), h.readyState = 4, h.status = a, h.statusText = e || "", h.responseText = f || "", clearTimeout(g), q(), c && c.parentNode && c.parentNode.removeChild(c), "function" == typeof h.onreadystatechange && h.onreadystatechange()) | |
} | |
}; | |
b.exports = f | |
}, { | |
17: 17, | |
18: 18 | |
}], | |
12: [function(a, b, c) { | |
"use strict"; | |
var d = a(15), | |
e = a(17), | |
f = function(a) { | |
var b, c = this, | |
f = new d, | |
g = new d, | |
h = new d, | |
i = new d, | |
j = !1, | |
k = !1, | |
l = [], | |
m = null, | |
n = null; | |
c.setTimeout = function(a) { | |
b = setTimeout(function() { | |
e.warn("RequestManager:", "timeout (after " + a + "ms)"), c.abort() | |
}, a) | |
}, a && c.setTimeout(a), c.addRequest = function(a) { | |
return f.contains(a) || g.contains(a) ? !0 : j ? !1 : f.add(a) ? (a.always(function(b) { | |
m(a, b) | |
}), k && a.abort(), !0) : !1 | |
}, m = function(a, b) { | |
return f.remove(a) && g.add(a) ? (200 === b.status ? h.add(a) : i.add(a), n(), !0) : !1 | |
}, c.allRequestsAdded = function() { | |
j = !0, n() | |
}, c.allRequestsFinished = function() { | |
return j && !c.haveOpenRequests() ? !0 : !1 | |
}, c.haveOpenRequests = function() { | |
return !f.isEmpty() | |
}, c.finished = function(a) { | |
return "function" == typeof a ? (l.push(a), !0) : !1 | |
}; | |
var o = function() { | |
for (; l.length;) l.shift()(); | |
l = { | |
length: 0, | |
push: function(a) { | |
a() | |
} | |
} | |
}; | |
n = function() { | |
c.allRequestsFinished() && (clearTimeout(b), o()) | |
}, c.abort = function() { | |
e.warn("RequestManager:", "aborting " + f.length() + " open request(s)"); | |
for (var a = f.toArray(), b = 0; b < a.length; b++) a[b].abort(); | |
k = !0, o() | |
}, c.getOpenRequests = function() { | |
return f.toArray() | |
}, c.getClosedRequests = function() { | |
return g.toArray() | |
}, c.totalRequests = function() { | |
return f.length() + g.length() | |
}, c.getSuccessfulRequests = function() { | |
return h.toArray() | |
}, c.getFailedRequests = function() { | |
return i.toArray() | |
} | |
}; | |
b.exports = f | |
}, { | |
15: 15, | |
17: 17 | |
}], | |
13: [function(a, b, c) { | |
"use strict"; | |
var d = a(10), | |
e = a(5), | |
f = function() { | |
var a = this; | |
a.loadConfiguration = function() { | |
return d.loadConfiguration.apply(a, arguments), a | |
}, a.init = function() { | |
return d.init.apply(a, arguments), a | |
}, a.run = function() { | |
return d.run.apply(a, arguments), a | |
}, a.cmd = e, a.getSlot = function() { | |
var b = d.getSlot.apply(a, arguments); | |
return b === !1 ? null : b.getPublicVersion() | |
}, a.defineSlot = function() { | |
return d.defineSlot.apply(a, arguments).getPublicVersion() | |
}, a.getAllSlots = function() { | |
for (var b = d.getAllSlots.apply(a, arguments), c = [], e = 0; e < b.length; e++) c.push(b[e].getPublicVersion()); | |
return c | |
}, a.setFPI = function() { | |
return d.setFPI.apply(a, arguments), a | |
}, a.addFPI = function() { | |
return d.addFPI.apply(a, arguments), a | |
}, a.setFPV = function() { | |
return d.setFPV.apply(a, arguments), a | |
}, a.addFPV = function() { | |
return d.addFPV.apply(a, arguments), a | |
}, a.addKW = function() { | |
return d.addKW.apply(a, arguments), a | |
}, a.addContext = function() { | |
return d.addContext.apply(a, arguments), a | |
}, a.renderCreative = function() { | |
d.renderCreative.apply(a, arguments) | |
}, a.setTargetingForGPTSlot = function() { | |
d.setTargetingForGPTSlot.apply(a, arguments) | |
} | |
}; | |
b.exports = f | |
}, { | |
10: 10, | |
5: 5 | |
}], | |
14: [function(a, b, c) { | |
"use strict"; | |
var d = (a(4), function() { | |
var a = this, | |
b = [], | |
c = 0, | |
d = function() {}, | |
e = null, | |
f = !1, | |
g = {}, | |
h = null, | |
i = null; | |
a.execute = function(a, j, k) { | |
b = a, g = k, c = 0, f = !1, d = j, e = setTimeout(function() { | |
i() | |
}, g.nTimeout); | |
for (var l = 0; l < g.aSlots.length; l++) g.aSlots[l].configure(); | |
for (var m = 0; m < b.length; m++) b[m].run(h, g) | |
}, h = function(a) { | |
c++, c >= b.length && i() | |
}, i = function() { | |
f || (f = !0, clearTimeout(e), d(g)) | |
} | |
}); | |
d.run = function(a, b, c) { | |
var e = new d; | |
return e.execute(a, b, c), e | |
}, b.exports = d | |
}, { | |
4: 4 | |
}], | |
15: [function(a, b, c) { | |
"use strict"; | |
var d = function() { | |
var a = this, | |
b = []; | |
a.add = function(c) { | |
return a.contains(c) ? !1 : (b.push(c), !0) | |
}, a.remove = function(a) { | |
for (var c = 0; c < b.length; c++) | |
if (b[c] === a) return b.splice(c, 1), !0; | |
return !1 | |
}, a.removeByIndex = function(a) { | |
return a < b.length && a >= 0 ? (b.splice(a, 1), !0) : !1 | |
}, a.contains = function(a) { | |
for (var c = 0; c < b.length; c++) | |
if (b[c] === a) return !0; | |
return !1 | |
}, a.isEmpty = function() { | |
return 0 === b.length | |
}, a.length = function() { | |
return b.length | |
}, a.get = function(a) { | |
return b[a] | |
}, a.toArray = function() { | |
return b.slice(0) | |
} | |
}; | |
b.exports = d | |
}, {}], | |
16: [function(a, b, c) { | |
"use strict"; | |
var d = a(18), | |
e = a(7), | |
f = a(15), | |
g = a(17), | |
h = a(8), | |
i = a(6), | |
j = function(a) { | |
var b = this, | |
c = a; | |
b.setFPI = function() { | |
return c.setFPI.apply(b, arguments), b | |
}, b.addFPI = function() { | |
return c.addFPI.apply(b, arguments), b | |
}, b.setFPV = function() { | |
return c.setFPV.apply(b, arguments), b | |
}, b.addFPV = function() { | |
return c.addFPV.apply(b, arguments), b | |
}, b.addKW = function() { | |
return c.addKW.apply(b, arguments), b | |
}, b.setPosition = function() { | |
return c.setPosition.apply(b, arguments), b | |
}, b.getElementId = c.getElementId, b.getSlotName = c.getSlotName, b.getAdServerTargeting = c.getAdServerTargeting, b.getAdServerTargetingByKey = c.getAdServerTargetingByKey, b.getRawResponses = c.getRawResponses, b.getRawResponseBySize = c.getRawResponseBySize, b.isConfigured = c.isConfigured | |
}, | |
k = function(b, c, k) { | |
var l = this, | |
m = null, | |
n = null, | |
o = !1, | |
p = null, | |
q = { | |
nUrlPattern: 10, | |
nDeviceType: 50, | |
nContextKeyword: 100, | |
nPosition: 500, | |
nSlotIdPattern: 1e3, | |
nSlotIdExact: 2e3, | |
nElementIdPattern: 1e4, | |
nElementIdExact: 2e4 | |
}, | |
r = new e, | |
s = a(10), | |
t = {}, | |
u = {}, | |
v = { | |
sElementId: null, | |
sSlotName: null, | |
sPos: "btf", | |
oAccountConfigs: {}, | |
aBaseDimensions: [], | |
aBaseRubiconSizeIds: [] | |
}; | |
l.init = function(a, b, c) { | |
v.sSlotName = a, v.sElementId = c; | |
var d = g.cleanseDimensionsList(b); | |
b != d && [b] != d && h.factory("SLOT_BAD_DIMENSIONS", { | |
sGivenDimensions: b.toString(), | |
sParsedDimensions: d.toString() | |
}), v.aBaseDimensions = d, v.aBaseRubiconSizeIds = []; | |
for (var e = 0; e < d.length; e++) { | |
var f = g.convertDimensionsToSizeId(d[e]); | |
f === !1 || g.inArray(f, v.aBaseRubiconSizeIds) ? h.factory("SLOT_SIZE_NOT_MAPPED", { | |
sDimensions: d[e].toString(), | |
sSlotName: l.getSlotName() | |
}) : v.aBaseRubiconSizeIds.push(f) | |
} | |
}, l.isConfigured = function() { | |
return o | |
}, l.setFPI = function(a, b) { | |
return r.setFPI(a, b), l | |
}, l.addFPI = function(a, b) { | |
return r.addFPI(a, b), l | |
}, l.getFPI = function(a) { | |
return arguments.length < 1 && (a = !0), p("getFPI", a) | |
}, l.setFPV = function(a, b) { | |
return r.setFPV(a, b), l | |
}, l.addFPV = function(a, b) { | |
return r.addFPV(a, b), l | |
}, l.getFPV = function(a) { | |
return arguments.length < 1 && (a = !0), p("getFPV", a) | |
}, p = function(a, b) { | |
if ("getFPV" !== a && "getFPI" !== a) return g.error("Passing in undefined first party data accessor: " + a), []; | |
var c = []; | |
if (b) { | |
var d = g.convertKeyValuePairArrayToObject(s[a]()), | |
e = g.convertKeyValuePairArrayToObject(r[a]()); | |
for (var f in e) e.hasOwnProperty(f) && (d.hasOwnProperty(f) ? d[f] = d[f].concat(e[f]) : d[f] = e[f]); | |
c = g.convertKeyValuePairObjectToArray(d) | |
} else c = r[a](); | |
return c | |
}, l.addKW = function(a) { | |
return r.addKW(a), l | |
}, l.getKWs = function(a) { | |
arguments.length < 1 && (a = !0); | |
var b, c = new f, | |
d = r.getKWs(), | |
e = a ? s.getKWs() : []; | |
for (b = 0; b < d.length; b++) c.add(d[b]); | |
for (b = 0; b < e.length; b++) c.add(e[b]); | |
return c.toArray() | |
}, l.setPosition = function(a) { | |
return ("atf" === a || "btf" === a) && (v.sPos = a), l | |
}, l.getPosition = function() { | |
return v.sPos | |
}, l.getElementId = function() { | |
return v.sElementId | |
}, l.getSlotName = function() { | |
return v.sSlotName | |
}, l.getSiteId = function(a) { | |
return v.oAccountConfigs.hasOwnProperty(a) ? v.oAccountConfigs[a].nSiteId : null | |
}, l.getZoneId = function(a) { | |
return v.oAccountConfigs.hasOwnProperty(a) ? v.oAccountConfigs[a].nZoneId : null | |
}, l.getRubiconSizeIds = function(a) { | |
return v.oAccountConfigs.hasOwnProperty(a) ? v.oAccountConfigs[a].aRubiconSizeIds : [] | |
}, l.storeCreative = function(a, b, c, d) { | |
t.hasOwnProperty(a) || (t[a] = {}); | |
var e = g.getNow() + i.getConfigValue(0, "configuration.creativeTTL", 18e4); | |
t[a][b] = { | |
oResponse: c, | |
nExpires: e, | |
sTier: d | |
} | |
}, l.removeCreative = function(a, b) { | |
t.hasOwnProperty(a) && delete t[a][b] | |
}, l.purgeCreative = function(a, b) { | |
l.removeCreative(a, b), l.removeAdServerTargetingForSize("rpfl_" + a, b); | |
var c = n || l.findMatchingGPTSlot(); | |
c && l.setTargetingForGPTSlot(c) | |
}, l.findMatchingGPTSlot = function() { | |
var a = !1; | |
if (d.googletag && d.googletag.apiReady) | |
for (var b = d.googletag.pubads().getSlots(), c = 0; c < b.length; c++) | |
if (b[c].getSlotElementId() === l.getElementId()) { | |
a = b[c]; | |
break | |
} | |
return a | |
}, l.getCreative = function(a, b) { | |
return t.hasOwnProperty(a) && t[a].hasOwnProperty(b) ? t[a][b] : null | |
}, l.addAdServerTargeting = function(a, b) { | |
u.hasOwnProperty(a) ? u[a].add(b) : (u[a] = new f, u[a].add(b)) | |
}, l.removeAdServerTargetingByKey = function(a) { | |
delete u[a] | |
}, l.removeAdServerTargetingForSize = function(a, b) { | |
var c = new RegExp("^" + b + "_"); | |
if (u[a]) | |
for (var d = u[a].length(); d >= 0; d--) | |
if (c.test(u[a].get(d))) { | |
u[a].removeByIndex(d); | |
break | |
} | |
}, l.getAdServerTargeting = function() { | |
var a = []; | |
for (var b in u) u.hasOwnProperty(b) && a.push({ | |
key: b, | |
values: u[b].toArray() | |
}); | |
return a | |
}, l.getAdServerTargetingByKey = function(a) { | |
return u.hasOwnProperty(a) ? u[a].toArray() : [] | |
}, l.configure = function() { | |
if (!o) { | |
for (var a = i.getConfigs(), b = 0; b < a.length; b++) { | |
var c = l.findBestMatchForConfig(b); | |
c !== !1 ? l.loadSlotConfiguration(i.getConfigValue(b, "accountId"), c) : (h.factory("SLOT_USING_CATCH_ALL", { | |
sSlotName: l.getSlotName(), | |
sElementId: l.getElementId() | |
}), l.loadSlotConfiguration(i.getConfigValue(b, "accountId"), i.getConfigValue(b, "catchAll"))) | |
} | |
return l | |
} | |
}, l.findBestMatchForConfig = function(a) { | |
for (var b = i.getConfigValue(a, "slots", []), c = s.getContexts(), d = { | |
nPoints: 0, | |
oConfig: !1 | |
}, e = 0; e < b.length; e++) { | |
var f = b[e]; | |
h.factory("SLOT_SPECIFICITY_START", { | |
sSlotName: l.getSlotName(), | |
sElementId: l.getElementId(), | |
sContexts: c.toString() || "(none)" | |
}); | |
var g = l.calculateSlotConfigurationPoints(f, c); | |
h.factory("SLOT_SPECIFICITY_END", { | |
sSlotName: l.getSlotName(), | |
sElementId: l.getElementId(), | |
sContexts: c.toString() || "(none)", | |
nPoints: g | |
}), g > d.nPoints && (d.nPoints = g, d.oConfig = f) | |
} | |
return d.oConfig | |
}, l.calculateSlotConfigurationPoints = function(a, b) { | |
var c = null, | |
d = 0; | |
if (a.slotId) | |
if (c = new RegExp(a.slotId), a.slotId === l.getSlotName()) d += q.nSlotIdExact, h.factory("SLOT_SPECIFICITY_SLOTNAME_EXACT", { | |
sSlotName: l.getSlotName(), | |
sSlotNamePattern: a.slotId, | |
nPoints: d | |
}); | |
else { | |
if (!c.test(l.getSlotName())) return h.factory("SLOT_SPECIFICITY_SLOTNAME_FAILED", { | |
sSlotName: l.getSlotName(), | |
sSlotNamePattern: a.slotId | |
}), 0; | |
d += q.nSlotIdPattern, h.factory("SLOT_SPECIFICITY_SLOTNAME_PATTERN", { | |
sSlotName: l.getSlotName(), | |
sSlotNamePattern: a.slotId, | |
nPoints: d | |
}) | |
} | |
if (a.elementIdPattern) | |
if (c = new RegExp(a.elementIdPattern), a.elementIdPattern === l.getElementId()) d += q.nElementIdExact, h.factory("SLOT_SPECIFICITY_ELEMENT_EXACT", { | |
sElementId: l.getElementId(), | |
sElementIdPattern: a.elementIdPattern, | |
nPoints: d | |
}); | |
else { | |
if (!c.test(l.getElementId())) return h.factory("SLOT_SPECIFICITY_ELEMENT_FAILED", { | |
sElementId: l.getElementId(), | |
sElementIdPattern: a.elementIdPattern | |
}), 0; | |
d += q.nElementIdPattern, h.factory("SLOT_SPECIFICITY_ELEMENT_PATTERN", { | |
sElementId: l.getElementId(), | |
sElementIdPattern: a.elementIdPattern, | |
nPoints: d | |
}) | |
} | |
if (a.position) { | |
if (a.position !== l.getPosition()) return h.factory("SLOT_SPECIFICITY_POSITION_FAILED", { | |
sPosition: a.position, | |
sSlotPosition: l.getPosition() | |
}), 0; | |
d += q.nPosition, h.factory("SLOT_SPECIFICITY_POSITION", { | |
sPosition: a.position, | |
nPoints: d | |
}) | |
} | |
var e = g.getDeviceType(); | |
if (a.deviceType) { | |
if (!g.inArray(e, a.deviceType)) return h.factory("SLOT_SPECIFICITY_DEVICE_TYPE_FAILED", { | |
sDeviceType: e, | |
sDeviceTypes: a.deviceType.join(",") | |
}), 0; | |
d += q.nDeviceType, h.factory("SLOT_SPECIFICITY_DEVICE_TYPE", { | |
sDeviceType: e, | |
sDeviceTypes: a.deviceType.join(","), | |
nPoints: d | |
}) | |
} | |
var f = g.getFullPageUrl(); | |
if (a.urlPattern) { | |
if (c = new RegExp(a.urlPattern), !c.test(f)) return h.factory("SLOT_SPECIFICITY_URL_FAILED", { | |
sUrl: f, | |
sUrlPattern: a.urlPattern | |
}), 0; | |
d += q.nUrlPattern, h.factory("SLOT_SPECIFICITY_URL_PATTERN", { | |
sUrl: f, | |
sUrlPattern: a.urlPattern, | |
nPoints: d | |
}) | |
} | |
if (a.contextKeywords) { | |
var i = g.getArrayIntersection(a.contextKeywords, b); | |
if (!i.length) return h.factory("SLOT_SPECIFICITY_CONTEXT_FAILED", { | |
sConfiguredContexts: a.contextKeywords ? a.contextKeywords.toString() : "(none)", | |
sPageContexts: b.toString() || "(none)" | |
}), 0; | |
d += i.length * q.nContextKeyword, h.factory("SLOT_SPECIFICITY_CONTEXT", { | |
sConfiguredContexts: a.contextKeywords ? a.contextKeywords.toString() : "(none)", | |
sPageContexts: b.toString() || "(none)", | |
nMatches: i.length, | |
nPoints: d | |
}) | |
} | |
return d | |
}, l.loadSlotConfiguration = function(a, b) { | |
o = !0; | |
var c = { | |
siteId: "nSiteId", | |
zoneId: "nZoneId", | |
sizes: "aRubiconSizeIds" | |
}; | |
v.oAccountConfigs[a] = { | |
nSiteId: null, | |
nZoneId: null, | |
aRubiconSizeIds: v.aBaseRubiconSizeIds.slice() | |
}; | |
for (var d in b) b.hasOwnProperty(d) && v.oAccountConfigs[a].hasOwnProperty(c[d]) && (v.oAccountConfigs[a][c[d]] = b[d]) | |
}, l.setTargetingForGPTSlot = function(a) { | |
n = a; | |
for (var b = l.getAdServerTargeting(), c = 0; c < b.length; c++) | |
if (n.setTargeting(b[c].key, b[c].values), b[c].key.match(/^rpfl_[0-9]+$/)) | |
for (var d = b[c].key.replace(/^rpfl_/, ""), e = 0; e < b[c].values.length; e++) { | |
var f = b[c].values[e].match(/^([0-9]+)_(.*)$/); | |
h.factory("SLOT_GPT_TARGETING_SET", { | |
nAccountId: d, | |
nSiteId: l.getSiteId(d), | |
nZoneId: l.getZoneId(d), | |
nSizeId: f[1], | |
sTier: f[2], | |
sValue: b[c].values[e], | |
sKey: b[c].key | |
}) | |
} | |
return !0 | |
}, l.getRawResponses = function(a) { | |
var b = []; | |
if (!i.getConfigValue(0, "configuration.exposeRawResponses", !1)) return b; | |
a = a || i.getConfigValue(0, "accountId"); | |
for (var c in t[a]) t[a].hasOwnProperty(c) && b.push(l.getRawResponseBySizeId(c)); | |
return b | |
}, l.getRawResponseBySize = function(a, b) { | |
var c = g.convertDimensionsToSizeId(a); | |
return l.getRawResponseBySizeId(c) | |
}, l.getRawResponseBySizeId = function(a, b) { | |
var c = {}; | |
if (!i.getConfigValue(0, "configuration.exposeRawResponses", !1)) return c; | |
if (b = b || i.getConfigValue(0, "accountId"), t.hasOwnProperty(b) && t[b].hasOwnProperty(a) && t[b][a].hasOwnProperty("oResponse")) { | |
var d = t[b][a].oResponse; | |
c.advertiser = d.advertiser, c.cpm = d.cpm, c.dimensions = g.convertSizeIdToDimensions(a), d.hasOwnProperty("deal") && (c.deal = d.deal) | |
} | |
return c | |
}, l.getPublicVersion = function() { | |
return null === m && (m = new j(l)), m | |
}, l.init(b, c, k) | |
}; | |
b.exports = k | |
}, { | |
10: 10, | |
15: 15, | |
17: 17, | |
18: 18, | |
6: 6, | |
7: 7, | |
8: 8 | |
}], | |
17: [function(a, b, c) { | |
"use strict"; | |
var d = a(18), | |
e = a(6), | |
f = function() { | |
var a, b, c = this, | |
f = [], | |
g = null, | |
h = null, | |
i = null, | |
j = null; | |
c.oSizeMap = { | |
"728x90": 2, | |
"160x600": 9, | |
"300x600": 10, | |
"300x250": 15, | |
"320x50": 43, | |
"300x1050": 54, | |
"970x250": 57 | |
}, c.DEVICE_DESKTOP = "desktop", c.DEVICE_TABLET = "tablet", c.DEVICE_PHONE = "phone", c.init = function(d) { | |
a = b = g(d), c.hookUserDistractionEvents(), h(d) | |
}, g = function(a) { | |
var b = "http:"; | |
try { | |
a.location.protocol.match(/^http/) && (b = a.location.protocol) | |
} catch (c) {} | |
return b + "//" | |
}, c.getProtocol = function() { | |
return b | |
}, c.setProtocol = function(a) { | |
a && a.match(/^http(s)?:\/\/$/) && (b = a) | |
}, c.getFullPageUrl = function() { | |
return d.location.toString() | |
}, c.getScreenResolution = function() { | |
return d.screen.width + "x" + d.screen.height | |
}, c.debug = function() {}, c.info = function() {}, c.warn = function() {}, c.error = function() {}, h = function(a) { | |
i(a); | |
var b = parseInt(c.getUrlCookieParam("rp_loglevel")); | |
isNaN(b) && !e.hasConfig() && e.onLoad(function() { | |
h(a) | |
}), j(b) | |
}, i = function(a) { | |
if (a.console) | |
for (var b = { | |
debug: "log", | |
info: "info", | |
warn: "warn", | |
error: "error" | |
}, d = ["debug", "info", "warn", "error"], e = 0; e < d.length; e++) { | |
var f = d[e], | |
g = b[f]; | |
if (a.console[g]) try { | |
c[f] = Function.prototype.bind.call(a.console[g], a.console, "RP:") | |
} catch (h) {} else e > 0 && (c[f] = c[d[e - 1]]) | |
} | |
}, j = function(a) { | |
var b = 0, | |
d = 1, | |
f = 2, | |
g = 3, | |
h = 4; | |
a = isNaN(a) ? e.getConfigValue(0, "configuration.logLevel", b) : a, h > a && (c.debug = function() {}), g > a && (c.info = function() {}), f > a && (c.warn = function() {}), d > a && (c.error = function() {}) | |
}, c.getUrlCookieParam = function(a) { | |
if (a) { | |
var b = c.getQueryStringParam(a); | |
b = null === b ? c.getHashParam(a) : b; | |
var d = "rp_param_" + a; | |
return b ? c.setCookie(d, b, { | |
path: "/" | |
}) : null === b ? b = c.getCookie(d) : c.setCookie(d, "", { | |
path: "/", | |
exp: -1e4 | |
}), b || null | |
} | |
}, c.getCookie = function(a) { | |
if (!a) return null; | |
var b = new RegExp("\\b" + a + "=([^;]*)"), | |
c = b.exec(d.document.cookie || ""); | |
return c && c.length > 1 ? c[1] : null | |
}, c.setCookie = function(a, b, c) { | |
if (a) { | |
var e = [a + "=" + b]; | |
if (c = c || {}, c.domain && e.push("domain=" + c.domain), c.exp || 0 === c.exp) { | |
var f = new Date((new Date).getTime() + c.exp); | |
e.push("expires=" + f.toUTCString()) | |
} | |
var g = c.path || "/"; | |
e.push("path=" + g), d.document.cookie = e.join(";") | |
} | |
}, c.getQueryStringParam = function(a) { | |
if (!a) return null; | |
var b = new RegExp("[?&]" + a + "((=([^&]*))|(&|$))"), | |
c = b.exec(d.location.search || ""); | |
return !c || c.length < 5 ? null : c[3] || "" | |
}, c.queryStringParamExists = function(a) { | |
if (!a) return !1; | |
var b = new RegExp("[?&]" + a + "([=&]|$)"); | |
return b.test(d.location.search || "") | |
}, c.getHashParam = function(a) { | |
if (!a) return null; | |
var b = new RegExp("[#&]" + a + "((=([^&]*))|(&|$))"), | |
c = b.exec(d.location.hash || ""); | |
return !c || c.length < 5 ? null : c[3] || "" | |
}, c.hashParamExists = function(a) { | |
if (!a) return !1; | |
var b = new RegExp("[#&]" + a + "([=&]|$)"); | |
return b.test(d.location.hash || "") | |
}, c.mergeObjects = function(a, b, c) { | |
var d, e = {}; | |
if (c) | |
for (var f = 0; 2 > f; f++) | |
for (d in arguments[f]) arguments[f].hasOwnProperty(d) && (e[d] = arguments[f][d]); | |
else | |
for (d in a) a.hasOwnProperty(d) && (e[d] = b.hasOwnProperty(d) ? b[d] : a[d]); | |
return e | |
}, c.isInteger = function(a) { | |
return /string|number/.test(typeof a) && /^[0-9]+$/.test(a.toString()) | |
}, c.isSingleSlotSize = function(a) { | |
return c.isArray(a) && 2 === a.length && c.isInteger(a[0]) && c.isInteger(a[1]) | |
}, c.isArray = function(a) { | |
return (a || !1) && c.isObject(a) && a.hasOwnProperty("length") && "number" == typeof a.length && a.length > -1 && "[object Array]" === Object.prototype.toString.call(a) | |
}, c.inArray = function(a, b) { | |
if (!c.isArray(b)) return !1; | |
for (var d = 0; d < b.length; d++) | |
if (b[d] == a) return !0; | |
return !1 | |
}, c.getArrayIntersection = function(a, b) { | |
var d = []; | |
if (!c.isArray(a) || !c.isArray(b)) return d; | |
for (var e = 0; e < a.length; e++) c.inArray(a[e], b) && d.push(a[e]); | |
return d | |
}, c.isObject = function(a) { | |
return "object" == typeof a | |
}, c.isFunction = function(a) { | |
return (a || !1) && "[object Function]" === Object.prototype.toString.call(a) | |
}, c.generateComplexQueryStringObject = function(a, b) { | |
for (var c = {}, d = null, e = 0; e < a.length; e++) d = b + "." + a[e].key, c[d] = a[e].value.join(","); | |
return c | |
}, c.convertObjectToQueryString = function(a) { | |
var b = []; | |
for (var c in a) a.hasOwnProperty(c) && b.push(encodeURIComponent(c) + "=" + encodeURIComponent(a[c])); | |
return b.join("&") | |
}, c.convertKeyValuePairArrayToObject = function(a) { | |
for (var b = {}, c = 0; c < a.length; c++) b[a[c].key] = a[c].value; | |
return b | |
}, c.convertKeyValuePairObjectToArray = function(a) { | |
var b = []; | |
for (var c in a) a.hasOwnProperty(c) && b.push({ | |
key: c, | |
value: a[c] | |
}); | |
return b | |
}, c.formatString = function(a, b, c) { | |
var d = a; | |
c = c || !1; | |
for (var e in b) b.hasOwnProperty(e) && (d = d.replace(new RegExp("{" + e + "}", "g"), c ? encodeURIComponent(b[e]) : b[e])); | |
return d | |
}, c.convertDimensionsToSizeId = function(a) { | |
if (!c.isSingleSlotSize(a)) return !1; | |
var b = a[0] + "x" + a[1]; | |
return c.oSizeMap.hasOwnProperty(b) ? c.oSizeMap[b] : !1 | |
}, c.convertSizeIdToDimensions = function(a) { | |
for (var b in c.oSizeMap) | |
if (c.oSizeMap.hasOwnProperty(b) && parseInt(c.oSizeMap[b], 10) === parseInt(a, 10)) { | |
var d = b.split("x"); | |
return d[0] = parseInt(d[0], 10), d[1] = parseInt(d[1], 10), d | |
} | |
return !1 | |
}, c.cleanseDimensionsList = function(a) { | |
var b = []; | |
if (c.isArray(a) && 0 !== a.length) | |
if (c.isSingleSlotSize(a)) b = [a]; | |
else | |
for (var d = 0; d < a.length; d++) c.isSingleSlotSize(a[d]) && b.push(a[d]); | |
else; | |
return b | |
}, c.addUserDistractionEventListener = function(a) { | |
f.push(a) | |
}, c.hookUserDistractionEvents = function() { | |
var a = function(a) { | |
c.userDistractionEventOccurred(a) | |
}; | |
d.addEventListener ? (d.addEventListener("unload", a, !1), d.addEventListener("blur", a, !1)) : d.attachEvent && (d.attachEvent("onunload", a), d.attachEvent("onblur", a)) | |
}, c.userDistractionEventOccurred = function(a) { | |
for (var b = 0; b < f.length; b++) f[b](a) | |
}, c.getNow = function() { | |
return (new Date).getTime() | |
}, c.browserSupportsXHR = function() { | |
var a = c.isIE(); | |
return a && 10 > a ? !1 : !0 | |
}, c.isIE = function() { | |
var a = d.navigator.userAgent.toLowerCase(); | |
return -1 !== a.indexOf("msie") ? parseInt(a.split("msie")[1]) : !1 | |
}, c.getDeviceType = function() { | |
var a = d.screen.height || 1025, | |
b = d.screen.width || 1025, | |
e = Math.max(a, b), | |
f = c.DEVICE_DESKTOP; | |
return 640 >= e ? f = c.DEVICE_PHONE : 1024 >= e && (f = c.DEVICE_TABLET), f | |
}, c.createInvisibleIframe = function(a) { | |
var b = document.createElement("iframe"); | |
return b.id = a, b.height = 0, b.width = 0, b.border = "0px", b.hspace = "0", b.vspace = "0", b.marginWidth = "0", b.marginHeight = "0", b.style.border = "0", b.scrolling = "no", b.frameBorder = "0", c.isIE() && c.isIE() < 10 ? b.src = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();})()' : b.src = "about:self", b.style.display = "none", b | |
} | |
}, | |
g = new f; | |
g.init(d), b.exports = g | |
}, { | |
18: 18, | |
6: 6 | |
}], | |
18: [function(a, b, c) { | |
"use strict"; | |
b.exports = "undefined" != typeof window ? window : void 0 | |
}, {}], | |
19: [function(a, b, c) { | |
"use strict"; | |
b.exports = "undefined" != typeof XMLHttpRequest ? XMLHttpRequest : void 0 | |
}, {}] | |
}, {}, [2]); | |
window.rubicontag.loadConfiguration({ | |
"accountId": 7450, | |
"services": ["fastlane"], | |
"configuration": { | |
"analyticsLevel": 4, | |
"logLevel": 1, | |
"timeout": 400, | |
"exposeRawResponses": 1 | |
}, | |
"fastlane": { | |
"pageSampling": 1 | |
}, | |
"catchAll": { | |
"siteId": 41686, | |
"zoneId": 367714 | |
}, | |
"slots": [{ | |
"elementIdPattern": "^.{0,5}TOP", | |
"siteId": 41686, | |
"zoneId": 175094 | |
}, { | |
"slotId": "^((?!MOBILE|TOP).)*$", | |
"siteId": 41686, | |
"zoneId": 194452 | |
}, { | |
"slotId": "MOBILE", | |
"siteId": 23565, | |
"zoneId": 87671 | |
}], | |
"tiers": [{ | |
"deals": true, | |
"floor": 0.01, | |
"ceiling": 0.04, | |
"mapping": "tier0001deals" | |
}, { | |
"deals": true, | |
"floor": 0.05, | |
"ceiling": 0.09, | |
"mapping": "tier0005deals" | |
}, { | |
"deals": true, | |
"floor": 0.1, | |
"ceiling": 0.14, | |
"mapping": "tier0010deals" | |
}, { | |
"deals": true, | |
"floor": 0.15, | |
"ceiling": 0.19, | |
"mapping": "tier0015deals" | |
}, { | |
"deals": true, | |
"floor": 0.2, | |
"ceiling": 0.24, | |
"mapping": "tier0020deals" | |
}, { | |
"deals": true, | |
"floor": 0.25, | |
"ceiling": 0.29, | |
"mapping": "tier0025deals" | |
}, { | |
"deals": true, | |
"floor": 0.3, | |
"ceiling": 0.34, | |
"mapping": "tier0030deals" | |
}, { | |
"deals": true, | |
"floor": 0.35, | |
"ceiling": 0.39, | |
"mapping": "tier0035deals" | |
}, { | |
"deals": true, | |
"floor": 0.4, | |
"ceiling": 0.44, | |
"mapping": "tier0040deals" | |
}, { | |
"deals": true, | |
"floor": 0.45, | |
"ceiling": 0.49, | |
"mapping": "tier0045deals" | |
}, { | |
"deals": true, | |
"floor": 0.5, | |
"ceiling": 0.54, | |
"mapping": "tier0050deals" | |
}, { | |
"deals": true, | |
"floor": 0.55, | |
"ceiling": 0.59, | |
"mapping": "tier0055deals" | |
}, { | |
"deals": true, | |
"floor": 0.6, | |
"ceiling": 0.64, | |
"mapping": "tier0060deals" | |
}, { | |
"deals": true, | |
"floor": 0.65, | |
"ceiling": 0.69, | |
"mapping": "tier0065deals" | |
}, { | |
"deals": true, | |
"floor": 0.7, | |
"ceiling": 0.74, | |
"mapping": "tier0070deals" | |
}, { | |
"deals": true, | |
"floor": 0.75, | |
"ceiling": 0.79, | |
"mapping": "tier0075deals" | |
}, { | |
"deals": true, | |
"floor": 0.8, | |
"ceiling": 0.84, | |
"mapping": "tier0080deals" | |
}, { | |
"deals": true, | |
"floor": 0.85, | |
"ceiling": 0.89, | |
"mapping": "tier0085deals" | |
}, { | |
"deals": true, | |
"floor": 0.9, | |
"ceiling": 0.94, | |
"mapping": "tier0090deals" | |
}, { | |
"deals": true, | |
"floor": 0.95, | |
"ceiling": 0.99, | |
"mapping": "tier0095deals" | |
}, { | |
"deals": true, | |
"floor": 1, | |
"ceiling": 1.09, | |
"mapping": "tier0100deals" | |
}, { | |
"deals": true, | |
"floor": 1.1, | |
"ceiling": 1.19, | |
"mapping": "tier0110deals" | |
}, { | |
"deals": true, | |
"floor": 1.2, | |
"ceiling": 1.29, | |
"mapping": "tier0120deals" | |
}, { | |
"deals": true, | |
"floor": 1.3, | |
"ceiling": 1.39, | |
"mapping": "tier0130deals" | |
}, { | |
"deals": true, | |
"floor": 1.4, | |
"ceiling": 1.49, | |
"mapping": "tier0140deals" | |
}, { | |
"deals": true, | |
"floor": 1.5, | |
"ceiling": 1.59, | |
"mapping": "tier0150deals" | |
}, { | |
"deals": true, | |
"floor": 1.6, | |
"ceiling": 1.69, | |
"mapping": "tier0160deals" | |
}, { | |
"deals": true, | |
"floor": 1.7, | |
"ceiling": 1.79, | |
"mapping": "tier0170deals" | |
}, { | |
"deals": true, | |
"floor": 1.8, | |
"ceiling": 1.89, | |
"mapping": "tier0180deals" | |
}, { | |
"deals": true, | |
"floor": 1.9, | |
"ceiling": 1.99, | |
"mapping": "tier0190deals" | |
}, { | |
"deals": true, | |
"floor": 2, | |
"ceiling": 2.09, | |
"mapping": "tier0200deals" | |
}, { | |
"deals": true, | |
"floor": 2.1, | |
"ceiling": 2.19, | |
"mapping": "tier0210deals" | |
}, { | |
"deals": true, | |
"floor": 2.2, | |
"ceiling": 2.29, | |
"mapping": "tier0220deals" | |
}, { | |
"deals": true, | |
"floor": 2.3, | |
"ceiling": 2.39, | |
"mapping": "tier0230deals" | |
}, { | |
"deals": true, | |
"floor": 2.4, | |
"ceiling": 2.49, | |
"mapping": "tier0240deals" | |
}, { | |
"deals": true, | |
"floor": 2.5, | |
"ceiling": 2.59, | |
"mapping": "tier0250deals" | |
}, { | |
"deals": true, | |
"floor": 2.6, | |
"ceiling": 2.69, | |
"mapping": "tier0260deals" | |
}, { | |
"deals": true, | |
"floor": 2.7, | |
"ceiling": 2.79, | |
"mapping": "tier0270deals" | |
}, { | |
"deals": true, | |
"floor": 2.8, | |
"ceiling": 2.89, | |
"mapping": "tier0280deals" | |
}, { | |
"deals": true, | |
"floor": 2.9, | |
"ceiling": 2.99, | |
"mapping": "tier0290deals" | |
}, { | |
"deals": true, | |
"floor": 3, | |
"ceiling": 3.09, | |
"mapping": "tier0300deals" | |
}, { | |
"deals": true, | |
"floor": 3.1, | |
"ceiling": 3.19, | |
"mapping": "tier0310deals" | |
}, { | |
"deals": true, | |
"floor": 3.2, | |
"ceiling": 3.29, | |
"mapping": "tier0320deals" | |
}, { | |
"deals": true, | |
"floor": 3.3, | |
"ceiling": 3.39, | |
"mapping": "tier0330deals" | |
}, { | |
"deals": true, | |
"floor": 3.4, | |
"ceiling": 3.49, | |
"mapping": "tier0340deals" | |
}, { | |
"deals": true, | |
"floor": 3.5, | |
"ceiling": 3.59, | |
"mapping": "tier0350deals" | |
}, { | |
"deals": true, | |
"floor": 3.6, | |
"ceiling": 3.69, | |
"mapping": "tier0360deals" | |
}, { | |
"deals": true, | |
"floor": 3.7, | |
"ceiling": 3.79, | |
"mapping": "tier0370deals" | |
}, { | |
"deals": true, | |
"floor": 3.8, | |
"ceiling": 3.89, | |
"mapping": "tier0380deals" | |
}, { | |
"deals": true, | |
"floor": 3.9, | |
"ceiling": 3.99, | |
"mapping": "tier0390deals" | |
}, { | |
"deals": true, | |
"floor": 4, | |
"ceiling": 4.09, | |
"mapping": "tier0400deals" | |
}, { | |
"deals": true, | |
"floor": 4.1, | |
"ceiling": 4.19, | |
"mapping": "tier0410deals" | |
}, { | |
"deals": true, | |
"floor": 4.2, | |
"ceiling": 4.29, | |
"mapping": "tier0420deals" | |
}, { | |
"deals": true, | |
"floor": 4.3, | |
"ceiling": 4.39, | |
"mapping": "tier0430deals" | |
}, { | |
"deals": true, | |
"floor": 4.4, | |
"ceiling": 4.49, | |
"mapping": "tier0440deals" | |
}, { | |
"deals": true, | |
"floor": 4.5, | |
"ceiling": 4.59, | |
"mapping": "tier0450deals" | |
}, { | |
"deals": true, | |
"floor": 4.6, | |
"ceiling": 4.69, | |
"mapping": "tier0460deals" | |
}, { | |
"deals": true, | |
"floor": 4.7, | |
"ceiling": 4.79, | |
"mapping": "tier0470deals" | |
}, { | |
"deals": true, | |
"floor": 4.8, | |
"ceiling": 4.89, | |
"mapping": "tier0480deals" | |
}, { | |
"deals": true, | |
"floor": 4.9, | |
"ceiling": 4.99, | |
"mapping": "tier0490deals" | |
}, { | |
"deals": true, | |
"floor": 5, | |
"ceiling": 5.09, | |
"mapping": "tier0500deals" | |
}, { | |
"deals": true, | |
"floor": 5, | |
"ceiling": 5.49, | |
"mapping": "tier0500deals" | |
}, { | |
"deals": true, | |
"floor": 5.5, | |
"ceiling": 5.99, | |
"mapping": "tier0550deals" | |
}, { | |
"deals": true, | |
"floor": 6, | |
"ceiling": 6.49, | |
"mapping": "tier0600deals" | |
}, { | |
"deals": true, | |
"floor": 6.5, | |
"ceiling": 6.99, | |
"mapping": "tier0650deals" | |
}, { | |
"deals": true, | |
"floor": 7, | |
"ceiling": 7.49, | |
"mapping": "tier0700deals" | |
}, { | |
"deals": true, | |
"floor": 7.5, | |
"ceiling": 7.99, | |
"mapping": "tier0750deals" | |
}, { | |
"deals": true, | |
"floor": 8, | |
"ceiling": 8.49, | |
"mapping": "tier0800deals" | |
}, { | |
"deals": true, | |
"floor": 8.5, | |
"ceiling": 8.99, | |
"mapping": "tier0850deals" | |
}, { | |
"deals": true, | |
"floor": 9, | |
"ceiling": 9.49, | |
"mapping": "tier0900deals" | |
}, { | |
"deals": true, | |
"floor": 9.5, | |
"ceiling": 9.99, | |
"mapping": "tier0950deals" | |
}, { | |
"deals": true, | |
"floor": 10, | |
"ceiling": 10.49, | |
"mapping": "tier1000deals" | |
}, { | |
"deals": true, | |
"floor": 10.5, | |
"ceiling": 10.99, | |
"mapping": "tier1050deals" | |
}, { | |
"deals": true, | |
"floor": 11, | |
"ceiling": 11.49, | |
"mapping": "tier1100deals" | |
}, { | |
"deals": true, | |
"floor": 11.5, | |
"ceiling": 11.99, | |
"mapping": "tier1150deals" | |
}, { | |
"deals": true, | |
"floor": 12, | |
"ceiling": 12.49, | |
"mapping": "tier1200deals" | |
}, { | |
"deals": true, | |
"floor": 12.5, | |
"ceiling": 12.99, | |
"mapping": "tier1250deals" | |
}, { | |
"deals": true, | |
"floor": 13, | |
"ceiling": 13.49, | |
"mapping": "tier1300deals" | |
}, { | |
"deals": true, | |
"floor": 13.5, | |
"ceiling": 13.99, | |
"mapping": "tier1350deals" | |
}, { | |
"deals": true, | |
"floor": 14, | |
"ceiling": 14.49, | |
"mapping": "tier1400deals" | |
}, { | |
"deals": true, | |
"floor": 14.5, | |
"ceiling": 14.99, | |
"mapping": "tier1450deals" | |
}, { | |
"deals": true, | |
"floor": 15, | |
"ceiling": 15.49, | |
"mapping": "tier1500deals" | |
}, { | |
"deals": true, | |
"floor": 15.5, | |
"ceiling": 15.99, | |
"mapping": "tier1550deals" | |
}, { | |
"deals": true, | |
"floor": 16, | |
"ceiling": 16.49, | |
"mapping": "tier1600deals" | |
}, { | |
"deals": true, | |
"floor": 16.5, | |
"ceiling": 16.99, | |
"mapping": "tier1650deals" | |
}, { | |
"deals": true, | |
"floor": 17, | |
"ceiling": 17.49, | |
"mapping": "tier1700deals" | |
}, { | |
"deals": true, | |
"floor": 17.5, | |
"ceiling": 17.99, | |
"mapping": "tier1750deals" | |
}, { | |
"deals": true, | |
"floor": 18, | |
"ceiling": 18.49, | |
"mapping": "tier1800deals" | |
}, { | |
"deals": true, | |
"floor": 18.5, | |
"ceiling": 18.99, | |
"mapping": "tier1850deals" | |
}, { | |
"deals": true, | |
"floor": 19, | |
"ceiling": 19.49, | |
"mapping": "tier1900deals" | |
}, { | |
"deals": true, | |
"floor": 19.5, | |
"ceiling": 19.99, | |
"mapping": "tier1950deals" | |
}, { | |
"deals": true, | |
"floor": 20, | |
"ceiling": 9999, | |
"mapping": "tier2000deals" | |
}, { | |
"floor": 0, | |
"ceiling": 0, | |
"mapping": "tier0000" | |
}, { | |
"floor": 0.01, | |
"ceiling": 0.04, | |
"mapping": "tier0001" | |
}, { | |
"floor": 0.05, | |
"ceiling": 0.09, | |
"mapping": "tier0005" | |
}, { | |
"floor": 0.1, | |
"ceiling": 0.14, | |
"mapping": "tier0010" | |
}, { | |
"floor": 0.15, | |
"ceiling": 0.19, | |
"mapping": "tier0015" | |
}, { | |
"floor": 0.2, | |
"ceiling": 0.24, | |
"mapping": "tier0020" | |
}, { | |
"floor": 0.25, | |
"ceiling": 0.29, | |
"mapping": "tier0025" | |
}, { | |
"floor": 0.3, | |
"ceiling": 0.34, | |
"mapping": "tier0030" | |
}, { | |
"floor": 0.35, | |
"ceiling": 0.39, | |
"mapping": "tier0035" | |
}, { | |
"floor": 0.4, | |
"ceiling": 0.44, | |
"mapping": "tier0040" | |
}, { | |
"floor": 0.45, | |
"ceiling": 0.49, | |
"mapping": "tier0045" | |
}, { | |
"floor": 0.5, | |
"ceiling": 0.54, | |
"mapping": "tier0050" | |
}, { | |
"floor": 0.55, | |
"ceiling": 0.59, | |
"mapping": "tier0055" | |
}, { | |
"floor": 0.6, | |
"ceiling": 0.64, | |
"mapping": "tier0060" | |
}, { | |
"floor": 0.65, | |
"ceiling": 0.69, | |
"mapping": "tier0065" | |
}, { | |
"floor": 0.7, | |
"ceiling": 0.74, | |
"mapping": "tier0070" | |
}, { | |
"floor": 0.75, | |
"ceiling": 0.79, | |
"mapping": "tier0075" | |
}, { | |
"floor": 0.8, | |
"ceiling": 0.84, | |
"mapping": "tier0080" | |
}, { | |
"floor": 0.85, | |
"ceiling": 0.89, | |
"mapping": "tier0085" | |
}, { | |
"floor": 0.9, | |
"ceiling": 0.94, | |
"mapping": "tier0090" | |
}, { | |
"floor": 0.95, | |
"ceiling": 0.99, | |
"mapping": "tier0095" | |
}, { | |
"floor": 1, | |
"ceiling": 1.09, | |
"mapping": "tier0100" | |
}, { | |
"floor": 1.1, | |
"ceiling": 1.19, | |
"mapping": "tier0110" | |
}, { | |
"floor": 1.2, | |
"ceiling": 1.29, | |
"mapping": "tier0120" | |
}, { | |
"floor": 1.3, | |
"ceiling": 1.39, | |
"mapping": "tier0130" | |
}, { | |
"floor": 1.4, | |
"ceiling": 1.49, | |
"mapping": "tier0140" | |
}, { | |
"floor": 1.5, | |
"ceiling": 1.59, | |
"mapping": "tier0150" | |
}, { | |
"floor": 1.6, | |
"ceiling": 1.69, | |
"mapping": "tier0160" | |
}, { | |
"floor": 1.7, | |
"ceiling": 1.79, | |
"mapping": "tier0170" | |
}, { | |
"floor": 1.8, | |
"ceiling": 1.89, | |
"mapping": "tier0180" | |
}, { | |
"floor": 1.9, | |
"ceiling": 1.99, | |
"mapping": "tier0190" | |
}, { | |
"floor": 2, | |
"ceiling": 2.09, | |
"mapping": "tier0200" | |
}, { | |
"floor": 2.1, | |
"ceiling": 2.19, | |
"mapping": "tier0210" | |
}, { | |
"floor": 2.2, | |
"ceiling": 2.29, | |
"mapping": "tier0220" | |
}, { | |
"floor": 2.3, | |
"ceiling": 2.39, | |
"mapping": "tier0230" | |
}, { | |
"floor": 2.4, | |
"ceiling": 2.49, | |
"mapping": "tier0240" | |
}, { | |
"floor": 2.5, | |
"ceiling": 2.59, | |
"mapping": "tier0250" | |
}, { | |
"floor": 2.6, | |
"ceiling": 2.69, | |
"mapping": "tier0260" | |
}, { | |
"floor": 2.7, | |
"ceiling": 2.79, | |
"mapping": "tier0270" | |
}, { | |
"floor": 2.8, | |
"ceiling": 2.89, | |
"mapping": "tier0280" | |
}, { | |
"floor": 2.9, | |
"ceiling": 2.99, | |
"mapping": "tier0290" | |
}, { | |
"floor": 3, | |
"ceiling": 3.09, | |
"mapping": "tier0300" | |
}, { | |
"floor": 3.1, | |
"ceiling": 3.19, | |
"mapping": "tier0310" | |
}, { | |
"floor": 3.2, | |
"ceiling": 3.29, | |
"mapping": "tier0320" | |
}, { | |
"floor": 3.3, | |
"ceiling": 3.39, | |
"mapping": "tier0330" | |
}, { | |
"floor": 3.4, | |
"ceiling": 3.49, | |
"mapping": "tier0340" | |
}, { | |
"floor": 3.5, | |
"ceiling": 3.59, | |
"mapping": "tier0350" | |
}, { | |
"floor": 3.6, | |
"ceiling": 3.69, | |
"mapping": "tier0360" | |
}, { | |
"floor": 3.7, | |
"ceiling": 3.79, | |
"mapping": "tier0370" | |
}, { | |
"floor": 3.8, | |
"ceiling": 3.89, | |
"mapping": "tier0380" | |
}, { | |
"floor": 3.9, | |
"ceiling": 3.99, | |
"mapping": "tier0390" | |
}, { | |
"floor": 4, | |
"ceiling": 4.09, | |
"mapping": "tier0400" | |
}, { | |
"floor": 4.1, | |
"ceiling": 4.19, | |
"mapping": "tier0410" | |
}, { | |
"floor": 4.2, | |
"ceiling": 4.29, | |
"mapping": "tier0420" | |
}, { | |
"floor": 4.3, | |
"ceiling": 4.39, | |
"mapping": "tier0430" | |
}, { | |
"floor": 4.4, | |
"ceiling": 4.49, | |
"mapping": "tier0440" | |
}, { | |
"floor": 4.5, | |
"ceiling": 4.59, | |
"mapping": "tier0450" | |
}, { | |
"floor": 4.6, | |
"ceiling": 4.69, | |
"mapping": "tier0460" | |
}, { | |
"floor": 4.7, | |
"ceiling": 4.79, | |
"mapping": "tier0470" | |
}, { | |
"floor": 4.8, | |
"ceiling": 4.89, | |
"mapping": "tier0480" | |
}, { | |
"floor": 4.9, | |
"ceiling": 4.99, | |
"mapping": "tier0490" | |
}, { | |
"floor": 5, | |
"ceiling": 5.09, | |
"mapping": "tier0500" | |
}, { | |
"floor": 5, | |
"ceiling": 5.49, | |
"mapping": "tier0500" | |
}, { | |
"floor": 5.5, | |
"ceiling": 5.99, | |
"mapping": "tier0550" | |
}, { | |
"floor": 6, | |
"ceiling": 6.49, | |
"mapping": "tier0600" | |
}, { | |
"floor": 6.5, | |
"ceiling": 6.99, | |
"mapping": "tier0650" | |
}, { | |
"floor": 7, | |
"ceiling": 7.49, | |
"mapping": "tier0700" | |
}, { | |
"floor": 7.5, | |
"ceiling": 7.99, | |
"mapping": "tier0750" | |
}, { | |
"floor": 8, | |
"ceiling": 8.49, | |
"mapping": "tier0800" | |
}, { | |
"floor": 8.5, | |
"ceiling": 8.99, | |
"mapping": "tier0850" | |
}, { | |
"floor": 9, | |
"ceiling": 9.49, | |
"mapping": "tier0900" | |
}, { | |
"floor": 9.5, | |
"ceiling": 9.99, | |
"mapping": "tier0950" | |
}, { | |
"floor": 10, | |
"ceiling": 10.49, | |
"mapping": "tier1000" | |
}, { | |
"floor": 10.5, | |
"ceiling": 10.99, | |
"mapping": "tier1050" | |
}, { | |
"floor": 11, | |
"ceiling": 11.49, | |
"mapping": "tier1100" | |
}, { | |
"floor": 11.5, | |
"ceiling": 11.99, | |
"mapping": "tier1150" | |
}, { | |
"floor": 12, | |
"ceiling": 12.49, | |
"mapping": "tier1200" | |
}, { | |
"floor": 12.5, | |
"ceiling": 12.99, | |
"mapping": "tier1250" | |
}, { | |
"floor": 13, | |
"ceiling": 13.49, | |
"mapping": "tier1300" | |
}, { | |
"floor": 13.5, | |
"ceiling": 13.99, | |
"mapping": "tier1350" | |
}, { | |
"floor": 14, | |
"ceiling": 14.49, | |
"mapping": "tier1400" | |
}, { | |
"floor": 14.5, | |
"ceiling": 14.99, | |
"mapping": "tier1450" | |
}, { | |
"floor": 15, | |
"ceiling": 15.49, | |
"mapping": "tier1500" | |
}, { | |
"floor": 15.5, | |
"ceiling": 15.99, | |
"mapping": "tier1550" | |
}, { | |
"floor": 16, | |
"ceiling": 16.49, | |
"mapping": "tier1600" | |
}, { | |
"floor": 16.5, | |
"ceiling": 16.99, | |
"mapping": "tier1650" | |
}, { | |
"floor": 17, | |
"ceiling": 17.49, | |
"mapping": "tier1700" | |
}, { | |
"floor": 17.5, | |
"ceiling": 17.99, | |
"mapping": "tier1750" | |
}, { | |
"floor": 18, | |
"ceiling": 18.49, | |
"mapping": "tier1800" | |
}, { | |
"floor": 18.5, | |
"ceiling": 18.99, | |
"mapping": "tier1850" | |
}, { | |
"floor": 19, | |
"ceiling": 19.49, | |
"mapping": "tier1900" | |
}, { | |
"floor": 19.5, | |
"ceiling": 19.99, | |
"mapping": "tier1950" | |
}, { | |
"floor": 20, | |
"ceiling": 9999, | |
"mapping": "tier2000" | |
}], | |
"version": 1 | |
}); | |
window.rubicontag.init(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment