Idle Egg Factory v2.1.5版本的 MD5 值为:7d2ba6677008ca521af0101bb927d72a
以下内容为反编译后的 e.java 源代码,内容仅作参考
package com.safedk.android.analytics.brandsafety.creatives.discoveries;
import android.os.Bundle;
import android.text.TextUtils;
import com.safedk.android.analytics.brandsafety.BrandSafetyUtils;
import com.safedk.android.analytics.brandsafety.creatives.AdNetworkConfiguration;
import com.safedk.android.analytics.brandsafety.creatives.AdNetworkDiscovery;
import com.safedk.android.analytics.brandsafety.creatives.CreativeInfoManager;
import com.safedk.android.analytics.brandsafety.creatives.VastAdTagUri;
import com.safedk.android.analytics.brandsafety.creatives.discoveries.c;
import com.safedk.android.analytics.brandsafety.creatives.g;
import com.safedk.android.analytics.brandsafety.creatives.infos.CreativeInfo;
import com.safedk.android.analytics.brandsafety.creatives.infos.InMobiCreativeInfo;
import com.safedk.android.analytics.events.BrandSafetyEvent;
import com.safedk.android.utils.Logger;
import com.safedk.android.utils.j;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import org.json.JSONArray;
import org.json.JSONObject;
public class e extends d {
private static final String A = "adtype";
private static final String B = "metaInfo";
private static final String C = "omsdkInfo";
private static final String D = "macros";
private static final String E = "$PLACEMENT_DIMENSION";
private static final String F = "content";
private static final String G = "com.inmobi.ads.rendering.InMobiAdActivity.IN_APP_BROWSER_URL";
private static final float H = 0.3f;
private static final Map<String, VastAdTagUri> I = new HashMap();
private static final Map<String, CreativeInfo> J = new HashMap();
private static final Map<String, CreativeInfo> K = new HashMap();
private static final Map<String, CreativeInfo> L = new HashMap();
private static final Map<String, CreativeInfo> M = new HashMap();
private static final Map<String, String> N = new HashMap();
private static final Pattern O = Pattern.compile("impressionBeacons: \\[(.*?)\\]");
public static final String b = "vast/multiple_ads";
public static final String c = "/ad_count_#";
public static final String k = "/multiple_ads";
private static final String l = "InMobiDiscovery";
private static final String m = "placementId";
private static final String n = "ads";
private static final String o = "adSets";
private static final String p = "creativeId";
private static final String q = "impressionId";
private static final String r = "bidBundle";
private static final String s = "pubContent";
private static final String t = "requestId";
private static final String u = ".w.inmobi.com/c.asm/";
private static final String v = "banner";
private static final String w = "com.applovin.mediation.adapters.InMobiMediationAdapter";
private static final String x = "ads.inmobi.com/sdk";
private static final String y = "client-request-id";
private static final String z = "im-plid";
public e() {
super(com.safedk.android.utils.f.i, l, false);
this.d.b(AdNetworkConfiguration.SUPPORTS_PREFETCH_RECEIVING_BY_APPLOVIN, true);
this.d.b(AdNetworkConfiguration.SHOULD_UPDATE_CREATIVE_INFO_FROM_VAST, false);
this.d.b(AdNetworkConfiguration.SUPPORTS_GZIP_CONTENT, true);
this.d.b(AdNetworkConfiguration.SUPPORTS_JAVASCRIPT_BASED_VIDEO_STATE_DETECTION, true);
this.d.b(AdNetworkConfiguration.AD_NETWORK_SUPPORTS_PREFETCH_REUSE, true);
this.d.a(AdNetworkConfiguration.BITMAP_SCAN_BOTTOM_MARGIN_PERCENT, H);
this.d.b(AdNetworkConfiguration.BITMAP_SCAN_SHOULD_CHECK_FOR_GREYSCALE, true);
this.d.b(AdNetworkConfiguration.ENFORCE_CLOSE_INPUT_STREAM_VAST_IN_VAST, true);
this.d.b(AdNetworkConfiguration.SUPPORTS_BANNER_IMPRESSION_TRACKING, true);
this.d.b(AdNetworkConfiguration.SUPPORTS_BIDDING_INTERSTITIAL_IMPRESSION_MATCHING_BY_MAX, true);
this.d.b(AdNetworkConfiguration.AVOID_CLEANING_PENDING_CI_LIST_ON_AD_END, true);
this.d.b(AdNetworkConfiguration.AD_NETWORK_INTERNAL_BROWSER_OPENS_IN_SAME_ACTIVITY, true);
this.d.b(AdNetworkConfiguration.DETECT_BANNER_MULTIPLE_ADS_BY_WEB_VIEW_CHANGE, true);
this.d.b(AdNetworkConfiguration.SHOULD_USE_EARLY_VAST_AD_TAG_URI_PARSING, true);
}
@Override
protected List<CreativeInfo> b(String str, String str2, Map<String, List<String>> map, c.a aVar) {
j.b(l, "generate info started, url: " + str + ", event id: " + (aVar == null ? "" : aVar.f6815a) + ", buffer: " + str2);
if (j.s(str2)) {
if (m(str2)) {
Logger.d(l, "generate info - InMobi prefetch");
return c(str, str2, map, aVar);
}
return e(str, str2);
}
Logger.d(l, "generate info - InMobi pubContent, url: " + str);
InMobiCreativeInfo inMobiCreativeInfo = (InMobiCreativeInfo) J.remove(str);
if (inMobiCreativeInfo != null) {
a(str, str2, inMobiCreativeInfo);
return Arrays.asList(inMobiCreativeInfo);
}
Logger.d(l, "generate info - not a valid JSON string");
return new ArrayList();
}
private List<CreativeInfo> c(String str, String str2, Map<String, List<String>> map, c.a aVar) {
JSONObject jSONObject;
JSONArray jSONArray;
BrandSafetyUtils.AdType adType;
ArrayList arrayList = new ArrayList();
try {
jSONObject = new JSONObject(str2);
} catch (Throwable th) {
Logger.e(l, "error: " + th.getMessage(), th);
}
if ((!jSONObject.has(o) && !jSONObject.has("ads")) || !jSONObject.has("requestId")) {
Logger.d(l, "generate info - not a JSON prefetch");
return arrayList;
}
if (jSONObject.getJSONArray(o).length() == 0) {
Logger.d(l, "generate info - ad sets array is empty, skipping");
return arrayList;
}
String string = jSONObject.getString("requestId");
Logger.d(l, "generate info - request id: " + string);
String string2 = jSONObject.getString("placementId");
Logger.d(l, "generate info - placement id: " + string2);
j.b(l, "generate info - url: " + str + " , Headers: " + (map != null ? map.toString() : "null") + ", buffer size: " + (str2 == null ? "0" : Integer.valueOf(str2.length())) + " , buffer: " + str2);
JSONObject jSONObject2 = null;
if (jSONObject.has(o)) {
JSONArray jSONArray2 = jSONObject.getJSONArray(o);
Logger.d(l, "generate info - ad sets : " + jSONArray2.length() + " items");
if (jSONArray2.length() > 0) {
jSONObject2 = jSONArray2.getJSONObject(0);
} else {
Logger.d(l, "generate info - ad sets element has no items");
return arrayList;
}
}
if (jSONObject2 != null) {
jSONArray = jSONObject2.getJSONArray("ads");
} else if (jSONObject.has("ads") && (jSONObject.get("ads") instanceof JSONArray)) {
jSONArray = jSONObject.getJSONArray("ads");
} else {
Logger.d(l, "generate info - ads element has no items or is not an array");
return arrayList;
}
for (int i = 0; i < jSONArray.length(); i++) {
JSONObject jSONObject3 = jSONArray.getJSONObject(i);
String string3 = jSONObject3.getString(p);
Logger.d(l, "generate info - creative id: " + string3);
String string4 = jSONObject3.getString(q);
BrandSafetyUtils.AdType adType2 = null;
if (string != null && N.containsKey(string2)) {
String str3 = N.get(string2);
Logger.d(l, "generate info - placement id to ad type list contains ad type " + str3 + " for placement id " + string2);
if (str3.equals(v)) {
adType = BrandSafetyUtils.AdType.BANNER;
} else {
adType = BrandSafetyUtils.AdType.INTERSTITIAL;
}
adType2 = adType;
} else if (aVar != null && (aVar.b == BrandSafetyEvent.AdFormatType.BANNER || aVar.b == BrandSafetyEvent.AdFormatType.LEADER)) {
adType2 = BrandSafetyUtils.AdType.BANNER;
} else {
if (jSONObject3.has(B) && jSONObject3.getJSONObject(B).has(C)) {
JSONObject jSONObject4 = jSONObject3.getJSONObject(B).getJSONObject(C);
if (jSONObject4.has(D)) {
JSONObject jSONObject5 = jSONObject4.getJSONObject(D);
if (jSONObject5.has(E)) {
String string5 = jSONObject5.getString(E);
Logger.d(l, "generate info - placementDimension = " + string5);
if (string5.contains("X")) {
String[] split = string5.split("X");
int parseInt = Integer.parseInt(split[0]);
int parseInt2 = Integer.parseInt(split[1]);
if (parseInt != 0 && parseInt2 != 0 && j.a(parseInt, parseInt2)) {
adType2 = BrandSafetyUtils.AdType.BANNER;
Logger.d(l, "generate info - adtype set to BANNER : placementDimension is " + string5);
}
}
}
}
}
if (adType2 == null) {
adType2 = BrandSafetyUtils.AdType.INTERSTITIAL;
}
}
Logger.d(l, "generate info - ad type: " + (adType2 != null ? adType2.name() : "null"));
InMobiCreativeInfo inMobiCreativeInfo = new InMobiCreativeInfo(string4, string3, string2, this.h, adType2, jSONArray.length(), aVar == null ? null : aVar.b, aVar == null ? null : aVar.f6815a);
String string6 = jSONObject3.getString(s);
if (j.a((Object) string6)) {
inMobiCreativeInfo.b(Arrays.asList(string6));
inMobiCreativeInfo.q("pubContentUrl:" + string6);
Logger.d(l, "adding pubContent URL to follow: " + string6);
J.put(string6, inMobiCreativeInfo);
} else {
a(str, string6, inMobiCreativeInfo);
}
if (adType2 == BrandSafetyUtils.AdType.INTERSTITIAL) {
if (aVar == null) {
Logger.d(l, "adding interstitial ci with creative id as key (" + string3 + ")");
K.put(string3, inMobiCreativeInfo);
j.b(l, "added interstitial CI. # of cis is " + K.size() + ", impression id: " + string4 + ", creative id: " + string3 + ", CI: " + inMobiCreativeInfo.toString());
} else if (aVar.f6815a != null && string2 != null) {
String str4 = string2 + "_" + aVar.f6815a + "_" + com.safedk.android.utils.f.i;
Logger.d(l, "adding interstitial ci with complex key (" + str4 + ")");
K.put(str4, inMobiCreativeInfo);
inMobiCreativeInfo.d(aVar.f6815a);
j.b(l, "added interstitial CI. # of cis is " + K.size() + ", impression id: " + string4 + ", complex key: " + str4 + ", CI: " + inMobiCreativeInfo.toString());
} else {
Logger.d(l, "placementId and/or eventId are missing, cannot process ci");
}
} else if (adType2 == BrandSafetyUtils.AdType.BANNER && aVar != null && aVar.f6815a != null) {
String str5 = string2 + "_" + aVar.f6815a + "_" + com.safedk.android.utils.f.i;
Logger.d(l, "adding banner ci with complex key (" + str5 + ")");
L.put(str5, inMobiCreativeInfo);
j.b(l, "added banner CI. # of cis is " + L.size() + ", impression id: " + string4 + ", complex key: " + str5 + ", CI: " + inMobiCreativeInfo.toString());
}
Logger.d(l, "recent creative IDs array item added. Key = " + string3);
arrayList.add(inMobiCreativeInfo);
}
return arrayList;
}
private void a(String str, String str2, InMobiCreativeInfo inMobiCreativeInfo) {
ArrayList<g.a> arrayList;
List<String> list;
String j;
String i;
String str3;
if (str2 != null) {
BrandSafetyUtils.AdType y2 = inMobiCreativeInfo.y();
if (g.b(str2)) {
ArrayList<g.a> b2 = g.b(str2, true);
inMobiCreativeInfo.c(b2);
j.b(l, "vast ad infos: " + (b2 != null ? b2.toString() : "null"));
arrayList = b2;
} else {
arrayList = null;
}
boolean z2 = inMobiCreativeInfo.V() > 1 || o(str2);
Logger.d(l, "is prefetch multi ad? " + z2);
ArrayList arrayList2 = new ArrayList();
if (arrayList == null || arrayList.size() == 0) {
Logger.d(l, "no vast info detected in prefetch");
List<String> a2 = a((CreativeInfo) inMobiCreativeInfo, str2);
inMobiCreativeInfo.c(z2 ? "mraid" + c.replace("#", String.valueOf(inMobiCreativeInfo.V())) : "mraid");
if (inMobiCreativeInfo.A() == null && (i = i(str2)) != null) {
inMobiCreativeInfo.p(i);
}
if (inMobiCreativeInfo.w() == null && (j = j(str2)) != null) {
inMobiCreativeInfo.n(j);
}
list = a2;
} else if (arrayList.size() == 1 && !z2) {
Logger.d(l, "prefetch has vast info");
g.a aVar = arrayList.get(0);
aVar.c(aVar.e());
a(inMobiCreativeInfo, aVar, str);
list = a((CreativeInfo) inMobiCreativeInfo, str2);
inMobiCreativeInfo.c(CreativeInfo.r);
inMobiCreativeInfo.c((ArrayList<g.a>) null);
} else if (arrayList.size() > 1 || z2) {
Logger.d(l, "prefetch has multiple vast infos");
List<String> a3 = a((CreativeInfo) inMobiCreativeInfo, str2);
inMobiCreativeInfo.c(b);
Iterator<g.a> it = arrayList.iterator();
while (it.hasNext()) {
g.a next = it.next();
String j2 = j.j(next.g());
Logger.d(l, "recommendation: " + j2);
if (!j.t(next.g()) || n(next.g()) == null) {
str3 = j2;
} else {
str3 = n(next.g());
Logger.d(l, "recommendation updated to " + str3);
}
inMobiCreativeInfo.a(str3);
b(inMobiCreativeInfo, str2);
}
inMobiCreativeInfo.X();
list = a3;
} else {
list = arrayList2;
}
if (list.size() > 0) {
for (String str4 : list) {
if (str4.contains(u)) {
Logger.d(l, "adding " + y2.name().toLowerCase() + " ci with url as key (" + str4 + ")");
M.put(str4, inMobiCreativeInfo);
j.b(l, "added " + y2.name().toLowerCase() + " CI. # of cis is " + M.size() + ", impressionId: " + inMobiCreativeInfo.z() + ", prefetchResource: " + str4 + ", ci = " + inMobiCreativeInfo);
}
}
}
}
}
private static List<String> a(CreativeInfo creativeInfo, String str) {
Logger.d(l, "extracting urls");
new ArrayList();
ArrayList<String> f = j.f(str);
Logger.d(l, "prefetch resources list: " + f);
Logger.d(l, "prefetch resources list after impression beacons urls removal : " + f);
creativeInfo.b((List<String>) f);
return f;
}
private List<CreativeInfo> e(String str, String str2) {
ArrayList arrayList = new ArrayList();
try {
if (!TextUtils.isEmpty(str2)) {
Logger.d(l, "generate info - InMobi vast proxy prefetch. vast ad tag proxy urls to follow: " + I.toString());
CreativeInfo creativeInfo = null;
if (I.containsKey(str)) {
Logger.d(l, "vasts proxy redirect url found: " + str);
creativeInfo = this.e.remove(I.remove(str));
}
String l2 = l(str);
Logger.d(l, "decodedUrl : " + l2);
if (creativeInfo == null && I.containsKey(l2)) {
Logger.d(l, "vasts proxy redirect url found: " + str);
creativeInfo = this.e.remove(I.remove(l2));
}
if (creativeInfo != null) {
j.b(l, "found vast proxy url: " + str + ", ci: " + creativeInfo + ", content: " + str2);
a(creativeInfo, str, str2, true);
Logger.d(l, "vast processing was done in BaseDiscovery.");
arrayList.add(creativeInfo);
return arrayList;
}
} else {
Logger.d(l, "generate info - buffer value cannot be empty, skipping.");
}
} catch (Throwable th) {
Logger.e(l, "generate info exception: " + th.getMessage(), th);
}
return arrayList;
}
@Override
protected void a(String str, VastAdTagUri vastAdTagUri) {
if (str != null) {
String[] split = str.split("://");
if (split.length == 2) {
I.put("http://vastproxy.brand.inmobi.com/g/" + split[1], vastAdTagUri);
}
}
}
@Override
protected synchronized void a(VastAdTagUri vastAdTagUri) {
if (vastAdTagUri != null) {
Iterator<Map.Entry<String, VastAdTagUri>> it = I.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, VastAdTagUri> next = it.next();
if (next.getValue().equals(vastAdTagUri)) {
Logger.d(l, "remove vast ad tag proxy uri from url to follow list: " + next.getValue());
it.remove();
}
}
}
}
@Override
public Set<String> c() {
Set<String> c2 = super.c();
c2.add("$TS");
return c2;
}
@Override
public CreativeInfo a(Object obj) {
try {
Logger.d(l, "generate info ad instance: " + obj);
} catch (Throwable th) {
Logger.d(l, "exception in generate info ad instance", th);
}
if (obj == null) {
Logger.d(l, "generate info ad instance is null");
return null;
}
String str = (String) obj;
j.b(l, "generate info ad instance " + obj + ", banner CI to ID map: " + L.keySet());
if (L.containsKey(str)) {
CreativeInfo creativeInfo = L.get(str);
Logger.d(l, "generate info ad instance - CI MATCH FOUND! by key: " + str + ", CI: " + creativeInfo.toString());
return creativeInfo;
}
Logger.d(l, "generate info ad instance - cannot find CI");
return null;
}
private boolean m(String str) {
return str.contains("requestId") && str.contains("placementId") && str.contains(o) && str.contains(p);
}
@Override
public boolean b(String str, Bundle bundle) {
try {
str = URLDecoder.decode(str, "UTF-8");
} catch (UnsupportedEncodingException e) {
}
boolean containsKey = J.containsKey(str);
if (containsKey && bundle != null) {
bundle.putString(CreativeInfoManager.f6792a, "text/html");
bundle.putString(CreativeInfoManager.b, "UTF-8");
}
VastAdTagUri vastAdTagUri = new VastAdTagUri(str);
boolean z2 = this.e.containsKey(vastAdTagUri) || g.s.contains(vastAdTagUri) || I.containsKey(str);
if (str.contains("action=skip-btn-clicked")) {
Logger.d(l, "video skipped event identified: " + str);
CreativeInfoManager.onVideoCompleted(com.safedk.android.utils.f.i, null);
}
if (!str.contains(x) && !containsKey && !z2) {
return false;
}
Logger.d(l, "should follow input stream returned true for: " + str);
return true;
}
@Override
public String b(String str, String str2) {
String n2 = j.n(str2);
Logger.d(l, "get ad id from resource started, resource: " + str2 + ", resource key: " + n2);
if (!M.containsKey(n2)) {
return null;
}
CreativeInfo creativeInfo = M.get(n2);
j.b(l, "get ad id from resource - CI identified, # of CIs: " + M.size() + ", CI: " + creativeInfo.toString());
return creativeInfo.z();
}
@Override
public boolean f(String str) {
Logger.d(l, "should ignore redirect url started. url: " + str);
if (!str.contains(u)) {
return false;
}
Logger.d(l, "should ignore redirect url - tracking url detected");
return true;
}
@Override
public int c(String str) {
return 0;
}
@Override
public void c(String str, String str2) {
}
@Override
public void a(FileInputStream fileInputStream, String str) {
}
@Override
public boolean a() {
return false;
}
@Override
public void a(Object obj, Object obj2) {
}
@Override
public String b(Object obj) {
return null;
}
@Override
public void a(FileInputStream fileInputStream, FileDescriptor fileDescriptor) {
}
@Override
protected String a(String str, CreativeInfo creativeInfo) {
return null;
}
@Override
protected boolean g(String str) {
String n2 = j.n(str);
Logger.d(l, "should follow get url key: " + n2);
return str.contains(x) || M.containsKey(n2);
}
@Override
public AdNetworkDiscovery.WebViewResourceMatchingMethod b() {
return AdNetworkDiscovery.WebViewResourceMatchingMethod.WEBVIEW_LOOKUP;
}
private String n(String str) {
Map<String, String> a2;
String str2 = null;
if (str != null && (a2 = j.a(str, false)) != null && a2.size() > 0) {
Iterator<String> it = a2.values().iterator();
while (it.hasNext()) {
str2 = it.next();
}
}
return str2;
}
@Override
public void a(String str, String str2, String str3, String str4) {
BrandSafetyEvent.AdFormatType adFormatType;
CreativeInfo creativeInfo;
Logger.d(l, "update CI details placementId=" + str + ", creativeId=" + str2 + ", eventId=" + str3 + ", adFormat=" + str4);
if (str4.equals(BrandSafetyEvent.AdFormatType.APPOPEN.name())) {
Logger.d(l, "ignoring creative info details from Max, adFormat = " + str4 + ", creativeId = " + str2 + ", placementId = " + str);
return;
}
if (str4.equals(BrandSafetyUtils.h)) {
CreativeInfo creativeInfo2 = K.get(str2);
adFormatType = BrandSafetyEvent.AdFormatType.INTER;
creativeInfo = creativeInfo2;
} else if (str4.equals(BrandSafetyUtils.i)) {
CreativeInfo creativeInfo3 = K.get(str2);
adFormatType = BrandSafetyEvent.AdFormatType.REWARD;
creativeInfo = creativeInfo3;
} else if (str4.equals("BANNER") || str4.equals(BrandSafetyUtils.l)) {
CreativeInfo creativeInfo4 = L.get(str + "_" + str3 + "_" + com.safedk.android.utils.f.i);
adFormatType = BrandSafetyEvent.AdFormatType.BANNER;
creativeInfo = creativeInfo4;
} else {
adFormatType = null;
creativeInfo = null;
}
if (adFormatType != null && creativeInfo != null) {
creativeInfo.m(adFormatType.name());
Logger.d(l, "update CI details from Max, creative id: " + str2 + ", ID: " + creativeInfo.z() + ", placement id: " + creativeInfo.s() + ", ad format type: " + adFormatType);
} else {
Logger.d(l, "failed to update CI details from Max, creative id: " + str2 + ", ad format: " + str4 + ", ad format type: " + adFormatType + ", CI: " + creativeInfo);
}
}
@Override
public String f() {
return w;
}
@Override
public boolean b(String str) {
if (!str.contains(x)) {
return false;
}
Logger.d(l, "should follow output stream returned true for url " + str);
return true;
}
@Override
public String d(String str, String str2) {
String c2;
Logger.d(l, "handle on request sent url: " + str + ", content: " + str2);
String c3 = j.c(str + "?" + str2, z);
if (c3 != null && (c2 = j.c(str + "?" + str2, A)) != null) {
Logger.d(l, "adding to placement id to ad type list - size: " + N.size() + ", placement id: " + c3 + ", ad type: " + c2);
N.put(c3, c2);
return null;
}
return null;
}
private boolean o(String str) {
Pattern compile = Pattern.compile("VAST ", 16);
Pattern compile2 = Pattern.compile("pod.vast", 16);
List<String> a2 = j.a(compile, str);
List<String> a3 = j.a(compile2, str);
if (a2 == null || a2.size() <= 1) {
return a3 != null && a3.size() > 1;
}
return true;
}
private void b(CreativeInfo creativeInfo, String str) {
List<String> a2 = j.a(Pattern.compile("........VAST .*?AdSystem", 32), str);
if (a2 != null && a2.size() > 1) {
for (String str2 : a2) {
Logger.d(l, "adding vast clause " + str2 + " to ci debug info");
creativeInfo.q(str2);
}
}
}
@Override
public List<String> g() {
List<String> g = super.g();
g.add(G);
return g;
}
@Override
public void i() {
Logger.d(l, "clear old CIs started");
super.i();
com.safedk.android.utils.e.a(K, "InMobiDiscovery:creativeToIdMap");
com.safedk.android.utils.e.a(L, "InMobiDiscovery:bannerCreativeToIdMap");
com.safedk.android.utils.e.a(M, "InMobiDiscovery:creativeToUrlMap");
com.safedk.android.utils.e.a(J, "InMobiDiscovery:pubContentUrlsToFollow");
}
}