Release 68.0.3440.126

This commit is contained in:
csagan5 2018-08-29 14:13:04 +02:00
parent e3176b1868
commit b1bc96bbd9
No known key found for this signature in database
GPG key ID: 64190A51D85DC0C5
24 changed files with 575 additions and 251 deletions

View file

@ -1,3 +1,9 @@
# 68.0.3440.126
* add option to disallow custom tab intents (fixes https://github.com/bromite/bromite/issues/117)
* add option to keep local data until browser exit (fixes https://github.com/bromite/bromite/issues/56)
* fix for do not persist tabs preference saving
* extend anti-AMP to all search results
# 68.0.3440.121
* add option to not persist tabs across sessions (fixes https://github.com/bromite/bromite/issues/106)
* always incognito mode (fixes https://github.com/bromite/bromite/issues/18)

View file

@ -19,7 +19,7 @@ struct adblock_entry {
const char **domains, **domains_skip;
};
#define ADBLOCK_ENTRY_COUNT 52704
#define ADBLOCK_ENTRY_COUNT 52775
const char *m10030a28[] = { "/InsightTrk/", NULL };
const char *m10045299[] = { "award.sitekeuring.net^", NULL };
const char *m100458cd[] = { "eluhhfyxx.com^", NULL };
@ -1464,6 +1464,7 @@ const char *m16db7b9 [] = { "/ad/index/", NULL };
const char *m16dd49a3[] = { "/full/ads/", NULL };
const char *m16de0f3b[] = { "/cramitin/ads_", NULL };
const char *m16df122e[] = { "/backend_loader.php", NULL };
const char *m16df2925[] = { "shohabiymgjxdb.com^", NULL };
const char *m16e05c38[] = { "ubuntugeek.com/images/ubuntu1.png", NULL };
const char *m16e1c637[] = { "qkuprxbmkeqp.com^", NULL };
const char *m16e1dd04[] = { "advertisingwouldbegreat.com/", ".", NULL };
@ -1514,6 +1515,7 @@ const char *m1717b8b1[] = { "atimes.com/banner/", NULL };
const char *m1719ddb3[] = { "ibqmccuuhjqc.com^", NULL };
const char *m171b49e1[] = { ".is/ads/", NULL };
const char *m171bc061[] = { "01dff0e56385455f459.com^", NULL };
const char *m171bce27[] = { "booking.com^", NULL };
const char *m171c89f3[] = { "/affiliate.linker/", NULL };
const char *m171d2be [] = { "_adverts/", NULL };
const char *m171dd0fd[] = { "kitbit.net^", NULL };
@ -1685,6 +1687,7 @@ const char *m17d8943a[] = { "phncdn.com/", "/js/likeDislike/", NULL };
const char *m17d96e91[] = { "95g804up.download^", NULL };
const char *m17da43df[] = { "hentaihaven.org/wp-content/banners/", NULL };
const char *m17ddfed0[] = { "/uberlayadrenderer.", NULL };
const char *m17de82db[] = { "ogjascdgq.com^", NULL };
const char *m17dfd2dc[] = { "atwola.com^", NULL };
const char *m17e3b964[] = { "player.1stcreditrepairs.com^", NULL };
const char *m17e43662[] = { "docin.com/app/playerLoadLog/", NULL };
@ -2330,6 +2333,7 @@ const char *m1af0ac87[] = { "adnxs.com/ut/", NULL };
const char *m1af1e11e[] = { "d-markets.net^", NULL };
const char *m1af4e76b[] = { "tower.moviepilot.com^", NULL };
const char *m1af5e127[] = { "adtools2.amakings.com^", NULL };
const char *m1af7578e[] = { "xmgrjuqqc.com^", NULL };
const char *m1af7cb82[] = { "chinadaily.com.cn/s?", NULL };
const char *m1af7e6c5[] = { "shimory.com/js/show_ads.js", NULL };
const char *m1af8e0a [] = { "piwik.pro^", NULL };
@ -2364,6 +2368,7 @@ const char *m1b15ee26[] = { "omynews.net^", NULL };
const char *m1b18a20a[] = { "windowne.info^", NULL };
const char *m1b196676[] = { "/scanscoutplugin.", NULL };
const char *m1b1b708d[] = { "/ad_content.", NULL };
const char *m1b1bfd9c[] = { "fgsjjpjhdlfthp.com^", NULL };
const char *m1b1bffff[] = { "seoradar.ro^", NULL };
const char *m1b1c4740[] = { "top10sportsites.com^", NULL };
const char *m1b1d6a79[] = { "thedirectory.co.zw/banners/", NULL };
@ -2983,6 +2988,7 @@ const char *m1de02f9e[] = { "ah77llcy.party^", NULL };
const char *m1de4f18f[] = { "support.google.com/adsense/", NULL };
const char *m1de5bf25[] = { "voyeurhit.com/js/a2210.js", NULL };
const char *m1de73269[] = { "mediaplex.com/ad/bn/", NULL };
const char *m1deaaa54[] = { "dieohupl.com^", NULL };
const char *m1deabd7d[] = { "analytics.atomiconline.com/services/jquery.js", NULL };
const char *m1deada94[] = { "crowdtwist.com^", NULL };
const char *m1debb1 [] = { "gibts-hier.com/counter.php", NULL };
@ -3789,6 +3795,7 @@ const char *m218f2cc3[] = { "jutbdkjc.bid^", NULL };
const char *m218fa620[] = { "nuttynewstoday.com/images/hostwink.jpg", NULL };
const char *m2191c481[] = { "/adbucket.", NULL };
const char *m21940cf5[] = { "hclips.com/js/advertising.js", NULL };
const char *m219646e2[] = { "zzmyypjedpfxck.com^", NULL };
const char *m2196a373[] = { "vipbox.tv/blackwhite/", NULL };
const char *m2196d7c9[] = { "/adframebottom.", NULL };
const char *m21979415[] = { "b54m4qbmt0b9.com^", NULL };
@ -5439,6 +5446,7 @@ const char *m292603a3[] = { "hbfnmcncnasfb.bid^", NULL };
const char *m2926c206[] = { "counter.top.ge^", NULL };
const char *m2928b3ec[] = { "/lbl_ad.", NULL };
const char *m2929ac7e[] = { "/adview.", NULL };
const char *m292f7c23[] = { "games2rule.com/node_modules/", NULL };
const char *m2931ca74[] = { "awmpartners.com^", NULL };
const char *m2932491 [] = { "extremetube.com/player_related?", NULL };
const char *m2932704c[] = { "evtfjieqjhvf.com^", NULL };
@ -6164,6 +6172,7 @@ const char *m2c9dad60[] = { "itracking.fccinteractive.com^", NULL };
const char *m2c9e3ecb[] = { "vibeo.to^", NULL };
const char *m2c9e8db [] = { "zsxwpotlxihvk.com^", NULL };
const char *m2c9ef8fb[] = { "/ad-studio/", NULL };
const char *m2c9fc2de[] = { "elwbhndbxfqk.com^", NULL };
const char *m2ca12a9d[] = { "/s.gif?t=", NULL };
const char *m2ca3b3d1[] = { "_onlinead_", NULL };
const char *m2ca3e71c[] = { "bigeddieradio.com/uploads/sponsors/", NULL };
@ -6314,6 +6323,7 @@ const char *m2d56c7c2[] = { "lixzmpxjilqp.com^", NULL };
const char *m2d570e6e[] = { "jivox.com^", NULL };
const char *m2d5a0988[] = { "telegraphindia.com^", "^native-content^", NULL };
const char *m2d5a2153[] = { "games.latimes.com/Scripts/advert.js", NULL };
const char *m2d5a7c32[] = { "derqboxqca.com^", NULL };
const char *m2d5abdb6[] = { "/popupad/", NULL };
const char *m2d5bfed2[] = { "pb.i.sogou.com^", NULL };
const char *m2d5c221e[] = { "gorillavid.in/script/ad.js", NULL };
@ -6626,6 +6636,7 @@ const char *m2ebda69b[] = { "kxtkfkqkrzz.bid^", NULL };
const char *m2ebee166[] = { "perfectmoney.com/img/banners/", NULL };
const char *m2ebf6566[] = { "bluehost-cdn.com/media/partner/images/", NULL };
const char *m2ec1e986[] = { "ads.kelbymediagroup.com^", NULL };
const char *m2ec4a500[] = { "kwsmqtposrub.com^", NULL };
const char *m2ec50a8a[] = { "advertmarketing.com^", NULL };
const char *m2ec5aabe[] = { "admanage.com^", NULL };
const char *m2ec65fda[] = { "remo-xp.com/wp-content/themes/adsense-boqpod/style.css", NULL };
@ -7436,6 +7447,7 @@ const char *m326c2b03[] = { "zoossoft.net^", NULL };
const char *m326d6571[] = { "urbanlist.com/event/track-first-view/", NULL };
const char *m326e9dac[] = { "hdporn.net/images/hd-porn-banner.gif", NULL };
const char *m326eb0ca[] = { "lw2.gamecopyworld.com^", NULL };
const char *m326f841b[] = { "qytabshszekf.com^", NULL };
const char *m32700197[] = { "ckqkwhampiyb.com^", NULL };
const char *m32701208[] = { "bannersng.yell.com^", NULL };
const char *m327309fd[] = { "hyxhxnlqeppn.com^", NULL };
@ -8587,11 +8599,13 @@ const char *m37d51ad4[] = { "/adexample?", NULL };
const char *m37d6d753[] = { "cctv.com/js/cntv_Advertise.js", NULL };
const char *m37d72b4a[] = { "crzhxquiyo.com^", NULL };
const char *m37d7d345[] = { "fvffhcyxc.com^", NULL };
const char *m37daf4a0[] = { "nidksyrrrtckzj.com^", NULL };
const char *m37dbc779[] = { ".openxtag.", NULL };
const char *m37dcd83b[] = { "g.doubleclick.net/gampad/ads?gdfp_req=1&", NULL };
const char *m37e071b1[] = { "exogripper.com^", NULL };
const char *m37e0ed7a[] = { "tv5monde.com/cms/javascript/", "/sitestat.js", NULL };
const char *m37e14fdf[] = { "wtp101.com^", NULL };
const char *m37e2f57c[] = { "putlocker.", "^", "banner", NULL };
const char *m37e4866e[] = { "nbhbqvfcsds.com^", NULL };
const char *m37e554e4[] = { "stats.webs.com^", NULL };
const char *m37e647e [] = { "readynutrition.com^", "^banners^", NULL };
@ -9109,6 +9123,7 @@ const char *m3a51f210[] = { "wwznjjvkfqnyvy.com^", NULL };
const char *m3a52c01d[] = { "thaivisa.com/promotions/banners/", NULL };
const char *m3a549293[] = { "highcpms.com^", NULL };
const char *m3a5631d6[] = { "molqvpnnlmnb.com^", NULL };
const char *m3a564e1f[] = { "xmlqerwrehfqo.com^", NULL };
const char *m3a568741[] = { "unrummaged.com^", NULL };
const char *m3a5757b7[] = { "qblpxxcjusgmq.bid^", NULL };
const char *m3a584d5e[] = { "gogousenet.com^", "^promo.cgi", NULL };
@ -9413,6 +9428,7 @@ const char *m3bed4945[] = { "etacontent.com^", NULL };
const char *m3bed5cd4[] = { "/ads/widebanner.", NULL };
const char *m3bedfc1c[] = { "etherealhakai.com^", NULL };
const char *m3beee322[] = { "segmentnext.com/javascripts/interstitial.client.js", NULL };
const char *m3befffee[] = { "ftuohzeijbkm.com^", NULL };
const char *m3bf20a46[] = { "bvnekcpa.bid^", NULL };
const char *m3bf245ea[] = { "depositfiles.com^", ".php^ref^", NULL };
const char *m3bf67336[] = { "21sexturycash.com^", NULL };
@ -9786,6 +9802,7 @@ const char *m3da7926b[] = { "panelsave.com^", NULL };
const char *m3da7c472[] = { "gamesgames.com^", "^advertisement.js", NULL };
const char *m3da856b8[] = { "btrll.com^", NULL };
const char *m3da9cf52[] = { "/ad-page/", NULL };
const char *m3daa345 [] = { "afgbvhocfvpm.com^", NULL };
const char *m3dac4c1b[] = { "livetraf.com^", NULL };
const char *m3dad7038[] = { "wmwkwubufart.com^", NULL };
const char *m3daee697[] = { "^right_ad^", NULL };
@ -10135,6 +10152,7 @@ const char *m3f32689e[] = { "_blogads.", NULL };
const char *m3f32fced[] = { "adsmedia.life^", NULL };
const char *m3f334d49[] = { "pop.advecs.com^", NULL };
const char *m3f33581c[] = { "jshjrozmwmyj.com^", NULL };
const char *m3f35b450[] = { "tzyvolvenvyim.com^", NULL };
const char *m3f36468 [] = { "imageadvantage.net^", NULL };
const char *m3f378e1f[] = { "lifedaily.com/prebid.js", NULL };
const char *m3f38b38b[] = { "ad.winningpartner.com^", NULL };
@ -11011,6 +11029,7 @@ const char *m433b0cbf[] = { "bbci.co.uk/bbcdotcom/", "/script/av/emp/analytics.j
const char *m433bfba8[] = { "evisitanalyst.com^", NULL };
const char *m433d8ae0[] = { "/adprime.", NULL };
const char *m433f57da[] = { "volgograd-info.ru^", NULL };
const char *m433fde56[] = { "/prebid14.js", NULL };
const char *m43403b7 [] = { "facebook.com/xti.php?", NULL };
const char *m434098c6[] = { "yahoo.com/neo/stat", NULL };
const char *m4341c258[] = { "imrwxmau.com^", NULL };
@ -11704,6 +11723,7 @@ const char *m467b7d29[] = { "/subadz.", NULL };
const char *m467b83e2[] = { "br.realitykings.com^", NULL };
const char *m467d6a6d[] = { "/ad/b_view?", NULL };
const char *m46817887[] = { "brand.net^", NULL };
const char *m46825f93[] = { "wgssxjoac.com^", NULL };
const char *m46826233[] = { "vortex.accuweather.com^", "_160x600_bg.jpg", NULL };
const char *m4682bb53[] = { "a135.wftv.com^", NULL };
const char *m4683eb1f[] = { "streetinsider.com/", ".php?", NULL };
@ -12249,6 +12269,7 @@ const char *m48e9fa85[] = { "swiftypecdn.com/te.js", NULL };
const char *m48eb1b00[] = { "nativeleads.net^", NULL };
const char *m48eb5f46[] = { "vinub.com^", NULL };
const char *m48ec08fd[] = { "jobsearch.careerone.com.au^", "^bannerad.asmx^", NULL };
const char *m48ec6761[] = { "looopings.nl/adsbygoogle.js", NULL };
const char *m48ed5ec0[] = { "/frontads/", NULL };
const char *m48ef5747[] = { "/gigyatargetad.", NULL };
const char *m48f071fb[] = { "_ad_250.", NULL };
@ -12782,6 +12803,7 @@ const char *m4b8e9bc6[] = { "howcast.com/flash/assets/ads/liverail.swf", NULL };
const char *m4b8f3382[] = { "stats.blogoscoop.net^", NULL };
const char *m4b9074e6[] = { "ketoo.com^", NULL };
const char *m4b91209b[] = { "scgyndrujhzf.com^", NULL };
const char *m4b920e20[] = { "st.bebi.com/bebi_", ".js", NULL };
const char *m4b92e354[] = { ";adsense_", NULL };
const char *m4b9312ef[] = { "i-mobile.co.jp^", NULL };
const char *m4b97ec4e[] = { "dclmmbjyshy.com^", NULL };
@ -12892,6 +12914,7 @@ const char *m4c1c5fcd[] = { "analytics.ooyala.com^", NULL };
const char *m4c1cf93b[] = { "/audience-science.", NULL };
const char *m4c1d90da[] = { "gigya.com^", "^cimp.gif^", NULL };
const char *m4c2223 [] = { "/i2a.js", NULL };
const char *m4c226c65[] = { "wawlfosfkdy.com^", NULL };
const char *m4c227d78[] = { "/pilot_ad.", NULL };
const char *m4c23b254[] = { "easypic.com/js/easypicads.js", NULL };
const char *m4c23fce2[] = { "track.sprinklecontent.com^", NULL };
@ -13686,6 +13709,7 @@ const char *m4fcfbb34[] = { "jngnaymz.com^", NULL };
const char *m4fd0081e[] = { "/directadvert-", NULL };
const char *m4fd128d [] = { "mediaticks.com/bollywood.jpg", NULL };
const char *m4fd2479b[] = { "ulrryqpp.com^", NULL };
const char *m4fd2489d[] = { "zgwuvfye.com^", NULL };
const char *m4fd2a885[] = { "maps.googleapis.com^", NULL };
const char *m4fd4c0ba[] = { "etggealva.com^", NULL };
const char *m4fd50d76[] = { "svapqzplbwjx.com^", NULL };
@ -14393,6 +14417,7 @@ const char *m53123342[] = { "xcsgthqj.bid^", NULL };
const char *m53156880[] = { "hello.staticstuff.net^", NULL };
const char *m53197f50[] = { "xddgratis.com/adframe.js", NULL };
const char *m5319e3e0[] = { "peypcjxllo.bid^", NULL };
const char *m5319f28d[] = { "hjjdmohuzp.com^", NULL };
const char *m531a2a42[] = { "bollywoodshaadis.com/js/ads.js", NULL };
const char *m531d47a0[] = { "imgur.com/albumview.gif?", NULL };
const char *m531db7f1[] = { "betway.com/snowflake/?", NULL };
@ -14438,6 +14463,7 @@ const char *m5349c2a1[] = { "mobatory.com^", NULL };
const char *m534bbdbd[] = { "sxlzcvqfeacy.com^", NULL };
const char *m534bd154[] = { "vtracker.net^", NULL };
const char *m534cc17f[] = { "/ck.php?nids", NULL };
const char *m534cc702[] = { "brfyubakyg.com^", NULL };
const char *m53528b85[] = { "/evercookie_", NULL };
const char *m5352d4d3[] = { "-ads2.htm", NULL };
const char *m5352f487[] = { "flopturnriver.com", "/banners/", NULL };
@ -14546,6 +14572,7 @@ const char *m53c19275[] = { "/zanox_ad/", NULL };
const char *m53c31bf [] = { "/cnt/start.php?", NULL };
const char *m53c3e610[] = { "blogcounter.com^", NULL };
const char *m53c457e0[] = { "ffvbcwueh.com^", NULL };
const char *m53c47064[] = { "slwclrwmruuxav.com^", NULL };
const char *m53c48c0f[] = { "mysdcc.sdccd.edu^", "^.log^", NULL };
const char *m53c545af[] = { "/bbad8.", NULL };
const char *m53c712a7[] = { "/comscore_stats.", NULL };
@ -14900,6 +14927,7 @@ const char *m5547c1b3[] = { "infinite-ads.com^", NULL };
const char *m554afc72[] = { "wiwo.de/analytics/", NULL };
const char *m554d3d75[] = { "comunicazio.com^", NULL };
const char *m554d49bf[] = { "gverjfuapaag.com^", NULL };
const char *m554d5a85[] = { "gouowkjmewn.com^", NULL };
const char *m554dd244[] = { "?_siteid=", NULL };
const char *m554de5f5[] = { "redtube.com/js/redtube.js?", NULL };
const char *m554e8e5d[] = { "lypn.com^", NULL };
@ -14943,6 +14971,7 @@ const char *m556c3040[] = { "dnqejgrbtlxe.com^", NULL };
const char *m556d8363[] = { "/ad_support.", NULL };
const char *m556f4297[] = { "cgicounter.onlinehome.de^", NULL };
const char *m556f776a[] = { "/affiliate.1800flowers.", NULL };
const char *m5570f72b[] = { "zbsqhxyjlh.com^", NULL };
const char *m55720a2a[] = { "unaspajas.com^", NULL };
const char *m55727f15[] = { "/adplayer-", NULL };
const char *m557352b8[] = { "ads.eatinparis.com^", NULL };
@ -15115,6 +15144,7 @@ const char *m56459607[] = { "xjfjx8hw.com^", NULL };
const char *m564611ef[] = { "oaqaxjmyuxkpm.com^", NULL };
const char *m5646648d[] = { "/_dts.gif?", NULL };
const char *m56492854[] = { "counterlevel.de^", NULL };
const char *m564b4d27[] = { "remistrainew.club^", NULL };
const char *m564cb842[] = { "/szm_mclient.js", NULL };
const char *m5651acdb[] = { "/rotatoradbottom.", NULL };
const char *m565369bd[] = { "eatsleepsport.com/images/manorgaming1.jpg", NULL };
@ -15485,6 +15515,7 @@ const char *m5820f9ee[] = { "ddhnjkaojrcv.bid^", NULL };
const char *m582113a [] = { "proxy-youtube.net/mih_", NULL };
const char *m58228f21[] = { "marengo-uniontimes.com/images/banners/", NULL };
const char *m58242943[] = { "blackshoppingchannel.com^", "^ad_agency^", NULL };
const char *m5824f4db[] = { "cjgpifztileh.com^", NULL };
const char *m58251c7a[] = { "ef5ahgoo.com^", NULL };
const char *m58256671[] = { "ads.betfair.com^", NULL };
const char *m58261533[] = { "smilyes4u.com^", NULL };
@ -17021,6 +17052,7 @@ const char *m5f64c392[] = { "hhdbbixxs.bid^", NULL };
const char *m5f64df30[] = { "afternoondc.in/banners/", NULL };
const char *m5f65413e[] = { "/detm_adobe.", NULL };
const char *m5f673255[] = { "tzelsvxtjvy.com^", NULL };
const char *m5f684563[] = { "hdoabbjyyebca.com^", NULL };
const char *m5f686c67[] = { "/ads/vip_", NULL };
const char *m5f69ba0f[] = { "radar-toulouse.fr/advertisement.js", NULL };
const char *m5f6a0991[] = { "xmr.cool^", NULL };
@ -17091,6 +17123,7 @@ const char *m5fb7dc4b[] = { "641198810fae7.com^", NULL };
const char *m5fb8164b[] = { ".org/pops.js", NULL };
const char *m5fb8cfff[] = { "/sr.ads.", NULL };
const char *m5fbab5f4[] = { "all-top.ru/cgi-bin/topcount.cgi?", NULL };
const char *m5fbebc31[] = { "hoyqhygv.com^", NULL };
const char *m5fbfdbc2[] = { "/cdn/adx/", NULL };
const char *m5fc289f8[] = { "rev2pub.com^", NULL };
const char *m5fc346e1[] = { "ads.vnumedia.com^", NULL };
@ -17693,6 +17726,7 @@ const char *m62597c40[] = { "walprater.com^", NULL };
const char *m625bfd8e[] = { "/bansrc/", NULL };
const char *m625c5deb[] = { "ad.outsidehub.com^", NULL };
const char *m625cde31[] = { "ads.youtube.com^", NULL };
const char *m625defa6[] = { "mcaybfrnrqpmv.com^", NULL };
const char *m625fa870[] = { "marketshot.com^", NULL };
const char *m625fb261[] = { "173.199.120.7/delivery/", NULL };
const char *m62602d77[] = { "xubqqaqhotit.com^", NULL };
@ -18578,6 +18612,7 @@ const char *m663978e2[] = { "/jamnboad.", NULL };
const char *m663b5507[] = { "vedomosti.ru/assets/vendors/adriver.media-", NULL };
const char *m663ea553[] = { "idexoro.info^", NULL };
const char *m663f865b[] = { "webstatistieken.xs4all.nl^", NULL };
const char *m66407a2d[] = { "hfslmsbj.com^", NULL };
const char *m6640fe00[] = { "convertro.com^", NULL };
const char *m6641a812[] = { "drunkard.com/banners/modern-drunkard-book.jpg", NULL };
const char *m6641cd13[] = { "rstg.io^", NULL };
@ -19812,7 +19847,6 @@ const char *m6bdf38d7[] = { "_728x90_", NULL };
const char *m6be09e93[] = { "nyugalits.info^", NULL };
const char *m6be14af0[] = { "/php/ads/", NULL };
const char *m6be2051f[] = { "/code/script/back.php", NULL };
const char *m6be34010[] = { "ranking-street.de^", NULL };
const char *m6be3fe00[] = { "vortez.co.uk^", "120x600.swf", NULL };
const char *m6be40543[] = { "usemax.de^", NULL };
const char *m6be9455b[] = { "ads.mmania.com^", NULL };
@ -20043,6 +20077,7 @@ const char *m6cfc507c[] = { "forads.pl^", NULL };
const char *m6cfc7c08[] = { "w88.m.espn.go.com^", NULL };
const char *m6cfcce87[] = { "kioxprngouirqu.com^", NULL };
const char *m6cfe95c [] = { "vstats.co^", NULL };
const char *m6d01dc41[] = { "llpdtbmowsg.com^", NULL };
const char *m6d01f5e9[] = { "blackpressusa.com^", "300x250.", NULL };
const char *m6d04088c[] = { "beamkite.com^", NULL };
const char *m6d0430ae[] = { "mosaicolor.website^", NULL };
@ -20369,6 +20404,7 @@ const char *m6e8958c1[] = { "raz-raz-mataz.com^", NULL };
const char *m6e89b638[] = { "phncdn.com/cb/youpornwebfront/css/skin.css", NULL };
const char *m6e8ac90b[] = { "/ad/960x60.", NULL };
const char *m6e8cd24e[] = { "alternativeadverts.com^", NULL };
const char *m6e8cf432[] = { "kgkkfrvujnqf.com^", NULL };
const char *m6e8e0b00[] = { "readcomiconline.to^", "^jquery.tools.min.js", NULL };
const char *m6e91416e[] = { "/adfolder/", NULL };
const char *m6e91611a[] = { "erckgobvi.com^", NULL };
@ -24298,6 +24334,7 @@ const char *m809cd6b9[] = { "/img-ads/", NULL };
const char *m809ce549[] = { "/micro.php?action=view&", NULL };
const char *m809f05a [] = { "tmgr.ccmbg.com^", NULL };
const char *m809f5359[] = { "/mixpanel_tracker.", NULL };
const char *m809f8099[] = { "mdulmrphzsnvw.com^", NULL };
const char *m809fb68 [] = { "/adsnative_", NULL };
const char *m80a03d68[] = { "cloudfront.net/autotracker", NULL };
const char *m80a5413a[] = { "/admicro_", NULL };
@ -24670,6 +24707,7 @@ const char *m826f04b [] = { "scmffjmashzc.com^", NULL };
const char *m8270e11 [] = { "webcams.com/js/im_popup.php?", NULL };
const char *m82713b76[] = { "hvagzrssrcze.com^", NULL };
const char *m8272417d[] = { "watchseries-online.se/jquery.js", NULL };
const char *m82726bad[] = { "rkczvumivvb.com^", NULL };
const char *m82748b48[] = { "havamedia.net^", NULL };
const char *m8274cf75[] = { "gallery.deskbabes.com^", ".php^dir^", "^ids^", NULL };
const char *m827598fc[] = { "b.bedop.com^", NULL };
@ -25638,6 +25676,7 @@ const char *m871e2c69[] = { "stats.harpercollins.com^", NULL };
const char *m871ec598[] = { "xooimg.com/magesy/js-cdn/adblock.js", NULL };
const char *m8720829d[] = { "ttdaz.xyz^", NULL };
const char *m8722875b[] = { "freedownloadscenter.com^", "^empty.gif^", NULL };
const char *m87256008[] = { "pvpqgjkgvszq.com^", NULL };
const char *m8725fd4a[] = { "qcjphhqwl.com^", NULL };
const char *m8727892c[] = { "connextra.com^", NULL };
const char *m8729ad73[] = { "networld.hk^", NULL };
@ -26919,6 +26958,7 @@ const char *m8d47bfa1[] = { "vapeworld.com^", "^banners^", NULL };
const char *m8d47cd0a[] = { "a4dtrk.com^", NULL };
const char *m8d492f6a[] = { "akipress.com/_ban/", NULL };
const char *m8d49cda8[] = { "clipurl.club^", NULL };
const char *m8d4a8664[] = { "/mod_ablockdetector/", NULL };
const char *m8d4b87e5[] = { ".twoads.", NULL };
const char *m8d4c4a01[] = { "_300x250-", NULL };
const char *m8d4d6213[] = { "ah-ha.com^", NULL };
@ -27056,6 +27096,7 @@ const char *m8df46bfc[] = { "lukir.info^", NULL };
const char *m8df4bdd9[] = { "apnonline.com.au/img/marketplace/", "_ct50x50.gif", NULL };
const char *m8df4f054[] = { "zindas.info^", NULL };
const char *m8df5c3e5[] = { "visitorpath.com^", NULL };
const char *m8df66676[] = { "weqfcudxrrbwn.com^", NULL };
const char *m8df80a04[] = { "extole.io^", NULL };
const char *m8df87bcd[] = { "-advert3.", NULL };
const char *m8df8842 [] = { "ipcount.net^", NULL };
@ -27944,6 +27985,7 @@ const char *m91e367cc[] = { "negdrvgo.com^", NULL };
const char *m91e5301d[] = { "/sample728x90ad.", NULL };
const char *m91e55394[] = { "kfjgnunsuy.bid^", NULL };
const char *m91e6a8e9[] = { "muzotur.info^", NULL };
const char *m91e9170a[] = { "kickasskatcr.bid/sw.js", NULL };
const char *m91e99449[] = { "/ad/", "&ifid=", NULL };
const char *m91eb00b7[] = { "extensoft.com/artisteer/banners/", NULL };
const char *m91eb10e [] = { "/sitecounter/counter.", NULL };
@ -28677,6 +28719,7 @@ const char *m95888d88[] = { "/ad_120_", NULL };
const char *m9588bf09[] = { "4affiliate.net^", NULL };
const char *m95890c83[] = { "ndpegjgxzbbv.com^", NULL };
const char *m958a52d5[] = { "_ad_bottom.", NULL };
const char *m958b5f9b[] = { "fuaawvoqbzza.com^", NULL };
const char *m958bc01f[] = { "fc7fc652fed6.online^", NULL };
const char *m958efda6[] = { "jdoqocy.com/placeholder-", NULL };
const char *m958fd854[] = { "linkshighway.com^", NULL };
@ -29153,6 +29196,7 @@ const char *m97cd6768[] = { "adigniter.org^", NULL };
const char *m97ce95de[] = { "qctltbnn.com^", NULL };
const char *m97d06dad[] = { "xtgreat.com^", NULL };
const char *m97d0aee6[] = { "/adspot/", NULL };
const char *m97d1e12a[] = { "pmohsibnim.com^", NULL };
const char *m97d24654[] = { "ujebryyesbeymm.bid^", NULL };
const char *m97d35c0 [] = { "searchfeed.com^", NULL };
const char *m97d3ae5e[] = { "zonearmour4u.link^", NULL };
@ -30857,6 +30901,7 @@ const char *ma00b18dd[] = { "/wtbase.js", NULL };
const char *ma00b8c13[] = { "demonoid.pw/cached/code.js", NULL };
const char *ma00bc511[] = { "/pcount.asp", NULL };
const char *ma00d1817[] = { "spotrails.com^", "^flowplayeradplayerplugin.swf", NULL };
const char *ma00e5215[] = { "i.trackmytarget.com^", NULL };
const char *ma00f5e22[] = { "fairfax.com.au/js/track/", NULL };
const char *ma00facdd[] = { "7f8e91975bdc9c5f1c.com^", NULL };
const char *ma01049be[] = { "pcauthority.com.au^", "^skins^", NULL };
@ -31110,6 +31155,7 @@ const char *ma11e5b13[] = { "/ads09a/", NULL };
const char *ma121cdbd[] = { "api.140proof.com^", NULL };
const char *ma1221299[] = { "/pingd?", NULL };
const char *ma12581b [] = { "ovcksawwem.com^", NULL };
const char *ma125992e[] = { "zencdn.net^", NULL };
const char *ma125bab9[] = { "/marketing/banners/", NULL };
const char *ma12671a [] = { "/userads/", NULL };
const char *ma127aebb[] = { "vxuradoiwrwqga.bid^", NULL };
@ -31517,6 +31563,7 @@ const char *ma2faa2f5[] = { "snowplow-collector.sugarops.com^", NULL };
const char *ma2faa7bf[] = { "hittracker.org/counter.php", NULL };
const char *ma2fc46e3[] = { "brothersoft.com/softsale/", NULL };
const char *ma2fcbaa2[] = { "/getsidpixeltag?sid=", NULL };
const char *ma2fcf88 [] = { "xdonzpjglqxi.com^", NULL };
const char *ma2fd0a11[] = { "jqwww.download^", NULL };
const char *ma2fde934[] = { "busyd5s0.faith^", NULL };
const char *ma2fdf356[] = { "g22rbb7.com^", NULL };
@ -31562,6 +31609,7 @@ const char *ma32306a [] = { "bonitrust.de^", NULL };
const char *ma3230bfe[] = { "3.cn/cesu/r?", NULL };
const char *ma3230d62[] = { "begbkbqywd.bid^", NULL };
const char *ma3236524[] = { "/affs?affid=", NULL };
const char *ma323f44e[] = { "khdmabhykmj.com^", NULL };
const char *ma324dfe3[] = { "/CustomTrackingScript.", NULL };
const char *ma3274700[] = { "_text_ads.", NULL };
const char *ma32898e3[] = { "0pixl.com^", NULL };
@ -34643,6 +34691,7 @@ const char *mb120ff57[] = { "track.zomato.com^", NULL };
const char *mb121ae52[] = { "tradelab.fr^", NULL };
const char *mb1233dba[] = { "d34rdvn2ky3gnm.cloudfront.net^", NULL };
const char *mb123f301[] = { "/adx2.", NULL };
const char *mb123f686[] = { "dlwmksxohvw.com^", NULL };
const char *mb124b01a[] = { "new-new-years.com^", NULL };
const char *mb1253053[] = { "/ajaxInit.gif?", NULL };
const char *mb126b103[] = { "hvvhxzdps.com^", NULL };
@ -35041,6 +35090,7 @@ const char *mb3089b6b[] = { "liquidad.narrowcastmedia.com^", NULL };
const char *mb308e218[] = { "mol.im/i/pix/ebay/", NULL };
const char *mb309e38f[] = { "nrgqdsjqu.com^", NULL };
const char *mb30ab43e[] = { "zipcode.org/site_images/flash/zip_v.swf", NULL };
const char *mb30b3eb2[] = { "xeflnvycs.com^", NULL };
const char *mb30b6e4 [] = { "hackingchinese.com/media/skritter5.jpg", NULL };
const char *mb30d7442[] = { "/ads.aspx", NULL };
const char *mb30fbcd4[] = { "cpcadnet.com^", NULL };
@ -35261,6 +35311,7 @@ const char *mb40f6371[] = { "viorotica.com^", "^banners^", NULL };
const char *mb410a49a[] = { "cloudflare.com/", "/blockadblock", NULL };
const char *mb41116ad[] = { "/adsx/", NULL };
const char *mb41334b0[] = { "atatus.com^", NULL };
const char *mb4148f49[] = { "qgawivqfotfyrw.com^", NULL };
const char *mb4168392[] = { "/assets/ad/", NULL };
const char *mb4175d44[] = { "aaugh.com/images/dreamhostad.gif", NULL };
const char *mb418a27a[] = { "4t7su0i3.party^", NULL };
@ -36181,6 +36232,7 @@ const char *mb86396da[] = { "frosmo.com^", NULL };
const char *mb8660450[] = { "iauvabogtws.bid^", NULL };
const char *mb867eef4[] = { "brigitte.de/pv?", NULL };
const char *mb8693e7e[] = { "/LogPage.aspx?", NULL };
const char *mb8698bdb[] = { "jecbbkrnfn.com^", NULL };
const char *mb86a1ec9[] = { "/adsidebarrect.", NULL };
const char *mb86b7ef3[] = { "ckjdnyvcop.bid^", NULL };
const char *mb86b82b5[] = { "jvhdxosisifv.com^", NULL };
@ -36807,6 +36859,7 @@ const char *mbb4469f [] = { "/xtrack.", "/?id=", NULL };
const char *mbb449e86[] = { "/flashads.", NULL };
const char *mbb44a83f[] = { "mms.cleveland.com^", NULL };
const char *mbb4541c9[] = { "erovinmo.com^", NULL };
const char *mbb454465[] = { "yvlhxqxw.com^", NULL };
const char *mbb460abf[] = { "flashgamestats.com^", NULL };
const char *mbb4688fb[] = { "streamplay.club/js/pop", NULL };
const char *mbb48a455[] = { "/ga_tracker.", NULL };
@ -37045,6 +37098,7 @@ const char *mbc417206[] = { "manhuntshop.com/images/affbanners/", NULL };
const char *mbc46ac8e[] = { "/recordadsall.", NULL };
const char *mbc47d4ed[] = { "/adv/managers/", NULL };
const char *mbc491467[] = { "vgomgphs.bid^", NULL };
const char *mbc49bffe[] = { "xcyptaqhl.com^", NULL };
const char *mbc49f1a6[] = { "arxerlxllv.bid^", NULL };
const char *mbc4e6a04[] = { "tarife.spiegel.de/widget.php?wt_mc=1333.extern.rotation.promoflaeche", NULL };
const char *mbc4efb1e[] = { "youlouk.com^", NULL };
@ -39020,6 +39074,7 @@ const char *mc5ac9fe4[] = { "tagcommander.com^", "^tc_", NULL };
const char *mc5ad6ec8[] = { "intellecthosting.net^", NULL };
const char *mc5ae16f8[] = { "adserver.flossiemediagroup.com^", NULL };
const char *mc5ae4f3e[] = { "webhits.de^", NULL };
const char *mc5aea2a7[] = { "nllbirpx.com^", NULL };
const char *mc5af6df3[] = { "insidebutlercounty.com/images/468-", NULL };
const char *mc5afb79a[] = { "gkwdspzl.bid^", NULL };
const char *mc5b0856e[] = { "-adspot-", NULL };
@ -39369,6 +39424,7 @@ const char *mc73c2158[] = { "frailoffer.com^", NULL };
const char *mc73d952d[] = { "westjet.com/js/webstats.js", NULL };
const char *mc73e953e[] = { "pokernews.com/track-views.php?", NULL };
const char *mc73f8883[] = { "gabzfm.com/images/banners/", NULL };
const char *mc73fe583[] = { "mstmrspnqqevsu.com^", NULL };
const char *mc740dc51[] = { "youtube.com/iframe_api", NULL };
const char *mc74111b0[] = { "/adstrm/", NULL };
const char *mc7413de6[] = { "sytes.net^", NULL };
@ -39869,6 +39925,7 @@ const char *mc98dc41a[] = { "pbzmmqakvzhm.com^", NULL };
const char *mc98f5914[] = { "sexgalaxy.net/wp-content/themes/annina-pro/js/jquery.powertip.min.js?", NULL };
const char *mc98f8b4 [] = { "kfog.com^", "^banners^", NULL };
const char *mc991e59a[] = { "g.techweekeurope.co.uk^", NULL };
const char *mc9920600[] = { "obpzuctfozram.com^", NULL };
const char *mc99250c9[] = { "tracker.vreveal.com^", NULL };
const char *mc993949c[] = { "vizual.ai^", "^click-stream-event^", NULL };
const char *mc9945127[] = { "lookr.com^", "^advertisement.js", NULL };
@ -40386,6 +40443,7 @@ const char *mcbed4032[] = { "thepowerhour.com/images/karatbar1.jpg", NULL };
const char *mcbee2a34[] = { "downture.in^", NULL };
const char *mcbf06299[] = { "adlinx.info^", NULL };
const char *mcbf1052f[] = { "divxstage.eu/images/download.png", NULL };
const char *mcbf1bab6[] = { "zkowrpcb.com^", NULL };
const char *mcbf2b790[] = { "/images/sponsored.", NULL };
const char *mcbf4f6b9[] = { "images-amazon.com^images^", "^analytics^", NULL };
const char *mcbf57a45[] = { "/adbanner.", NULL };
@ -41145,6 +41203,7 @@ const char *mcf577b44[] = { "thepiratebay.", "/static/js/prototype.js", NULL };
const char *mcf5987bb[] = { "riverisland.com^", "^mindshare.min.js", NULL };
const char *mcf5a1e27[] = { "code.etracker.com/t.js?et=", NULL };
const char *mcf5a4e1a[] = { "qvovzakydfvi.bid^", NULL };
const char *mcf5bb3ae[] = { "azdhfnoojvpuvr.com^", NULL };
const char *mcf5d58b7[] = { "ovni9.com/suggestion/stats/", NULL };
const char *mcf5e7358[] = { "log.v.iask.com^", NULL };
const char *mcf5f4799[] = { "qxqtejyqkypfz.bid^", NULL };
@ -41808,6 +41867,7 @@ const char *md26a9840[] = { "ukw.jp^", NULL };
const char *md26b6798[] = { "/adaptvexchangevastvideo.", NULL };
const char *md26c3c8c[] = { "/vtrack.php?", NULL };
const char *md26cc00f[] = { "odlwjmkfmqbuus.bid^", NULL };
const char *md26e276d[] = { "xihkdzijh.com^", NULL };
const char *md26f8724[] = { "lovefilm.com/lovefilm/images/dot.gif", NULL };
const char *md26ff773[] = { "belamicash.com^", NULL };
const char *md2700805[] = { "turner.com/v5cache/TCM/images/", "_120x60.", NULL };
@ -42334,6 +42394,7 @@ const char *md4e1b777[] = { "eltexonline.com/contentrotator/", NULL };
const char *md4e27b5c[] = { "asianpornmovies.com/images/banners/", NULL };
const char *md4e3401 [] = { "utm.arc.nasa.gov/common/js/common.js", NULL };
const char *md4e43397[] = { "/adsall.", NULL };
const char *md4e4f392[] = { "ajax.googleapis.com/ajax/", NULL };
const char *md4e6840b[] = { "contactatonce.com/VisitorContext.aspx?", NULL };
const char *md4e696b7[] = { "bczvulovuap.com^", NULL };
const char *md4e99b5b[] = { "/somaadscaleskyscraperscript.", NULL };
@ -43693,6 +43754,7 @@ const char *mdb2c8527[] = { "hffqgxgjiqdlx.bid^", NULL };
const char *mdb2e752 [] = { "oclus.com^", NULL };
const char *mdb2edf63[] = { "/adreclaim-", NULL };
const char *mdb31aa6b[] = { "ypbfrhlgquaj.com^", NULL };
const char *mdb3298a [] = { "mxzxeersjv.com^", NULL };
const char *mdb349c23[] = { "p.dsero.net^", NULL };
const char *mdb358a3b[] = { "track.promptfile.com^", NULL };
const char *mdb386b13[] = { "frivol-ads.com^", NULL };
@ -43735,6 +43797,7 @@ const char *mdb670acb[] = { "thibzxxtotyqg.bid^", NULL };
const char *mdb6712ba[] = { "exucfbmppagqta.bid^", NULL };
const char *mdb678d3a[] = { "thvrvojkkjkkpe.bid^", NULL };
const char *mdb685721[] = { "/b/ss/ueglobaldev/", NULL };
const char *mdb68e8eb[] = { "player.enetres.net/js/videojs-plugins/videojs-ads-contrib/videojs.ads.js", NULL };
const char *mdb690826[] = { "yqtzhigbiame.com^", NULL };
const char *mdb6e04c1[] = { "/ban_ad.", NULL };
const char *mdb6e1314[] = { "/advertverticallong.", NULL };
@ -46505,6 +46568,7 @@ const char *me8319082[] = { "omkt.co^", NULL };
const char *me831dc5 [] = { "/120_600/", NULL };
const char *me834999 [] = { "streamguys.com^", "^amazon.png", NULL };
const char *me8380af3[] = { "eeqabqioietkquydwxfgvtvpxpzkuilfcpzkplhcckoghwgacb.com^", NULL };
const char *me8380be9[] = { "cll.press/sw.js", NULL };
const char *me8398259[] = { "ganool.com/wp-content/uploads/", "/Javtoys300250..gif", NULL };
const char *me839b67d[] = { "aqjdigkqvmakz.com^", NULL };
const char *me83d698d[] = { "nerdwallet.com/lib/dist/analytics.min.js", NULL };
@ -47565,6 +47629,7 @@ const char *med3c04c9[] = { "bttrack.com^", NULL };
const char *med3c7637[] = { "/btmads.", NULL };
const char *med3cfb84[] = { "dm.linternaute.com^", NULL };
const char *med3dad59[] = { "fleshlight.com/images/peel/", NULL };
const char *med3f295 [] = { "jkywbooyc.com^", NULL };
const char *med3f9f98[] = { "rediff.com/uim/ads/", NULL };
const char *med41e892[] = { "_120x500.", NULL };
const char *med429e34[] = { "imgtaxi.com", "/advertisement.js", NULL };
@ -47854,6 +47919,7 @@ const char *mee77543f[] = { "ad2load.net^", NULL };
const char *mee78fa73[] = { "ogxatekkyzr.com^", NULL };
const char *mee7ab62e[] = { "gamesims.ru^", NULL };
const char *mee7ee443[] = { "rryodgeerrvn.com^", NULL };
const char *mee7f547 [] = { "baletingo.com^", NULL };
const char *mee7fec7e[] = { "aqkujuggztyn.bid^", NULL };
const char *mee82634b[] = { "/osGoogleAnalytics.", NULL };
const char *mee84d5cb[] = { "pushly.com/pushly-event-tracker", NULL };
@ -47927,6 +47993,7 @@ const char *meedfa044[] = { "swimg.net^", "^banners^", NULL };
const char *meee02d73[] = { "predictivadnetwork.com^", NULL };
const char *meee37eab[] = { "metrolyrics.com/js/min/tonefuse.js", NULL };
const char *meee41913[] = { "survey.io/log?", NULL };
const char *meee55096[] = { "qzbnokxxvvpwf.com^", NULL };
const char *meee5bfaa[] = { "fwbntw.com^", NULL };
const char *meee6c31f[] = { "phncdn.com/www-static/js/streamate-my-photos.js", NULL };
const char *meee9e072[] = { "vriirdcvrvanh.com^", NULL };
@ -48745,6 +48812,7 @@ const char *mf2dfa246[] = { "friendlyduck.com^", NULL };
const char *mf2e07579[] = { "trombocrack.com^", NULL };
const char *mf2e44fc9[] = { "/jsecoin.", "/?", NULL };
const char *mf2e476eb[] = { "durocount.com^", NULL };
const char *mf2e4a04a[] = { "rhypgggd.com^", NULL };
const char *mf2e59993[] = { "pxlcadvpqd.com^", NULL };
const char *mf2e627eb[] = { "/sailthru.js", NULL };
const char *mf2e7f506[] = { "adsenseguard.com^", NULL };
@ -49266,6 +49334,7 @@ const char *mf5295818[] = { "kisvtclf.bid^", NULL };
const char *mf529f808[] = { "bwyckpmsolzk.com^", NULL };
const char *mf52bc147[] = { "zziblxasbl.bid^", NULL };
const char *mf52c88c [] = { "top-site-list.com^", NULL };
const char *mf52ebb0a[] = { "ptxqjyqhscs.com^", NULL };
const char *mf5307cc3[] = { "prfdesk.pro^", NULL };
const char *mf531251b[] = { "/IPbeacon.", NULL };
const char *mf531ced5[] = { "/eCustomerSurvey.", NULL };
@ -51401,6 +51470,7 @@ const char *mff098925[] = { "180hits.de^", NULL };
const char *mff09f8a6[] = { "adgoi.mobi^", NULL };
const char *mff0a32cc[] = { "mlg-ad-ops.s3.amazonaws.com^", NULL };
const char *mff0aeab8[] = { "thegatewaypundit.com/wp-content/uploads/submit_tip.png", NULL };
const char *mff0b284d[] = { "da3uf5ucdz00u.cloudfront.net^", NULL };
const char *mff0f954a[] = { "mbl.is/mm/augl/", NULL };
const char *mff10c3ce[] = { "hurterkranach.net^", NULL };
const char *mff119472[] = { "/ad_supertile/", NULL };
@ -51484,6 +51554,7 @@ const char *mff7bb69f[] = { "plunderguide.com/rectangle2.html", NULL };
const char *mff7bfa32[] = { "bt.com^", "^touchclarity^homepage^omtr_tc.js", NULL };
const char *mff7d8f6f[] = { "pop-rev.com^", NULL };
const char *mff7ed327[] = { "/OnlineAdServing/", NULL };
const char *mff7ef157[] = { "lxymfyptdrast.com^", NULL };
const char *mff7fc180[] = { "/redx/c.gif?", NULL };
const char *mff81322e[] = { "jaludo.com/pm.php?", NULL };
const char *mff818b21[] = { "gocdn.site^", NULL };
@ -51626,7 +51697,6 @@ const char *d138ec66b[] = { "100percentfedup.com", "activistpost.com", "addictin
const char *d13994618[] = { "urlgalleries.net", "xxxstreams.eu", NULL };
const char *d13dfc5e4[] = { "dafiti.cl", "dafiti.com.ar", "dafiti.com.br", "dafiti.com.co", NULL };
const char *d13f79a7a[] = { "yourtailorednews.com", NULL };
const char *d143659c6[] = { "mahjong.com", NULL };
const char *d143d3e80[] = { "verliga.net", NULL };
const char *d143df0d8[] = { "batmanstream.com", "collectivelyconscious.net", "live.robinwidget.com", NULL };
const char *d144b8e9 [] = { "hanime.tv", NULL };
@ -51892,6 +51962,7 @@ const char *d39f2bf63[] = { "corriereadriatico.it", "ilgazzettino.it", "ilmattin
const char *d3a12c62a[] = { "streamapi.xyz", NULL };
const char *d3a140828[] = { "afisha.ru", NULL };
const char *d3a592b5f[] = { "estream.to", NULL };
const char *d3a5fe9b9[] = { "upbom.net", NULL };
const char *d3a641dba[] = { "askandyaboutclothes.com", NULL };
const char *d3a829d1 [] = { "uploadrocket.net", NULL };
const char *d3a906b33[] = { "estream.nu", "estream.to", "estream.xyz", NULL };
@ -51991,7 +52062,6 @@ const char *d4c1ca440[] = { "yonhapnews.co.kr", NULL };
const char *d4c2ab000[] = { "pga.com", NULL };
const char *d4c3a724c[] = { "publicleech.xyz", NULL };
const char *d4cbba7bb[] = { "winfuture.de", NULL };
const char *d4cd4828d[] = { "netcombo.com.br", "saraiva.com.br", "tugatech.com.pt", NULL };
const char *d4cdde2f2[] = { "9anime.is", NULL };
const char *d4d13c4b9[] = { "empireonline.com", NULL };
const char *d4d1ce910[] = { "casinobonus24.se", "top5casinosites.co.uk", NULL };
@ -52139,6 +52209,7 @@ const char *d63b1a8b3[] = { "www.pornhub.com", NULL };
const char *d63b4d622[] = { "danawa.com", NULL };
const char *d63e7235b[] = { "shopping.ninemsn.com.au", "shopping.yahoo.com.au", NULL };
const char *d642259cb[] = { "mousebreaker.com", NULL };
const char *d6487a2c2[] = { "gty.pw", NULL };
const char *d649b3fb3[] = { "accounts.google.com", NULL };
const char *d64bd54e1[] = { "4players.de", "brigitte.de", "buffed.de", "erdbeerlounge.de", "gamesaktuell.de", "gamezone.de", "gamona.de", "giga.de", "gmx.net", "golem.de", "kicker.de", "kino.de", "myspass.de", "pcgames.de", "pcgameshardware.de", "spiegel.de", "spiegel.tv", "spielaffe.de", "spieletipps.de", "t-online.de", "thrashermagazine.com", "web.de", "welt.de", "videogameszone.de", NULL };
const char *d651febf6[] = { "intoday.in", NULL };
@ -52288,7 +52359,6 @@ const char *d7c3b2882[] = { "turbogenerator.info", NULL };
const char *d7c918422[] = { "enter.ru", NULL };
const char *d7c981a53[] = { "discordbots.org", NULL };
const char *d7cc5c95e[] = { "discovery.com", NULL };
const char *d7ccd9a9f[] = { "eurogamer.net", NULL };
const char *d7cd4742c[] = { "hp.com", NULL };
const char *d7cf36494[] = { "immowelt.de", NULL };
const char *d7d0d2db6[] = { "gsmarena.com", "nydailynews.com", NULL };
@ -52461,6 +52531,7 @@ const char *d963688ac[] = { "9gag.com", NULL };
const char *d9641a59b[] = { "sportspf.com", NULL };
const char *d966a63d8[] = { "sudinfo.be", NULL };
const char *d9677aa53[] = { "vidup.me", NULL };
const char *d969dad2 [] = { "xtraordinaryfansub.com", NULL };
const char *d96b90606[] = { "gogoanime.in", NULL };
const char *d96c460fe[] = { "video.repubblica.it", NULL };
const char *d96d2b259[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allenwestrepublic.com", "askmefast.com", "breathecast.com", "bulletsfirst.net", "clashdaily.com", "classicalite.com", "comicallyincorrect.com", "conservativebyte.com", "conservativevideos.com", "coviral.com", "crossmap.com", "dailyfeed.co.uk", "dailyheadlines.net", "dailysurge.com", "dccrimestories.com", "digitaljournal.com", "eaglerising.com", "enstarz.com", "girlsjustwannahaveguns.com", "glitch.news", "gosocial.co", "hngn.com", "infowars.com", "instigatornews.com", "joeforamerica.com", "kdramastars.com", "kpopstarz.com", "latinpost.com", "libertyunyielding.com", "minutemennews.com", "musictimes.com", "naturalblaze.com", "naturalnews.com", "natureworldnews.com", "newser.com", "oddee.com", "parentherald.com", "patriotoutdoornews.com", "rantlifestyle.com", "realfarmacy.com", "redmaryland.com", "shark-tank.com", "spectator.org", "stevedeace.com", "supercheats.com", "techtimes.com", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "thelibertarianrepublic.com", "themattwalshblog.com", "thepoke.co.uk", "tinypic.com", "traileraddict.com", "universityherald.com", "valuewalk.comvcpost.com", "victoriajackson.com", "viralnova.com", "viralthread.com", NULL };
@ -52548,6 +52619,7 @@ const char *da3a85e2a[] = { "insure.com", NULL };
const char *da3aaff44[] = { "thisdaylive.com", NULL };
const char *da3c34b72[] = { "chromeexperiments.com", NULL };
const char *da3ed2292[] = { "colbertnation.com", "thedailyshow.com", NULL };
const char *da3eeae13[] = { "videos.13tv.es", NULL };
const char *da48f9154[] = { "mapy.hiking.sk", NULL };
const char *da4d19d01[] = { "lexsteele.com", NULL };
const char *da4dad4f2[] = { "ilix.in", "priva.us", NULL };
@ -52564,6 +52636,7 @@ const char *da5d6ec64[] = { "propelmedia.com", NULL };
const char *da5ddcf77[] = { "hqq.tv", NULL };
const char *da65d23c2[] = { "deportesmax.com", NULL };
const char *da68b62c0[] = { "greasyfork.org", NULL };
const char *da697c2a7[] = { "fulltelevisionhd.li", NULL };
const char *da6ecadec[] = { "mavs.wpengine.netdna-cdn.com", NULL };
const char *da70edbdd[] = { "dsero.com", "korean-candy.com", "misheel.net", "politicususa.com", "techydoor.com", "trutower.com", NULL };
const char *da724cbf4[] = { "food.com", NULL };
@ -52764,6 +52837,7 @@ const char *dc2e4f62e[] = { "cbsnews.com", "colbertlateshow.com", NULL };
const char *dc320d8b [] = { "sporza.be", NULL };
const char *dc3d43063[] = { "ojogo.pt", NULL };
const char *dc4276cbc[] = { "social.economico.pt", NULL };
const char *dc43fdea3[] = { "efukt.com", NULL };
const char *dc493ef8a[] = { "olweb.tv", NULL };
const char *dc4fd7013[] = { "coursehero.com", NULL };
const char *dc5bf19fa[] = { "moviefone.com", NULL };
@ -52802,6 +52876,7 @@ const char *dca17bc6a[] = { "destructoid.com", NULL };
const char *dca4ceac4[] = { "ejocuri.ro", "gamesheep.com", "girlg.com", "girlsplay.com", "jocurifete.ro", "pop.games", "playpod.com", NULL };
const char *dca97dbb6[] = { "seattletimes.com", NULL };
const char *dcaed1bd0[] = { "pornhub.com", "redtube.com", "redtube.com.br", "tube8.com", "tube8.es", "tube8.fr", "youporn.com", "youporngay.com", NULL };
const char *dcb5aaf16[] = { "viamichelin.at", "viamichelin.be", "viamichelin.ch", "viamichelin.co.uk", "viamichelin.com", "viamichelin.de", "viamichelin.es", "viamichelin.fr", "viamichelin.is", "viamichelin.it", "viamichelin.nl", "viamichelin.pl", "viamichelin.pt", NULL };
const char *dcbc0c6b8[] = { "iherb.com", NULL };
const char *dcbfa29f1[] = { "aim.com", "autoblog.com", "autos.aol.com", "engadget.com", "mapquest.com", "video.aol.com", "www.aol.com", NULL };
const char *dcc180a37[] = { "nextag.com", NULL };
@ -52815,7 +52890,6 @@ const char *dcdef0dec[] = { "8muses.com", "imagefap.com", NULL };
const char *dce0222f5[] = { "voldingenglish.com", NULL };
const char *dce0cefe7[] = { "magicvalley.com", "missoulian.com", "wwg.com", NULL };
const char *dce4bb122[] = { "playstation.com", NULL };
const char *dce4fac35[] = { "skylinewebcams.com", NULL };
const char *dce7cc77 [] = { "mlssoccer.com", NULL };
const char *dceb6dd45[] = { "habibs.com.br", NULL };
const char *dcee93653[] = { "alean.ru", "anoncer.net", "nabortu.ru", "tv.yandex.ru", "tvrain.ru", NULL };
@ -53070,7 +53144,6 @@ const char *df71442c0[] = { "metro.co.uk", NULL };
const char *df75086 [] = { "techtimes.com", NULL };
const char *df7a2e878[] = { "yahoo.com", NULL };
const char *df7ef9228[] = { "100percentfedup.com", "activistpost.com", "addictinginfo.com", "alfonzorachel.com", "allenwestrepublic.com", "allthingsvegas.com", "americansublime.com", "askmefast.com", "auntyacid.com", "barbwire.com", "bestfunnyjokes4u.com", "bighealthreport.com", "bipartisanreport.com", "breaking911.com", "breathecast.com", "bulletsfirst.net", "celebrity-gossip.net", "clashdaily.com", "classicalite.com", "collapse.news", "comicallyincorrect.com", "conservativebyte.com", "conservativeintel.com", "conservativevideos.com", "constitution.com", "coviral.com", "craigjames.com", "creepybasement.com", "crossmap.com", "cyberwar.news", "dailyfeed.co.uk", "dailyheadlines.net", "dailyhealthpost.com", "dailysurge.com", "dccrimestories.com", "deneenborelli.com", "digitaljournal.com", "eaglerising.com", "earnthenecklace.com", "enstarz.com", "evil.news", "faithit.com", "fitnessconnoisseur.com", "foreverymom.com", "freedom.news", "freedomdaily.com", "freedomforce.com", "freedomoutpost.com", "girlsjustwannahaveguns.com", "glitch.news", "groopspeak.com", "guardianlv.com", "guns.news", "gymflow100.com", "hallels.com", "hautereport.com", "healthstatus.com", "hispolitica.com", "hngn.com", "honesttopaws.com", "ifyouonlynews.com", "infowars.com", "instigatornews.com", "intellectualconservative.com", "janmorganmedia.com", "jobsnhire.com", "joeforamerica.com", "juicerhead.com", "justdiy.com", "kdramastars.com", "keepandbear.com", "kpopstarz.com", "lastresistance.com", "latinpost.com", "legalinsurrection.com", "liberty.news", "libertyalliance.com", "libertyunyielding.com", "lidblog.com", "medicine.news", "mentalflare.com", "minutemennews.com", "musictimes.com", "myscienceacademy.org", "natural.news", "naturalblaze.com", "naturalnews.com", "naturalsociety.com", "natureworldnews.com", "newser.com", "newseveryday.com", "newsthump.com", "oddee.com", "opednews.com", "patriotoutdoornews.com", "patriottribune.com", "pickthebrain.com", "politicaloutcast.com", "politichicks.com", "practicallyviral.com", "quirlycues.com", "rantlifestyle.com", "realfarmacy.com", "realmomsrealreviews.com", "realtytoday.com", "redhotchacha.com", "redmaryland.com", "returnofkings.com", "robotics.news", "shark-tank.com", "shedthoselbs.com", "slender.news", "sonsoflibertymedia.com", "spectator.org", "stevedeace.com", "stupid.news", "supercheats.com", "techconsumer.com", "techtimes.com", "theblacksphere.net", "theboredmind.com", "thefreethoughtproject.com", "thegatewaypundit.com", "themattwalshblog.com", "thepoke.co.uk", "therealside.com", "theviralmob.com", "tosavealife.com", "traileraddict.com", "truththeory.com", "twisted.news", "urbantabloid.com", "usherald.com", "valuewalk.com", "vcpost.com", "victoriajackson.com", "videogamesblogger.com", "viralnova.com", "viralthread.com", "visiontoamerica.com", "winningdemocrats.com", "xtribune.com", "youthhealthmag.com", NULL };
const char *df81fee54[] = { "vercanalestv1.com", "verplusonline.com", NULL };
const char *df8349bc [] = { "teletoon.com", NULL };
const char *df834abc1[] = { "supercheats.com", NULL };
const char *df8811b4f[] = { "supersonicads.com", NULL };
@ -53091,6 +53164,7 @@ const char *dfc793ab6[] = { "eatthis.com", NULL };
const char *dfca0494a[] = { "ft.com", NULL };
const char *dfca1a065[] = { "linkshrink.net", NULL };
const char *dfcbafae0[] = { "ehubsoft.net", "herokuapp.com", NULL };
const char *dfcbc7d56[] = { "tanked.io", NULL };
const char *dfccbf04c[] = { "nordstrom.com", NULL };
const char *dfccc30c6[] = { "champions.co", "pantagraph.com", "parkers.co.uk", NULL };
const char *dfd38dac5[] = { "radiojavan.com", NULL };
@ -59006,6 +59080,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m3f6265ce, 0, NULL, NULL },
{m3be814a1, 0, NULL, NULL },
{mf9000d3c, 0, NULL, NULL },
{m433fde56, 0, NULL, NULL },
{m224e111c, 0, NULL, NULL },
{mdcea0f93, 0, NULL, NULL },
{mbae16911, 0, NULL, NULL },
@ -62451,6 +62526,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m3032786, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md2a2a35d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m40d4aee, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf161c40b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m88118c30, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m8c321386, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3976fd09, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -65816,7 +65892,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m4010016e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma4f7c1a3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m82b5a237, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb58092a8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb0aba5c0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mad91c7ae, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m568e2503, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -67575,99 +67650,141 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{mc7648b10, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4c0c7163, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mee4099cd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3daa345, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4ec385be, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2f4e394e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m9760907b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m113e7069, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md767719e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mcf5bb3ae, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{meeac3b7a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma1e11adb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb6114fb7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2bd0cefe, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mdbbd7cfc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m534cc702, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m12cea13d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4ec8e906, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m486d5cfc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m13dab28c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5824f4db, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc696038, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma3e271b9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m51267f0c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m43b47b6e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2d5a7c32, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m76bf6f69, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m1deaaa54, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb123f686, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{maa3a0936, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma87db459, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7a00e05, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma3a49108, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mad2b1ab9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m340f1275, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2c9fc2de, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5d61a9e2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3348c2cf, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2cf7a381, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m1b1bfd9c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2f06adc1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m911e6915, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma5eebb73, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3befffee, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mfed47da9, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m958b5f9b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7a92fef3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m9363361a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf02f5988, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3c118123, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m554d5a85, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{meab001a7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb6469aa4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m89eccc07, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5f684563, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m66407a2d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5319f28d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma257675c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5fbebc31, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2e5cb753, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6c52f6ff, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mffaa0c9a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb54f64fd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3a4c708b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb8698bdb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2330f708, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{med3f295, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m41f9c7b2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m342b3bf7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m12229eaa, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6c57db0a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md9537d22, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m295cbdd2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6e8cf432, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma323f44e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mdb02956b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m15eb112d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7e5872b8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m39adbe3a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2ec4a500, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m8a570d04, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6ea5c1d3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6d01dc41, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{maeae73cb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mbd937ac5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mff7ef157, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m625defa6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m809f8099, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc20db6f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m474943b1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m99dabef2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc73fe583, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mdb3298a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m25577bb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m93173622, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m37daf4a0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6b8af9e8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc5aea2a7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb72d7426, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4ceaa3cb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mdfb15bcf, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma8d296ed, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5b13c453, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc9920600, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m17de82db, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc42192e2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md1d2b83d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6165c4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m97d1e12a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5411611b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf6b17ad2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf52ebb0a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m87256008, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m905a6521, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m992138af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb4148f49, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{me095ca3f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m60289f3c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m326f841b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{meee55096, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7c92bf95, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf2e4a04a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m82726bad, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mdf9b70ad, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m59fc515b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m667444d0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m37a5e790, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2e460f2b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m15e0e7b1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m16df2925, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m53c47064, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7a05270a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma0d1ee4b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m55d68710, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m96855ada, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m89fca81e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5575232a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3f35b450, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5c244661, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4fd2479b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{me4906fe, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -67687,15 +67804,24 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m6524a42a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mbab57209, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m1ba8db02, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4c226c65, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7af7742b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m49063ad3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf6a16644, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m8df66676, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m46825f93, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mad0081fd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4dcadd4c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m80185941, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2d114ffd, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7ffb3329, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m26659aa1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mbc49bffe, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma2fcf88, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb30b3eb2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md26e276d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m1af7578e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3a564e1f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m6f3525b1, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf8bd8e9c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m680bdd19, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -67703,10 +67829,15 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m18202baf, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m57427d32, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2aa48edc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mbb454465, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb2784381, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2093d209, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m5570f72b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4fd2489d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mcbf1bab6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m8ad15061, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m66d80875, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m219646e2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m65eecbf2, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mcb391da2, ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{ma1369350, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -76215,6 +76346,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m6b47036f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m59596ca6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md025525d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7ad06033, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mab77a910, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m4a73672, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mc5df4941, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -76239,6 +76371,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m5d6e95b6, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m76fb51ca, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mde5ab906, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7b3708af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m28c25f09, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m2931ca74, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m716d3e22, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -81308,6 +81441,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{mb871a13c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mc86feb4d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m7ba73655, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL },
{ma00e5215, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mff00bdb3, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{md01c17be, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{md338c9ed, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
@ -85355,6 +85489,8 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m432f158f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mcadd5f3d, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{mfae71728, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{md4e4f392, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc43fdea3, NULL },
{ma125992e, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, dc43fdea3, NULL },
{mafe77b3c, 0, NULL, NULL },
{m88d3e975, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{md5f3e307, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
@ -88252,7 +88388,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{md8f6d618, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{mf3e6c131, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{me667eba5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mc2a9bd63, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d7ccd9a9f, NULL },
{m698457f5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m2abeba9d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mda9b045e, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d4fcf8dbc, NULL },
@ -88411,6 +88546,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{me16f9cc9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m1e76cd0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m1857e287, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m37e2f57c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m4ca5ff04, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m276c9bad, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{me223f3ca, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
@ -88597,6 +88733,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{me9eb2899, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{md3eeb5b5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mbfcf62fc, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d47565321, NULL },
{m91e9170a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m6be2051f, ADBLOCK_FLAG_MATCH_END, NULL, NULL },
{m9408a1f3, 0, NULL, NULL },
{mca0508f5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
@ -88767,9 +88904,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m7d681989, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, d809417, NULL },
{mc0796670, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{md8831ebb, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL },
{m7ad06033, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mf161c40b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7b3708af, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb83635a7, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{m64f490ab, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m69f0938a, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -88802,13 +88936,13 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m8d8df3bd, ADBLOCK_FLAG_MATCH_DOMAIN, d7a98d170, NULL },
{mb7063375, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2c25242, NULL },
{m719a8fd5, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, d2c25242, NULL },
{mb7063375, ADBLOCK_FLAG_MATCH_DOMAIN, dce4fac35, NULL },
{m78af05ed, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7e218078, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m9ecce480, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL },
{mcaa29ef4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc28d1973, NULL },
{m6f3c17cd, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m7a159732, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m4b920e20, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD, d969dad2, NULL },
{mb72d750c, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{me0f7cdae, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m94462164, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
@ -88840,9 +88974,9 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m488ab655, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m19ffbae, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{m3be79090, ADBLOCK_FLAG_MATCH_DOMAIN, d59158744, NULL },
{m171bce27, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, dcb5aaf16, NULL },
{m4dce27c, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{maa7a907f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, dfa868bc, NULL },
{m624e1093, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, df81fee54, NULL },
{meff685f5, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mec367ab6, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m824a8ca4, ADBLOCK_FLAG_MATCH_DOMAIN, deb253f4a, NULL },
@ -88861,7 +88995,17 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m59028e95, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d699e2efa, NULL },
{mfc23311b, ADBLOCK_FLAG_MATCH_DOMAIN, d48f82118, NULL },
{mab3cb866, ADBLOCK_FLAG_MATCH_DOMAIN, d1dc4a272, NULL },
{m5d0f3e9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d143659c6, NULL },
{mc2a9bd63, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d6487a2c2, NULL },
{me8380be9, ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{m292f7c23, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{mb7063375, ADBLOCK_FLAG_MATCH_DOMAIN, dfcbc7d56, NULL },
{m48ec6761, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_FIRST_PARTY, NULL, NULL },
{m624e1093, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, da697c2a7, NULL },
{mff0b284d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, d3a5fe9b9, NULL },
{mee7f547, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m8d4a8664, 0, NULL, NULL },
{m5d0f3e9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, da3eeae13, NULL },
{mdb68e8eb, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, da3eeae13, NULL },
{m959374f7, 0, NULL, NULL },
{m69eee246, 0, NULL, NULL },
{m480a1f0f, ADBLOCK_FLAG_HAS_WILDCARD, NULL, NULL },
@ -94984,6 +95128,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m6e55b753, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m3c001965, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m7e1b1738, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb58092a8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m279b981f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{m47606595, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
{mb1b24b1b, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR | ADBLOCK_FLAG_THIRD_PARTY, NULL, NULL },
@ -103357,7 +103502,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m15bfc6d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{m686a5668, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, db5ed7249, NULL },
{md54bc14b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{me87bafd3, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d50e200f2, NULL },
{m6d41d63, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, d50e200f2, NULL },
{mbbde9e78, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d95548cd7, NULL },
{maa91352b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2eb53554, NULL },
@ -103366,7 +103510,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{me73084e7, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc4276cbc, NULL },
{md6449dda, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc4276cbc, NULL },
{m4499236b, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc6fea3b6, NULL },
{ma41dd4d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d4cd4828d, NULL },
{m2526bd49, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dceb6dd45, NULL },
{m8df088d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, dc3d43063, NULL },
{m1adec965, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d9596b2f1, NULL },
@ -103416,6 +103559,8 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{m76b9bf6c, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_WILDCARD | ADBLOCK_FLAG_HAS_SEPARATOR, d2e34ec98, NULL },
{md42cc193, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d638d049c, NULL },
{m29ac39c9, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d638d049c, NULL },
{ma41dd4d4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2e34ec98, NULL },
{me87bafd3, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, d2e34ec98, NULL },
{mbc1b0a1d, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_MATCH_DOMAIN, NULL, NULL },
{m1145f4b4, ADBLOCK_FLAG_EXCEPTION | ADBLOCK_FLAG_HAS_WILDCARD, d8329c392, NULL },
{mc3c037ed, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
@ -105500,7 +105645,6 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{md2be5426, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m1e143dc8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mb2276d02, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m6be34010, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m47373eb0, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{mef71e51c, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m34e2fb85, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
@ -105538,6 +105682,7 @@ struct adblock_entry ADBLOCK_ENTRIES[ADBLOCK_ENTRY_COUNT] = {
{md5f36a4, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{me3446792, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m2fe3a59d, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m564b4d27, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m437a5ed7, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m5cc658f, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },
{m2487dbb8, ADBLOCK_FLAG_MATCH_DOMAIN | ADBLOCK_FLAG_HAS_SEPARATOR, NULL, NULL },

View file

@ -1,29 +1,43 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 28 Oct 2017 10:09:41 +0200
Subject: Cure AMP and tracking from search results
Subject: Inject scripts for AMP, tracking, ads and video functionality
Remove AMP, tracking and ads from search results
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to
allow playing videos in background (original Javascript code by timdream)
---
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
third_party/blink/renderer/core/dom/document.cc | 20 +++++++++++++++++++-
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 ++++++
3 files changed, 26 insertions(+), 1 deletion(-)
third_party/blink/renderer/core/dom/BUILD.gn | 2 ++
third_party/blink/renderer/core/dom/document.cc | 28 +++++++++++++++++++++-
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 +++++
.../renderer/core/dom/extensions/video_bg_play.h | 6 +++++
4 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -147,6 +147,7 @@ blink_core_sources("dom") {
@@ -147,6 +147,8 @@ blink_core_sources("dom") {
"events/tree_scope_event_context.h",
"events/window_event_context.cc",
"events/window_event_context.h",
+ "extensions/dont-track-me.h",
+ "extensions/video-bg-play.h",
"exception_code.h",
"first_letter_pseudo_element.cc",
"first_letter_pseudo_element.h",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -277,6 +277,8 @@
@@ -222,6 +222,7 @@
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+#include "extensions/video_bg_play.h"
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
@@ -277,6 +278,8 @@
#include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
#include "third_party/blink/renderer/platform/wtf/time.h"
@ -32,7 +46,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
#ifndef NDEBUG
using WeakDocumentSet =
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
@@ -5882,8 +5884,24 @@ void Document::FinishedParsing() {
@@ -5882,8 +5885,31 @@ void Document::FinishedParsing() {
fetcher_->ClearResourcesFromPreviousFetcher();
}
@ -43,18 +57,25 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
+ }
+
+ // determine whether this is a Google search results page
+ const SecurityOrigin *origin = GetSecurityOrigin();
+ if (origin) {
+ WTF::String domain = origin->Domain();
+ size_t pos = domain.Find(".google.");
+ auto* bodyElement = body();
+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
+ const WTF::String& host = url_.Host();
+ auto* bodyElement = body();
+ if (bodyElement) {
+ size_t pos = host.Find(".google.");
+ if ((pos != WTF::kNotFound) && (host.length() - pos - 8 < 4)) {
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(ANTI_AMP_CURE_JS);
+ bodyElement->AppendChild(e);
+ }
+ }
+
+ // check for eligibility of the video bg fix
+ if ((WTF::kNotFound != host.Find("youtube.com")) || (WTF::kNotFound != host.Find("vimeo.com"))) {
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(VIDEO_BG_PLAY_JS);
+ bodyElement->AppendChild(e);
+ }
+ } // has origin and body element
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
@ -69,6 +90,17 @@ new file mode 100644
+#define ANTI_AMP_CURE_JS "/* Bromite click-tracking and AMP removal v0.3.5 */\n\nfunction recreateHyperlink(a) {\n // skip already-sanitized hyperlinks\n if (a.sane) return false;\n\n // create new A element - old one has event listeners attached\n var newA = document.createElement('a');\n newA.referrerPolicy = 'origin';\n // property set when hyperlink has been created by this script\n newA.sane = 1;\n\n // remove AMP class, get actual page URL\n var ampCur = a.getAttribute('data-amp-cur');\n if (ampCur) {\n newA.href = ampCur;\n a.classList.remove('amp_r');\n } else {\n var realLink = getRealLinkFromGoogleUrl(a);\n if (realLink) {\n newA.href = realLink;\n } else {\n // might not be an actual hyperlink, ignore it\n if (!a.href) {\n return false;\n }\n // leave original href unchanged\n newA.href = a.href;\n }\n }\n // copy CSS classes\n newA.className = a.className;\n\n // copy nodes inside the hyperlink\n while (a.firstChild) {\n newA.appendChild(a.lastChild);\n }\n // replace hyperlink\n a.parentNode.replaceChild(newA, a);\n return true;\n}\n\nfunction isResult(a) {\n if (a.getAttribute('data-amp-cur'))\n return true;\n var inlineMousedown = a.getAttribute('onmousedown');\n if (!inlineMousedown)\n\treturn false;\n // return rwt(....); // E.g Google search results.\n // return google.rwt(...); // E.g. sponsored search results\n // return google.arwt(this); // E.g. sponsored search results (dec 2016).\n return /\\ba?rwt\\(/.test(inlineMousedown) || /\\bctpacw\\b/.test(inlineMousedown);\n}\n\n/**\n * @returns {String} the real URL if the given link is a Google redirect URL.\n */\nfunction getRealLinkFromGoogleUrl(a) {\n if ((a.hostname === location.hostname || a.hostname.indexOf('www.google.') == 0) &&\n /^\\/(local_)?url$/.test(a.pathname)) {\n // Google Maps / Dito (/local_url?q=<url>)\n // Mobile (/url?q=<url>)\n var url = /[?&](?:q|url)=((?:https?|ftp)[%:][^&]+)/.exec(a.search);\n if (url) {\n return decodeURIComponent(url[1]);\n }\n // Help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...)\n url = /[?&](?:q|url)=((?:%2[Ff]|\\/)[^&]+)/.exec(a.search);\n if (url) {\n return a.origin + decodeURIComponent(url[1]);\n }\n }\n}\n\nfunction sanitizeAds() {\n // scan all divs\n var div = document.getElementById('tads');\n if (div) {\n div.style.display = 'none';\n\treturn true;\n }\n return false;\n}\n\nfunction sanitizeAll() {\n console.log(\"ads removed: \", sanitizeAds());\n console.log(\"hyperlinks sanitized: \", sanitizeAllHyperlinks(document));\n}\n\nfunction hookMoreResults() {\n var extrares = document.getElementById('extrares');\n if (!extrares) {\n console.log(\"could not hook more results\");\n return;\n }\n // mutation observers are great but they don't work\n extrares.addEventListener(\"DOMNodeInserted\", function(e) {\n var node = e.target;\n if (node.id && node.id.startsWith(\"arc-srp\"))\n console.log(\"hyperlinks sanitized on new result node: \", sanitizeAllHyperlinks(node));\n });\n}\n\nfunction setMlogoClick() {\n var mlogo = document.getElementById('qslc');\n if (mlogo && mlogo.children[0]) {\n mlogo = mlogo.children[0];\n mlogo.removeAttribute(\"href\");\n mlogo.setAttribute(\"onclick\", \"sanitizeAll()\");\n console.log(\"logo link replaced\");\n } else {\n console.log(\"could not replace logo link\");\n }\n}\n\nfunction sanitizeAllHyperlinks(rootNode) {\n var saned = 0, total = 0;\n rootNode.querySelectorAll('div[data-hveid]:not([data-hveid=\"\"]) a').forEach(function(a) {\n\ttotal++;\n\tvar res = recreateHyperlink(a);\n\tif (res) saned++;\n });\n console.log(\"sanitized \", saned, \"/\", total, \" hyperlinks\");\n\n return saned;\n}\n\n// avoid running cleanup on non-search pages\nif ((document.location.host.indexOf(\"images.google.\") == -1) && (document.location.host.indexOf(\"news.google.\") == -1)) {\n sanitizeAll();\n}\nsetMlogoClick();\n\nhookMoreResults();\n"
+
+#endif // anti_amp_cure_h
diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
new file mode 100644
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
@@ -0,0 +1,6 @@
+#ifndef video_bg_play_h
+#define video_bg_play_h
+
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
+
+#endif // video_bg_play_h
--
2.7.4

View file

@ -1,79 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 18 Feb 2018 22:15:25 +0100
Subject: Play videos in background
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com
Original Javascript code by timdream
---
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
third_party/blink/renderer/core/dom/document.cc | 17 +++++++++++++----
.../blink/renderer/core/dom/extensions/video_bg_play.h | 6 ++++++
3 files changed, 20 insertions(+), 4 deletions(-)
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -148,6 +148,7 @@ blink_core_sources("dom") {
"events/window_event_context.cc",
"events/window_event_context.h",
"extensions/dont-track-me.h",
+ "extensions/video-bg-play.h",
"exception_code.h",
"first_letter_pseudo_element.cc",
"first_letter_pseudo_element.h",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -222,6 +222,7 @@
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+#include "extensions/video_bg_play.h"
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
@@ -5891,17 +5892,25 @@ void Document::FinishedParsing() {
// determine whether this is a Google search results page
const SecurityOrigin *origin = GetSecurityOrigin();
- if (origin) {
+ auto* bodyElement = body();
+ if (origin && bodyElement) {
WTF::String domain = origin->Domain();
size_t pos = domain.Find(".google.");
- auto* bodyElement = body();
- if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
+ if ((pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
e->setText(ANTI_AMP_CURE_JS);
bodyElement->AppendChild(e);
}
- }
+
+ // check for eligibility of the video bg fix
+ if ((WTF::kNotFound != domain.Find("youtube.com")) || (WTF::kNotFound != domain.Find("vimeo.com"))) {
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(VIDEO_BG_PLAY_JS);
+ bodyElement->AppendChild(e);
+ }
+ } // has origin and body element
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
new file mode 100644
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
@@ -0,0 +1,6 @@
+#ifndef video_bg_play_h
+#define video_bg_play_h
+
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
+
+#endif // video_bg_play_h
--
2.7.4

View file

@ -0,0 +1,119 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 29 Aug 2018 11:03:44 +0200
Subject: Add custom tab intents privacy option
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../org/chromium/chrome/browser/LaunchIntentDispatcher.java | 9 +++++++--
.../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 7 +++++++
5 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -18,6 +18,9 @@
<item name="top_controls_show_threshold" format="float" type="dimen">0.5</item>
<item name="top_controls_hide_threshold" format="float" type="dimen">0.5</item>
+ <string name="allow_custom_tab_intents_title">Allow custom tab intents from applications</string>
+ <string name="allow_custom_tab_intents_summary">When disabled, all custom tab intents will be processed as regular navigation instead</string>
+
<!-- The number of thumbnails that the thumbnail cache can hold. -->
<integer name="default_thumbnail_cache_size">5</integer>
<!-- The number of approximation thumbnails that the approximation cache can hold. -->
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -52,4 +52,9 @@
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="allow_custom_tab_intents"
+ android:title="@string/allow_custom_tab_intents_title"
+ android:summary="@string/allow_custom_tab_intents_summary"
+ android:defaultValue="false" />
</PreferenceScreen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.metrics.MediaNotificationUma;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
import org.chromium.chrome.browser.searchwidget.SearchActivity;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
@@ -149,9 +150,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
recordIntentMetrics();
mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
+
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) {
+ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|| (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
- mIsCustomTabIntent = isCustomTabIntent;
+ } else {
+ mIsCustomTabIntent = false;
+ }
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -37,6 +37,7 @@ public class PrivacyPreferences extends PreferenceFragment
"safe_browsing_extended_reporting";
private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
"safe_browsing_scout_reporting";
+ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
@@ -100,6 +101,11 @@ public class PrivacyPreferences extends PreferenceFragment
? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
+ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
+ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
+ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+
ChromeBaseCheckBoxPreference safeBrowsingPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
safeBrowsingPref.setOnPreferenceChangeListener(this);
@@ -123,6 +129,10 @@ public class PrivacyPreferences extends PreferenceFragment
|| PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
(boolean) newValue);
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
+ sharedPreferencesEditor.apply();
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
recordNetworkPredictionEnablingUMA((boolean) newValue);
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3423,6 +3423,13 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
Browse
</message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
+ Allow custom tab intents
+ </message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
+ Allow applications to open custom tab intents, similar to webview.
+ </message>
+
<!-- Migration strings -->
<message name="IDS_UPDATING_CHROME" desc="String that indicates that Chrome is updating">
Updating Chrome...
--
2.7.4

View file

@ -1,117 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 8 Jul 2018 23:06:52 +0200
Subject: Add flag to disable custom tab intents
Custom tab intents allow apps to open URLs with a minimal browser UI;
this flag allows disabling this functionality altogether and all custom tab
intents will instead open as regular URLs.
---
.../java/src/org/chromium/chrome/browser/ChromeSwitches.java | 3 +++
.../src/org/chromium/chrome/browser/LaunchIntentDispatcher.java | 8 ++++++--
chrome/browser/about_flags.cc | 4 ++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
chrome/common/chrome_switches.cc | 3 +++
chrome/common/chrome_switches.h | 1 +
7 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
@@ -177,6 +177,9 @@ public abstract class ChromeSwitches {
/** Open all custom tabs in a new task. Used only for experimental purposes. */
public static final String OPEN_CUSTOM_TABS_IN_NEW_TASK = "open-custom-tabs-in-new-task";
+ /** Disallow custom tab intents. */
+ public static final String DISALLOW_CUSTOM_TAB_INTENT = "disallow-custom-tab-intent";
+
/**
* Don't crash on undispatched VIEW intents sent to .Main.
* See ChromeTabbedActivity.maybeDispatchExplicitMainViewIntent() for more info.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -149,9 +149,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
recordIntentMetrics();
mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
+
+ if (!CommandLine.getInstance().hasSwitch(ChromeSwitches.DISALLOW_CUSTOM_TAB_INTENT)) {
+ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|| (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
- mIsCustomTabIntent = isCustomTabIntent;
+ } else {
+ mIsCustomTabIntent = false;
+ }
}
/**
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1297,6 +1297,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kMediaScreenCaptureName,
flag_descriptions::kMediaScreenCaptureDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kUserMediaScreenCapturing)},
+ {"disallow-custom-tab-intent",
+ flag_descriptions::kDisallowCustomTabIntentName,
+ flag_descriptions::kDisallowCustomTabIntentDescription, kOsAndroid,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisallowCustomTabIntent)},
#endif // OS_ANDROID
// Native client is compiled out if ENABLE_NACL is not set.
#if BUILDFLAG(ENABLE_NACL)
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2043,6 +2043,10 @@ const char kContextualSearchSecondTapDescription[] =
"Enables triggering on a second tap gesture even when Ranker would "
"normally suppress that tap.";
+const char kDisallowCustomTabIntentName[] = "Disallow custom tab intent";
+const char kDisallowCustomTabIntentDescription[] =
+ "Do not allow apps to open custom tab intents and use a regular browsing interaction instead.";
+
const char kDontPrefetchLibrariesName[] = "Don't Prefetch Libraries";
const char kDontPrefetchLibrariesDescription[] =
"Don't prefetch libraries after loading.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1244,6 +1244,9 @@ extern const char kContextualSearchRankerQueryDescription[];
extern const char kContextualSearchSecondTapName[];
extern const char kContextualSearchSecondTapDescription[];
+extern const char kDisallowCustomTabIntentName[];
+extern const char kDisallowCustomTabIntentDescription[];
+
extern const char kDontPrefetchLibrariesName[];
extern const char kDontPrefetchLibrariesDescription[];
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -218,6 +218,9 @@ const char kDisableExtensions[] = "disable-extensions";
// Disable extensions except those specified in a comma-separated list.
const char kDisableExtensionsExcept[] = "disable-extensions-except";
+// Disallow apps to use custom tab intents and use a regular URL open intent instead.
+const char kDisallowCustomTabIntent[] = "disallow-custom-tab-intent";
+
// Disable checking for user opt-in for extensions that want to inject script
// into file URLs (ie, always allow it). This is used during automated testing.
const char kDisableExtensionsFileAccessCheck[] =
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -72,6 +72,7 @@ extern const char kDisableCastStreamingHWEncoding[];
extern const char kDisableClientSidePhishingDetection[];
extern const char kDisableComponentExtensionsWithBackgroundPages[];
extern const char kDisableComponentUpdate[];
+extern const char kDisallowCustomTabIntent[];
extern const char kDisableDefaultApps[];
extern const char kDisableDeviceDiscoveryNotifications[];
extern const char kDisableDomainReliability[];
--
2.7.4

View file

@ -0,0 +1,201 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 28 Aug 2018 23:27:23 +0200
Subject: Add privacy option to keep cookies until session exit
---
chrome/android/java/res/values/values.xml | 3 +++
.../android/java/res/xml/website_preferences.xml | 7 +++++++
.../browser/preferences/PrefServiceBridge.java | 10 +++++++++
.../website/SingleCategoryPreferences.java | 24 ++++++++++++++++++++++
.../java/strings/android_chrome_strings.grd | 6 ++++++
.../android/preferences/pref_service_bridge.cc | 19 +++++++++++++++++
6 files changed, 69 insertions(+)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -39,6 +39,9 @@
<integer name="reload_button_level_reload">0</integer>
<integer name="reload_button_level_stop">1</integer>
+ <string name="allow_cookies_session_only_title">Keep cookies only until you quit your browser</string>
+ <string name="allow_cookies_session_only_summary">When enabled, all cookies will be erased when the browsing session is over</string>
+
<!-- Help and Feedback
These constants should be in sync with the context names on go/mobilehelprecs.
If the context ID cannot be found, the default help page will be shown to the user.-->
diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
--- a/chrome/android/java/res/xml/website_preferences.xml
+++ b/chrome/android/java/res/xml/website_preferences.xml
@@ -19,6 +19,13 @@
android:summary="@string/allow_third_party_cookies_summary"
android:defaultValue="true"
android:persistent="false" />
+ <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="cookies_session_only"
+ android:title="@string/allow_cookies_session_only_title"
+ android:summary="@string/allow_cookies_session_only_summary"
+ android:defaultValue="true"
+ android:persistent="false" />
<!-- A toggle for enabling vibration in notifications. -->
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="notifications_vibrate"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -256,6 +256,10 @@ public class PrefServiceBridge {
return nativeGetBlockThirdPartyCookiesEnabled();
}
+ public boolean isCookiesSessionOnlyEnabled() {
+ return nativeGetCookiesSessionOnlyEnabled();
+ }
+
/**
* @return Whether third-party cookie blocking is configured by policy
*/
@@ -722,6 +726,10 @@ public class PrefServiceBridge {
nativeSetBlockThirdPartyCookiesEnabled(enabled);
}
+ public void setCookiesSessionOnlyEnabled(boolean enabled) {
+ nativeSetCookiesSessionOnlyEnabled(enabled);
+ }
+
public void setClipboardEnabled(boolean allow) {
nativeSetClipboardEnabled(allow);
}
@@ -1107,6 +1115,7 @@ public class PrefServiceBridge {
private native boolean nativeGetAutoplayEnabled();
private native boolean nativeGetBackgroundSyncEnabled();
private native boolean nativeGetBlockThirdPartyCookiesEnabled();
+ private native boolean nativeGetCookiesSessionOnlyEnabled();
private native boolean nativeGetBlockThirdPartyCookiesManaged();
private native boolean nativeGetRememberPasswordsEnabled();
private native boolean nativeGetPasswordManagerAutoSigninEnabled();
@@ -1153,6 +1162,7 @@ public class PrefServiceBridge {
private native void nativeSetAllowCookiesEnabled(boolean allow);
private native void nativeSetBackgroundSyncEnabled(boolean allow);
private native void nativeSetBlockThirdPartyCookiesEnabled(boolean enabled);
+ private native void nativeSetCookiesSessionOnlyEnabled(boolean enabled);
private native void nativeSetClipboardEnabled(boolean allow);
private native void nativeSetDoNotTrackEnabled(boolean enabled);
private native void nativeSetRememberPasswordsEnabled(boolean allow);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
@@ -98,6 +98,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
// Keys for individual preferences.
public static final String READ_WRITE_TOGGLE_KEY = "read_write_toggle";
public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
+ public static final String COOKIES_SESSION_ONLY_TOGGLE_KEY = "cookies_session_only";
public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
private static final String ADD_EXCEPTION_KEY = "add_exception";
@@ -447,6 +448,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
} else if (mCategory.showCookiesSites()) {
PrefServiceBridge.getInstance().setAllowCookiesEnabled((boolean) newValue);
updateThirdPartyCookiesCheckBox();
+ updateCookiesSessionOnlyCheckBox();
} else if (mCategory.showGeolocationSites()) {
PrefServiceBridge.getInstance().setAllowLocationEnabled((boolean) newValue);
} else if (mCategory.showJavaScriptSites()) {
@@ -491,6 +493,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
getInfoForOrigins();
} else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setBlockThirdPartyCookiesEnabled(!((boolean) newValue));
+ } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
+ PrefServiceBridge.getInstance().setCookiesSessionOnlyEnabled(!((boolean) newValue));
} else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setNotificationsVibrateEnabled((boolean) newValue);
}
@@ -726,6 +730,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
getPreferenceScreen().removePreference(thirdPartyCookies);
}
+ // Configure/hide the keep cookies until session is over toggle, as needed.
+ Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
+ COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ if (mCategory.showCookiesSites()) {
+ cookiesSessionOnly.setOnPreferenceChangeListener(this);
+ updateCookiesSessionOnlyCheckBox();
+ } else {
+ getPreferenceScreen().removePreference(cookiesSessionOnly);
+ }
+
// Configure/hide the notifications vibrate toggle, as needed.
Preference notificationsVibrate =
getPreferenceScreen().findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
@@ -859,6 +873,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
}
+ private void updateCookiesSessionOnlyCheckBox() {
+ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
+ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ cookiesSessionOnlyPref.setChecked(
+ !PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
+ cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isAcceptCookiesEnabled());
+// cookiesSessionOnlyPref.setManagedPreferenceDelegate(
+// preference -> PrefServiceBridge.getInstance().isCookiesSessionOnlyPrefManaged());
+ }
+
private void updateNotificationsVibrateCheckBox() {
ChromeBaseCheckBoxPreference preference =
(ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -800,6 +800,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_ALLOW_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Allow Third Party Cookies preference">
Third-party websites can save and read cookie data
</message>
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
+ Keep cookies only until you quit your browser
+ </message>
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
+ When enabled, all cookies will be erased when the browsing session is over
+ </message>
<message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
JavaScript
</message>
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -276,6 +276,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
}
+static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ return CONTENT_SETTING_SESSION_ONLY == host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr);
+}
+
static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
@@ -724,6 +732,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
}
+static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jboolean enabled) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ host_content_settings_map->SetDefaultContentSetting(
+ CONTENT_SETTINGS_TYPE_COOKIES,
+ enabled ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_SESSION_ONLY);
+}
+
static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
--
2.7.4

View file

@ -3,26 +3,26 @@ Date: Tue, 17 Apr 2018 17:14:00 +0300
Subject: Add option to not persist tabs across sessions
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../src/org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../browser/preferences/privacy/PrivacyPreferences.java | 11 +++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 28 insertions(+), 1 deletion(-)
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -59,6 +59,9 @@
<string name="help_context_change_sync_passphrase">change_sync_passphrase</string>
@@ -66,6 +66,9 @@
<!-- TODO(peconn): Add help section. -->
<!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
+
+ <string name="close_tabs_on_exit_title">Close tabs on exit</string>
+ <string name="close_tabs_on_exit_summary">Don\'t persist tabs between browsing sessions</string>
+
<!-- Our manage space activity. Default pre-KitKat to be nothing. -->
<string name="manage_space_activity"></string>
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@ -56,7 +56,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -44,6 +44,7 @@ public class PrivacyPreferences extends PreferenceFragment
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.preferences.privacy;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
@@ -14,6 +15,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
@@ -45,6 +47,7 @@ public class PrivacyPreferences extends PreferenceFragment
private static final String PREF_DO_NOT_TRACK = "do_not_track";
private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
@ -64,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -109,6 +110,11 @@ public class PrivacyPreferences extends PreferenceFragment
@@ -115,6 +118,11 @@ public class PrivacyPreferences extends PreferenceFragment
(ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
canMakePaymentPref.setOnPreferenceChangeListener(this);
@ -76,22 +92,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
updateSummaries();
}
@@ -148,6 +154,11 @@ public class PrivacyPreferences extends PreferenceFragment
}
/**
+ else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
@@ -141,6 +149,12 @@ public class PrivacyPreferences extends PreferenceFragment
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
PrefServiceBridge.getInstance().setBoolean(
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
+// PrefServiceBridge.getInstance().setBoolean(
+// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue);
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
+ sharedPreferencesEditor.apply();
+ }
* Updates the summaries for several preferences.
*/
public void updateSummaries() {
}
return true;
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3450,6 +3450,12 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
@@ -3463,6 +3463,12 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
<message name="IDS_NEAR_OOM_INTERVENTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can resume what it was doing.">
Resume
</message>