if (!window.va_use_frame && window.viimo_inpage_setup){
if (!window.vimo){
window.vimo = {};
// need to move layer sepecific to the layer.js out from dependencies...
window.brand_name_for_internal = window.vimo;
/////////////////////// functions
String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}
if (!("classList" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') {
Object.defineProperty(HTMLElement.prototype, 'classList', {
get: function() {
var self = this;
function update(fn) {
return function(value) {
var classes = self.className.split(/\s+/),
index = classes.indexOf(value);
fn(classes, index, value);
self.className = classes.join(" ");
}
}
var ret = {
add: update(function(classes, index, value) {
~index || classes.push(value);
}),
remove: update(function(classes, index) {
~index && classes.splice(index, 1);
}),
toggle: update(function(classes, index, value) {
~index ? classes.splice(index, 1) : classes.push(value);
}),
contains: function(value) {
return !!~self.className.split(/\s+/).indexOf(value);
},
item: function(i) {
return self.className.split(/\s+/)[i] || null;
}
};
Object.defineProperty(ret, 'length', {
get: function() {
return self.className.split(/\s+/).length;
}
});
return ret;
}
});
}
if (!("getBoundingClientRectRigth" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') {
Object.defineProperty(HTMLElement.prototype, 'getBoundingClientRectRigth', {
get: function() { return function() {
if (this.getBoundingClientRect){
var rect = this.getBoundingClientRect();
if (this.x && this.y){
var scroll_top = vimo.utils.getScrollTop();
rect.top = scroll_top - this.y;
}
return rect;
} else {
return undefined;
}
}
}
});
}
if (!("watchatt" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') {
Object.defineProperty(HTMLElement.prototype, "watchatt", {
enumerable: false
, configurable: true
, writable: false
, value: function (prop, handler) {
var
oldval = this[prop]
, newval = oldval
, getter = function () {
return newval;
}
, setter = function (val) {
oldval = newval;
return newval = handler.call(this, prop, oldval, val);
}
;
if (delete this[prop]) { // can't watch constants
Object.defineProperty(this, prop, {
get: getter
, set: setter
, enumerable: true
, configurable: true
});
}
}
});
}
function vimo_prevent_change(prop, oldval, val){
if (this && (this.allow_change || val == "about:blank")){
this.allow_change = false;
return val;
} else{
return oldval;
}
}
if (!window.getZIndex) {
window.getZIndex = function(elem) {
var highestZIndex = null;
while(elem != document.documentElement && elem){
var zIndex = parseInt( getComputedStyle(elem, null).getPropertyValue('z-index'));
if (highestZIndex === null && typeof zIndex === 'number' && !isNaN(zIndex)){
highestZIndex = zIndex;
} else if (!isNaN(zIndex) && zIndex > highestZIndex){
highestZIndex = zIndex;
}
elem = elem.parentElement;
}
return highestZIndex;
};
}
if (!window.getElementPosition) {
function internalgetElementPosition(elem){
var element_position = window.getComputedStylePropertyValue(elem, 'position');
if (element_position != 'fixed' && (elem != document.documentElement) && elem.parentNode && typeof(elem.parentNode.tagName) != "undefined") return internalgetElementPosition(elem.parentNode);
return element_position;
}
window.getElementPosition = function(elem) {
return internalgetElementPosition(elem);
};
}
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (obj, fromIndex) {
if (fromIndex == null) {
fromIndex = 0;
} else if (fromIndex < 0) {
fromIndex = Math.max(0, this.length + fromIndex);
}
for (var i = fromIndex, j = this.length; i < j; i++) {
if (this[i] === obj)
return i;
}
return -1;
};
}
if (!window.getComputedStyle) {
window.getComputedStyle = function(el, pseudo) {
this.el = el;
this.getPropertyValue = function(prop) {
var re = /(\-([a-z]){1})/g;
if (prop == 'float') prop = 'styleFloat';
if (re.test(prop)) {
prop = prop.replace(re, function () {
return arguments[2].toUpperCase();
});
}
return el.currentStyle[prop] ? el.currentStyle[prop] : null;
}
return this;
}
}
if (!window.getComputedStylePropertyValue){
function getCamelCasedCssProperty(cssProperty){
var camelcase = cssProperty.replace(/\-([a-z]){1}/g, function (g) { return g.toUpperCase() });
return camelcase;
}
window.getComputedStylePropertyValue = function(el,cssProperty){
if(!window.getComputedStyle){
if(document.defaultView && document.defaultView.getComputedStyle){
return document.defaultView.getComputedStyle.getPropertyValue(cssProperty); // chrome + firefox
}
else{
var camelCasedCssProperty = getCamelCasedCssProperty(cssProperty); // transforme for IE syntax from "margin-top" to "margainTop"
var style_ie8 = window.getComputedStyle(el); // IE8
if (style_ie8.getPropertyValue(camelCasedCssProperty)) {
return html_style.getPropertyValue(camelCasedCssProperty);
}
else{
if(el.currentStyle){ // IE9
return el.currentStyle(camelCasedCssProperty);
}
else{
if (el.style[camelCasedCssProperty].length > 0){ // IE10
return el.style[camelCasedCssProperty];
}
else return 0;
}
}
}
}
else{
if (el.nodeType == 1){
var comp_style = window.getComputedStyle(el);
if (comp_style){
return comp_style.getPropertyValue(cssProperty);
}
}
return null;
}
}
}
String.prototype.trim = function () {
return this.replace(/^\s*|\s*$/g, '');
},
String.prototype.truncate = function (limit) {
var bits, i;
bits = this.split('');
if (bits.length > limit) {
for (var i = bits.length - 1; i > -1; --i) {
if (i > limit) {
bits.length = i;
}
else if (' ' === bits[i]) {
bits.length = i;
break;
}
}
bits.push('...');
}
return bits.join('');
};
///////////////////////////////
// dependencies
vimo.image = {
max_size: 850,
share_unit_sizes: ["300_250", "300_239"],
mouse_enter_sender: null,
mouse_enter_timeout : null,
first_hover: true,
current_sender: null, // used in order to avoid hide+show when moving from layer to image
last_current_sender: null,
monitor_objects_ts: [],
share_unit_networks_domain : ["googlesyndication.com", "doubleclick.net", "chitika.net", "adbrite.com", "advertising.com", "247realmedia.com", "commission-junction.com", "kanoodle.com", "openx.com", "valueclick.com", "content.yieldmanager.edgesuite.net", "2mdn.net", "mediaplex.com", "serving-sys.com", "BannerSource.asp", "fmpub.net", "adnxs.com", "fastclick.net", "buysellads.com", "solvemedia.com", "linkwi.se", "atwola.com", "shareasale.com", "turn.com", "2mdn.net", "singlehop.com", "tqlkg.com", "glam.com", "ads.yldmgrimg.net", "twitter.com", "cdn.contentclick", "triplelift.com", "content.ad", "adblade.com"],
share_unit_networks_keywords : ["\/linkshare\/", "\/adserv\/", "\/viewad\/", "\/pagead\/", "\/banners\/", "bannerid=", "utm_source="],
share_unit_networks_ad_size : [[468,60],[728,90],[336,280],[300,250],[250,250],[728,210],[720,300],[500,350],[550,480],[300,600]], // known units ad sizes
share_offers_networks:["mgid.com", "outbrain.com", "engageya", "contentclick"],
gallery:0.5,
get_top: function(obj){
var top=0,
left=0;
while(obj) {
top = top + parseInt(obj.offsetTop);
left = left + parseInt(obj.offsetLeft)
obj = obj.offsetParent;
}
return {top: top, left: left}
},
_findPos: function(obj) {
var curleft = curtop = 0;
var cur_height = cur_width = 0;
var chage_left = 0;
// fix bug with offset use only integers with out frec
//if (vimo.utils.browser.browser_type == "Firefox"){
var rectObject = null;
if (obj.getBoundingClientRectRigth){
rectObject = obj.getBoundingClientRectRigth();
} else{
rectObject = obj.getBoundingClientRect();
}
var viewportElement = document.documentElement;
var docBody = document.body;
var style_body = (docBody.currentStyle || window.getComputedStyle(docBody, null));
curleft = rectObject.left + (window.pageXOffset || viewportElement.scrollLeft || docBody.scrollLeft || 0);
if(vimo.settings.img_position_fixed){
var current = obj;
while (current.parentNode && current.tagName != "HEADER" && current.tagName != "BODY"){
current = current.parentNode
if(window.getComputedStyle(current, "position").position == "fixed"){
curtop = rectObject.top;
break;
} else{
curtop = rectObject.top + (window.pageYOffset || viewportElement.scrollTop || docBody.scrollTop || 0);
}
}
}else{
curtop = rectObject.top + (window.pageYOffset || viewportElement.scrollTop || docBody.scrollTop || 0);
}
if (style_body && style_body.position == "relative") {
if (!vimo.utils.isIE() && (vimo.utils.browser.type() != "Firefox")){ // set viewport per browser type
viewportElement = document.body;
curtop = curtop - (docBody.getBoundingClientRectRigth().top + viewportElement.scrollTop);
curleft = curleft - (docBody.getBoundingClientRectRigth().left + viewportElement.scrollLeft); //need to test this action
} else {
viewportElement = document.documentElement;
curtop = curtop - (docBody.getBoundingClientRectRigth().top + viewportElement.scrollTop);
curleft = curleft - (docBody.getBoundingClientRectRigth().left + viewportElement.scrollLeft); //need to test this action
}
}
if (vimo.settings.use_alternative_top_left){
if(!obj.curtop && !obj.curleft){
obj.curtop = curtop;
obj.curleft = curleft;
}if(obj.curtop != curtop){
curtop = vimo.image.get_top(obj).top;
}if(obj.curleft != curleft){
curleft = vimo.image.get_top(obj).left;
}
}
cur_width = rectObject.width;
cur_height = rectObject.height;
return {top: curtop, left: curleft , width: cur_width, height: cur_height}
// } else {
// var floor_left = Math.round(rectObject.left)
// if (floor_left != rectObject.left && obj.offsetLeft > 0){
// if (floor_left > rectObject.left){ // check for
// chage_left = (floor_left - rectObject.left);
// } else {
// chage_left = (rectObject.left - floor_left);
// }
// }
// curleft = chage_left;
// if (obj.offsetParent) {
// do {
// curleft += obj.offsetLeft;
// curtop += obj.offsetTop;
// } while (obj = obj.offsetParent);
// }
// var body_computed_style= window.getComputedStyle(document.body, null)
// var computedStylePos = "";
// if (body_computed_style){
// computedStylePos = body_computed_style.position;
// }
// if (!vimo.utils.isIE() && computedStylePos != 'relative'){
// html_margin_top = window.getComputedStylePropertyValue(document.documentElement, 'margin-top');
// var html_margin_top = parseInt(html_margin_top)
// curtop += html_margin_top;
// }
// }
// }
// catch(e){};
// return { top: curtop, left: curleft };
},
checkParentsFloat: function(img){
var floating = "null";
while(img && img != img.parentElement && img.tagName != "BODY") {
floating = window.getComputedStyle(img, "float").float;
if(floating != "null"){return false};
img = img.parentElement;
}
return true;
},
_getImgSize: function(img, ignore_visibility_forshow){
var pos = vimo.image._findPos(img),
width = img.clientWidth,
height = img.clientHeight,
left = 0,
top = 0,
border_top = 0,
border_left = 0,
border_bottom = 0,
border_rigth = 0,
isOverflowSetToHidden = false,
style = (img.currentStyle || window.getComputedStyle(img, null));
if(!isNaN(parseInt(style.border))){
border_top = parseInt(style.border);
border_left = parseInt(style.border);
}
if(!isNaN(parseInt(style.borderTop))){
border_top = parseInt(style.borderTop);
} else if(!isNaN(parseInt(style.borderTopWidth))){
border_top = parseInt(style.borderTopWidth);
}
if(!isNaN(parseInt(style.borderLeft))){
border_left = parseInt(style.borderLeft);
} else if(!isNaN(parseInt(style.borderLeftWidth))){
border_left = parseInt(style.borderLeftWidth);
}
if(!isNaN(parseInt(style.borderRigth))){
border_rigth = parseInt(style.borderRigth);
} else if(!isNaN(parseInt(style.borderRightWidth))){
border_rigth = parseInt(style.borderRightWidth );
}
if(!isNaN(parseInt(style.borderBottom))){
border_bottom = parseInt(style.borderBottom);
} else if(!isNaN(parseInt(style.borderBottomWidth))){
border_bottom = parseInt(style.borderBottomWidth );
}
var padding_left = 0;
if(!isNaN(parseInt(style.paddingLeft))){
padding_left = parseInt(style.paddingLeft);
border_left += padding_left;
}
var padding_right = 0;
if(!isNaN(parseInt(style.paddingRight))){
padding_right = parseInt(style.paddingRight);
}
var padding_top = 0;
if(!isNaN(parseInt(style.paddingTop))){
padding_top = parseInt(style.paddingTop);
border_top += padding_top;
}
var padding_bottom = 0;
if(!isNaN(parseInt(style.paddingBottom))){
padding_bottom = parseInt(style.paddingBottom);
}
if(img.style.left){
left = img.style.left;
}
if(img.style.top){
top = img.style.top;
}
var shown = true,
parent = img,
overflow_top = pos.top,
overflow_left = pos.left,
offset = 0,
img_rect = img.getBoundingClientRectRigth ? img.getBoundingClientRectRigth() : 0,
img_x = img_rect ? img_rect.left : undefined,
img_y = img_rect ? img_rect.top : undefined,
img_offsetWidth = img.offsetWidth,
parent_rect = parent.getBoundingClientRectRigth ? parent.getBoundingClientRectRigth() : 0,
max_width_parent = parent.clientWidth,
parent_x = parent_rect ? parent_rect.left : 0,
parent_y = parent_rect ? parent_rect.top : 0,
visible_width = parent.clientWidth,
visible_height = parent.clientHeight,
VISIBLE_PADDING = 2,
offset = parent.offsetLeft,
gallery = vimo.image.gallery;
while(parent && parent != parent.parentElement) {
if(vimo.settings.ignore_body && parent.tagName != "BODY"){
break;
}
if (parent.style.opacity == "0"){
shown = false;
}
if (parent && window.getComputedStyle){
var alignText = "";
var overflow = "";
var computed_style = window.getComputedStyle(parent,null);
if (computed_style != null){
if(parent.parentElement != null){
if(parent.parentElement.tagName == "BODY" && parent.offsetTop < document.body.offsetTop && parent.tagName != "FORM"){
shown = false;
}
}
overflow = window.getComputedStyle(parent,null).getPropertyValue("overflow");
if (overflow == "hidden"){
var fix_height = false;
var parent_computed_style = window.getComputedStyle(parent,null);
alignText = parent_computed_style.getPropertyValue("text-align");
float_parent = window.getComputedStyle(parent, "float").float;
///////////////////////////////////////////////////////////////
// TBD should fix bug when overfllow parent is bigger than self
///////////////////////////////////////////////////////////////
if (alignText == 'center') {
pos = vimo.image._findPos(parent);
}
parent_rect = parent.getBoundingClientRectRigth();
parent_x = parent_rect.left;
parent_y = parent_rect.top;
isOverflowSetToHidden = true;
if (parent.clientWidth > 0 && parent.clientWidth > max_width_parent){
max_width_parent = parent.clientWidth;
}
if (parent.clientWidth > 0 && parent.clientWidth < visible_width){
visible_width = parent.clientWidth;
pos = vimo.image._findPos(parent);
overflow_left = pos.left;
if(!isNaN(parseInt(parent_computed_style.borderLeft))){
border_left += parseInt(parent_computed_style.borderLeft);
} else if(!isNaN(parseInt(parent_computed_style.borderLeftWidth))){
border_left += parseInt(parent_computed_style.borderLeftWidth);
}
}
if (parent.clientHeight > 0 && parent.clientHeight < visible_height){
visible_height = parent.clientHeight;
pos = vimo.image._findPos(parent);// set heigth and top with overflow hidden
fix_height = overflow_top;
overflow_top = pos.top;
if(!isNaN(parseInt(parent_computed_style.borderTop))){
border_top += parseInt(parent_computed_style.borderTop);
} else if(!isNaN(parseInt(parent_computed_style.borderTopWidth))){
border_top += parseInt(parent_computed_style.borderTopWidth);
}
}
if (offset + visible_width < 0 || (offset >= parent.offsetWidth && vimo.image.checkParentsFloat(img))){
shown = false;
}
// a fix for slid galleries when only one image is shown - Amit removed max_width_parent*gallerysubid
if ((parent_y == img_y || parent_y + VISIBLE_PADDING > img_y || parent_y - VISIBLE_PADDING < img_y) && (parent_x + (max_width_parent) <= img_x && img_x > parent_x)){
shown = false;
}
if ((parent_y == img_y || parent_y + VISIBLE_PADDING > img_y || parent_y - VISIBLE_PADDING < img_y) && (img_x <= parent_x - (max_width_parent*gallery))) {
shown = false;
}
//-- If the target element is to the left of the parent elm
if(offset + img_offsetWidth - VISIBLE_PADDING < parent.scrollLeft){
shown = false;
}
}
if (computed_style.zoom != '1' && typeof computed_style.zoom != "undefined") {
overflow_top += vimo.utils.getScrollTop();
visible_width *= parseFloat(computed_style.zoom);
visible_height *= parseFloat(computed_style.zoom);
overflow_top *= parseFloat(computed_style.zoom);
overflow_left *= parseFloat(computed_style.zoom);
}
if(parent.tagName.toLowerCase() != "html" && shown && parent.parentNode && (window.getComputedStyle(parent.parentNode).visibility != "visible" || window.getComputedStyle(parent.parentNode).opacity != "1")){
shown = false;
}
}
}
if (parent.offsetParent === parent.parentElement && parent.parentElement != null){
offset = offset + parent.parentElement.offsetLeft;
}
parent = parent.parentElement;
}
if (offset < 0-(visible_width/2)){
shown = false;
}
if(visible_width>img.clientWidth){
visible_width = img.clientWidth;
}
if(visible_height>img.clientHeight){
visible_height = img.clientHeight;
}
if ( (padding_left > 0 || padding_right > 0) && visible_width > width - (padding_left + padding_right) && img.tagName == 'IMG' ){
visible_width = width - (padding_left + padding_right);
}
if ( (padding_top > 0 || padding_bottom > 0) && visible_height > height - (padding_top + padding_bottom) ){
visible_height = height - (padding_top + padding_bottom);
}
if(fix_height){
if(fix_height < 0){
visible_height = visible_height + (fix_height);
}else{
visible_height = visible_height - fix_height;
}
}
var actual_left = overflow_left;
var actual_top = overflow_top;
if(padding_bottom > 0){actual_top +=padding_bottom;}
// if (isOverflowSetToHidden){
// actual_left = overflow_left + border_left ;
// actual_top = overflow_top + border_top;
// } else {
// actual_left = pos.left;
// actual_top = pos.top
// }
if(!ignore_visibility_forshow && window.getComputedStylePropertyValue(img, 'visibility') == 'hidden'){
shown = false;
}
if(!ignore_visibility_forshow && visible_width==0 && visible_height==0){
shown = false;
}
if(left>visible_width){
shown = false;
}
if(top>visible_height){
shown = false;
}
var scroll_left = vimo.utils.getScrollLeft();
var scroll_top = vimo.utils.getScrollTop();
var image_portion = visible_height - 150;
if (image_portion < 0) image_portion = visible_height * 0.7
var element_position = window.getElementPosition(img)
if (element_position != 'fixed'){ // check scroll location only when position is not fixed
if(actual_top <= (scroll_top+ vimo.utils.getHeight()) && (actual_top+image_portion)>=scroll_top){
}else{
shown = false;
}
}
if (visible_width > img.width || pos.width > img.width ){ // check if img has border and padding box inculded (visible_width = img.clintwidth) can set check visible_width - boder = img.width
if (border_left > 0 || border_rigth > 0) {
actual_left = actual_left + border_left;
}
}
if (visible_height > img.height || pos.height > img.height) { //pos.height and pos.width are comming from _findpos function
if (border_top > 0 && border_top != padding_bottom){
actual_top = actual_top + border_top;
}
}
// Fix the pos function to return the inside rect when there is a border (this is border with a fix border (top, left, rigth, bottom))
//if (pos.height > height && border_top != 0) {
// actual_top = actual_top + (pos.height - height)/2;
//}
//if (pos.width > width &ser& border_left != 0) {
// actual_left = actual_left + (pos.width - width)/2;
//}
return [visible_width, visible_height, actual_top, actual_left, shown];
var imgLeft;
var imgPos;
var imgTop;
var imgHeight;
var imgWidth;
if (img) {
imgPos = vimo.image._findPos(img);
if (typeof(imgPos) != "undefined"){
imgLeft = imgPos.left;
imgTop = imgPos.top;
} else{
imgLeft = img.offsetLeft;
imgTop = img.offsetTop;
/*var rect = img.getBoundingClientRectRigth();
if (typeof(rect) != "undefined"){
imgLeft = rect.left;
imgTop = rect.top;
}*/
}
imgWidth = img.clientWidth;
imgHeight = img.clientHeight;
}
if (typeof(imgWidth) == "undefined"){
if (typeof(img.innerWidth) != 'undefined'){imgWidth = img.innerWidth();
}else {imgWidth = img.clientWidth}
}
if (typeof(imgHeight) == "undefined"){
if (typeof(img.innerHeight) != 'undefined'){imgHeight = img.innerHeight();
} else{imgHeight = img.clientHeight}
}
var parent = img.parentNode;
if (parent && window.getComputedStyle){
var overflow = "";
var computed_style = window.getComputedStyle(parent,null);
if (computed_style != null){
overflow = window.getComputedStyle(parent,null).getPropertyValue("overflow")
}
if (overflow == "hidden"){
parent_width = parent.clientWidth;
if (parent_width < imgWidth){
imgWidth = parent_width;
}
parent_height = parent.clientHeight;
if (parent_height < imgHeight){
imgHeight = parent_height;
}
} else if (parent.nodeName == "A"){
if (parent.clientWidth > 0 && parent.clientWidth < imgWidth){
imgWidth = parent.clientWidth;
}
if (parent.clientHeight > 0 && parent.clientHeight < imgHeight){
imgHeight = parent.clientHeight;
}
}
}
return [imgWidth, imgHeight, imgTop, imgLeft, imgPos]
},
getImageSrc: function(image){
var src = image.getAttribute('data-lazy-src');
if (typeof(src) == 'undefined' || src == null)
src = image.getAttribute('ImageHolder');
if (typeof(src) == 'undefined' || src == null)
src = image.getAttribute('src');
if (typeof(src) == 'undefined' || src == null)
src = image.src;
return src
},
mouseEnter: function(sender){
clearTimeout(vimo.image.mouse_enter_timeout);
if (vimo.image.last_current_sender != sender){
if (vimo.preload){
var value = vimo.preload.getCookie("vimo_lpt");
if (value != null){
try{
var splited_value = value.split('$vi$')
if (splited_value.length > 1){
if (splited_value[1] == document.location){
var d = new Date();
var n = d.getTime();
if ((n - parseInt(splited_value[1])) < vimo.settings.lock_show_between_time){
return false;
}
}
}
}
catch(e){}
}
}
}
if (vimo.layer.current_mode == "hover" && vimo.layer.visible && vimo.image.mouse_enter_sender != sender && (vimo.image.current_sender == null || vimo.image.current_sender != sender) ){
// if visible and mode == image and sender is different
// hide imidiatly
if (vimo.layer.scroll_in_action){
return;
}
// setTimeOut fro show and on timeout check still on the image.
vimo.image.mouse_enter_sender = sender;
vimo.layer.hideInternal();
vimo.image.mouse_enter_timeout = setTimeout(function(){
if (vimo.image.mouse_enter_sender != null){
vimo.layer.show(vimo.image.mouse_enter_sender);
}
}, 80)
} else{
vimo.image.mouse_enter_sender = sender;
if (vimo.image.first_hover){
vimo.layer.show(sender);
vimo.image.first_hover = false;
} else{
vimo.image.mouse_enter_timeout = setTimeout(function(){
if (vimo.image.mouse_enter_sender != null){
vimo.layer.show(vimo.image.mouse_enter_sender);
}
}, 40);
}
}
},
mouseLeave: function(e_m){
// check if out to element over the image
if ((typeof(e_m) != 'undefined') && ((typeof(e_m.toElement) != 'undefined') || typeof(e_m.relatedTarget) != 'undefined')) {
if (this && this.getBoundingClientRectRigth){
var rect = this.getBoundingClientRectRigth();
if (typeof(rect) != "undefined"){
if (e_m.clientX > rect.left && e_m.clientX < rect.right && e_m.clientY > rect.top && e_m.clientY < rect.bottom){
var image_element = e_m.toElement || e_m.relatedTarget;
// unbind other elements(wibiya click to share. for example)
vimo.utils.unbind('mouseover', null, image_element);
vimo.utils.unbind('mouseout', null, image_element);
vimo.utils.unbind('mouseenter', null, image_element);
vimo.utils.unbind('mouseleave', null, image_element);
// bind to mouse enter
vimo.utils.bind('mouseover', vimo.layer.mouseEnter, image_element);
vimo.utils.bind('mouseout', vimo.layer.mouseLeave, image_element);
vimo.utils.bind('mouseenter', vimo.layer.mouseEnter, image_element);
vimo.utils.bind('mouseleave', vimo.layer.mouseLeave, image_element);
return;
}
}
}
}
vimo.image.mouse_enter_sender = null;
clearTimeout(vimo.image.mouse_enter_timeout);
if (vimo.layer.current_mode == "hover"){
vimo.layer.mouseLeave(e_m);
}
}
};
vimo.layer = {
tipInview_Shown : false,
units_array: [],
inView_array:[],
inited: false,
fsgf: "s",
fsgf1: "see",
fsgs1: "VISUAL",
fsgs: "S",
images_found: false,
header_background: "",
header_text_color: "",
min_bottom_space: 10,
bind_scroll: true,
scroll_timer: null,
scroll_interval: 100,
scroll_in_action: false,
scroll_in_action_timer: null,
scroll_element_selector: ".MoreLink, .comments, #comments, #comment, .comment, #comment-list, #commentList, #disqus_thread, .yarpp-related",
visible: false,
hovered: false,
show_onfocus: false,
hide_permanent: [],
current_mode: null,
layer_hide_delay: 1000,
layer_obj: null,
layer_width: 278,
layer_height: 288,
should_hide: false,
hook_image: true,
set_lock_counter: true,
set_gray_lock_counter: true,
flip_hooked_images: 0,
strip_hooked_images: 0,
roll_hooked_images: 0,
cover_max_images: 1,
cover_hooked_images: 0,
tip_hooked_images: 0,
generic_refresh_counter: 0,
total_requests_counter: [],
total_passbacks_counter: [],
elementsCounter: [],
productCounter: [],
binded_images:0,
init_xtraStyle: false,
left_style: '-4500px',
top_style: '-4500px',
monitor_objects: {},
prev_url: null,
one_request: [],
w: screen.width,
h: screen.height,
pxr: window.devicePixelRatio,
ppi: function() {
var elem = document.createElement('div');
elem.style.width = '1in';
document.body.appendChild(elem);
var ppi = elem.offsetWidth;
document.body.removeChild(elem);
return ppi;
},
isEmpty: function(obj){
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true && JSON.stringify(obj) === JSON.stringify({});
},
connectionType: function(){
if (navigator.connection && navigator.connection.type){
if (navigator.connection.type == "cellular"){
return "3";
} else if (navigator.connection.type == "wifi"){
return "2";
} else if (navigator.connection.type == "ethernet"){
return "1";
} else{
return "0";
}
} else {
return "0";
}
},
language: function(){
try{
//var full_html = document.documentElement.outerHTML;
//var reg_ex = new RegExp("lang=", "i");
var lang_dict = {"br": "pt", "it": "it", "es": "es", "fr": "fr", "de": "de","mx": "es","ar": "es","co": "es","cl": "es"};
var curr_host = document.location.host;
curr_host_split = curr_host.split(".")
if (curr_host_split[curr_host_split.length-1] in lang_dict){
return lang_dict[curr_host_split[curr_host_split.length-1]];
}
var lang = document.documentElement.lang || navigator.language || navigator.userLanguage;
if (lang == null || typeof(lang) == 'undefined'){
lang = "";
} else{
if (lang.length > 2){
lang = lang[0] + lang[1]
}
}
} catch(e){
return 'en'
// do nothing
}
return lang;
},
autoPassBack: function(frame_element){
var check_fyva = frame_element.contentWindow.document.body.getElementsByTagName("DIV"),
check_scripts = frame_element.contentWindow.document.getElementsByTagName("SCRIPT"),
check_iframes = frame_element.contentWindow.document.getElementsByTagName("IFRAME"),
found_main_script = false,
found_va_script = false,
id_index = false,
found_id = false;
if(check_fyva.length > 0){
var get_fyva = check_fyva[0].className;
if(get_fyva == "fyva_noshow" || frame_element == "fyva_container" || frame_element == "chitikaAdContainer"){return;}
}
for(var index=0 ; index < check_scripts.length ; index++){
if(check_scripts[index].src.indexOf(".js") > -1){
found_main_script = true;
}
if(check_scripts[index].innerHTML.indexOf("w.va_sid") > -1){
found_va_script = true;
var id_index = check_scripts[index].innerHTML.indexOf("w.va_curr_unit_id");
if(id_index && !found_id){
var id_number = check_scripts[index].innerHTML.substring(id_index);
id_number = id_number.split("'");
id_number = parseInt(id_number[1]);
found_id = true;
}
}
}
if(!found_main_script && check_iframes.length == 0 && found_va_script){
var pass_url = vimo.utils.protocol() + '//srv.imonomy.com/script/main.js';
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', pass_url);
frame_element.contentWindow.document.body.appendChild(script);
vimo.page.trackServ(987, "auto_passback", undefined, undefined, id_number ? id_number : undefined);
frame_element.requested = true;
}
},
incPassbackCounter: function(product){
if(vimo.layer.total_requests_counter[product] >=0){
vimo.layer.total_requests_counter[product]+= 1;
}else{
vimo.layer.total_requests_counter[product]= [];
vimo.layer.total_requests_counter[product]= 0;
}
},
checkPassbackCode: function(product){
if(vimo.layer.total_passbacks_counter[product] >=0){
vimo.layer.total_passbacks_counter[product]+= 1;
}else{
vimo.layer.total_passbacks_counter[product]= [];
vimo.layer.total_passbacks_counter[product]= 0;
}
if (vimo.layer.total_passbacks_counter[product] == vimo.layer.total_requests_counter[product]){
if (vimo.settings.passback_code){
vimo.settings.passback_code(product);
}
}
},
isDescendant: function(parent, child) {
var node = child.parentNode;
while (node != null) {
if (node == parent) {
return true;
}
node = node.parentNode;
}
return false;
},
checkLoad_interval_timer: null,
checkLoad_interval: function(){
if (vimo.layer.units_array.checkLoad_interval_timer == null){
vimo.layer.units_array.checkLoad_interval_timer = setTimeout(function (){
var reactive = false;
if(vimo.layer.units_array.length != vimo.layer.loaded_products){
for(var obj_index in vimo.layer.units_array){
var unit = vimo.layer.units_array[obj_index];
if (!unit.loaded){
if(unit.type == "strip"){
unit.loaded = vimo.strips.isContentLoaded(unit.unit_container);
if(unit.loaded){
vimo.layer.loaded_products++;
}
}
}
}
reactive = true;
}
vimo.layer.units_array.checkLoad_interval_timer = null;
if (reactive){
vimo.layer.checkLoad_interval();
}
}, 400);
}
},
is_shopping_site: null,
shopping_site: function(){
if (vimo.layer.is_shopping_site == null){
if (vimo.settings && vimo.settings.shopping_site){
vimo.layer.is_shopping_site = vimo.settings.shopping_site;
} else{
if (document.location != null && (document.location.pathname != "/" || document.location.search != "")){
// check if shopping site
var full_html = document.documentElement.outerHTML || new XMLSerializer().serializeToString(document.documentElement);
shopping_words = ["add to cart", "add to basket", "shop by", "add to wishlist", "add to loves", "free shipping", "product review", "go to store",
"carrinho de compras", "comprar com ", "ir � Loja", "meu carrinho", "meus pedidos", "arraste para o carrinho", "mais Vendidos", "compre agora", "sua compra segura", "formas de pagamento", "minha sacola", "nossas lojas", "com frete gratis", "frete gratis", "adicionar ao carrinho", "compra rapida", "continuar comprando",
"stato ordini", "aggiungi al carrello", "il mio carrello", "lista dei desideri", "disponibilita prodotti", "compra online", "prodotti nel carrello", "consegna gratis", "i miei ordini", "aggiungi ai desiderati",
"compra ahora", "comprar ahora", "compra ya", "agregar a la lista", "mi carrito", "iienda online", "formas de pago", "a�adir al carrito", "mostrar carrito", "continuar comprando", "carro de compra", "mi cesta", "a�adir a la cesta", "detalles del producto", "env�o gratis",
"voir l'offre", "achat imm�diat", "mon panier", "ajouter au panier", "continuer mes achats", "passer la commande", "total de votre commande", "livraison gratuite", "voir mon panier", "modes de livraison", "moyens de paiement",
"in den warenkorb", "weiter shoppen", "warenkorb anzeigen", "kauf auf Raten", "zahlungsbedingungen", "bezahlung", "auf den Wunschzettel", "kostenloser versand"]
for (var i = 0; i < shopping_words.length; i++) {
var str = new RegExp("\\b" + shopping_words[i].replace("(", "\\(") + "\\b", "i");
if (full_html.match(str) != null){
vimo.layer.is_shopping_site = true;
break;
}
}
}
if (vimo.layer.is_shopping_site == null){
vimo.layer.is_shopping_site = false;
}
}
}
return vimo.layer.is_shopping_site;
},
setLockCounter: function(){
if (vimo.layer.set_lock_counter){
vimo.utils.setCookie("vimo_lock_time", document.location, vimo.settings.lock_domain_time, '/', vimo.settings.use_cross_domain_lock);
//var d = new Date();
//var n = d.getTime();
//vimo.utils.setCookie("vimo_lpt", n.toString() + "$vi$" + document.location, vimo.settings.lock_show_between_time, document.location);
vimo.layer.set_lock_counter = false;
var lock_counter = vimo.utils.getCookie("vimo_lock_count");
if (vimo.settings.use_cross_domain_lock && vimo.settings.lock_counter){
lock_counter = vimo.settings.lock_counter;
}
if (lock_counter == null || lock_counter == ""){
lock_counter = 0;
} else{
lock_counter = parseInt(lock_counter);
}
vimo.utils.setCookie("vimo_lock_count", lock_counter + 1, vimo.settings.lock_count_time, '/', vimo.settings.use_cross_domain_lock); //3600000 = 1 hours
//var random_mode = Math.random();
//if (random_mode <= 0.001){
// var c_check_url = "//c.fqtag.com/tag/implement-r.js?org=F0PcXB03ZlblukgOY2nw&p=" + vimo.layer.get_sid() + "&a=" + vimo.layer.get_sub_id() +"&cmp=&rd=" + escape(vimo.page.domain()) + "&rt=display&sl=1";
// vimo.utils.injectScript(c_check_url);
//}
}
},
mouseEnter: function(sender){
vimo.layer.hovered = true;
},
mouseLeave: function(e){
vimo.layer.hovered = false;
vimo.layer.hide();
},
getPosition: function(element){
var imgSize = vimo.image._getImgSize(element);
var imgWidth = imgSize[0];
var imgHeight = imgSize[1];
var imgTop = imgSize[2];
var imgLeft = imgSize[3];
var imgPos = imgSize[4];
if (typeof(imgWidth) == 'undefined' || typeof(imgTop) == 'undefined'){
return null;
}
var left = imgLeft;
var top = imgTop;
var right = left + imgWidth;
var bottom = imgTop + imgHeight;
var scrollTop = vimo.utils.getScrollTop();
var scrollLeft = vimo.utils.getScrollLeft();
var layer_left = right;
var layer_top = top;
var min_space_from_top = 25;
// check which is bigger left space or right space
var layer_direction = "";
var tip_in_image_cover = 50;
if (imgWidth < 170){
tip_in_image_cover = 0;
}
else if (imgWidth < 250){
tip_in_image_cover = 25;
}
if ((((left + (imgWidth/2)) < (window.innerWidth/2)) || right+vimo.layer.layer_width > vimo.utils.getWidth() || imgWidth < 130) && (left - vimo.layer.layer_width) > 0 ){
if (vimo.utils.isRTL()){
layer_left = left + tip_in_image_cover;
} else {
layer_left = left - vimo.layer.layer_width + tip_in_image_cover;
}
layer_top = top + min_space_from_top;
layer_direction = "R";
} else {
if (vimo.utils.isRTL()){
layer_left = right + vimo.layer.layer_width - tip_in_image_cover;
} else {
layer_left = right - tip_in_image_cover;
}
layer_top = top + min_space_from_top;
layer_direction = "L";
}
if (top+vimo.layer.layer_height > scrollTop+vimo.utils.getHeight()){
if (scrollTop+vimo.utils.getHeight() < top+min_space_from_top){
// should show on top
} else{
layer_top = scrollTop+vimo.utils.getHeight() - min_space_from_top - vimo.layer.layer_height;
}
}
if (scrollTop > (top -min_space_from_top)){
if (scrollTop > (top + imgHeight - min_space_from_top)){
// should show under the image
} else {
layer_top = scrollTop + min_space_from_top;
}
}
var tip_m = 65 + 25 * (120/imgHeight);
if (layer_top > imgTop - tip_m && layer_top < imgTop + (vimo.layer.layer_height/3.5) - tip_m){
layer_direction = layer_direction + "M";
} else if (layer_top > imgTop) {
layer_direction = layer_direction + "T";
} else {
layer_direction = layer_direction + "B";
}
return {
left: layer_left,
top: layer_top,
direction: layer_direction
}
},
test_iframe_mode_check: null,
test_iframe_mode: function(){
if (vimo.layer.test_iframe_mode_check == null){
frame_id = "vimo_layer_frame_test";
if (document.getElementById(frame_id) == null){
var ifrm = document.createElement("IF" + "RAME");
ifrm.setAttribute("id", frame_id);
ifrm.setAttribute("name", frame_id);
ifrm.setAttribute("width", 0);
ifrm.setAttribute("height", 0);
ifrm.style.width = 0;
ifrm.style.height = 0;
ifrm.style.display = 'none';
document.body.appendChild(ifrm);
}
var html = "";
var width = null; //response.width;
var height = null; //response.height;
var frame = document.getElementById(frame_id);
if (!frame) {return false;}
vimo.layer.test_iframe_mode_check = vimo.layer.set_iframe(frame, html, width, height, true);
}
return vimo.layer.test_iframe_mode_check;
},
set_iframe: function(frame, thehtml, width, height, test) {
if (typeof(test) != 'undefined' && test == true){
thehtml = "
"
}
var w = window;
if (typeof(frame) == "undefined"){
return false; //f was undefined crashing Chrome for Mac.
}
var fobj = frame;
fobj.src = "about:blank";
if(frame.className == "vimo_sticky_frame"){
fobj.class = "vimo_sticky_frame";
}
fobj.border = "0";
fobj.style.margin = fobj.style.padding = fobj.style.border= 0;
fobj.padding = "0";
fobj.frameBorder = 0;
fobj.marginWidth = 0;
fobj.marginHeight = 0;
fobj.vspace = 0;
fobj.hspace = 0;
fobj.scrolling = "no";
fobj.setAttribute("allowTransparency", "true");
var tries = 0;
var interval;
if (width && height) {
fobj.width = width;
fobj.height = height;
if (isNaN(width)){
fobj.style.width = width;
} else{
fobj.style.width = width + "px";
}
if (isNaN(height)){
fobj.style.height = height;
} else {
fobj.style.height = height+ "px";
}
}
if (thehtml != null){
fobj.thehtml = thehtml;
try{
var fdoc = fobj.contentWindow.document;
//if (!vimo.utils.isIE()){
fdoc.open();
//}
fdoc.write(thehtml);
// setTimeout for a bug fix; for some reason the document's onload event doesn't fire if the containing element has position set, unless I add a delay...
//if (!vimo.utils.isIE()){
setTimeout(function() { fdoc.close(); }, 16);
//}
if (typeof(test) != 'undefined' && test == true){
if (fdoc.getElementById('test') == null)
return false;
}
}catch(e){return false;}
}
if(fobj.className == "vimo_sticky_frame" && vimo.utils.isIE()){
var sytle_doc = fobj.contentWindow || fobj.contentDocument;
sytle_doc.document.documentElement.style.overflow = "hidden";
}
return true;
},
get_sub_id: function(){
var sub_id = "";
if (vimo.layer.get_sid() == "14567725798" || vimo.layer.get_sid() == "14567725764" || vimo.layer.get_sid() == "14567725690") {
if (typeof(vadims_sub_id) != 'undefined'){
sub_id = vadims_sub_id;
}
}
else {
if (eval("typeof(vadims_" + vimo.layer.get_sid() + "_sub_id)") != 'undefined'){
sub_id = eval("vadims_" + vimo.layer.get_sid() + "_sub_id");
} else if (vimo.preload && vimo.preload.sub_id != ''){
sub_id = vimo.preload.sub_id;
}
}
if (typeof (sub_id) == 'undefined') {
sub_id = "";
}
return sub_id;
},
get_sid: function(){
var sid = "";
if (vimo.preload && vimo.preload.encoded_partner){
sid = vimo.preload.encoded_partner;
} else{
sid = vimo.global_settings.sid;
}
return sid;
},
decodeStr: function(coded) {
var key = "SXGWLZPDOKFIVUHJYTQBNMACERxswgzldpkoifuvjhtybqmncare"
coded = decodeURIComponent(coded);
var uncoded = "";
var chr;
for (var i = coded.length - 1; i >= 0; i--) {
chr = coded.charAt(i);
uncoded += (chr >= "a" && chr <= "z" || chr >= "A" && chr <= "Z") ?
String.fromCharCode(65 + key.indexOf(chr) % 26) :
chr;
}
return uncoded;
},
hold: function(){
vimo.layer.fsgf = vimo.layer.fsgf + "_simi" + "lar"+ ",#simi" + vimo.layer.decodeStr("jTJTxf") + vimo.layer.decodeStr("dukvO_QqwNg");
vimo.layer.fsgs = vimo.layer.fsgs + "_" + vimo.layer.decodeStr("xLb") + "RCH";
try{
vimo.utils.injectStyle("#" + vimo.layer.fsgf + ",.dea" + vimo.layer.decodeStr("-EfJf") + "toast ,#" + vimo.layer.fsgs + "{ display:none !important; visibility:hidden !important;}");
}
catch(e){}
},
monitor_url: null,
set_values: function(){
vimo.layer.fsgf = vimo.layer.fsgf + "f_" + vimo.layer.fsgf1;
vimo.layer.fsgs = vimo.layer.fsgs + "F_" + vimo.layer.fsgs1;
},
monitor_url_change: function(){
if (vimo.layer.monitor_url == null)
{
vimo.layer.monitor_url = location.href;
}
if(vimo.layer.monitor_url != location.href){
vimo.layer.prev_url = vimo.layer.monitor_url;
vimo.layer.monitor_url = location.href;
vimo.layer.clear_init();
vimo.layer.bindImages();
vimo.page.trackServ(990, "imp", vimo.settings.quality_type, undefined, undefined, vimo.layer.is_locked());
} else {
setTimeout(function(){ vimo.layer.monitor_url_change();},100);
}
},
dynamic_ads_marker: null,
unit_marker: function(){
var unit_marker = "";
if (typeof(ivima_ad_marker) != 'undefined')
{
unit_marker = ivima_ad_marker;
} else if (vimo.preload && vimo.preload.unit_marker != null){
unit_marker = vimo.preload.unit_marker;
} else if (vimo.settings && vimo.settings.default_ad_marker){
unit_marker = vimo.settings.default_ad_marker;
}
if (vimo.settings){
var dynamic_script_ads_marker = vimo.settings.dynamic_script_ads_marker;
if (dynamic_script_ads_marker != null && dynamic_script_ads_marker.length > 0){
eval(dynamic_script_ads_marker);
}
}
if (vimo.layer.dynamic_ads_marker != null){
unit_marker = vimo.layer.dynamic_ads_marker;
}
return unit_marker;
},
unit_marker_url: function(){
var unit_marker_url = "";
if (vimo.preload && vimo.preload.unit_marker_url != null){
unit_marker_url = vimo.preload.unit_marker_url;
} else if (vimo.settings.unit_marker_url){
unit_marker_url = vimo.settings.unit_marker_url;
}
return unit_marker_url;
},
init: function(){
if (vimo.layer.inited == true) return;
if (vimo.settings.validate_blacklist){
if (vimo.page.isContainsBlackListWord()){
vimo.tracker.reportBlackList("init", "");
return;
} else{
vimo.tracker.reportNoneBlackList();
}
}
var body_style = window.getComputedStyle(document.body, null);
if (body_style.direction == "rtl") {
vimo.layer.left_style = '4500px';
}
if (vimo.coverTip){
vimo.coverTip.init();
}
// init settings
if (typeof(ivima_hook_image_flip) != 'undefined'){
vimo.settings.use_flip = ivima_hook_image_flip;
}
if (typeof(ivima_hook_image_tip) != 'undefined'){
vimo.settings.bind_tip_layer = ivima_hook_image_tip;
}
if (typeof(ivima_hook_scroll) != 'undefined'){
vimo.settings.bind_scroll = ivima_hook_scroll;
}
if (vimo.settings.gray_list_behavior){
try{
var gray_list_history = vimo.settings.gray_list_history;
if (gray_list_history && gray_list_history.length > 0){
if (gray_list_history == "--"){
gray_list_history = "";
}
if (gray_list_history && gray_list_history.length > 0){
var curr_date = new Date();
lock_counter_splited = gray_list_history.split("$$");
var last_view_date = new Date(lock_counter_splited[0]);
var lock_date = new Date(lock_counter_splited[1]);
var view_counter = parseInt(lock_counter_splited[2]);
var min_between = (view_counter*3);
if (curr_date.getTime()-last_view_date.getTime() < min_between*60*1000 || (curr_date.getTime()-lock_date.getTime() < 24*45*60*1000 && view_counter > 4)){
vimo.settings.bind_scroll = false;
}
}
} else{
vimo.settings.bind_scroll = false;
}
}catch(e){
vimo.settings.bind_scroll = false;
}
}
vimo.page.LogServ();
///////////////////////
if (vimo.settings.use_page_tracking){
vimo.settings.use_page_tracking = false;
}
if ((typeof(vimo_monitor_url_change) != 'undefined' && vimo_monitor_url_change) || vimo.settings.monitor_url_change){
vimo.layer.monitor_url_change();
}
if (vimo.settings.shopping_agresive && vimo.layer.shopping_site()){
if (vimo.settings.bind_scroll){
vimo.settings.bind_on_show = true;
}
vimo.settings.min_image_size = 50;
if (!vimo.settings.use_flip && !vimo.settings.use_coverTip){
vimo.settings.use_coverTip = true;
}
vimo.settings.flip_timer_first = 2000;
}
var sitextraStyle = vimo.site.xtraStyle();
if (sitextraStyle != null && sitextraStyle.length > 0){
vimo.utils.injectStyle(sitextraStyle);
}
var xtraStyle = vimo.settings.xtraStyle;
if (xtraStyle && xtraStyle != null && xtraStyle.length > 0 && !vimo.layer.init_xtraStyle){
vimo.utils.injectStyle(xtraStyle);
vimo.layer.init_xtraStyle = true;
}
var slider_cap = vimo.utils.getCookie("vimo_slider_lock_time");
if ((vimo.utils.isMobile() == null && vimo.settings.bind_scroll || vimo.settings.bind_on_show) && slider_cap.indexOf("slider") == -1){
vimo.slider.init();
}else if(vimo.settings.my_slider_mobile && vimo.utils.isMobile() != null && slider_cap.indexOf("slider") == -1){
vimo.slider.init();
}
var sticky_close_cap = vimo.utils.getCookie("vimo_sticky_lock_time").indexOf("sticky") == -1;
if (sticky_close_cap && !vimo.sticky.inited && ((vimo.utils.isMobile() == null && vimo.settings.use_sticky) || (vimo.settings.my_sticky_mobile && vimo.utils.isMobile() != null))){
if (vimo.settings.sticky_cap_x24 != -1) {
var sticky_lock_counter = vimo.settings.sticky_cap;
if(parseInt(sticky_lock_counter) < vimo.settings.sticky_cap_x24) {
vimo.sticky.cap_counter = sticky_lock_counter;
vimo.sticky.init();
}else if(!vimo.sticky.sticky_trackServed) {
vimo.page.trackServ(996, "Sticky_cap_x24", "vimo_sticky");
vimo.sticky.sticky_trackServed = true;
}
} else {
vimo.sticky.allow_cap_inc = false;
vimo.sticky.init();
}
}
setTimeout(function() { vimo.tracker.reportCompPresent(); }, 2000);
if (!vimo.layer.images_found || !vimo.settings.bind_tip_layer){
return;
}
var style = vimo.settings.layer_style;
vimo.utils.injectStyle(style);
var html = vimo.settings.layer_html;
html = html.replace("$$unit_mark$$", vimo.layer.unit_marker());
html = html.replace("$$unit_marker_url$$", vimo.layer.unit_marker_url());
var html_element=document.createElement("div");
html_element.id = "vimo_layer";
html_element.className = "vimo_layer";
html_element.innerHTML = html;
document.body.appendChild(html_element);
vimo.layer.inited = true;
if (vimo.settings.bind_on_show){
//vimo.settings.bind_scroll = false;
setTimeout(function() { vimo.slider.show_on_show(); }, 1800);
}
},
init_layer_tip: false,
request_hook: [],
hooked: false,
is_content_loaded: null,
loaded_ad_id:undefined,
isElementVisible: function(obj, doc){
if (obj == doc) return true;
if (!obj) return false;
if (!obj.parentNode) return false;
if (obj.style) {
if (window.getComputedStyle(obj,null).display == 'none') return false;
if (window.getComputedStyle(obj,null).visibility == 'hidden') return false;
}
//Try the computed style in a standard way
//if (window.getComputedStyle) {
// var style = window.getComputedStyle(obj, "")
// if (style.display == 'none') return false
// if (style.visibility == 'hidden') return false
//}
//Or get the computed style using IE's silly proprietary way
//var style = obj.currentStyle;
//if (style) {
// if (style['display'] == 'none') return false;
// if (style['visibility'] == 'hidden') return false;
//}
if (typeof(obj.width) != "undefined" && (obj.width == "" || obj.width == 0 || obj.width > 90000 || obj.width == 1) && (isNaN(parseInt(obj.style.width)) || parseInt(obj.style.width) <= 1)){
return false;
}else if((typeof(obj.width) == "undefined" && obj.tagName == "IFRAME") && !(obj.clientWidth >2 && obj.clientHeight >2)){
return false;
}
if (typeof(obj.height) != "undefined" && (obj.height == "" || obj.height == 0 || obj.height > 90000 || obj.height == 1) && (isNaN(parseInt(obj.style.height)) || parseInt(obj.style.height) <= 1)){
return false;
}else if((typeof(obj.height) == "undefined" && obj.tagName == "IFRAME") && !(obj.clientWidth >2 && obj.clientHeight >2)){
return false;
}
if (obj.tagName == "STYLE" || obj.tagName == "SCRIPT" || (!obj.tagName && obj.nodeName == '#text') || (!obj.tagName && obj.nodeName == '#comment')){
return false;
}
if ('LINK' == obj.tagName && obj.type == "text/css"){
return false;
}
if ((obj.tagName == "DIV" || obj.tagName == "FIELDSET" || obj.tagName == "INS" || obj.tagName == "SPAN" || obj.tagName == "AMP-AD")){
if (obj.innerHTML == ""){
return false;
}
var found_visible_element = false;
for (var i=0;i= 0 ? element.index : undefined;
if (frame_element.className != "flip_actions" && frame_element.className != "strip_actions" && frame_element.className != "close_x" && frame_element.className != "unit_marking"){
var is_loaded = [false, false];
if (frame_element.className == "fyva_container" || frame_element.className == "chitikaAdContainer"){
is_loaded = vimo.layer.checkElementContent(frame_element, innerDoc);
} else{
is_loaded = vimo.layer.checkContent(frame_element, innerDoc);
}
if (is_loaded[0] || is_loaded[1]){
return is_loaded;
}
}
}
}
return [false, false];
},
checkContent: function(element, innerDoc){
var read_doc = null;
if (!innerDoc){
read_doc = document;
} else{
read_doc = null;
}
if (vimo.layer.isElementVisible(element, read_doc)){
// fix for smaato empty ads
if (element.tagName == "INS" || element.tagName == "AMP-AD" || (element.tagName == "DIV" && element.id.indexOf("smaato") === 0)){
var is_loaded = vimo.layer.checkElementContent(element, innerDoc);
if (is_loaded[0] || is_loaded[1]){
return is_loaded;
}
}
else if (element.tagName == "IFRAME"){
var frame_loaded = vimo.layer.checkIframeContent(element);
if (frame_loaded[0] || frame_loaded[1]){
if (element && element.ownerDocument){
var win = element.ownerDocument.defaultView || element.ownerDocument.parentWindow;
if (win){
if (win.wait_to_prevent_empty_ads || win.parent.wait_to_prevent_empty_ads || win.parent.parent.wait_to_prevent_empty_ads){
win.wait_to_prevent_empty_ads = false;
return [false, false];
}
}
}
return frame_loaded;
}
}else{
if (element.tagName != "STYLE" && element.tagName != "SCRIPT" && element.tagName != "NOSCRIPT" && typeof (element.tagName) != 'undefined' ){
var ad_id = "";
var ad_refuse_refresh = false;
if (element && element.ownerDocument){
var win = element.ownerDocument.defaultView || element.ownerDocument.parentWindow;
if (win){
if (win.wait_to_prevent_empty_ads){
win.wait_to_prevent_empty_ads = false;
return [false, false];
}
if (win.va_curr_unit_id){
ad_id = win.va_curr_unit_id
// check va_format to make sure its not the parent ad we get the id of
} else if (win.parent && win.parent.va_format && win.parent.va_curr_unit_id){
ad_id = win.parent.va_curr_unit_id
}
if (win.va_ad_refuse_refresh){
ad_refuse_refresh = win.va_ad_refuse_refresh
// check va_format to make sure its not the parent ad we get the id of
} else if (win.parent && win.parent.va_ad_refuse_refresh){
ad_refuse_refresh = win.parent.va_ad_refuse_refresh
}
}
}
return [true, true, ad_id, ad_refuse_refresh];
}
}
} else if (element && element.className && element.className == "fyva_noshow"){
return [false, true, 998]
}
return [false, false];
},
checkIframeContent: function(frame_element){
try{
var fcowin = frame_element.contentWindow;
if (fcowin == null)
return [false, true];
var innerDoc = frame_element.contentWindow.document;
if (typeof(innerDoc) == 'undefined'){return [true, true];} // fix for safari bug cant get access to iframe
}catch(e){
var ad_id = "";
ad_refuse_refresh = false;
if (frame_element && frame_element.ownerDocument){
var win = frame_element.ownerDocument.defaultView || frame_element.ownerDocument.parentWindow;
if (win){
if (win.va_curr_unit_id){
ad_id = win.va_curr_unit_id
// check va_format to make sure its not the parent ad we get the id of
} else if (win.parent && win.parent.va_format && win.parent.va_curr_unit_id){
ad_id = win.parent.va_curr_unit_id
}
if (win.va_ad_refuse_refresh){
ad_refuse_refresh = win.va_ad_refuse_refresh
// check va_format to make sure its not the parent ad we get the id of
} else if (win.parent && win.parent.va_ad_refuse_refresh){
ad_refuse_refresh = win.parent.va_ad_refuse_refresh
}
}
}
return [true, true, ad_id, ad_refuse_refresh];
}
if (innerDoc && innerDoc.body != null){
var elems = innerDoc.body.getElementsByTagName("*");
var all_elems = frame_element.contentWindow.document.getElementsByTagName("*");
var product = frame_element.product;
var index;
if(vimo.settings.allow_auto_passback){
if(product != "slider" && product != "sticky"){
index = frame_element.index;
}
var all_elemsLength = all_elems.length;
if(all_elemsLength > vimo.layer.elementsCounter[product][index]){
vimo.layer.elementsCounter[product][index] = all_elemsLength;
}else if(all_elemsLength > vimo.layer.elementsCounter[product]){
vimo.layer.elementsCounter[product] = all_elemsLength;
}else{
if(index >= 0){
if(vimo.layer.productCounter[product][index] >= vimo.settings.auto_passback_time && !frame_element.requested){
vimo.layer.autoPassBack(frame_element);
}
}else{
if(vimo.layer.productCounter[product] >= vimo.settings.auto_passback_time && !frame_element.requested){
vimo.layer.autoPassBack(frame_element);
}
}
}
}
for (var j = 0; j < elems.length; j++) {
var frame_element = elems[j];
frame_element.product = product;
frame_element.index = index;
var is_loaded = [false, false];
if (frame_element.className == "fyva_container" || frame_element.className == "chitikaAdContainer"){
is_loaded = vimo.layer.checkElementContent(frame_element, innerDoc);
} else{
is_loaded = vimo.layer.checkContent(frame_element, innerDoc);
}
if ((is_loaded[0] || is_loaded[1]) && frame_element.tagName != "INS"){
return is_loaded;
}
}
}
return [false, false]
},
crCap_check: false,
checkCrCap: function(frame_el){
if (vimo.layer.crCap_check)
return;
vimo.layer.crCap_check = true;
// check if criteo shown
if (vimo.settings.unit_id == 1023){
// if true increase cookie
if (frame_el){
if (frame_el.tagName != "IFRAME"){
frame_els = frame_el.getElementsByTagName("IFRAME");
if (frame_els && frame_els.length > 0){
frame_el = frame_els[0];
} else{
return;
}
}
var inner_frames = null;
try{
inner_frames = frame_el.contentWindow.document.getElementsByTagName("IFRAME");
} catch(e){
// does not support IE8 and lower
inner_frames = null;
}
if (inner_frames != null && typeof(inner_frames) != 'undefined'){
for (var i = 0; i < inner_frames.length; i++) {
var curr_frame = inner_frames[i];
if (curr_frame && curr_frame.id){
if (curr_frame.id.startsWith("va_")){
return false;
}
}
}
} else{
return false;
}
}
var cr_cap = 1;
if (vimo.settings.cr_cap_history){
cr_cap = vimo.settings.cr_cap_history + 1
}
var params = "exp=8&nm=vimo_cr_cap_count&vl=" + escape(cr_cap);
vimo.preload.injectScript(vimo.utils.protocol() +'//srv.imonomy.com/cookies/create.js?' + params);
// set cookie
return true;
}
return false;
},
init_layer: function() {
vimo.layer.set_values();
vimo.layer.init_settings();
vimo.page.start = new Date().getTime();
}
};
vimo.tracker = {
host: "",
trackPrefix : 'track_',
trackPattern : new RegExp("track_[^\\s]+", "g"),
track_google: false,
track_container_type: null,
track_image_action: null,
track_url: "//srv.imonomy.com/action",
track_url_sid: "//srv.imonomy.com/action_sid",
session_id: null,
PartnerId: null,
full: false,
full_track_session: null,
perform_session: null,
reportBlackList: function(location, origin){
if (!vimo.tracker.blocked_reported){
vimo.tracker.blocked_reported = true;
if ((Math.random()*100) < 5) {
var unit_id = "988";
var blacklist_word = vimo.page.isContainsBlackListWord(true)
var unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/blocked?v=2&format=1&ai=' + unit_id + "&subid=4" + blacklist_word + "&cid="+location + "&ctxu=" + escape(window.location + '');
vimo.utils.issue_unit_request(unit_code_url);
}
}
},
reportNoneBlackList: function(){
if (!vimo.tracker.blocked_reported && vimo.page.WordChecker(vimo.settings.blacklist_sus_porn,false, false, true)){
vimo.tracker.blocked_reported = true;
if ((Math.random()*100) < 5) {
var blacklist_word = vimo.page.WordChecker(vimo.settings.blacklist_sus_porn,true, false, true)
var unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/reporter?v=2&format=1&ai=989&subid=' + blacklist_word;
vimo.utils.issue_unit_request(unit_code_url, undefined, true);
}
}
},
reportCompPresent: function(){
if (!vimo.tracker.comp_reported && vimo.settings.comp_words && vimo.page.WordChecker(vimo.settings.comp_words,false, false, true)){
vimo.tracker.comp_reported = true;
if ((Math.random()*100) < 20) {
var blacklist_word = vimo.page.WordChecker(vimo.settings.comp_words,true, false, true)
var unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/reporter?v=2&format=1&ai=989&subid=comp_' + blacklist_word;
vimo.utils.issue_unit_request(unit_code_url, undefined, true);
}
}
},
sessionId: function () {
if (vimo.tracker.session_id == null){
var session_id = vimo.utils.getCookie("sessionId");
if (typeof(session_id) != 'undefined' && session_id != null && session_id != ""){
vimo.tracker.session_id = session_id;
} else {
if (typeof(vimo.tracker.session_id) == 'undefined' || vimo.tracker.session_id == null){
var now = new Date()
vimo.tracker.session_id = Math.random() + now.getTime();
vimo.utils.setCookie("sessionId", vimo.tracker.session_id, null, '/');
}
}
}
return vimo.tracker.session_id;
},
isFullTrackSession: function(){
if (vimo.tracker.full_track_session == null){
vimo.tracker.full_track_session = vimo.utils.getCookie("full") == "true";
}
return vimo.tracker.full_track_session;
},
getOrSetFullTrackSession: function(){
return false;
if (vimo.tracker.full_track_session == null){
var full = vimo.utils.getCookie("full");
if (full == ""){
var random_mode = Math.random();
if (random_mode > 0.96){
full = "true";
} else{
full = "false";
}
vimo.utils.setCookie("full", full, null, '/');
}
vimo.tracker.full_track_session = full == "true";
vimo.tracker.full = vimo.tracker.full_track_session;
}
return vimo.tracker.full_track_session;
},
getOrSetPerformSession: function(){
return true;
if (vimo.tracker.perform_session == null){
var perform_cookie = vimo.utils.getCookie("perform");
var perform = true;
if (perform_cookie == ""){
if (typeof(vimo_demo_mode) == 'undefined' && typeof(vimo_no_ab_test_mode) == 'undefined' && vimo.tracker.getOrSetFullTrackSession()){
var random_mode = Math.random();
if (random_mode >= 0.5){
perform = false;
}
}
vimo.utils.setCookie("perform", perform, null, '/');
} else {
perform = perform_cookie == "true";
}
vimo.tracker.perform_session = perform;
}
return vimo.tracker.perform_session;
},
track: function (scenario, data, create_sid) {
if (typeof(data) == 'undefined'){
data = '';
}
if (typeof(create_sid) == 'undefined'){
create_sid = false;
}
scenario = vimo.tracker.trackPrefix + scenario;
var fixed_data = "&sid=" + vimo.tracker.sessionId() + "&bt=" + vimo.utils.browser.type() + "&ctxu=" + escape(window.location + '');
if (typeof(vimo.global_settings) != 'undefined'){
fixed_data = fixed_data + "&pid=" + vimo.layer.get_sid()
} else {
if (vimo.tracker.PartnerId != null){
fixed_data = fixed_data + "&pid=" + vimo.tracker.PartnerId
}
}
if (vimo.tracker.full){
fixed_data = fixed_data + "&full=true";
}
// inorder to know what was the container and the action while the scenario
if (vimo.tracker.track_container_type != null)
fixed_data = fixed_data + "&im_cnt=" + vimo.tracker.track_container_type;
if (vimo.tracker.track_image_action != null)
fixed_data = fixed_data + "&im_cnt=" + vimo.tracker.track_image_action;
if (vimo.tracker.track_google && typeof (_gaq) != 'undefined'){
if (data == '' || data == null || typeof(data) == 'undefined' ){
data = 'Click';
}
_gaq.push(['_trackEvent', scenario, data]);
}
var url = vimo.tracker.track_url;
if (create_sid){
url = vimo.tracker.track_url_sid;
}
if (url && url != '') {
source = vimo.tracker.host;
url += "?source=" + escape(source) + "&scenario=" + escape(scenario) + fixed_data + data;
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", url);
script.src = url;
if (document.body) {
document.body.appendChild(script);
}
}
},
track_element_internal: function(element, matches, track_outgoing){
var classesCombined = "";
if (matches != null) {
classesCombined = matches.join("|").replace(vimo.tracker.trackPrefix, "");
}
try {
var href = element.href;
if (href == null || href == "") {
href = window.location.href;
}
if (classesCombined != "") {
if (classesCombined.indexOf('#') > 0) {
var mySplitResult = classesCombined.split("#");
classesCombined = mySplitResult[0];
label = mySplitResult[1];
}
} else{
classesCombined = "link"
}
var data = 'Click';
if (track_outgoing){
should_track = true;
var dest_url = element.href;
var linkClass = element.className;
var linkHostname = element.hostname;
var host = window.location.host;
var is_outgoing = (linkHostname != host) ? "true" : "false";
data = "&ogl=" + is_outgoing + "&durl=" + escape(dest_url);
}
vimo.tracker.track(classesCombined, data);
} catch (e) { }
return true;
},
trackElement: function(element, track_outgoing){
var linkClass = element.className;
var linkHostname = element.hostname;
var host = window.location.host;
var should_track = false;
var matches = null;
if (linkClass != null && typeof(linkClass) != 'undefined'){
matches = linkClass.match(vimo.tracker.trackPattern);
// trck only out gooing links
if (matches != null || linkHostname != host) {
should_track = true;
}
}
if (typeof(track_outgoing) != 'undefined' && track_outgoing){
should_track = true;
}
if (should_track){
if (element.addEventListener) {
element.addEventListener('mousedown', function(e) {vimo.tracker.track_element_internal(element, matches, track_outgoing)}, false);
// Bad citizens.
} else if (element.attachEvent) {
element.attachEvent('onmousedown', function() {vimo.tracker.track_element_internal(element, matches, track_outgoing)});
} else{
element.onmousedown = function() {vimo.tracker.track_element_internal(element, matches, track_outgoing)};
}
}
},
trackLinks: function(jqElement, track_outgoing) {
var selector = null;
if (jqElement == null) {
var elements = document.getElementsByTagName("a");
for (var i = elements.length - 1; i >= 0; i--)
{
vimo.tracker.trackElement(elements[i], track_outgoing);
}
} else {
selector = jqElement;
selector.each(function () {
vimo.tracker.trackElement(this, track_outgoing);
});
}
}
};
vimo.page = {
stop_words : function () {return vimo.stop_words;},
servLogged: false,
version: 2,
getParameterByName: function(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
},
LogServ: function(){
return;
try{
if (vimo.page.servLogged){
return;
}
vimo.page.servLogged = true;
// log only 20%
if ((Math.random()*100) > 20){
return;
}
var please_test = ["googletagservices.com/tag/js/gpt.js", "/doubleclick/dartiframe.html", "google_unit_client","googletag.cmd", "truste.com", "visualrevenue.com", "lingospot.com", "itunes.apple.com" , "outbrain.com", "linkedin.com", "taboola.com", "gravity.com", "nrelate.com", "zedo.com", "wallstcheatsheet.com", "disqus.com", "addthis.com", "nr_related_placeholder"]
network_word = vimo.page.WordChecker(please_test,true, false, false);
var unit_id = "988";
if (network_word == false){
unit_id = "989";
network_word = "";
}
var unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/reporter?v=2&subid=' + network_word + '&format=1&ai=' + unit_id + "&ctxu=" + escape(document.location);
vimo.utils.issue_unit_request(unit_code_url, undefined, true);
} catch(e){}
},
should_track: null,
trackServ_groups: {},
trackServ: function(track_id, group, cid, sub_id, uid, is_locked, unit_format, tier, is_client, timetaken, is_trackable){
if (vimo.page.should_track == null){
vimo.page.should_track = true;
}
if (!vimo.page.should_track){
return;
}
try{
not_first = "false";
if (group){
if (group in vimo.page.trackServ_groups && !(vimo.layer.monitor_url)){
not_first = "true";
} else{
vimo.page.trackServ_groups[group] = "1";
}
}
if (!cid){
cid = "";
}
if (!sub_id){
sub_id = vimo.layer.get_sub_id();
if (!sub_id){
sub_id = "";
}
}
if (group == "shown" && vimo.settings.tracking_show_url && vimo.settings.tracking_show_url != ""){
//vimo.utils.injectScript(vimo.settings.tracking_show_url);
vimo.utils.injectImage(vimo.settings.tracking_show_url);
}
if (!unit_format){
unit_format = '0';
}
var unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/reporter?v=2&subid=' + sub_id + '&format=' + unit_format + '&ai=' + track_id + "&ctxu=" + escape(document.location)+'&fb=' + not_first + "&cid=" + cid + '&ab=' + vimo.ab_label + '&cbs=' + Math.random();
if (uid){
unit_code_url = unit_code_url + "&uid=" + uid;
}
if (is_locked) {
unit_code_url = unit_code_url + "&is_locked=" + is_locked;
}
if (is_trackable) {
unit_code_url = unit_code_url + "&istrk=" + is_trackable;
}
if (is_client){
unit_code_url = unit_code_url+"&is_client=true";
if(tier != undefined){unit_code_url = unit_code_url+"&tier="+tier}
}
vimo.utils.issue_unit_request(unit_code_url, undefined, true, sub_id);
} catch(e){}
},
WordChecker: function(check_list, return_word, return_count, should_split){
try{
if (typeof(check_list) == 'undefined' || check_list == null){
if (return_word){
return "check_list-na";
} else{
return false;
}
}
var counter = 0;
var splited_blacklist = check_list;
if (should_split){
var splited_blacklist = check_list.split(",");
}
var full_html = document.documentElement.outerHTML || new XMLSerializer().serializeToString(document.documentElement);
for (var i = 0; i < splited_blacklist.length; i++) {
var str = new RegExp("\\b" + splited_blacklist[i].replace("(", "\\(").replace(")", "\\)").replace(".", "\\.").replace("+", "\\+") + "\\b", "i");
if (str.test(full_html)){
if (return_count){
counter = counter + 1;
} else{
if (return_word){
return splited_blacklist[i];
} else {
return true;
}
}
}
}
if (return_count){
return counter;
} else{
if (return_word){
return "na";
} else{
return false;
}
}
} catch(e){
if (return_count){
return 1000;
} else{
if (return_word){
return "exception-w-" + e.message;;
} else {
return true;
}
}
}
},
host_blacklisted: null,
blacklisted: null,
isContainsBlackListWord: function(return_word){
try{
if (vimo.settings.blacklist){
if (vimo.page.host_blacklisted == null || return_word){
var location_black_words = ["xxx","porn", "fuck", "xvideo", "sex", "shemale","gangbang","blowjob","femdom","cougar","lesbian","boner","tranny", "nude", "bitch", "pussy", "swingers", "hentai", "horny", "playboy", "gloryhole", "cowgirl", "gonzo", "dogging", "naked", "teen"];
var host = document.location + "";
for (var i = 0; i < location_black_words.length; i++) {
var str = new RegExp(location_black_words[i].replace("(", "\\(").replace(".", "\\.").replace("+", "\\+"), "i");
if (str.test(host)){
vimo.page.host_blacklisted = true;
if (return_word){
return location_black_words[i]+"(d)";
} else {
return true;
}
}
}
var host_black_words = ['xxx', 'porn', 'fuck', 'xvideo', 'sex', 'shemale', 'gangbang', 'blowjob', 'femdom', 'cougar', 'lesbian', 'boner', 'tranny', 'nude', 'bitch', 'pussy', 'swingers', 'hentai', 'horny', 'playboy', 'gloryhole', 'cowgirl', 'gonzo', 'dogging', 'naked', 'xx', '69', 'teen', 'slut', 'gay', 'erotic', 'fetish', 'adult', 'escort', 'asain', 'erotik', 'spank', 'bbw', 'swing', 'erohtica', 'cock', 'busty', 'bdsm', 'babes', 'stripteas', 'naughty', 'seks', 'dominio', 'milf', 'stripper', 'putas', 'bang', 'cheating', 'hookup', 'amateur', 'nipple', 'panties', 'bondage', 'suck', 'hairy', 'boobs', 'whore', 'nudist'];
var host = document.location.host;
if (host && host != null){
for (var i = 0; i < host_black_words.length; i++) {
var str = new RegExp(host_black_words[i].replace("(", "\\(").replace(".", "\\.").replace("+", "\\+"), "i");
if (str.test(host)){
vimo.page.host_blacklisted = true;
if (return_word){
return host_black_words[i]+"(h)";
} else {
return true;
}
}
}
}
}
if (vimo.page.host_blacklisted && !return_word)
return vimo.page.host_blacklisted;
if (document.readyState === "complete" && !return_word){
if (vimo.page.blacklisted == null){
vimo.page.blacklisted = vimo.page.WordChecker(vimo.settings.blacklist,false, false, true);
}
return vimo.page.blacklisted;
}
return vimo.page.WordChecker(vimo.settings.blacklist,return_word, false, true);
} else{
return true;
}
if (return_word){
return "blacklist-na";
} else {
return false;
}
} catch(e){
if (return_word){
return "exception-b-" + e.message;
} else {
return true;
}
}
},
getElementsByClassNameIEWay: function(className, checkdoc){
// For IE
if (checkdoc.all) {
var allElements = checkdoc.all;
} else {
var allElements = checkdoc.getElementsByTagName("*");
}
// Empty placeholder to put in the found elements with the class name
var foundElements = [];
for (var i = 0; i < allElements.length; i++) {
if (allElements[i].className == className) {
foundElements[foundElements.length] = allElements[i];
}
}
return foundElements;
},
getElementsByClassName: function(className, checkdoc){
if (typeof(checkdoc) == 'undefined'){
checkdoc = document;
}
if (checkdoc.getElementsByClassName){
try{
return checkdoc.getElementsByClassName(className);
}catch(e){
return vimo.page.getElementsByClassNameIEWay(className, checkdoc)
}
} else {
return vimo.page.getElementsByClassNameIEWay(className, checkdoc)
}
},
title: function(){
if (vimo.site){
var site_title = vimo.site.title();
if (site_title != null){
return site_title;
}
}
var title_element = vimo.page.getElementsByClassName('firstHeading');
if (title_element != null && typeof (title_element) != 'undefined' && title_element.length > 0){
title_element = title_element[0].getElementsByTagName("span");
if (title_element != null && typeof (title_element) != 'undefined' && title_element.length > 0){
var title = title_element[0].innerHTML.toLowerCase();
title = title.replace("file:", "");
return title;
}
}
return document.title;
/*var title = "";
// if ('{ { title_selector } }' != "auto_select"){should send an error message
var title_element_for_check = $imoj(".post-title a, .entry-title a, .fw-title a, .blogHeader a");
if (typeof (title_element_for_check) != 'undefined' && title_element_for_check != null && title_element_for_check.length > 1){
for (var i = 0; i < title_element_for_check.length; ++i) {
if (title_element_for_check[i].href == vimo.page.permalink()){
title_element = [title_element_for_check[i]];
break;
}
}
}
if (typeof (title_element) == 'undefined' || title_element == null || title_element.length == 0 || title_element.length > 1){
title_element = $imoj(".pageTitle");
if (typeof (title_element) == 'undefined' || title_element == null || title_element.length == 0){
title_element = $imoj(".post-title, .entry-title, .fw-title, .blogHeader");
if (typeof (title_element) != 'undefined' && title_element != null && title_element.length > 1){
title_element = null;
}
if (typeof (title_element) == 'undefined' || title_element == null || title_element.length == 0){
h12_title_element = $imoj("h1:not(.w-header-text-container), h2:not(.w-header-text-container)");
if (typeof (h12_title_element) != 'undefined' || h12_title_element != null && h12_title_element.length > 0){
doc_title_text = document.title;
for (var i = 0; i < h12_title_element.length; ++i) {
var text = $imoj(h12_title_element[i]).text();
text= text.replace(String.fromCharCode(160), ' ');
if (doc_title_text.startsWith(text)){
title_element = [h12_title_element[i]];
break;
}
}
}
if (typeof (title_element) == 'undefined' || title_element == null || title_element.length == 0){
title_element = $imoj("h1:not(.w-header-text-container)");
if (typeof (title_element) == 'undefined' || title_element == null || title_element.length == 0 || title_element.length > 1){
title_element = null;
}
}
}
}
}
if (typeof (title_element) != 'undefined' && title_element != null && title_element.length > 0)
title = vimo.utils.clearText($imoj(title_element[0]).text());
else{
title = document.title;
}
return title*/
},
getHostName: function (url) {
var match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i);
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {
return match[2];
}
else {
return null;
}
},
domain: function(){
var domain = document.location.host;
domain = domain.replace("www.", "");
if ((domain == "" || domain == "tag.imonomy.com") && document.location.ancestorOrigins && document.location.ancestorOrigins.length > 0){
domain = vimo.page.getHostName(document.location.ancestorOrigins[0]);
}
return domain
},
checkValidContentToUse: function(content){
wordscount = content.split(" ").length;
if (wordscount > 3){
return true;
}
else if (wordscount == 1){
return false;
}
else {
content = content.toLowerCase()
if (content.indexOf("comment") > -1){
return false;
}
if (content.indexOf("share") > -1){
return false;
}
if (content.indexOf("most ") > -1){
return false;
}
if (content.indexOf("popular ") > -1){
return false;
}
if (content.indexOf("more from") > -1){
return false;
}
if (content.indexOf("trending") > -1){
return false;
}
if (content.indexOf(" now") > -1){
return false;
}
if (content.indexOf("today") > -1){
return false;
}
return true;
}
},
page_content: null,
content: function(){
if (vimo.page.page_content == null){
var content = ""
var content_element = null;
var elements = document.getElementsByTagName('h1');
if (elements.length == 1){
for (var i = 0; i < elements.length; ++i) {
var new_contnet = vimo.page.getText(elements[i]);
wordscount = new_contnet.split(" ").length;
if (wordscount > 3){
if (vimo.page.checkValidContentToUse(new_contnet)){
content = content + " " + new_contnet;
}
}
}
}
var elements = document.getElementsByTagName('h2');
if (elements.length < 5){
for (var i = 0; i < elements.length; ++i) {
var new_contnet = vimo.page.getText(elements[i]);
if (vimo.page.checkValidContentToUse(new_contnet)){
content = content + " " + new_contnet;
}
}
}
elements = document.getElementsByTagName('h3');
if (elements.length < 5){
for (var i = 0; i < elements.length; ++i) {
var new_contnet = vimo.page.getText(elements[i]);
if (vimo.page.checkValidContentToUse(new_contnet)){
content = content + " " + new_contnet;
}
}
}
if (content.length < 10){
elements = document.getElementsByTagName('b');
if (elements.length < 8){
for (var i = 0; i < elements.length; ++i) {
var new_contnet = vimo.page.getText(elements[i]);
if (vimo.page.checkValidContentToUse(new_contnet)){
content = content + " " + new_contnet;
}
}
}
}
if (content.length < 10){
elements = document.getElementsByTagName('strong');
if (elements.length < 8){
for (var i = 0; i < elements.length; ++i) {
var new_contnet = vimo.page.getText(elements[i]);
if (vimo.page.checkValidContentToUse(new_contnet)){
content = content + " " + new_contnet;
}
}
}
}
if (content.length < 4){
return content;
} else {
vimo.page.page_content = content.truncate(200);
}
}
return vimo.page.page_content;
},
metadata: function(name){
var category = null;
g_metadata = document.getElementsByTagName("meta");
var len = g_metadata.length;
for (var i = 0; i < len; i++) {
if (g_metadata[i].name.toLowerCase() == name) {
category = g_metadata[i].content.toLowerCase();
break;
}
}
return category
},
getText: function(element) {
var text = [];
var self = arguments.callee;
var el, els = element.childNodes;
var excluded = {
'noscript': 'noscript',
'script': 'script',
'select': 'select',
'option': 'option',
'textarea': 'textarea',
'style': 'style'
};
var bytes = 0;
/* If working with XML, add nodeType 4 to get text from CDATA nodes */
for (var i = 0, iLen = els.length; i < iLen; i++) {
el = els[i];
/* May need to add other node types here */
if (el.nodeType == 1 && !(el.tagName.toLowerCase() in excluded)) {
if (el.nodeName in {'#text':'','A':'', 'P':'','SPAN':'','OL':'','UL':'','LI':'','EM':'','B':'','STRONG':'','FONT':'','H1':'','H2':'','H3':'','H4':'','H5':'','CENTER':'','BLOCKQUOTE':'', 'I':''}){
text.push(self(el));
}
} else if (el.nodeType == 3) {
/* Deal with extra whitespace and returns in text here. */
text.push(el.data.replace(/\n/g, " "));
} else {
// text.push(el.data);
// writeLog(1,'getText: skip nt='+el.nodeType+' data=['+el.data+']');
}
}
return text.join('');
},
search_term: function(){
var host = vimo.page.domain();
if (host.indexOf("search.") > -1 || (document.location+"").indexOf("/search") > -1 || (document.location+"").indexOf("?q=") > -1 || (document.location+"").indexOf("&q=") > -1){
var q_val = vimo.page.getParameterByName("q");
if (q_val != null){
q_val = q_val.trim();
if (q_val.length > 0){
return q_val;
}
}
var input_element = document.getElementsByTagName("input");
if (input_element != null && typeof (input_element) != 'undefined' && input_element.length > 0){
for (var i = 0; i < input_element.length; i++) {
if (typeof (input_element[i]) != 'undefined'){
if ((input_element[i].type == "text" || input_element[i].type == "search")){
var search_term = input_element[i].value;
if (search_term.length > 0 && input_element[i].placeholder != search_term && input_element[i].defaultValue != search_term){
search_term = search_term.trim();
if (search_term.length > 0){
return search_term;
}
}
}
}
}
}
}
return null;
},
keywords: function(){
if (vimo.utils.keywords_words != null){
return vimo.utils.keywords_words;
}
var category = null;
var start_i = 0;
var category_element = null;
var auto_select = true;
var keywords = new Array();
var host = vimo.page.domain();
if (host.indexOf("youtube.com") > -1){
vimo.utils.keywords_words_usemeta = false;
}
var search_term = vimo.page.search_term();
if (search_term != null){
if (search_term.split(" ").length < 4){
keywords[keywords.length] = search_term;
}
search_term = search_term.replace(/\./g, " ").replace(/\;/g, " ").replace(/\:/g, " ").replace(/\,/g , " ").replace(/\?/g, " ").replace(/\-/g, " ").replace(/\(/g, " ").replace(/\)/g, " ").replace(/\"/g, " ")
// split text (" " "," "." ";" "?")
var search_term_words = search_term.split(" ");
// for each word check if in stop words
var stop_words = vimo.stop_words;
for (var j = 0; j < search_term_words.length; j++) {
if (stop_words.indexOf(search_term_words[j]) < 0){
keywords[keywords.length] = search_term;
}
}
return keywords.join(", ");
}
else if (host.indexOf("wikipedia") > -1){
category_element = vimo.page.getElementsByClassName('firstHeading');
if (category_element != null && typeof (category_element) != 'undefined' && category_element.length > 0){
category_element = category_element[0].getElementsByTagName("span");
if (category_element != null && typeof (category_element) != 'undefined' && category_element.length > 0){
keywords[keywords.length] = vimo.page.getText(category_element[0]).toLowerCase().replace("file:", "").replace(":", " ");
}
}
}
else if (host.indexOf("hotels.com") > -1){
hotel_container = vimo.page.getElementsByClassName('rd_hotel_header_container');
if (hotel_container != null && typeof (hotel_container) != 'undefined' && hotel_container.length > 0){
category_element = hotel_container[0].getElementsByTagName("h1");
if (category_element != null && typeof (category_element) != 'undefined' && category_element.length > 0){
keywords[keywords.length] = category_element[0].innerHTML.toLowerCase().replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/g," ");
}
}
}
else if (host.indexOf("pinterest.com") > -1){
var h1_elements = document.getElementsByTagName("h1");
if (h1_elements != null && typeof (h1_elements) != 'undefined' && h1_elements.length > 0){
for (var i = start_i; i < h1_elements.length; i++) {
if (typeof (h1_elements[i]) != 'undefined'){
var curr_word = h1_elements[i].innerHTML.toLowerCase();
if (keywords.indexOf(curr_word) < 0){
keywords[keywords.length] = curr_word;
}
}
}
}
var h3_elements = vimo.page.getElementsByClassName('boardName');
if (h3_elements != null && typeof (h3_elements) != 'undefined' && h3_elements.length > 0){
for (var i = start_i; i < h3_elements.length; i++) {
if (typeof (h3_elements[i]) != 'undefined'){
var curr_word = h3_elements[i].innerHTML.toLowerCase();
if (keywords.indexOf(curr_word) < 0){
keywords[keywords.length] = curr_word;
}
}
}
}
}
else{
var site_keywords = null;
if (vimo.site){
site_keywords = vimo.site.keywords();
}
if (site_keywords != null){
for (var i = 0; i < site_keywords.length; i++) {
var curr_word = site_keywords[i];
keywords[keywords.length] = curr_word;
}
} else{
if (category_element == null || typeof (category_element) == 'undefined' || category_element.length == 0){
category_element = vimo.page.getElementsByClassName('post-labels');
if (category_element == null || typeof (category_element) == 'undefined' || category_element.length == 0){
category_element = vimo.page.getElementsByClassName('tags');
if (category_element == null || typeof (category_element) == 'undefined' || category_element.length == 0){
category_element = vimo.page.getElementsByClassName('post-taglist');
}
}
if (category_element != null && typeof (category_element) != 'undefined' && category_element.length > 0){
category_element = category_element[0].getElementsByTagName("a");
}
}
if (category_element != null && typeof (category_element) != 'undefined' && category_element.length > 0){
for (var i = start_i; i < category_element.length; i++) {
if (typeof (category_element[i]) != 'undefined'){
var curr_word = vimo.page.getText(category_element[i]);
if (keywords.indexOf(curr_word) < 0){
keywords[keywords.length] = curr_word;
}
}
}
}
}
}
//category = vimo.page.clearText(category);
var max_keywords = 5;
if (keywords.length < max_keywords){
var text = "";
if (host.indexOf("wikipedia") > -1){
var bodyContent = document.getElementById("bodyContent");
if (bodyContent != null && typeof (bodyContent) != 'undefined'){
a_elements = bodyContent.getElementsByTagName("a");
if (a_elements != null && typeof (a_elements) != 'undefined' && a_elements.length > 0){
for (var i = start_i; i < a_elements.length; i++) {
if (typeof (a_elements[i]) != 'undefined'){
if (a_elements[i].href && a_elements[i].href.indexOf("#") == -1 && a_elements[i].href.indexOf("?") == -1 && a_elements[i].href.replace("://","").indexOf(":") == -1 && a_elements[i].href.indexOf("index.php") == -1 && a_elements[i].href.indexOf(document.location) == -1){
if (a_elements[i].innerHTML.indexOf("<") == -1){
text = text + " " + a_elements[i].innerHTML.toLowerCase();
}
}
}
}
}
}
}else if (host.indexOf("pinterest.com") > -1){
a_elements = vimo.page.getElementsByClassName("pinDescription");
if (a_elements != null && typeof (a_elements) != 'undefined' && a_elements.length > 0){
for (var i = start_i; i < a_elements.length; i++) {
if (typeof (a_elements[i]) != 'undefined'){
text = text + " " + a_elements[i].firstChild.nodeValue.toLowerCase();
}
}
}
} else{
// get title, metadescription, metakeyword, h2, container_text
var meata_keywords = "";
if (vimo.utils.keywords_words_usemeta){
meata_keywords = vimo.page.metadata("keywords");
}
var title = vimo.page.title();
var content = vimo.page.content();
var text = title + " " + content
if (meata_keywords != null){
text = text + " " + meata_keywords;
}
var meata_description = null;
if (vimo.utils.keywords_words_usemeta){
meata_description = vimo.page.metadata("description");
}
if (meata_description != null){
text = text + " " + meata_description;
}
}
text = text.replace(/\./g, " ").replace(/\;/g, " ").replace(/\n/g, " ").replace(/\:/g, " ").replace(/\,/g , " ").replace(/\?/g, " ").replace(/\-/g, " ").replace(/\(/g, " ").replace(/\)/g, " ").replace(/\"/g, " ")
// split text (" " "," "." ";" "?")
text = text.toLowerCase();
var words = text.split(" ");
// for each word check if in stop words
var stop_words = vimo.stop_words;
var start_pair = null;
match_dict = {}
for (var i = 0; i < words.length; i++) {
var word = words[i];
word = word.trim();
// if not in stop words
if (stop_words.indexOf(word) < 0){
// if already start pair
if (start_pair != null){
// make pair and add to dict +2 score
var pair = start_pair + " " + word
if (pair in match_dict){
match_dict[pair] += 1
}
else{
match_dict[pair] = 1.1
}
}
if (word in match_dict){
match_dict[word] += 1
}
else{
match_dict[word] = 1
}
start_pair = word
} else{
start_pair = null;
}
}
function sortObject(obj) {
var arr = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
arr.push({
'key': prop,
'value': obj[prop]
});
}
}
arr.sort(function(a, b) { return b.value - a.value; });
//arr.sort(function(a, b) { a.value.toLowerCase().localeCompare(b.value.toLowerCase()); }); //use this to sort as strings
return arr; // returns array
}
match_dict = sortObject(match_dict);
var words_check_count = max_keywords - keywords.length;
if (words_check_count > match_dict.length)
words_check_count = match_dict.length;
for (var i = 0; i < words_check_count; i++) {
var curr_word = match_dict[i].key;
if (curr_word.length > 1 && keywords.indexOf(curr_word) < 0){
keywords[keywords.length] = curr_word;
}
}
// sort dict
// take upto 5 keywords
// if all keywords has value 1 take only from title
}
vimo.utils.keywords_words = keywords.join(", ")
return vimo.utils.keywords_words;
}
};
vimo.utils = {
getUnitFormatLayout: function(unit_format) {
var unit_format_layout = "300x250";
if (unit_format && unit_format != "") {
if (unit_format == "1") unit_format_layout = "300x250";
else if (unit_format == "2") unit_format_layout = "468x60";
else if (unit_format == "3") unit_format_layout = "234x60";
else if (unit_format == "4") unit_format_layout = "600x95";
else if (unit_format == "5") unit_format_layout = "240x150";
else if (unit_format == "6") unit_format_layout = "728x90";
else if (unit_format == "7") unit_format_layout = "video";
else if (unit_format == "8") unit_format_layout = "320x50";
else unit_format_layout = unit_format;
}
return unit_format_layout;
},
get_client_ad: function(product, format, tier, cid){
if (!vimo.settings.is_client || !product || !format || !vimo.utils.is_client_valid(product)){return null;}
if(!tier){tier=0;}
try{
tier = parseInt(tier);
var chain = vimo.settings.client_chain;
var chain_format = vimo.utils.getUnitFormatLayout(format);
var ad_unit = chain[chain_format][product][tier];
var unit_data = JSON.parse(JSON.stringify(vimo.settings.client_ad_units_data[chain_format][ad_unit]));
unit_data.cid = cid;
unit_data.html = unit_data.html.replace("'$$va_next_tier$$'", tier+1);
unit_data.html = unit_data.html.replace("'$$current_tier$$'", tier);
unit_data.html = unit_data.html.replace("$$host_domain$$", 'srv.imonomy.com');
unit_data.html = unit_data.html.replace("%24%24cid%24%24", cid); // todo check if encoded or not
unit_data.html = unit_data.html.replace("%24%24location%24%24", escape(window.location));
return unit_data;
} catch (e){return null;}
},
is_client_valid: function(){
return vimo.settings.is_client
&& vimo.settings.client_chain
&& vimo.settings.client_ad_units_data
},
calcTimeDuration: function(){
if (vimo.preload){
var fromTime = vimo.preload.trackServe_time;
}else{
return 'null';
}
var toTime = new Date();
var resultInms = toTime - fromTime ;
if(resultInms !== undefined){
return resultInms;
}else{
return 'null';
}
},
getVideoByObjectData: function(optional_els){
var videos = [];
var words = ["acudeoplayer","videoPlayer","jwplayer","flowplayer","tremormedia.com"];
for (var i = 0; i < optional_els.length; i++) {
optional_el = optional_els[i];
if (optional_el){
var data = null;
if (optional_el.data){
data = optional_el.data;
} else{
if (optional_el.attributes["flashvars"]){
data = optional_el.attributes["flashvars"].value;
}
}
if (data != null){
for (var j = 0; j < words.length; j++) {
var word = words[j];
if (data.indexOf(word)>-1){
videos[videos.length] = optional_el;
continue;
}
}
}
}
}
return videos;
},
getVideoPlayers: function(){
optional_el = document.getElementsByTagName("object");
var video_el = vimo.utils.getVideoByObjectData(optional_el);
optional_el = document.getElementsByTagName("embed");
video_el = video_el.concat(vimo.utils.getVideoByObjectData(optional_el));
var html5_video = document.getElementsByTagName("video");
for (var i = 0; i < html5_video.length; i++) {
video_el[video_el.length] = html5_video[i];
}
var iframe_video = document.getElementsByTagName("iframe");
for (var i = 0; i < iframe_video.length; i++) {
var url = iframe_video[i].src;
if (typeof (url) != 'undefined' && url != null && url.length > 0){
if (url.indexOf("youtube.com/") != -1){
video_el[video_el.length] = iframe_video[i];
}
}
}
return video_el;
},
get_use_img: function(img){
var use_img = img;
if (img.tagName != "IMG"){
if (img.use_img){
use_img = img.use_img
} else{
var internal_images = img.getElementsByTagName("img");
if (internal_images.length == 1){
var internal_size = vimo.image._getImgSize(internal_images[0]);
if (internal_size[0] > 40 && internal_size[1] > 40){
use_img = internal_images[0];
}
} else if (internal_images.length > 1){
var max_size_img = 1;
var index_img = -1;
for (var i = 0; i < internal_images.length; i++) {
var internal_size = vimo.image._getImgSize(internal_images[i]);
var size_img = internal_size[0] * internal_size[1];
if (size_img > max_size_img) {
max_size_img = size_img;
index_img = i;
}
}
if (index_img > -1){
use_img = internal_images[index_img];
}
}
img.use_img = use_img;
}
}
return use_img;
},
isHomePage: function(){return document.location != null && (document.location.pathname == "/" || document.location.pathname == "/index.php") && document.location.search == "";},
getElementTopLeft: function(id) {
var size = vimo.image._getImgSize(id);
imgWidth = size[0]; imgHeight = size[1]; imgTop = size[2]; imgLeft = size[3]; imgPos = size[4];
return { top: imgTop, left: imgLeft };
},
keywords_words: null,
keywords_words_usemeta: true,
protocol: function(){
var protocol = "http:";
if (window.location != null){
protocol = window.location.protocol;
if (protocol.indexOf("http") < 0){
protocol = "https:"
}
}
return protocol;
},
isAdultContent: function(){return false;},
injectStyle: function(data) {
// fix ie bug with stylesheets
if (vimo.utils.isIE() && document.styleSheets && document.styleSheets.length > 30){
function getStyleSheet () {
var styleSheets = document.styleSheets;
for (var j = 0; j < styleSheets.length; j++){
var styleSheet = styleSheets[j];
if (styleSheet.cssText.length < 1000){
return styleSheet;
}
}
return null;
};
var styleSheet = getStyleSheet();
if (styleSheet != null){
styleSheet.cssText = styleSheet.cssText+ " " +data;
}
} else {
var s = document.createElement('style');
s.setAttribute('type', 'text/css');
if (s.styleSheet) { s.styleSheet.cssText = data; }
else {
var st = document.createTextNode(data);
s.appendChild(st); }
if (s) {
var e_s = document.getElementsByTagName('head');
if (e_s && e_s.length > 0) {
if (typeof(document) != 'undefined' && typeof(document.location) != 'undefined' && document.location.host == 'happilyblended.com'){
e_s = document.getElementsByTagName('style');
e_s[0].innerHTML = e_s[0].innerHTML + data;
} else{
e_s[0].appendChild(s);
}
}
}
}
},
setFrameCode: function(unit_code, unit_data, frame_container, frame, append_container, wrap_code, force_frame) {
var unit_format = unit_data.format;
var curr_test = unit_data.curr_test;
var cid = unit_data.cid;
var curr_tier = unit_data.curr_tier;
var curr_unit_id = unit_data.unit_id;
var origin_unit_code = unit_code;
var width = 301;
var height = 250;
if (unit_data.width){
width = unit_data.width;
}
if (unit_data.height){
height = unit_data.height;
}
if (unit_format == "600x95"){
width = 600;
height = 95;
}
else if (unit_format == "240x75"){
width = 240;
height = 75;
}
else if (unit_format == "240x150"){
width = 240;
height = 150;
}
else if (unit_format == "468x60"){
width = "100%";
height = 126;
}
/*if (console && console.time){
console.time(unit_data.u_id+unit_data.cid);
}*/
if (vimo.layer.test_iframe_mode()){
if (origin_unit_code != null) {
if (origin_unit_code.length > 0 && origin_unit_code.startsWith(":eval:")){
origin_unit_code = origin_unit_code.replace(":eval:", "")
eval(origin_unit_code);
}
else if(origin_unit_code.indexOf(" -1 || force_frame){
// set fallback information
var location_encoded = document.location + "";
location_encoded = location_encoded.replace(/'/g, " ");
var next_tier = "1";
if (curr_tier){
next_tier = (curr_tier+1).toString()
}
var unit_code = "" +
"var w = window; w.va_terms = '';" +
"w.va_keywords = '" + vimo.page.keywords().replace(/'/g, " ") + "';" +
"w.va_sid = '" + vimo.layer.get_sid() + "';" +
"w.va_isps = " + vimo.layer.shopping_site() +";" +
"w.va_time_preload = '" + vimo.preload.trackServe_time +"';" +
"w.va_allow_ttkaen = '" + vimo.settings.time_taken +"';" +
"w.va_sum_ttkan_fromX = 0;" +
"w.va_x_taken = new Date();" +
"w.va_format = '" + unit_format + "';" +
"w.va_use_frame = true;" +
"w.va_cid = '" + cid + "';" +
"w.va_next_tier = " + next_tier + ";" +
"w.va_curr_test = " + curr_test + ";" +
"w.va_url = '" + location_encoded +"';" +
"w.va_domain = '" + vimo.page.domain() +"';" +
"w.va_title = '" + document.title.replace(/'/g, " ") +"';" +
"w.va_ref = '" + document.referrer.replace(/'/g, " ") +"';";
if (vimo.settings&& vimo.settings.quality_type){
unit_code = unit_code + "w.va_quality_type = '"+vimo.settings.quality_type+"';";
}
if (vimo.settings&& vimo.settings.unit_wait_for_onload){
unit_code = unit_code + "w.va_waitforload = "+vimo.settings.unit_wait_for_onload+";";
}
if (vimo.preload){
if (vimo.preload.over_cap){
unit_code = unit_code + "w.va_over_cap = true;";
} else{
unit_code = unit_code + "w.va_over_cap = false;";
}
}
var sub_id = '';
if (frame_container.sub_id != undefined){
sub_id = frame_container.sub_id;
} else {
sub_id = vimo.layer.get_sub_id();
}
if (sub_id != '' && sub_id != undefined){
unit_code = unit_code + "w.va_subid = '" + sub_id + "';";
}
var unit_marker = vimo.layer.unit_marker();
if (unit_marker != ''){
unit_code = unit_code + "w.va_unit_marker = '" + unit_marker + "';";
}
if (vimo.settings.shopping_agresive && vimo.layer.shopping_site()){
unit_code = unit_code + "w.va_xtra_info = '12';";
}
if (vimo.preload && vimo.preload.search_term_to_use != null){
unit_code = unit_code + "w.va_serach_terms = '" + vimo.preload.search_term_to_use + "';"
}
if (curr_unit_id && curr_unit_id != null){
unit_code = unit_code + "w.va_curr_unit_id = '" + curr_unit_id +"';"
}
unit_code = unit_code + "w.va_image = true;" +
"" + origin_unit_code
var unit_filer_code = "";
if (unit_data.unit_filler){
// style is added as fast a workaround
if (unit_data.width == 320){
unit_filer_code = "";
}
unit_filer_code += unit_data.unit_filler.ad_code;
}
unit_code = unit_code.replace(/\$\$va_format\$\$/g, unit_format);
unit_code = unit_code.replace(/\$\$unit_filler_ad\$\$/g, unit_filer_code);
unit_code = unit_code.replace(/\$\$va_terms\$\$/g, vimo.page.keywords().replace(/'/g, " "));
if (vimo.preload && vimo.preload.search_term_to_use != null){
unit_code = unit_code.replace(/\$\$va_search_terms\$\$/g, vimo.preload.search_term_to_use);
unit_code = unit_code.replace(/%24%24va_search_terms%24%24/g, vimo.preload.search_term_to_use);
} else{
unit_code = unit_code.replace(/\$\$va_search_terms\$\$/g, vimo.page.keywords().replace(/'/g, " "));
unit_code = unit_code.replace(/%24%24va_search_terms%24%24/g, vimo.page.keywords().replace(/'/g, " "));
}
unit_code = unit_code.replace(/\$\$va_keywords\$\$/g, vimo.page.keywords().replace(/'/g, " "));
unit_code = unit_code.replace(/\$\$va_sid\$\$/g, vimo.layer.get_sid());
unit_code = unit_code.replace(/\$\$va_url\$\$/g, escape(document.location));
unit_code = unit_code.replace(/\$\$va_domain\$\$/g, escape(vimo.page.domain()));
unit_code = unit_code.replace(/\$\$va_title\$\$/g, document.title.replace(/'/g, " "));
unit_code = unit_code.replace(/\$\$va_cid\$\$/g, cid);
unit_code = unit_code.replace(/\$\$va_image\$\$/g, "true");
var next_tier = "1";
if (vimo.settings.curr_tier){
next_tier = (vimo.settings.curr_tier+1).toString()
}
unit_code = unit_code.replace(/\$\va_next_tier\$\$/g, next_tier);
unit_code = unit_code.replace(/\$\va_curr_test\$\$/g, curr_test);
if (curr_unit_id && curr_unit_id != null){
unit_code = unit_code.replace(/\$\$va_curr_unit_id\$\$/g, curr_unit_id);
} else{
unit_code = unit_code.replace(/\$\$va_curr_unit_id\$\$/g, "");
}
if (wrap_code){
unit_code = ""+unit_code +""
}
//vimo.layer.layer_width = width+10; bug with location of tip
//vimo.layer.layer_height = height+39;
if (frame == null){
frame = document.createElement('iframe');
if (frame.watch){
frame.watch('src',vimo_prevent_change);
}
if(frame_container.className == "vimo_footer"){
frame.className = 'footer_frame';
}else{
frame.className = 'flip_frame';
}
frame_container.appendChild(frame);
}
vimo.layer.set_iframe(frame, unit_code, width, height);
} else {
if (origin_unit_code != null && origin_unit_code.length > 0){
if (append_container){
var container_div = document.createElement('div');
container_div.className = "fyva_container";
container_div.innerHTML = origin_unit_code;
frame_container.appendChild(container_div);
} else{
frame_container.innerHTML = origin_unit_code;
}
}
}
}
} else{
var curr_unit_id = null;
if (window.va_curr_unit_id){
curr_unit_id = window.va_curr_unit_id;
}
if (curr_unit_id != 993 && curr_unit_id != 999 && curr_unit_id != 998 && curr_unit_id != 997 && curr_unit_id != 994){
var params = '';
var tr = "0";
if (origin_unit_code != null && origin_unit_code.length > 0){
// = document.getElementById("vimo_layer_frame_c")
if (origin_unit_code.startsWith(":eval:")){
origin_unit_code = origin_unit_code.replace(":eval:", "")
eval(origin_unit_code);
return;
}
}
var sub_id = vimo.layer.get_sub_id();
var sub_id_str = "";
if (sub_id != ''){
sub_id_str = "&subid=" + sub_id;
}
var unit_marker = vimo.layer.unit_marker();
if (unit_marker != ''){
sub_id_str = sub_id_str + "&um=" + unit_marker;
}
var unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/serve?rf=framede&format=' + unit_format +'&img=true&tr=' + tr + '&sid=' + vimo.layer.get_sid() + '&cid=' + cid + '&isps=' + vimo.layer.shopping_site() + '&terms=' + escape(vimo.page.keywords().replace(/'/g, " ")) + '&keywords='+escape(vimo.page.keywords())+'&dm=' + escape(vimo.page.domain()) + '&ttl=' + document.title.replace(/'/g, " ") + sub_id_str;
if (curr_unit_id != null){
unit_code_url = unit_code_url + '&uid=' + curr_unit_id;
}
if (frame == null){
frame = document.createElement('iframe');
frame.className = 'flip_frame';
frame_container.appendChild(frame);
}
//ifrm = document.getElementById("vimo_layer_frame")
vimo.layer.set_iframe(frame, null, width, height);
frame.setAttribute("src", unit_code_url);
if (frame.watch){
frame.watch('src',vimo_prevent_change);
}
}
}
},
setCookie: function(c_name,value,exmilisec, path, cross_domain) {
var exdate= null;
if (exmilisec != null){
exdate=new Date();
exdate.setTime(exdate.getTime() + exmilisec);
}
var c_value=escape(value) + ((exmilisec==null) ? "" : "; expires="+exdate.toUTCString())+ ((path==null || typeof(path) == 'undefined') ? "" : "; path="+path);
document.cookie=c_name + "=" + c_value;
if (cross_domain){
var exmin = exmilisec/1000/60;
var params = "exp="+exmin+"&ap=false&nm="+c_name+"&vl=" + escape(value);
vimo.preload.injectScript(vimo.utils.protocol() +'//srv.imonomy.com/cookies/create.js?' + params);
}
},
getCookie : function(c_name) {
if (document.cookie.length > 0) {
var c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1) {
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start, c_end));
}
}
return "";
},
browser : {
browser_type: "",
version_id: "",
type: function(){
if (this.browser_type == "")
this.browser_type = this.searchString(this.dataBrowser) || "Unknown-Browser";
return this.browser_type;
},
version: function(){
if (this.version_id == "")
this.version_id = this.searchVersion(navigator.userAgent)
|| this.searchVersion(navigator.appVersion);
return this.version_id;
},
searchString: function(data) {
for (var i = 0; i < data.length; i++) {
var dataString = data[i].string;
var dataProp = data[i].prop;
this.versionSearchString = data[i].versionSearch || data[i].identity;
if (dataString) {
if (dataString.indexOf(data[i].subString) != -1)
return data[i].identity;
}
else if (dataProp)
return data[i].identity;
}
},
searchVersion: function(dataString) {
var index = dataString.indexOf(this.versionSearchString);
if (index == -1) {
index = dataString.indexOf("rv"); // for IE 11 version search
if (index == -1) return;
return parseFloat(dataString.substring(index + 3)); // 3 represnt the length of the string "rv" + 1
}
return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
},
dataBrowser: [
{
string: navigator.vendor,
subString: "Apple",
identity: "Safari"
},
{
prop: window.opera,
identity: "Opera"
},
{
string: navigator.userAgent,
subString: "Firefox",
identity: "Firefox"
},
{
string: navigator.userAgent,
subString: "MSIE",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Trident",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Chrome",
identity: "Chrome"
}
]
},
isRTL: function (){
styleProp = 'direction';
el = 'vimo_layer';
var x = document.getElementById(el) || document.body;
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y == 'rtl';
},
isIE: function(){
return vimo.utils.browser.type() == "Explorer";
},
isAndroid: function() {
return navigator.userAgent.match(/Android/i);
},
isBlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
isiOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
isOperaMobile: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
isWindowsMobile: function() {
return navigator.userAgent.match(/IEMobile/i);
},
isMobile: function() {
return (vimo.utils.isAndroid() || vimo.utils.isBlackBerry() || vimo.utils.isiOS() || vimo.utils.isOperaMobile() || vimo.utils.isWindowsMobile());
},
hasClass: function(el, cssClass, check_parent) {
var has_class = el.className && new RegExp("(^|\\s)" + cssClass + "(\\s|$)").test(el.className);
if (!has_class && check_parent && el.parentNode){
has_class = vimo.utils.hasClass(el.parentNode, cssClass, check_parent);
}
return has_class;
},
isDescendantFromId: function(el, id) {
var has_id = el.id == id;
if (!has_id && el.parentNode){
has_id = vimo.utils.isDescendantFromId(el.parentNode, id);
}
return has_id;
},
unbind: function (event, action, element) {
if (element == null){
return;
}
if (element.removeEventListener) {
element.removeEventListener(event, action, false);
// Bad citizens.
} else if (element.detachEvent) {
element.detachEvent('on'+event, action);
} else{
if (event == 'mousedown'){
element.onmousedown = null;
} else if (event == 'mouseenter'){
element.onmouseenter = null;
} else if (event == 'mouseleave'){
element.onmouseleave = null;
} else if (event == 'mouseout'){
element.onmouseout = null;
} else if (event == 'mouseover'){
element.omouseover = null;
}
}
},
bind: function (event, action, element) {
if (element == null){
return;
}
var action_func = null;
if (event == 'mouseenter' || event == 'mouseover'){
action_func = function(){action(element)};
} else if (event == 'mouseleave' || event == 'mouseout'){
action_func = function(e){action(e, element)};
} else {
action_func = action
}
if (element.addEventListener) {
element.addEventListener(event, action_func, false);
// Bad citizens.
} else if (element.attachEvent) {
element.attachEvent('on'+event, action_func);
} else{
if (event == 'mousedown'){
element.onmousedown = action_func;
} else if (event == 'mouseenter'){
element.onmouseenter = action_func;
} else if (event == 'mouseleave'){
element.onmouseleave = action_func;
} else if (event == 'mouseout'){
element.onmouseout = action_func;
} else if (event == 'mouseover'){
element.omouseover = action_func;
}
}
},
easing: {
linear: function(progress) {
return progress;
},
quadratic: function(progress) {
return Math.pow(progress, 2);
},
swing: function(progress) {
return 0.5 - Math.cos(progress * Math.PI) / 2;
},
circ: function(progress) {
return 1 - Math.sin(Math.acos(progress));
},
back: function(progress, x) {
return Math.pow(progress, 2) * ((x + 1) * progress - x);
},
bounce: function(progress) {
for (var a = 0, b = 1, result; 1; a += b, b /= 2) {
if (progress >= (7 - 4 * a) / 11) {
return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2);
}
}
},
elastic: function(progress, x) {
return Math.pow(2, 10 * (progress - 1)) * Math.cos(20 * Math.PI * x / 3 * progress);
}
},
animate_interval: function(options, start) {
var timePassed = new Date - start;
if (typeof(options.duration) == 'undefined'){
return;
}
var progress = timePassed / options.duration;
if (progress > 1 || progress == Number.NaN || typeof(progress) == 'undefined') {
progress = 1;
} else if (progress < 1){
} else{
progress = 1;
}
options.progress = progress;
options.counter = options.counter + 1;
var delta = options.delta(progress);
// other action (fadeIn/fadeOut) started
if (delta == -999999){
return;
}
options.step(delta);
if (progress == 1) {
options.complete();
} else{
if (options.counter < 2000){
setTimeout(function() { vimo.utils.animate_interval(options, start)}, options.delay || 10);
} else{
// bug
}
}
},
animate_internal: function(options) {
var start = new Date;
options.counter = 1;
setTimeout(function() {vimo.utils.animate_interval(options, start)}, options.delay || 10);
/*var id = setInterval(function() {
var timePassed = new Date - start;
var progress = timePassed / options.duration;
if (progress > 1) {
progress = 1;
}
options.progress = progress;
var delta = options.delta(progress);
options.step(delta);
if (progress == 1) {
clearInterval(id);
options.complete();
}
}, options.delay || 10);*/
},
animate_left: function(element, from_location, to_location, time) {
options = {
duration: time,
complete: function() {
}};
var to = (to_location - from_location) > 0 ? 1 : 0
vimo.utils.animate_internal({
duration: options.duration,
delta: function(progress) {
//progress = this.progress;
return vimo.utils.easing.swing(progress);
},
complete: options.complete,
step: function(delta) {
if (from_location < 0){
delta = delta * -1;
}
element.style.left = (from_location + (delta * (from_location - to_location))) + 'px';
}
});
},
animate_right: function(element, from_location, to_location, time) {
options = {
duration: time,
complete: function() {
}};
var to = (to_location - from_location) > 0 ? 1 : 0
vimo.utils.animate_internal({
duration: options.duration,
delta: function(progress) {
//progress = this.progress;
return vimo.utils.easing.swing(progress);
},
complete: options.complete,
step: function(delta) {
element.style.right = (from_location + (delta * (to_location - from_location))) + 'px';
}
});
},
elements_action: {},
fadeOut: function(element, options) {
// need to find a way to tell the fadeIn to stop action
vimo.utils.elements_action[element] = "fadeOut";
if (options == "fast")
options = {
duration: 300,
complete: function() {
}};
if (options == "normal")
options = {
duration: 800,
complete: function() {
}};
var to = 1;
vimo.utils.animate_internal({
duration: options.duration,
delta: function(progress) {
if (vimo.utils.elements_action[element] != "fadeOut"){
return -999999;
}
//progress = this.progress;
return vimo.utils.easing.swing(progress);
},
complete: options.complete,
step: function(delta) {
element.style.opacity = to - delta;
if (element.style.opacity == 0){
element.style.display = "none";
}
}
});
},
fadeIn: function(element, options, complete) {
// need to find a way to tell the fadeOut to stop action
vimo.utils.elements_action[element] = "fadeIn";
element.style.opacity = 0;
if (element.style.display == "none"){
element.style.display = "block";
}
var to = 0;
if (options == "fast")
options = {
duration: 300,
complete: function() {
if (complete){
complete();
}
}};
if (options == "normal")
options = {
duration: 800,
complete: function() {
if (complete){
complete();
}
}};
vimo.utils.animate_internal({
duration: options.duration,
delta: function(progress) {
if (vimo.utils.elements_action[element] != "fadeIn"){
return -999999;
}
//progress = this.progress;
return vimo.utils.easing.swing(progress);
},
complete: options.complete,
step: function(delta) {
element.style.opacity = to + delta;
}
});
},
getDocHeight: function () {
var D = document;
return Math.max(
D.body.scrollHeight, D.documentElement.scrollHeight,
D.body.offsetHeight, D.documentElement.offsetHeight,
D.body.clientHeight, D.documentElement.clientHeight
); },
getHeight: function () {
//var body = document.body,
// html = document.documentElement;
if (window.innerHeight){
return window.innerHeight
} else{
return document.body.clientHeight;
}
//Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight)
},
getWidth: function () {
var d = document,
m = "clientWidth";
return Math.max(d.documentElement[m], d.body[m]) || 0
},
getScrollTop: function () {
var d = document,
m = "scrollTop";
return window.pageYOffset || d.documentElement[m] || d.body[m] || 0
},
getScrollLeft: function () {
var d = document,
m = "scrollLeft";
return window.pageXOffset || d.documentElement[m] || d.body[m] || 0
},
issue_unit_request: function(base_url, unit_cap, use_image, sub_id) {
if (document.location.search.indexOf("noserve") > -1){
return;
}
var params = (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));
if (document.context) {
params = params + "&context=" + escape(document.context);
}
if(vimo.settings && vimo.settings.time_taken){
var timetaken = vimo.utils.calcTimeDuration();
if (timetaken){
var preload_base = parseInt(vimo.preload.trackServe_time);
var request_base = new Date().getTime();
var base_result = request_base - preload_base;
params = params + "&timepreload=" + preload_base + "&ptaken=" + base_result + "&ttaken=" + timetaken + "&ttkan_x=0&sum_ttkan_x=0";
}
}
if (vimo.preload){
params = params + "&ttl=" + escape(vimo.preload.title());
}
if (document.referrer){
params = params + "&referer=" + escape(document.referrer);
}
if (vimo.settings&& vimo.settings.quality_type){
params = params + "&cqt=" + vimo.settings.quality_type;
}
if (sub_id == undefined){
sub_id = vimo.layer.get_sub_id();
}
var sub_id_str = "";
if (sub_id != ''){
sub_id_str = "&subid=" + sub_id;
}
params = params + "&ln=" + vimo.layer.language();
params = params + "&ct=" + vimo.layer.connectionType();
params = params + "&w=" + vimo.layer.w;
params = params + "&h=" + vimo.layer.h;
params = params + "&pxr=" + vimo.layer.pxr;
params = params + "&ppi=" + vimo.layer.ppi();
if (!vimo.settings || !vimo.settings.whitelist_site){
var is_adult = vimo.page.isContainsBlackListWord();
if (is_adult){
params = params + "&adl=true";
}
}
var unit_marker = vimo.layer.unit_marker();
if (unit_marker != ''){
sub_id_str = sub_id_str + "&um=" + unit_marker;
}
params = params + "&loc=" + escape(window.location) + "&dm=" + escape(window.location.host)+sub_id_str;
if (window.viimo_req){
try{
params = params + "&rtbreq=" + escape(window.viimo_req);
} catch(e){}
}
var search_term = ""
if (vimo.preload && vimo.preload.search_term_to_use && vimo.preload.search_term_to_use != null){
search_term = "&st=" + vimo.preload.search_term_to_use;
}
var over_cap = "";
if (vimo.preload){
if (vimo.preload.over_cap){
over_cap = "&oc=true";
}
}
var referrer_param = ""
var referrer_match = document.referrer.match('http[s]?://([a-zA-Z0-9-_\.]+)(:[0-9]+)?');
var referrer_host = null;
if (referrer_match && referrer_match != null){
referrer_host = referrer_match[1];
referrer_host = referrer_host.replace("www.", "")
}
if (referrer_host != null){
referrer_param = "&dr=" + referrer_host;
}
var httpsite = "false";
if(location.protocol == "https:"){
httpsite = "true";
}
unit_code_url = base_url + '&sid=' + vimo.layer.get_sid() + '&terms=' + escape(vimo.page.keywords().replace(/'/g, " ")) + '&httpsite='+httpsite+ '&keywords='+escape(vimo.page.keywords())+'&dm=' + escape(vimo.page.domain()) + search_term + over_cap + referrer_param+ params;
if (use_image){
unit_code_url = unit_code_url + "&rim=true"
vimo.utils.injectImage(unit_code_url);
} else {
vimo.utils.injectScript(unit_code_url);
}
},
injectScript: function(url, onload) {
setTimeout(function(){
var script = document.createElement('sc' + 'ript');
script.async = true;
script.setAttribute('type', 'text/jav' + 'ascri' + 'pt');
script.type = 'text/jav' + 'ascri' + 'pt';
script.src = url;
if (onload){
vimo.utils.bind('load', onload, script);
}
if (document.body) {
document.body.appendChild(script);
} else {
var hs = document.getElementsByTagName('head');
if (hs && hs.length > 0) {
var h = hs[0]
h.appendChild(script);
}
}
}, 0);
},
injectImage: function(url){
var img = document.createElement("img");
img.setAttribute('src',url);
img.setAttribute('width','0px');
img.setAttribute('height','0px');
img.setAttribute('style', 'display: none; position:absolute;');
img.className = 'vimo_trk_img';
document.body.appendChild(img);
}
};
//////
// inpage
vimo.inPage = {
window: function(){
try{
window.top.document;
return window.top;
}catch(e){
return window;
}
},
allow: false,
execute: function(){
if (vimo.settings.manipulate_settings){
vimo.settings.manipulate_settings();
}
if (!vimo.inPage.allow || !window.viimo_inpage_setup){
return;
}
//disabled view tracking
if(vimo.settings.inpage_disabled_view_tracking) {
vimo.settings.inpage_disabled_view_tracking = false;
vimo.page.trackServ(990, "imp", 1, undefined, undefined, false);
}
if (vimo.settings.validate_blacklist){
if (vimo.page.isContainsBlackListWord()){
vimo.tracker.reportBlackList("init", "");
try{
if (window.vimo_content_no_fill){
window.vimo_content_no_fill('');
} else if (vimo.inPage.window().vimo_content_no_fill){
vimo.inPage.window().vimo_content_no_fill('');
}
} catch (e) { }
return;
} else{
vimo.tracker.reportNoneBlackList();
}
}
for (var i = 0; i < window.viimo_inpage_setup.length; i++) {
var setup = window.viimo_inpage_setup[i];
if (!setup.handled){
setup.handled = true;
vimo.inPage.request_hook_inpage_action(document.getElementById(setup.element_id),setup.format, false, undefined, setup.use_rtb_direct, setup);
}
}
},
request_hook: [],
request_refresh: function(st, suffix){
var img = st;
if (st.refresh_requested){
return;
}
st.refresh_requested = true;
vimo.layer.generic_refresh_counter += 1;
// this hsould be call after the current ad was shown (shown is counter only after 5 sec of shown)
if ((vimo.layer.generic_refresh_counter < vimo.settings.generic_refresh_count) || st.requested_on_noshow) {
st.requested_on_noshow = false;
vimo.inPage.request_hook_inpage_action(st, st.unit_format, true, suffix);
}
},
refresh_replace_on_content_ready: function(st){
var is_loaded = vimo.layer.checkIframeContent(st.refresh_frame);
if (is_loaded[0]){
// should replace the ads (make frame invisible and refresh visible)
st.inpage_frame.style.display = 'none';
st.inpage_frame = st.refresh_frame;
st.inpage_frame.style.display = vimo.settings.default_display;
st.inpage_frame.style.visibility = 'visible';
st.refresh_requested = false;
st.is_inpage_content_loaded = undefined;
} else {
setTimeout(function() {
vimo.layer.productCounter[st.product][st.index]= parseInt(vimo.layer.productCounter[st.product][st.index]) + 1;
vimo.inPage.refresh_replace_on_content_ready(st);
}, 400);
}
},
request_rtb_callback: function(ads){
var container_index = 0;
var unit_data = [];
var index = 0;
if (ads && 'ads' in ads && ads['ads'].length > 0){
// inject ad
var ad_data = ads['ads'][0];
container_index = ad_data["placementCode"];
unit_data = {
validate_blacklist: false,
html: ad_data["ad"],
format : ad_data["width"] + 'x' + ad_data["width"],
width : ad_data["width"],
height : ad_data["height"],
cid: "inpage_rtb",
unit_filler: undefined,
pricing_model: "cpm",
is_content_recommendation: false
};
index = 0;
} else {
// call passback;
if (window.viimo_inpage_setup[container_index].passback_function){
window.viimo_inpage_setup[container_index].passback_function();
return
} else if (window.viimo_inpage_setup[container_index].passback_html){
var format = window.viimo_inpage_setup[container_index].format;
unit_sizes = format.split('x')
unit_data = {
validate_blacklist: false,
html: window.viimo_inpage_setup[container_index].passback_html,
format : format,
width : unit_sizes[0],
height : unit_sizes[1],
cid: "inpage_rtb",
unit_filler: undefined,
pricing_model: "cpm",
is_content_recommendation: false
};
} else{
return
}
}
vimo.inPage.hook_inPage_action(index, unit_data, false, container_index);
},
guid: function(len) {
var buf = [],
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
charlen = chars.length,
length = len || 32;
for (var i = 0; i < length; i++) {
buf[i] = chars.charAt(Math.floor(Math.random() * charlen));
}
return buf.join('');
},
request_hook_inpage_action: function(container_element, unit_format, is_refresh, suffix, use_rtb_direct, setup, tier, cid, product){
var container_index = vimo.inPage.request_hook.length;
vimo.inPage.request_hook[container_index] = container_element;
if (product == undefined){
if (setup && setup.product){
product = setup.product;
} else {
product = 'inpage';
}
}
//auto passback variables
if(!vimo.layer.inPageAutopass_inited){
vimo.layer.elementsCounter[product] = [];
vimo.layer.productCounter[product] = [];
vimo.layer.inPageAutopass_inited = true;
}
vimo.layer.elementsCounter[product][container_index] = 0;
vimo.layer.productCounter[product][container_index] = 0;
if (cid == undefined){
cid = "vimo_"+ product;
}
if (unit_format == null){
return;
}
if (is_refresh){
cid = cid + "_rf";
}
if (suffix){
cid = cid + suffix;
}
container_element.cid = cid;
if (setup){
container_element.sub_id = setup.sub_id;
}
var ab_label = "&ab=";
if (vimo.ab_label) ab_label += vimo.ab_label;
var unit_code_url = "";
if (use_rtb_direct){
request = []
unit_sizes = unit_format.split('x')
request_id = vimo.inPage.guid();
bidderRequestId = '11'
if (!setup.bid_floor){
setup.bid_floor = 0;
}
bids = [{
"sizes": [
[
unit_sizes[0],
unit_sizes[1]
]
],
"bidfloor": setup.bid_floor,
"rtkid": "47375",
"adtgid": "14567721976",
"devices": [
"*"
],
"placementCode": container_index,
"params": {
"publisher_id": vimo.layer.get_sid()
},
"adapter_tag_id": vimo.layer.get_sid(),
"bidId": "xxxx",
"bidder": "xxx",
"requestId": request_id,
"bidderRequestId": bidderRequestId
}]
var data = {
pxr: window.devicePixelRatio,
page: window.location.href,
domain: vimo.page.domain(),
siteRef: document.referrer,
screen_w: vimo.layer.w,
screen_h: vimo.layer.h,
language: vimo.layer.language(),
keywords: vimo.page.keywords(),
connectiontype: vimo.layer.connectionType(),
requestId: request_id,
bidderRequestId: bidderRequestId,
callback: 'vimo.inPage.request_rtb_callback',
publisher_id: vimo.layer.get_sid(),
bids: encodeURIComponent(JSON.stringify(bids))
};
imonomy_domain = window.viimo_domain; // should be replaced
var protocol = (document.location.protocol === 'https:') ? 'https' : 'http';
request.unshift(protocol + '://' + imonomy_domain + '/openrtb/hb/' + vimo.layer.get_sid() + '?id=' + request_id);
for (var key in data) {
if (data.hasOwnProperty(key)) {
request.push(key + '=' + encodeURIComponent(data[key]));
}
}
unit_code_url = request.join('&')
} else {
unit_code_url = vimo.utils.protocol() +'//srv.imonomy.com/internal/serve?v=2&format=' + unit_format + '&img=true&cid=' + cid + ab_label + '&isps=' + vimo.layer.shopping_site() + '&rdn=vimo_image_$$fid$$&fid=' + container_index +'&cb=vimo.inPage.hook_inPage_action($$fid$$, vimo_image_$$fid$$, ' + is_refresh + ', '+ container_index + ', "' + product+'")';
}
var one_request_obj = {
"unit_format": unit_format,
"cid": cid,
"fid": container_index
};
container_element.unit_format = unit_format;
if(vimo.settings.one_request && !is_refresh){
return one_request_obj;
}
var client_unit = null;
if (vimo.settings.is_client && vimo.utils.is_client_valid()){
if (tier == undefined){tier = 0;}
client_unit = vimo.utils.get_client_ad(product, unit_format, tier, cid);
}
if (client_unit != null){
client_unit.fid = container_index;
vimo.page.trackServ(client_unit.unit_id, undefined, cid, setup.sub_id, undefined, undefined, unit_format, 0, true);
vimo.inPage.hook_inPage_action(container_index, client_unit ,is_refresh, container_index, product);
} else {
var sub_id = undefined;
if (setup){
sub_id = setup.sub_id;
}
vimo.utils.issue_unit_request(unit_code_url, undefined, undefined, sub_id);
}
vimo.layer.incPassbackCounter(product);
vimo.inPage.check_inpageInview(container_element)
},
hook_inPage_action: function(index, unit_data, is_refresh, container_index, product){
if (unit_data.validate_blacklist && !vimo.settings.whitelist_site){
if (vimo.page.isContainsBlackListWord()){
vimo.tracker.reportBlackList(product, unit_data.unit_id);
try{
if (window.vimo_content_no_fill){
window.vimo_content_no_fill('');
} else if (vimo.inPage.window().vimo_content_no_fill){
vimo.inPage.window().vimo_content_no_fill('');
}
} catch (e) { }
return;
} else{
vimo.tracker.reportNoneBlackList();
}
}
var st = vimo.inPage.request_hook[index];
st.product = product;
st.index = container_index;
if (unit_data.height){
st.unit_height = unit_data.height;
}
if (unit_data.width){
st.unit_width = unit_data.width;
}
st.inpage_frame = document.createElement('iframe');
if (st.inpage_frame.watchatt){
st.inpage_frame.watchatt('src',vimo_prevent_change);
}
st.inpage_frame.className = "vimo_strip_frame";
st.inpage_frame.id = "vimo_inpage_frame";
st.inpage_frame.st = st;
st.inpage_frame.border = "0";
st.inpage_frame.frameBorder = 0;
st.inpage_frame.marginWidth = 0;
st.inpage_frame.marginHeight = 0;
st.style.height = 0;
st.inpage_frame.style.height = 0;
st.inpage_frame.style.visibility = "visible";
if ((vimo.settings.use_sandbox_iframes && !vimo.utils.isMobile()) || (vimo.utils.isMobile() && vimo.settings.use_sandbox_iframes_mobile)){
if (unit_data.prevent_sandbox) {
st.inpage_frame.setAttribute('use_sandbox', 'true');
} else {
st.inpage_frame.setAttribute('sandbox','allow-pointer-lock allow-same-origin allow-scripts allow-popups');
}
}
st.appendChild(st.inpage_frame);
st.show = function (internal) {
var st_el = this;
if (st_el.override_show){
st_el.override_show();
} else{
st_el.style.display = vimo.settings.default_display;
st_el.style.height = 'auto';
}
if (vimo.layer.generic_refresh_counter < vimo.settings.generic_refresh_count){
//var timer_interval = 8000;
//st_el.refresh_timer = setTimeout(function() {
// vimo.inPage.request_refresh(st);
//}, timer_interval);
}
};
// set frame code....
var unit_code = ""+unit_data.html +""
if (is_refresh){
st.refresh_frame = document.createElement('iframe');
if (st.refresh_frame.watchatt){
st.refresh_frame.watchatt('src',vimo_prevent_change);
}
st.refresh_frame.className = "vimo_strip_frame";
st.refresh_frame.style.display = 'none';
st.refresh_frame.st = st;
if ((vimo.settings.use_sandbox_iframes && !vimo.utils.isMobile()) || (vimo.utils.isMobile() && vimo.settings.use_sandbox_iframes_mobile)){
if (unit_data.prevent_sandbox) {
st.refresh_frame.setAttribute('use_sandbox', 'true');
} else {
st.refresh_frame.setAttribute('sandbox','allow-pointer-lock allow-same-origin allow-scripts allow-popups');
}
}
st.appendChild(st.refresh_frame);
vimo.utils.setFrameCode(unit_code, unit_data, st, st.refresh_frame, false, false, true);
}
if (is_refresh){
vimo.inPage.refresh_replace_on_content_ready(st);
} else {
vimo.utils.setFrameCode(unit_code, unit_data, st, st.inpage_frame, false, false, true);
vimo.inPage.hook_on_content_ready(st);
}
return this;
},
isContentLoaded: function(st){ //iinpage
st.lastCheckInPageContentTime = st.lastCheckInPageContentTime || Date.now();
var force_reload_ads = (st.is_inpage_content_loaded && (Date.now() - vimo.layer.lastCheckInPageContentTime >= vimo.settings.recheck_content_loaded_interval * 1000)) && vimo.settings.recheck_content_loaded_interval > -1
st.inpage_frame.product = st.product;
st.inpage_frame.index = st.index;
if (force_reload_ads || typeof(st.is_inpage_content_loaded) == 'undefined') {
var is_loaded = vimo.layer.checkContent(st.inpage_frame);
var check_load = st.is_inpage_content_loaded;
if (is_loaded[1] || is_loaded[0]) {
st.is_inpage_content_loaded = is_loaded[0];
if ((typeof(check_load) == 'undefined' || !check_load) && st.is_inpage_content_loaded) {
vimo.page.trackServ(975, "content_loaded", "vimo_inpage", st.sub_id, st.loaded_ad_id);
if (window.vimo_content_loaded){
window.vimo_content_loaded();
}
}
if (is_loaded.length > 2){
st.loaded_ad_id = is_loaded[2];
}
if (is_loaded.length > 3){
st.ad_refuse_refresh = is_loaded[3];
}
if (typeof(st.loaded_ad_id) != "undefined" && st.loaded_ad_id == 998 && !st.is_content_loaded && vimo.settings.refresh_noshow_chain > -1 && typeof(st.requested_on_noshow) == 'undefined'){
st.requested_on_noshow = true;
setTimeout(function(){
vimo.inPage.request_refresh(st, "_ns");
}, vimo.settings.refresh_noshow_chain)
}
if (!is_loaded[0]){
try{
if (window.vimo_content_no_fill){
window.vimo_content_no_fill(st.cid);
} else if (vimo.inPage.window().vimo_content_no_fill){
vimo.inPage.window().vimo_content_no_fill(st.cid);
}
} catch (e) { }
vimo.layer.checkPassbackCode(st.product);
}
} else if (!is_loaded[0]){
st.is_inpage_content_loaded = undefined;
}
if (vimo.settings.recheck_content_loaded_interval > -1) {
delete st.lastCheckInPageContentTime;
if (check_load && !st.is_inpage_content_loaded) {
vimo.page.trackServ(974, "revert_shown", "vimo_inpage", st.sub_id, st.loaded_ad_id);
vimo.inPage.hook_on_content_ready(st);
st.is_inpage_content_loaded = undefined;
}
}
return is_loaded[0];
} else {
return st.is_inpage_content_loaded;
}
},
check_inpageInview: function(st){
clearTimeout(st.check_inview_timer);
st.style.visibility = 'hidden';
st.style.display = vimo.settings.default_display;
var size = vimo.image._getImgSize(st, true);
var shown = size[4];
if (shown){
vimo.page.trackServ(983, "ImageOnView", st.cid, st.sub_id);
} else{
st.check_inview_timer = setTimeout(function() {
vimo.inPage.check_inpageInview(st); },
400);
}
},
hook_on_content_ready: function(st){
var showed = false;
if (vimo.inPage.isContentLoaded(st)){
st.style.display = vimo.settings.default_display;
st.style.visibility = 'visible';
var shown = vimo.image._getImgSize(st)[4];
try{
if (window.vimo_content_loaded){
window.vimo_content_loaded(st.cid);
} else if (vimo.inPage.window().vimo_content_loaded){
vimo.inPage.window().vimo_content_loaded(st.cid);
}
} catch (e) { }
if (st.notifyOnContentReady && !st.notify_on_content_ready){
st.notify_on_content_ready = true;
st.notifyOnContentReady();
}
if (shown){
st.show();
showed = true;
if (!st.should_notify_on_show || (st.should_notify_on_show && st.should_notify_on_show())){
vimo.page.trackServ(985, "shown", st.cid, st.sub_id, st.loaded_ad_id);
}
}
}
if (!showed) {
setTimeout(function() {
vimo.layer.productCounter[st.product][st.index]= parseInt(vimo.layer.productCounter[st.product][st.index]) + 1;
vimo.inPage.hook_on_content_ready(st);
}, 400);
}
}
}
/////////////////////////
vimo.preload = {
trackServe_time : new Date().getTime(),
encoded_partner: 14567715988,
sub_id: window.viimo_sub_id,
title: function(){
return document.title;
},
}
vimo.settings = {
validate_blacklist: false,
default_ad_marker: '',
dynamic_script_ads_marker: '',
unit_marker_url: '',
refresh_noshow_chain: 1000,
tmt_blacklist: eval(atob('WyJicmF2by10cmNrLmljdSIsICJhdi1yZWNvcmUudG9wIiwgInBkbi0xLmNvbSIsICJ0aGVhcHBzc291cmNlLmNvbSIsICJkMjE0amRnYXVnOHFjdC5jbG91ZGZyb250Lm5ldCIsICJwdWJwYW5kYS5jb20iLCAibW9ieW91bmcuY29tIiwgInl2NmE3bWU2dGpoNnM3eGoydm90bXRmaW0zaDd2LnMzLmFtYXpvbmF3cy5jb20iLCAiZXZlbnRzLnBmbS5uaW5qYSIsICJhcHBuaWMud2luIiwgIm5ldGRlbGl2ZXJ5c2VydmljZS5jb20iLCAicG9zdHlvdXJsaWZlLmNvbSIsICJ0dWJlY29ycG9yYXRlLmNvbSIsICJtb2JpbGUtZ3JlZXRlci5jb20iLCAiczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vamZoOGRqMmtrLzhmamovamZzYTguanM/IiwgImZxYjlyOXl6NzQuZXhlY3V0ZS1hcGkudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCAiY29kZWFkbmV0d29yay5jb20iLCAic2hvd2Nhc2VhZHMubmV0IiwgImxlYWRzdG9jay54eXoiLCAiYWZydHpydHJjazIuY29tIiwgIm1pbmVudGx5LmNvbSIsICJ0cmtnZW5pdXMuY29tIiwgInJ0YnN1cGVyaHViLmNvbSIsICJ0cmFmZmljLWMuY29tIiwgInRoZXBhdGllbnR3b3JsZC5jb20iLCAid2FycmlvcmdhbWUubmV0IiwgIm1vYndvbmRlci5jb20iLCAib25jb2xsYWMuY29tIiwgImFkc2VydmVyLmFkdGVjaHVzLmNvbS9hZGR5bi8zLjAvNTUxNi4xLzQ3ODk3NjQiLCAiaXJlZGlyZWN0Lnh5eiIsICJhZDIxNi5jb20iLCAibW9iY2FyaWVyLmNvbSIsICJkdG1hcmtldC5zaXRlIiwgInlhYXJpbGVhZHMuY29tIiwgImppbmdsZW1vYmkuY29tIiwgInNlYXNvbmNhcmUuaW5mbyIsICJnMmFmc2UuY29tIiwgImRpeml0YWxzcG90LmNvbSIsICJxdWJpemUub3JnIiwgImR0N3FmdTYzd3BzYWQuY2xvdWRmcm9udC5uZXQiLCAic2V2bW9iLmNvbSIsICJhcHB4aWdvLmNvbSIsICJzdGF0aWMuc2hhcmVhc2FsZS5jb20vaW1hZ2UvNDg4MDYiLCAiYXBwc2Zsb3dlci5jb20iLCAiYXJjb3Ryay5jb20iLCAiZ3JlYXQtYXBwLmNsdWIiLCAic2tpcHBlci50ZWNoIiwgInRya21vYmkubmV0IiwgImliYi5jbyIsICJld2Vlbmowenk2OHlicnVjZHZ4Mmx1dS5zMy5hbWF6b25hd3MuY29tLzR0ZG5rLmpzIiwgImVyODczMi5vbmxpbmUiLCAiMTA0LjE5OS4xMzguMjIyIiwgImFkc2VydmVyZXhjaGFuZ2UuaW4iLCAidHJrLWFzc2V0cy5zZXJ2aW5nLXRlY2hub2xvZ3kwMDIuY29tL2NyZWF0aXZlcy9kOTc1N2VlZTRiZjdhZmQ1L2E1NDE2ODZjMjQ5N2ExNmMiLCAic3RhdHMtZHNzMTA1Mi1zZXJ2aW5nLmNvbSIsICJpd29vcC5jb20iLCAiY2xpY2ttYXJhLmNvbSIsICJtb2JwZWFzLmNvbSIsICJhcHByb3NzLmNvbSIsICJtaWFsbHRyYWNrMi5jb20iLCAiaGFydmVzdHRyay5jb20iLCAibW9ieG1lZGlhLm5ldCIsICJ0cmFja2tvci5jb20iLCAiZ2F2aW5ndXJ1LmNvbSIsICJhZHMxMC5hZHRlbGxpZ2VudC5jb20iLCAiZDNya2gwaThhOGJjNWYuY2xvdWRmcm9udC5uZXQiLCAibXlzZXJ2ZGlyLmNvbSIsICJmZWVsbHVja3kudG9kYXkiLCAid2VlZGxpby5jb20iLCAiaHVlYWRzb3J0Yi5jb20iLCAibW9iaWxlY29udGVudC5nbG9iYWwiLCAidmlkZW9zbW90LmNvbSIsICJtb2JpbGVjb250ZW50cy5tb2JpIiwgInN1cGVybW9iaS5jbHViIiwgIjR0cmttYmwuY29tIiwgInJmaWh1Yi5uZXQvY3JlYXRpdmUvNDMwNjEwMyIsICJjZG4uYXp0cmFja3MubmV0L2ltYWdlcy8yMDE2MTEvMTA1L2Q1YjM3MTcyYTE1ZTZjNjM3NzIzMDMyZGRkYTZiMGU4IiwgImRkbGJvb3N0ZXIuY29tIiwgInJhbmtpbmNlLmNvbSIsICJzdXJmdGhld2F2ZS54eXoiLCAiZmF0aGV3LmluZm8iLCAiZmxhbWluZ21hcmdhcml0YS5jbHViIiwgInNjb29ieWFkcy5jb20iLCAibGFuZC10cmsudG9wIiwgIm81bzRvNi5jb20iLCAicHVyZS1jbGljay5jb20iLCAidXMuY3NzcnZzeW5jLmNvbSIsICJ1M3Y1ZWQ5aC5pbmZvIiwgImQzcnBrOXhhbXpqNjI4LmNsb3VkZnJvbnQubmV0IiwgIm9obnZwZ29obS54eXoiLCAiaXRhbGx5c3RzLWR1cHBpbmRlci5jb20iLCAiYW5kcm9pZHdpZmlpLmNvbSIsICJjb2xkd2F0ZXJjcmVlay5henVyZWVkZ2UubmV0IiwgImluc3BpZHNwLWJyYXZvLmNvbSIsICJhbm9uaW1hbHMuaW5mbyIsICJzMy11cy13ZXN0LTEuYW1hem9uYXdzLmNvbS9zM2J1Y2tldHNjcmlwdHMiLCAicHJpYWJvbGluZy5pbmZvIiwgImlkZW50aWVzLmNvbSIsICJvbndhcmRpbmF0ZWQuY29tIiwgInJlc2VhcmNodGlwLmNvbSIsICJjb252dmVyc2l2ZS5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9xdWVlbmhvcnNmYWxsIiwgImN1cmJjdXJ2ZS5jb20iLCAibW1ydGIuY29tIiwgInJpLmRyZmxtay5jb20iLCAiYWRodW50ZXIubWVkaWEiLCAib2ZmZXJzdHJhY2submV0IiwgImZhcXVhbGl0eS5zcGFjZSIsICJ0cmt1cmwuYmlkIiwgInBlYWtvbnNydi5jb20iLCAicGVhay1hZHguY29tIiwgImdvYXBwc3BhY2UuY29tIiwgInBicy50d2ltZy5jb20vbWVkaWEvRHNDU3VTaVU4QUVxOTJyIiwgIjE2My4xNzIuMjIxLjQ1IiwgImFkc2VydmVyY2hlY2submV0IiwgInNlcnZpbmctZGF0YS5jb20iLCAiYXdqdW1wLmNvbSIsICJhZHMxLWFkbm93LmNvbSIsICJ0cmFja2luZy1hZGUuY29tIiwgImFkaW5maW5pdHVtLmluIiwgImxlYWRlcmJvLmNvbSIsICJhcHBzcGVlZC53aW4iLCAiYnJ1Y2VsZWFkeDIuY29tIiwgIm9uZXRvdWNobW9iaS5jb20iLCAiMDk5NmI5NDhlNzMyLmRvd25sb2FkIiwgInBpY2hvc3QyNC5jbHViIiwgImJlaW50ZXJuZXRhZHMuY29tIiwgIm15YmVzdC5hcHAiLCAia29ybW9yYW5vcy5jb20iLCAib2FrbWFzdGVyaW5nLnNpdGUiLCAibGltZGFldC5jb20iLCAibWVib2YuY29tIiwgIm1ldGFsZXguaW8iLCAibWV4ZGVjb2YuY29tIiwgIm1vYmljb25uZWN0LmNvLmtyIiwgIm1vYmlsZS1hZHNjcmVlbi5jb20iLCAibW9iaWxlZ2FtZXMubW9iaSIsICJwYXJhbW9ub3Mtb2hhLmNvbSIsICJwZWFrcGVyZm9ybXNydi5jb20iLCAicHJlbWl1bXRyYWZmLmNvbSIsICJmb3JtYXRpc2ZhY3QuY29tIiwgInNwb3J0cy1yZWxhdGVkLmNvbSIsICJjcGlzdGFyLmNvbSIsICJ0b3Btb2JpbGVsaW5rLmNvbSIsICJ0eXByZy5jb20iLCAicGhvZWJlbWFwLmNvbSIsICJydGFkLmlvIiwgIm9ubHltb2JzLmNvbSIsICJicnVjZWxlYWQuY29tIiwgImRhdGExdHJhY2suY29tIiwgImFkZXhjaGFuZ2VnYXRlLmNvbSIsICJqZXp0ZWMuY29tIiwgImFkbW96YXJ0eG1sLmNvbSIsICJhcGM5OTQuY29tIiwgImFzcGFnZ2lhcmkuY29tIiwgImJhcmVlbG8uY29tIiwgImNoZW1lbnRpLmNvbSIsICJjb25jaWxsLmNvbSIsICJkb3dlaXR5LmNvbSIsICJlc2VzcGkuY29tIiwgImZ0eHJnLmNvbSIsICJnYW1laW5nLXNpdGUuc3RyZWFtIiwgImludmVydHJpb24uY29tIiwgInFjbGljay5wcm8iLCAibWFrZXRyYWZmLmNvbSIsICJ0YW5nby1kZWcuY29tIiwgImRpZ2l0YWxkc3AuY29tIiwgImNsaWNra21vYmkuY29tIiwgInNlY3VyZWNsb3VkLWR0LmNvbSIsICJzZWN1cmVzc2wtc21hcnQuY29tIiwgInN0cnRyY2t2MzIuczMuYW1hem9uYXdzLmNvbSIsICJkYW1uZWRkZXZhc3RhdG9yLmNvbSIsICJsZWFkcmV2cy5jb20iLCAiZ2RtY29udnRyY2suY29tIiwgInBob25lYXBwc2h1Yi5jb20iLCAiY2lyY3VsdHVyYWwuY29tIiwgInNlYXdpbmQub25saW5lIiwgIm1pc2N0cmFmZi5jb20iLCAiY2F0Y2hlbmtvLmNvbSIsICJnZW9yZ2VwdXNoLmNvbSIsICJyZW50dy53b3JrIiwgImtpd2l0cmFjay5wcm8iLCAiYmxvbXh0ZXIuY29tIiwgImZvbGxvd2xpbmszLmNsdWIiLCAiZGFpbHl0cmVuZHlvZmZlcnMuY29tIiwgImUzNDliYWExOTM4NGM4Mzg5M2RlYTMyLnMzLmFtYXpvbmF3cy5jb20vZTM0LmpzIiwgInF1aWtseWxlYWRzLmNvbSIsICJhZHNieXBmLmNvbSIsICJ2b3hkc3AuY29tIiwgIjEyMzU1NTEyM29ubGluZS5jb20iLCAiYm9vc3RwZXJmb3JtLmNvbSIsICJyZXF1aXJlZHN1YnNpZHkuY2x1YiIsICJiZW1vYnRyay5jb20iLCAidHJ5LXlvdXItbHVjay5zaXRlIiwgImF3ZXNvbWVnaXZlYXdheXMyNy5jb20iLCAic2VjdXJlbGVhZHRyYWNrLmNvbSIsICJ1dGpjMGoyaS5pbmZvIiwgImNhc2VzZGVhbC51cyIsICJvbW5pamF5LmNvbSIsICI0djRqZmU3OWVyZnhmdTh6OC5jb20iLCAiZm1nc2VydmUuY29tIiwgImdvbW9iaWxlbGVhZC5jb20iLCAiZ29tb2JpbGUuY28iLCAiY3BpLW9mZmVycy5jb20iLCAia25sb2IuY29tIiwgImNxcXNmLmNvbSIsICJtYXJrbWFyaXMuY29tIiwgIm1vYm9jbGljazAxLmNvbSIsICJyZW9yZ2V0LmNvbSIsICJzbWFwcC53b3JrIiwgImF3ZXNvbWVwYXRoZmluZGVyLnNpdGUiLCAiZnVzZS1hZC5jb20iLCAibW9ib2NsaWNrMDkuY29tIiwgInJldGFpbDkuY29tIiwgIm5ld2Vyci5jbHViIiwgImJvaWVvczkzZmszanlsYTlrazZobDFvZ2pzLnMzLmFtYXpvbmF3cy5jb20iLCAiY3VycmVudGx1eHVyeS5jb20iLCAid2ViYmlkZXIuY29tIiwgInNoZW5hZXVzLmNvbSIsICJkaXlvbWlzb2Z0Lm5ldCIsICJzdmtyZy5jb20iLCAid3pwZWMuY29tIiwgIndlYnRyYWNrcy5uZXQiLCAidHJhY2s0c3AuY29tIiwgInN0YXRzLWRzczE2MzQtc2VydmluZy5jb20iLCAicGVhay1zZXJ2aW5nLmNvbSIsICJsZWFkenVhZi5jb20iLCAiYWRzd2F2ZS5jbyIsICJ2aXJhbHdpei5jb20iLCAiZGlyZWN0cHVibWVkaWEuY29tIiwgInJvZnJhZHMuY29tIiwgImFkcDMubmV0IiwgIm1hZ2VuYWRvbS5jb20iLCAic2VydmVycmljaC5jb20iLCAiaGl2ZTJhZHguY29tIiwgImZ1bm55YWxsZXkuY29tIiwgImNvc21vc3RoZW9yaWVzLmNvbSIsICJnYW1lbmV3c3NpdGVzLmNvbSIsICJjb25zY2lvdXN2b3lhZ2VyLmNvbSIsICJiZWF1dHlvZmdpcmxzLmNvbSIsICJzYWxvbmFuZ2d1bi5jb20iLCAiaG9zdGluZ2Nsb3VkLnNjaWVuY2UiLCAiZWtkZ2Q5YXUuaW5mbyIsICJhZHMyMC5hZHRlbGxpZ2VudC5jb20iLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hZC01M3V0czRkIiwgImx1eHVyeWJyYW5kdHJlbmRzLmNvbSIsICJhYXJ0aC5tb2JpIiwgInN0YXRpYy5zaGFyZWFzYWxlLmNvbS9pbWFnZS83Mjk2MSIsICJzdGF0aWMud2l4c3RhdGljLmNvbS9tZWRpYS9kYWI5ODgiLCAidHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9zaW1nYWQvMTQwODAzODQyOTk4NDEwODM4MzAiLCAicmVkaXJlY3RzLnRyYWRlZG91Ymxlci5jb20iLCAiYWR0ZWNoaG9uZS54eXoiLCAiaWRlYWxob21lYnVzaW5lc3Nlcy5jb20iLCAiZXNzMTcyNi5jb20iLCAiaTAud3AuY29tL21lZGlhLnZjb21taXNzaW9uLmNvbS9icmFuZC9maWxlcy92Y20vMjcxMCIsICJpMS53cC5jb20vYWUwMS5hbGljZG4uY29tL2tmL0hUQjExY3dYSlhYWFhYWExYcFhYcTZ4WEZYWFhhIiwgImV4ZHluc3J2LmNvbSIsICJkbjNubWI1eXQxeXN3LmNsb3VkZnJvbnQubmV0IiwgInMueWltZy5jb20vdXUvYXBpL3Jlcy8xLjIvNmV2WGpPWTZ5clJpU2lKc1MwR3NLZyIsICJhaXIuY29tLmZsaXBsaW5lLnBhcGFzZnJlZXplcmlhdG9nbyIsICJsb3Nld2VpZ2h0Lm15LmZpdG5lc3MuZGF5LmhvbWV3b3Jrb3V0IiwgIm1hbi5oZWFsdGh5LmZpdG5lc3MuYWJzLm11c2NsZS53b3Jrb3V0IiwgImNvbS5iZWxseWZhdC5hYnN3b3Jrb3V0LmZpdG5lc3MuZmxhdCIsICJjb20uZmxhc2guY29sb3IuY2FsbGVyLnNjcmVlbiIsICJjb20ubGVtb25nYW1lLmtsb25kaWtlLnNvbGl0YWlyZSIsICJtZWRpYS5wYWdlZmx5LmlvL2ZpbGUvZ2V0L2xvbGlsYmRqcGctMTUxNjQxMTY2ODg3NyIsICJwZGV2aWNlLmNvbSIsICJpbXBlZ3MtaW5mcmlld2VkLmNvbSIsICJ0cGMuZ29vZ2xlc3luZGljYXRpb24uY29tL3NpbWdhZC8yOTA4NzM3NzA2MDE1NjIxNzI4IiwgImQxM2NmZ3dvYXM5MWxtLmNsb3VkZnJvbnQubmV0IiwgImRlbHRhLXN0b3JhZ2UuaG9zdCIsICJkMjk3N2Fva3g0NGQ4Yy5jbG91ZGZyb250Lm5ldCIsICJ3b29kbmVzcy5tb2JpIiwgInMzLmFtYXpvbmF3cy5jb20vcmtRZ09KVmxIWXJ3IiwgInN0YXRpYy5zaGFyZWFzYWxlLmNvbS9pbWFnZS82NjMxNy9QQ19TaGFyZUFTYWxlIiwgImxvd2VzdGVybmFsLmNvbSIsICJkcDJzNTFsamZnMXVpLmNsb3VkZnJvbnQubmV0IiwgImNkbi5jbm50ZWxsLmNvbSIsICJzLmFkcm9sbC5jb20vYS9WTUQvMzZYL1ZNRDM2WDRNRlJGWVhLNFBFWUVVSFEiLCAiY28tc3UuY29tIiwgInVyYmFud2hvb3AuY29tIiwgInRvcHRoZWFwcG1hcnQuY29tL2dldF9hZC8zbG51dWV4MzJ6Mi03Nzc2MTg5MTY0MzgwMjc0IiwgIndpbnZhdGUuc2l0ZSIsICJzdG9wc2VhcmNodHJhY2tpbmcuY29tIiwgInZpbGxhdG1vLmRlIiwgIm9ydGhvdHJpcC5jb20iLCAibW90b3J3ZWIuY28iLCAibGVhbm1vYmkuY29tIiwgImlzZ29pbmd0b25pZ2h0LmNsdWIiLCAiaGFsZGVzdC5jb20iLCAiZXhwZW5zaXZldHJhZmZpYy5jb20iLCAiYWJjdHJhY2suYmlkIiwgInNob3RhZG93Lm1vYmkiLCAiZDFrcjNpcThqZ3A5eDEuY2xvdWRmcm9udC5uZXQiLCAibmNkbi5mYXEyM3N6aGtnaGswZDF1Zi5tYXhjZG4tZWRnZS5jb20iLCAiY29udGVudC5mbGV4bGlua3MuY29tL3NoYXJlZGltYWdlcy9wcm9kdWN0cy8xMzkyMTMwNTYvMzI5NDM2NCIsICJhZHMuZ29sZCIsICJtb2Rlcm53ZXN0ZXJuc3R5bGUuY29tIiwgIm1vYmljb252ZXJ0ZXJzLmNvbSIsICJrYWlwaXJpbmhhbG9rYS54eXoiLCAicGZleGNoLmNvbSIsICJhZGV4Y2hhbmdlbWVkaWEueHl6IiwgIm5lbW9hdGVkb3J5Lnh5eiIsICJ2aWRwbHMuY29tIiwgImVyby1hZHZlcnRpc2luZy5jb20iLCAibW9ic3dlZXQuY29tIiwgImFjY3UtdGFnLmNvbSIsICJidXNpbmVzc25ld3N3ZWIuY29tIiwgIjExMTYwMmtsZGpnLWdqZmRnc2RmLnMzLXVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwgImtla2V0cmsudXMiLCAidHJlbmRoaS5jb20iLCAiZHVveWkuY29tIiwgImlzaGFuc29uZy5jb20iLCAiZDFzdXlkeGtvZTZqcXEuY2xvdWRmcm9udC5uZXQiLCAic3RvcGxvb2tpbmdteWNvZGUuY2x1YiIsICJ0cmFmZm9yc3J2LmNvbSIsICJwb3BjYXNoLm5ldCIsICJzbW9weS5jb20iLCAicHJwb3BzLmNvbSIsICJiaWRkZXJ2aXNvci5jb20iLCAiZXhwbG9yYWRzLmNvbSIsICJmYmJkcnRwLmNvbSIsICJuZXJvaHV0LmNvbSIsICJhZHBheXMubmV0IiwgImJvZmZvYWRzLmNvbSIsICJjbGlja2NwbS5jb20iLCAiZGVmcHVzaC5jb20iLCAiaG9uZGF0Lm9yZyIsICJuaHNydi5jZiIsICJ0YWJpY2kuY29tIiwgInZydHpjb250ZXh0dWFsYWRzLmNvbSIsICJvcGVuY3JhZnQuY28iLCAiY29udGVudGZhbGwuY29tIiwgImludGVyYWNlbC5uZXQiLCAiZHFydGp1bGFqZnRrdC5jbG91ZGZyb250Lm5ldCIsICJkMnhpNHliYTNraG8yMy5jbG91ZGZyb250Lm5ldCIsICJob3RzaGFuZy5jb20iLCAibW9iaWxldHJhY2tpbmcucnUiLCAidmFsby5haSIsICJ3aXNlZGlzY292ZXJ5LmNvbSIsICJwaG90aW9zLXJhai5jb20iLCAiYm9kZWxlbi5jb20iLCAiZmVtZXNzaW9uLWFxdWF0ZWQuY29tIiwgImJvdHJhZGFyLnRlY2giLCAiZ2JoeGVlZWcuY29tIiwgIjEwMjlzZWNlamRrbHNmLWprbGRzZ3NkZi5zMy5hbWF6b25hd3MuY29tIiwgInBlcmZvbnNwb3QuY29tIiwgInRyYWNraW5nZmFsbC5jb20iLCAiYmNubW9uZXRpemUuY29tIiwgImhvb2xvcGluaW9tYXN0ZXIuc3BhY2UiLCAibW9ib2NsaWNrMDUuY29tIiwgInRqc2lpbHcub25saW5lIiwgInRya3NvbnRya3MuY29tIiwgIm15bW9iaWxlbGVhZC5jb20iLCAiZ2xvYmFsY2FtcGFpZ250cmFja2VyLmNvbSIsICJzbWFydG9mZmVyLnNpdGUiLCAid2FwbGVhZC5jb20iLCAiYWRzZXJ2ZXItdHJhY2suY29tIiwgImFwcGZseS5tb2JpIiwgImFwaWJvZi5jb20iLCAib2N0dXB1c3NoYXJrYXR0YWNrLnNpdGUiLCAidHJhY2tyYy5jb20iLCAiaXNsYXRpdmVseS5jb20iLCAiY2RuLnBsdXMxLndhcHN0YXJ0LnJ1IiwgIm51Y2xldXNtb3RpdmF0aW9uYWxncm91cC5pbmZvIiwgImJucnNydi5jb20iLCAiYXBwbWVkaWFsaWZlLmNvbSIsICJ6aGJqZS5jb20iLCAiYWRkaWN0aXZlYWRzLmNvbSIsICJhZHZzdGF0Lm5ldCIsICJhbnN1YnNjcmliZS5jb20iLCAiZGVzY3JlcHVzaC5jb20iLCAiZ2VydW5pdmVyc2FsLmNvbSIsICJpc2t5d29ya2VyLmNvbSIsICJ0YXBnZXJpbmUubmV0IiwgImxlYWR0cmFjay5wcm8iLCAicHJzYWxuLmNvbSIsICJ2ZXJibGlmZS0zLmNvIiwgInBlYWtvbnNwb3QuY29tIiwgImJvbGRzbXRyay5jb20iLCAiYmV0cmtpbi5jb20iLCAicGxheXZpZGVvLmxpdmUiLCAiYmp0cmNrLmNvbSIsICJydW5lc2NhcGUyMy5ieiIsICJyb2JhcnRzLmNsdWIiLCAidHJhY2t0aGV0aWRlcy5jbHViIiwgInRyZmZjbGFiLmNvbSIsICJjcGFvbmxpbmVwcm9jZW50ZXIuY29tIiwgImdvZ29jcGEuY29tIiwgIm1lbGFudGhpb3MtYXZpLmNvbSIsICJkZXhjaGFuZ2VpbmMuY29tIiwgImdsb2JhbGFkLnh5eiIsICJwcm9tb2FkeC5jb20iLCAid2V2ZW1vYi5jb20iLCAidGhlc2hha2VzbW9iaS5jb20iLCAidHJhZmZpYy1zbWFydC5jb20iLCAicG9wbXlhZHMuY29tIiwgInJhZGl0aW9uYWxlZC5jb20iLCAiZmljYW50LmNvbSIsICJrZWVwbXlwaXhlbC5jb20iLCAibWVkcGVyZm9ybXNydi5jb20iLCAidHJrLWluZGV4bW9iaS5jb20iLCAicHVibG9yZC5jb20iLCAicmVnYW1pbmcuY29tIiwgIm1vbXN3ZWJzaXRlcy5jb20iLCAiZ2hhc3Ryay5jb20iLCAic3F1YXJlZGlnaXRhbC5tb2JpIiwgImFxdWdlbnJ0Yi5jb20iLCAiYTEuYXdpbjEuY29tL2Fkcy9hd2luLzExNTc3L2ltZzMwMHgyNTBfaWxfY3NfYWZmaWxpYXRlX2Jhbm5lcnMtMTUwNzg4MTQ2Mjc5NCIsICJjdWxpbmFyeWRpeS5jb20iLCAidW5iZWxpZXZhYmxlbmV3c3N0b3JpZXMuY29tIiwgImVhcnRoc2NpZW5jZXNuZXdzLmNvbSIsICJ3b21lbnNuYXR1cmFsYmVhdXR5LmNvbSIsICI0bzY0ZmxiLmNvbSIsICI1MHRyay5jb20iLCAiZG9yMm1ha2VyLmNvbSIsICJhbmRpdmlkLmNvbSIsICJkMm5ja3RmbG80ems3OC5jbG91ZGZyb250Lm5ldCIsICJjb3dib3lsaWZlc3R5bGUuY29tIiwgImFkdmVudHVyZXNwb3J0c2xpc3QuY29tIiwgIm5ld3NoZWFkbGluZXNicmVhay5jb20iLCAiZXZlcndhc3QuY29tIiwgImlvaDkuY29tIiwgImJlc3RwZXJmb3JtM25jZS5jb20iLCAiZ2FyZGVucGFyb2xlLmNvbSIsICJkZWdlbmVyYXRlbWlsbGVubmlhbHMuY29tIiwgImdsMjAyMS5pbmZvIiwgImZyYW5rc2dyZWVuc3BlYWsuY29tIiwgIm5ldC1jYTc5LnN0cmVhbSIsICJwcmRhdGEuc2l0ZSIsICJzMy5hbWF6b25hd3MuY29tL250NHU5ZnZxNm8iLCAiOW0ydWRvNXNhNGw0ZzR2cHhhNndmaWhoeHYyaDlvLnMzLmFtYXpvbmF3cy5jb20iLCAibW9ic3BhY2UuY28iLCAiaG9tZWRlY29yYXRvcnNpdGVzLmNvbSIsICJuYWlsYXJ0cGljcy5jb20iLCAiYW1vcmdvcy50ZWNoIiwgIjEwMTgwMDEtamtsZHNnMzQ1LnMzLXVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwgImpvdWxlc25ldHdvcmsuY29tIiwgImRpc3BsYXkxMDAwLmNvbSIsICJhZHZlcnRpc2Vycy5kYXRheHUuY29tL2NyZWF0aXZlLWFzc2V0cy8wX3YxbklKVDlxIiwgImZvcm11bGF3aXJlLmNvbSIsICJ0ZW5qaW4uaW8iLCAic2VydmVycmVwbHkuY29tIiwgInRsbmsuaW8iLCAiYWRyYXlzLnh5eiIsICJhZGttb2IuY28iLCAicnRibGFiLmNjIiwgImZvcmRhbi1hYnNjb21lbnMuY29tIiwgIm1pYWR4Lm5ldCIsICJncmVhdGNvbnZlcnRlci5jb20iLCAidHJpeHRyYWZmLmNvbSIsICJjbGlja3RhdGVkLmNvbSIsICJ3b2xmb2Ztb2JpLmNvbSIsICJpdmFua2F0cmFmZi5jb20iLCAiYXJ0dWxlbmlhLmNvbSIsICJtaWRuaWdodGlkZS5jbHViIiwgImVzczE2OTIuY29tIiwgIm1vYnVzaS5jb20iLCAiYmVzdG5haWxhcnQuY29tIiwgIm15c3RlcmlvdXNuZXdzdG9kYXkuY29tIiwgImx1bWlub3NpdHlsdXguY29tIiwgImdhaXRlcmdlb3JnYW5uLmNsdWIiLCAiYXdrd2FyZG5ld3MuY29tIiwgIjE1OS42NS4yMzkuMTMzIiwgImphY2VkLmNvbSIsICJmZmV4Yy5jb20iLCAicC5vcHRpbWF2aWQuY29tIiwgImFzZGZhc2RmLmNvbSIsICJiMDNhLTRhYWItYWViYS0wNGNhNjk5LnMzLmFtYXpvbmF3cy5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9xZmFUR1VQZVd5UnoiLCAidGMudHJhZGV0cmFja2VyLm5ldCIsICJ0cmFmZmljcm9vdHMuY29tIiwgImNvc21vbG9neW5ld3MuY29tIiwgImxlZWRzYWRzLmNvbSIsICJ0aW55aG9uZXliZWUuY29tIiwgImRvaXRkdXN0ZnJlZS5jb20iLCAiYWRzZXJ2ZXIuYWR0ZWNodXMuY29tL2FkZHluLzMuMC81NDkwLjEvNDk1OTU2OC8wLzMwNTUvQURURUNIIiwgIm9ubGluZXZpZGVvd2Vic2l0ZXMuY29tIiwgImFkc2luc3BpZHNwLmNvbSIsICJ0cmFja2luZ3Bob2VuaXguY29tIiwgIm1vZGVybmRheW1vbXMuY29tIiwgInRoZXVua25vd25ibHVlLmNvbSIsICJ1bnRvbGRidXNpbmVzcy5jb20iLCAicmVjb3JkaW1wLmNvbSIsICIxMjNhZC5vcmciLCAiM2ZsZC5jbyIsICJsa2dkLmxpdmUiLCAibWVwbGF5Lm5ldHdvcmsiLCAiczAuMm1kbi5uZXQvODk1NDYzMC8xNTM5NTk3NzM5MjQ5L2JlL3Nob3cuanMiLCAiNDMyMy05ZDE5LTE5MmFiN2JjZDFhMi5zMy5hbWF6b25hd3MuY29tIiwgImFsbHN0cmVhbXNub3cuY29tIiwgInMzLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20vd29mYXFta21nc3NzLyIsICJlY3BtLWdhbWVzLmRvd25sb2FkIiwgInMzLWFwLXNvdXRoZWFzdC0xLmFtYXpvbmF3cy5jb20vdXdvbWdsbW1zc2EiLCAid29ybGRuZXdzZGFpbHkuY28iLCAiZnJlZWNvbnRlbnQudHJhZGUiLCAiaG9zdGluZ2Nsb3VkLmFjY291bnRhbnQiLCAiaG9zdGluZ2Nsb3VkLmZhaXRoIiwgImpzaG9zdGluZy5kb3dubG9hZCIsICJqc2hvc3RpbmcubG9hbiIsICJqc2hvc3RpbmcucmV2aWV3IiwgImpzaG9zdGluZy50cmFkZSIsICI5ZmZhLTRhODMtYTI1Yy1hNjE4MGE1M2YzNGQuczMuYW1hem9uYXdzLmNvbSIsICJjbGt1ay50cmFkZWRvdWJsZXIuY29tIiwgInRoZHRhYy5jbHViIiwgIm5ldC1iYzQxLnN0cmVhbSIsICJzMy5hbWF6b25hd3MuY29tLzZlZGEtNDk1NS05OTRjLTk5MmZiIiwgImNsb3NlZGxvb3BhZHMuY29tIiwgImF0dHJhY3RpdmVtb2RlbHMuaW4iLCAic2VydmVkYnlhZGJ1dGxlci5jb20vYWRzZXJ2ZS87SUQ9MTcwODY3IiwgImFkdml2aWZ5LmNvbSIsICJjb252ZXJwYXRoLmNvbSIsICJyZW1vdGVkc3AuY29tIiwgImQxYmNrajZhNHZtMWJnLmNsb3VkZnJvbnQubmV0L2R6dmw5YXh4eHh2dWVpcGdwdmhxanY3Y3YweDVsanhoIiwgIi9zMC4ybWRuLm5ldC84OTU5NjY0LzE1Mzk1OTc4MzUzMTEvZXBpY3Bhc3MvdGlja2V0LmpzIiwgIm5ldHdvcmstc29sdXRpb25zMjQubmV0IiwgImFkcy1zeXMuY29tIiwgInNrYWR0ZWMuY29tIiwgIm5hcmplc21lZGlhLmNvbSIsICJtZWRpc3RyaWtlLmNvbSIsICJhajE0NjEub25saW5lIiwgInMzLmFtYXpvbmF3cy5jb20vZkZuNlZnUTR0VCIsICJzMC4ybWRuLm5ldC84OTM4NDUzLzE1MzgxMjE3MzI4NjkvaGRyZ3RiIiwgIjEwMDhrZGpnZmtkZ2YtamtsZHNnZmcuczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20iLCAicHJlc3NpemUuY29tIiwgImQyeGp3ZWYycXllOHphLmNsb3VkZnJvbnQubmV0IiwgIjEwMTJhdW5lemtkZi1rZGdkZnNmZi5zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbSIsICJzZXJ2aW5nLWFiYy10b3Aud2luIiwgIjg1YjQtNGQ5NC05ZGM3LTExZTkwLnMzLmFtYXpvbmF3cy5jb20iLCAiZDFzY24ycGxseDV6MzUuY2xvdWRmcm9udC5uZXQiLCAiZ2hmMnVhbmFwajRudjJsazQ5Zm5zLnMzLmFtYXpvbmF3cy5jb20iLCAiMDgyN2VrYS1paW5ld2FiMS1xay5zMy1jYS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbSIsICJydGItdXNlYXN0LnJlYWR5d2luZC5tZWRpYS93aW4/aT1ocFJLTTYwejZ2b18wJnByaWNlPTAuMTU0MyZmPWpzIiwgInMzLmFtYXpvbmF3cy5jb20vbFk2YzZUajBQWSIsICJhajE0MTYub25saW5lIiwgImNsaWNrd2ViLmNvIiwgInNlcnZlYW55dGhpbmcuY29tIiwgIm1vbmV0aXplZGVhbHMuY29tIiwgIjA5MTBlamtkZnMtamtsZmhrc2dmbGtqLnMzLXVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwgImRzcG5vd3RlY2guY29tIiwgImFwaTIud2luY2xhcC5jb20iLCAiYXp1cmVyYWJiaXQuY29tIiwgImdham9kaWxvLmNvbSIsICJkMW1iN2VncnI5Mm1oYy5jbG91ZGZyb250Lm5ldCIsICJkMzc5YXNqZzM4c244cy5jbG91ZGZyb250Lm5ldCIsICJkMWYzanVqaWYzdnBiZy5jbG91ZGZyb250Lm5ldCIsICJkNmwzZnViOHdqeDg2LmNsb3VkZnJvbnQubmV0IiwgImRsY3ZmZ2guY29tIiwgImNob29zZS15b3VyLXZvdWNoZXIuY2x1YiIsICJkMmJpcWtkZjc2ZnFreS5jbG91ZGZyb250Lm5ldCIsICJzb3Nod2VtbS5lbmdpbmUuYWRnbGFyZS5uZXQiLCAiZG9vZ2xlbWVkaWEuY29tIiwgInRlOW1vNS5zcGFjZSIsICJhajE2NTIub25saW5lIiwgInMxLjJtZG4ubmV0Lzg4NzEyODcveW9pbnMtMzIweDUwIiwgImJlYXN0b2Z0aGVkYXkuY29tIiwgImFkc2VydmVyLmFkdGVjaHVzLmNvbS9hZGR5bi8zLjAvNTU1NC4xIiwgImRoNWdrZjlxOTVvZHkuY2xvdWRmcm9udC5uZXQiLCAiaHR0cHM6Ly9kaWdpNHUuZGlnaWNhcnQ0dS5jb20vc3R5bGVzL2xhcmdlL3B1YmxpYy9pbWFnZXMvcHJvZHVjdHMvcHJlY2lkaWdpP3NpdGVpZD1hYTllODZmZTYzMmYmc2l0ZWRvbWFpbj1kZWxmaS5sdCZzb3VyY2U9MjJhMmM3ZTc3MTNhYjg4YTk2ZWZiNTc0ZDViNDliOGYmcHViPTY3OTc1JmRzcD1zbWFydHlhZHMiLCAiYnJpY2thYmFuZC5jb20iLCAiZmhjZ2Rsdi5jb20iLCAiZGdlcmh1MTR3bmlnLmNsb3VkZnJvbnQubmV0IiwgImQybjNnNDBiaXU3Y2lvLmNsb3VkZnJvbnQubmV0IiwgImRvd25sb2FkLWdvb2QtYXBwcy5kb3dubG9hZCIsICJoZWxsby1nb2dvLmNsdWIiLCAidm9rdXQuY29tIiwgImludGVyLWRhdGEudG9wIiwgImdvMmFmZmlzZS5jb20iLCAiYnlkaXNjb3VudGNvZGVzLmNvLnVrIiwgIjEwOC41OS40Ljc5IiwgIm1vdGlvbnNwb3RzLmNvbSIsICI4Y2RiNDhjYTM3OGYtMDkwOTAwOS5zMy5hbWF6b25hd3MuY29tIiwgInNlYXJjaC1hcGkuY28iLCAic2VydmluZzIubmV0IiwgInMzLmFtYXpvbmF3cy5jb20veEFzM2JDYVN6dSIsICJzZXJ2aW5nMy5uZXQiLCAiYXBwc3RyZW5keS5jb20iLCAiYnJhaW5sZXkudGVjaCIsICIyMDkuMTI2LjEwNi4xNDQiLCAianVnZ2FtLmNvbSIsICJyLnk1OC5iaWQiLCAiYW5uaWV0aGVmYW50YXN0aWMuY29tIiwgImFkc3guYmlkIiwgIm5vcm1hbGV4Y2hhbmdlLmNvbSIsICJ0b3BhcHBmb3Jtb2JpbGUuY29tIiwgImNvLWFhNDUzLnN0cmVhbSIsICJiZW5xaXUuY2MiLCAiYWRvcHBsZXIuY29tIiwgInV3cWhhc2FwcHMuY29tIiwgImFwcGd1cnVncm91cC5jb20iLCAibW9iaWxlYXBwbGljYXRpb25zZGVsaXZlcnkuY29tIiwgIm5ld3Nqb3VybmFsY2VsZWJzLmNvbSIsICJuaWNoZXBsdXNkZXNrLmNvbSIsICJ3d3cuY2RuLnNlcnZpbmczLm5ldCIsICJ3d3cuY2RuLnNlcnZpbmcyLm5ldCIsICJib296eWJsZXNzaW5nLmZhaXRoIiwgImJhcm5hLm1vYmkiLCAiYWRidXRsZXItZmVybWlvbi5jb20vYWRzZXJ2ZS87SUQ9MTcyMjAxIiwgImNvb2dsZS1wcmVmZWVkcy5jb20iLCAibG9jYWxwYWdlcy5wcm8iLCAid2ViYW5hbHl0aWNzbWFya2V0aW5nLmNvbSIsICJpbXByZXNzaW9uLmxpbmsiLCAiZHJuMm1hcmN4bzFmNS5jbG91ZGZyb250Lm5ldCIsICJkMTFkN3o3MmN1bHR3Ni5jbG91ZGZyb250Lm5ldCIsICJnZXRjaGVhcC1sb2Fucy5sb2FuIiwgInRoZWJlc3Rjb250ZW50Y2VudGVyNHlvdXJjb21wdG9kYXkuc3RyZWFtIiwgInRoZWJlc3RzaXRlNHN0cmVhbWZvcnlvdXJwY21hY2V2ZXJ5ZGF5LmRhdGUiLCAidHVyYm9jYXRmaXN0LnNpdGUiLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS9mbGlwbGluZSIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL1dfbjVyanNsNm5rOVlJX2x3WXJqd3V1bXNHRm0zOGVZMWxqOXdLc05IbzNkUGVuVU4tWWZEYWhyMnFuNVJpenJNUSIsICJtb2JvY2xpY2swMi5jb20iLCAidXBwZXJzZWVrZXIuY29tIiwgInN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vaG9uaWtvdWdhbWVzIiwgIm9yZW9zYWxlLmNvbSIsICJiZXRoYmVuby5jb20iLCAicHBjLmJ1enoiLCAiYXl1ZW1hbWkuY29tIiwgImVjMi01Mi0zLTI1Mi0xNTEuY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20iLCAiYXBzbW9iaWVzLmNvbSIsICJtb2JpdGVjaC1zZWFyY2gueHl6IiwgImNkbi1zaW1wbGktZmkuczMtYWNjZWxlcmF0ZS5hbWF6b25hd3MuY29tIiwgIm15Z29vZHRyYWZmaWNzeXN0ZW0uY29tIiwgInhsbW90by5jby51ayIsICI0NS41NS41Ny4zNCIsICJhei10cmFjay5iaWQiLCAicGVyc29uYWwtYXBwbGljYXRpb25zLnRyYWRlIiwgImxhdGVzdGJlYXV0eW5ld3MubmV0IiwgImNvb2ZpbmRlci5jb20iLCAiYWltZWRpYS5lbmdpbmUuYWRnbGFyZS5uZXQvPzg3MDcwMTIxMCIsICJhaW1lZGlhLmVuZ2luZS5hZGdsYXJlLm5ldCIsICJhaW1lZGlhLmNkbi5hZGdsYXJlLm5ldCIsICJhajE2MTIub25saW5lIiwgImFkc3JjLnNpdGUiLCAiZWxlY3RyaWMtYnVyZ2VyLndpbiIsICJpc3RyaWMuY29tIiwgInRya2ZuLmNvbSIsICJhZHprYWFydC5jb20iLCAidGltYWV1cy1sdWkuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vc3Aud2lkZSIsICJhZGNydGIuY29tIiwgImMxMDM0YXMuYWRzcGlyaXQuZGUiLCAiYW1vYmlpbmMuY29tIiwgImpjamRmZmRzZmltZy1qamZkczg2LnMzLWNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwgInNraXBwYWJsZXMuY29tIiwgImV4b3Nydi5jb20iLCAiYWoxNjEzLm9ubGluZSIsICJiMTAwNWFzLmFkc3Bpcml0LmRlIiwgImJhbGxvdHNoaWthcmkuY29tIiwgInRocm9zdGxlYmVhZHJvbGwuYmlkIiwgIjgwYjktNDdiMS04NDg1LTllYmQ1ZS5zMy5hbWF6b25hd3MuY29tIiwgIm9ubHlhdmFpbGFibGVmb3JzZXJpb3VzZ2FtZXBsYXllcnMud2Vic2l0ZSIsICJjbGlja2RlYWxzLnRvZGF5IiwgImQydm94MjhkejNweDIxLmNsb3VkZnJvbnQubmV0IiwgIm1vYmlsZXdhbGxldGluZm9ybWF0aW9uLmNvbSIsICJkM2FxMTR2cmk4ODFvci5jbG91ZGZyb250Lm5ldCIsICJzMy5hbWF6b25hd3MuY29tL042QzdETFppb1R3c0hjbiIsICJvZmZhY2VzLWJ1dGlvbmFsLmNvbSIsICJhYXJvZC5uZXQiLCAibW9iaWNvbmZpcm0uY29tIiwgInRwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vc2ltZ2FkLzg4MjQ3MzA5MTAxOTQ0MjY3NjkiLCAiczMuYW1hem9uYXdzLmNvbS9lYmF3ajNlIiwgImF0aGVsay5jb20iLCAiZGV2bGlua2luLnh5eiIsICJteXRoaW5ncy5jb20iLCAiYWRjb25uZWN0c3J2ci5jb20iLCAibWl6dHJlZWJveC5jb20iLCAic2h1bHR6YWJjLnRyYWRlIiwgIjdjNjM5NzA4YjM2ZTI3ZC5iaWQiLCAiMTY3LjExNC4xNDQuMjA0IiwgImFkdmFucHJvbW8uY29tIiwgInNvb21pLm1lZGlhIiwgImFkc2VudGluZWwuaW8iLCAiMTA4LjU5LjQuNzIiLCAiYWRzd2Fnb24uY29tIiwgImNvbGxlY3RjZW50LmNvbSIsICJzczIuY2x1YiIsICJkd25tYXguY29tIiwgImV4YWN0bW9icGl4ZWwuY29tIiwgImltYWdlLmliYi5jby9jMVZRY1IiLCAiY2xhc3NpY2dpZnQuZG93bmxvYWQiLCAiYnVlbm9zYW5pbWUuY29tIiwgIm9iamVjdGRleGNoYW5nZS5jb20iLCAidG9wcGhvbmVhcHBzLm1vYmkiLCAiaW5kaWVtYi5jb20iLCAiYmVzdC1ydGIubGlmZSIsICJrdWx0dXJlcGxheS5jb20iLCAiZmRjNTQuZGF0ZSIsICJzdGF0cy1kMTYyLXNlcnZpbmcuY29tIiwgInRvbmVmdXNlYWRzLmNvbSIsICJjZG4uYXp0cmFja3MubmV0L2ltYWdlcy8yMDE4MDcvMDcyL2E1NTdkMzNjNDUyNDU1MGYxM2EyYTQ1Y2YxZGUxM2ZmIiwgImQybGJ6ZnlpZ3hyemo4LmNsb3VkZnJvbnQubmV0IiwgInJ0Yi11c2Vhc3Qud2ViMy51cy5jb20vd2luP2k9eE1RZ3FySHJYdTBfMCZwcmljZT0wLjM1NDAzJmY9anMiLCAiaXVjcS5jYyIsICJtZWRvd25ldC54eXoiLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hdnpjYW1waWFnbiIsICJtb3Rpb25nbGFyZS5jb20iLCAib25jbGlja2JyaWdodC5jb20iLCAieWQ3MS5jYyIsICJjZG5sdnJ5Lnh5eiIsICJlbmRwb2ludDYuZHNwYm94LmlvIiwgImxpdmV0cmVlc3J2LmNvbSIsICJ6dmhlZS5jb20iLCAiczMtYXAtc291dGhlYXN0LTEuYW1hem9uYXdzLmNvbS93b2dtc3NnZ2QiLCAiY2RuOTI1LmNvbSIsICJnaWZ0Y2FyZHJld2FyZHouY29tIiwgImtkeXIuY29tIiwgIm15YmVzdG12LmNvbSIsICJkMTZ3eHYwZmdncjJvcy5jbG91ZGZyb250Lm5ldCIsICJkMnp0eW92MGFqNXhnaS5jbG91ZGZyb250Lm5ldCIsICJzMy5hbWF6b25hd3MuY29tL21oaGhkYSIsICJhZGxvZ2l4LmlvIiwgImdyZWVuY3Jvc3NvZmFsYXNrYS5pbmZvIiwgInJpLmN3enB2by5jb20iLCAicG9wYXZpLmJpZCIsICJ1cy1lYXN0LTEucG0tbm90aWZpY2F0aW9ucy5jb20vZGVsaXZlci5qcz9paWQ9ZGQxNGQ5Y2RkYTY5ODMyNDVhNjE3MjJkNDk1ZWU1NTA0MDk5YzUzMF8zMzc0MDkiLCAiYmoxNjIub25saW5lIiwgIm1hY2hpZXZlZC5jb20iLCAib3RlbHR2Lm5ldCIsICJqYW1jbGlja3MuY29tIiwgInRyYWZ5aWVsZC5jb20iLCAiYnhjZ21rLmNvbSIsICJjMTAwM2FzLmFkc3Bpcml0LmRlIiwgIjIzZS5vbmxpbmUiLCAiczEyYm8uY28iLCAiZmlyc29mdC5jYyIsICJzMy5hbWF6b25hd3MuY29tL3Vzc2Vmc2Qtc21hYXRvczAyIiwgIm1vYmV4YWN0aGl0cGl4ZWwuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vdTNlMXByIiwgImR1b2thbmcuY2MiLCAiZGFmMzdjcHhhamE3Zi5jbG91ZGZyb250Lm5ldCIsICJteXNlbHdvZC5jb20iLCAiYmVzdC1hZHBsYWNlbWVudHMudHJhZGUiLCAiaG91c2VvZnB1YnMuY29tIiwgIm5hdGl2ZS1zZXJ2aW5nLmNvbSIsICJhMTAxNWFzLmFkc3Bpcml0LmRlIiwgIjE5Nzc1NDU3OTAucnNjLmNkbjc3Lm9yZyIsICJlcGljbW90b3JpbmcuY29tIiwgIm1vYmlsZXdhbGxldGdhbWUuY29tIiwgInR1dHViYW5qaWEuY2MiLCAibW9iaWR0cmsuY29tIiwgInF1ZXN0aW9uZmx5LmNvbSIsICJtc3ByZW1pdW0uaW8iLCAiaHJubWFya2V0aW5nLmNvbSIsICJkaWdpdGFsbWFya2V0aW5nLW1leGljby5jb20iLCAic29jaWFsYmlnbWVkaWEuY29tIiwgImludGVyLWFjdC5pbyIsICJzaG1hLmNjIiwgImluc3RhbnQwMDcuY29tIiwgImRqNWplNzVucTNtNTMuY2xvdWRmcm9udC5uZXQiLCAidGhpc2tlcy5jb20iLCAibHBjY3h6LmF6dXJlZWRnZS5uZXQiLCAidGFwbXl0cmFmZmljLmFkc3Bpcml0LmRlIiwgImQzbjdtejV2a3R2emMwLmNsb3VkZnJvbnQubmV0IiwgImhhdmVmdW5vbnlvdXJwaG9uZS5jb20iLCAicm9zZXRoZWV0LmNvbSIsICJiaXpuZTEtamZzZGZzZGdzZGZkcy1pbWZkc2ZzZGZqLnMzLXVzLWVhc3QtMi5hbWF6b25hd3MuY29tIiwgImxlYWR6dXBjLmNvbSIsICJsb25naHVvLmNjIiwgInNwaWxsZXJvLmluIiwgIm1pbmdlcnhpbi54eXoiLCAiYmFubmVycy5zYm1ob3N0aW5nLmNvbSIsICJyZW1hcmtldGluZ3BpeGVsLmNvbSIsICJsYXRlc3RmdW5ueXZpZGVvcy5jb20iLCAiYWR4Y2hhbmdlci5jb20iLCAiY2hyb25vc2VydmV3b3Jrcy5jb20iLCAiYWR4Y2hhbmdlci5uZXQiLCAibHljaGVldnVsZ2FybmVzcy5iaWQiLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS9lbmZlZWxnYW1lMDcxMS8zMjBhZCIsICJiLXJhZGFkcy5jb20iLCAiYXBwLWZseS5nbG9iYWwiLCAid3V4aWFwYW5kYS5jb20iLCAic2FtaWxhcHAuY29tIiwgIjE1OC42OS45Mi4xOSIsICIzZGY4LTQ4NDgtNDM3Y2EwZmVhZWMwNC5zMy5hbWF6b25hd3MuY29tIiwgImRpYW1vbmdzbC5pbmZvIiwgInMzLmFtYXpvbmF3cy5jb20vd2VmY3ZwdDhiZSIsICJ0b29sc2luYWN0aW9uLmNvbSIsICJiaXduZC53aW4iLCAibWl4dHJpYWwtYmFiZWxseS5jb20iLCAiY29tcHRvaXIuYXp1cmVlZGdlLm5ldCIsICJhZHZhbmdlLm1vYmkiLCAia3JpZXBvcC53aW4iLCAiczMuYW1hem9uYXdzLmNvbS9jOTZhNjc3NTlmMjgvOGRkM2IyYjcuaHRtbCIsICJtYXN0a2hhYmFyLmNvbSIsICJzdG9yYWdlLmdvb2dsZWFwaXMuY29tL25leG9uZ2FtZXMiLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS9uZXhvbmdhbWVzMDcwOCIsICIzYTdjNjM5NzA4YjM2LnRyYWRlIiwgInMzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL3VzMTJpaWRzIiwgInN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2FtcGFpZ250cmFja2luZzA3MDcvYmtsdWNrMzIwIiwgInMzLmFtYXpvbmF3cy5jb20vY2RhLTRhNjMtYWFjZC0zOTBhZmIiLCAiczMuYW1hem9uYXdzLmNvbS9mODYzLTQ0YmItYTBjMi1iMDM2ZjEiLCAiczMuYW1hem9uYXdzLmNvbS9kdGRjdWNrdnMzIiwgInNjb3V0ZmFjdC5jb20iLCAicGlsb3R4Y2RuLmNvbSIsICJzMy5hbWF6b25hd3MuY29tLzM3My0zOGM3LTRmZTgtYTdjZC04YmJhOWUiLCAiczMuYW1hem9uYXdzLmNvbS9hODMtNjlkYy00MjI3LWI1NyIsICJob3d0b2ZlbHQuY29tIiwgIjUzYzgyZGNiLWYzYTBmMC01YjNmOGYzNTgxNTEuczMuYW1hem9uYXdzLmNvbSIsICJteW1hY3MuY2EiLCAiczMuYW1hem9uYXdzLmNvbS8xYjE2LTRlZTktOTkxMy1iYWU1ZGUiLCAibWlyLXMzLWNkbi1jZi5iZWhhbmNlLm5ldCIsICJmYXNzaW9uZ2l6LmNvbSIsICJkc3BjbW9iLmNvbSIsICJzMy1hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tL21rem9tc3NhYS95b21hc3NkZiIsICJzMy5hbWF6b25hd3MuY29tL2E0OWUzLTYxNTgtNDM0ZS1iNGUzIiwgInBhZGRsZXByby5jb20vaW1hZ2VzL1ZJS0lORy1UMjItQmFubmVyQWQiLCAiczMuZW52YXRvLmNvbS9maWxlcy8yMzg0MTg1NTEiLCAiNjA5OGExZWUtNGU3MzQtYzBjNDBjMmM4YWQzLnMzLmFtYXpvbmF3cy5jb20iLCAiZDJhMjdoMHdyamczYXIuY2xvdWRmcm9udC5uZXQiLCAicHJlZGljdGlvbmRzLmNvbSIsICJ2aW5pcy54eXoiLCAiczMuYW1hem9uYXdzLmNvbS91c3NlZnNkLXNtYWF0b3MwMi1za2RmaHNla2xkYS1uYWZkZm4wOCIsICJ0cmNrZG1uLmNvbSIsICJkMWk2YXhpcDF0NXlyZC5jbG91ZGZyb250Lm5ldCIsICJzMy5hbWF6b25hd3MuY29tLzQ5ZjgtNDEzNC1iZmEwLTNhZDgwOGUiLCAiczMuYW1hem9uYXdzLmNvbS9sZ2N5LXR3aXN0YmFubmVycy96b29wbHVzIiwgImRlNGtqZmRzLWtmZHNmZHNmZHMta2FkZnNkZi0xODguczMtZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20iLCAiczMtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbS8yNTU0MjllODAyYzczMzQ0MzgwZjZlYzA0MmE0MDg0YSIsICJzMy5hbWF6b25hd3MuY29tL2hoa2otZmR0dS1oNjgiLCAiMzMxMmZiZDctMWVhNC03ODQ5NjdiNi5zMy5hbWF6b25hd3MuY29tIiwgIjY5Y2YzZTZkLTA0OTgtNGU4NC04Ny5zMy5hbWF6b25hd3MuY29tIiwgImMwZmU0N2FlLWQyYzY0LWZkY2YzMmIuczMuYW1hem9uYXdzLmNvbS9jNjQuanMiLCAiYWRzZXJ2ZXIuYWR0ZWNodXMuY29tL2FkZHluLzMuMC81NTQ3LjEvNDg2MDY0Ni8wLzMwNTUvQURURUNIIiwgImE0NjczYzUyLWVjNTM0LTAzMTE2OTgxMDJlNS5zMy5hbWF6b25hd3MuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vdXNzZWZzZC1zbWFhdG9zMDItc2tkZmhzZWtsZGEtbmFmZGZuMDgvdGtmc2RmZHNvcmV3IiwgInMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20vMDhjOTVlZmNhZTNlNDBiNTQ5MWNjNmUxMzFiNDRjYTciLCAib3V0c3RyZWFtZWRpYS5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9lTmVjaDRJdnRob2g0IiwgInRyb2xsbWVkLmNvbSIsICJqdW1wY2FwLnRvcCIsICJsZW1vbmFkcy5iaWQiLCAib3N0YS5jbHViIiwgInRpYWduLnRvcCIsICIxMWRjMjlhYS0yMTU5LTRiMjhiM2U5MzY3LnMzLmFtYXpvbmF3cy5jb20vYzI5LmpzIiwgImZyYnV5ZXIuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vbXYtY3JlYXRpdmVzL3RlbXAvMTUzMDE3NTE2OSIsICJmaXJzdHRoZWNvb2tpZS5jb20iLCAiMTA3LjE4MS4xNzkuMTA1IiwgImJhbGlzdGEueHl6IiwgInNtbWwucm9ja3MiLCAiMDQ4M2M0ZjItYzJhYi00MDZmLWEyOGEzMy5zMy5hbWF6b25hd3MuY29tIiwgImFkNGI1NTMzLWNiZmQtYTNkMzdkMWYwLnMzLmFtYXpvbmF3cy5jb20iLCAiNTE0YWZjNDctOTctYmYwOWEyYzliZjQxLnMzLmFtYXpvbmF3cy5jb20iLCAiZWMyLTU0LTE1Ni0yMTYtNDIuY29tcHV0ZS0xLmFtYXpvbmF3cy5jb20iLCAiYjIyMmUyNWUtNGRkMy00Mjg1LnMzLmFtYXpvbmF3cy5jb20iLCAiMjA2LjE4OS4yMzQuMjQ4IiwgIm9lYWRzLmNvbSIsICJvMTguY2xpY2siLCAibWlpYnJvd3Nlci5jb20iLCAibW9iaWxlLXBob25lLWZvcmVuc2ljLmNvbSIsICJzcGFjZXNodXR0bGUuY2RuLmFkZ2xhcmUubmV0IiwgInMzLmFtYXpvbmF3cy5jb20vd3R0ZjdjZXM1ZSIsICJiaWd0b2V4LmNvbSIsICJzcGFjZXNodXR0bGUuZW5naW5lLmFkZ2xhcmUubmV0IiwgImFkc2VydmVyaG9zdGluZy5jb20iLCAiYXBwcy1pLWxpa2Uuc3RyZWFtIiwgInMzLmFtYXpvbmF3cy5jb20vbHZoaWR0MSIsICJhajE1NjMub25saW5lIiwgInZwb3BzZXJ2ZS5uZXQiLCAibXlkdG14LmNvbSIsICJwZWVyY2xpY2t0cmsuY29tIiwgImFkc2VydmVyLmFkdGVjaHVzLmNvbS9hZGR5bi8zLjAvNTQ5MC4xLzQ3OTM2NTUiLCAibW9icmFpc2VyLmNvbSIsICJkYTEub25saW5lIiwgInNiZWx0aWEuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vaWxnM2VhaCIsICJhY3Rpb250ay5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9qc3IybmQvb3V5ZDJnIiwgImQ2anVjZjNzeGFrcXcuY2xvdWRmcm9udC5uZXQiLCAib2VybG8uY29tIiwgInN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vMDk0My00OWM5LTgyMWItNjdkMTEiLCAiczMtdXMtd2VzdC0xLmFtYXpvbmF3cy5jb20vbjJhYXIycGp2bGMyIiwgImFkY2hpcnAuY29tIiwgInN3aXRjaGhjYXJyaWVyLmNvbSIsICJuZXh0b3B0aW0uY29tIiwgIm1hcnJlbWUuY29tIiwgImFkZGljdGluZ2dhbWVzLnh5eiIsICJmYWNlYm9vay5jb20iLCAidGFya2luc3R1ZGlvcy5jb20iLCAiMTY1LjIyNy4yMTYuMTM2IiwgImU3YzA5ZWU2NzYuZG93bmxvYWQiLCAidmlkZW9zbGFtcy5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9nb29kYWRzLzIwMTgiLCAiMTM4LjY4Ljg4Ljc5IiwgInMzLmFtYXpvbmF3cy5jb20vN2RkZjMyZTE3YTZhYzVjZTA0YThlY2JmNzgyY2E1MC8iLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS84b25pYm05bDVuY3E1NHh1amluYzJjZnpueTR2dTNqNDl5eGhsNHZvcCIsICJzdG9yYWdlLmdvb2dsZWFwaXMuY29tL3VzamV1ZC1vaWV1MWQtZGp4aHlhLWtzdWVlMDQiLCAibWFzdGljbHVicy5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9ia2pzY2kvNHhnYjBoIiwgInNlcnZlZGJ5YWRidXRsZXIuY29tL2Fkc2VydmUvO0lEPTE3Mjg5MiIsICJzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2RlbW9kLTcyMmVmLmFwcHNwb3QuY29tL2ZzZGZnMzRlZnouanMiLCAiczMuYW1hem9uYXdzLmNvbS9ia2pzY2kiLCAibW9iaWxlcmVhbHRyLmNvbSIsICJmZGQxZTUud2luIiwgImFkdHJrLm1lIiwgIm9yaWdpbmFsLWdhbWVzLmJpZCIsICJzZXJ2ZWRieWFkYnV0bGVyLmNvbS9iaWQ1MTk1ODIwOTYiLCAic3RvcmFnZS5nb29nbGVhcGlzLmNvbS9lZDgwLTY2NDMtNDA0YS00YTdhLTk4MTYtNmM5MC01NzI5LWMxNTEiLCAiYmpzNGEudm9sdXVtdHJrMi5jb20iLCAiaGVsbG90ay5tbCIsICJzMy5hbWF6b25hd3MuY29tL3N5emZieC9remtiZ2siLCAiczMuYW1hem9uYXdzLmNvbS9zeXpmYngiLCAiMTczOTAxNjc3MC5yc2MuY2RuNzcub3JnIiwgInBhZ2VhbmFseXRpY3Muc3BhY2UiLCAiczMuYW1hem9uYXdzLmNvbS9kbndmeWYiLCAibjE2MmFkc2Vydi5jb20iLCAiYWRuaW5qYXRyYWNraW5nLmNvbSIsICJ2aWRlb3N3ZWJzaXRlcy5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9nb29kYWRzLzIwMTgvdWIzMjA1MCIsICJ5NjMxZng0M2NsLnB3IiwgInMzLmFtYXpvbmF3cy5jb20vcnRiLWNyZWF0aXZlcy9jcmVhdGl2ZXMiLCAibnV0cmEud2Vic2l0ZSIsICJhZHNjbG91ZC5uZXQiLCAicXVhbnp1bGluLmNjIiwgImhpYmlkczEwLmNvbSIsICJhZGp1c3QuY29tIiwgImFkcWlzLmNvbSIsICJjajE2Mi5vbmxpbmUiLCAiY29jYS1jb2xhY29tcGFueS5jb20vY29udGVudC9kYW0vam91cm5leS91cy9lbi9wcml2YXRlLzIwMTMvMDQvZmFudGEtYmFubmVyLTkwM3gzMzMtOTAzLTMzMy1jYzhiZjVlOSIsICJhcHBzYWN0aXZhdGVkLmNvbSIsICJ0ZWNocXVhcnRpZXIuaW8iLCAiY29jYS1jb2xhY29tcGFueS5jb20iLCAiYWR2ZXJ0aXNlcnMuZGF0YXh1LmNvbS9jcmVhdGl2ZS1hc3NldHMvMF9OeG5GYjlxSiIsICJhZHZlcnRpc2Vycy5kYXRheHUuY29tL2NyZWF0aXZlLWFzc2V0cy8wX0JmZU1zRnh3IiwgImlsaXZlc2VydmUuY29tIiwgInVjZWxiLnZvbHV1bXRyay5jb20iLCAibmF0aXZlYWRtYXRjaC5jb20iLCAibW9ib3Byb21vLmJpeiIsICJyYXplcnpvbmUuY2MiLCAiczMtdXMtd2VzdC0xLmFtYXpvbmF3cy5jb20vZW94Y2YydjNhYWFiIiwgImVhczIxLmVtZWRpYXRlLmV1IiwgIm1vYnBvdy5uZXQiLCAidHJhaW4tYmFyLmNvbSIsICJlc3RlbWFwLW5pdHVkZS5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9pRmZVV3pXVHFLOGJVQSIsICJ0cmFmZmljdmFsaWRhdGlvbi50b29scyIsICJzMy5hbWF6b25hd3MuY29tL25rMmx2cSIsICJyZWRpci5tYW1ydGIuY29tL3JlZGlyL25ld2Jvcm50b3duZGlzcGxheS9iYW5uZXIuanMiLCAiZ2FtZXNnZWVrcy5jb20iLCAic2VydmVkYnlhZGJ1dGxlci5jb20vYmlkNTE5IiwgImxldGl0YmVmYXN0ZXIud29ybGQiLCAiYXdlYnBhZ2Vpc2Fib29rLm5ldCIsICJjcmVhdGl2ZS53d3dwcm9tb3Rlci5jb20iLCAiYmlkLm55YzAxLnd3d3Byb21vdGVyLmNvbSIsICJhZGJ1dGxlci1mZXJtaW9uLmNvbS9iaWQ1MTkiLCAibW9iaXNmeS5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9ucXpscWluMjBjLyIsICJhZHNlcnZlci5hZHRlY2h1cy5jb20vYWRkeW4vMy4wLzU1MTYuMS80NzU5OTI1IiwgImFkYnV0bGVyLWZlcm1pb24uY29tIiwgInNsaW1jZG4uY29tIiwgInNsaW1zcG90cy5jb20iLCAiZDNqMzNvbThmemc3OWouY2xvdWRmcm9udC5uZXQiLCAiY2dtaXNzaW9uLmNvbSIsICJhY3Rpb24ubWV0YWZmaWxpYXRpb24uY29tL3Ryay5waHA/bWNsaWM9IiwgImQyZHdrYXl6anp4OGNoLmNsb3VkZnJvbnQubmV0IiwgIm1hbXJ0Yi5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9nY3VxaWdlIiwgInNzZGYuc3BhY2UiLCAiYWRjcm93ZC5hZGNyb3dkMS5uZXRkbmEtY2RuLmNvbS82NjYyIiwgImFkc2FuZGxhdS5jb20iLCAic2xhcGRhcy5jb20iLCAiNjcuMjA1LjE1MS4yNTUiLCAicGVyZmVjdHRvb2xtZWRpYS5jb20iLCAic3dpZmZ0d2lmZmkuY29tIiwgImQxcndieTVscW9maTZvLmNsb3VkZnJvbnQubmV0IiwgInMzLmFtYXpvbmF3cy5jb20vUWFhaFZ3aWt1UCIsICJkMzAyNzQ3bzFqdmQ2OS5jbG91ZGZyb250Lm5ldCIsICJzMy5ldS13ZXN0LTIuYW1hem9uYXdzLmNvbS9oMnAxaGRyIiwgImRiNG5zOXpwcGEyZDIuY2xvdWRmcm9udC5uZXQiLCAiczMuYW1hem9uYXdzLmNvbS9iNjg0YmIwNi0zM2FjLTRiOWUtODNjNi0yY2ZlZDI0Y2ViZSIsICJtb2JydWx6ei5jb20iLCAiczMuYW1hem9uYXdzLmNvbS85ZDIyMTIzZS1iOGM5LTRiNWYtODIwMS04NDVmYTJiMzY5NWEiLCAiczMuYW1hem9uYXdzLmNvbS8yOWNkZjI0NS00NmU3LTQ1NjQtOTFjOS1jNDViZTM4YmEyMmIiLCAidXMwOGpkc2Ytd2VxaXJ1d3MtZHFpZHU3MS1rZG5mdWVza2EuczMuYW1hem9uYXdzLmNvbSIsICIxNTkuMjAzLjM3LjExOCIsICJ2b2x1dW10cmsuY29tIiwgIjA5MTYwYXd2a2IucHciLCAiczMtYXAtbm9ydGhlYXN0LTEuYW1hem9uYXdzLmNvbS9rZGp3cGVrZjc2MzlmaGRsc2lkaGdmIiwgIm1vYmlsZW1lZGlhNHUuY29tIiwgIjE4LjIwNy44NS4yMzQiLCAiczMuYW1hem9uYXdzLmNvbS9tdi1jcmVhdGl2ZXMvdGVtcC8iLCAicnMuejlhOS5jb20vaW1nL2ZiMzIiLCAiODE5Mi5henVyZWVkZ2UubmV0LzA3MjMwYzlkNzVmNTQ1OWNhNGIyOWI4YjcwN2JmOTRkIiwgInRoZXNvdXJjZS5tb2JpIiwgImh1Z2Utc3R1ZmYuY29tIiwgImxvYWRpbmd0ZXN0LmNvbSIsICJzcGVlZGNoZWNrZXJhcGkuY29tIiwgImQyYmw1czZzdXd1YWhvLmNsb3VkZnJvbnQubmV0IiwgImNsaWNrc3Rvcm1pbmdub3cuc2l0ZSIsICJtb2JleHRlbnQuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vNGVjZDY2ODEtYjcxZC00NWU3LWEzMTgtODAwOWM3N2NmYmI0IiwgIjZyejBobzdibngucHciLCAiczMuYW1hem9uYXdzLmNvbS8yMzNhZjUzMiIsICJzMy5hbWF6b25hd3MuY29tL2Nhc2hlLWpzL2QzN2I1MTkwYjgyYmMxY2UxMS5qcyIsICJzMy5hbWF6b25hd3MuY29tL2g2cjJHQmxMRjQiLCAibXljaGluZXNlbm92ZWwuY29tIiwgImQyOGMwaWdlMWFpMzNiLmNsb3VkZnJvbnQubmV0IiwgImNjd2ViLnN5c3RlbXMiLCAic2FyZWdhbWEueHl6IiwgInMzLmFtYXpvbmF3cy5jb20vcFQzNjNnU1J3N3ZYIiwgIm5vdGlmeWRheS5jb20iLCAic3VwZXJpb3J1bmlvbi5jb20iLCAiY29udGludWV0b2NsaWNrYWRzLmNvbSIsICJnZXR0b2RheS5pbmZvIiwgInRwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vZGFjYV9pbWFnZXMvc2ltZ2FkLzcwNjQzOTQzOTE4ODM3ODA1MTMiLCAidHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9kYWNhX2ltYWdlcy9zaW1nYWQvNzA2NDM5NDM5MTg4Mzc4MDUxMz9zcXAiLCAibWFtYWNoZWFwcy5jb20iLCAiMjIzLjAuMjA0LjM1LmJjLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsICJzMy1hcC1zb3V0aGVhc3QtMS5hbWF6b25hd3MuY29tL3drbXNtc3NoaGQiLCAiZXZsc24uY29tIiwgInMzLmFtYXpvbmF3cy5jb20vMGQxMjhiOTAtMDYwYS00YzVjLTg5YmMtNDJmZmE2NTM1YjcyL2EtNGM1Yy5qcyIsICJnbG9tb2JpLm1vYmkiLCAiaGFvdGlhb2Jhbi54eXoiLCAiYmxrbmRuLmNvbSIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL1NrRDRjb3RmcGd2RHduZUdzeXh4LXdxc2lmZmQ3SnlqMklEcFlPaGdYcUswOEJCZzFoTiIsICJzMy5hbWF6b25hd3MuY29tL2doamdwbSIsICJzMy5hbWF6b25hd3MuY29tLzZmM2UxMTJhLTFhMTktNDRjNS1hNGI2LWFjZjQ1Mjc1YmFmNC85LTQ0LmpzIiwgInMzLmV1LXdlc3QtMy5hbWF6b25hd3MuY29tL3FvZ216b21obyIsICJkMjc4b212MTNxemtjeS5jbG91ZGZyb250Lm5ldCIsICJkYm5vM21peGd1dXk3LmNsb3VkZnJvbnQubmV0IiwgImZ1bmRyeS1zcHJhY3VzZS5jb20iLCAiZDI1YnJwNTYxdThjdTcuY2xvdWRmcm9udC5uZXQiLCAiMjQ2LjE0NS4yMDQuMzUuYmMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwgImNkbnJlZnBhLmNvbSIsICJyZWZiYW5uZXJzLmNvbSIsICJuYWhyYXAuY29tIiwgInMzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tL2lraml3b3MyMDE4MDUxNyIsICJyb2NrYW5kYXBwaXQuY29tIiwgImQyZ2ZjanllNng4aTA0LmNsb3VkZnJvbnQubmV0IiwgInMzLmFtYXpvbmF3cy5jb20vNzY4YTA2YzgtOWMyZC00MjBjLThlMzUtYzc5ZWQwMWQzZTI5IiwgInMzLmFtYXpvbmF3cy5jb20vYjk2YjNiZGQtYWMxNy00YjVjLThmYTYtNTMxNDljYTg5MjY5IiwgInMzLmFtYXpvbmF3cy5jb20veXdxZ2dzIiwgInMzLmFtYXpvbmF3cy5jb20vaG00d3hkIiwgInNsb3RvdmxjLmNvbSIsICIxOTguNTcuMTkwLjE3NyIsICI0My4yMzEuMTI0LjE1MyIsICJwb2ltZWVqN3guY29tIiwgImNkbi0zcy5tb2J2aXN0YS5jb20iLCAiczMuYXAtbm9ydGhlYXN0LTIuYW1hem9uYXdzLmNvbS9xdXEyYmYiLCAidHJhY2thZHNlcnZlci5jb20iLCAiOTdsaW5nZHUuY2MiLCAiY2RsdDIwLmNvbSIsICJvbmVtaWxsaW9uYW5kb25lYWRzLmNvbSIsICJnb3RvdmxjLmNvbSIsICJ2aWF0Y3NvdC5jb20iLCAiYXBwdHJrLmlvIiwgInB4bHZsdDIuY29tIiwgInRyYWNrbXl0YXJnZXQuY29tIiwgIndhcHB5c2FwcHkuY29tIiwgIm1hY2FwcGxlc2VjdXJlcmVwb3J0Y29kZTkxMXg5NzU4ZXJyb3J3YXJuaW5nc2VydmVyYWxlcnQueHl6IiwgIm1vbnRyb3NzeWl0bW9kZXJhdG9yLmNvbSIsICJwbGljYXR1cmVzcG9udGFuZWl0eS5jb20iLCAic2hvcnRlLnN0IiwgInMzLmFtYXpvbmF3cy5jb20vNDBjOGU5ZmEtNThkMy00OTIzLThkZjItMTcxYmUyYWU4ZTNjLzlmYS01OC5qcyIsICJzMy5hbWF6b25hd3MuY29tL2ZhNjg0NGYxLWJkMjEtNDRjNy04ZjYxLWE2NzUxOTU5MTdiZSIsICJzMy5hbWF6b25hd3MuY29tLzBkZjViMDY1LWQwMjktNGM0NC04YTY0LTUxMGQ2MjBhNDNjYS80NC04YTYuanMiLCAiczMuYW1hem9uYXdzLmNvbS8yNjYwZGNmZS0yMTE5LTQzZjUtYjU0MS0zZGM0MTBjYjc0ODEiLCAiczMuYW1hem9uYXdzLmNvbS9kZWUzNGIxNi04Y2Q0LTRjMDEtYmJlMy04N2IxZWQ0MjIwMzciLCAidWstYWRzLm9wZW54Lm5ldC93LzEuMC9hY2o/bz0zMjk4ODgzMjI0JmNhbGxiYWNrPU9YXzMyOTg4ODMyMjQiLCAidWstYWRzLm9wZW54Lm5ldC93LzEuMC9hY2o/bz0xMDcyNDMzNjI1JmNhbGxiYWNrPU9YXzEwNzI0MzM2MjUiLCAidWstYWRzLm9wZW54Lm5ldC93LzEuMC9hY2o/bz05NjYyMTU0MTc1JmNhbGxiYWNrPU9YXzk2NjIxNTQxNzUiLCAiczMuYW1hem9uYXdzLmNvbS9mYTM2ZTNiYjQxNzUiLCAidWstYWRzLm9wZW54Lm5ldC93LzEuMC9hY2o/bz0zOTEyMjI1OTk0JmNhbGxiYWNrPU9YXzM5MTIyMjU5OTQiLCAiczMuYW1hem9uYXdzLmNvbS85YmY5YjIzMi03N2M4LTQ2ZjAtODBiNC0wMDVmODJiMGI1ZDQvN2M4LTQ2Zi5qcyIsICJjcnlwdGFsb290LnBybyIsICJkMTRrbHRuc281a2ZjNS5jbG91ZGZyb250Lm5ldCIsICJkM3Z1dzQxdTQxdTUyci5jbG91ZGZyb250Lm5ldCIsICJzMy5hbWF6b25hd3MuY29tLzdjYWJkNzlmLTg4NWQtNDJmZC04YzY3LWM0ODMxMGViMjk2Ny85Zi04ODVkLmpzIiwgInMzLmFtYXpvbmF3cy5jb20vZDZkODU0OWItYjIwZS00ZjE1LTgzNWQtMmIxZGMwMWMzY2RjLzRmMTUtODM1LmpzIiwgInMzLmFtYXpvbmF3cy5jb20vNzgyOTE4YzktNTgzNy00NzQ0LTk3ZDctZTAzMDc1YjBhYzBiIiwgInMzLmFtYXpvbmF3cy5jb20vN2VhNGI1MWUtMmRjMS00OGU4LWEzNjEtZjNmNzU1NWZjZmNhIiwgInMzLmFtYXpvbmF3cy5jb20vY2NlNGMyYWItZjVlNS00NjBlLTg5ZWYtYTc2YmFjZGY2ZTFhIiwgImNyeXB0b2xvb3QucHJvIiwgImQyc3pzOTdiMjNpYXkyLmNsb3VkZnJvbnQubmV0IiwgIjFydWwyejhpcGYucHciLCAibWxtZ3pucGIxay5wdyIsICI5c3U0M3A0bDFsLnB3IiwgIm9uaW1ncy5jb20iLCAiZWMyLTUyLTcwLTExMy01Ny5jb21wdXRlLTEuYW1hem9uYXdzLmNvbSIsICJzMy5hbWF6b25hd3MuY29tL2E5YjU0ODhlLTVmNDctNDI0Zi9zam5maXV3LmpzIiwgIm1ldGFmZmlsaWF0aW9uLmNvbSIsICJ0cmFkZWRvdWJsZXIuY29tIiwgImFocXJ1LndpbiIsICJzdXBwZW5zLXBlbnRlZC5jb20iLCAiYWRzY3BtLnNpdGUiLCAidG9wbW9idHJraW5nLnh5eiIsICJtdXNpY3Npbm5lci5jb20iLCAiczMuYW1hem9uYXdzLmNvbS80MDllLTkxNjktNDFlMjU3M2E3IiwgInMzLmFtYXpvbmF3cy5jb20vNDY4Ni1iZjI2LWQwZWY4ZTciLCAiczMuYW1hem9uYXdzLmNvbS80NDJiLTlkMjAtZmE2OTgyZGEiLCAiZGotaC5jb20iLCAiMTMuMTEzLjExLjE4NSIsICJmbHllcm1vYmkuY29tIiwgIm1lZGlhc3NtYXJ0LmNvbSIsICJzMy5hbWF6b25hd3MuY29tL3MxazFrbyIsICJnbzJveC5vcmciLCAianMuYWQtc2NvcmUuY29tL3Njb3JlLm1pbi5qcz9waWQ9MTAwMDA3NyN0aWQ9QWRLZXJuZWxfQmFubmVyIiwgImJsdWVhZHNydi5jb20iLCAiYXBwdHJrbm93LmNvbSIsICJkb2Z1bmFwcHMuY29tIiwgIm5hdmhpLmNvbSIsICJkaWdpdGFsbWVya2F0LmNvbSIsICJwb2xpbWVyay5jb20iLCAiczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20vZGV3YWhhIiwgImNvbGluYS1jb3JlYWtzLmNvbSIsICJ5b3VtYXhzdGFyLmNvbSIsICJjcnJlcG8uY29tIiwgImNkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMjMyMC83MDAxIiwgImZsb29pYWQuY29tIiwgImlkaW1sLmNvbSIsICJ0cmNrcHhsLmNvbSIsICJtb2JwbHVzLm5ldCIsICJtdHJhY2txd2UuY29tIiwgImNkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMjIzMC8wODEzIiwgImdhbWVzbW9iaWxlaG90LmNvbSIsICJhZGltcHRyYWNrZXIxLmNvbSIsICJ5bGlzd2luMzIuZ3EiLCAicHlsbHdpbjMyLmdxIiwgImFkaG9ncmFuLndlYnNpdGUiLCAidmVoYWxvNTYuZG93bmxvYWQiLCAidm9jYWtpNjMuZG93bmxvYWQiLCAicG95aXZhNzQuYmlkIiwgImZhbXN5Lm5sIiwgInpvb21pbnRlcm5ldG5ldC53ZWJzaXRlIiwgImxpaHlnYmV0c25jLmVuZ2luZS5hZGdsYXJlLm5ldCIsICJ5b3VyZGFpbHlkaXNoLndlYnNpdGUiLCAiY2xpY2tjdHIuY29tIiwgIm1pY3JvdjEuY29tIiwgImFpb240Z2FtZS5jb20iLCAieWV4b2NlbG8xMC5iaWQiLCAiczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20vaGVsbG9nb2QiLCAiYWJjbmV3czQuc2l0ZSIsICJjcmVhdGl2ZXMuc2FzY2RuLmNvbS9kaWZmLzMwNDUvNzczOTE3OCIsICJjcmVhdGl2ZXMuc2FzY2RuLmNvbSIsICJzMy5hbWF6b25hd3MuY29tL3VleGtsaiIsICJhZHZlcnRzZXJ2ZS5jb20iLCAiYS16YXBwMzYwLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC96MzYwbXJhaWQubWluLmpzIiwgInMuY2xpY2suYWxpZXhwcmVzcy5jb20iLCAiY3JlYXRpdmVzLnNhc2Nkbi5jb20vZGlmZi8zMDQ1Lzc3MjQ3NTUiLCAiamFnbzk2LmJpZCIsICJ0aWRpNTYuYmlkIiwgInN0aW5ncmFkLmNvbSIsICJzMy5hbWF6b25hd3MuY29tL2E1ZmYtNzUxYWY3MmFmMzgiLCAia3NhdG9wLm5ldCIsICJxdWFsaXR5YWRzLnBybyIsICJ2ZXJibGlmZS0yLmNvIiwgImNyb3dtb2JpLmNvbSIsICJjNTcwOWI5MzRiNDkuYmxvYi5jb3JlLndpbmRvd3MubmV0IiwgImxvdXdleS5jb20iLCAiZGFya25pZ2h0Y2FudGVlbi5zaXRlIiwgImFkc2VydmVyLndlYnNpdGUiLCAicmV2aXZlc2VydmVyLndlYnNpdGUiLCAibWxyNy5jb20iLCAiYmxpeS1leGNoYW5nZS5tbHd3dy5yNy5jb20iLCAidHJhZGV0cmFja2VyLm5ldCIsICJkMXk3bnJwYW90ejl1Mi5jbG91ZGZyb250Lm5ldCIsICJlYXN5Y29tZXMuY29tIiwgImVzb3JhY29tY28uYmlkIiwgInMzLmFtYXpvbmF3cy5jb20vMUJ6eUtWT0xiVSIsICJzMy5hbWF6b25hd3MuY29tL3o1YTNQUXRaTzF3ViIsICJzMy5hbWF6b25hd3MuY29tL2VLUXpsb0F0VjR1WCIsICJzMy5hbWF6b25hd3MuY29tL3o1YTNQUXRaTzF3Vi9hZC1iYW5uZXIuanMiLCAidmlkb29teS5jb20iLCAiMTI4LjE5OS45Ny43NyIsICJibGl5LWV4Y2hhbmdlLm1sd3d3LmxpZmVsaW5lLmRlIiwgImRyZXNzbGlseS5jb20iLCAiczMuYW1hem9uYXdzLmNvbS82MWRhZDY2ZjAyYTkiLCAiOW1vbmF0ZS5kZSIsICJybWFyZXBvLnJpY2htZWRpYWFkcy5jb20vMzg2MiIsICI0OTRjY2MwZDUzM2IuYmxvYi5jb3JlLndpbmRvd3MubmV0IiwgImFkeDEuY2xvdWQiLCAiYWRrMnguY29tIiwgInMzLmFtYXpvbmF3cy5jb20vOGVmNS05ODk2MmFkZjY4MzgiLCAidG9yZ2VwLmNvbSIsICJuZXdjZG5zdG9yYWdlLmNvbSIsICJzMy5hbWF6b25hd3MuY29tLzg1N2ItYWQ3YzhkNmY1MzgiLCAiczMuYW1hem9uYXdzLmNvbS80YmFlLTkwMzktZWUwYnp6MzciLCAic3R1cnRvbi1kZW1hcmluZy5jb20iLCAiaW50ZXJtZWRpYW1hcmt0LmNvbSIsICJtZWRpYS52b29nLmNvbS8wMDAwLzAwNDIvMjE0NC9maWxlcyIsICIxMjguMTk5LjE5NC4yMyIsICJtZWRpYS52b29nLmNvbS8wMDAwLzAwNDIvMjE0NC9maWxlcy9hMzIwNTAiLCAiZDFteXM5Mmp6Y2U2MDUuY2xvdWRmcm9udC5uZXQiLCAiY2FzaGJpdGNvaW4ucHciLCAicG9wb3BvLndlYnNpdGUiLCAicnFxZnQuY29tIiwgIm1pbmltb2IuY29tIiwgImRibWFkcy5jb20iLCAiZm9tdXZvbG8zMC5iaWQiLCAiOGM5NS53aW4iLCAiZGF5b25laS53ZWJzaXRlIiwgImJ1a3VqdXNlOTYuYmlkIiwgImdvb2dsYWFwcGxhLmNvbSIsICJsb29rc2FmZWJyby5jb20iLCAiYWoxNDIxLm9ubGluZSIsICJtb2Rlcm5hZy5sdGQiLCAiYWR2YW5jaW5nYXdlc29tZW9wdGlvbnMuY29tIiwgImNkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMjIzMC8wODEzL3QvOSIsICIxODguMTY2LjE4OC4xMDgiLCAiczMuYW1hem9uYXdzLmNvbS8zZW5udWh4IiwgInMzLmFtYXpvbmF3cy5jb20vN2Y2OC00MmI1LTkwNDMtNzkiLCAiZWMyLTM0LTIwNS00LTIwNy5jb21wdXRlLTEuYW1hem9uYXdzLmNvbSIsICJhZHgxLmlvIiwgIjEyOC4xOTkuMTcyLjIxMSIsICJsb29rYWRkaWN0LmNvbSIsICJ1N2xkLmRhdGUiLCAiYWR0cmlhZ2UuY29tIiwgInBhcmtpcGVlci5jb20iLCAiM2YyZWRkZmJkOWE3LnMzLmFtYXpvbmF3cy5jb20iLCAiaHVnZ2llc2FtcGxlLmNvbSIsICJiaWxsbWVyZ2Vucy5jb20iLCAiczMuYW1hem9uYXdzLmNvbS9rN3U2cm1xMTBhIiwgInRjLWNsaWNrcy5jb20iLCAiaW1yZWFsbHlib2YuY29tIiwgImxjZTl2LmNvbSIsICJzaGFycGRzcC5jb20iLCAibW9ibmF0aXZlLm5ldCIsICI5MXdoaC5jb20iLCAiYXBwaGFsZS5jb20iLCAiZ2FtZTRmdW4ub25saW5lIiwgImhlODhjYy5jb20iLCAibWt0cmFjay5jb20iLCAiYXBwdGhpcy5pbyIsICJzcGFydGFtb2JpbGUuY29tIiwgInZwcmV2aWV3ZXJzLmNvbSIsICJkYjVjZmN2NG9yaXlpLmNsb3VkZnJvbnQubmV0IiwgIm9uY2xpY2tjbGVhci5jb20iLCAiZDF2MTZuMDE3NGt1bTcuY2xvdWRmcm9udC5uZXQiLCAiZGVzcGl0ZXJhY3kuY29tIiwgImltYm9mLmNvbSIsICJzemt1a2EuY29tIiwgIm1odHJvbHdvcmsuY29tIiwgIm51cm5vLmNvbSIsICJhcHBzZmx5ZXIuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vMjdtbSIsICJzMy5hbWF6b25hd3MuY29tLzQ5YWUtODJhMC0xY2JiM2Q0MCIsICJnZ2FtZW1waXJlLmNvbSIsICJmbHltb2JpLmNsdWIiLCAiY2xpY2tkdGFjLmNvbSIsICJtb2JpbGVwbGF5Lm1lIiwgInlvdXRyYWZmLmNvbSIsICJyb3RhdGlvbnVybHMuY29tIiwgInNhbnRvc3MuaW5mbyIsICJhZGltcHRyYWNrZXIuY29tIiwgInByZW1pdW1vZmZlcnMuY28iLCAiNTEuMTUuMTYxLjIwNSIsICI2Mi4yMTAuMjUxLjgzIiwgImdvZ2VhcmJlc3QuY29tIiwgInNub3dwbGF5Z2lybC5jb20iLCAiczMuYW1hem9uYXdzLmNvbS80ZTgxLWJjMjEtMDFkNWY1MTU3Yjk3IiwgImdlbnRvc2gtb2ZmZWNvcmRzLmNvbSIsICJkY3lwaGVybWVkaWEubmV0IiwgImNkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMjY0NC83OTcyL3QvMy9hc3NldHMvYmF0YSIsICJzMy5hbWF6b25hd3MuY29tLzQ5MDgtYjQ5My01NThiODYyYTIyZWQiLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9fYzZxcHFFM0dqV2dPX0VTRkZnbFMta0FXc1E2TV9DcWhfNGY4SWJUVU16S3NqRFZsNjlVTGljS1ctdmRlY2lfajlnPWgzMjAtcnciLCAiczMuYW1hem9uYXdzLmNvbS80ZDlmLTk3OWMtZjg3ZDAyNzVjN2RhIiwgInF1ZXJ5bGVhZC5jb20iLCAiMTIzbWVyY2kuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vd2ViaG9zdDAwOTkiLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9Wa0xFMGUwRUR1UklENmpkVEU5N2NDOEJvbWNEUmVKIiwgInMzLmFtYXpvbmF3cy5jb20vZXNwbGVhcmpvcm91c21vYmVlY2siLCAibXliZXN0ZmVlZC5jb20iLCAicHg5eTYwLmNvbSIsICJzMy5hbWF6b25hd3MuY29tL2JkMmIxOTQ0YWNmOCIsICJsay10cmFja2luZy0xLndpbiIsICJsay10cmFja2luZy0yLmRvd25sb2FkIiwgImxrLXRyYWNraW5nLTUud2luIiwgInBhbmVjdGlvbi5jbyIsICJzZWN1cmUtbW9iaWxlLXJld2FyZHMuY29tIiwgImZnOGRndC5jb20iLCAidGVjb25hbWVzLXByb3plbi5jb20iLCAib3R0ZXJvZmZlci5jb20iLCAiczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vc29zb3NvZ29vZCIsICJzYXhwLnplZG8uY29tIiwgIm5vZGVzbWFuYWdlLmNvbSIsICJkZTcuc3BsaWNreS5jb20vaW1nP2FpZD0zNDY2OSIsICJweDl5LmNvbSIsICJzbm93cGxheWJveS5jb20iLCAibmJ0LnJlbiIsICJiaGZuZy5jb20iLCAibW9idXdpbmdzLmNvbSIsICJtZWRlb3AuY29tIiwgInNvaHUuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vZ2hhbmludGdvbWVpdmVlZWl0aHVsZSIsICJkMWV0aHV1NXVoYzMxMi5jbG91ZGZyb250Lm5ldCIsICJkM3AzdG54Ym12MDI2ay5jbG91ZGZyb250Lm5ldCIsICJzMy5hbWF6b25hd3MuY29tLzkyYTEzMzYwMjMyOCIsICJzaG9waWZ5LmF6dXJlZWRnZS5uZXQvZ3dkLXZlcnNpb24tNzEyMy9nd2RwYWdlX21pbi5qcyIsICJwZXRzYWNjZXNzLmNvbSIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL3hRdlFrT1cybklIX1AzaVV6a3lxNDByWGh3bnhncFc0cFNteWlHVmhfNXZVM2RnMW5WNWxnZDNtbFl3czdVdDNYOFE9aDUwLXJ3IiwgInMzLmFtYXpvbmF3cy5jb20vZW5jZXlhcnJvb2tvcmdibGVuIiwgInBpeC5pbXBzY29yZS10cmsuY29tIiwgImZ0amNmeC5jb20iLCAiczMtdXMtd2VzdC0xLmFtYXpvbmF3cy5jb20veW91dHViZW1wM2NvbnZlcnRlcmluZm8iLCAiczMuYW1hem9uYXdzLmNvbS9lMDRjM2MyZmQ5ODIiLCAiczMuYW1hem9uYXdzLmNvbS9zcm5hcmRlc2xtbW9uYXJvZGdlIiwgImQzbWlleTMxbjV2MGE2LmNsb3VkZnJvbnQubmV0IiwgInljZW1sLm5ldC8wNzQzIiwgImNsaWNrZ29lci5jb20iLCAiZGVpb25pemUyNjV5cC50b3AiLCAiaG93dG81LmlvIiwgImpva2luZ2RhZGR5LmNvbSIsICI3MjMyNC5uZXQiLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9xTTVIMFN0My1BZ0pMdlRNQWY2b3FyWjNuc2lKNkNURlJ5Q2xyeVJQTnVBaFFfZXpUNTUyT05mYVBqSzZhT0NJdENPaz1oOTEwLXJ3IiwgImNoZWxsZW8uZW5naW5lLmFkZ2xhcmUubmV0IiwgInMzLmFtYXpvbmF3cy5jb20vOGJlNDM2LTMwZWZhNCIsICJzMy5hbWF6b25hd3MuY29tLzQzZTItNGQxMy1hMWZkLWViNTZkYmZmIiwgImxoMy5nb29nbGV1c2VyY29udGVudC5jb20vbUd3Zl9rRXJqZ3h6bWYtVFBmZ2wwM2hTXzBVQnhyUnFYSkI5UnBsNnhuUE56WlA3MnNuQkc2R1pqM3pha280V21WUTg9aDMxMC1ydyIsICJzMy5hbWF6b25hd3MuY29tL2FhMjQtNGZkOC04ODZjLWRjZDM2ZWUiLCAiczMuYW1hem9uYXdzLmNvbS9hYTI0LTRmZDgtODg2Yy1kY2QzNmVlL2NkMzYiLCAiczMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vZnJlZWdhbWVzZ2l2ZWF3YXlzLmNvbSIsICJydGJzZXJ2aW5nLmNvbSIsICJ5Y2VtbC5uZXQvMDMxOC8xMTc5MzcyNi0xNDczMjY3NzM3NzA1IiwgInd3dy5mdGpjZnguY29tL2ltYWdlLSIsICJjdGFucy5uZXQiLCAiMjMuMjM5LjI2LjEwMCIsICJyZWFkLWJsb2dzLmNvbSIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL0E5bzZkV21RdkplR0lCNTlydktqcVUtSnExN203VHNJSnlQZTRDRGhRR1hyaGpVbGxYbi1aRTBvVzlzUnVfc1dtQktEPWg5MDAtcnciLCAiZHhmbDhucjc2OGY1OS5jbG91ZGZyb250Lm5ldCIsICJhbGxzZXJ2aWNlczRldmVyLmNvbSIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL1dITVJVNnUteUEwRkRZS0ltakQzaEJnajFzbUU1Z1ZzNzgtWV9HVXBVUnk1Y2sxb1NfOW52TFl2N1ctU21abjQ3ZkE9aDIwMCIsICJzMy5hbWF6b25hd3MuY29tLzM1ZGItNDNlYS05ZTk1LTZkYjQzYjI3LzNlOTUiLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9iS2pTWjhEX2lBTkJibmlkWDFpcklBVnYzcjEzRTJOMEUxSTM2UW4ySFRGV2Z6M1kzLV93ZWJ5T1BycEhhaWxsbDRRPWgzMTAtcnciLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9zcU91bnlGVm4yZzVFaDR5cFZzbV9nVmZjVjBsSmsySXdRbXNCUFBYamRsRnFCUFRZOXpGUkMxc01Va0FBcUxCNVE9aDMxMC1ydyIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL045M3NkbkI3OUNNenZvS3l3cmpGRUdjNFd3TW0xZG9NQnVTNTF5Z0tlaFJTREVqQldiYl9IUW00WEhMOVZOVHFkck09aDMwMC1ydyIsICJhbW9yZXBhY2kuY29tIiwgImxoMy5nb29nbGV1c2VyY29udGVudC5jb20vRmFQMm5aZWFEOGlIbDRMNjlsdGxNUTZhUFppcy1IR0tvUmdibDEyaXE2cGdmc2lXeURGbmVCRFkzamlzVDlIU2pBPWgzMDAtcnciLCAiczMuYW1hem9uYXdzLmNvbS8zOGUtNGY3YS05YWQ3LWY3M2VkYiIsICJhajE0MTcub25saW5lIiwgInVybGRlbGl2ZXJ5LmNvbSIsICJsaDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL3lwVk52LTE2SER1RUpFb1c5MnhxaXhUcElMNkRocURtNURaN2VWaFV4WmhyMGNjZ3RPZUpqeHFLeC14cDR5c1NIaUZOPWgzMTAtcnciLCAia2FkMG4xc29pLmNkbi5hZGdsYXJlLm5ldCIsICJrYWQwbjFzb2kuZW5naW5lLmFkZ2xhcmUubmV0IiwgInN0YXJjcm93bmludGwuZW5naW5lLmFkZ2xhcmUubmV0IiwgInMzLmFtYXpvbmF3cy5jb20vYTZiNC00MDE1LTllYzgtODg0MzI5M2QiLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS91UjBJdndKTlFvcXNSZXNXcm9lUVNDWXB3NG5lbVhvaW9icWEwbmhRVDQ5SjlLc3VQSjRpVnNyZ0RiNUxIc20tTGc9aDMxMC1ydyIsICJzMy5hbWF6b25hd3MuY29tLzQ4ODktNGI3Mi1iZDExLTdjYTQ0OWIiLCAic3VwcnZkby5jb20iLCAiczMuYW1hem9uYXdzLmNvbS80YTAwLTRjNTAtOWI0OS00NDI4NTJiIiwgImJpbGxtc2N1cmxyZXYuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vNDRmNC00MTM5LWEzMzEtM2JmZTRlYzYiLCAid2lraWRveC5uZXQiLCAibGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9IXzZpRnlSNm9CNG1EMFo2THc0cTlVaUU4U1JlSG1obnM2ZG5seXNzNGxMZEJkdkxoVVMyM3FOQWtiU3ptaDJkY2c9dzMwMC1ydyIsICJzMy5hbWF6b25hd3MuY29tLzliMDUtNGYwYS05NjE1LTA5YzlhNTQiLCAicHVsc2UuZW5naW5lLmFkZ2xhcmUubmV0IiwgIjUwLjExNi4xNS4xMDYiLCAiYWRtZWRpdC5tZSIsICJhbHBoYW1vdmUubW9iaSIsICJvbmxpbmV0b3JzaG9wLmNvbSIsICJmc2xpaGFvLmNvbSIsICJhbHBoYW1pc3Rlci5jb20iLCAiZW5pZC5lbmdpbmUuYWRnbGFyZS5uZXQiLCAidHJjay5nbG9iYWwiLCAiYmVzdGFkYmlkLmNvbSIsICJrdW1lZGlhLmluZm8iLCAidGhlY29tbWVyY2Vqb3VybmFsLmNvbSIsICJqc2Jhbm5lcmNkbi50b3AiLCAiYWZmdHJhY2suY29tIiwgImhpdGNwbS5jb20iLCAic21hcnRsaW5rLmd1cnUiLCAiYWNjbWdyLmNvbSIsICJkM21jc2J6cnFwYW94di5jbG91ZGZyb250Lm5ldCIsICJzMy5hbWF6b25hd3MuY29tLzMyYzQtNGNjYS1hMDBhLTA4OTgyZmQ5IiwgInMzLmFtYXpvbmF3cy5jb20vaWNhcnRob2xvbWV3Y2lhY2NjZWRlIiwgIm4xYWRzZXJ2ZXIudG9wIiwgImljYXNpYXBhY2lmaWNvLmNvbSIsICJkM2Q1aGl3YnU1aGs2Yi5jbG91ZGZyb250Lm5ldCIsICJtbGFkZW5ldHMuY29tIiwgInMzLmFtYXpvbmF3cy5jb20vNWFmZi00YjgyLTlmYjctMjRkODY5IiwgIjE2Mi4yNDMuMjAwLjYzIiwgImNkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMjMyMC83MDAxL3QvNSIsICJpbmZhZHMtMTM3MjM2OTQxMi5ldS13ZXN0LTEuZWxiLmFtYXpvbmF3cy5jb20iLCAiZGlzcGxheS1zZXJ2aW5nLmNvbSIsICJldGFja2l3YXlhbnQuYmlkIiwgInNlY29sZGljaWFscGkuYmlkIiwgIndpc2guc2FsZSIsICJkMTVxNGhiNHk5djFzZS5jbG91ZGZyb250Lm5ldCIsICJhbHRlay5jb20udHciLCAiMjh6YncuY29tIiwgImFkdmVudWVkc3AuY29tIiwgImFkc2JyZWFrLmNvbSIsICJjcGFkay5uZXQiLCAicmlscml4LnJ1IiwgImQzdGljOWVkZ2IxMjA5LmNsb3VkZnJvbnQubmV0IiwgInRldXRvcmlnb3MtY2F0LmNvbSIsICJoaXJvZWtvYm8uY29tIiwgIm15cmlzaW5nbWFuLmNvbSIsICJxZGpia3R2LmNvbSIsICJjb2luaGl2ZS5jb20iLCAiZDk3cW9ka3U4Mnhjcy5jbG91ZGZyb250Lm5ldCIsICJnb29nbGV0YWdtZW5hZ2VyLmNvbSIsICJjbGlja3Nldi5wcm8iLCAiczMuYW1hem9uYXdzLmNvbS9kYjI5NDY0MjM1NGJkNTI3YzdmYTI5NTg2ZjZhMzZmMSIsICJjZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzIyMzAvMDgxMy90LzEzIiwgInMzLmFtYXpvbmF3cy5jb20vOWQyOS00NDkyLThiMDMtNDZlMDJkYSIsICJjZW1iLmdkbiIsICJjbGt0aS5jb20iLCAiZmlybXNlY3VyZWN1cnJlbnQuY29tIiwgImxua2l0LmNsdWIiLCAibG9nZ2lrYS5jb20iLCAic2NvbnRlbnQtaWNuMS0xLnh4LmZiY2RuLm5ldC92L3QxLjAtOS8yNTM0ODcwNV8yMDAwODAxOTMzNTEwNDc2XzQ4NjEyOTc2MzIxMDA5Nzc2MzEiLCAiczMuYW1hem9uYXdzLmNvbS82NDktNDNiYy1iZTBkLTNlYzZkZmQiLCAiNDUuNzkuNzYuMTIiLCAiYmlsbHlhZmZjb250ZW50LmNvbSIsICJkM2t4bHRzNXp3Njg1ai5jbG91ZGZyb250Lm5ldCIsICJjcjAwdGhwNzBpbGc0YXJ2YXVxMGMyZXpyeC5zMy5hbWF6b25hd3MuY29tIiwgInByb2QtdXNlYXN0LXNwb3AxLXJ1Ymljb24uc3BvdGFkLmNvOjE4MjYwL2V2ZW50L1dJTiIsICJzMy5hbWF6b25hd3MuY29tLzExNzktNDkzNS1hOGFlLWE2YzI2NzIyIiwgIjQ1LjMzLjEyMS4xOTMiLCAiZDMxdmdhbGZtaGtvNnMuY2xvdWRmcm9udC5uZXQiLCAiZDFsNXpheXkydm5leWcuY2xvdWRmcm9udC5uZXQiLCAieW1nbC5lbmdpbmUuYWRnbGFyZS5uZXQiLCAiZDNxMWJ4djZrdWJtcDQuY2xvdWRmcm9udC5uZXQiLCAicHJvZC11c2Vhc3Qtc3BvcDEtb3Blbnguc3BvdGFkLmNvOjE4MjYwL2V2ZW50L1dJTi8iLCAiZHd6MnV6NzM5cWhwdC5jbG91ZGZyb250Lm5ldCIsICJoam9vcG0uZW5naW5lLmFkZ2xhcmUubmV0IiwgInNwb3J0c3Bvc3QuaW5mbyIsICJzZWN1cmUtZHMuc2VydmluZy1zeXMuY29tL0J1cnN0aW5nUmVzL1NpdGUtMTI2ODY1L1R5cGUtMC8iLCAicGF0dGVybnNodWIuY29tIiwgImFkc2I0dHJrLmNvbSIsICJmbHlybGsuY29tIiwgImFkY3JheC5jbHViIiwgImxlYWRwbGF5Lm1vYmkiLCAiZDNiNTBvMms5eDFnanQuY2xvdWRmcm9udC5uZXQiLCAiMTczLjIzMC4xNDEuMTQ1IiwgIjE1OS4yMDMuMTc1LjIxNyIsICJoZWFwZXouY29tIiwgImFkcm8uaW8iLCAic2t5Yml0ZXIuY29tIiwgImNkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMjIzMC8wODEzL3QvNS9hc3NldHMvYUVtYmVkQ2FudmFzLmpzIiwgImh1Z2ViZXN0dHJpcHMuY29tIiwgInlodHJhY2suY29tIiwgInBpdHh0LmNvbSIsICJhcHBzaWVuY2UuY29tIiwgInNhbGUtZ2FkZ2V0LXByb21vdGlvbi5iaWQiLCAiMzVibi5kYXRlIiwgInNoaXJjdXNlZC1jb21pc3RhZmYuY29tIiwgIjQ1LjU2LjEyMS42MSIsICIyOTQ0OC5uZXQiLCAieGVtYWVrZXRzLmNvbSIsICIyMy45Mi4yOS4xNzIiLCAiZXZlcnlvY2xpY2suY29tIiwgImNoYXJ0ZWtvLmNvbSIsICJjb25maXJtbGluay5vbmxpbmUiLCAic2FycW91LmNvbSIsICJzcHlrZW1lZGlhdHJhY2suY29tIiwgImQyYmMwYzkwaTVqdHlyLmNsb3VkZnJvbnQubmV0IiwgInB1YmxpY2l6ZXM2OTJmay54eXoiLCAiY2xpY2thZHdhLmNvbSIsICJuZXdyb3RhdGlvbnVybC5jb20iLCAibGluazRzbS5jb20iLCAidHJhbnNyZXRlbi5jb20iLCAidHdvY2xpY2tkZWFsLmNvbSIsICJteWxpbmsub25saW5lIiwgImN5aW50YS5jb20iLCAiZXRob3NzaC5jb20iLCAiZDJqMzFhc2V6MzFpbzIuY2xvdWRmcm9udC5uZXQiLCAiZDNxeXNuMGFxbW9iZjMuY2xvdWRmcm9udC5uZXQiLCAiZGxmbm9iMDkwMnVkbi5jbG91ZGZyb250Lm5ldCIsICJvbHZsZS5jb20iLCAiMTczLjIxMi4yNDkuMTg4IiwgInl5bmp4LmNvbSIsICJpbmRvanVua2llLXZpYmVzLmNvbSIsICJvcGVuY2hvLmNvbSIsICJqYy5zdXBlcmxpbmtpbi5jb20iLCAia2VyZG9maW8uY29tIiwgImFiY2RuLmJpZCIsICJjcGFvcHRpbWl6ZWRwZXJmb3JtYW5jZS5jb20iLCAiamV0c2V0Z29mbHkuY28iLCAib3JpZ2VyLmluZm8iLCAiZDIzZmEwczdzaW5udGwuY2xvdWRmcm9udC5uZXQiLCAiYWRmcmllcy5pbmZvIiwgInl0LWdpZnQuY29tIiwgImFka3J1ZWdlci5jb20iLCAidW5pdmVyc2FsbGFwcC5jb20iLCAiZ29waG90by5zdG9yZSIsICJjbGV2ZWxhbmQtc3Rhci5jb20iLCAiYmVhdXR5bGlzaC51cyIsICJoYnBpeC5tZWRpYTZkZWdyZWVzLmNvbSJd')),
manipulate_settings: false,
recheck_content_loaded_interval: -1,
Check_Bots : 10,
client_ad_units_data: [],
client_chain: [],
is_client: false,
default_display: 'block',
inpage_disabled_view_tracking: true
}
if (typeof(vimo.settings.tmt_blacklist) == 'undefined'){
vimo.settings.tmt_blacklist = [];
}
vimo.stop_words = new Array("a","about","above","across","after","afterwards","again","against","all","almost","alone","along","already","also","although","always","am","among","amongst","amoungst","amount","an","and","another","any","anyhow","anyone","anything","anyway","anywhere","are","aren't","around","as","at","be","became","because","become","becomes","becoming","been","before","beforehand","being","below","beside","besides","between","beyond","both","bottom","but","by","call","can","cannot","cant", "can't", "co","con","could","couldnt","de","describe","detail","do","done","down","due","during","each","eg","eight","either", "else","elsewhere","empty","enough","etc","even","ever","every","everyone","everything","everywhere","except","few","first","for","former","formerly", "found","from","front","full","further","get", "go","had","has","hasnt","have","he","hence","her","here","hereafter","hereby","herein","hereupon","hers","herself","him","himself","his","how","however","i","ie","if","in","indeed","into","is","isn't","it","its","itself","keep","last","latter","latterly","least","less","made","many","may","me","meanwhile","might","mill","mine","more","moreover","most","mostly","much","must","my","myself","name","namely","neither","never","nevertheless","next","no","nobody","none","noone","nor","not","nothing","now","nowhere","of","off","often","on","once","only","onto","or","other","others","otherwise","our","ours","ourselves","out","over","per","perhaps","rather","re","same","seem","seemed","seeming","seems","serious","several","she","should","since","sincere","so","some","somehow","someone","something","sometime","sometimes","somewhere","still","such","take","than","that","the","their","them","themselves","then","thence","there","thereafter","thereby","therefore","therein","thereupon","these","they","thick","thin","third","this","those","though","through","throughout","thru","thus","to","together","too","top","toward","towards","un","under","until","up","upon","us","very","via","was","we","well","were","what","whatever","when","whence","whenever","where","whereafter","whereas","whereby","wherein","whereupon","wherever","whether","which","while","whither","who","whoever","whole","whom","whose","why","will","with","within","without","would","yet","you","your","yours","yourself","yourselves","com","de","en","la","und","www","",">","|","dont", "didn't", "did", "new", "old","does", "doesn't", "cause", "causes", "for", "you're", "don't", "don`t", "cancel", "2nd", "it's", "used", "frequent", "things", "list", "best", "news", "pro", "reviews", "review","cheap", "2013","thing", "reason", "reasons", "mean", "means", "matter", "span", "quality", "you", "hey", "you'll", "we'll", "I'll", "+", "i`m", "i'm", ".", ",", "?", "-", "(", ")", ":", "&");
vimo.inPage.allow = true;
}
try
{
if(vimo.settings.Check_Bots != false || vimo.settings.Check_Bots > 0)
{
var percent = vimo.settings.Check_Bots == true ? 0 : vimo.settings.Check_Bots;
var rnd = (Math.random()*100);
if (rnd < percent) {
var pubID = vimo.layer.get_sid(),
dom = vimo.page.domain(),
subID = vimo.layer.get_sub_id(),
url = window.location.href,
lang = vimo.layer.language();
var c_check_url = '';
c_check_url = '//c.fqtag.com/tag/implement-r.js?org=F0PcXB03ZlblukgOY2nw&p=' + pubID + '&a=' + subID + '&rd=' + url + '&applng=' + lang + '&sl=1&fq=1';
vimo.utils.injectScript(c_check_url);
}
}
} catch (e) { }
vimo.inPage.execute();
}else{
function setFrameCode(unit_code, width, height,ad_container){
unit_code = ""+unit_code +""
frame = document.createElement('iframe');
//if (frame.watch){
// frame.watch('src',vimo_prevent_change);
//}
if (!ad_container){
if (!window.vimo_ad_container){
if (window.vimo_ad_container_id){
window.vimo_ad_container = document.getElementById(window.vimo_ad_container_id);
}
else if (window.va_ad_container_id){
window.vimo_ad_container = document.getElementById(window.va_ad_container_id);
}
}
try {
window.vimo_ad_container.appendChild(frame);
} catch(e) {return console.log('error in frame.js');}
} else {
ad_container.appendChild(frame);
}
set_iframe(frame, unit_code, width, height);
}
function set_iframe(frame, thehtml, width, height) {
var w = window;
if (typeof(frame) == "undefined"){
return false; //f was undefined crashing Chrome for Mac.
}
var fobj = frame;
fobj.src = "about:blank";
fobj.border = "0";
fobj.style.margin = fobj.style.padding = fobj.style.border= 0;
fobj.padding = "0";
fobj.frameBorder = 0;
fobj.marginWidth = 0;
fobj.marginHeight = 0;
fobj.vspace = 0;
fobj.hspace = 0;
fobj.scrolling = "no";
fobj.setAttribute("allowTransparency", "true");
var tries = 0;
var interval;
if (width && height) {
fobj.width = width;
fobj.height = height;
if (isNaN(width)){
fobj.style.width = width;
} else{
fobj.style.width = width + "px";
}
if (isNaN(height)){
fobj.style.height = height;
} else {
fobj.style.height = height+ "px";
}
}
if (thehtml != null){
fobj.thehtml = thehtml;
try{
var fdoc = fobj.contentWindow.document;
fdoc.open();
fdoc.write(thehtml);
setTimeout(function() { fdoc.close(); }, 16);
// setTimeout for a bug fix; for some reason the document's onload event doesn't fire if the containing element has position set, unless I add a delay...
if (typeof(test) != 'undefined' && test == true){
if (fdoc.getElementById('test') == null)
return false;
}
}catch(e){return false;}
}
return true;
}
if (window.viimo_inpage_setup_inframe && !window.viimo_inpage_setup_inframe.handled){
/* window.va_use_inframe = true;
window.viimo_inpage_setup_inframe = {
format: '728x90'
};*/
// create inpage code
var sub_id = '';
if (window.viimo_sub_id){
sub_id = window.viimo_sub_id;
}
var unit_code = '' +
'
'+
'
'+
'var ad_container = document.getElementById("viimo_container");' +
'ad_container.id = "viimo_container" + Math.floor((Math.random() * 1000) + 1);' +
'window.viimo_sub_id = "' +sub_id+ '";' +
' if (!window.viimo_inpage_setup) {' +
' window.viimo_inpage_setup = [];' +
' }' +
' window.viimo_inpage_setup.push({' +
' element_id: ad_container.id,' +
' format: "'+window.viimo_inpage_setup_inframe.format + '"' +
' });' +
'' +
'
' +
' ';
window.viimo_inpage_setup_inframe.handled = true;
ad_container = document.getElementById(window.viimo_inpage_setup_inframe.element_id);
unit_width = window.viimo_inpage_setup_inframe.format.split('x')[0];
unit_height = window.viimo_inpage_setup_inframe.format.split('x')[1];
setFrameCode(unit_code, unit_width, unit_height, ad_container);
} else {
var query_script = "";
if (window.vimo_sub_id){
query_script += "sub_id=" + window.vimo_sub_id;
}
else if(window.va_sub_id){
query_script += "sub_id=" + window.va_sub_id ;
}
if (window.vimo_pr){
if (query_script != ""){ query_script += "&" }
query_script += "pr=" + window.vimo_pr;
}
else if(window.va_pr){
if (query_script != ""){ query_script += "&" }
query_script += "pr=" + window.va_pr;
}
if (window.vimo_um){
if (query_script != ""){ query_script += "&" }
query_script += "um=" + window.vimo_um;
}
else if (window.va_um){
if (query_script != ""){ query_script += "&" }
query_script += "um=" + window.va_um;
}
if (window.vimo_umu){
if (query_script != ""){ query_script += "&" }
query_script += "umu=" + window.vimo_umu;
}
else if (window.va_umu){
if (query_script != ""){ query_script += "&" }
query_script += "umu=" + window.va_umu;
}
if (query_script != ""){
query_script = "?" + query_script;
}
var format = "";
var unit_height;
var unit_width;
if(window.vimo_unit_width && window.vimo_unit_height){
format = window.vimo_unit_width + "x" + window.vimo_unit_height;
unit_height = window.vimo_unit_height;
unit_width = window.vimo_unit_width;
}
else if(window.va_unit_width && window.va_unit_height){
format = window.va_unit_width + "x" + window.va_unit_height;
unit_height = window.va_unit_height;
unit_width = window.va_unit_width;
}
var unit_code = ' ';
setFrameCode(unit_code, unit_width, unit_height);
}
}