WordPress Zero Spam - Version 5.4.0

Version Description

Download this release

Release Info

Developer bmarshall511
Plugin Icon 128x128 WordPress Zero Spam
Version 5.4.0
Comparing to
See all releases

Code changes from version 5.3.9 to 5.4.0

Files changed (81) hide show
  1. assets/blacklist.txt +2467 -237
  2. assets/css/admin.css +618 -244
  3. assets/css/admin.css.map +1 -0
  4. assets/img/icon-blocked.svg +30 -0
  5. assets/img/icon-bug.svg +86 -0
  6. assets/img/icon-edit.svg +9 -0
  7. assets/img/icon-email.svg +49 -0
  8. assets/img/icon-error.svg +56 -0
  9. assets/img/icon-export.svg +3 -0
  10. assets/img/icon-google.svg +1 -0
  11. assets/img/icon-honeypot.svg +1 -0
  12. assets/img/icon-info.svg +11 -0
  13. assets/img/icon-ipinfo.svg +9 -0
  14. assets/img/icon-ipstack.svg +23 -0
  15. assets/img/icon-location.svg +1 -0
  16. assets/img/icon-log.svg +60 -0
  17. assets/img/icon-reports.svg +45 -0
  18. assets/img/icon-settings.svg +1 -0
  19. assets/img/icon-stop-forum-spam.png +0 -0
  20. assets/img/icon-success.svg +9 -0
  21. assets/img/icon-trash.svg +12 -0
  22. assets/img/icon-words.svg +59 -0
  23. assets/img/icon-x.svg +11 -0
  24. assets/img/icon.svg +1 -1
  25. assets/img/logo-flat.svg +21 -0
  26. assets/img/text-zero-spam.svg +34 -0
  27. assets/js/admin.js +85 -101
  28. assets/src/scss/admin.scss +930 -0
  29. core/admin/class-admin.php +6 -6
  30. core/admin/class-dashboard.php +178 -221
  31. core/admin/class-settings.php +351 -167
  32. core/admin/tables/class-blockedlocations.php +13 -4
  33. core/admin/tables/class-blockedtable.php +14 -8
  34. core/admin/tables/class-logtable.php +15 -7
  35. core/class-access.php +7 -4
  36. core/class-settings.php +84 -32
  37. core/class-utilities.php +29 -9
  38. includes/class-db.php +2 -2
  39. includes/class-plugin.php +11 -0
  40. includes/class-updates.php +54 -0
  41. includes/templates/admin-block-ip.php +64 -59
  42. includes/templates/admin-callout.php +0 -130
  43. includes/templates/admin-header.php +100 -0
  44. includes/templates/admin-ips.php +10 -9
  45. includes/templates/admin-modal-details.php +38 -40
  46. includes/templates/settings/errors.php +0 -21
  47. includes/templates/settings/export.php +0 -56
  48. includes/templates/settings/settings.php +0 -22
  49. modules/class-debug.php +10 -6
  50. modules/class-google.php +7 -4
  51. modules/class-ipinfomodule.php +10 -6
  52. modules/class-ipstack.php +15 -4
  53. modules/class-projecthoneypot.php +12 -9
  54. modules/class-security.php +30 -0
  55. modules/class-stopforumspam.php +10 -4
  56. modules/class-zerospam.php +26 -145
  57. modules/comments/class-comments.php +39 -13
  58. modules/contactform7/class-contactform7.php +30 -13
  59. {assets/img → modules/contactform7}/icon-cf7.png +0 -0
  60. modules/davidwalsh/assets/js/davidwalsh.js +2 -2
  61. modules/davidwalsh/class-davidwalsh.php +9 -9
  62. modules/davidwalsh/icon-david-walsh.png +0 -0
  63. modules/fluentforms/class-fluentforms.php +21 -14
  64. modules/fluentforms/icon-fluent-forms.svg +18 -0
  65. modules/formidable/class-formidable.php +21 -10
  66. modules/formidable/icon-formidable.png +0 -0
  67. modules/give/class-give.php +63 -11
  68. {assets/img → modules/give}/icon-givewp.png +0 -0
  69. modules/gravityforms/class-gravityforms.php +236 -0
  70. modules/gravityforms/icon-gravity-forms.svg +13 -0
  71. modules/login/class-login.php +22 -10
  72. modules/mailchimpforwp/class-mailchimpforwp.php +13 -4
  73. modules/memberpress/class-memberpress.php +18 -4
  74. modules/registration/class-registration.php +28 -10
  75. modules/woocommerce/class-woocommerce.php +31 -11
  76. {assets/img → modules/woocommerce}/icon-woocommerce.svg +0 -0
  77. modules/wpforms/class-wpforms.php +60 -13
  78. {assets/img → modules/wpforms}/icon-wpforms.svg +0 -0
  79. readme.txt +31 -10
  80. uninstall.php +12 -0
  81. wordpress-zero-spam.php +2 -2
assets/blacklist.txt CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  _abercrom
2
  _adidas
3
  _adsense
@@ -65,6 +69,7 @@ _latisse
65
  _lesbian
66
  _litecoin
67
  _longchamp
 
68
  _loubou
69
  _lululemon
70
  _marijuana
@@ -225,6 +230,9 @@ _zapat
225
  -1.ru
226
  -1.su
227
  -1.za
 
 
 
228
  -2.co
229
  -2.in
230
  -2.ro
@@ -537,6 +545,7 @@ _zapat
537
  -coin/
538
  -coins.
539
  -coins/
 
540
  -comfort-
541
  -computer-recycle.
542
  -computer-recycling.
@@ -672,6 +681,9 @@ _zapat
672
  -femdom-
673
  -femdom.
674
  -femdom/
 
 
 
675
  -filmi
676
  -filmy
677
  -filosov-
@@ -879,6 +891,8 @@ _zapat
879
  -law-firm-
880
  -law-firm.
881
  -law-firm/
 
 
882
  -le-pliage
883
  -lesbian-
884
  -lesbian.
@@ -1053,6 +1067,12 @@ _zapat
1053
  -phexin-
1054
  -phexin.
1055
  -phexin/
 
 
 
 
 
 
1056
  -picload-
1057
  -picload.
1058
  -picload/
@@ -1205,6 +1225,7 @@ _zapat
1205
  -salvia-
1206
  -scarpe-
1207
  -search-engine
 
1208
  -searchengine
1209
  -secret-
1210
  -secret.
@@ -1275,6 +1296,9 @@ _zapat
1275
  -somehack.
1276
  -somehack/
1277
  -speed-up-
 
 
 
1278
  -sport.site
1279
  -store.
1280
  -store/
@@ -1333,7 +1357,7 @@ _zapat
1333
  -tatuagens-
1334
  -tatuagens.
1335
  -tatuagens/
1336
- -tax-attorney
1337
  -tax-relief
1338
  -tax-settlement
1339
  -teen-in-
@@ -1578,6 +1602,9 @@ _zapat
1578
  .1-pack.
1579
  .1-pack/
1580
  .1com
 
 
 
1581
  .2com
1582
  .2u4.us
1583
  .7x.cz
@@ -1767,6 +1794,8 @@ _zapat
1767
  .com illegal
1768
  .com wild
1769
  .com,
 
 
1770
  .com/,
1771
  .com/%
1772
  .com/1-
@@ -1852,6 +1881,8 @@ _zapat
1852
  .femdom-
1853
  .femdom.
1854
  .femdom/
 
 
1855
  .filmi-
1856
  .filmy-
1857
  .filosov-
@@ -2117,6 +2148,12 @@ _zapat
2117
  .phexin-
2118
  .phexin.
2119
  .phexin/
 
 
 
 
 
 
2120
  .picload-
2121
  .picload.
2122
  .picload/
@@ -2304,6 +2341,8 @@ _zapat
2304
  .rusex/
2305
  .s.a.k
2306
  .sallow.co
 
 
2307
  .secret-
2308
  .secrets-
2309
  .selebriti-
@@ -2342,6 +2381,9 @@ _zapat
2342
  .space/femme
2343
  .space/free
2344
  .space/homme
 
 
 
2345
  .spruz.
2346
  .stream/wiki
2347
  .su,
@@ -2501,6 +2543,8 @@ _zapat
2501
  .zybbs.
2502
  .zzz.
2503
  。com
 
 
2504
  " dildo
2505
  «link»
2506
  «комбо»
@@ -2660,6 +2704,9 @@ _zapat
2660
  /01.php
2661
  /1.php
2662
  /1i1.me
 
 
 
2663
  /02.asp
2664
  /2.asp
2665
  /02.cfm
@@ -2803,6 +2850,7 @@ _zapat
2803
  /activity-
2804
  /activity.
2805
  /adclick?
 
2806
  /adclick.asp?
2807
  /adclick.aspx?
2808
  /adclick.cfm?
@@ -2909,6 +2957,7 @@ _zapat
2909
  /avto-
2910
  /avto.
2911
  /away?
 
2912
  /away.asp?
2913
  /away.aspx?
2914
  /away.cfm?
@@ -2928,6 +2977,7 @@ _zapat
2928
  /bags/
2929
  /baidu.
2930
  /banner?
 
2931
  /banner.asp?
2932
  /banner.aspx?
2933
  /banner.cfm?
@@ -2939,6 +2989,7 @@ _zapat
2939
  /banner.php?
2940
  /banner/?
2941
  /banners?
 
2942
  /banners.asp?
2943
  /banners.aspx?
2944
  /banners.cfm?
@@ -3049,6 +3100,7 @@ _zapat
3049
  /bvlgari-
3050
  /bvlgari.
3051
  /bye?
 
3052
  /bye.asp?
3053
  /bye.aspx?
3054
  /bye.cfm?
@@ -3166,16 +3218,18 @@ _zapat
3166
  /cl-
3167
  /cl.
3168
  /cl/
3169
- /clck.ru
3170
  /cld-
3171
  /cld.
3172
  /clearance/
3173
  /cli.re
 
3174
  /click-
3175
  /click?
3176
  /click.
3177
  /click/
3178
- /clickfrm.co
 
3179
  /clit-
3180
  /clit.
3181
  /clk?
@@ -3232,6 +3286,7 @@ _zapat
3232
  /crimea-
3233
  /crwl.it
3234
  /cs?
 
3235
  /cs.asp?
3236
  /cs.aspx?
3237
  /cs.cfm?
@@ -3284,6 +3339,7 @@ _zapat
3284
  /dieta.
3285
  /dior.
3286
  /director?
 
3287
  /director.asp?
3288
  /director.aspx?
3289
  /director.cfm?
@@ -3379,6 +3435,7 @@ _zapat
3379
  /event.
3380
  /executive-
3381
  /exit?
 
3382
  /exit.asp?
3383
  /exit.aspx?
3384
  /exit.cfm?
@@ -3412,6 +3469,9 @@ _zapat
3412
  /fendi.
3413
  /ferragamo-
3414
  /ferragamo.
 
 
 
3415
  /file/
3416
  /files/
3417
  /filmi
@@ -3439,6 +3499,7 @@ _zapat
3439
  /forum0
3440
  /forum1
3441
  /forwarder?
 
3442
  /forwarder.asp?
3443
  /forwarder.aspx?
3444
  /forwarder.cfm?
@@ -3453,6 +3514,7 @@ _zapat
3453
  /foto.
3454
  /fpdb/
3455
  /frame?
 
3456
  /frame.asp?
3457
  /frame.aspx?
3458
  /frame.cfm?
@@ -3499,6 +3561,7 @@ _zapat
3499
  /gh1/
3500
  /glowna.
3501
  /go_url?
 
3502
  /go_url.asp?
3503
  /go_url.aspx?
3504
  /go_url.cfm?
@@ -3510,6 +3573,7 @@ _zapat
3510
  /go_url.php?
3511
  /go_url/?
3512
  /go?
 
3513
  /go.asp?
3514
  /go.aspx?
3515
  /go.cfm?
@@ -3529,6 +3593,7 @@ _zapat
3529
  /goose/
3530
  /got.by
3531
  /goto_url?
 
3532
  /goto_url.asp?
3533
  /goto_url.aspx?
3534
  /goto_url.cfm?
@@ -3540,6 +3605,7 @@ _zapat
3540
  /goto_url.php?
3541
  /goto_url/?
3542
  /goto?
 
3543
  /goto.asp?
3544
  /goto.aspx?
3545
  /goto.cfm?
@@ -3551,6 +3617,7 @@ _zapat
3551
  /goto.php?
3552
  /goto/?
3553
  /gotourl?
 
3554
  /gotourl.asp?
3555
  /gotourl.aspx?
3556
  /gotourl.cfm?
@@ -3562,6 +3629,7 @@ _zapat
3562
  /gotourl.php?
3563
  /gotourl/?
3564
  /gourl?
 
3565
  /gourl.asp?
3566
  /gourl.aspx?
3567
  /gourl.cfm?
@@ -3632,11 +3700,13 @@ _zapat
3632
  /homepage.
3633
  /homepage/
3634
  /hop?
 
3635
  /hop.asp?
3636
  /hop.aspx?
3637
  /hop.cfm?
3638
  /hop.cgi?
3639
  /hop.ctr?
 
3640
  /hop.htm?
3641
  /hop.html?
3642
  /hop.jsp?
@@ -3686,6 +3756,7 @@ _zapat
3686
  /index-3
3687
  /index-4
3688
  /index-5
 
3689
  /index.asp?/
3690
  /index.aspx?/
3691
  /index.cfm?/
@@ -3710,6 +3781,8 @@ _zapat
3710
  /insurance-
3711
  /insurance.
3712
  /internal/
 
 
3713
  /ip/
3714
  /iphone-s-
3715
  /iphone-s.
@@ -3732,6 +3805,7 @@ _zapat
3732
  /jersey.
3733
  /jerseys-
3734
  /jerseys.
 
3735
  /job.
3736
  /join.
3737
  /joj.
@@ -3747,6 +3821,7 @@ _zapat
3747
  /js.
3748
  /js/
3749
  /jump?
 
3750
  /jump.asp?
3751
  /jump.aspx?
3752
  /jump.cfm?
@@ -3758,6 +3833,7 @@ _zapat
3758
  /jump.php?
3759
  /jump/?
3760
  /jumplink?
 
3761
  /jumplink.asp?
3762
  /jumplink.aspx?
3763
  /jumplink.cfm?
@@ -3793,6 +3869,7 @@ _zapat
3793
  /kitchenknives-
3794
  /kitchenknives.
3795
  /klik?
 
3796
  /klik.asp?
3797
  /klik.aspx?
3798
  /klik.cfm?
@@ -3817,6 +3894,7 @@ _zapat
3817
  /law-firm-
3818
  /law-firm.
3819
  /law-firm/
 
3820
  /layout1/
3821
  /layout2/
3822
  /legal/
@@ -3845,6 +3923,7 @@ _zapat
3845
  /lingerie.
3846
  /link-
3847
  /link?
 
3848
  /link.asp?
3849
  /link.aspx?
3850
  /link.cfm?
@@ -3869,6 +3948,7 @@ _zapat
3869
  /litecoin.
3870
  /litecoin/
3871
  /lnkcnt?
 
3872
  /lnkcnt.asp?
3873
  /lnkcnt.aspx?
3874
  /lnkcnt.cfm?
@@ -3881,6 +3961,7 @@ _zapat
3881
  /lnkcnt/?
3882
  /loans
3883
  /logout?
 
3884
  /logout.asp?
3885
  /logout.aspx?
3886
  /logout.cfm?
@@ -3915,6 +3996,7 @@ _zapat
3915
  /lv/
3916
  /lvl.vn
3917
  /m?
 
3918
  /m.asp?
3919
  /m.aspx?
3920
  /m.cfm?
@@ -3933,6 +4015,7 @@ _zapat
3933
  /maillot.
3934
  /maillot/
3935
  /mainframe?
 
3936
  /mainframe.asp?
3937
  /mainframe.aspx?
3938
  /mainframe.cfm?
@@ -4071,6 +4154,7 @@ _zapat
4071
  /openlink.
4072
  /openlink/
4073
  /optout?
 
4074
  /optout.asp?
4075
  /optout.aspx?
4076
  /optout.cfm?
@@ -4085,6 +4169,7 @@ _zapat
4085
  /orgasm
4086
  /oulu
4087
  /out?
 
4088
  /out.asp?
4089
  /out.aspx?
4090
  /out.cfm?
@@ -4099,6 +4184,7 @@ _zapat
4099
  /outlet/
4100
  /outlink-
4101
  /outlink?
 
4102
  /outlink.asp?
4103
  /outlink.aspx?
4104
  /outlink.cfm?
@@ -4110,11 +4196,13 @@ _zapat
4110
  /outlink.php?
4111
  /outlink/
4112
  /outlink/?
 
4113
  /ow.ly
4114
  /owl.li
4115
  /owtf.co.uk
4116
  /p-laid-
4117
  /p?
 
4118
  /p.asp?
4119
  /p.aspx?
4120
  /p.cfm?
@@ -4147,6 +4235,7 @@ _zapat
4147
  /parafon/
4148
  /party-boat-
4149
  /past.is
 
4150
  /phan-biet-
4151
  /phan-biet.
4152
  /phan-biet/
@@ -4156,6 +4245,12 @@ _zapat
4156
  /phexin-
4157
  /phexin.
4158
  /phexin/
 
 
 
 
 
 
4159
  /php.
4160
  /picload-
4161
  /picload.
@@ -4262,6 +4357,7 @@ _zapat
4262
  /qsymia.
4263
  /qsymia/
4264
  /r?
 
4265
  /r.asp?
4266
  /r.aspx?
4267
  /r.cfm?
@@ -4282,6 +4378,7 @@ _zapat
4282
  /ralphlauren.
4283
  /ralphlauren/
4284
  /rank?
 
4285
  /rank.asp?
4286
  /rank.aspx?
4287
  /rank.cfm?
@@ -4299,6 +4396,7 @@ _zapat
4299
  /rayban.
4300
  /rayban/
4301
  /rdr?
 
4302
  /rdr.asp?
4303
  /rdr.aspx?
4304
  /rdr.cfm?
@@ -4314,6 +4412,7 @@ _zapat
4314
  /readme.
4315
  /readnews.
4316
  /reauexit?
 
4317
  /reauexit.asp?
4318
  /reauexit.aspx?
4319
  /reauexit.cfm?
@@ -4370,6 +4469,7 @@ _zapat
4370
  /ri.ms
4371
  /rih.co
4372
  /rk?
 
4373
  /rk.asp?
4374
  /rk.aspx?
4375
  /rk.cfm?
@@ -4405,6 +4505,8 @@ _zapat
4405
  /sconfig/
4406
  /scripts-
4407
  /scripts/
 
 
4408
  /secret-
4409
  /secrets-
4410
  /secure/
@@ -4420,6 +4522,7 @@ _zapat
4420
  /seo.
4421
  /seo/
4422
  /share?
 
4423
  /share.asp?
4424
  /share.aspx?
4425
  /share.cfm?
@@ -4494,6 +4597,9 @@ _zapat
4494
  /specialprojects.
4495
  /specials-
4496
  /specials.
 
 
 
4497
  /stan.to
4498
  /start.
4499
  /stats/
@@ -4524,6 +4630,7 @@ _zapat
4524
  /supreme-
4525
  /supreme.
4526
  /supreme/
 
4527
  /swf/
4528
  /swish.st
4529
  /syaneru
@@ -4534,6 +4641,7 @@ _zapat
4534
  /tafil.
4535
  /tafil/
4536
  /tagged/
 
4537
  /tattoo-
4538
  /tattoo.
4539
  /tattoo/
@@ -4549,7 +4657,7 @@ _zapat
4549
  /tatuagens-
4550
  /tatuagens.
4551
  /tatuagens/
4552
- /tax-attorney
4553
  /telecharger-
4554
  /telecharger.
4555
  /temp/
@@ -4614,6 +4722,7 @@ _zapat
4614
  /tr.im
4615
  /trac/ticket/
4616
  /trace?
 
4617
  /trace.asp?
4618
  /trace.aspx?
4619
  /trace.cfm?
@@ -4625,6 +4734,7 @@ _zapat
4625
  /trace.php?
4626
  /trace/?
4627
  /track?
 
4628
  /track.asp?
4629
  /track.aspx?
4630
  /track.cfm?
@@ -4642,6 +4752,18 @@ _zapat
4642
  /transexuelle-
4643
  /transexuelle.
4644
  /transexuelle/
 
 
 
 
 
 
 
 
 
 
 
 
4645
  /trx/
4646
  /twilight-
4647
  /txt/
@@ -4663,6 +4785,7 @@ _zapat
4663
  /uploads.
4664
  /uploads/
4665
  /url?
 
4666
  /url.asp?
4667
  /url.aspx?
4668
  /url.cfm?
@@ -4671,6 +4794,7 @@ _zapat
4671
  /url.htm?
4672
  /url.html?
4673
  /url.jsp?
 
4674
  /url.php?
4675
  /url/
4676
  /url/?
@@ -4703,6 +4827,7 @@ _zapat
4703
  /viewstory
4704
  /vip.
4705
  /visit?
 
4706
  /visit.asp?
4707
  /visit.aspx?
4708
  /visit.cfm?
@@ -5030,10 +5155,13 @@ _zapat
5030
  | online
5031
  | year
5032
  ||
 
5033
  |chi
5034
  |dal
5035
  |det
5036
  |for
 
 
5037
  |per
5038
  |porn
5039
  |year
@@ -5151,32 +5279,54 @@ $sixty
5151
  1@2
5152
  1@3
5153
  1@seo
 
 
 
5154
  1big
5155
- 1bodog
5156
  1c.in
5157
- 1casino
5158
- 1cigar
5159
- 1femmes
5160
- 1generic
 
 
 
 
 
 
 
5161
  1hand
5162
- 1health
5163
- 1hommes
 
 
5164
  1mil email
5165
- 1minut
 
5166
  1ping
5167
- 1purse
 
 
5168
  1st comment
5169
  1st-best
5170
  1stbest
 
5171
  1stop
5172
- 1taylor
5173
  1test
5174
  1the best
5175
  1the-best
5176
- 1title
5177
  1to1
 
 
 
 
 
5178
  1xbet
5179
  1you
 
5180
  2 appli
5181
  2 casino
5182
  2 into $
@@ -5207,32 +5357,53 @@ $sixty
5207
  2@seo
5208
  2a aplicacao
5209
  2a-aplicacao
 
 
 
5210
  2bj.ru
5211
  2buy
5212
  2c.in
5213
- 2casino
5214
- 2cigar
5215
- 2generic
5216
- 2global
5217
- 2gogame
 
 
 
 
 
 
 
5218
  2hand
5219
- 2health
 
5220
  2itb
5221
  2k20 vc
5222
  2k20-vc
5223
  2k20vc
 
5224
  2mil email
5225
- 2minut
 
5226
  2ping
5227
- 2purse
 
 
5228
  2sale
5229
- 2taylor
 
5230
  2test
5231
  2the best
5232
  2the-best
5233
- 2title
 
 
5234
  2u.org
 
 
5235
  2you
 
5236
  3 casino
5237
  3 into $
5238
  3 jailbreak
@@ -5250,24 +5421,45 @@ $sixty
5250
  3@2
5251
  3@3
5252
  3@seo
5253
- 3casino
5254
- 3cigar
5255
- 3generic
 
 
 
 
 
 
 
 
 
 
5256
  3hand
5257
- 3health
 
5258
  3j3j3
 
5259
  3mil email
5260
  3minut
 
5261
  3ping
5262
- 3purse
5263
- 3taylor
 
 
 
5264
  3test
5265
  3the best
5266
  3the-best
5267
- 3title
5268
- 3win8
5269
- 3ww3
 
 
 
 
5270
  3you
 
5271
  4 cash
5272
  4 casino
5273
  4 cheap
@@ -5765,21 +5957,12 @@ $sixty
5765
  1337 seo
5766
  1337-seo
5767
  1337seo
5768
- 2019 longchamp
5769
- 2019 popular
5770
- 2019 prospect
5771
- 2019 seo
5772
- 2019-longchamp
5773
- 2019-popular
5774
- 2019-prospect
5775
- 2019-seo
5776
- 2019baby
5777
- 2019longchamp
5778
- 2019x.
5779
  2020 longchamp
5780
  2020 popular
5781
  2020 prospect
5782
  2020 seo
 
5783
  2020-longchamp
5784
  2020-popular
5785
  2020-prospect
@@ -5787,10 +5970,12 @@ $sixty
5787
  2020baby
5788
  2020longchamp
5789
  2020x.
 
5790
  2021 longchamp
5791
  2021 popular
5792
  2021 prospect
5793
  2021 seo
 
5794
  2021-longchamp
5795
  2021-popular
5796
  2021-prospect
@@ -5798,9 +5983,23 @@ $sixty
5798
  2021baby
5799
  2021longchamp
5800
  2021x.
 
 
 
 
 
 
 
 
 
 
 
 
 
5801
  10000$
5802
  100000$
5803
  1000000$
 
5804
  123456789
5805
  a aaa
5806
  a article author
@@ -5991,6 +6190,7 @@ a9.jsp
5991
  a09.php
5992
  a9.php
5993
  ã¹
 
5994
  ã²
5995
  ãª
5996
  aaa replic
@@ -6014,6 +6214,7 @@ aare also
6014
  aare feel
6015
  aare king
6016
  aare you
 
6017
  aat least
6018
  aat the
6019
  aat this
@@ -6063,6 +6264,8 @@ abonnez like
6063
  abonnez partage
6064
  about blog
6065
  about home is
 
 
6066
  about marijuana
6067
  about on the blog
6068
  about on the internet
@@ -6089,6 +6292,7 @@ abrir uma empresa
6089
  abrir-uma-empresa
6090
  absleutoly
6091
  absolutely indited
 
6092
  abssice 360
6093
  abssice-360
6094
  abssice360
@@ -6107,11 +6311,11 @@ acai-
6107
  acai-diet
6108
  acai.diet
6109
  acaiberry
6110
- accident attorney
6111
  accident lawyer
6112
- accident-attorney
6113
  accident-lawyer
6114
- accidentattorney
6115
  accidentlawyer
6116
  according you
6117
  according-you
@@ -6144,6 +6348,7 @@ accupril
6144
  accutane
6145
  ace 33
6146
  ace-33
 
6147
  acel google
6148
  acel-google
6149
  acellphone
@@ -6186,6 +6391,9 @@ acneprescript
6186
  acnetreatment
6187
  acompanhante anunci
6188
  acompanhantes anunci
 
 
 
6189
  acomplia
6190
  acquire me vip
6191
  acros thee
@@ -6196,7 +6404,11 @@ across-thiss
6196
  act as versatile
6197
  actions you desire
6198
  activation code
 
 
 
6199
  activity/p/
 
6200
  actonel
6201
  actu star
6202
  actual celebrity
@@ -6249,6 +6461,7 @@ ad-crack
6249
  ad-flag
6250
  ad-listing
6251
  ad-live
 
6252
  ad-sage
6253
  ad-wiki
6254
  adbeat distrib
@@ -6366,12 +6579,17 @@ admin.htm
6366
  admin.jsp
6367
  admin.php
6368
  admin5
 
 
 
6369
  adopt curcumin
6370
  adopt-curcumin
6371
  adore foregathering
6372
  ados populaire
6373
  ados-populaire
6374
  adospopulaire
 
 
6375
  adremus viral
6376
  adremus-viral
6377
  adremusviral
@@ -6419,6 +6637,7 @@ adult girl
6419
  adult gyrl
6420
  adult hub
6421
  adult personal
 
6422
  adult sex
6423
  adult story
6424
  adult toy
@@ -6438,6 +6657,7 @@ adult-gyrl
6438
  adult-hub
6439
  adult-net
6440
  adult-personal
 
6441
  adult-sex
6442
  adult-story
6443
  adult-toy
@@ -6458,6 +6678,7 @@ adultgirl
6458
  adultgyrl
6459
  adulthub
6460
  adultpersonal
 
6461
  adults friend
6462
  adults-friend
6463
  adultsex
@@ -6465,6 +6686,15 @@ adultsfriend
6465
  adultstory
6466
  adulttoy
6467
  adultweb
 
 
 
 
 
 
 
 
 
6468
  advanced hemp
6469
  advanced raw begin
6470
  advanced-hemp
@@ -6482,6 +6712,7 @@ advert market
6482
  advert on this
6483
  advert on your
6484
  advert research
 
6485
  advert_
6486
  advert-crack
6487
  advert-flag
@@ -6490,6 +6721,7 @@ advert-live
6490
  advert-market
6491
  advert-research
6492
  advert-sage
 
6493
  advert-wiki
6494
  advertise market
6495
  advertise on this
@@ -6557,6 +6789,7 @@ adverts-flag
6557
  adverts-live
6558
  adverts-sage
6559
  adverts-wiki
 
6560
  advice for this topic
6561
  advice on this topic
6562
  advice online
@@ -6825,6 +7058,7 @@ alive hack
6825
  alive-cheat
6826
  alive-hack
6827
  alışveriş sepetiniz
 
6828
  alkotla
6829
  all ahout
6830
  all automobile, auto
@@ -6942,7 +7176,9 @@ amazing-sex
6942
  amazing-videos
6943
  amazingsex
6944
  amazn.co
 
6945
  amazon lider
 
6946
  amazon-lider
6947
  amazon.asp
6948
  amazon.cfm
@@ -6951,6 +7187,7 @@ amazon.ctr
6951
  amazon.htm
6952
  amazon.jsp
6953
  amazon.php
 
6954
  amazone lider
6955
  amazone-lider
6956
  ambalaje cofetar
@@ -7162,18 +7399,29 @@ animated-porn
7162
  animatedporn
7163
  anime boy
7164
  anime cloth
 
7165
  anime girl
7166
  anime indo
 
7167
  anime music vid
 
 
7168
  anime-boy
7169
  anime-cloth
 
7170
  anime-girl
7171
  anime-indo
 
7172
  anime-music-vid
 
 
7173
  animeboy
7174
  animecloth
7175
  animegirl
7176
  animeindo
 
 
 
7177
  ankara transfer
7178
  ankara-transfer
7179
  ankaratransfer
@@ -7282,6 +7530,10 @@ apk-ucretsiz
7282
  apkdeponuz
7283
  apkucretsiz
7284
  aplicacin
 
 
 
 
7285
  app full download
7286
  app growth education
7287
  app hacked
@@ -7317,6 +7569,7 @@ appears like site
7317
  appears like web
7318
  appendage enter
7319
  appendages enter
 
7320
  apple really …
7321
  apple wedding
7322
  apple-unlock
@@ -7353,6 +7606,16 @@ appreciate your content
7353
  appreciate your post
7354
  appreciate your site
7355
  appreciate your web
 
 
 
 
 
 
 
 
 
 
7356
  appreckate
7357
  appro-chait
7358
  approaching article
@@ -7452,6 +7715,7 @@ artesanal kit
7452
  artesanal marca
7453
  artesanal-kit
7454
  artesanal-marca
 
7455
  article at this site
7456
  article blog
7457
  article buzz
@@ -7467,7 +7731,9 @@ article is fastidious
7467
  article is genuine
7468
  article is perfect
7469
  article is pleasant
 
7470
  article is priceless
 
7471
  article is truly
7472
  article it is defin
7473
  article many
@@ -7484,6 +7750,7 @@ article suggest
7484
  article tag
7485
  article to rank
7486
  article to your life
 
7487
  article writing
7488
  article you write
7489
  article-blog
@@ -7504,8 +7771,10 @@ article-snatch
7504
  article-sub
7505
  article-suggest
7506
  article-tag
 
7507
  article-writing
7508
  article-you-write
 
7509
  article,i
7510
  article?.
7511
  article.many
@@ -7564,6 +7833,8 @@ articlessub
7564
  articlestag
7565
  articlesub
7566
  articletag
 
 
7567
  artiicle
7568
  artikel
7569
  artiklar snart
@@ -7787,11 +8058,11 @@ auspicious web
7787
  auspicious writ
7788
  australia boot
7789
  australia clearance
7790
- australia jersey
7791
  australia out
7792
  australia-boot
7793
  australia-clearance
7794
- australia-jersey
7795
  australiaboot
7796
  australiaclearance
7797
  australian chilling
@@ -7864,8 +8135,10 @@ authority of a blog
7864
  authority of a page
7865
  authority of a post
7866
  auto brand
 
7867
  auto-approve-list
7868
  auto-brand
 
7869
  auto.brand
7870
  autoapprove
7871
  autobrand
@@ -7877,9 +8150,11 @@ automatic-swimming
7877
  automatic+swimming
7878
  automaticpay
7879
  automaticswimming
 
7880
  automobile profit
7881
  automobile proper
7882
  automobile-profit
 
7883
  autopilot income
7884
  autopilot-income
7885
  autopost unlimit
@@ -7915,6 +8190,9 @@ avatar therapy
7915
  avatar trimoxazole
7916
  avatar-live
7917
  avatar-therapy
 
 
 
7918
  avental indispensavel
7919
  avental indispensável
7920
  avental-indispensavel
@@ -7960,6 +8238,10 @@ awesoome
7960
  awokehim
7961
  awordpress.
7962
  awsome
 
 
 
 
7963
  az
7964
  azria out
7965
  azria-out
@@ -7971,6 +8253,7 @@ aг
7971
 
7972
 
7973
 
 
7974
 
7975
 
7976
 
@@ -8148,6 +8431,10 @@ bactrim ds
8148
  bactrim generic
8149
  bactrim use
8150
  bactrim-coverage
 
 
 
 
8151
  bad credit
8152
  bad-credit
8153
  badcredit
@@ -8225,6 +8512,14 @@ baguebulgar
8225
  baguebvlgar
8226
  bahaya lemak
8227
  bahaya-lemak
 
 
 
 
 
 
 
 
8228
  baikal extreme
8229
  baikal rest
8230
  baikal-extreme
@@ -8261,6 +8556,7 @@ ban aviat
8261
  ban barata
8262
  ban barato
8263
  bán đạm
 
8264
  ban handle
8265
  ban händle
8266
  bán hàng đơn giản
@@ -8281,6 +8577,7 @@ ban wayfare
8281
  ban-barata
8282
  ban-barato
8283
  ban-dam
 
8284
  ban-hang-don-gian
8285
  ban-jack
8286
  ban-mirror
@@ -8335,7 +8632,13 @@ banprezzo
8335
  banque parrainage
8336
  banque-parrainage
8337
  bansunglass
 
 
 
 
 
8338
  banyaknya situs
 
8339
  banyaknya-situs
8340
  báo giá máy
8341
  bảo hiểm
@@ -8464,7 +8767,10 @@ bất động sản
8464
  bat-dong-san
8465
  bat-pro
8466
  batdongsan
 
 
8467
  bathroom look
 
8468
  bathroom-look
8469
  batt-kupon
8470
  battkupon
@@ -8545,6 +8851,7 @@ be sure to really
8545
  be tiny needle
8546
  be tthe
8547
  be tthis
 
8548
  be what happens you
8549
  be-on-instagram
8550
  beamten
@@ -8614,6 +8921,7 @@ become buying
8614
  become bytecoin
8615
  become litecoin
8616
  become our consumer
 
8617
  become-a-success
8618
  become-an-expert
8619
  become-bitcoin
@@ -8636,8 +8944,15 @@ before-purchas
8636
  begeni hilesi
8637
  begeni-hilesi
8638
  beggun
 
 
 
8639
  beginner blog
 
8640
  beginner-blog
 
 
 
8641
  behavioral-interview-question
8642
  behaviour-driven
8643
  behelfen sich die medien
@@ -8704,8 +9019,12 @@ beneficial software
8704
  beneficios de la
8705
  beneficios-de-la
8706
  benefit coupon
 
 
8707
  benefit-coupon
8708
  benefits coupon
 
 
8709
  benefits-coupon
8710
  bengals merch
8711
  bengals store
@@ -8737,7 +9056,14 @@ bermutu-ting
8737
  berracom.ph
8738
  besstet
8739
  best anal
 
 
 
 
 
 
8740
  best blogging
 
8741
  best bodycon
8742
  best booster
8743
  best cartier
@@ -8762,21 +9088,28 @@ best mcm
8762
  best nautical decor
8763
  best nautical home
8764
  best online
 
8765
  best pant
 
8766
  best payment
8767
  best places botox
8768
  best porn
8769
  best priced
 
8770
  best prostate
8771
  best sandal
8772
  best sex
8773
  best shapewear
8774
  best shoe price
 
 
 
 
8775
  best suppl
8776
  best tummy
8777
  best vape
8778
  best vpn service
8779
- best web
8780
  best webmaster
8781
  best wordpress
8782
  best writing comp
@@ -8784,7 +9117,9 @@ best writing serv
8784
  best you can see
8785
  best_small_
8786
  best-anal
 
8787
  best-blogging
 
8788
  best-bodycon
8789
  best-booster
8790
  best-cartier
@@ -8817,6 +9152,7 @@ best-places-botox
8817
  best-porn
8818
  best-priced
8819
  best-probiotic
 
8820
  best-prostate
8821
  best-real
8822
  best-sandal
@@ -8826,7 +9162,10 @@ best-sex
8826
  best-shapewear
8827
  best-shoe-price
8828
  best-shop
 
8829
  best-small-
 
 
8830
  best-software-for
8831
  best-suppl
8832
  best-tummy
@@ -8843,6 +9182,8 @@ best4
8843
  bestad.
8844
  bestads.
8845
  bestairjordan
 
 
8846
  bestbut
8847
  bestcartier
8848
  bestcase
@@ -8887,6 +9228,7 @@ bestphone
8887
  bestpricebuy
8888
  bestpricesbuy
8889
  bestprobiotic
 
8890
  bestreal
8891
  bestsalesell
8892
  bestsellerbag
@@ -8894,11 +9236,15 @@ bestsellersbag
8894
  bestsex
8895
  bestshop
8896
  bestsmart
 
8897
  bestsuppl
8898
  besttummy
8899
  bestvape
8900
  bestvpn
8901
  bestweb
 
 
 
8902
  bet-88
8903
  bet-guru
8904
  bet-khong
@@ -8927,9 +9273,16 @@ betor.ru
8927
  betrueger dreck
8928
  betrueger-dreck
8929
  betruegerdreck
 
 
 
 
 
8930
  betscript
 
8931
  better essay writ
8932
  better handling driving
 
8933
  better-essay-writ
8934
  better-service
8935
  betterjudg
@@ -8938,12 +9291,14 @@ betting article
8938
  betting news
8939
  betting on mlb
8940
  betting online
 
8941
  betting script
8942
  betting site
8943
  betting website
8944
  betting-article
8945
  betting-news
8946
  betting-online
 
8947
  betting-script
8948
  betting-site
8949
  betting-website
@@ -8951,6 +9306,7 @@ bettingscript
8951
  bettor than
8952
  between tthe
8953
  betweenex
 
8954
  bezpieczne leczenie
8955
  bezpieczne-leczenie
8956
  bhilt
@@ -9058,6 +9414,9 @@ binary-crypto
9058
  binary-option
9059
  binarycrypto
9060
  binaryoption
 
 
 
9061
  bio bronz
9062
  bio skin
9063
  bio-bronz
@@ -9118,6 +9477,8 @@ bitcoin + crypto
9118
  bitcoin $
9119
  bitcoin acc
9120
  bitcoin add
 
 
9121
  bitcoin bot
9122
  bitcoin buy
9123
  bitcoin casino
@@ -9131,6 +9492,7 @@ bitcoin from $
9131
  bitcoin million
9132
  bitcoin mine
9133
  bitcoin mining
 
9134
  bitcoin per day
9135
  bitcoin per week
9136
  bitcoin rush
@@ -9139,6 +9501,8 @@ bitcoin wallet
9139
  bitcoin_
9140
  bitcoin-acc
9141
  bitcoin-add
 
 
9142
  bitcoin-buy
9143
  bitcoin-casino
9144
  bitcoin-code
@@ -9150,6 +9514,7 @@ bitcoin-dump
9150
  bitcoin-million
9151
  bitcoin-mine
9152
  bitcoin-mining
 
9153
  bitcoin-per-day
9154
  bitcoin-per-week
9155
  bitcoin-rush
@@ -9157,6 +9522,9 @@ bitcoin-talk
9157
  bitcoin-wallet
9158
  bitcoinacc
9159
  bitcoinadd
 
 
 
9160
  bitcoinbuy
9161
  bitcoincas
9162
  bitcoincode
@@ -9166,6 +9534,7 @@ bitcoindepos
9166
  bitcoindonat
9167
  bitcoindump
9168
  bitcoinmillion
 
9169
  bitcoinrush
9170
  bitcoins
9171
  bitcointalk
@@ -9214,6 +9583,7 @@ black magic love
9214
  black magic removal
9215
  black magic spell
9216
  black magic wealth
 
9217
  black tight
9218
  black tits
9219
  black ugg
@@ -9225,12 +9595,15 @@ black-magic-love
9225
  black-magic-removal
9226
  black-magic-spell
9227
  black-magic-wealth
 
9228
  black-tight
9229
  black-tits
9230
  black-ugg
9231
  black-www
9232
  blackfriday
9233
  blackgay
 
 
9234
  blackjack pit
9235
  blackjack slot
9236
  blackjack terbaik
@@ -9282,10 +9655,11 @@ blocker-preço
9282
  blocker-queda
9283
  blog _
9284
  blog ::
9285
- blog ..
9286
- blog …
9287
  blog (wordpress
9288
  blog a menudo
 
 
 
9289
  blog article
9290
  blog based
9291
  blog beast
@@ -9310,15 +9684,19 @@ blog fully about
9310
  blog give pleasant
9311
  blog gives pleasant
9312
  blog glance
 
9313
  blog here
9314
  blog if you
9315
  blog is a center
9316
  blog is a centre
9317
  blog is actually
 
9318
  blog is fastidious
9319
  blog is invaluable
9320
  blog is loading
 
9321
  blog is priceless
 
9322
  blog is truly
9323
  blog it help
9324
  blog it is
@@ -9331,11 +9709,14 @@ blog load
9331
  blog loading
9332
  blog look
9333
  blog mark
 
9334
  blog moze
9335
  blog może
9336
  blog occasion
9337
  blog on regular
9338
  blog on the web
 
 
9339
  blog platform
9340
  blog post
9341
  blog projet
@@ -9360,8 +9741,11 @@ blog various
9360
  blog vid
9361
  blog viewer
9362
  blog visit
 
 
9363
  blog was how
9364
  blog was..
 
9365
  blog web
9366
  blog which content
9367
  blog wiki
@@ -9376,6 +9760,7 @@ blog_comente
9376
  blog-0
9377
  blog-1
9378
  blog-2
 
9379
  blog-based
9380
  blog-beast
9381
  blog-before
@@ -9396,6 +9781,7 @@ blog-forest
9396
  blog-format
9397
  blog-frequently
9398
  blog-glance
 
9399
  blog-here
9400
  blog-is-loading
9401
  blog-it-help
@@ -9407,7 +9793,10 @@ blog-load
9407
  blog-loading
9408
  blog-look
9409
  blog-mark
 
9410
  blog-occasion
 
 
9411
  blog-platform
9412
  blog-post
9413
  blog-projet
@@ -9438,8 +9827,6 @@ blog:quan
9438
  blog:quần
9439
  blog.;
9440
  blog.:
9441
- blog..
9442
- blog…
9443
  blog.best
9444
  blog.real
9445
  blog.thank
@@ -9461,6 +9848,7 @@ blog/web
9461
  blog0
9462
  blog1
9463
  blog2
 
9464
  blogbased
9465
  blogbeast
9466
  blogblog
@@ -9511,6 +9899,7 @@ blogging-service
9511
  blogging-visit
9512
  bloggingg
9513
  blogginglook
 
9514
  bloggybest
9515
  bloghome
9516
  blogid
@@ -9522,12 +9911,15 @@ blogload
9522
  bloglook
9523
  bloglove
9524
  blogmark
 
 
9525
  blogow
9526
  blogów
9527
  blogplatform
9528
  blogprodesign
9529
  blogprojet
9530
  blogrtui.ru
 
9531
  blogs article
9532
  blogs if you
9533
  blogs like every
@@ -9570,6 +9962,7 @@ blogspothave
9570
  blogspotprov
9571
  blogsys
9572
  blogtitle
 
9573
  blogue0
9574
  blogue1
9575
  blogue2
@@ -9650,11 +10043,13 @@ body goods
9650
  body hormone
9651
  body massage in
9652
  body shapewear
 
9653
  body-erotic
9654
  body-goods
9655
  body-hormone
9656
  body-massage-in
9657
  body-shapewear
 
9658
  bodycon bandage
9659
  bodycon dress
9660
  bodycon home
@@ -9678,6 +10073,21 @@ boilers-ireland
9678
  boilers-spare
9679
  boilerspare
9680
  boilersspare
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9681
  bokkmark
9682
  bokserki
9683
  bola online
@@ -9694,11 +10104,19 @@ bollywood-moi
9694
  bolsos marc
9695
  bolsos-marc
9696
  bolsosmarc
 
 
 
 
 
 
9697
  bon copie
9698
  bon-copie
9699
  boncopie
9700
  bone wellness
9701
  bone-wellness
 
 
9702
  bonerz
9703
  bong 88
9704
  bong online
@@ -9795,7 +10213,14 @@ bookmarked-you
9795
  bookmarked!
9796
  bookmarking and checking
9797
  bookmarking it
 
 
 
 
 
 
9798
  bookmarkingland
 
9799
  bookmarks thank
9800
  bookmarks web
9801
  bookmarks-thank
@@ -9984,6 +10409,12 @@ botulinumtoxin
9984
  bought mme
9985
  boulder boulder
9986
  boulder-boulder
 
 
 
 
 
 
9987
  boundless online
9988
  bountiful with
9989
  bountiful-with
@@ -10160,6 +10591,7 @@ brittanybattle
10160
  brittny-battle
10161
  brittnybattle
10162
  bro thank you
 
10163
  broker blueprint
10164
  broker dealer
10165
  broker forex
@@ -10177,8 +10609,8 @@ broncosjers
10177
  broncosoffic
10178
  brothershit
10179
  brought agreeable
10180
- browns jersey
10181
- browns-jersey
10182
  browse around this blog
10183
  browse around this site
10184
  browse around this web
@@ -10457,10 +10889,15 @@ bursamasoz
10457
  bursasite
10458
  bursatransfer
10459
  bursted out laugh
 
 
 
 
10460
  busca sexo
10461
  busca-sexo
10462
  buscando soluções
10463
  busienss
 
10464
  business catalyst
10465
  business collect
10466
  business empire
@@ -10469,46 +10906,43 @@ business know
10469
  business online world
10470
  business seo
10471
  business setup
 
10472
  business train
 
10473
  business-a2review
 
10474
  business-boss
10475
  business-catalyst
10476
  business-collect
10477
  business-daily
10478
  business-empire
10479
- business-finder
10480
  business-first
10481
  business-formation
10482
  business-in
10483
  business-intel
10484
  business-know
10485
  business-loan
10486
- business-market
10487
- business-net
10488
- business-network
10489
- business-profile
10490
  business-seo
10491
  business-setup
 
10492
  business-train
 
10493
  business’ status
10494
  business’s status
 
10495
  businessboss
10496
  businesscatalyst
10497
  businesscollect
10498
  businessdaily
10499
  businesses status
10500
  businesses-status
10501
- businessfinder
10502
  businessfirst
10503
  businessintel
10504
  businessknow
 
10505
  businessloan
10506
- businessmarket
10507
- businessnetwork
10508
- businessprofile
10509
  businessseo
10510
  businesstogoogle
10511
- businesstrain
10512
  busiunes
10513
  buspirone
10514
  busquemail
@@ -10530,9 +10964,12 @@ buy acrylic
10530
  buy ageless
10531
  buy albenda
10532
  buy albenza
 
 
10533
  buy black magic
10534
  buy blade
10535
  buy canadagoose
 
10536
  buy cetirizine
10537
  buy cheap
10538
  buy crypto
@@ -10589,6 +11026,7 @@ buy snapchat
10589
  buy soccer
10590
  buy social account
10591
  buy targeted
 
10592
  buy thesis
10593
  buy tiktok
10594
  buy toms
@@ -10606,9 +11044,12 @@ buy youtube
10606
  buy-acrylic
10607
  buy-albenda
10608
  buy-albenza
 
 
10609
  buy-black-magic
10610
  buy-blade
10611
  buy-canadagoose
 
10612
  buy-cetirizine
10613
  buy-cheap
10614
  buy-cig
@@ -10671,6 +11112,7 @@ buy-soccer
10671
  buy-social-account
10672
  buy-soma
10673
  buy-targeted
 
10674
  buy-thesis
10675
  buy-tiktok
10676
  buy-toms
@@ -10691,7 +11133,9 @@ buy.cheap
10691
  buy.cock
10692
  buy.top
10693
  buyalbenza
 
10694
  buycanada
 
10695
  buycetirizine
10696
  buycheap
10697
  buycig
@@ -10711,6 +11155,8 @@ buyhover
10711
  buying and selling system
10712
  buying face
10713
  buying fifa
 
 
10714
  buying insta
10715
  buying likes
10716
  buying married
@@ -10719,6 +11165,8 @@ buying traff
10719
  buying-a-car
10720
  buying-face
10721
  buying-fifa
 
 
10722
  buying-insta
10723
  buying-likes
10724
  buying-papers-online
@@ -10726,6 +11174,8 @@ buying-rune
10726
  buying-traff
10727
  buyingface
10728
  buyingfifa
 
 
10729
  buyinginsta
10730
  buyinglikes
10731
  buyingrune
@@ -10897,14 +11347,21 @@ california-adult
10897
  california-date
10898
  california-dating
10899
  californiaadult
 
 
 
10900
  calitate super
10901
  calitate-super
10902
  call center outsourc
10903
  call centre outsourc
10904
  call futurity
 
 
10905
  call-center-outsourc
10906
  call-centre-outsourc
10907
  call-futurity
 
 
10908
  callerid
10909
  callgirl
10910
  callgyrl
@@ -10974,6 +11431,28 @@ camisetas-personalizada
10974
  camisetas-polo
10975
  camisetashollis
10976
  camisetaspolo
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10977
  campervanhire
10978
  camsex
10979
  can assist you have
@@ -11021,20 +11500,25 @@ canadaloan
11021
  canadaout
11022
  canadian drug
11023
  canadian hgh
 
11024
  canadian loan
11025
  canadian pharm
11026
  canadian-drug
11027
  canadian-hgh
 
11028
  canadian-loan
11029
  canadian-pharm
11030
  canadiandrug
11031
  canadianhgh
 
11032
  canadianloan
11033
  candy crash
11034
  candy-crash
11035
  candy-crush
11036
  candycrash
11037
  candycrush
 
 
11038
  cann also
11039
  cann't
11040
  cann’t
@@ -11070,6 +11554,7 @@ cập website
11070
  capabilities also
11071
  capabilities-also
11072
  capable of effortless
 
11073
  capable to provide
11074
  capacidad produccion
11075
  capacidad producción
@@ -11102,6 +11587,9 @@ card-cheat
11102
  card-debt
11103
  card-dump
11104
  card-financial
 
 
 
11105
  cardcheat
11106
  carder board
11107
  carder-board
@@ -11138,6 +11626,7 @@ cars-game
11138
  cars-insur
11139
  carsgame
11140
  carsinsur
 
11141
  cartier anelli
11142
  cartier bracelet
11143
  cartier fidanza
@@ -11204,6 +11693,7 @@ cash-progress
11204
  cash-team
11205
  cash.com.
11206
  cash.xyz
 
11207
  cash4
11208
  cashadvance
11209
  cashbuzz
@@ -11217,6 +11707,9 @@ cashforgold
11217
  cashforsilver
11218
  cashfuck
11219
  cashgenerat
 
 
 
11220
  cashloan
11221
  cashnow
11222
  cashout
@@ -11224,6 +11717,7 @@ cashteam
11224
  casier judiciaire
11225
  casier-judiciaire
11226
  casino account
 
11227
  casino bonus
11228
  casino enligne
11229
  casino fish
@@ -11236,15 +11730,19 @@ casino online
11236
  casino only
11237
  casino partic
11238
  casino phish
 
11239
  casino script
11240
  casino site
11241
  casino slot
 
 
11242
  casino today
11243
  casino view
11244
  casino_
11245
  casino-1
11246
  casino-24
11247
  casino-account
 
11248
  casino-bonus
11249
  casino-enligne
11250
  casino-fish
@@ -11258,6 +11756,7 @@ casino-online
11258
  casino-only
11259
  casino-partic
11260
  casino-phish
 
11261
  casino-script
11262
  casino-site
11263
  casino-slot
@@ -11268,6 +11767,7 @@ casino.co
11268
  casino1
11269
  casino24
11270
  casinoaccount
 
11271
  casinobonus
11272
  casinoenligne
11273
  casinoer
@@ -11378,6 +11878,9 @@ cc shop
11378
  cc-shop
11379
  ccan visit
11380
  ccheap
 
 
 
11381
  ccshop
11382
  cctv dahua
11383
  cctv distrib
@@ -11390,6 +11893,8 @@ ccv-shop
11390
  ccvshop
11391
  ce billet
11392
  ce-billet
 
 
11393
  celeb diet
11394
  celeb hair
11395
  celeb nude
@@ -11401,6 +11906,7 @@ celebhair
11401
  celebnude
11402
  celebrate blogging
11403
  celebrate-blogging
 
11404
  celebrex
11405
  celebrities diet
11406
  celebrities hair
@@ -11413,11 +11919,14 @@ celebritieshair
11413
  celebritiesnude
11414
  celebrity diet
11415
  celebrity hair
 
11416
  celebrity-diet
11417
  celebrity-hair
 
11418
  celebrity-nude
11419
  celebritydiet
11420
  celebrityhair
 
11421
  celebritynude
11422
  celebs diet
11423
  celebs hair
@@ -11572,6 +12081,8 @@ chaacterist
11572
  chachurbat
11573
  chack-tip
11574
  chacktip
 
 
11575
  chanclas hollis
11576
  chanclas-hollis
11577
  chanclashollis
@@ -11663,14 +12174,18 @@ charms-thomas
11663
  charmsthomas
11664
  chat met vrouwen
11665
  chat porn
 
11666
  chat support office
11667
  chat tarot
 
11668
  chat-bait
11669
  chat-bate
11670
  chat-chat
11671
  chat-met-vrouwen
11672
  chat-porn
 
11673
  chat-tarot
 
11674
  chatburt
11675
  chatchat
11676
  chaterba
@@ -11693,6 +12208,7 @@ chatourbat
11693
  chatporn
11694
  chatr-bat
11695
  chatrbat
 
11696
  chattburt
11697
  chatte-bat
11698
  chattebat
@@ -11710,6 +12226,7 @@ chatur-bat
11710
  chaturbat
11711
  chaturbbat
11712
  chaturrbat
 
11713
  chaussres boutique
11714
  chaussres pascher
11715
  chaussres-boutique
@@ -11799,6 +12316,7 @@ chce rozwodu
11799
  chce-rozwodu
11800
  chcoin.co
11801
  cheap |
 
11802
  cheap afl
11803
  cheap air
11804
  cheap anti
@@ -11856,6 +12374,7 @@ cheap lebron
11856
  cheap longchamp
11857
  cheap loubou
11858
  cheap louis
 
11859
  cheap mackage
11860
  cheap mbt
11861
  cheap michael
@@ -11885,6 +12404,7 @@ cheap sexy
11885
  cheap sherr
11886
  cheap shoe
11887
  cheap silver
 
11888
  cheap soccer
11889
  cheap stephen
11890
  cheap sunglass
@@ -11907,6 +12427,7 @@ cheap yoga
11907
  cheap youth
11908
  cheap_
11909
  cheap-adobe
 
11910
  cheap-afl
11911
  cheap-atlanta
11912
  cheap-autentic
@@ -11961,6 +12482,7 @@ cheap-jord
11961
  cheap-kobe
11962
  cheap-lebron
11963
  cheap-loubou
 
11964
  cheap-mackage
11965
  cheap-mbt
11966
  cheap-michael
@@ -11991,6 +12513,7 @@ cheap-sexy
11991
  cheap-sherr
11992
  cheap-shoe
11993
  cheap-silver
 
11994
  cheap-soccer
11995
  cheap-stephen
11996
  cheap-sunglass
@@ -12015,6 +12538,7 @@ cheap-yoga
12015
  cheap-youth
12016
  cheap+
12017
  cheapadobe
 
12018
  cheapafl
12019
  cheapatlanta
12020
  cheapautentic
@@ -12045,15 +12569,18 @@ cheapest lowest
12045
  cheapest pokemon
12046
  cheapest price
12047
  cheapest ray
 
12048
  cheapest-hockey
12049
  cheapest-lowest
12050
  cheapest-pokemon
12051
  cheapest-price
12052
  cheapest-ray
 
12053
  cheapest.co
12054
  cheapesthockey
12055
  cheapestlow
12056
  cheapestprice
 
12057
  cheapferrag
12058
  cheapflowergirl
12059
  cheapfootbal
@@ -12073,6 +12600,7 @@ cheapkobe
12073
  cheaplebron
12074
  cheaploubou
12075
  cheaplouis
 
12076
  cheapmackage
12077
  cheapmbt
12078
  cheapmichael
@@ -12100,6 +12628,7 @@ cheapseo
12100
  cheapsex
12101
  cheapshoe
12102
  cheapsilver
 
12103
  cheapstephen
12104
  cheapsugg
12105
  cheapsunglass
@@ -12176,13 +12705,18 @@ check out my sitte
12176
  check out my web
12177
  check out new post
12178
  check out the blog
 
12179
  check out the page
12180
  check out the site
12181
  check out the sitte
12182
  check out the web
 
 
12183
  check the ideas
 
12184
  check this ideas
12185
  check this link
 
12186
  check this video
12187
  check us out guy
12188
  check weblog
@@ -12195,7 +12729,13 @@ check-caller
12195
  check-out out
12196
  check-out-new-post
12197
  check-out-out
 
 
 
 
 
12198
  check-this-link
 
12199
  check-this-video
12200
  check-weblog
12201
  check-who-call
@@ -12631,9 +13171,13 @@ click comp
12631
  click for more
12632
  click fraud
12633
  click here
 
 
 
12634
  click now
12635
  click on secure
12636
  click over here
 
12637
  click the blog
12638
  click the last site
12639
  click the link
@@ -12683,6 +13227,9 @@ clickcount
12683
  clickforu
12684
  clickfraud
12685
  clicking it
 
 
 
12686
  clicking world
12687
  clicking-world
12688
  clicknow
@@ -12800,6 +13347,7 @@ coach suto
12800
  coach syoppu
12801
  coach thai
12802
  coach tokyo
 
12803
  coach wallet
12804
  coach wrist
12805
  coach ya
@@ -12834,6 +13382,7 @@ coach-suto
12834
  coach-syoppu
12835
  coach-thai
12836
  coach-tokyo
 
12837
  coach-wallet
12838
  coach-wrist
12839
  coach-ya
@@ -12957,6 +13506,7 @@ coin master free
12957
  coin master hack
12958
  coin offering
12959
  coin xbox
 
12960
  coin-cheat
12961
  coin-cloud
12962
  coin-foot
@@ -12969,6 +13519,7 @@ coin-master-free
12969
  coin-master-hack
12970
  coin-offering
12971
  coin-xbox
 
12972
  coincheat
12973
  coincloud
12974
  coinfoot
@@ -13003,8 +13554,11 @@ coinss
13003
  coinsxbox
13004
  coinvest
13005
  coinxbox
 
13006
  cokment
13007
  colastrina
 
 
13008
  collectif abssice
13009
  collectif celine
13010
  collectif moncler
@@ -13028,10 +13582,14 @@ collectionmoncler
13028
  collections-shops
13029
  collections-supply
13030
  collegasintekst
 
13031
  college persuasive
 
13032
  college-essay
 
13033
  college-loan
13034
  college-persuasive
 
13035
  collegeessay
13036
  collegeloan
13037
  collezione celine
@@ -13210,8 +13768,20 @@ commercemoney
13210
  commerceretail
13211
  commercesale
13212
  commercewhole
 
 
 
 
13213
  commercial office move
 
 
 
 
 
 
13214
  commercial-office-move
 
 
13215
  commerical lender
13216
  commerical-lender
13217
  commericallender
@@ -13228,11 +13798,13 @@ communal authent
13228
  communal-authent
13229
  community.atom
13230
  commutee
 
13231
  como facebook
13232
  como ganhar
13233
  como maquiar
13234
  como reconquista
13235
  como trabalhar
 
13236
  como-facebook
13237
  como-ganhar
13238
  como-maquiar
@@ -13362,7 +13934,9 @@ considerably this blog
13362
  considerably this page
13363
  considerably this site
13364
  considerably this web
 
13365
  consideration-prior-to
 
13366
  considerations-prior-to
13367
  considering-innovation
13368
  consolidation loan
@@ -13375,11 +13949,11 @@ construct chicken
13375
  construct-chicken
13376
  constructionn
13377
  construtor
13378
- consultation attorney
13379
  consultation lawyer
13380
- consultation-attorney
13381
  consultation-lawyer
13382
- consultationattorney
13383
  consultationlawyer
13384
  consulte nuestro servicio
13385
  consumer buzz
@@ -13392,6 +13966,8 @@ contactos mujeres
13392
  contactos-chico
13393
  contactos-mujeres
13394
  contactus/contact
 
 
13395
  contemporize the
13396
  contemporizes the
13397
  content ,
@@ -13407,6 +13983,10 @@ content-material
13407
  content?.
13408
  contents are masterpiece
13409
  contents?.
 
 
 
 
13410
  continually have got
13411
  continue assim
13412
  continue-assim
@@ -13419,6 +13999,8 @@ contoh plakat
13419
  contoh-plakat
13420
  contohplakat
13421
  contratacin
 
 
13422
  control diet
13423
  control-diet
13424
  controldiet
@@ -13454,6 +14036,8 @@ conydot
13454
  cooker ninja
13455
  cooker-ninja
13456
  cookerninja
 
 
13457
  cool article
13458
  cool blog
13459
  cool post
@@ -13574,6 +14158,7 @@ costume mari
13574
  costume medi
13575
  costume tendance
13576
  costume versace
 
13577
  costume- aged
13578
  costume-ermen
13579
  costume-homme
@@ -13668,6 +14253,8 @@ couponsense
13668
  couponspriv
13669
  courses casino
13670
  courses-casino
 
 
13671
  couture avec
13672
  couture-avec
13673
  couyld
@@ -13792,13 +14379,16 @@ createtee
13792
  creating short article
13793
  creation will run
13794
  credit direct
 
13795
  credit repair
13796
  credit report
13797
  credit score
13798
  credit_
13799
  credit-card
 
13800
  credit-direct
13801
  credit-format
 
13802
  credit-repair
13803
  credit-report
13804
  credit-score
@@ -13808,6 +14398,54 @@ creditcard.org
13808
  creditcard.us
13809
  creditdirect
13810
  creditformat
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13811
  creditrepair
13812
  creditreport
13813
  creditscore
@@ -13846,33 +14484,46 @@ cryp.trade
13846
  crypto + bitcoin
13847
  crypto + btc
13848
  crypto + forex
 
13849
  crypto bitcoin
13850
  crypto btc
13851
  crypto curren
 
13852
  crypto hack
13853
  crypto moneda
13854
  crypto script
 
13855
  crypto tab
 
13856
  crypto_
 
13857
  crypto-bitcoin
13858
  crypto-btc
13859
  crypto-curren
 
13860
  crypto-hack
13861
  crypto-moneda
13862
  crypto-script
 
13863
  crypto-tab
 
13864
  crypto/btc
 
13865
  cryptobtc
13866
  cryptocurrency coin
 
13867
  cryptocurrency news
13868
  cryptocurrency strat
13869
  cryptocurrency-coin
 
13870
  cryptocurrency-news
13871
  cryptocurrency-strat
13872
  cryptohack
13873
  cryptomoneda
13874
  cryptoscript
 
13875
  cryptotab
 
13876
  crystal hack
13877
  crystal-hack
13878
  crystalhack
@@ -14014,9 +14665,15 @@ cuz this
14014
  cuz-this
14015
  cv meaning
14016
  cv-meaning
 
14017
  cvv shop
 
 
14018
  cvv-shop
 
 
14019
  cvvshop
 
14020
  çý
14021
  cyber jeunesse
14022
  cyber monday
@@ -14070,13 +14727,19 @@ daddy-site
14070
  daddy-sitte
14071
  dafeult
14072
  daftar agen
 
14073
  daftar harg
14074
  daftar judi
14075
  daftar poke
 
 
14076
  daftar-agen
 
14077
  daftar-harg
14078
  daftar-judi
14079
  daftar-poke
 
 
14080
  daftaragen
14081
  daftarharg
14082
  daftarjudi
@@ -14269,6 +14932,7 @@ day-bountiful
14269
  day-diet
14270
  day-lengthy
14271
  day-loubou
 
14272
  day. bye
14273
  day.did
14274
  dayloubou
@@ -14293,6 +14957,8 @@ de-site
14293
  de-tivi
14294
  dead composed subject
14295
  deal benefit
 
 
14296
  deal of problem
14297
  deal this blog
14298
  deal this page
@@ -14302,11 +14968,13 @@ deal-4-u
14302
  deal-4u
14303
  deal-benefit
14304
  deal-eu
 
14305
  deal-uk
14306
  deal-us
14307
  deal.bl
14308
  deal4u
14309
  dealeu
 
14310
  dealongamento
14311
  dealonline
14312
  deals-4-u
@@ -14324,9 +14992,9 @@ dealuk
14324
  dealus
14325
  dear-lover
14326
  dearlover
14327
- death attorney
14328
  death erotic
14329
- death-attorney
14330
  death-erotic
14331
  deatherotic
14332
  debt money
@@ -14375,6 +15043,7 @@ deficitfight
14375
  definate
14376
  definetely
14377
  definitelly
 
14378
  degree expert
14379
  degree twenty
14380
  degree-expert
@@ -14389,6 +15058,8 @@ dejtingtips
14389
  dekorativno prikladno
14390
  dekorativno-prikladno
14391
  del sitio web
 
 
14392
  deliver noticeable result
14393
  deliver overtly
14394
  deliver result
@@ -14399,8 +15070,14 @@ deliverresult
14399
  delivers result
14400
  delivers-result
14401
  deliversresult
14402
- delivery philippine
14403
- delivery-philippine
 
 
 
 
 
 
14404
  delta-marketing
14405
  deltamarketing
14406
  deltasone
@@ -14414,6 +15091,7 @@ dem-gay
14414
  dem-kauf-eines
14415
  dem-tien
14416
  đếm-tiền
 
14417
  demo0
14418
  demo1
14419
  demo2
@@ -14435,6 +15113,7 @@ deneme icerik
14435
  deneme mal
14436
  deneme-icerik
14437
  deneme-mal
 
14438
  denschlaf
14439
  dental chat room
14440
  dental guru
@@ -14464,14 +15143,37 @@ depart your page
14464
  depart your site
14465
  depart your web
14466
  depnhat
 
 
 
 
14467
  depoimentos reais
14468
  depoimentos-reais
14469
  deposit casino
 
14470
  deposit-casino
 
14471
  depositbank
14472
  depositcasino
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14473
  depression-symptom
14474
- depressionsymptom
14475
  derm exclus
14476
  derm-exclus
14477
  dermexclus
@@ -14479,7 +15181,6 @@ derniers modele
14479
  derniers modèle
14480
  derniers-modele
14481
  derniers-modèle
14482
- derniersmodele
14483
  derogatory circum
14484
  derogatory item
14485
  derun escort
@@ -14493,6 +15194,9 @@ des-services-web
14493
  desconto
14494
  describes feasible
14495
  describes-feasible
 
 
 
14496
  descriptive article
14497
  descriptive blog
14498
  descriptive post
@@ -14521,6 +15225,7 @@ design-industrial-design
14521
  design-own
14522
  design-product-design
14523
  designcheap
 
14524
  designed to me
14525
  designed-to-me
14526
  designeed
@@ -14592,6 +15297,8 @@ detskie diskotek
14592
  detskie-diskotek
14593
  deutschland-online
14594
  deutschlandonline
 
 
14595
  development an app
14596
  devenir trade
14597
  devenir-trade
@@ -14604,6 +15311,7 @@ devlindesign
14604
  dewapoker
14605
  dewelop
14606
  df!
 
14607
  dfy suite
14608
  dfy-suite
14609
  dfysuite
@@ -14636,6 +15344,7 @@ did yoou
14636
  didnít
14637
  didrex online
14638
  didrex-online
 
14639
  die kuhlbox
14640
  die kühlbox
14641
  die-kühlbox
@@ -14690,10 +15399,20 @@ diet.ctr
14690
  diet.htm
14691
  diet.jsp
14692
  diet.php
 
14693
  dieta detox
 
 
 
14694
  dieta sofrida
 
 
14695
  dieta-detox
 
 
 
14696
  dieta-sofrida
 
14697
  dietary advice
14698
  dietary advise
14699
  dietary status
@@ -14744,6 +15463,9 @@ digicam move
14744
  diiclfuf
14745
  diid yoou
14746
  diid you
 
 
 
14747
  dili optim
14748
  dili-optim
14749
  dilioptim
@@ -14783,6 +15505,7 @@ disco innovador para
14783
  discount afl
14784
  discount anta
14785
  discount bag
 
14786
  discount jord
14787
  discount kratom
14788
  discount mbt
@@ -14798,6 +15521,7 @@ discount-
14798
  discount-afl
14799
  discount-anta
14800
  discount-bag
 
14801
  discount-cig
14802
  discount-jord
14803
  discount-kratom
@@ -14827,6 +15551,7 @@ discounts-coupon
14827
  discountt
14828
  discountugg
14829
  discountwheel
 
14830
  discover sociable site
14831
  discover web design
14832
  discovered this blog
@@ -14866,6 +15591,11 @@ disfuncao eretil
14866
  disfunçăo erétil
14867
  disfuncao-eretil
14868
  disfunçăo-erétil
 
 
 
 
 
14869
  disney se pega
14870
  disorder quiz
14871
  disorder-quiz
@@ -14900,6 +15630,7 @@ divorces-simplif
14900
  divulgaemail
14901
  diy divorce
14902
  diy-divorce
 
14903
  djstool
14904
  djtool
14905
  đľđ
@@ -15056,9 +15787,12 @@ dondash
15056
  done a formidable
15057
  done formidable
15058
  done grateful
 
 
15059
  dong phuc dep
15060
  đồng phục đẹp
15061
  dong-max
 
15062
  dong-phuc-dep
15063
  dongmax
15064
  dongphucdep
@@ -15079,6 +15813,7 @@ dooes not
15079
  dooes-not
15080
  door-blog
15081
  dopamine
 
15082
  dora-scrum
15083
  dorascrum
15084
  dos-seios
@@ -15180,6 +15915,7 @@ downloadsfree
15180
  downloadsonline
15181
  downlowd
15182
  downlown
 
15183
  doxycycline
15184
  dr prescription
15185
  dr visit online
@@ -15281,6 +16017,7 @@ drivel of an page
15281
  drivel of an site
15282
  drivel of an web
15283
  drivewayservice
 
15284
  drmarten jap
15285
  drmarten jp
15286
  drmarten uk
@@ -15313,7 +16050,6 @@ drop me a mail
15313
  drop your premium
15314
  drop,dehy
15315
  drop.dehy
15316
- dropshipping winning
15317
  drug buy
15318
  drug cheap
15319
  drug-buy
@@ -15324,10 +16060,16 @@ drugcheap
15324
  druggz
15325
  drugs buy
15326
  drugs cheap
 
15327
  drugs info
 
 
15328
  drugs-buy
15329
  drugs-cheap
 
15330
  drugs-info
 
 
15331
  drugs. regard
15332
  drugs4u
15333
  drugsbuy
@@ -15389,6 +16131,10 @@ duchesssatin
15389
  dude.de
15390
  dudes.de
15391
  dugg some
 
 
 
 
15392
  dulichtrongoi
15393
  dulichtuxu
15394
  dummytest
@@ -15433,8 +16179,8 @@ dvd-asphyx
15433
  dvd-erotic
15434
  dvdbox
15435
  dvdrip
15436
- dwi-attorney
15437
- dwiattorney
15438
  dwn.linksind.
15439
  dylongfa
15440
  dynamic advert
@@ -15489,6 +16235,7 @@ e| p
15489
  e| t
15490
  e2by.in
15491
  eâcute
 
15492
  eagerly wiggling
15493
  eagerly-wiggling
15494
  eaglefight.eaglefight
@@ -15517,14 +16264,24 @@ ease.in
15517
  easier consume
15518
  easier to available
15519
  easily one tight
 
 
15520
  easy consume
15521
  easy naked
 
 
15522
  easy with your present
 
 
15523
  easy-naked
 
 
15524
  easy.in
 
15525
  easyloan
15526
  easynaked
15527
  easyrent
 
15528
  eating hemp
15529
  eating-hemp
15530
  eatinghemp
@@ -15551,6 +16308,9 @@ ecent yeas
15551
  ecig review
15552
  ecig-review
15553
  ecigreview
 
 
 
15554
  ecom email
15555
  ecom success
15556
  ecom-email
@@ -15609,6 +16369,7 @@ egypt-jers
15609
  egyptjers
15610
  ehttp
15611
  eight %
 
15612
  eine seite widmen
15613
  einkommen
15614
  ejaculate help
@@ -15635,6 +16396,9 @@ ejuicereview
15635
  ekologiczne logo
15636
  ekologiczne-logo
15637
  ekorting
 
 
 
15638
  ekskluzywne zestaw
15639
  ekskluzywne-zestaw
15640
  ekspedisi murah
@@ -15661,6 +16425,8 @@ elegant-bodycon
15661
  elektrik malzeme
15662
  elektrik-malzeme
15663
  elektrikmalzeme
 
 
15664
  elementary entry
15665
  elementary-entry
15666
  eli online
@@ -15693,6 +16459,7 @@ elitesample
15693
  elitescort
15694
  eliteskort
15695
  elitewom
 
15696
  eloans
15697
  elsa-dress
15698
  elveda canimin
@@ -15700,8 +16467,25 @@ elveda-canimin
15700
  elway jers
15701
  elway-jers
15702
  elwayjers
 
 
 
 
 
15703
  emagrecer podem
 
 
 
 
 
 
 
 
 
15704
  emagrecer-podem
 
 
 
15705
  email academy
15706
  email advertis
15707
  email advertiz
@@ -15760,8 +16544,12 @@ empower-network
15760
  empowernetwork
15761
  empreendedor
15762
  empresa de referencia
 
 
15763
  empresa familiar nacida
15764
  empresa grande
 
 
15765
  empresa-grande
15766
  empresas grande
15767
  empresas-grande
@@ -15790,9 +16578,17 @@ encouirag
15790
  endlaved
15791
  endocrinol meta
15792
  endocrinol-meta
 
 
 
 
 
15793
  energetic article
15794
  energetic blog
 
15795
  energetic post
 
 
15796
  energetic-article
15797
  energetic-blog
15798
  energetic-post
@@ -15815,6 +16611,7 @@ eng/private
15815
  engagementring
15816
  engagermate
15817
  engagge
 
15818
  engine account
15819
  engine online
15820
  engine optim
@@ -15857,11 +16654,13 @@ enhancementpill
15857
  enhancepill
15858
  enhanceyou
15859
  enhttp
 
15860
  enjoy your blog
15861
  enjoy your page
15862
  enjoy your post
15863
  enjoy your site
15864
  enjoy your web
 
15865
  enjoy-more
15866
  enjoying by these
15867
  enjoying by this
@@ -15939,6 +16738,7 @@ equipement manufact
15939
  equipement-manufact
15940
  equipment manufact
15941
  equipment-manufact
 
15942
  equivalentt
15943
  era afl
15944
  era mlb
@@ -16029,6 +16829,8 @@ erotik
16029
  erotischer reife
16030
  erotischer-reife
16031
  erotyczna
 
 
16032
  eryaman escort
16033
  eryaman eskort
16034
  eryaman-escort
@@ -16341,7 +17143,7 @@ every info
16341
  every stuff
16342
  every wearer
16343
  every-advert
16344
- every-great-attorney
16345
  every-info
16346
  every-leg
16347
  every-light
@@ -16360,7 +17162,10 @@ everyone furthermore
16360
  everyone-furthermore
16361
  everypant
16362
  everysock
 
 
16363
  everything-dental
 
16364
  everythingdental
16365
  everythink
16366
  everytight
@@ -16382,6 +17187,7 @@ excelent
16382
  excellent article
16383
  excellent blog
16384
  excellent content
 
16385
  excellent gift for
16386
  excellent gifts for
16387
  excellent movie clip
@@ -16432,9 +17238,7 @@ excessively skill
16432
  excessively-skill
16433
  exchange buying and selling
16434
  exchange link
16435
- exchange paysafecard
16436
  exchange-link
16437
- exchange-paysafecard
16438
  exchangelink
16439
  exchanging link
16440
  exchanging-link
@@ -16456,6 +17260,12 @@ executivecoach
16456
  exelon
16457
  exercice
16458
  exgirlfriend
 
 
 
 
 
 
16459
  exists lots
16460
  exit.asp
16461
  exmo.co
@@ -16471,11 +17281,14 @@ experience boat
16471
  experience simply
16472
  experience-boat
16473
  experience-simply
16474
- experienced businesses
16475
- experienced-businesses
 
 
16476
  experiencia en el sector
16477
  expert presence
16478
  expert suggestion
 
16479
  expert writing
16480
  expert-presence
16481
  expert-suggestion
@@ -16533,6 +17346,7 @@ externer-link
16533
  extra 10 discount
16534
  extra 20 discount
16535
  extra gry
 
16536
  extract cbd
16537
  extract pill
16538
  extract-cbd
@@ -16543,10 +17357,13 @@ extremely ample
16543
  extremely broad for
16544
  extremely much
16545
  extremely superb
 
16546
  extremely valid point
 
16547
  extremely-ample
16548
  extremely-much
16549
  extremely-superb
 
16550
  extremely}
16551
  extremley
16552
  extremrly
@@ -16791,10 +17608,13 @@ familiarity daily
16791
  family motor vehicle
16792
  family-motor-vehicle
16793
  famous blog
 
16794
  famous palmist
16795
- famous social network
16796
  famous-blog
 
16797
  famous-palmist
 
16798
  fan hack
16799
  fan-hack
16800
  fanalert
@@ -16903,6 +17723,7 @@ fashion comp
16903
  fashion hair
16904
  fashion list
16905
  fashion men
 
16906
  fashion store
16907
  fashion trend
16908
  fashion web
@@ -16914,6 +17735,7 @@ fashion-compan
16914
  fashion-hair
16915
  fashion-list
16916
  fashion-men
 
16917
  fashion-store
16918
  fashion-trend
16919
  fashion-web
@@ -16992,7 +17814,7 @@ fastidious post
16992
  fastidious repl
16993
  fastidious respo
16994
  fastidious site
16995
- fastidious think
16996
  fastidious thou
16997
  fastidious under
16998
  fastidious urg
@@ -17015,7 +17837,7 @@ fastidious-post
17015
  fastidious-repl
17016
  fastidious-respo
17017
  fastidious-site
17018
- fastidious-think
17019
  fastidious-thou
17020
  fastidious-under
17021
  fastidious-urg
@@ -17023,6 +17845,7 @@ fastidious-web
17023
  fastidious-writ
17024
  fastidious, my
17025
  fastidious=
 
17026
  fastlink.run
17027
  fastloan
17028
  fastmoney
@@ -17295,6 +18118,8 @@ fetishman
17295
  fetishmen
17296
  fetishsex
17297
  fetishwom
 
 
17298
  few web log
17299
  few web page
17300
  few web site
@@ -17364,6 +18189,7 @@ filenamedat
17364
  filenamesdat
17365
  files/new
17366
  filestube
 
17367
  film erotic
17368
  film it would also
17369
  film izle
@@ -17374,6 +18200,7 @@ film semi
17374
  film song download
17375
  film streaming complet
17376
  film x
 
17377
  film-erotic
17378
  film-izle
17379
  film-kovasi
@@ -17387,6 +18214,7 @@ filmakinesi
17387
  filmerotic
17388
  filmizle
17389
  filmkovasi
 
17390
  filmmodu
17391
  filmporn
17392
  films enables
@@ -17420,6 +18248,7 @@ finance blog
17420
  finance cash
17421
  finance debt
17422
  finance emerg
 
17423
  finance service
17424
  finance solution
17425
  finance-
@@ -17428,6 +18257,7 @@ finance-cash
17428
  finance-debt
17429
  finance-emerg
17430
  finance-pak
 
17431
  finance-service
17432
  finance-solution
17433
  financeblog
@@ -17518,6 +18348,12 @@ finite-instant
17518
  finiteinstant
17519
  finnd out
17520
  fioricet
 
 
 
 
 
 
17521
  firefox-setting
17522
  firefoxik
17523
  firefoxsetting
@@ -17579,8 +18415,10 @@ fiverr
17579
  fiverseller
17580
  fivestardoll
17581
  fix credit
 
17582
  fix-credit
17583
  fix-iphone
 
17584
  fixcredit
17585
  fixed credit
17586
  fixed footbal
@@ -17597,6 +18435,7 @@ fixing credit
17597
  fixing-credit
17598
  fixingcredit
17599
  fixiphone
 
17600
  fj.o.g.a
17601
  fj.o.ga
17602
  fj.og.a
@@ -17621,6 +18460,10 @@ flashy fancy
17621
  flat belly tonic
17622
  flat-belly-tonic
17623
  flats.web
 
 
 
 
17624
  fler artiklar
17625
  fler-artiklar
17626
  flex-global
@@ -17641,8 +18484,16 @@ flo-wiki
17641
  floating-board
17642
  floatingboard
17643
  floridaflee
 
 
 
 
 
 
17644
  flowers-on-line
17645
  flowers-online
 
 
17646
  floxacin
17647
  fluccun
17648
  fluconazole
@@ -17745,6 +18596,7 @@ footwearjord
17745
  footwearmbt
17746
  footwears
17747
  for a article
 
17748
  for black mans
17749
  for black mens
17750
  for black womans
@@ -17921,7 +18773,10 @@ forteinfo
17921
  fortemuscle
17922
  forteparafon
17923
  forthcoming post
 
17924
  forthcoming-post
 
 
17925
  fortnite aimbot
17926
  fortnite cheat
17927
  fortnite hack
@@ -17950,6 +18805,7 @@ forumcoach
17950
  forumizmit
17951
  forums.real
17952
  forums.thank
 
17953
  forwarding-parcel-forward
17954
  forwholesale
17955
  forwindows8
@@ -18036,6 +18892,7 @@ free crypto
18036
  free csgo
18037
  free diamond
18038
  free download
 
18039
  free escort
18040
  free eskort
18041
  free facebook
@@ -18045,7 +18902,9 @@ free flyer make
18045
  free gay
18046
  free hack
18047
  free hip hop
 
18048
  free if you win
 
18049
  free instagram
18050
  free internation
18051
  free ios
@@ -18059,6 +18918,7 @@ free mobil
18059
  free money
18060
  free new year
18061
  free new yr
 
18062
  free number
18063
  free on-line
18064
  free online
@@ -18076,15 +18936,18 @@ free robux
18076
  free sex
18077
  free simple
18078
  free skins
 
18079
  free spin link
18080
  free spins link
18081
  free strat
18082
  free super
18083
  free tarot
 
18084
  free to surf
18085
  free too surf
18086
  free trap ins
18087
  free trial incent
 
18088
  free v buck
18089
  free visit
18090
  free watch
@@ -18108,6 +18971,7 @@ free-crypto
18108
  free-csgo
18109
  free-diamond
18110
  free-download
 
18111
  free-escort
18112
  free-eskort
18113
  free-facebook
@@ -18120,6 +18984,8 @@ free-gold
18120
  free-hack
18121
  free-hemp
18122
  free-hip-hop
 
 
18123
  free-instagram
18124
  free-internation
18125
  free-ios
@@ -18138,6 +19004,7 @@ free-mods
18138
  free-movie
18139
  free-mp3
18140
  free-mp4
 
18141
  free-number
18142
  free-offer
18143
  free-on-line
@@ -18159,12 +19026,15 @@ free-service
18159
  free-sex
18160
  free-simple
18161
  free-skins
 
18162
  free-spin-link
18163
  free-spins-link
18164
  free-strat
18165
  free-super
18166
  free-tarot
 
18167
  free-trial-incent
 
18168
  free-v-buck
18169
  free-v-bucks
18170
  free-watch
@@ -18194,13 +19064,16 @@ freedom-review
18194
  freedomevaluation
18195
  freedomreview
18196
  freedownload
 
18197
  freeescort
18198
  freeeskort
18199
  freefor.co
18200
  freefortnite
18201
  freegay
18202
  freegold
 
18203
  freehub
 
18204
  freeinternation
18205
  freeipad
18206
  freeiphone
@@ -18224,6 +19097,7 @@ freemovie
18224
  freemp3
18225
  freemp4
18226
  freenom.link
 
18227
  freeoffer
18228
  freeonline
18229
  freepokecoin
@@ -18274,9 +19148,9 @@ fresh-weblog
18274
  freshreview
18275
  freshseo
18276
  freshwaterpearl
18277
- friday 2019
18278
  friday 2020
18279
  friday 2021
 
18280
  friday michael
18281
  friday mlb
18282
  friday moncler
@@ -18287,9 +19161,9 @@ friday nhl
18287
  friday sale
18288
  friday ugg
18289
  friday watch
18290
- friday-2019
18291
  friday-2020
18292
  friday-2021
 
18293
  friday-michael
18294
  friday-mlb
18295
  friday-moncler
@@ -18300,9 +19174,9 @@ friday-nhl
18300
  friday-sale
18301
  friday-ugg
18302
  friday-watch
18303
- friday2019
18304
  friday2020
18305
  friday2021
 
18306
  fridaymlb
18307
  fridaymoncler
18308
  fridaynba
@@ -18431,20 +19305,28 @@ ful-malware
18431
  fulgor fantastic
18432
  fulgor fantástic
18433
  fulgor-fantastic
 
18434
  full download page
18435
  full length motion
18436
  full length movie
18437
  full length-motion
18438
  full movie
18439
  full porn
 
 
18440
  full-house-for-rent
18441
  full-length-movie
18442
  full-movie
18443
  full-porn
18444
  full.com/watch
18445
  full4k
 
 
18446
  fullmovie
18447
  fullporn
 
 
 
18448
  fulmalware
18449
  fun teaser with
18450
  fun-88
@@ -18526,9 +19408,13 @@ further former
18526
  further-former
18527
  furworld.ru
18528
  furworld.su
 
 
18529
  futbol barcelona
 
18530
  futbol-barcelona
18531
  futbol/forum
 
18532
  futbolbarcelona
18533
  futuristic-market
18534
  futuristicmarket
@@ -18627,23 +19513,30 @@ galleryworld
18627
  gamble online
18628
  gamble-online
18629
  gambleonline
 
18630
  gambling casino
18631
  gambling game
18632
  gambling online
 
18633
  gambling-4-u
18634
  gambling-4u
 
18635
  gambling-casino
18636
  gambling-game
18637
  gambling-online
 
18638
  gambling4u
18639
  gamblingcasino
18640
  gamblinggame
18641
  gamblingonline
 
18642
  game bong
18643
  game casino
 
18644
  game ionline
18645
  game jers
18646
  game online
 
18647
  game status system
18648
  game torrent
18649
  game wiki
@@ -18652,10 +19545,12 @@ game-casino
18652
  game-copy
18653
  game-full-online
18654
  game-game
 
18655
  game-ionline
18656
  game-jers
18657
  game-money
18658
  game-online
 
18659
  game-torrent
18660
  game-wiki
18661
  game,arcad
@@ -18674,6 +19569,7 @@ gamecube-game
18674
  gamedesigndegree
18675
  gamefullonline
18676
  gamegame
 
18677
  gameionline
18678
  gamejers
18679
  gamemoney
@@ -18728,11 +19624,16 @@ ganoolq
18728
  gaogb
18729
  gaoland
18730
  gapscent
 
18731
  garantizadas por escrito
18732
  garantizar la calidad
18733
  garantizar product
18734
  garantizar-product
 
 
 
18735
  garcinia
 
18736
  garena free
18737
  garena-free
18738
  garenafree
@@ -18759,6 +19660,9 @@ gathering-utile
18759
  gau bong dore
18760
  gấu bông dore
18761
  gau-bong-dore
 
 
 
18762
  gawab.com
18763
  gay cartoon
18764
  gay chat
@@ -18875,15 +19779,15 @@ generatingmoney
18875
  generatingprofit
18876
  generation algorithm
18877
  generation-algorithm
18878
- generator 2019
18879
  generator 2020
18880
  generator 2021
18881
- generator-2019
18882
  generator-2020
18883
  generator-2021
18884
- generator2019
18885
  generator2020
18886
  generator2021
 
18887
  generatorpro
18888
  generic albenda
18889
  generic albenza
@@ -18912,6 +19816,7 @@ genuinely fruit
18912
  genuinely good thing
18913
  genuinely great info
18914
  genuinely health
 
18915
  genuinely very help
18916
  genuinely-fantas
18917
  genuinely-fastidious
@@ -18948,8 +19853,10 @@ get blog
18948
  get bytecoin
18949
  get face
18950
  get fastidious
 
18951
  get fuck
18952
  get hold this
 
18953
  get know how
18954
  get know-how
18955
  get litecoin
@@ -18967,6 +19874,7 @@ get tinder
18967
  get tthe
18968
  get tthis
18969
  get v buck
 
18970
  get yours here
18971
  get_rid
18972
  get_started
@@ -18980,6 +19888,7 @@ get-cash
18980
  get-face
18981
  get-fantastic
18982
  get-fastidious
 
18983
  get-fuck
18984
  get-hermes
18985
  get-know-how
@@ -19000,7 +19909,9 @@ get-some-cash
19000
  get-the-answer
19001
  get-tinder
19002
  get-translate
 
19003
  get-widget
 
19004
  getaloan
19005
  getastyle
19006
  getbitcoin
@@ -19031,6 +19942,7 @@ getting-ranks
19031
  getting-thought
19032
  gettingknowledge
19033
  gettranslate
 
19034
  getwidget
19035
  getyou.asp
19036
  gezichtsbehand
@@ -19084,7 +19996,10 @@ gifts4promo
19084
  giftsclick
19085
  giftsingapore
19086
  giftssingapore
 
 
19087
  gigantix.co
 
19088
  gikves
19089
  gilet moncler
19090
  gilet-moncler
@@ -19262,6 +20177,8 @@ giveaway win
19262
  giveaway-win
19263
  giveaway! win
19264
  gives fastidious
 
 
19265
  gives quality base
19266
  gives-fastidious
19267
  gkhk
@@ -19298,6 +20215,7 @@ globalnpn
19298
  glubokoye glot
19299
  glubokoye-glot
19300
  glucophage
 
19301
  glutamina
19302
  glyburide
19303
  gma1l
@@ -19543,6 +20461,7 @@ goodtemplate
19543
  goog even
19544
  goog luck
19545
  goog-luck
 
19546
  google bind
19547
  google click
19548
  google for-
@@ -19564,6 +20483,7 @@ google saya
19564
  google solution
19565
  google us
19566
  google voice pva
 
19567
  google-bind
19568
  google-click
19569
  google-fuck
@@ -19706,6 +20626,22 @@ gooseyork
19706
  gooseyouth
19707
  gopgle
19708
  goping to
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19709
  gorgeous elegant
19710
  gorgeous escort
19711
  gorgeous eskort
@@ -19714,6 +20650,9 @@ gorgeous-escort
19714
  gorgeous-eskort
19715
  gorgeousescort
19716
  gorgeouseskort
 
 
 
19717
  gosgov
19718
  goshop.
19719
  gossip posted
@@ -19744,6 +20683,8 @@ gotta favorite
19744
  gotta favourite
19745
  gotten the therap
19746
  gotten very good thing
 
 
19747
  gowatchs
19748
  gown love
19749
  gown online
@@ -19787,6 +20728,7 @@ grafik-emas
19787
  gran calidad
19788
  gran experiencia dentro
19789
  gran experiencia en
 
19790
  gran flexibilidad
19791
  gran-calidad
19792
  grand opening giveaway
@@ -19807,6 +20749,8 @@ granny porn
19807
  granny-porn
19808
  grannyporn
19809
  grateest
 
 
19810
  gratis coin
19811
  gratis online
19812
  gratis sex
@@ -20065,6 +21009,10 @@ growth hormone
20065
  growth-hormone
20066
  growthhormone
20067
  grsentas
 
 
 
 
20068
  gruppmeddelanden
20069
  gruppo gucci
20070
  gruppo-gucci
@@ -20212,6 +21160,9 @@ gung-online
20212
  gunler bayim
20213
  gunler-bayim
20214
  guns for sale
 
 
 
20215
  gunstig kaufen
20216
  günstig kaufen
20217
  gunstig-kaufen
@@ -20233,6 +21184,8 @@ guys porn
20233
  guys-porn
20234
  guysporn
20235
  guyys
 
 
20236
  gyslera
20237
  gⲟ
20238
 
@@ -20244,9 +21197,9 @@ haarige-beichte
20244
  habitof
20245
  hack $
20246
  hack 123
20247
- hack 2019
20248
  hack 2020
20249
  hack 2021
 
20250
  hack android
20251
  hack apk
20252
  hack blog
@@ -20265,6 +21218,7 @@ hack gears pop
20265
  hack generat
20266
  hack get
20267
  hack glitch
 
20268
  hack instagram
20269
  hack instant
20270
  hack ios
@@ -20284,9 +21238,9 @@ hack unlimit
20284
  hack web
20285
  hack xyz
20286
  hack-123
20287
- hack-2019
20288
  hack-2020
20289
  hack-2021
 
20290
  hack-android
20291
  hack-apk
20292
  hack-blog
@@ -20308,6 +21262,7 @@ hack-gem
20308
  hack-generat
20309
  hack-get
20310
  hack-glitch
 
20311
  hack-instagram
20312
  hack-instant
20313
  hack-ios
@@ -20333,9 +21288,9 @@ hack-zip
20333
  hack.blog
20334
  hack.web
20335
  hack123
20336
- hack2019
20337
  hack2020
20338
  hack2021
 
20339
  hackandroid
20340
  hackapk
20341
  hackasphalt
@@ -20351,6 +21306,7 @@ hacker123
20351
  hackface
20352
  hackfb
20353
  hackgem
 
20354
  hacking 123
20355
  hacking-123
20356
  hacking123
@@ -20484,9 +21440,21 @@ hangingwithfriend
20484
  haohao
20485
  happens you are deal
20486
  happy and ready
 
 
 
 
20487
  happy fresh year
20488
  happy tht
 
 
 
 
 
20489
  happybirthday1
 
 
 
20490
  happychristmasimage
20491
  haraka black
20492
  haraka-black
@@ -20502,8 +21470,10 @@ hardy-jean
20502
  hardyhuppari
20503
  hardyjean
20504
  harga emas
 
20505
  harga plakat
20506
  harga-emas
 
20507
  harga-plakat
20508
  harnessedthem
20509
  hartmann repeated
@@ -20568,6 +21538,9 @@ hawks jers
20568
  hawks-jers
20569
  hawksjers
20570
  hay 100 localidad
 
 
 
20571
 
20572
  hcg boost
20573
  hcg-boost
@@ -20600,17 +21573,18 @@ hdwallst
20600
  hdzfilm
20601
  he contact admin
20602
  he is discussing online
 
20603
  heading out throughout
20604
  headphone power cord
20605
- headset 2019
20606
  headset 2020
20607
  headset 2021
20608
- headset-2019
20609
  headset-2020
20610
  headset-2021
20611
- headset2019
20612
  headset2020
20613
  headset2021
 
20614
  healing-article
20615
  healingindu
20616
  health advis
@@ -20644,6 +21618,11 @@ healthrecipe
20644
  healthrelated
20645
  healthstock
20646
  healthsuppl
 
 
 
 
 
20647
  heart food consult
20648
  heart site
20649
  heart-food-consult
@@ -20651,6 +21630,8 @@ heart-site
20651
  hearted web
20652
  hearted-web
20653
  heartsite
 
 
20654
  hedge fund
20655
  hedge-fund
20656
  heel ped
@@ -20719,7 +21700,25 @@ hello, it’s me
20719
  hello, its good
20720
  hello, its me
20721
  hello, please suggest
 
 
 
 
 
 
 
 
 
 
 
 
20722
  hello!my
 
 
 
 
 
 
20723
  hello.this
20724
  helloadmin
20725
  hellobonus
@@ -20779,6 +21778,7 @@ hemp-tycoon
20779
  hence choose
20780
  hentai
20781
  heook
 
20782
  hepcinat
20783
  her escort
20784
  her eskort
@@ -20968,7 +21968,37 @@ hi, it’s good
20968
  hi, it’s me
20969
  hi, its good
20970
  hi, its me
 
 
 
 
 
20971
  hi, yup
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20972
  hidro-ponik
20973
  hidroponik
20974
  hien nay
@@ -21250,6 +22280,12 @@ hollistertiendas
21250
  hollisteruk
21251
  hollywood-online
21252
  hollywoodonline
 
 
 
 
 
 
21253
  home online
21254
  home-based
21255
  home-loan
@@ -21312,6 +22348,8 @@ hoodie-cheap
21312
  hoodiecheap
21313
  hoody-cheap
21314
  hoodycheap
 
 
21315
  hookup0
21316
  hookup1
21317
  hookup2
@@ -21322,8 +22360,10 @@ hookup6
21322
  hookup7
21323
  hookup8
21324
  hookup9
 
21325
  hoolgain
21326
  hoolz
 
21327
  hootel
21328
  hoow is
21329
  hop dong kinh
@@ -21336,6 +22376,8 @@ hormônio masculin
21336
  hormonio-masculin
21337
  horoscopes
21338
  horoskop
 
 
21339
  horsesimul
21340
  host seller
21341
  host-file
@@ -21460,6 +22502,7 @@ house.cozy
21460
  houseforsale
21461
  housesforsale
21462
  housing final even
 
21463
  hover-glide
21464
  hover-shop
21465
  hoverboard 360
@@ -21506,6 +22549,8 @@ how to make $
21506
  how would certain
21507
  how_do
21508
  howdy just wanted
 
 
21509
  however before
21510
  however good topic
21511
  however great topic
@@ -21568,6 +22613,8 @@ https//
21568
  httpshttp
21569
  httpswww
21570
  httpwww
 
 
21571
  huay-today
21572
  huaytoday
21573
  huge 100%
@@ -21610,7 +22657,18 @@ husky lips
21610
  hut,hang
21611
  hut.hang
21612
  hyclate
21613
- hydraulik-
 
 
 
 
 
 
 
 
 
 
 
21614
  hydrocodone
21615
  hydroponicsys
21616
  hydroxatone
@@ -21662,6 +22720,7 @@ i'd care to find
21662
  i'd hump to
21663
  i'll bookmark and
21664
  i'm bookmarking and
 
21665
  i'm will soon
21666
  i'mnot
21667
  i'v got
@@ -21671,6 +22730,7 @@ i’d care to find
21671
  i’d hump to
21672
  i’ll bookmark and
21673
  i’m bookmarking and
 
21674
  i’m will soon
21675
  i’mn
21676
  i’ts
@@ -21683,6 +22743,7 @@ ia€?ll
21683
  iamimport
21684
  icon/set
21685
  icons/set
 
21686
  idanmark
21687
  idea for your blog
21688
  idea for your page
@@ -21704,6 +22765,7 @@ idenfify
21704
  idm crack
21705
  idm-crack
21706
  idmcrack
 
21707
  if like it
21708
  if you're.
21709
  if you’re.
@@ -21752,6 +22814,7 @@ illusion origami
21752
  illusion-origami
21753
  im grateful
21754
  im happy
 
21755
  im looking
21756
  im not
21757
  im please
@@ -21827,6 +22890,12 @@ imoniu pardavimas
21827
  įmonių pardavimas
21828
  imoniu-pardavimas
21829
  impact knowledge of
 
 
 
 
 
 
21830
  implanty
21831
  impoirtant
21832
  imporrtant
@@ -21834,9 +22903,9 @@ import game off
21834
  import games off
21835
  important be know
21836
  important infos
21837
- important-in-2019
21838
  important-in-2020
21839
  important-in-2021
 
21840
  important-infos
21841
  impregnacji
21842
  impressive article
@@ -21868,6 +22937,7 @@ improves reminiscence
21868
  imptortant
21869
  imqge
21870
  imtmdiae
 
21871
  in a ll
21872
  in blog commenting
21873
  in delicious
@@ -22001,9 +23071,11 @@ indited subject
22001
  individual friendly
22002
  individual pleasant
22003
  individual stuffs
 
22004
  individual-friendly
22005
  individual-pleasant
22006
  individual-stuffs
 
22007
  indo blackjack
22008
  indo casino
22009
  indo-blackjack
@@ -22012,10 +23084,13 @@ indoblackjack
22012
  indocasino
22013
  indonesia blackjack
22014
  indonesia casino
 
22015
  indonesia-blackjack
22016
  indonesia-casino
 
22017
  indonesiablackjack
22018
  indonesiacasino
 
22019
  indownload
22020
  indre pengemark
22021
  indre-pengemark
@@ -22044,6 +23119,12 @@ infected-almost
22044
  infected-crash
22045
  infinity-2
22046
  infinity2
 
 
 
 
 
 
22047
  influenza picture
22048
  info ,
22049
  info !
@@ -22051,6 +23132,7 @@ info .
22051
  info approximate
22052
  info base
22053
  info for my mission
 
22054
  info is priceless
22055
  info is worth
22056
  info you
@@ -22068,6 +23150,7 @@ info/ratno
22068
  info/tag
22069
  info/user
22070
  info/view
 
22071
  info0.site
22072
  info0site
22073
  info1.site
@@ -22190,20 +23273,20 @@ initial traffic?
22190
  injection fact
22191
  injection-fact
22192
  injectionfact
22193
- injuries attorney
22194
  injuries insur
22195
  injuries lawyer
22196
- injuries-attorney
22197
  injuries-insur
22198
  injuries-lawyer
22199
- injuriesattorney
22200
  injuriesinsur
22201
  injurieslawyer
22202
- injury attorney
22203
  injury lawyer
22204
- injury-attorney
22205
  injury-lawyer
22206
- injuryattorney
22207
  injurylawyer
22208
  inn accordance
22209
  inna cena
@@ -22244,6 +23327,8 @@ inscritas-cerveja
22244
  insdier
22245
  inseminacion artificial
22246
  inseminacion-artificial
 
 
22247
  inside an setting
22248
  inside reputation
22249
  inside-reputation
@@ -22269,6 +23354,7 @@ insta kink
22269
  insta sex
22270
  insta-appraisal
22271
  insta-cheat
 
22272
  insta-fuck
22273
  insta-kink
22274
  insta-sex
@@ -22287,6 +23373,8 @@ instagram money
22287
  instagram privado
22288
  instagram private
22289
  instagram shop
 
 
22290
  instagram story view
22291
  instagram takipci
22292
  instagram takipçi
@@ -22301,6 +23389,7 @@ instagram-money
22301
  instagram-privado
22302
  instagram-private
22303
  instagram-shop
 
22304
  instagram-story-view
22305
  instagram-takipci
22306
  instagram-trick
@@ -22325,7 +23414,6 @@ instant blog
22325
  instant cash
22326
  instant loan
22327
  instant pay
22328
- instant paysafecard
22329
  instant traff
22330
  instant web
22331
  instant week
@@ -22334,7 +23422,6 @@ instant-blog
22334
  instant-cash
22335
  instant-loan
22336
  instant-pay
22337
- instant-paysafecard
22338
  instant-traff
22339
  instant-web
22340
  instant-week
@@ -22463,6 +23550,7 @@ internetlink
22463
  internetmarket
22464
  internetmosque
22465
  internetowe
 
22466
  internetpage
22467
  internetparish
22468
  internetpoker
@@ -22580,6 +23668,8 @@ inzest
22580
  ios dapps
22581
  ios spoof
22582
  ios-spoof
 
 
22583
  ip.ideal
22584
  ipad tablet
22585
  ipad-1
@@ -22666,6 +23756,8 @@ ipodrepair
22666
  ipodsuppl
22667
  iporn
22668
  iprofit
 
 
22669
  ipアドレス
22670
  iq option
22671
  iq science
@@ -22686,6 +23778,7 @@ irresistible-site
22686
  irresistible-web
22687
  is about advert
22688
  is as nicely
 
22689
  is goping
22690
  is great article
22691
  is great blog
@@ -22696,6 +23789,7 @@ is my blog
22696
  is my page
22697
  is my web
22698
  is seo
 
22699
  is thhe
22700
  is-goping
22701
  is-now-available
@@ -22720,7 +23814,6 @@ isn’’t
22720
  isn”t
22721
  isn`t
22722
  isnít
22723
- isnt
22724
  isotretinoine
22725
  isseo
22726
  issue with your site
@@ -22748,6 +23841,7 @@ it contains been
22748
  it duvet
22749
  it for posting
22750
  it for the post
 
22751
  it oakley
22752
  it ordeno
22753
  it ordenó
@@ -22843,6 +23937,7 @@ itt does
22843
  itt is
22844
  itt was
22845
  itzshipd
 
22846
  iwant2
22847
  iwc brand
22848
  iwc-brand
@@ -22886,39 +23981,39 @@ jacken-west
22886
  jackenonline
22887
  jackenwest
22888
  jackeonline
22889
- jacket 2019
22890
  jacket 2020
22891
  jacket 2021
 
22892
  jacket canad
22893
  jacket jap
22894
  jacket jp
22895
  jacket out
22896
  jacket sale
22897
  jacket sunglass
22898
- jacket-2019
22899
  jacket-2020
22900
  jacket-2021
 
22901
  jacket-canad
22902
  jacket-jap
22903
  jacket-jp
22904
  jacket-out
22905
  jacket-sale
22906
  jacket-sunglass
22907
- jacket2019
22908
  jacket2020
22909
  jacket2021
 
22910
  jacketcanad
22911
  jacketout
22912
- jackets 2019
22913
  jackets 2020
22914
  jackets 2021
 
22915
  jackets jap
22916
  jackets jp
22917
  jackets out
22918
  jackets sale
22919
- jackets-2019
22920
  jackets-2020
22921
  jackets-2021
 
22922
  jackets-for-kids
22923
  jackets-for-men
22924
  jackets-for-wom
@@ -22926,9 +24021,9 @@ jackets-jap
22926
  jackets-jp
22927
  jackets-out
22928
  jackets-sale
22929
- jackets2019
22930
  jackets2020
22931
  jackets2021
 
22932
  jacketsale
22933
  jacketsforkids
22934
  jacketsformen
@@ -22966,6 +24061,7 @@ jacobsjap
22966
  jacobsjp
22967
  jacobspurse
22968
  jacobsuk
 
22969
  jagody acai
22970
  jagody-acai
22971
  jagowho
@@ -23040,6 +24136,8 @@ japones-kumon
23040
  japonesa tatuage
23041
  japonesa-tatuage
23042
  japonesatatuage
 
 
23043
  jassen dames
23044
  jassen neder
23045
  jassen out
@@ -23049,6 +24147,7 @@ jassen-out
23049
  jassendames
23050
  jassenneder
23051
  jassenout
 
23052
  jazz jers
23053
  jazz-jers
23054
  jazzjers
@@ -23216,13 +24315,19 @@ job on the content
23216
  job on the page
23217
  job on the site
23218
  job on the web
 
 
23219
  job usa
23220
  job-mom
 
 
23221
  job-usa
23222
  jobs mom
23223
  jobs usa
23224
  jobs-mom
23225
  jobs-usa
 
 
23226
  jogadore assiduos
23227
  jogadore assíduos
23228
  jogadore-assiduos
@@ -23250,11 +24355,16 @@ joint-pain
23250
  jointpain
23251
  jojobet
23252
  joker casino
 
 
23253
  joker-123
23254
  joker-casino
 
 
23255
  joker123
23256
  jokercasino
23257
  jokerfull
 
23258
  joma jewelery
23259
  joma jewellery
23260
  joma jewelry
@@ -23308,6 +24418,7 @@ jordan4
23308
  jordanbrand
23309
  jordangamma
23310
  jordangrise
 
23311
  jordankicks
23312
  jordanmilan
23313
  jordannoir
@@ -23371,14 +24482,18 @@ juaanmartinezz
23371
  juanjuan
23372
  judi blackjack
23373
  judi casino
 
23374
  judi online
23375
  judi poker
23376
  judi roulette
 
23377
  judi-blackjack
23378
  judi-casino
 
23379
  judi-online
23380
  judi-poker
23381
  judi-roulette
 
23382
  judiblackjack
23383
  judicasino
23384
  judionline
@@ -23409,9 +24524,11 @@ just book mark
23409
  just cetirizine
23410
  just like hypno
23411
  just saying you
 
23412
  just wanna
23413
  just-book-mark
23414
  just-cetirizine
 
23415
  just-wanna
23416
  justcan do
23417
  justcetirizine
@@ -23525,6 +24642,8 @@ kartu-poker
23525
  karuteie
23526
  kasino
23527
  kassino
 
 
23528
  kat.h.l.e.en
23529
  kat.h.l.ee.n
23530
  kat.h.l.een
@@ -23562,6 +24681,8 @@ kawaii-review
23562
  kawaiireview
23563
  kawastrefa
23564
  kazino
 
 
23565
  keen of read
23566
  keep blogging!
23567
  keep on blogging
@@ -23585,6 +24706,7 @@ kensington-parka
23585
  kensingtonparka
23586
  keo nha cai
23587
  kèo-bóng
 
23588
  kerja hotel
23589
  kerja-hotel
23590
  kerjahotel
@@ -23619,6 +24741,10 @@ khau trang
23619
  khẩu trang
23620
  khau-trang
23621
  khautrang
 
 
 
 
23622
  khttp
23623
  khumbu north
23624
  khumbu-north
@@ -23645,10 +24771,12 @@ kid-panty
23645
  kidpantie
23646
  kidpanty
23647
  kids baby
 
23648
  kids nike
23649
  kids out
23650
  kids ugg
23651
  kids-baby
 
23652
  kids-nike
23653
  kids-ugg
23654
  kidsnike
@@ -23679,10 +24807,13 @@ kindle cash
23679
  kindle-cash
23680
  kindlecash
23681
  king hack
 
23682
  king slot
23683
  king-hack
 
23684
  king-slot
23685
  kinghack
 
23686
  kinh doanh
23687
  kinh-doanh
23688
  kinhdoanh
@@ -23816,8 +24947,12 @@ kode-kupon
23816
  kodekupon
23817
  kolay bir web
23818
  kolay-bir-web
 
23819
  kollagen intensiv
23820
  kollagen-intensiv
 
 
 
23821
  kombat hack
23822
  kombat x hack
23823
  kombat-hack
@@ -23833,6 +24968,8 @@ komputer
23833
  konforlu secenek
23834
  konforlu seçenek
23835
  konforlu-secenek
 
 
23836
  konkurs
23837
  konopiami indyjskimi
23838
  konopiami-indyjskimi
@@ -23860,9 +24997,14 @@ koop dsqu
23860
  koop-dsqu
23861
  koopdsqu
23862
  koopsted
 
 
 
23863
  kope jassen
23864
  kope-jassen
23865
  kopejassen
 
 
23866
  kopfhoerer
23867
  kopia-zapasowa
23868
  kor out
@@ -23982,14 +25124,29 @@ kreatif-membuat
23982
  kreddit
23983
  kreddyt
23984
  kreddyyt
 
 
 
23985
  kredit
 
23986
  kredyt
23987
  kredyyt
 
 
 
 
 
 
 
 
23988
  kristi longchamp
23989
  kristi-longchamp
23990
  kristilongchamp
23991
  krossoverov
23992
  ku42.
 
 
 
23993
  kugelbahn
23994
  kult und genuss
23995
  kulturtasche habe
@@ -24013,6 +25170,8 @@ kurs yevro
24013
  kurs-yevro
24014
  kurta online
24015
  kurta-online
 
 
24016
  kussin hartmann
24017
  kussin-hartmann
24018
  kussinhartmann
@@ -24110,6 +25269,8 @@ landing-page
24110
  landingpage
24111
  landslagstroja
24112
  landslagströja
 
 
24113
  lap lap
24114
  lap-lap
24115
  laplap
@@ -24246,6 +25407,7 @@ laurentfemme
24246
  laurentsandal
24247
  laurenuk
24248
  lavado de dinero
 
24249
  lawful page
24250
  lawful-page
24251
  lawoffice.net
@@ -24265,8 +25427,8 @@ lawyers near you
24265
  layout look great
24266
  layout of your blog
24267
  layout of your page
24268
- layout of your weblog
24269
- layout of your website
24270
  layout-look-great
24271
  layout...?
24272
 
@@ -24287,9 +25449,9 @@ leadsclub
24287
  leagle porn
24288
  leagle-porn
24289
  leaked1
24290
- leaks-2019
24291
  leaks-2020
24292
  leaks-2021
 
24293
  learn about keto
24294
  learn about this blog
24295
  learn about this issue
@@ -24311,6 +25473,7 @@ learn-traffic-law
24311
  learn+health
24312
  learnface
24313
  learnhelp
 
24314
  learningxchange
24315
  learnpain
24316
  learnpianohere
@@ -24327,6 +25490,8 @@ lebron shoe
24327
  lebron-shoe
24328
  lebronshoe
24329
  lebronxshoe
 
 
24330
  lechit narkomaniy
24331
  lechit-narkomaniy
24332
  led thumb
@@ -24343,17 +25508,26 @@ legal bud
24343
  legal cash
24344
  legal hack
24345
  legal kratom
 
24346
  legal porn
 
24347
  legal steroid
 
24348
  legal-bud
24349
  legal-cash
24350
  legal-hack
24351
  legal-kratom
 
24352
  legal-porn
 
24353
  legal-steroid
 
24354
  legalbud
24355
  legalcash
24356
  legalhack
 
 
 
24357
  legalsteroid
24358
  legend hack
24359
  legend-hack
@@ -24377,17 +25551,17 @@ legit graph
24377
  legit pharm
24378
  legit script
24379
  legit way
24380
- legit-2019
24381
  legit-2020
24382
  legit-2021
 
24383
  legit-drug
24384
  legit-graph
24385
  legit-pharm
24386
  legit-script
24387
  legit-way
24388
- legit2019
24389
  legit2020
24390
  legit2021
 
24391
  legitdrug
24392
  legitgraph
24393
  legitimate drug
@@ -24487,6 +25661,7 @@ level 50
24487
  level market
24488
  level-50
24489
  level-market
 
24490
  levelmarket
24491
  levels dissertation
24492
  levels-dissertation
@@ -24518,6 +25693,10 @@ librarys.htm
24518
  librarys.jsp
24519
  librarys.php
24520
  librium
 
 
 
 
24521
  licensed appliance
24522
  licensed-appliance
24523
  licenzija
@@ -24526,7 +25705,9 @@ lid pants
24526
  lid-pants
24527
  lies sound truth
24528
  life sex
 
24529
  life-sex
 
24530
  life.acne
24531
  life.cert
24532
  lifeinsur
@@ -24547,6 +25728,7 @@ ligne medicament
24547
  ligne médicament
24548
  ligne-medicament
24549
  ligne-médicament
 
24550
  liht therap
24551
  liht-therap
24552
  like & share
@@ -24566,6 +25748,7 @@ like this web
24566
  like your blog
24567
  like your video
24568
  like your web
 
24569
  likes on facebook
24570
  likes on instagram
24571
  likes on snapchat
@@ -24585,7 +25768,9 @@ lili-porno
24585
  liliporno
24586
  limit hold'em
24587
  limit hold’em
 
24588
  limited jers
 
24589
  limited-japan
24590
  limited-jers
24591
  limited-jp
@@ -24608,11 +25793,13 @@ link camp
24608
  link change arrange
24609
  link competence
24610
  link creati
 
24611
  link directory
24612
  link download
24613
  link exchang
24614
  link issue
24615
  link juice
 
24616
  link market
24617
  link pyramid
24618
  link redirect
@@ -24626,17 +25813,21 @@ link to their online
24626
  link to your online
24627
  link track
24628
  link vault
 
24629
  link-bait
24630
  link-build
24631
  link-camp
24632
  link-click
24633
  link-competence
24634
  link-creati
 
24635
  link-directory
24636
  link-download
24637
  link-exchang
 
24638
  link-issue
24639
  link-juice
 
24640
  link-market
24641
  link-pyramid
24642
  link-redirect
@@ -24655,6 +25846,16 @@ linkbuild
24655
  linkcamp
24656
  linkclick
24657
  linkdirect
 
 
 
 
 
 
 
 
 
 
24658
  linkexchang
24659
  linking camp
24660
  linking issue
@@ -24671,6 +25872,7 @@ linkingseo
24671
  linkissue
24672
  linkjuice
24673
  linklegend
 
24674
  linkman
24675
  linkmarket
24676
  linkpyramid
@@ -24704,6 +25906,7 @@ lip filler
24704
  lip-filler
24705
  lipi=urn
24706
  lipitor
 
24707
  lirtle effort
24708
  lisinopril
24709
  lisseur-pascher
@@ -24718,6 +25921,7 @@ listen to youtube
24718
  listen-news
24719
  listen-to-youtube
24720
  listentoyoutube
 
24721
  listy,
24722
  lite/wbb
24723
  lite1/wbb
@@ -24749,6 +25953,10 @@ liveroulette
24749
  livesex
24750
  livesmale
24751
  living by google
 
 
 
 
24752
  livro advert
24753
  livro marketing
24754
  livro-advert
@@ -24785,6 +25993,7 @@ loan comp
24785
  loan fast
24786
  loan lender
24787
  loan online
 
24788
  loan-canad
24789
  loan-cash
24790
  loan-comp
@@ -24792,10 +26001,12 @@ loan-direct
24792
  loan-fast
24793
  loan-lender
24794
  loan-online
 
24795
  loan.bid
24796
  loan.co
24797
  loan.in
24798
  loan.net
 
24799
  loanalys
24800
  loancash
24801
  loancomp
@@ -24803,19 +26014,23 @@ loandirect
24803
  loanfast
24804
  loanlender
24805
  loanonline
 
24806
  loans canad
24807
  loans compan
24808
  loans fast
24809
  loans online
 
24810
  loans-canad
24811
  loans-compan
24812
  loans-direct
24813
  loans-fast
24814
  loans-online
 
24815
  loans.co
24816
  loans.in
24817
  loans.net
24818
  loans.xyz
 
24819
  loans1
24820
  loans2
24821
  loans3
@@ -24825,6 +26040,7 @@ loanscompan
24825
  loansdirect
24826
  loansfast
24827
  loansonline
 
24828
  locate-cell-phone
24829
  locatecellphone
24830
  lociraj
@@ -24839,8 +26055,10 @@ log.se.
24839
  log/?
24840
  logcabins
24841
  login uk
 
24842
  login widget
24843
  login-uk
 
24844
  login-widget
24845
  login.asp
24846
  login.cfm
@@ -24915,9 +26133,9 @@ long penis
24915
  long-lasting-duration
24916
  long-penis
24917
  longafter
24918
- longchamp 2019
24919
  longchamp 2020
24920
  longchamp 2021
 
24921
  longchamp aus
24922
  longchamp bag
24923
  longchamp doctor
@@ -24940,9 +26158,9 @@ longchamp tourne
24940
  longchamp uk
24941
  longchamp yama
24942
  longchamp_
24943
- longchamp-2019
24944
  longchamp-2020
24945
  longchamp-2021
 
24946
  longchamp-aus
24947
  longchamp-doctor
24948
  longchamp-fabric
@@ -24969,9 +26187,9 @@ longchamp.ctr
24969
  longchamp.htm
24970
  longchamp.jsp
24971
  longchamp.php
24972
- longchamp2019
24973
  longchamp2020
24974
  longchamp2021
 
24975
  longchampaus
24976
  longchampbag
24977
  longchampdoctor
@@ -25026,6 +26244,7 @@ look more blog
25026
  look more page
25027
  look more post
25028
  look more web
 
25029
  look on-line
25030
  look paying homage
25031
  look your article
@@ -25069,9 +26288,11 @@ los-beneficio
25069
  los-replic
25070
  lose at casino
25071
  lose belly fat
 
25072
  lose weight motivat
25073
  lose weight simply
25074
  lose-belly-fat
 
25075
  lose-weight
25076
  losers beat
25077
  losers outnumbered
@@ -25079,6 +26300,8 @@ losers-beat
25079
  losers-outnumbered
25080
  loseweight
25081
  losing maany
 
 
25082
  losreplic
25083
  loss weight
25084
  loss-weight
@@ -25118,7 +26341,11 @@ lotterypro
25118
  lottie maxi
25119
  lottie-maxi
25120
  lottiemaxi
 
 
 
25121
  lotto-tip
 
25122
  lottotip
25123
  loubiton
25124
  louboutin bianca
@@ -25193,7 +26420,11 @@ louisvitton
25193
  louisvuit.
25194
  louisvuitton
25195
  louiswuitton
 
 
 
25196
  love (:
 
25197
  love connect
25198
  love cougar
25199
  love perfect
@@ -25277,6 +26508,7 @@ lpgn product
25277
  lpgn-laminin
25278
  lpgn-moldova
25279
  lpgn-product
 
25280
  ltongealp
25281
  ltonser
25282
  lub cbd
@@ -25286,6 +26518,7 @@ lublina.
25286
  luck jers
25287
  luck-jers
25288
  luckjers
 
25289
  lucky patcher
25290
  lucky-patcher
25291
  luckypatcher
@@ -25379,8 +26612,14 @@ lvout
25379
  lvreplic
25380
  lvsale
25381
  lvuk
 
 
 
 
25382
  lyrica.to
25383
  lyrica4u
 
 
25384
  lⲟ
25385
 
25386
 
@@ -25454,6 +26693,9 @@ magic-wealth-spell
25454
  magicmoncler
25455
  magister kesehatan
25456
  magister-kesehatan
 
 
 
25457
  magnificent article
25458
  magnificent blog
25459
  magnificent good
@@ -25568,6 +26810,7 @@ majesticriver
25568
  make blogging
25569
  make comment due
25570
  make csgo
 
25571
  make good using
25572
  make hemp
25573
  make may stay
@@ -25738,6 +26981,8 @@ manteaukaren
25738
  many extra popular
25739
  many-utilizes
25740
  manyy
 
 
25741
  maqnage
25742
  maquiagem para
25743
  maquiagem profes
@@ -25778,12 +27023,14 @@ mariageorig
25778
  mariages simplif
25779
  mariages-simplif
25780
  marihuana
 
25781
  marijuana bene
25782
  marijuana etf
25783
  marijuana fact
25784
  marijuana lawyer
25785
  marijuana sample
25786
  marijuana strain
 
25787
  marijuana-bene
25788
  marijuana-etf
25789
  marijuana-fact
@@ -25826,35 +27073,43 @@ market-samurai
25826
  market-xchange
25827
  market.financ
25828
  marketexchang
 
25829
  marketing blog
25830
  marketing book
25831
  marketing digital
 
25832
  marketing exchang
25833
  marketing funnel
25834
  marketing hero
 
25835
  marketing mark
25836
  marketing monst
25837
  marketing online
25838
  marketing platform
25839
  marketing prof
25840
  marketing samu
 
25841
  marketing service
25842
  marketing software
25843
  marketing specialist
 
25844
  marketing tip
25845
  marketing video clip
25846
  marketing with social
25847
  marketing with video
25848
  marketing xchange
25849
  marketing-advert
 
25850
  marketing-and-advert
25851
  marketing-approach
25852
  marketing-blog
25853
  marketing-book
25854
  marketing-digital
 
25855
  marketing-exchang
25856
  marketing-funnel
25857
  marketing-hero
 
25858
  marketing-mark
25859
  marketing-mix
25860
  marketing-monst
@@ -25862,9 +27117,11 @@ marketing-online
25862
  marketing-platform
25863
  marketing-prof
25864
  marketing-samu
 
25865
  marketing-service
25866
  marketing-software
25867
  marketing-specialist
 
25868
  marketing-tip
25869
  marketing-video-clip
25870
  marketing-xchange
@@ -25879,6 +27136,7 @@ marketingonline
25879
  marketingplatform
25880
  marketingprof
25881
  marketingsamu
 
25882
  marketingservice
25883
  marketingtip
25884
  marketingxchange
@@ -25952,7 +27210,6 @@ massage envy
25952
  massage erotic
25953
  massage massage
25954
  massage velvet
25955
- massage_
25956
  massage-close
25957
  massage-envy
25958
  massage-erotic
@@ -26019,6 +27276,24 @@ mastery-plan
26019
  mastery-series
26020
  mastery-since
26021
  mastery-under
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26022
  mat luoi
26023
  mặt lưỡi
26024
  mat-luoi
@@ -26034,8 +27309,14 @@ material stylish
26034
  material-stylish
26035
  material, regards
26036
  matiion
26037
- matka gambling
26038
- matka-gambling
 
 
 
 
 
 
26039
  matluoi
26040
  matters on the web
26041
  matthews jers
@@ -26043,6 +27324,9 @@ matthews-jers
26043
  matthewsjers
26044
  mattress clothes
26045
  matural
 
 
 
26046
  max griffey
26047
  max sale
26048
  max-griffey
@@ -26276,6 +27560,8 @@ medias sociaux
26276
  medias-sociaux
26277
  medical marijuana
26278
  medical-marijuana
 
 
26279
  medicarefraud
26280
  medicinez
26281
  medicinz
@@ -26363,10 +27649,28 @@ meizitang
26363
  meja casino
26364
  meja-casino
26365
  mejacasino
 
 
 
 
 
26366
  mejor servicio
 
 
 
26367
  mejor-servicio
 
26368
  mejores booster
 
 
 
 
26369
  mejores-booster
 
 
 
 
 
26370
  melatonin
26371
  melhor preco
26372
  melhor preço
@@ -26408,8 +27712,10 @@ membership.htm
26408
  membership.jsp
26409
  membership.php
26410
  membershiphack
 
26411
  memerangi keragu
26412
  memerangi-keragu
 
26413
  memoria javit
26414
  memória javit
26415
  memoria teszt
@@ -26458,6 +27764,10 @@ men-timber
26458
  men's timber
26459
  men’s timber
26460
  men+
 
 
 
 
26461
  menbarbour
26462
  menboost
26463
  mencheap
@@ -26534,17 +27844,17 @@ mercedes vip
26534
  mercedes-vip
26535
  mercedesvip
26536
  mercenary.co
26537
- mercurial 2019
26538
  mercurial 2020
26539
  mercurial 2021
 
26540
  mercurial vapo
26541
- mercurial-2019
26542
  mercurial-2020
26543
  mercurial-2021
 
26544
  mercurial-vapo
26545
- mercurial2019
26546
  mercurial2020
26547
  mercurial2021
 
26548
  mercurialvapo
26549
  merely extremely
26550
  merely wanna
@@ -26555,6 +27865,8 @@ mergerhelper
26555
  meridia
26556
  mes hormone
26557
  mes-hormone
 
 
26558
  message all around
26559
  message erotic
26560
  message the agency
@@ -26597,6 +27909,8 @@ metro-star
26597
  metronidazole
26598
  metrostar
26599
  meu teor send
 
 
26600
  mezzo louis
26601
  mezzo-louis
26602
  mezzolouis
@@ -26655,10 +27969,20 @@ milanouk
26655
  mild activ
26656
  mild-activ
26657
  milendress
 
 
26658
  milf_
 
 
 
 
26659
  milfs_
 
 
 
26660
  military friendly
26661
  military vacation
 
26662
  military-friendly
26663
  military-vacation
26664
  militaryfriendly
@@ -26748,6 +28072,7 @@ mirapex
26748
  mirror femme
26749
  mirror-femme
26750
  mirrorfemme
 
26751
  miss hookup
26752
  miss-hookup
26753
  missed hookup
@@ -26827,6 +28152,7 @@ mlsp suit
26827
  mlsp-suit
26828
  mlspweapon
26829
  mmcenter.in
 
26830
  mmy blog
26831
  mmy page
26832
  mmy web
@@ -26919,9 +28245,9 @@ moncle sito
26919
  moncle-site
26920
  moncle-sito
26921
  monclear
26922
- moncler 2019
26923
  moncler 2020
26924
  moncler 2021
 
26925
  moncler amster
26926
  moncler andorra
26927
  moncler barata
@@ -26976,9 +28302,9 @@ moncler vos
26976
  moncler weste
26977
  moncler westen
26978
  moncler--
26979
- moncler-2019
26980
  moncler-2020
26981
  moncler-2021
 
26982
  moncler-amster
26983
  moncler-andorra
26984
  moncler-barata
@@ -27040,9 +28366,9 @@ moncler.htm
27040
  moncler.jsp
27041
  moncler.php
27042
  moncler`
27043
- moncler2019
27044
  moncler2020
27045
  moncler2021
 
27046
  moncleramster
27047
  monclerandorra
27048
  monclerbarata
@@ -27110,9 +28436,11 @@ mondayugg
27110
  monetize you
27111
  monetize-you
27112
  money adder
 
27113
  money buzz
27114
  money fast
27115
  money generat
 
27116
  money man uga
27117
  money now loan
27118
  money online
@@ -27121,6 +28449,7 @@ money prim
27121
  money robot
27122
  money vault
27123
  money-adder
 
27124
  money-buzz
27125
  money-fast
27126
  money-game
@@ -27128,6 +28457,7 @@ money-generat
27128
  money-illusion
27129
  money-loan
27130
  money-mak
 
27131
  money-now-loan
27132
  money-online
27133
  money-phone
@@ -27143,11 +28473,13 @@ money.ctr
27143
  money.htm
27144
  money.jsp
27145
  money.php
 
27146
  moneybuzz
27147
  moneyfast
27148
  moneygame
27149
  moneygenerat
27150
  moneyillusion
 
27151
  moneyloan
27152
  moneymak
27153
  moneyonline
@@ -27256,6 +28588,7 @@ moore-about
27256
  more clash of
27257
  more effective!
27258
  more eventually
 
27259
  more of your article
27260
  more of your blog
27261
  more of your post
@@ -27271,6 +28604,7 @@ more-effective!
27271
  more-eventually
27272
  more-lv
27273
  more-smartly
 
27274
  morelv
27275
  morpg
27276
  morre about
@@ -27311,6 +28645,16 @@ motivation book
27311
  motivation-book
27312
  motor whole
27313
  motor-whole
 
 
 
 
 
 
 
 
 
 
27314
  mount sex
27315
  mount-sex
27316
  mountsex
@@ -27323,6 +28667,7 @@ movement-part
27323
  movementpart
27324
  mover los angeles
27325
  movers los angeles
 
27326
  movie are general
27327
  movie full
27328
  movie game play
@@ -27420,6 +28765,7 @@ much-gucci
27420
  much-important
27421
  much-utile
27422
  muchgucci
 
27423
  mucho tu post
27424
  mudah beli
27425
  mudah-beli
@@ -27429,6 +28775,10 @@ muhammad christ
27429
  muhammad-christ
27430
  muhammadchrist
27431
  muhst say
 
 
 
 
27432
  mujer timberland
27433
  mujer-timberland
27434
  mujeres solteras
@@ -27546,19 +28896,14 @@ my apple iphone
27546
  my apple macbook
27547
  my bebo
27548
  my bitcoin
27549
- my blg -
27550
- my blg –
27551
- my blg —
27552
  my blg ;
27553
  my blg :
27554
  my blg;
27555
  my blg:
27556
  my blo look
27557
- my blog -
27558
- my blog –
27559
- my blog —
27560
  my blog ;
27561
  my blog :
 
27562
  my blog …
27563
  my blog audience
27564
  my blog fer
@@ -27572,9 +28917,6 @@ my blog:
27572
  my blog..
27573
  my blog…
27574
  my blopg
27575
- my boog -
27576
- my boog –
27577
- my boog —
27578
  my boog ;
27579
  my boog :
27580
  my boog ..
@@ -27604,9 +28946,8 @@ my online
27604
  my own blog
27605
  my own web
27606
  my paage
27607
- my page -
27608
- my page
27609
- my page —
27610
  my page ..
27611
  my page …
27612
  my page 24
@@ -27621,6 +28962,7 @@ my pagee
27621
  my pagge
27622
  my personal own
27623
  my ppage
 
27624
  my pzge
27625
  my sikte
27626
  my site ;
@@ -27630,15 +28972,13 @@ my site …
27630
  my site looks
27631
  my site read
27632
  my site rolnic
 
27633
  my site trek
27634
  my site;
27635
  my site:
27636
  my site..
27637
  my site…
27638
  my sitee
27639
- my sitte -
27640
- my sitte –
27641
- my sitte —
27642
  my sitte ;
27643
  my sitte :
27644
  my sitte ..
@@ -27648,6 +28988,7 @@ my sitte;
27648
  my sitte:
27649
  my sitte..
27650
  my sitte…
 
27651
  my social networks
27652
  my ssite
27653
  my vape
@@ -27655,9 +28996,8 @@ my view its
27655
  my wallet is
27656
  my wblg
27657
  my wblog
27658
- my web -
27659
- my web
27660
- my web —
27661
  my web ..
27662
  my web …
27663
  my web blog
@@ -27673,16 +29013,17 @@ my web..
27673
  my web…
27674
  my webb
27675
  my weblg
27676
- my weblog -
27677
- my weblog
27678
- my weblog
 
27679
  my weblog goes
27680
  my weblog read
27681
  my weblog trek
27682
  my webpage
27683
- my website -
27684
- my website
27685
- my website
27686
  my website …
27687
  my website goes
27688
  my website read
@@ -27712,6 +29053,7 @@ my-most-favourite
27712
  my-my
27713
  my-new-ip
27714
  my-online
 
27715
  my-pzge
27716
  my-sitte
27717
  my-ssite
@@ -27754,6 +29096,7 @@ mynocine sans
27754
  mynocine-sans
27755
  myonline
27756
  myowndomain
 
27757
  myqrop
27758
  myresume
27759
  myreview.co
@@ -27866,6 +29209,7 @@ nam-nu
27866
  nam-nữ
27867
  namacalnie zalega
27868
  namacalnie-zalega
 
27869
  name on yolo
27870
  name-brand
27871
  name-on-yolo
@@ -27884,6 +29228,7 @@ nâng-mũi
27884
  nanogold
27885
  naproxen
27886
  narkologicheskaya
 
27887
  naruto hottest
27888
  naruto-hottest
27889
  nashivki leibly
@@ -27969,7 +29314,8 @@ nbshoe
27969
  ñç
27970
  nce nce
27971
  near near
27972
- nearby rv repair
 
27973
  nearly like a clean
27974
  neat article
27975
  neat blog
@@ -27985,6 +29331,7 @@ neat-site
27985
  neat-web
27986
  neatarticle
27987
  neatblog
 
27988
  neatly favor
27989
  neatly favour
27990
  neatly preferred
@@ -28002,6 +29349,7 @@ need bitcoin
28002
  need bytecoin
28003
  need litecoin
28004
  need sex
 
28005
  need wondrous
28006
  need-bitcoin
28007
  need-bytecoin
@@ -28009,6 +29357,7 @@ need-litecoin
28009
  need-sex
28010
  needbitcoin
28011
  needbytecoin
 
28012
  needlitecoin
28013
  needmoney
28014
  needs wondrous
@@ -28079,6 +29428,7 @@ new jord
28079
  new large
28080
  new manolo
28081
  new mastery
 
28082
  new room decor
28083
  new rooms decor
28084
  new seo
@@ -28099,6 +29449,7 @@ new-large
28099
  new-manolo
28100
  new-mastery
28101
  new-oakley
 
28102
  new-proxy-list
28103
  new-room-decor
28104
  new-rooms-decor
@@ -28125,6 +29476,7 @@ newhong
28125
  newjord
28126
  newmanolo
28127
  newoakley
 
28128
  newport 100s
28129
  newport-100s
28130
  newport100s
@@ -28142,9 +29494,9 @@ newsletter-service
28142
  newss.
28143
  newvibram
28144
  newwebsite
28145
- newyear2019
28146
  newyear2020
28147
  newyear2021
 
28148
  nexium.to
28149
  nexium4u
28150
  nexopia
@@ -28189,6 +29541,9 @@ nfr.ctr
28189
  nfr.htm
28190
  nfr.jsp
28191
  nfr.php
 
 
 
28192
  nghiệp google
28193
  nghiep-a-z
28194
  nghiệp-a-z
@@ -28416,6 +29771,7 @@ nnuauec
28416
  no collateral
28417
  no continu
28418
  no copy right
 
28419
  no fee apart
28420
  no genuine difference
28421
  no guarant
@@ -28427,7 +29783,6 @@ no-collateral
28427
  no-continu
28428
  no-copy-right
28429
  no-credit
28430
- no-deposit-bonus
28431
  no-fuss
28432
  no-guarant
28433
  no-hassle
@@ -28448,6 +29803,7 @@ noir homme
28448
  noir-homme
28449
  noirhomme
28450
  nolvadex
 
28451
  noo wonder
28452
  noot sure
28453
  nordstrom moncler
@@ -28521,6 +29877,8 @@ nova colecao
28521
  nova coleção
28522
  nova-colecao
28523
  nova-coleção
 
 
28524
  novo negocio
28525
  novo negócio
28526
  novo-negocio
@@ -28831,7 +30189,10 @@ oculosfeminino
28831
  oczyszczalnia przydomow
28832
  oczyszczalnia-przydomow
28833
  odchudzanie
 
28834
  odds of affect
 
 
28835
  odszkodowania
28836
  oduvan4ik
28837
  odziez
@@ -28851,6 +30212,7 @@ of entry this
28851
  of essay writing
28852
  of herpes
28853
  of internet
 
28854
  of manies
28855
  of of the
28856
  of on your blog
@@ -28944,9 +30306,11 @@ officeautopilot
28944
  officeerror
28945
  official giub
28946
  official moncler
 
28947
  official web
28948
  official-giub
28949
  official-moncler
 
28950
  official-sale
28951
  official-steeler
28952
  official-style
@@ -28958,6 +30322,7 @@ officialemoncler
28958
  officialgiub
28959
  officialmailsite
28960
  officialmoncler
 
28961
  officialsale
28962
  officialsteeler
28963
  officialstyle
@@ -28981,8 +30346,11 @@ offline forum
28981
  offline-forum
28982
  ofhuman
28983
  oficery
 
 
28984
  oficialniy sayt
28985
  oficialniy-sayt
 
28986
  ofnews
28987
  ogrodowyparasol
28988
  ogrodowypokrowi
@@ -29010,6 +30378,8 @@ old|
29010
  olur oturum
29011
  olur-oturum
29012
  omalizumab
 
 
29013
  on board battery
29014
  on da chia se
29015
  ơn đã chia sẻ
@@ -29095,6 +30465,7 @@ online 24
29095
  online albenda
29096
  online albenza
29097
  online bag
 
29098
  online best
29099
  online betting
29100
  online boot
@@ -29133,17 +30504,20 @@ online games store
29133
  online gaming play
29134
  online gaming store
29135
  online gefunden
 
29136
  online grant app
29137
  online gratis
29138
  online gry
29139
  online heel
29140
  online hn
 
29141
  online internet
29142
  online journ
29143
  online life coach
29144
  online loan
29145
  online longbow
29146
  online m4a
 
29147
  online movie
29148
  online mp3
29149
  online mp4
@@ -29154,6 +30528,7 @@ online poker
29154
  online pokie
29155
  online profit
29156
  online reader
 
29157
  online reddit
29158
  online rewad
29159
  online schuh
@@ -29161,6 +30536,8 @@ online sex
29161
  online shoe
29162
  online shop
29163
  online site
 
 
29164
  online store selling
29165
  online success
29166
  online toos
@@ -29172,11 +30549,11 @@ online vietnam
29172
  online weblog
29173
  online webpage
29174
  online website
29175
- online бесплатно
29176
  online-24
29177
  online-albenda
29178
  online-albenza
29179
  online-bag
 
29180
  online-best
29181
  online-betting
29182
  online-blog
@@ -29209,12 +30586,14 @@ online-games-store
29209
  online-gaming-play
29210
  online-gaming-store
29211
  online-gefunden
 
29212
  online-grant-app
29213
  online-gratis
29214
  online-gry
29215
  online-guide-of
29216
  online-heel
29217
  online-hn
 
29218
  online-internet
29219
  online-invest
29220
  online-journ
@@ -29223,6 +30602,7 @@ online-loan
29223
  online-longbow
29224
  online-m4a
29225
  online-market
 
29226
  online-med
29227
  online-money
29228
  online-movie
@@ -29244,9 +30624,12 @@ online-sex
29244
  online-shoe
29245
  online-shop
29246
  online-site
 
 
29247
  online-store
29248
  online-success
29249
  online-toos
 
29250
  online-unblock
29251
  online-usa
29252
  online-video-market
@@ -29254,7 +30637,6 @@ online-weblog
29254
  online-webpage
29255
  online-website
29256
  online-zapatilla
29257
- online-бесплатно
29258
  online,look
29259
  online,shop
29260
  online:look
@@ -29286,12 +30668,15 @@ onlineeurax
29286
  onlineforsale
29287
  onlinefree
29288
  onlinegambl
 
 
29289
  onlineheel
29290
  onlineinternet
29291
  onlineinvest
29292
  onlinejp
29293
  onlineloan
29294
  onlinem4a
 
29295
  onlinemed
29296
  onlinemoney
29297
  onlinemp3
@@ -29309,7 +30694,9 @@ onlineschuh
29309
  onlinesex
29310
  onlineshoe
29311
  onlineshop
 
29312
  onlinestore
 
29313
  onlinezapatilla
29314
  onlpy
29315
  only + free
@@ -29351,6 +30738,7 @@ ooobag
29351
  ooobrand
29352
  ooowatch
29353
  openair
 
29354
  openlink?
29355
  openning
29356
  operated respir
@@ -29416,6 +30804,8 @@ orderforte
29416
  ordergeneric
29417
  orderparafon
29418
  ordersoma
 
 
29419
  organic hemp
29420
  organic seo
29421
  organic-hemp
@@ -29425,6 +30815,7 @@ organizovana zlo
29425
  organizovana-zlo
29426
  organogold
29427
  orgazma
 
29428
  orghttp
29429
  oriflame
29430
  origami origami
@@ -29704,7 +31095,10 @@ oxycodone
29704
  oxycontin
29705
  oympia
29706
  oyun avtomat
 
29707
  oyun-avtomat
 
 
29708
 
29709
 
29710
 
@@ -29757,7 +31151,9 @@ page give pleasant
29757
  page gives pleasant
29758
  page is fastidious
29759
  page is invaluable
 
29760
  page is priceless
 
29761
  page is truly
29762
  page link
29763
  page of search engine
@@ -29811,9 +31207,11 @@ página-web
29811
  pagss
29812
  paid autosurf
29813
  paid google
 
29814
  paid review
29815
  paid-autosurf
29816
  paid-google
 
29817
  paid-review
29818
  pain-behind
29819
  pain-relief
@@ -30040,6 +31438,7 @@ paragraph is real
30040
  paragraph is truly
30041
  paragraph offer
30042
  paragraph post
 
30043
  paragraph writ
30044
  paragraph-at-this
30045
  paragraph-here
@@ -30156,7 +31555,9 @@ passionaqte
30156
  passionately fond
30157
  passionately-fond
30158
  passive income system
 
30159
  passive-income-system
 
30160
  passo_a_passo
30161
  passo-a-passo
30162
  passprefix
@@ -30188,6 +31589,8 @@ past-lives-memory
30188
  pastebin.fun
30189
  patagonia-zone
30190
  patagoniazone
 
 
30191
  patience maxi
30192
  patience-maxi
30193
  patiencemaxi
@@ -30211,7 +31614,9 @@ paulsmithsu
30211
  paxil
30212
  pay_day
30213
  pay-as-you-go
 
30214
  payday loan
 
30215
  payday-loan
30216
  payday-on
30217
  payday.co
@@ -30221,6 +31626,8 @@ payday.ro
30221
  payday.ru
30222
  payday.su
30223
  payday.za
 
 
30224
  paydayloan
30225
  paydaynote
30226
  paydayon
@@ -30247,10 +31654,7 @@ paypalcash
30247
  paypall
30248
  paypalmoney
30249
  payroll-calc
30250
- paysafecard exchang
30251
- paysafecard instant
30252
- paysafecard-exchang
30253
- paysafecard-instant
30254
  pazarlayan pezevengin
30255
  pazarlayan-pezevengin
30256
  pbrolme
@@ -30317,6 +31721,10 @@ peer-you
30317
  pefcret
30318
  pen montblanc
30319
  pen-montblanc
 
 
 
 
30320
  penetrar uma
30321
  penetrative sex
30322
  penetrative-sex
@@ -30376,11 +31784,13 @@ pens-montblanc
30376
  pension frankfurt
30377
  pension-frankfurt
30378
  pensmontblanc
 
30379
  people about the subject
30380
  people about the topic
30381
  people about this subject
30382
  people about this topic
30383
  people can deeply
 
30384
  people for the subject
30385
  people for the topic
30386
  people for this subject
@@ -30412,6 +31822,9 @@ pequenas-negocio
30412
  perabot kantor
30413
  perabot-kantor
30414
  percocet
 
 
 
30415
  perfect blog
30416
  perfect diet
30417
  perfect interest
@@ -30458,6 +31871,8 @@ periodt.
30458
  perku versla
30459
  perku verslą
30460
  perku-versla
 
 
30461
  permission allow
30462
  permission-allow
30463
  permonth.co
@@ -30465,14 +31880,17 @@ person prov
30465
  person-prov
30466
  persona attribute
30467
  personal blogroll
 
30468
  personal pc
30469
  personal personal
30470
  personal pupil
30471
  personal silicone
30472
  personal stuffs
 
30473
  personal-blogroll
30474
  personal-exper
30475
  personal-injury
 
30476
  personal-natur
30477
  personal-pc
30478
  personal-personal
@@ -30486,6 +31904,7 @@ personalised silicone
30486
  personalised-silicone
30487
  personalized silicone
30488
  personalizedsilicone
 
30489
  personalnatur
30490
  personalpc
30491
  personen daten
@@ -30493,6 +31912,8 @@ personen-daten
30493
  personenbezogener daten
30494
  personenbezogener-daten
30495
  personnalis
 
 
30496
  perxon
30497
  pesimdesiniz
30498
  peşimdesiniz
@@ -30525,7 +31946,9 @@ pezonesmega
30525
  pflegeversicherung
30526
  pflegezusatzversicherung
30527
  pg concern
 
30528
  pg-concern
 
30529
  pg/blog
30530
  pg/forum
30531
  pg/page
@@ -30533,12 +31956,23 @@ pg/post
30533
  pg/profil
30534
  pg/view
30535
  pgconcern
 
30536
  phan mem quan
30537
  phần mềm quản
30538
  phan-mem
30539
  phần-mềm
30540
  phan-mem-quan
 
 
 
 
 
 
 
 
30541
  pharm_
 
 
30542
  pharm.
30543
  pharma canad
30544
  pharma euro
@@ -30558,6 +31992,8 @@ pharmacy canad
30558
  pharmacy from
30559
  pharmacy online
30560
  pharmacy outlet
 
 
30561
  pharmacy without
30562
  pharmacy_
30563
  pharmacy-24
@@ -30566,16 +32002,20 @@ pharmacy-canad
30566
  pharmacy-from
30567
  pharmacy-online
30568
  pharmacy-outlet
 
 
30569
  pharmacy-without
30570
  pharmacy24
30571
  pharmacyat
30572
  pharmacyonline
30573
  pharmacyoutlet
 
30574
  pharmaeuro
30575
  pharmancies_
30576
  pharmaun
30577
  pharmi
30578
  pharmo
 
30579
  pharms
30580
  pharmz
30581
  pheaemon
@@ -30668,28 +32108,28 @@ phpbb2
30668
  phpinfo
30669
  phpoakley
30670
  phttp
30671
- phuc 2019
30672
- phục 2019
30673
  phuc 2020
30674
  phục 2020
30675
  phuc 2021
30676
  phục 2021
 
 
30677
  phục áo phông
30678
  phục áo thun
30679
  phục bon mua
30680
  phuc hot
30681
  phuc trend
30682
- phuc-2019
30683
  phuc-2020
30684
  phuc-2021
 
30685
  phuc-ao-phong
30686
  phuc-ao-thun
30687
  phuc-bon-mua
30688
  phuc-hot
30689
  phuc-trend
30690
- phuc2019
30691
  phuc2020
30692
  phuc2021
 
30693
  phucbonmua
30694
  phuchot
30695
  phuctrend
@@ -30700,6 +32140,8 @@ physician-formula
30700
  physician-review
30701
  physicians formula
30702
  physicians-formula
 
 
30703
  phytoceramide
30704
  pɦân phối
30705
  pɦân-phối
@@ -30722,6 +32164,9 @@ piece chap
30722
  piece of writing
30723
  piece off writing
30724
  piece-chap
 
 
 
30725
  pignee
30726
  pigus kvepalai
30727
  pigus-kvepalai
@@ -30747,6 +32192,7 @@ pillscheap
30747
  pillsforsale
30748
  pillsonline
30749
  pillz
 
30750
  pimples free
30751
  pimples-free
30752
  pin dump
@@ -30754,6 +32200,7 @@ pin-dump
30754
  pin, dump
30755
  pine-and-onyx
30756
  ping your self
 
30757
  pink large
30758
  pink-large
30759
  pinklarge
@@ -30812,6 +32259,9 @@ pjb-pro
30812
  pjbpro
30813
  pjure breast
30814
  pjure-breast
 
 
 
30815
  pl/wiki
30816
  place for naughty
30817
  place-for-naughty
@@ -30854,20 +32304,27 @@ plated-watch
30854
  plavix
30855
  play film trailer
30856
  play films trailer
 
30857
  play hack
 
30858
  play video review
30859
  play videos review
 
30860
  play-film-trailer
30861
  play-films-trailer
 
30862
  play-free
30863
  play-hack
 
30864
  play-online
30865
  play-reel-king
30866
  play-runescape
30867
  play-video-review
30868
  play-videos-review
 
30869
  playedd
30870
  playerblock
 
30871
  playfree
30872
  playher
30873
  playing film trailer
@@ -30878,10 +32335,12 @@ playing-film-trailer
30878
  playing-films-trailer
30879
  playing-video-review
30880
  playing-videos-review
 
30881
  playonline
30882
  playstation code
30883
  playstation-code
30884
  playvid
 
30885
  plazajp
30886
  pleasant article
30887
  pleasant blog
@@ -30972,21 +32431,28 @@ pohudenie
30972
  point ,
30973
  point !
30974
  point .
 
30975
  point generat
 
 
30976
  point-generat
 
30977
  point|
30978
  pointgenerat
 
30979
  points ,
30980
  points !
30981
  points .
30982
  points generat
30983
  points in feature
 
30984
  points-generat
30985
  points-to-think
30986
  pointsgenerat
30987
  poished
30988
  poisk-nomera-tele
30989
  pojap
 
30990
  poke amulet
30991
  poke cheat
30992
  poke coin
@@ -31043,6 +32509,7 @@ poker domino
31043
  poker game
31044
  poker machine
31045
  poker match
 
31046
  poker mistake
31047
  poker money
31048
  poker online
@@ -31050,6 +32517,7 @@ poker qq
31050
  poker republi
31051
  poker room
31052
  poker site
 
31053
  poker soda
31054
  poker strat
31055
  poker terp
@@ -31078,6 +32546,7 @@ poker-ku
31078
  poker-machine
31079
  poker-man
31080
  poker-match
 
31081
  poker-mistake
31082
  poker-money
31083
  poker-online
@@ -31085,6 +32554,7 @@ poker-qq
31085
  poker-republi
31086
  poker-room
31087
  poker-site
 
31088
  poker-soda
31089
  poker-strat
31090
  poker-terp
@@ -31115,6 +32585,7 @@ pokermoney
31115
  pokeronline
31116
  pokerqq
31117
  pokerrepubli
 
31118
  pokersoda
31119
  pokerstrat
31120
  pokertexas
@@ -31156,6 +32627,8 @@ poloshoe
31156
  polosralph
31157
  polsce pdf
31158
  polsce-pdf
 
 
31159
  pomyslow prezent
31160
  pomysłow prezent
31161
  pomyslow-prezent
@@ -31195,6 +32668,7 @@ porn angel
31195
  porn app
31196
  porn beer
31197
  porn big
 
31198
  porn cocuk
31199
  porn comic
31200
  porn dairy
@@ -31215,6 +32689,7 @@ porn hd
31215
  porn hot
31216
  porn hub
31217
  porn izle
 
31218
  porn lesb
31219
  porn live
31220
  porn lohan
@@ -31252,8 +32727,10 @@ porn wyna
31252
  porn young
31253
  porn_
31254
  porn-
 
31255
  porn-hd
31256
  porn-izle
 
31257
  porn-play
31258
  porn-podcast
31259
  porn-rape
@@ -31266,6 +32743,7 @@ pornangel
31266
  pornapp
31267
  pornbeer
31268
  pornbig
 
31269
  porncocuk
31270
  porncomic
31271
  porndairy
@@ -31287,6 +32765,7 @@ pornhot
31287
  pornhub
31288
  pornhud
31289
  pornizle
 
31290
  pornlesb
31291
  pornlive
31292
  pornlohan
@@ -31466,6 +32945,7 @@ portalu-multimedia
31466
  portray & decorat
31467
  portray & decorat
31468
  portray and decorat
 
31469
  positikon
31470
  positive credit history
31471
  positively helpful
@@ -31478,12 +32958,14 @@ possess
31478
  possible kill you
31479
  possibly can constant
31480
  possibly kill you
 
31481
  possui publicidade
31482
  possui zero
31483
  possui-publicidade
31484
  possui-zero
31485
  post ::
31486
  post aat
 
31487
  post at this site
31488
  post como este
31489
  post composing
@@ -31526,6 +33008,10 @@ post.pw
31526
  post.real
31527
  post.thank
31528
  postcarf
 
 
 
 
31529
  postfully
31530
  posting comment
31531
  posting movies frequent
@@ -31615,6 +33101,7 @@ ppvcpa
31615
  ppvtraff
31616
  pr článek
31617
  pr článk
 
31618
  pra acabar
31619
  pra-acabar
31620
  prac licencjackich
@@ -31681,10 +33168,14 @@ pradavest
31681
  pragnanter firmen
31682
  prägnanter firmen
31683
  pragnanter-firmen
 
 
 
31684
  prawnik
31685
  prazer sexual
31686
  prazer-sexual
31687
  prazosin
 
31688
  prdetty
31689
  precios_
31690
  precisely lots
@@ -31744,6 +33235,7 @@ premarin
31744
  premature ejac
31745
  premature-ejac
31746
  prematureejac
 
31747
  premium anti
31748
  premium cig
31749
  premium digit
@@ -31752,7 +33244,10 @@ premium free
31752
  premium improve
31753
  premium key
31754
  premium out
 
 
31755
  premium-account
 
31756
  premium-anti
31757
  premium-cig
31758
  premium-digit
@@ -31760,6 +33255,8 @@ premium-dignit
31760
  premium-free
31761
  premium-key
31762
  premium-out
 
 
31763
  premium.ru
31764
  premiumaccount
31765
  premiumanti
@@ -31769,6 +33266,7 @@ premiumdignit
31769
  premiumfree
31770
  premiumkey
31771
  premiumout
 
31772
  prentice capital
31773
  prentice-capital
31774
  prenticecapital
@@ -31820,12 +33318,39 @@ press-web-page
31820
  press-webpage
31821
  pressuppose
31822
  presta dinero
 
31823
  presta rapidos
 
31824
  presta-dinero
31825
  presta-rapidos
31826
  prestadinero
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31827
  prestamos rapidos
 
 
 
 
31828
  prestamos-rapidos
 
 
 
31829
  prestamosrapidos
31830
  prestarapidos
31831
  pretty candy as
@@ -31844,12 +33369,16 @@ prezzi-giub
31844
  prezzibors
31845
  prezzigiub
31846
  price cheap
 
31847
  price now!
 
31848
  price philip
31849
  price replic
31850
  price sunglass
31851
  price-cheap
 
31852
  price-of-gold
 
31853
  price-philip
31854
  price-replic
31855
  price-sunglass
@@ -31903,10 +33432,12 @@ privat-proxy
31903
  privatamateur
31904
  private amateur
31905
  private ftp
 
31906
  private-amateur
31907
  private-ftp
31908
  private-label
31909
  private-proxy
 
31910
  privateamateur
31911
  privateftp
31912
  privatelabel
@@ -31926,11 +33457,13 @@ prix-chaus
31926
  prix-ugg
31927
  prixchaus
31928
  prixugg
 
31929
  pro key
31930
  pro medical
31931
  pro pip
31932
  pro review
31933
  pro_site
 
31934
  pro-medical
31935
  pro-pip
31936
  pro-review
@@ -31952,6 +33485,7 @@ problemowych
31952
  probllem
31953
  proc opport
31954
  proc-opport
 
31955
  procedures-for
31956
  proceed travel in
31957
  proceed your writing
@@ -32006,31 +33540,37 @@ profesionales-cualificado
32006
  profesionalidad y experiencia
32007
  profesjonal
32008
  professianal
32009
- professional 2019
 
32010
  professional 2020
32011
  professional 2021
 
32012
  professional blog
 
32013
  professional cosmet
32014
  professional essay
32015
  professional hypno
32016
  professional poker
32017
  professional top quality
32018
  professional ugg
32019
- professional-2019
32020
  professional-2020
32021
  professional-2021
 
32022
  professional-blog
 
32023
  professional-cosmet
32024
  professional-essay
32025
  professional-hypno
32026
  professional-poker
32027
  professional-ugg
32028
- professional2019
32029
  professional2020
32030
  professional2021
 
32031
  professionalpoker
32032
  professionals.co
32033
  professionalugg
 
 
32034
  proficiency advantage
32035
  proficiency badge
32036
  proficiency course
@@ -32093,7 +33633,9 @@ profits-stream
32093
  profitseek
32094
  profitsreview
32095
  program fault you
 
32096
  program ppc
 
32097
  program-ppc
32098
  programs on ways
32099
  progress loan
@@ -32122,6 +33664,7 @@ prom.ru
32122
  promo art
32123
  promo artist
32124
  promo bag
 
32125
  promo marketing
32126
  promo shop
32127
  promo store
@@ -32131,16 +33674,19 @@ promo voucher
32131
  promo-art
32132
  promo-artist
32133
  promo-bag
 
32134
  promo-marketing
32135
  promo-shop
32136
  promo-store
32137
  promo-sys
32138
  promo-team
32139
  promo-voucher
 
32140
  promo+
32141
  promoart
32142
  promobag
32143
  promocja
 
32144
  promocode
32145
  promomarketing
32146
  promos code
@@ -32189,6 +33735,8 @@ propecia
32189
  propeer
32190
  proper blog
32191
  proper-ugg
 
 
32192
  propertiok
32193
  property highly secure
32194
  property pro
@@ -32196,13 +33744,18 @@ property-pro
32196
  propertypro
32197
  properugg
32198
  propip
 
 
32199
  propranolol
32200
  proshop.ru
32201
  prospects of decay
 
32202
  prostate stimul
32203
  prostate-stimul
32204
  prostitutki
 
32205
  protandim
 
32206
  protein bene
32207
  protein powder
32208
  protein review
@@ -32214,6 +33767,7 @@ protein-review
32214
  protein-tozu
32215
  proteinbene
32216
  proteindiet
 
32217
  proteintozu
32218
  prova da oab
32219
  prova-da-oab
@@ -32223,6 +33777,9 @@ proveedores de gran
32223
  provewhether
32224
  provide in the blog
32225
  provide one thing back
 
 
 
32226
  provider proficient
32227
  provider-proficient
32228
  provigil
@@ -32339,16 +33896,29 @@ punishment upon
32339
  pupil loan
32340
  pupil-loan
32341
  puppy hating dan
 
32342
  purchase generic
32343
  purchase guilt
 
32344
  purchase pitch
32345
  purchase privilege
 
 
32346
  purchase tiffany
 
 
 
 
32347
  purchase-generic
32348
  purchase-guilt
 
32349
  purchase-pitch
32350
  purchase-privilege
 
 
32351
  purchase-tiffany
 
 
32352
  purchase!cock
32353
  purchasegeneric
32354
  purchases pitch
@@ -32453,12 +34023,18 @@ qatar-eskort
32453
  qatarescort
32454
  qatareskort
32455
  qhttp
 
 
32456
  qq blog
32457
  qq online
 
 
32458
  qq-blog
32459
  qq-online
32460
  qq.blog
32461
  qq.online
 
 
32462
  qqq
32463
  qquality
32464
  qsymia india
@@ -32556,6 +34132,9 @@ quincy-femme
32556
  quincyfemme
32557
  quinoa stomach
32558
  quinoa-stomach
 
 
 
32559
  quit-smok
32560
  quit-smoking
32561
  quit9to5
@@ -32609,6 +34188,8 @@ racing-hack
32609
  racinghack
32610
  radikal.ru
32611
  radiocarpea
 
 
32612
  rahalat maroc
32613
  rahalat-maroc
32614
  raiders hat
@@ -32616,6 +34197,7 @@ raiders-hat
32616
  raidershat
32617
  raloxifene
32618
  ralph-lauren
 
32619
  ramipril
32620
  rank increase
32621
  rank-build
@@ -32797,6 +34379,10 @@ real-estate.web
32797
  real-lesbian
32798
  real-mastery
32799
  real-money
 
 
 
 
32800
  realcasino
32801
  realestate.co
32802
  realestate.web
@@ -32808,10 +34394,12 @@ reallesbian
32808
  reallky
32809
  really a commonly
32810
  really easy along
 
32811
  really excellent info
32812
  really fantastic info
32813
  really fastidious
32814
  really fruitful
 
32815
  really good paragraph
32816
  really interesting info
32817
  really like this blog
@@ -32830,9 +34418,12 @@ reallywork.we
32830
  realmoney
32831
  realms-full
32832
  realmsfull
 
32833
  realtor promo
32834
  realtor-promo
 
32835
  reap the most effect
 
32836
  reason your brand
32837
  reason-your-brand
32838
  reasonable_trendy_
@@ -32841,6 +34432,7 @@ reasonable, trendy
32841
  reasonabpe
32842
  reasons your brand
32843
  reasons-why
 
32844
  reasons-your-brand
32845
  rebate supply
32846
  rebate-supply
@@ -32870,6 +34462,7 @@ reborn-site
32870
  reborn-web
32871
  reccomend this
32872
  reccomend-this
 
32873
  receive carried
32874
  receive-carried
32875
  recent seo
@@ -32936,12 +34529,16 @@ reconquista perfeita
32936
  reconquista-perfeita
32937
  records-data
32938
  recordsdata
 
 
32939
  recovery-now
32940
  recoverynow
32941
  red christ
 
32942
  red ugg
32943
  red-bottom-shoe
32944
  red-christ
 
32945
  red-ugg
32946
  red+bottom+shoe
32947
  redact your preceding
@@ -32950,6 +34547,9 @@ redbottomshoe
32950
  redchrist
32951
  redeem playstation
32952
  redeem-playstation
 
 
 
32953
  redi_url
32954
  redi-url
32955
  redir.asp
@@ -32967,7 +34567,9 @@ redireccion.htm
32967
  redireccion.jsp
32968
  redireccion.php
32969
  redirect_link
 
32970
  redirect-link
 
32971
  redirect.asp
32972
  redirect.cfm
32973
  redirect.cgi
@@ -33000,6 +34602,9 @@ redskinsjers
33000
  redsoleshoe
33001
  reductil
33002
  redugg
 
 
 
33003
  redwingjp
33004
  reebok baseball
33005
  reebok ital
@@ -33069,6 +34674,8 @@ registration-offer
33069
  registration-paid
33070
  registration-strat
33071
  registrator
 
 
33072
  registry-clean
33073
  registry-fix
33074
  registry-repair
@@ -33083,6 +34690,8 @@ regulados de forex
33083
  regulados-de-forex
33084
  regulate their gaming
33085
  reguliatory
 
 
33086
  reinigungsfirmen hab
33087
  reirect
33088
  rejersey.co
@@ -33133,6 +34742,12 @@ relogios réplica
33133
  relogios-replic
33134
  relogios-réplica
33135
  relogiosreplic
 
 
 
 
 
 
33136
  remarkable article
33137
  remarkable blog
33138
  remarkable info
@@ -33208,6 +34823,11 @@ rencontres-amicale
33208
  renda extra
33209
  renda-extra
33210
  renewal amenit
 
 
 
 
 
33211
  rent luxury
33212
  rent_in
33213
  rent-luxury
@@ -33232,7 +34852,27 @@ repair-virgin
33232
  repairs near me
33233
  repairs near you
33234
  repairvirgin
33235
- reparacion energetica lavadora
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33236
  reparatii-masini-spa
33237
  repeated galdi
33238
  repeated-galdi
@@ -33420,9 +35060,21 @@ résultats-choquant
33420
  resulthk
33421
  resulthong
33422
  results.htm
 
 
 
 
33423
  resume expert
 
 
33424
  resume-101
 
 
 
 
33425
  resume-expert
 
 
33426
  resume101
33427
  resumeexpert
33428
  resumes expert
@@ -33471,6 +35123,7 @@ review my site
33471
  review my sitte
33472
  review my web
33473
  review online edit
 
33474
  review site
33475
  review website
33476
  review you tube
@@ -33478,6 +35131,7 @@ review-best
33478
  review-bonus
33479
  review-discount
33480
  review-on
 
33481
  review-sale
33482
  review-site
33483
  review-source
@@ -33496,13 +35150,16 @@ reviewbest
33496
  reviewbonus
33497
  reviewdiscount
33498
  reviewon
 
33499
  reviews best
33500
  reviews online
 
33501
  reviews you tube
33502
  reviews youtube
33503
  reviews-best
33504
  reviews-on
33505
  reviews-online
 
33506
  reviews-today
33507
  reviews-you-tube
33508
  reviews-youtube
@@ -33521,6 +35178,7 @@ reviewsbest
33521
  reviewsite
33522
  reviewson
33523
  reviewsource
 
33524
  reviewstoday
33525
  reviewstv
33526
  reviewthe
@@ -33581,7 +35239,9 @@ ripoff a consumer
33581
  ripoff the consumer
33582
  ripoff their consumer
33583
  ripoffreport
 
33584
  rise-hire
 
33585
  risehire
33586
  rizatriptan
33587
  road of success
@@ -33645,6 +35305,7 @@ ronni1e
33645
  ronniie
33646
  roofingcontractor
33647
  room by hour
 
33648
  room-by-hour
33649
  room-decorating-idea
33650
  rooms by hour
@@ -33775,30 +35436,59 @@ ruou dep
33775
  rượu đẹp
33776
  ruou-dep
33777
  ruproshop
 
 
 
 
33778
  russia.ru
 
 
33779
  russian mis
33780
  russian mr
33781
  russian ms
33782
  russian mulberry
33783
  russian stalker
 
33784
  russian-army-good
 
33785
  russian-mis
33786
  russian-mr
33787
  russian-ms
33788
  russian-mulberry
33789
  russian-stalker
 
 
33790
  russianmis
33791
  russianmr
33792
  russianms
33793
  russianmulberry
 
 
33794
  russkom nacionaliz
33795
  russkom-nacionaliz
33796
  rusztowania
33797
  ruwordpress
33798
- rv repair hunt
33799
- rv repair near
33800
- rv repairs hunt
33801
- rv repairs near
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33802
  rx-pharm
33803
  rxpharm
33804
 
@@ -33819,6 +35509,7 @@ s top database
33819
  s:.
33820
  s!.
33821
  s.@
 
33822
  s.all
33823
  s.for
33824
  s.p.o.r.t
@@ -33852,6 +35543,9 @@ saboring
33852
  sabosale
33853
  saboshop
33854
  sabouk
 
 
 
33855
  sac celine
33856
  sac chanel
33857
  sac chloe
@@ -34084,10 +35778,13 @@ samedayloan
34084
  samke amount
34085
  samurai siege
34086
  samurai-siege
 
 
34087
  san pham
34088
  sản phẩm
34089
  san xuat
34090
  sản xuất
 
34091
  san-pham
34092
  sản-phẩm
34093
  san-xuat
@@ -34129,6 +35826,7 @@ sanders jers
34129
  sanders-jers
34130
  sandersjers
34131
  sandypasch
 
34132
  sans ordonnance
34133
  sans-ordonnance
34134
  sante blog
@@ -34148,12 +35846,21 @@ sappige-vrouw
34148
  sapui5
34149
  sarees india
34150
  sarees-india
 
 
34151
  satchelbag
34152
  satcheldbag
 
 
 
 
34153
  satisfied reading
34154
  satisfied-reading
34155
  satisfying existence
34156
  satllite
 
 
 
34157
  saudavel perder
34158
  saudável perder
34159
  saudavel-perder
@@ -34165,6 +35872,7 @@ save-you-time
34165
  saved as a fave
34166
  saved as a favorite
34167
  saved as a favourite
 
34168
  savor a movie
34169
  sawfwaf
34170
  say about this article
@@ -34177,8 +35885,10 @@ say this blog
34177
  say this page
34178
  say this site
34179
  say this web
 
34180
  say your blog
34181
  say your page
 
34182
  say your site
34183
  say your web
34184
  sayt vizitk
@@ -34244,6 +35954,7 @@ schoenendame
34244
  schoenendsqu
34245
  schoenenseite
34246
  schoeneseite
 
34247
  schon schon
34248
  schon-schon
34249
  school.a
@@ -34298,8 +36009,10 @@ scraper software
34298
  scraper-free
34299
  scraper-software
34300
  scraperfree
 
34301
  script-buck
34302
  scriptbuck
 
34303
  sculpting bandage
34304
  sculpting-bandage
34305
  sd3546a
@@ -34309,6 +36022,7 @@ sdelat-makijazh
34309
  sdfasd
34310
  sdfklj
34311
  sdfsdf
 
34312
  sdlkfj
34313
  seaddons
34314
  seahawks jers
@@ -34321,27 +36035,39 @@ search engine pref
34321
  search engines list
34322
  search engines posi
34323
  search engines pref
 
 
34324
  search ffor
34325
  search gogle
34326
  search master knowledge
34327
  search optim
34328
  search porn
34329
- search-engine-list
34330
- search-engine-market
34331
- search-engine-posi
34332
- search-engine-pref
34333
- search-engines-list
34334
- search-engines-posi
34335
- search-engines-pref
 
 
34336
  search-gogle
34337
  search-optim
34338
  search-porn
 
34339
  searchengine.
 
 
 
 
34340
  searchhing
34341
  searching
34342
  searchoptim
34343
  searchporn
 
34344
  seat presently
 
 
34345
  seawaypab
34346
  sec-leading
34347
  secara free
@@ -34370,15 +36096,19 @@ secured-result
34370
  secureimage
34371
  securesmtp
34372
  security ip camera
 
34373
  security-for
34374
  security-ip-camera
 
34375
  see this blog
34376
  see this site
34377
  see this weblog
34378
  see this website
 
34379
  seek engines
34380
  seek-engines
34381
  seeking for info
 
34382
  seeking prospect
34383
  seeking-prospect
34384
  seekingman
@@ -34427,9 +36157,11 @@ selecting-a-strain
34427
  selecting-great-white
34428
  self google
34429
  self on instagram
 
34430
  self-google
34431
  self-help
34432
  self-on-instagram
 
34433
  selfgoogle
34434
  selfiestick
34435
  sell dump
@@ -34445,6 +36177,8 @@ selling-iphone
34445
  selling-machine
34446
  selllancel
34447
  sellnow
 
 
34448
  sembol clan
34449
  sembol-clan
34450
  send earn
@@ -34482,6 +36216,7 @@ seo and mark
34482
  seo barn
34483
  seo blog
34484
  seo bul
 
34485
  seo buy
34486
  seo check
34487
  seo cms
@@ -34527,6 +36262,7 @@ seo-and-mark
34527
  seo-barn
34528
  seo-blog
34529
  seo-bul
 
34530
  seo-buy
34531
  seo-check
34532
  seo-cms
@@ -34564,6 +36300,7 @@ seo-web
34564
  seo-widget
34565
  seo-wise
34566
  seo-with
 
34567
  seo,
34568
  seo?
34569
  seo1337
@@ -34572,6 +36309,7 @@ seoadvert
34572
  seoagenc
34573
  seoalgo
34574
  seobarn
 
34575
  seobuy
34576
  seocheck
34577
  seocms
@@ -34601,6 +36339,7 @@ seovps
34601
  seowidget
34602
  seowise
34603
  seowith
 
34604
  sepid-shimi
34605
  sepidshimi
34606
  ser aprovado no
@@ -34614,20 +36353,20 @@ serenity-online
34614
  serenityfull
34615
  serial numberul
34616
  serial-numberul
34617
- serie tv 2019
34618
  serie tv 2020
34619
  serie tv 2021
34620
- serie-tv-2019
34621
  serie-tv-2020
34622
  serie-tv-2021
 
34623
  series erotic
34624
- series tv 2019
34625
  series tv 2020
34626
  series tv 2021
 
34627
  series-erotic
34628
- series-tv-2019
34629
  series-tv-2020
34630
  series-tv-2021
 
34631
  serieserotic
34632
  seriestv
34633
  serious ad invest
@@ -34651,20 +36390,20 @@ serumbuy
34651
  servantappear
34652
  served bitch
34653
  served-bitch
34654
- server 2019
34655
  server 2020
34656
  server 2021
 
34657
  server coaching
34658
  server download
34659
- server-2019
34660
  server-2020
34661
  server-2021
 
34662
  server-coaching
34663
  server-download
34664
  server.download
34665
- server2019
34666
  server2020
34667
  server2021
 
34668
  service near me
34669
  service near you
34670
  service now!
@@ -34682,13 +36421,21 @@ services/ecommerce
34682
  services/service
34683
  servicii profes
34684
  servicii-profes
 
 
 
34685
  servicio postventa
34686
  servicio servicio
34687
  servicio tan robusto
 
 
34688
  servicio tecnico madrid
34689
  servicio técnico madrid
34690
  servicio tecnico oficial
34691
  servicio técnico oficial
 
 
 
34692
  servicio-postventa
34693
  servicio-servicio
34694
  servicios los servicios
@@ -34697,6 +36444,7 @@ servicios servicio
34697
  servicios-pirata
34698
  servicios-servicio
34699
  servicios: servicio
 
34700
  servicos prestado
34701
  serviços prestado
34702
  servicos-prestado
@@ -34733,9 +36481,12 @@ several opportune
34733
  several websites can
34734
  several-opportune
34735
  sex advice
 
34736
  sex blog
34737
  sex budd
34738
  sex cam
 
 
34739
  sex clermont
34740
  sex club
34741
  sex dat
@@ -34755,11 +36506,13 @@ sex indian
34755
  sex kat
34756
  sex kontakt
34757
  sex live
 
34758
  sex mama
34759
  sex mount
34760
  sex movie
34761
  sex mp
34762
  sex naked
 
34763
  sex papa
34764
  sex pc
34765
  sex porn
@@ -34786,9 +36539,12 @@ sex wyna
34786
  sex zit je
34787
  sex_
34788
  sex-advice
 
34789
  sex-blog
34790
  sex-budd
34791
  sex-cam
 
 
34792
  sex-clermont
34793
  sex-club
34794
  sex-dat
@@ -34809,11 +36565,13 @@ sex-indian
34809
  sex-kat
34810
  sex-kontakt
34811
  sex-live
 
34812
  sex-mama
34813
  sex-mount
34814
  sex-movie
34815
  sex-mp
34816
  sex-naked
 
34817
  sex-papa
34818
  sex-pc
34819
  sex-porn
@@ -34844,9 +36602,12 @@ sex.php
34844
  sex>
34845
  sex2call
34846
  sexadvice
 
34847
  sexblog
34848
  sexbudd
34849
  sexcam
 
 
34850
  sexclub
34851
  sexdat
34852
  sexelist
@@ -34864,6 +36625,7 @@ sexinyou
34864
  sexkat
34865
  sexkontakt
34866
  sexlive
 
34867
  sexmama
34868
  sexmount
34869
  sexmovie
@@ -34876,6 +36638,7 @@ sexo-amador
34876
  sexo-brutal
34877
  sexo-mon
34878
  sexomon
 
34879
  sexpapa
34880
  sexpc
34881
  sexporn
@@ -34915,6 +36678,7 @@ sexualmoment
34915
  sexvid
34916
  sexvirgin
34917
  sexweb
 
34918
  sexy blog
34919
  sexy escort
34920
  sexy eskort
@@ -34936,6 +36700,7 @@ sexy woman
34936
  sexy women
34937
  sexy_
34938
  sexy-app
 
34939
  sexy-blog
34940
  sexy-escort
34941
  sexy-eskort
@@ -34965,6 +36730,7 @@ sexy.jsp
34965
  sexy.php
34966
  sexy2call
34967
  sexyapp
 
34968
  sexyblog
34969
  sexyescort
34970
  sexyeskort
@@ -34985,6 +36751,8 @@ seznamce
34985
  sg-launch
34986
  sgames.co
34987
  sglaunch
 
 
34988
  shag.ru
34989
  shame on google
34990
  shanghai date
@@ -35123,10 +36891,15 @@ shemale-movie
35123
  shemale-porn
35124
  shemale-sex
35125
  shemale-vid
 
 
 
35126
  shield your self
35127
  shift dress
35128
  shift-dress
35129
  shiftdress
 
 
35130
  shirt cease
35131
  shirt cheap
35132
  shirt custom
@@ -35239,9 +37012,9 @@ shoemizuno
35239
  shoeonline
35240
  shoeout
35241
  shoepromo
35242
- shoes 2019
35243
  shoes 2020
35244
  shoes 2021
 
35245
  shoes america
35246
  shoes announce
35247
  shoes dior
@@ -35258,9 +37031,9 @@ shoes uk
35258
  shoes web store
35259
  shoes woman
35260
  shoes women
35261
- shoes-2019
35262
  shoes-2020
35263
  shoes-2021
 
35264
  shoes-america
35265
  shoes-cheap
35266
  shoes-cloth
@@ -35283,9 +37056,9 @@ shoes.asp
35283
  shoes.mobi
35284
  shoes.name
35285
  shoes+
35286
- shoes2019
35287
  shoes2020
35288
  shoes2021
 
35289
  shoesale
35290
  shoesamerica
35291
  shoescloth
@@ -35303,6 +37076,7 @@ shoestore
35303
  shoesuk
35304
  shoesus
35305
  shoeuk
 
35306
  shoot-tequila
35307
  shop bán phụ
35308
  shop blog
@@ -35315,6 +37089,8 @@ shop jp
35315
  shop makeup
35316
  shop online
35317
  shop our homecoming
 
 
35318
  shop sell perfume
35319
  shop sells perfume
35320
  shop thai
@@ -35335,6 +37111,8 @@ shop-now
35335
  shop-online
35336
  shop-our-homecoming
35337
  shop-pin
 
 
35338
  shop-shoe
35339
  shop-thai
35340
  shop-to-you
@@ -35393,6 +37171,7 @@ short bodycon
35393
  short ugg
35394
  short-bodycon
35395
  short-ugg
 
35396
  shorttermloan
35397
  shortugg
35398
  shot.you
@@ -35437,7 +37216,20 @@ si’ve
35437
  si#mple
35438
  sia ottimo
35439
  sia-ottimo
 
 
 
 
 
 
 
 
 
 
35440
  sibutramine
 
 
 
35441
  sidify prog
35442
  sidify-prog
35443
  sieg heil
@@ -35562,13 +37354,11 @@ sistemas populare
35562
  sistemas-bolsa
35563
  sistemas-populare
35564
  sistershit
35565
- site -
35566
- site ,
35567
  site ::
35568
  site !
35569
- site .
35570
  site (:
35571
  site =)
 
35572
  site amor
35573
  site and comment
35574
  site and save
@@ -35583,7 +37373,9 @@ site however
35583
  site is extreme
35584
  site is fastidious
35585
  site is invaluable
 
35586
  site is priceless
 
35587
  site is truly
35588
  site link
35589
  site load speed
@@ -35593,6 +37385,7 @@ site looks weird
35593
  site now ;)
35594
  site offer
35595
  site offic
 
35596
  site owner
35597
  site particular
35598
  site platform
@@ -35601,6 +37394,8 @@ site post
35601
  site proprietor
35602
  site provid
35603
  site que fale
 
 
35604
  site taste
35605
  site technique
35606
  site theme
@@ -35624,6 +37419,7 @@ site-is-extreme
35624
  site-link
35625
  site-offer
35626
  site-offic
 
35627
  site-owner
35628
  site-particular
35629
  site-platform
@@ -35631,6 +37427,8 @@ site-position
35631
  site-post
35632
  site-proprietor
35633
  site-provid
 
 
35634
  site-taste
35635
  site-technique
35636
  site-theme
@@ -35643,8 +37441,6 @@ site-wordpress
35643
  site:-
35644
  site:)
35645
  site? my web
35646
- site.co
35647
- site.in
35648
  site.vip
35649
  site/essay
35650
  site24
@@ -35671,6 +37467,7 @@ sitemizi ziyaret
35671
  sitemizi-siyaret
35672
  sitemizi-ziyaret
35673
  siteoffic
 
35674
  sites and blogs
35675
  sites luke
35676
  sites on the internet
@@ -35680,6 +37477,7 @@ sites-and-blogs
35680
  sites24
35681
  sitesi tıkla
35682
  sitesi-tıkla
 
35683
  siteuffic
35684
  sitevip
35685
  siteweb
@@ -35697,13 +37495,20 @@ sitouffic
35697
  sitougg
35698
  situs ilegal
35699
  situs judi
 
 
35700
  situs poker
35701
  situs qq
 
35702
  situs togel
 
35703
  situs-ilegal
35704
  situs-judi
 
 
35705
  situs-poker
35706
  situs-qq
 
35707
  situs-togel
35708
  situsqq
35709
  siutpd
@@ -35737,17 +37542,22 @@ skilled-blog
35737
  skilledblog
35738
  skillset expert
35739
  skillset-expert
 
35740
  skin club
 
35741
  skin pigment
35742
  skin_pigment
 
35743
  skin-care-review
35744
  skin-club
 
35745
  skin-pigment
35746
  skincare-review
35747
  skincare-work
35748
  skincarereview
35749
  skincarework
35750
  skinclub
 
35751
  skinnys review
35752
  skinnys-review
35753
  skinnysreview
@@ -35774,12 +37584,14 @@ skorrea
35774
  skortimber
35775
  skup-aut
35776
  skup,aut
35777
- sky pharmacy
35778
- sky-pharmacy
35779
- skypharmacy
35780
  skyrocket you
35781
  skyrocket-you
 
35782
  sleazy lawyer
 
35783
  sleazy-lawyer
35784
  sledge baseball
35785
  sledge bat
@@ -35804,14 +37616,44 @@ slippers-khaki
35804
  slipperskhaki
35805
  slme genuine
35806
  slongchamp
 
 
 
35807
  slot machine
 
 
 
 
 
 
 
 
 
 
 
 
35808
  slot-machine
 
 
 
 
 
 
 
 
 
35809
  slotmachine
 
 
35810
  slots blackjack
35811
  slots machine
 
35812
  slots rtp
 
35813
  slots-blackjack
35814
  slots-machine
 
 
35815
  slots-rtp
35816
  slots, blackjack
35817
  slotsmachine
@@ -35873,14 +37715,19 @@ smarketoprogram
35873
  smarketoreview
35874
  smarketosecret
35875
  smarketosoftware
 
35876
  smart hoverboard
35877
  smart-balance
 
 
35878
  smart-drug
35879
  smart-hoverboard
35880
  smart-watch-gps
35881
  smartbalance
35882
  smartbeting
35883
  smartbets
 
 
35884
  smartdrug
35885
  smarthoverboard
35886
  smartly written article
@@ -35892,6 +37739,9 @@ smith sold
35892
  smith-sold
35893
  smithsold
35894
  smm pannel
 
 
 
35895
  smnall
35896
  smok priv
35897
  smok-priv
@@ -35908,10 +37758,13 @@ smsgrupp
35908
  smurf account
35909
  smurf-account
35910
  smurfaccount
 
 
35911
  snapback-cap
35912
  snapbacks
35913
  snapchat ++
35914
  snapchat intro
 
35915
  snapchat monetiz
35916
  snapchat money
35917
  snapchat privado
@@ -35919,6 +37772,7 @@ snapchat score
35919
  snapchat you tube
35920
  snapchat youtube
35921
  snapchat-intro
 
35922
  snapchat-monetiz
35923
  snapchat-money
35924
  snapchat-privado
@@ -36000,12 +37854,15 @@ socal-tms
36000
  socaltms
36001
  soccer betting
36002
  soccer jersey sale
 
36003
  soccer-betting
36004
  soccer-jersey-sale
 
36005
  soccerbet
36006
  soccerjerseyclub
36007
  soccerjerseysale
36008
  soccerjerseysclub
 
36009
  sociable worker
36010
  social butler
36011
  social buzz
@@ -36054,10 +37911,12 @@ soft-secret
36054
  softsecret
36055
  software beneath
36056
  software house
 
36057
  software program operate
36058
  software secret
36059
  software-beneath
36060
  software-house
 
36061
  software-program-operate
36062
  software-secret
36063
  software.in
@@ -36131,6 +37990,23 @@ soleilray
36131
  solicitar un presta
36132
  solicitar-un-presta
36133
  solicitous afternoon
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36134
  solo cheat
36135
  solo-cheat
36136
  solução
@@ -36151,6 +38027,7 @@ solutionsinc
36151
  some %
36152
  some coinage
36153
  some extra ass
 
36154
  some functionalitie
36155
  some genuinely great
36156
  some ideas are new
@@ -36160,6 +38037,7 @@ some onee
36160
  some real interest
36161
  some really interest
36162
  some-coinage
 
36163
  some-functionalitie
36164
  somedias
36165
  somee one
@@ -36183,6 +38061,9 @@ soon:-
36183
  soon:)
36184
  sosial media
36185
  sosial-media
 
 
 
36186
  sound like you know
36187
  source blossom
36188
  source of incomes
@@ -36238,6 +38119,7 @@ sparkle ugg
36238
  sparkle-ugg
36239
  sparkleugg
36240
  speaking approximate
 
36241
  special approximate
36242
  special daay
36243
  special-approximate
@@ -36248,9 +38130,12 @@ specials wood
36248
  specials-wood
36249
  specialty-transfer
36250
  specialtytransfer
 
36251
  specific gift
36252
  specific-gift
 
36253
  specifucally
 
36254
  spedified
36255
  speed proxi
36256
  speed proxy
@@ -36281,12 +38166,18 @@ spicy bbw
36281
  spicy-bbw
36282
  spider solitaire
36283
  spider-solitaire
 
 
 
 
 
 
36284
  spielleiterin be
36285
  spielleiterin ist
36286
  spilivanie derev'yev
36287
  spilivanie derev’yev
36288
- spilivanie derevev
36289
- spilivanie-derevev
36290
  spip.asp
36291
  spip.cfm
36292
  spip.ctr
@@ -36394,13 +38285,15 @@ sprawdzian-pdf
36394
  sprawdzone narzedzia
36395
  sprawdzone narzędzia
36396
  sprawdzone-narzedzia
36397
- sprawdzone-narzędzia
36398
  sprawdzonenarzedzia
36399
- sprawdzonenarzędzia
36400
  sprinkler tune
36401
  sprinkler-tune
36402
  sprinklertune
 
 
36403
  sprinter repair
 
 
36404
  sprinter-repair
36405
  sprzataniu powier
36406
  sprzataniu-powier
@@ -36503,6 +38396,7 @@ steroid-ripoff
36503
  steroid-satin
36504
  steroid-scam
36505
  steroid-siparis
 
36506
  steroidcounter
36507
  steroidfake
36508
  steroidler online
@@ -36529,6 +38423,8 @@ steroidsonline
36529
  steroidsripoff
36530
  steroidsscam
36531
  stevewynnloan
 
 
36532
  stewart furniture
36533
  stewart patio
36534
  stewart-furniture
@@ -36669,6 +38565,7 @@ strategies for increasing more
36669
  strategies-for
36670
  strategii binarny
36671
  strategii-binarny
 
36672
  strategy for increasing more
36673
  strategy-for
36674
  stratificat.
@@ -36772,14 +38669,11 @@ stumbledupon
36772
  stumpmaster
36773
  stunning blog
36774
  stunning brilliance
36775
- stunning page here
36776
- stunning page there
36777
- stunning post here
36778
- stunning post there
36779
- stunning quest there
36780
  stunning site
36781
- stunning story here
36782
- stunning story there
36783
  stunning web
36784
  stunningq
36785
  style design for you
@@ -36801,7 +38695,6 @@ sua página
36801
  sua postagem
36802
  sua-mulher
36803
  sua-pagina
36804
- sua-página
36805
  sua-postagem
36806
  sub & fav
36807
  sub & like
@@ -36866,6 +38759,7 @@ subsequent-submit
36866
  substance deal
36867
  substance-deal
36868
  substancedeal
 
36869
  subtitle indo
36870
  subtitle-indo
36871
  subtitleindo
@@ -36897,12 +38791,14 @@ successarticle
36897
  successblog
36898
  successful article
36899
  successful blog
 
36900
  successful page
36901
  successful post
36902
  successful site
36903
  successful web
36904
  successful-article
36905
  successful-blog
 
36906
  successful-page
36907
  successful-post
36908
  successful-site
@@ -37008,6 +38904,8 @@ super-casino
37008
  super-comp
37009
  super-fortnite
37010
  super-locksmith
 
 
37011
  super-real
37012
  superaffiliate
37013
  superarticle
@@ -37046,6 +38944,7 @@ superior-sport
37046
  superiorcompan
37047
  superiorresourc
37048
  superiorsport
 
37049
  superlocksmith
37050
  superseller
37051
  superstar class
@@ -37173,6 +39072,10 @@ swarovski-jap
37173
  swarovski-jp
37174
  swarovskijap
37175
  swarovskijp
 
 
 
 
37176
  sweet article
37177
  sweet blog
37178
  sweet cum
@@ -37334,13 +39237,17 @@ takenwith
37334
  takie poglosk
37335
  takie pogłosk
37336
  takie-poglosk
 
37337
  takin note
37338
  takin-note
37339
  taking curcumin
37340
  taking-curcumin
 
 
37341
  takipci satin
37342
  takipçi satın
37343
  takipci_satin
 
37344
  takipci-satin
37345
  takje care
37346
  takje-care
@@ -37471,6 +39378,9 @@ taschenleder
37471
  taschenleerer leder
37472
  taschenleerer-leder
37473
  taschenlongchamp
 
 
 
37474
  taskss
37475
  tastegood.co
37476
  tatoo cheap
@@ -37526,8 +39436,11 @@ tatuagen-feminin
37526
  tatuagens feminin
37527
  tatuagens_
37528
  tatuagens-feminin
 
37529
  tavsiye filmler izle
 
37530
  tavsiye-filmler-izle
 
37531
  tax book
37532
  tax debt
37533
  tax idea
@@ -37566,6 +39479,7 @@ teamwork coach
37566
  teamwork-coach
37567
  teamworkcoach
37568
  technique kids
 
37569
  techniue
37570
  technolgy news
37571
  technolgy-news
@@ -37573,10 +39487,15 @@ technological globe
37573
  technological-globe
37574
  tecnicas para voce
37575
  técnicas para você
 
 
37576
  tecnico y asistencia tecnica
37577
  técnico y asistencia tecnica
37578
  tecnico y servicio tecnica
37579
  técnico y servicio tecnica
 
 
 
37580
  teen cam
37581
  teen female
37582
  teen lesb
@@ -37607,13 +39526,16 @@ teenporn
37607
  teenpussy
37608
  teens cam
37609
  teens porn
 
37610
  teens webcam
37611
  teens-cam
37612
  teens-porn
 
37613
  teens-webcam
37614
  teenscam
37615
  teensex
37616
  teensporn
 
37617
  teenswebcam
37618
  teenvirgin
37619
  teenwebcam
@@ -37622,19 +39544,26 @@ tees-hollis
37622
  teeshollis
37623
  teeth teeth
37624
  tegs:
 
 
37625
  tekhbez
 
37626
  tele gratuit
37627
  tele realite
37628
  télé réalité
 
37629
  tele-gratuit
37630
  tele-realite
37631
  télé-réalité
 
37632
  telefono de informacion
37633
  teléfono de información
37634
  telegratuit
37635
  telepon-
37636
  telerealite
37637
  téléréalité
 
 
37638
  telhadista-em
37639
  telling everything concern
37640
  tem.p.test
@@ -37664,6 +39593,7 @@ ten-best-free
37664
  tengo una web
37665
  tennisstream
37666
  tenormin
 
37667
  terima barang
37668
  terima-barang
37669
  term dinner
@@ -37695,6 +39625,7 @@ test.ca
37695
  test.in
37696
  test.tumblr
37697
  test1.
 
37698
  testimonail
37699
  testosterona
37700
  testosterone-boost
@@ -37804,7 +39735,6 @@ that will uses
37804
  that youre
37805
  that-gia-re
37806
  that-i-may-subscribe
37807
- that-isnt
37808
  that, great article
37809
  that, great blog
37810
  that, great page
@@ -37956,7 +39886,9 @@ them.the
37956
  theme for blog
37957
  theme generat
37958
  theme of your blog
 
37959
  theme of your site
 
37960
  theme sale
37961
  theme-basic
37962
  theme-generat
@@ -38005,6 +39937,7 @@ thetopdog
38005
  thetwo
38006
  theuniversity
38007
  they are discussing online
 
38008
  they loophole
38009
  they the t
38010
  they-loophole
@@ -38087,6 +40020,7 @@ this blog;
38087
  this blog:
38088
  this blog's post
38089
  this blog’s post
 
38090
  this complete blog
38091
  this complete page
38092
  this complete post
@@ -38131,6 +40065,11 @@ this post offer
38131
  this post will assist
38132
  this proficiency
38133
  this publish
 
 
 
 
 
38134
  this site before
38135
  this site certain
38136
  this site defin
@@ -38226,6 +40165,9 @@ thomasfat
38226
  thomassabosale
38227
  thomassabouk
38228
  thomassabous
 
 
 
38229
  thornhill ambassador
38230
  thornhill-ambassador
38231
  thornhillambassador
@@ -38247,6 +40189,7 @@ thousand %
38247
  thousand%
38248
  thportfol
38249
  three %
 
38250
  thriloed
38251
  thrity
38252
  throat blow
@@ -38264,10 +40207,11 @@ through the blog
38264
  through the web
38265
  through this blog
38266
  through this web
 
38267
  through your blog
38268
- through your weblog
38269
- through your webpage
38270
- through your website
38271
  through-a-blog
38272
  through-that-blog
38273
  through-that-web
@@ -38365,6 +40309,7 @@ tiktok begeni
38365
  tiktok beğeni
38366
  tiktok fan
38367
  tiktok intro
 
38368
  tiktok monetiz
38369
  tiktok money
38370
  tiktok privado
@@ -38375,6 +40320,7 @@ tiktok-begeni
38375
  tiktok-fan
38376
  tiktok-hack
38377
  tiktok-intro
 
38378
  tiktok-monetiz
38379
  tiktok-money
38380
  tiktok-privado
@@ -38483,15 +40429,16 @@ tiny-dick
38483
  tinydick
38484
  tinytowtim
38485
  tion?i
 
38486
  tipblog
38487
  tipo más habit
38488
  tipo-mas-habit
38489
  tips beberapa
38490
  tips blog
38491
  tips daily
38492
- tips for 2019
38493
  tips for 2020
38494
  tips for 2021
 
38495
  tips for a success
38496
  tips for success
38497
  tips membeli
@@ -38563,6 +40510,7 @@ to commenting
38563
  to daylight
38564
  to ddo
38565
  to gget
 
38566
  to my blog
38567
  to my page
38568
  to my sire
@@ -38592,6 +40540,9 @@ to-operates
38592
  to-truly
38593
  to.p.ic
38594
  to.pi.c
 
 
 
38595
  toasterovensnow
38596
  tobuy.in
38597
  today news
@@ -38706,6 +40657,7 @@ top sight
38706
  top stop
38707
  top tier
38708
  top top
 
38709
  top vid
38710
  top viral
38711
  top_bank
@@ -38742,6 +40694,7 @@ top-tai
38742
  top-tier
38743
  top-tool
38744
  top-top
 
38745
  top-vid
38746
  top-viral
38747
  top.asses
@@ -38760,6 +40713,7 @@ topbuzz
38760
  topbvlgar
38761
  topcontractor
38762
  topdatabase
 
38763
  topfakeid
38764
  topforum
38765
  topfreecam
@@ -38849,8 +40803,11 @@ totosite
38849
  totosly
38850
  touche. great
38851
  touche. so
 
38852
  tour-discount
 
38853
  tourdiscount
 
38854
  towarowe anna lewandowska
38855
  town|
38856
  toys,sex
@@ -38863,7 +40820,9 @@ traceservice
38863
  tracing service
38864
  tracing-service
38865
  tracingservice
 
38866
  track hyperlink
 
38867
  track-back
38868
  track-click
38869
  track-hyperlink
@@ -38882,27 +40841,42 @@ tracker-tracing
38882
  trackertrace
38883
  trackertracing
38884
  trackhyperlink
 
38885
  tracking-a-phone
38886
  tradaoquan
38887
  trade_you
38888
  trading-method
 
 
 
38889
  traffic bot
38890
  traffic exchang
38891
  traffic ivy
38892
- traffic lawyer cost
38893
  traffic software
 
38894
  traffic-bot
38895
  traffic-exchang
38896
  traffic-ivy
38897
- traffic-lawyer-cost
38898
  traffic-software
38899
  trafficbot
38900
  trafficivy
38901
  trafficvance
38902
  trafficz
38903
  traffscience
 
 
 
 
38904
  trailer sale
 
 
 
 
 
38905
  trailer-sale
 
38906
  trailersale
38907
  train pet dog
38908
  training pet dog
@@ -38959,6 +40933,7 @@ treatyment
38959
  trello freetalk
38960
  trello-freetalk
38961
  tremendous blog
 
38962
  tremendous post
38963
  tremendous site
38964
  tremendous web
@@ -38994,6 +40969,7 @@ tri-tai-chinh
38994
  trial a bit
38995
  trial-software-install
38996
  trickphoto
 
38997
  trik selalu
38998
  trik-selalu
38999
  trimethoprim
@@ -39004,6 +40980,8 @@ trimoxazole use
39004
  trimoxazole-tablet
39005
  triviatrivia
39006
  trollapp
 
 
39007
  trong-top-5
39008
  trong-top-10
39009
  trong-top-five
@@ -39016,18 +40994,33 @@ trova-prezzi
39016
  trovaprezzi
39017
  trruly
39018
  truc-tiep-bong-da
 
 
 
 
 
 
 
 
 
 
 
 
39019
  true search
39020
  truly a fastidious
39021
  truly data you
 
39022
  truly fastidious
39023
  truly fruitful
39024
  truly peaked
 
39025
  truly sharing nice
39026
  truly suppose
39027
  truly thk
39028
  truly typically
39029
  truly very
39030
  truly when some
 
39031
  truly-fastidious
39032
  truly-fruitful
39033
  truly-peaked
@@ -39052,6 +41045,12 @@ trumptrain
39052
  trumptrump
39053
  trumpvote
39054
  trumpwon
 
 
 
 
 
 
39055
  truth however
39056
  truth teaching article
39057
  truth-however
@@ -39120,6 +41119,7 @@ turtle home
39120
  turtle-home
39121
  turtlehome
39122
  turystyka
 
39123
  tutorial.asp
39124
  tutorial.cfm
39125
  tutorial.ctr
@@ -39149,6 +41149,7 @@ twerkvid
39149
  twit.t.
39150
  twitter advert
39151
  twitter intro
 
39152
  twitter monetiz
39153
  twitter money
39154
  twitter privado
@@ -39158,12 +41159,14 @@ twitter takipçi
39158
  twitter-advert
39159
  twitter-hack
39160
  twitter-intro
 
39161
  twitter-monetiz
39162
  twitter-money
39163
  twitter-privado
39164
  twitter-shop
39165
  twitter-takipci
39166
  two %
 
39167
  twoj blog
39168
  twój blog
39169
  twojego blog
@@ -39203,11 +41206,15 @@ u4nba
39203
  ua-eqt-sup
39204
  uae escort
39205
  uae eskort
 
39206
  uae-escort
39207
  uae-eskort
 
 
39208
  uaeescort
39209
  uaeeskort
39210
  uaepearl
 
39211
  uaewomensclub
39212
  uau incrivel
39213
  uau incrível
@@ -39620,10 +41627,16 @@ unique-broker
39620
  unique-interact
39621
  uniquebroker
39622
  uniqueinteract
 
 
39623
  unitedidesign
 
39624
  universal key
39625
  universal-key
39626
  universalkey
 
 
 
39627
  unknown.co
39628
  unknown.in
39629
  unknown.pl
@@ -39657,6 +41670,8 @@ unlock-phone
39657
  unlockiphone
39658
  unlockmobil
39659
  unlockphone
 
 
39660
  unono chaus
39661
  unono-chaus
39662
  unonochaus
@@ -39750,6 +41765,10 @@ upgrade-your-bath
39750
  upgrade-your-bed
39751
  upgrade-your-living
39752
  upgradekey
 
 
 
 
39753
  upload and promo
39754
  upload foto
39755
  upload-file
@@ -39917,6 +41936,8 @@ uugg
39917
  uuse
39918
  uustore
39919
  uy/image
 
 
39920
 
39921
 
39922
  v buck buy
@@ -39998,6 +42019,17 @@ value-site
39998
  value-web
39999
  valueble
40000
  valueserver
 
 
 
 
 
 
 
 
 
 
 
40001
  vanilla balance
40002
  vanilla gift
40003
  vanilla-balance
@@ -40010,6 +42042,7 @@ vape box
40010
  vape cart
40011
  vape clearance
40012
  vape cloud
 
40013
  vape e-juice
40014
  vape ejuice
40015
  vape juice
@@ -40023,6 +42056,7 @@ vape-box
40023
  vape-cart
40024
  vape-clearance
40025
  vape-cloud
 
40026
  vape-e-juice
40027
  vape-ejuice
40028
  vape-juice
@@ -40035,6 +42069,7 @@ vapebox
40035
  vapecart
40036
  vapeclearance
40037
  vapecloud
 
40038
  vapeejuice
40039
  vapejuice
40040
  vapepen
@@ -40044,51 +42079,66 @@ vaper-e-juice
40044
  vaper-ejuice
40045
  vaperejuice
40046
  vapes cart
 
40047
  vapes kit
40048
  vapes-cart
 
40049
  vapes-kit
40050
  vapesave
40051
  vapescart
 
40052
  vapestick
40053
  vapo save
40054
  vapo-save
40055
  vapor cloud
 
40056
  vapor ix
40057
  vapor juice
40058
  vapor pen
40059
  vapor stick
40060
  vapor x
40061
  vapor-cloud
 
40062
  vapor-ix
40063
  vapor-juice
40064
  vapor-pen
40065
  vapor-stick
40066
  vapor-x
40067
  vaporcloud
 
40068
  vaporix
40069
  vaporizer pen
40070
  vaporizer-pen
40071
  vaporjuice
40072
  vaporpen
 
 
 
40073
  vaporstick
40074
  vaporx
40075
  vaposave
 
40076
  vapour ix
40077
  vapour juice
40078
  vapour pen
40079
  vapour stick
40080
  vapour x
40081
  vapour-cloud
 
40082
  vapour-ix
40083
  vapour-juice
40084
  vapour-pen
40085
  vapour-stick
40086
  vapour-x
40087
  vapourcloud
 
40088
  vapourix
40089
  vapourizer pen
40090
  vapourizer-pen
40091
  vapourjuice
 
 
 
40092
  vapourstick
40093
  vapourx
40094
  varabella
@@ -40096,6 +42146,7 @@ vardenafil
40096
  variant1
40097
  variant2
40098
  variant3
 
40099
  vbucks
40100
  vbyj
40101
  vc free
@@ -40161,6 +42212,7 @@ vergin porn
40161
  vergin-porn
40162
  verginporn
40163
  verify itunes should
 
40164
  verify online
40165
  verify their site
40166
  verify-out
@@ -40254,6 +42306,7 @@ vetement-homme
40254
  vetementfemme
40255
  vetementhomme
40256
  veterinarnaya
 
40257
  vetrinary
40258
  vf gratuit
40259
  vf-gratuit
@@ -40328,6 +42381,7 @@ video ist cool
40328
  video it would also
40329
  video magnif
40330
  video marketing
 
40331
  video ought not
40332
  video para canal
40333
  vídeo para canal
@@ -40361,6 +42415,7 @@ video-concen
40361
  video-erotic
40362
  video-magnif
40363
  video-marketing
 
40364
  video-para-canal
40365
  video-poker
40366
  video-pokie
@@ -40493,6 +42548,11 @@ viewarticle
40493
  viewblog
40494
  viewentry
40495
  viewer to click
 
 
 
 
 
40496
  viewers to click
40497
  viewijng
40498
  viewlink
@@ -40502,6 +42562,7 @@ views on this site
40502
  viewtopic
40503
  vigara
40504
  vigrx
 
40505
  villa-for-rent
40506
  villas-for-rent
40507
  vimax
@@ -40587,9 +42648,11 @@ viramune
40587
  virgin porn
40588
  virgin-porn
40589
  virginporn
 
40590
  virtual credit
40591
  virtual funds
40592
  virtual sex
 
40593
  virtual-credit
40594
  virtual-funds
40595
  virtual-sex
@@ -40646,6 +42709,7 @@ visit-visit
40646
  visit-web
40647
  visitant
40648
  visitar blog
 
40649
  visitar-blog
40650
  visited android app
40651
  visited blog
@@ -40732,6 +42796,10 @@ viww
40732
  vk.cc
40733
  vkews
40734
  vkgnfx
 
 
 
 
40735
  vodstreaming
40736
  vogue toms
40737
  vogue-toms
@@ -40962,9 +43030,9 @@ warfarin-online
40962
  warfarinonline
40963
  warmjp
40964
  warranty high
40965
- warriors jersey
40966
- warriors-jersey
40967
- warriorsjersey
40968
  wars cheat
40969
  wars hack
40970
  wars-cheat
@@ -40978,6 +43046,7 @@ warts-clinic
40978
  warts-garden
40979
  wartsclinic
40980
  wartsgarden
 
40981
  was ddoing
40982
  was pretty candy
40983
  wasbusiness
@@ -40992,6 +43061,7 @@ watch replic
40992
  watch seiko
40993
  watch the best movie
40994
  watch this site
 
40995
  watch-full-length
40996
  watch-hdonline
40997
  watch-instant
@@ -41000,6 +43070,7 @@ watch-quartz
41000
  watch-replic
41001
  watch-seiko
41002
  watch-this-site
 
41003
  watch-trailer-and
41004
  watch-vid
41005
  watch-watch
@@ -41022,6 +43093,8 @@ waterweight
41022
  wating for you
41023
  watte ausgestopft
41024
  watte-ausgestopft
 
 
41025
  way of amateur
41026
  way of blog
41027
  way your design
@@ -41059,6 +43132,7 @@ wear-shapewear
41059
  wearinbed
41060
  weave-hair
41061
  weavehair
 
41062
  web anal
41063
  web based college
41064
  web blog;
@@ -41077,12 +43151,16 @@ web invent:
41077
  web is extreme
41078
  web is fastidious
41079
  web is invaluable
 
41080
  web is priceless
 
41081
  web is truly
41082
  web market
41083
  web online
41084
  web optim
41085
  web owner
 
 
41086
  web page ..
41087
  web page …
41088
  web page daily
@@ -41098,6 +43176,7 @@ web promo
41098
  web property
41099
  web scheme
41100
  web seo
 
41101
  web sie
41102
  web sikte
41103
  web site ..
@@ -41110,6 +43189,7 @@ web site’s post
41110
  web sites post
41111
  web sitte
41112
  web sjte
 
41113
  web sute
41114
  web therefore
41115
  web through google
@@ -41148,11 +43228,13 @@ web-promo
41148
  web-property
41149
  web-scheme
41150
  web-seo
 
41151
  web-sie
41152
  web-site
41153
  web-sitte
41154
  web-sjte
41155
  web-solution
 
41156
  web-therefore
41157
  web-traff
41158
  web-user-acquire
@@ -41172,11 +43254,14 @@ webblog
41172
  webbmaster
41173
  webcam babe
41174
  webcam site
 
41175
  webcam-babe
41176
  webcam-site
 
41177
  webcambabe
41178
  webcamchat
41179
  webcamsite
 
41180
  webcontent
41181
  webdesign.co
41182
  webdl
@@ -41190,6 +43275,7 @@ weblog every once
41190
  weblog link
41191
  weblog post
41192
  weblog thank
 
41193
  weblog-link
41194
  weblog. thank
41195
  weblogg
@@ -41217,7 +43303,6 @@ webpage for any
41217
  webpage from
41218
  webpage is loading
41219
  webpage it is
41220
- webpage link
41221
  webpage on regular
41222
  webpage post
41223
  webpage thank
@@ -41227,7 +43312,6 @@ webpage you
41227
  webpage-for-any
41228
  webpage-from
41229
  webpage-is-loading
41230
- webpage-link
41231
  webpage-visit
41232
  webpage-you
41233
  webpage;
@@ -41239,6 +43323,7 @@ webpage's post
41239
  webpage’s article
41240
  webpage’s blog
41241
  webpage’s post
 
41242
  webpages article
41243
  webpages blog
41244
  webpages post
@@ -41263,6 +43348,7 @@ webshop/image
41263
  websit was
41264
  websit-was
41265
  website ..
 
41266
  website anjing
41267
  website as friend
41268
  website bookmark
@@ -41275,9 +43361,13 @@ website every once
41275
  website everyday
41276
  website for every
41277
  website from where
 
41278
  website inquiry
41279
  website is a center
41280
  website is a centre
 
 
 
41281
  website is loading
41282
  website it help
41283
  website kami
@@ -41305,9 +43395,12 @@ website that cost
41305
  website through google
41306
  website traff
41307
  website training
 
41308
  website usa
41309
  website using
41310
  website visit
 
 
41311
  website was ..
41312
  website was …
41313
  website was..
@@ -41327,6 +43420,7 @@ website-every-day
41327
  website-everyday
41328
  website-for-essay
41329
  website-for-every
 
41330
  website-inquiry
41331
  website-is-loading
41332
  website-it-help
@@ -41351,6 +43445,7 @@ website-wordpress
41351
  website; this
41352
  website. thank
41353
  website..
 
41354
  website.keep
41355
  website's article
41356
  website's post
@@ -41358,6 +43453,7 @@ website’s article
41358
  website’s post
41359
  website}
41360
  website1
 
41361
  websitelook
41362
  websitenet
41363
  websiteonline
@@ -41395,6 +43491,7 @@ websjte
41395
  websolution
41396
  webssite
41397
  webste
 
41398
  websute
41399
  webtherefore
41400
  webviewconsult
@@ -41439,6 +43536,8 @@ welcome-to-my-page
41439
  welcome-to-my-site
41440
  welcome-to-my-web
41441
  welcometonginx
 
 
41442
  well donme
41443
  well informed people
41444
  well written!
@@ -41494,10 +43593,12 @@ wewe have
41494
  wewe will
41495
  wewewe
41496
  what assets is
41497
- what blog
41498
  what does turn
41499
  what theyre
41500
  what up dear
 
 
41501
  what youre
41502
  what-blog
41503
  what-does-turn
@@ -41541,6 +43642,7 @@ where-get
41541
  where-sell
41542
  where-to-buy
41543
  where-to-get
 
41544
  where-to-sell
41545
  where+can
41546
  where+to
@@ -41550,6 +43652,10 @@ whereget
41550
  wheresell
41551
  wheretobuy
41552
  wheretoget
 
 
 
 
41553
  which blog platform
41554
  which site platform
41555
  which weblog platform
@@ -41569,8 +43675,10 @@ whn i
41569
  whn the
41570
  whn you
41571
  who don know
 
41572
  who theyre
41573
  who usess
 
41574
  whoa this
41575
  whoa-this
41576
  whoah this
@@ -41590,7 +43698,7 @@ wholesale free
41590
  wholesale hand
41591
  wholesale iphone
41592
  wholesale jers
41593
- wholesale jersey
41594
  wholesale jord
41595
  wholesale led
41596
  wholesale mlb
@@ -41616,7 +43724,7 @@ wholesale-free
41616
  wholesale-hand
41617
  wholesale-iphone
41618
  wholesale-jers
41619
- wholesale-jersey
41620
  wholesale-jord
41621
  wholesale-led
41622
  wholesale-mac
@@ -41639,7 +43747,6 @@ wholesalecoach
41639
  wholesalefree
41640
  wholesalehand
41641
  wholesalejers
41642
- wholesalejersey
41643
  wholesalejord
41644
  wholesaleled
41645
  wholesalemac
@@ -41659,6 +43766,7 @@ whore-butt
41659
  whorebutt
41660
  whttp
41661
  whwn choos
 
41662
  why designing shabby
41663
  why_designing_shabby
41664
  why-designing-shabby
@@ -41679,6 +43787,12 @@ wiecej tutaj
41679
  więcej tutaj
41680
  wiecej-tutaj
41681
  więcej-tutaj
 
 
 
 
 
 
41682
  wife app
41683
  wife-app
41684
  wife-tube
@@ -41745,6 +43859,7 @@ wille-sold
41745
  willebijoux
41746
  willesold
41747
  willhemp
 
41748
  wilson jers
41749
  wilson-jers
41750
  wilsonjers
@@ -41796,7 +43911,10 @@ winterjassen
41796
  wirh you
41797
  wise quote
41798
  wise-quote
 
 
41799
  wishing for blog
 
41800
  wispy lash
41801
  wispy-lash
41802
  witamina jest
@@ -41818,6 +43936,7 @@ with pics
41818
  with prepaid plastic
41819
  with professional skill
41820
  with retinoid
 
41821
  with thhe
41822
  with this blog
41823
  with this page showing?
@@ -41858,6 +43977,11 @@ without-ya!
41858
  withthose
41859
  withwebtraffic
41860
  withwebvisit
 
 
 
 
 
41861
  wiuth a
41862
  wiuth the
41863
  wlasciwy blog
@@ -41965,6 +44089,7 @@ wonderful goods
41965
  wonderful homepage
41966
  wonderful informative
41967
  wonderful online
 
41968
  wonderful post
41969
  wonderful publish
41970
  wonderful read!
@@ -41977,6 +44102,7 @@ wonderful-educational
41977
  wonderful-homepage
41978
  wonderful-informative
41979
  wonderful-online
 
41980
  wonderful-post
41981
  wonderful-publish
41982
  wonderful-read
@@ -42105,14 +44231,17 @@ words-eartique
42105
  words-essay
42106
  woriing
42107
  work !!
 
42108
  work you have here
42109
  work you write
 
42110
  work-review
42111
  work-you-write
42112
  work!excellent
42113
  work!fantastic
42114
  work!wonderful
42115
  workable symptom
 
42116
  working, great job
42117
  workout-sale
42118
  workoutsale
@@ -42231,10 +44360,16 @@ write an post
42231
  write any article
42232
  write any essay
42233
  write any paper
 
42234
  write my article
42235
  write my essay
42236
  write my paper
42237
  write news title
 
 
 
 
 
42238
  write subsequent
42239
  write the e-book
42240
  write the ebook
@@ -42298,6 +44433,11 @@ writingessay
42298
  writinghelper
42299
  writingpaper
42300
  writingservice
 
 
 
 
 
42301
  wrote an really
42302
  wrote the e-book
42303
  wtf brand
@@ -42513,6 +44653,7 @@ y http
42513
  y pezone
42514
  y teta
42515
  y tetona
 
42516
  y-culo
42517
  y-pezone
42518
  y-teta
@@ -42534,6 +44675,10 @@ yahoo's home page
42534
  yahoo’s front page
42535
  yahoo’s home page
42536
  yahoospy
 
 
 
 
42537
  yangin cıkıs
42538
  yangin kapisi
42539
  yangin merdiveni
@@ -42553,9 +44698,12 @@ yeezy2
42553
  yeezy3
42554
  yeezyboost
42555
  yhttp
 
 
42556
  yiur blog
42557
  yiur business
42558
  yiur info
 
42559
  yjjcw
42560
  yk cheap
42561
  yk-cheap
@@ -42649,6 +44797,7 @@ you effectiveness
42649
  you for the blog
42650
  you for the post
42651
  you for the share
 
42652
  you gucci
42653
  you is very effective
42654
  you mayy
@@ -42720,6 +44869,7 @@ you’re info
42720
  you’re sill
42721
  you”ll
42722
  you”re
 
42723
  you`ll
42724
  you`re
42725
  youcanwear
@@ -42747,6 +44897,7 @@ your article kept
42747
  your asthma so
42748
  your bed furniture
42749
  your bedroom play
 
42750
  your blog kept
42751
  your blog might
42752
  your blog on
@@ -42777,6 +44928,7 @@ your kids is
42777
  your lover
42778
  your lung area
42779
  your marketer
 
42780
  your mode of describ
42781
  your mode of explain
42782
  your movie to put
@@ -42813,6 +44965,7 @@ your site pro
42813
  your site really
42814
  your site seem
42815
  your site..
 
42816
  your sites prior
42817
  your sites really
42818
  your sites seem
@@ -42855,6 +45008,7 @@ your wii will
42855
  your wweb
42856
  your zits
42857
  your-account
 
42858
  your-blog
42859
  your-blog-real
42860
  your-blogs-real
@@ -42875,6 +45029,7 @@ your-it-occup
42875
  your-loan
42876
  your-lover
42877
  your-marketer
 
42878
  your-new-important
42879
  your-new-stuff-regular
42880
  your-next-blog
@@ -42909,6 +45064,7 @@ your-you
42909
  your.mail@
42910
  youraccount
42911
  yourbanker
 
42912
  yourblog
42913
  yourbudget
42914
  yourcredit
@@ -42964,6 +45120,7 @@ youtube mp3
42964
  youtube mp4
42965
  youtube sens
42966
  youtube snap
 
42967
  youtube vi
42968
  youtube-com
42969
  youtube-down
@@ -42975,6 +45132,7 @@ youtube-mp3
42975
  youtube-mp4
42976
  youtube-sens
42977
  youtube-snap
 
42978
  youtube-vi
42979
  youtube: how
42980
  youtube:how
@@ -42987,10 +45145,12 @@ youtuber earn
42987
  youtubers earn
42988
  youtubesens
42989
  youtubesnap
 
42990
  youtubetomp3
42991
  youtubetomp4
42992
  youtubetv
42993
  youtubevi
 
42994
  youtvplay
42995
  youu
42996
  youur
@@ -43039,6 +45199,8 @@ yօ
43039
  z http
43040
  z.@
43041
  zabaw
 
 
43042
  zafar islamov
43043
  zafar-islamov
43044
  zafarislamov
@@ -43330,8 +45492,8 @@ zyvox
43330
  адекватного муж
43331
  адекватного-муж
43332
  админу
43333
- алкогольн
43334
- алкогольные
43335
  альтернатива
43336
  анальной ебли
43337
  андроид
@@ -43371,10 +45533,6 @@ zyvox
43371
  бесплатная-демо
43372
  бесплатная-диаг
43373
  бесплатно
43374
- бесплатной демо
43375
- бесплатной диаг
43376
- бесплатной-демо
43377
- бесплатной-диаг
43378
  бетор фирма
43379
  бетор-фирма
43380
  беторфирма
@@ -43392,6 +45550,7 @@ zyvox
43392
  бутик отел
43393
  бутик-отел
43394
  быстро!
 
43395
  валка деревьев
43396
  валка-деревьев
43397
  вариантов дизайна несколько
@@ -43436,11 +45595,13 @@ zyvox
43436
  винтовой-нас
43437
  вклады сбербанк
43438
  вклады-сбербанк
 
43439
  вольво (
43440
  вольво-вольво
43441
  вот - http
43442
  вот http
43443
  вот: http
 
43444
  все подробно
43445
  все-подробно
43446
  всем привет
@@ -43465,6 +45626,7 @@ zyvox
43465
  гадание-online
43466
  гей питер
43467
  гей-питер
 
43468
  глубокое глот
43469
  глубокое-глот
43470
  говорим гово
@@ -43477,6 +45639,7 @@ zyvox
43477
  говорю-гово
43478
  головные устройс
43479
  головные-устройс
 
43480
  грузоперевозки
43481
  давайте обсудим
43482
  давайте-обсудим
@@ -43517,6 +45680,7 @@ zyvox
43517
  длительное лечени
43518
  длительное-лечени
43519
  для взлома
 
43520
  для сайт
43521
  для тела
43522
  для-взлома
@@ -43533,6 +45697,7 @@ zyvox
43533
  доставка
43534
  доход
43535
  драйвера
 
43536
  ԁa
43537
  ԁe
43538
  ԁi
@@ -43564,6 +45729,7 @@ zyvox
43564
  заболевани
43565
  загородный дом
43566
  загородный-дом
 
43567
  зайти на сайт
43568
  зайти-на-сайт
43569
  заказ
@@ -43594,6 +45760,7 @@ zyvox
43594
  игровые
43595
  игровые автом
43596
  игровые-автом
 
43597
  иж пневмо
43598
  изготовлен
43599
  инете
@@ -43685,7 +45852,10 @@ zyvox
43685
  леонбет
43686
  лечение зависимости
43687
  лечение мето
 
43688
  лечение-зависимости
 
 
43689
  лечить наркомани
43690
  лечить-наркомани
43691
  лига легенд
@@ -43700,6 +45870,7 @@ zyvox
43700
  любит глубокое
43701
  любит-глубокое
43702
  магаз
 
43703
  маркет
43704
  массажер тренажер
43705
  массажер-тренажер
@@ -43796,6 +45967,7 @@ zyvox
43796
  оs
43797
  оt
43798
  оv
 
43799
  обрезка деревьев
43800
  обрезка-деревьев
43801
  обучение
@@ -43817,6 +45989,7 @@ zyvox
43817
  открыть сайт
43818
  открыть-сайт
43819
  отличные
 
43820
  официальный сайт
43821
  официальный-сайт
43822
  официальных
@@ -43846,6 +46019,8 @@ zyvox
43846
  платки-батик
43847
  платок батик
43848
  платок-батик
 
 
43849
  под ключ
43850
  под-ключ
43851
  подарки
@@ -43932,6 +46107,7 @@ zyvox
43932
  продолжительном-сроке
43933
  производство
43934
  промо
 
43935
  проститутки
43936
  просыпаются филосо
43937
  просыпаются-филосо
@@ -43962,6 +46138,7 @@ zyvox
43962
  реальный-кардинг
43963
  реальный-муж
43964
  регистратор
 
43965
  реестр специал
43966
  реестр-специал
43967
  результаты лечени
@@ -44017,6 +46194,7 @@ zyvox
44017
  с№
44018
  сµ
44019
  сайт hydra
 
44020
  сайт визитк
44021
  сайт очень
44022
  сайт рассылки
@@ -44105,6 +46283,7 @@ zyvox
44105
  сроке службы
44106
  сроке-службы
44107
  сруба
 
44108
  статей
44109
  стать богатым
44110
  стать-богатым
@@ -44189,6 +46368,7 @@ zyvox
44189
  фитнесс клуб
44190
  фитнесс-клуб
44191
  форекс
 
44192
  форум
44193
  фото
44194
  футбол
@@ -44235,6 +46415,7 @@ zyvox
44235
  эротика
44236
  эротиче
44237
  эротичес
 
44238
  этот сайт
44239
  этот-сайт
44240
  юридической
@@ -44242,6 +46423,7 @@ zyvox
44242
  язык-алматы
44243
  языка алматы
44244
  языка-алматы
 
44245
  яндekc
44246
  ԝa
44247
  ԝe
@@ -44284,6 +46466,8 @@ zyvox
44284
  איפור לכלה
44285
  איפור ערב
44286
  בכירים בהייטק
 
 
44287
  ויקיפדיה
44288
  חשפניות
44289
  טכנאי מזגנים
@@ -44293,6 +46477,7 @@ zyvox
44293
  מאפרת מקצועית
44294
  מתקין מזגנים
44295
  תיקון מזגנים
 
44296
  آموزش شرط
44297
  أخبار , اخبار
44298
  أخبار اخبار
@@ -44307,12 +46492,14 @@ zyvox
44307
  اخبار الرياضة
44308
  اخبار, الرياضة
44309
  اخر اخبار
 
44310
  ارائه ی تخصصی
44311
  ارخص سيرفر
44312
  از وبلاگ
44313
  ازواج حكاية
44314
  ازواج,حكاية
44315
  افراد ارزان
 
44316
  افضل شركه
44317
  افلام اونلاين
44318
  اقل اسعار
@@ -44337,7 +46524,10 @@ zyvox
44337
  اونلاين,انمي
44338
  ايجي بست
44339
  ايفون مجانية
 
44340
  بازی انفجار
 
 
44341
  بست افلام
44342
  بست,افلام
44343
  بغایت مهمی
@@ -44346,6 +46536,7 @@ zyvox
44346
  بهترین
44347
  بيع متابعين
44348
  پازل باند
 
44349
  تحميل العاب
44350
  تخصصی ترین
44351
  تخصصی نمای
@@ -44358,21 +46549,26 @@ zyvox
44358
  تعلم الماني
44359
  تعلم, الماني
44360
  تعلم,الماني
 
44361
  جفت درمانی
44362
  جمال مكياج
44363
  جمال, مكياج
44364
  جمال,مكياج
 
44365
  حبيبة كوميديا
44366
  حبيبة,كوميديا
44367
  حزينه حزينة
44368
  حزينه, حزينة
44369
  حزينه,حزينة
44370
  خبر عن الرياضة
 
 
44371
  خسارة الوزن
44372
  خصم,كود
44373
  خلاصه داستان - دانلود
44374
  خلاصه داستان : دانلود
44375
  خلاصه داستان-دانلود
 
44376
  داستان سکسی
44377
  دانلود آهنگ
44378
  دانلود فیلم سکسی
@@ -44381,6 +46577,8 @@ zyvox
44381
  دستگاه حضور
44382
  دورات تدريب
44383
  ديالى،علوم
 
 
44384
  رتويت تويتر
44385
  زواج المسيار
44386
  زواج سعودية
@@ -44389,6 +46587,8 @@ zyvox
44389
  زواج,مسيار
44390
  زياده متابعين
44391
  ساک
 
 
44392
  سوپر
44393
  سوريا أرخص
44394
  سوريا,أرخص
@@ -44410,6 +46610,7 @@ zyvox
44410
  فقدان-الوزن
44411
  قم نجار
44412
  قیمت نبشی
 
44413
  كاشف الذهب
44414
  كاشف المعادن
44415
  كاشفات الذهب
@@ -44426,6 +46627,7 @@ zyvox
44426
  كوفيد تمارين
44427
  كوفيد, تمارين
44428
  كوفيد,تمارين
 
44429
  کیر
44430
  لتحميل
44431
  لرش المبيد ات
@@ -44435,6 +46637,8 @@ zyvox
44435
  لماني,تعلم
44436
  لمكافحه الحشر ات
44437
  لمكافحه الحشرات
 
 
44438
  متابعين انستقرام
44439
  متابعين سناب
44440
  متجرالبخور
@@ -44450,6 +46654,7 @@ zyvox
44450
  مشاهدة الافلام
44451
  مشاوره خانواده
44452
  معاهد تدريب
 
44453
  مقاله و بلاگ
44454
  منوعات حبيبة
44455
  موقع سؤال
@@ -44457,13 +46662,19 @@ zyvox
44457
  موقع سناره
44458
  موقع صنديد
44459
  نجار بالدما
 
 
44460
  نمو الشعر
44461
  نيوز , اخبار
44462
  نيوز اخبار
44463
  نيوز, اخبار
 
44464
  ها و بلاگ
44465
  و بلاگ ها
 
 
44466
  وب وجود
 
44467
  وبلاگ نویسان
44468
  وظائف
44469
  ขาย
@@ -44520,7 +46731,10 @@ zyvox
44520
  검증사이트
44521
  게임
44522
  경마배팅
 
 
44523
  대출
 
44524
  로얄카지노
44525
  루이비통
44526
  리그중계
@@ -44529,6 +46743,7 @@ zyvox
44529
  먹튀
44530
  무료쿠폰
44531
  바카라
 
44532
  보험
44533
  블랙잭
44534
  성인사이트
@@ -44539,8 +46754,11 @@ zyvox
44539
  안마
44540
  야구중계
44541
  야동
 
44542
  여자친구
44543
  온라인카지노
 
 
44544
  이트 순위
44545
  인터넷카지노
44546
  장기렌트
@@ -44548,12 +46766,16 @@ zyvox
44548
  축구중계
44549
  출장업소
44550
  카지노
 
44551
  태풍티비
44552
  토토
44553
  트위터
 
44554
  파워볼사이트
44555
  포인트받
 
44556
  필수적이다
 
44557
  アークテリクス
44558
  アイホン
44559
  アウトレット
@@ -44584,6 +46806,7 @@ zyvox
44584
  オークリー
44585
  おざ
44586
  オロビアンコ
 
44587
  お客
44588
  お店を
44589
  お金を
@@ -44653,6 +46876,7 @@ zyvox
44653
  パワハラ
44654
  バンクオブアメリカ
44655
  バンズ
 
44656
  ビトン
44657
  ブーツ
44658
  ファッショ
@@ -44706,6 +46930,7 @@ zyvox
44706
  信息平台
44707
 
44708
  借錢網
 
44709
  光碟破解
44710
  全球华人
44711
  公式
@@ -44734,7 +46959,9 @@ zyvox
44734
  商城
44735
  块钱
44736
  基測|
 
44737
  外贸
 
44738
  奖网
44739
  好評
44740
  婚庆礼仪
@@ -44761,6 +46988,7 @@ zyvox
44761
  投注网站
44762
  摔死女
44763
  攜心山
 
44764
  晶燈
44765
  服务
44766
  札入れ
@@ -44815,6 +47043,7 @@ zyvox
44815
 
44816
  荷物
44817
  落枕
 
44818
  血症
44819
  行動電源
44820
  装着
@@ -44846,6 +47075,7 @@ zyvox
44846
  锘縉
44847
  锟斤拷
44848
  门户网
 
44849
  革の
44850
 
44851
  韓国音楽
1
+ _, _,
2
+ _, _.
3
+ _. _,
4
+ _. _.
5
  _abercrom
6
  _adidas
7
  _adsense
69
  _lesbian
70
  _litecoin
71
  _longchamp
72
+ _lotto
73
  _loubou
74
  _lululemon
75
  _marijuana
230
  -1.ru
231
  -1.su
232
  -1.za
233
+ -1win-
234
+ -1win.
235
+ -1win/
236
  -2.co
237
  -2.in
238
  -2.ro
545
  -coin/
546
  -coins.
547
  -coins/
548
+ -com/activity/
549
  -comfort-
550
  -computer-recycle.
551
  -computer-recycling.
681
  -femdom-
682
  -femdom.
683
  -femdom/
684
+ -file-word-
685
+ -file-word.
686
+ -file-word/
687
  -filmi
688
  -filmy
689
  -filosov-
891
  -law-firm-
892
  -law-firm.
893
  -law-firm/
894
+ -lawn-care-
895
+ -lawn-care/
896
  -le-pliage
897
  -lesbian-
898
  -lesbian.
1067
  -phexin-
1068
  -phexin.
1069
  -phexin/
1070
+ -phone-info-
1071
+ -phone-info.
1072
+ -phone-info/
1073
+ -phoneinfo-
1074
+ -phoneinfo.
1075
+ -phoneinfo/
1076
  -picload-
1077
  -picload.
1078
  -picload/
1225
  -salvia-
1226
  -scarpe-
1227
  -search-engine
1228
+ -search.ir
1229
  -searchengine
1230
  -secret-
1231
  -secret.
1296
  -somehack.
1297
  -somehack/
1298
  -speed-up-
1299
+ -spielideen-
1300
+ -spielideen.
1301
+ -spielideen/
1302
  -sport.site
1303
  -store.
1304
  -store/
1357
  -tatuagens-
1358
  -tatuagens.
1359
  -tatuagens/
1360
+ -tax-attorn
1361
  -tax-relief
1362
  -tax-settlement
1363
  -teen-in-
1602
  .1-pack.
1603
  .1-pack/
1604
  .1com
1605
+ .1win-
1606
+ .1win.
1607
+ .1win/
1608
  .2com
1609
  .2u4.us
1610
  .7x.cz
1794
  .com illegal
1795
  .com wild
1796
  .com,
1797
+ .com'da
1798
+ .com’da
1799
  .com/,
1800
  .com/%
1801
  .com/1-
1881
  .femdom-
1882
  .femdom.
1883
  .femdom/
1884
+ .file-word-
1885
+ .file-word.
1886
  .filmi-
1887
  .filmy-
1888
  .filosov-
2148
  .phexin-
2149
  .phexin.
2150
  .phexin/
2151
+ .phone-info-
2152
+ .phone-info.
2153
+ .phone-info/
2154
+ .phoneinfo-
2155
+ .phoneinfo.
2156
+ .phoneinfo/
2157
  .picload-
2158
  .picload.
2159
  .picload/
2341
  .rusex/
2342
  .s.a.k
2343
  .sallow.co
2344
+ .search-engine
2345
+ .searchengine
2346
  .secret-
2347
  .secrets-
2348
  .selebriti-
2381
  .space/femme
2382
  .space/free
2383
  .space/homme
2384
+ .spielideen-
2385
+ .spielideen.
2386
+ .spielideen/
2387
  .spruz.
2388
  .stream/wiki
2389
  .su,
2543
  .zybbs.
2544
  .zzz.
2545
  。com
2546
+ 's depression
2547
+ ’s depression
2548
  " dildo
2549
  «link»
2550
  «комбо»
2704
  /01.php
2705
  /1.php
2706
  /1i1.me
2707
+ /1win-
2708
+ /1win.
2709
+ /1win/
2710
  /02.asp
2711
  /2.asp
2712
  /02.cfm
2850
  /activity-
2851
  /activity.
2852
  /adclick?
2853
+ /adclick.ashx?
2854
  /adclick.asp?
2855
  /adclick.aspx?
2856
  /adclick.cfm?
2957
  /avto-
2958
  /avto.
2959
  /away?
2960
+ /away.ashx?
2961
  /away.asp?
2962
  /away.aspx?
2963
  /away.cfm?
2977
  /bags/
2978
  /baidu.
2979
  /banner?
2980
+ /banner.ashx?
2981
  /banner.asp?
2982
  /banner.aspx?
2983
  /banner.cfm?
2989
  /banner.php?
2990
  /banner/?
2991
  /banners?
2992
+ /banners.ashx?
2993
  /banners.asp?
2994
  /banners.aspx?
2995
  /banners.cfm?
3100
  /bvlgari-
3101
  /bvlgari.
3102
  /bye?
3103
+ /bye.ashx?
3104
  /bye.asp?
3105
  /bye.aspx?
3106
  /bye.cfm?
3218
  /cl-
3219
  /cl.
3220
  /cl/
3221
+ /clck.
3222
  /cld-
3223
  /cld.
3224
  /clearance/
3225
  /cli.re
3226
+ /clic.
3227
  /click-
3228
  /click?
3229
  /click.
3230
  /click/
3231
+ /clickfrm.
3232
+ /clik.
3233
  /clit-
3234
  /clit.
3235
  /clk?
3286
  /crimea-
3287
  /crwl.it
3288
  /cs?
3289
+ /cs.ashx?
3290
  /cs.asp?
3291
  /cs.aspx?
3292
  /cs.cfm?
3339
  /dieta.
3340
  /dior.
3341
  /director?
3342
+ /director.ashx?
3343
  /director.asp?
3344
  /director.aspx?
3345
  /director.cfm?
3435
  /event.
3436
  /executive-
3437
  /exit?
3438
+ /exit.ashx?
3439
  /exit.asp?
3440
  /exit.aspx?
3441
  /exit.cfm?
3469
  /fendi.
3470
  /ferragamo-
3471
  /ferragamo.
3472
+ /file-word-
3473
+ /file-word.
3474
+ /file-word/
3475
  /file/
3476
  /files/
3477
  /filmi
3499
  /forum0
3500
  /forum1
3501
  /forwarder?
3502
+ /forwarder.ashx?
3503
  /forwarder.asp?
3504
  /forwarder.aspx?
3505
  /forwarder.cfm?
3514
  /foto.
3515
  /fpdb/
3516
  /frame?
3517
+ /frame.ashx?
3518
  /frame.asp?
3519
  /frame.aspx?
3520
  /frame.cfm?
3561
  /gh1/
3562
  /glowna.
3563
  /go_url?
3564
+ /go_url.ashx?
3565
  /go_url.asp?
3566
  /go_url.aspx?
3567
  /go_url.cfm?
3573
  /go_url.php?
3574
  /go_url/?
3575
  /go?
3576
+ /go.ashx?
3577
  /go.asp?
3578
  /go.aspx?
3579
  /go.cfm?
3593
  /goose/
3594
  /got.by
3595
  /goto_url?
3596
+ /goto_url.ashx?
3597
  /goto_url.asp?
3598
  /goto_url.aspx?
3599
  /goto_url.cfm?
3605
  /goto_url.php?
3606
  /goto_url/?
3607
  /goto?
3608
+ /goto.ashx?
3609
  /goto.asp?
3610
  /goto.aspx?
3611
  /goto.cfm?
3617
  /goto.php?
3618
  /goto/?
3619
  /gotourl?
3620
+ /gotourl.ashx?
3621
  /gotourl.asp?
3622
  /gotourl.aspx?
3623
  /gotourl.cfm?
3629
  /gotourl.php?
3630
  /gotourl/?
3631
  /gourl?
3632
+ /gourl.ashx?
3633
  /gourl.asp?
3634
  /gourl.aspx?
3635
  /gourl.cfm?
3700
  /homepage.
3701
  /homepage/
3702
  /hop?
3703
+ /hop.ashx?
3704
  /hop.asp?
3705
  /hop.aspx?
3706
  /hop.cfm?
3707
  /hop.cgi?
3708
  /hop.ctr?
3709
+ /hop.cx
3710
  /hop.htm?
3711
  /hop.html?
3712
  /hop.jsp?
3756
  /index-3
3757
  /index-4
3758
  /index-5
3759
+ /index.ashx?/
3760
  /index.asp?/
3761
  /index.aspx?/
3762
  /index.cfm?/
3781
  /insurance-
3782
  /insurance.
3783
  /internal/
3784
+ /inx.inbox.lv
3785
+ /inx.lv
3786
  /ip/
3787
  /iphone-s-
3788
  /iphone-s.
3805
  /jersey.
3806
  /jerseys-
3807
  /jerseys.
3808
+ /jl.ms
3809
  /job.
3810
  /join.
3811
  /joj.
3821
  /js.
3822
  /js/
3823
  /jump?
3824
+ /jump.ashx?
3825
  /jump.asp?
3826
  /jump.aspx?
3827
  /jump.cfm?
3833
  /jump.php?
3834
  /jump/?
3835
  /jumplink?
3836
+ /jumplink.ashx?
3837
  /jumplink.asp?
3838
  /jumplink.aspx?
3839
  /jumplink.cfm?
3869
  /kitchenknives-
3870
  /kitchenknives.
3871
  /klik?
3872
+ /klik.ashx?
3873
  /klik.asp?
3874
  /klik.aspx?
3875
  /klik.cfm?
3894
  /law-firm-
3895
  /law-firm.
3896
  /law-firm/
3897
+ /lawn-care-
3898
  /layout1/
3899
  /layout2/
3900
  /legal/
3923
  /lingerie.
3924
  /link-
3925
  /link?
3926
+ /link.ashx?
3927
  /link.asp?
3928
  /link.aspx?
3929
  /link.cfm?
3948
  /litecoin.
3949
  /litecoin/
3950
  /lnkcnt?
3951
+ /lnkcnt.ashx?
3952
  /lnkcnt.asp?
3953
  /lnkcnt.aspx?
3954
  /lnkcnt.cfm?
3961
  /lnkcnt/?
3962
  /loans
3963
  /logout?
3964
+ /logout.ashx?
3965
  /logout.asp?
3966
  /logout.aspx?
3967
  /logout.cfm?
3996
  /lv/
3997
  /lvl.vn
3998
  /m?
3999
+ /m.ashx?
4000
  /m.asp?
4001
  /m.aspx?
4002
  /m.cfm?
4015
  /maillot.
4016
  /maillot/
4017
  /mainframe?
4018
+ /mainframe.ashx?
4019
  /mainframe.asp?
4020
  /mainframe.aspx?
4021
  /mainframe.cfm?
4154
  /openlink.
4155
  /openlink/
4156
  /optout?
4157
+ /optout.ashx?
4158
  /optout.asp?
4159
  /optout.aspx?
4160
  /optout.cfm?
4169
  /orgasm
4170
  /oulu
4171
  /out?
4172
+ /out.ashx?
4173
  /out.asp?
4174
  /out.aspx?
4175
  /out.cfm?
4184
  /outlet/
4185
  /outlink-
4186
  /outlink?
4187
+ /outlink.ashx?
4188
  /outlink.asp?
4189
  /outlink.aspx?
4190
  /outlink.cfm?
4196
  /outlink.php?
4197
  /outlink/
4198
  /outlink/?
4199
+ /ov.ms
4200
  /ow.ly
4201
  /owl.li
4202
  /owtf.co.uk
4203
  /p-laid-
4204
  /p?
4205
+ /p.ashx?
4206
  /p.asp?
4207
  /p.aspx?
4208
  /p.cfm?
4235
  /parafon/
4236
  /party-boat-
4237
  /past.is
4238
+ /pastein.ru
4239
  /phan-biet-
4240
  /phan-biet.
4241
  /phan-biet/
4245
  /phexin-
4246
  /phexin.
4247
  /phexin/
4248
+ /phone-info-
4249
+ /phone-info.
4250
+ /phone-info/
4251
+ /phoneinfo-
4252
+ /phoneinfo.
4253
+ /phoneinfo/
4254
  /php.
4255
  /picload-
4256
  /picload.
4357
  /qsymia.
4358
  /qsymia/
4359
  /r?
4360
+ /r.ashx?
4361
  /r.asp?
4362
  /r.aspx?
4363
  /r.cfm?
4378
  /ralphlauren.
4379
  /ralphlauren/
4380
  /rank?
4381
+ /rank.ashx?
4382
  /rank.asp?
4383
  /rank.aspx?
4384
  /rank.cfm?
4396
  /rayban.
4397
  /rayban/
4398
  /rdr?
4399
+ /rdr.ashx?
4400
  /rdr.asp?
4401
  /rdr.aspx?
4402
  /rdr.cfm?
4412
  /readme.
4413
  /readnews.
4414
  /reauexit?
4415
+ /reauexit.ashx?
4416
  /reauexit.asp?
4417
  /reauexit.aspx?
4418
  /reauexit.cfm?
4469
  /ri.ms
4470
  /rih.co
4471
  /rk?
4472
+ /rk.ashx?
4473
  /rk.asp?
4474
  /rk.aspx?
4475
  /rk.cfm?
4505
  /sconfig/
4506
  /scripts-
4507
  /scripts/
4508
+ /search-engine
4509
+ /searchengine
4510
  /secret-
4511
  /secrets-
4512
  /secure/
4522
  /seo.
4523
  /seo/
4524
  /share?
4525
+ /share.ashx?
4526
  /share.asp?
4527
  /share.aspx?
4528
  /share.cfm?
4597
  /specialprojects.
4598
  /specials-
4599
  /specials.
4600
+ /spielideen-
4601
+ /spielideen.
4602
+ /spielideen/
4603
  /stan.to
4604
  /start.
4605
  /stats/
4630
  /supreme-
4631
  /supreme.
4632
  /supreme/
4633
+ /surl.li
4634
  /swf/
4635
  /swish.st
4636
  /syaneru
4641
  /tafil.
4642
  /tafil/
4643
  /tagged/
4644
+ /taraa.xyz
4645
  /tattoo-
4646
  /tattoo.
4647
  /tattoo/
4657
  /tatuagens-
4658
  /tatuagens.
4659
  /tatuagens/
4660
+ /tax-attorn
4661
  /telecharger-
4662
  /telecharger.
4663
  /temp/
4722
  /tr.im
4723
  /trac/ticket/
4724
  /trace?
4725
+ /trace.ashx?
4726
  /trace.asp?
4727
  /trace.aspx?
4728
  /trace.cfm?
4734
  /trace.php?
4735
  /trace/?
4736
  /track?
4737
+ /track.ashx?
4738
  /track.asp?
4739
  /track.aspx?
4740
  /track.cfm?
4752
  /transexuelle-
4753
  /transexuelle.
4754
  /transexuelle/
4755
+ /trs?
4756
+ /trs.ashx?
4757
+ /trs.asp?
4758
+ /trs.aspx?
4759
+ /trs.cfm?
4760
+ /trs.cgi?
4761
+ /trs.ctr?
4762
+ /trs.htm?
4763
+ /trs.html?
4764
+ /trs.jsp?
4765
+ /trs.php?
4766
+ /trs/?
4767
  /trx/
4768
  /twilight-
4769
  /txt/
4785
  /uploads.
4786
  /uploads/
4787
  /url?
4788
+ /url.ashx?
4789
  /url.asp?
4790
  /url.aspx?
4791
  /url.cfm?
4794
  /url.htm?
4795
  /url.html?
4796
  /url.jsp?
4797
+ /url.kn
4798
  /url.php?
4799
  /url/
4800
  /url/?
4827
  /viewstory
4828
  /vip.
4829
  /visit?
4830
+ /visit.ashx?
4831
  /visit.asp?
4832
  /visit.aspx?
4833
  /visit.cfm?
5155
  | online
5156
  | year
5157
  ||
5158
+ |cash
5159
  |chi
5160
  |dal
5161
  |det
5162
  |for
5163
+ |loan
5164
+ |payday
5165
  |per
5166
  |porn
5167
  |year
5279
  1@2
5280
  1@3
5281
  1@seo
5282
+ 1ackn
5283
+ 1arge
5284
+ 1arti
5285
  1big
5286
+ 1bodo
5287
  1c.in
5288
+ 1casi
5289
+ 1ciga
5290
+ 1comm
5291
+ 1comp
5292
+ 1corr
5293
+ 1dome
5294
+ 1esto
5295
+ 1fact
5296
+ 1femm
5297
+ 1frie
5298
+ 1gene
5299
  1hand
5300
+ 1heal
5301
+ 1homm
5302
+ 1inop
5303
+ 1lear
5304
  1mil email
5305
+ 1minu
5306
+ 1muti
5307
  1ping
5308
+ 1pros
5309
+ 1purs
5310
+ 1reca
5311
  1st comment
5312
  1st-best
5313
  1stbest
5314
+ 1ster
5315
  1stop
5316
+ 1tayl
5317
  1test
5318
  1the best
5319
  1the-best
5320
+ 1titl
5321
  1to1
5322
+ 1town
5323
+ 1twen
5324
+ 1valu
5325
+ 1vari
5326
+ 1vine
5327
  1xbet
5328
  1you
5329
+ 1zoop
5330
  2 appli
5331
  2 casino
5332
  2 into $
5357
  2@seo
5358
  2a aplicacao
5359
  2a-aplicacao
5360
+ 2ackn
5361
+ 2arge
5362
+ 2arti
5363
  2bj.ru
5364
  2buy
5365
  2c.in
5366
+ 2casi
5367
+ 2ciga
5368
+ 2comm
5369
+ 2comp
5370
+ 2corr
5371
+ 2dome
5372
+ 2esto
5373
+ 2fact
5374
+ 2frie
5375
+ 2gene
5376
+ 2glob
5377
+ 2goga
5378
  2hand
5379
+ 2heal
5380
+ 2inop
5381
  2itb
5382
  2k20 vc
5383
  2k20-vc
5384
  2k20vc
5385
+ 2lear
5386
  2mil email
5387
+ 2minu
5388
+ 2muti
5389
  2ping
5390
+ 2pros
5391
+ 2purs
5392
+ 2reca
5393
  2sale
5394
+ 2ster
5395
+ 2tayl
5396
  2test
5397
  2the best
5398
  2the-best
5399
+ 2titl
5400
+ 2town
5401
+ 2twen
5402
  2u.org
5403
+ 2valu
5404
+ 2vari
5405
  2you
5406
+ 2zoop
5407
  3 casino
5408
  3 into $
5409
  3 jailbreak
5421
  3@2
5422
  3@3
5423
  3@seo
5424
+ 3ackn
5425
+ 3arge
5426
+ 3arti
5427
+ 3casi
5428
+ 3ciga
5429
+ 3comm
5430
+ 3comp
5431
+ 3corr
5432
+ 3dome
5433
+ 3esto
5434
+ 3fact
5435
+ 3frie
5436
+ 3gene
5437
  3hand
5438
+ 3heal
5439
+ 3inop
5440
  3j3j3
5441
+ 3lear
5442
  3mil email
5443
  3minut
5444
+ 3muti
5445
  3ping
5446
+ 3pros
5447
+ 3purs
5448
+ 3reca
5449
+ 3ster
5450
+ 3tayl
5451
  3test
5452
  3the best
5453
  3the-best
5454
+ 3titl
5455
+ 3town
5456
+ 3twen
5457
+ 3valu
5458
+ 3vari
5459
+ 3win
5460
+ 3ww
5461
  3you
5462
+ 3zoop
5463
  4 cash
5464
  4 casino
5465
  4 cheap
5957
  1337 seo
5958
  1337-seo
5959
  1337seo
5960
+ 2020 earlier
 
 
 
 
 
 
 
 
 
 
5961
  2020 longchamp
5962
  2020 popular
5963
  2020 prospect
5964
  2020 seo
5965
+ 2020-earlier
5966
  2020-longchamp
5967
  2020-popular
5968
  2020-prospect
5970
  2020baby
5971
  2020longchamp
5972
  2020x.
5973
+ 2021 earlier
5974
  2021 longchamp
5975
  2021 popular
5976
  2021 prospect
5977
  2021 seo
5978
+ 2021-earlier
5979
  2021-longchamp
5980
  2021-popular
5981
  2021-prospect
5983
  2021baby
5984
  2021longchamp
5985
  2021x.
5986
+ 2022 earlier
5987
+ 2022 longchamp
5988
+ 2022 popular
5989
+ 2022 prospect
5990
+ 2022 seo
5991
+ 2022-earlier
5992
+ 2022-longchamp
5993
+ 2022-popular
5994
+ 2022-prospect
5995
+ 2022-seo
5996
+ 2022baby
5997
+ 2022longchamp
5998
+ 2022x.
5999
  10000$
6000
  100000$
6001
  1000000$
6002
+ 1231231
6003
  123456789
6004
  a aaa
6005
  a article author
6190
  a09.php
6191
  a9.php
6192
  ã¹
6193
+ ã¼
6194
  ã²
6195
  ãª
6196
  aaa replic
6214
  aare feel
6215
  aare king
6216
  aare you
6217
+ aarticle
6218
  aat least
6219
  aat the
6220
  aat this
6264
  abonnez partage
6265
  about blog
6266
  about home is
6267
+ about iran from
6268
+ about iraq from
6269
  about marijuana
6270
  about on the blog
6271
  about on the internet
6292
  abrir-uma-empresa
6293
  absleutoly
6294
  absolutely indited
6295
+ absolutely pent written
6296
  abssice 360
6297
  abssice-360
6298
  abssice360
6311
  acai-diet
6312
  acai.diet
6313
  acaiberry
6314
+ accident attorn
6315
  accident lawyer
6316
+ accident-attorn
6317
  accident-lawyer
6318
+ accidentattorn
6319
  accidentlawyer
6320
  according you
6321
  according-you
6348
  accutane
6349
  ace 33
6350
  ace-33
6351
+ acedemic
6352
  acel google
6353
  acel-google
6354
  acellphone
6391
  acnetreatment
6392
  acompanhante anunci
6393
  acompanhantes anunci
6394
+ acompanhantes go
6395
+ acompanhantes-go
6396
+ acompanhantesgo
6397
  acomplia
6398
  acquire me vip
6399
  acros thee
6404
  act as versatile
6405
  actions you desire
6406
  activation code
6407
+ active revenue stream
6408
+ activities device
6409
+ activity device
6410
  activity/p/
6411
+ activosblog
6412
  actonel
6413
  actu star
6414
  actual celebrity
6461
  ad-flag
6462
  ad-listing
6463
  ad-live
6464
+ ad-portal
6465
  ad-sage
6466
  ad-wiki
6467
  adbeat distrib
6579
  admin.jsp
6580
  admin.php
6581
  admin5
6582
+ admire your blog
6583
+ admire your web
6584
+ admire your writing
6585
  adopt curcumin
6586
  adopt-curcumin
6587
  adore foregathering
6588
  ados populaire
6589
  ados-populaire
6590
  adospopulaire
6591
+ adport.al
6592
+ adportal
6593
  adremus viral
6594
  adremus-viral
6595
  adremusviral
6637
  adult gyrl
6638
  adult hub
6639
  adult personal
6640
+ adult porn
6641
  adult sex
6642
  adult story
6643
  adult toy
6657
  adult-hub
6658
  adult-net
6659
  adult-personal
6660
+ adult-porn
6661
  adult-sex
6662
  adult-story
6663
  adult-toy
6678
  adultgyrl
6679
  adulthub
6680
  adultpersonal
6681
+ adultporn
6682
  adults friend
6683
  adults-friend
6684
  adultsex
6686
  adultstory
6687
  adulttoy
6688
  adultweb
6689
+ advair md
6690
+ advair online
6691
+ advair order
6692
+ advair-md
6693
+ advair-online
6694
+ advair-order
6695
+ advairmd
6696
+ advaironline
6697
+ advairorder
6698
  advanced hemp
6699
  advanced raw begin
6700
  advanced-hemp
6712
  advert on this
6713
  advert on your
6714
  advert research
6715
+ advert track
6716
  advert_
6717
  advert-crack
6718
  advert-flag
6721
  advert-market
6722
  advert-research
6723
  advert-sage
6724
+ advert-track
6725
  advert-wiki
6726
  advertise market
6727
  advertise on this
6789
  adverts-live
6790
  adverts-sage
6791
  adverts-wiki
6792
+ adverttrack
6793
  advice for this topic
6794
  advice on this topic
6795
  advice online
7058
  alive-cheat
7059
  alive-hack
7060
  alışveriş sepetiniz
7061
+ alkogoli
7062
  alkotla
7063
  all ahout
7064
  all automobile, auto
7176
  amazing-videos
7177
  amazingsex
7178
  amazn.co
7179
+ amazon cbd
7180
  amazon lider
7181
+ amazon-cbd
7182
  amazon-lider
7183
  amazon.asp
7184
  amazon.cfm
7187
  amazon.htm
7188
  amazon.jsp
7189
  amazon.php
7190
+ amazoncbd
7191
  amazone lider
7192
  amazone-lider
7193
  ambalaje cofetar
7399
  animatedporn
7400
  anime boy
7401
  anime cloth
7402
+ anime een japon
7403
  anime girl
7404
  anime indo
7405
+ anime japon
7406
  anime music vid
7407
+ anime y japon
7408
+ anime y manga
7409
  anime-boy
7410
  anime-cloth
7411
+ anime-een-japon
7412
  anime-girl
7413
  anime-indo
7414
+ anime-japon
7415
  anime-music-vid
7416
+ anime-y-japon
7417
+ anime-y-manga
7418
  animeboy
7419
  animecloth
7420
  animegirl
7421
  animeindo
7422
+ animejapon
7423
+ animeyjapon
7424
+ animeymanga
7425
  ankara transfer
7426
  ankara-transfer
7427
  ankaratransfer
7530
  apkdeponuz
7531
  apkucretsiz
7532
  aplicacin
7533
+ aplikasi bintang
7534
+ aplikasi kasir
7535
+ aplikasi-bintang
7536
+ aplikasi-kasir
7537
  app full download
7538
  app growth education
7539
  app hacked
7569
  appears like web
7570
  appendage enter
7571
  appendages enter
7572
+ apple really ..
7573
  apple really …
7574
  apple wedding
7575
  apple-unlock
7606
  appreciate your post
7607
  appreciate your site
7608
  appreciate your web
7609
+ appreciated this blog
7610
+ appreciated this content
7611
+ appreciated this post
7612
+ appreciated this site
7613
+ appreciated this web
7614
+ appreciated your blog
7615
+ appreciated your content
7616
+ appreciated your post
7617
+ appreciated your site
7618
+ appreciated your web
7619
  appreckate
7620
  appro-chait
7621
  approaching article
7715
  artesanal marca
7716
  artesanal-kit
7717
  artesanal-marca
7718
+ arthritus
7719
  article at this site
7720
  article blog
7721
  article buzz
7731
  article is genuine
7732
  article is perfect
7733
  article is pleasant
7734
+ article is practical
7735
  article is priceless
7736
+ article is really practical
7737
  article is truly
7738
  article it is defin
7739
  article many
7750
  article tag
7751
  article to rank
7752
  article to your life
7753
+ article totally
7754
  article writing
7755
  article you write
7756
  article-blog
7771
  article-sub
7772
  article-suggest
7773
  article-tag
7774
+ article-totally
7775
  article-writing
7776
  article-you-write
7777
+ article, totally
7778
  article,i
7779
  article?.
7780
  article.many
7833
  articlestag
7834
  articlesub
7835
  articletag
7836
+ articulo como este
7837
+ articulos como este
7838
  artiicle
7839
  artikel
7840
  artiklar snart
8058
  auspicious writ
8059
  australia boot
8060
  australia clearance
8061
+ australia jers
8062
  australia out
8063
  australia-boot
8064
  australia-clearance
8065
+ australia-jers
8066
  australiaboot
8067
  australiaclearance
8068
  australian chilling
8135
  authority of a page
8136
  authority of a post
8137
  auto brand
8138
+ auto party
8139
  auto-approve-list
8140
  auto-brand
8141
+ auto-party
8142
  auto.brand
8143
  autoapprove
8144
  autobrand
8150
  automatic+swimming
8151
  automaticpay
8152
  automaticswimming
8153
+ automation – website
8154
  automobile profit
8155
  automobile proper
8156
  automobile-profit
8157
+ autoparty
8158
  autopilot income
8159
  autopilot-income
8160
  autopost unlimit
8190
  avatar trimoxazole
8191
  avatar-live
8192
  avatar-therapy
8193
+ avax yorum
8194
+ avax-yorum
8195
+ avaxyorum
8196
  avental indispensavel
8197
  avental indispensável
8198
  avental-indispensavel
8238
  awokehim
8239
  awordpress.
8240
  awsome
8241
+ ayam online
8242
+ ayam_online
8243
+ ayam-online
8244
+ ayamonline
8245
  az
8246
  azria out
8247
  azria-out
8253
 
8254
 
8255
 
8256
+
8257
 
8258
 
8259
 
8431
  bactrim generic
8432
  bactrim use
8433
  bactrim-coverage
8434
+ bactrim-ds
8435
+ bactrim-generic
8436
+ bactrim-use
8437
+ bactrim4u
8438
  bad credit
8439
  bad-credit
8440
  badcredit
8512
  baguebvlgar
8513
  bahaya lemak
8514
  bahaya-lemak
8515
+ bahis casino
8516
+ bahis giris
8517
+ bahis giriş
8518
+ bahis site
8519
+ bahis-casino
8520
+ bahis-giris
8521
+ bahis-site
8522
+ bahisgiris
8523
  baikal extreme
8524
  baikal rest
8525
  baikal-extreme
8556
  ban barata
8557
  ban barato
8558
  bán đạm
8559
+ bán đàn
8560
  ban handle
8561
  ban händle
8562
  bán hàng đơn giản
8577
  ban-barata
8578
  ban-barato
8579
  ban-dam
8580
+ ban-dan
8581
  ban-hang-don-gian
8582
  ban-jack
8583
  ban-mirror
8632
  banque parrainage
8633
  banque-parrainage
8634
  bansunglass
8635
+ banyak game
8636
+ banyak situs
8637
+ banyak-game
8638
+ banyak-situs
8639
+ banyaknya game
8640
  banyaknya situs
8641
+ banyaknya-game
8642
  banyaknya-situs
8643
  báo giá máy
8644
  bảo hiểm
8767
  bat-dong-san
8768
  bat-pro
8769
  batdongsan
8770
+ bath cabin
8771
+ bathe cabin
8772
  bathroom look
8773
+ bathroom with bathe
8774
  bathroom-look
8775
  batt-kupon
8776
  battkupon
8851
  be tiny needle
8852
  be tthe
8853
  be tthis
8854
+ be weary of
8855
  be what happens you
8856
  be-on-instagram
8857
  beamten
8921
  become bytecoin
8922
  become litecoin
8923
  become our consumer
8924
+ become visitor
8925
  become-a-success
8926
  become-an-expert
8927
  become-bitcoin
8944
  begeni hilesi
8945
  begeni-hilesi
8946
  beggun
8947
+ begin full of life
8948
+ beginnende crypto
8949
+ beginnende-crypto
8950
  beginner blog
8951
+ beginner crypto
8952
  beginner-blog
8953
+ beginner-crypto
8954
+ beginning crypto
8955
+ beginning-crypto
8956
  behavioral-interview-question
8957
  behaviour-driven
8958
  behelfen sich die medien
9019
  beneficios de la
9020
  beneficios-de-la
9021
  benefit coupon
9022
+ benefit of blog
9023
+ benefit to blog
9024
  benefit-coupon
9025
  benefits coupon
9026
+ benefits of blog
9027
+ benefits to blog
9028
  benefits-coupon
9029
  bengals merch
9030
  bengals store
9056
  berracom.ph
9057
  besstet
9058
  best anal
9059
+ best article about
9060
+ best attorn
9061
+ best betting canada
9062
+ best betting usa
9063
+ best birthday bouquet
9064
+ best blog about
9065
  best blogging
9066
+ best body shop
9067
  best bodycon
9068
  best booster
9069
  best cartier
9088
  best nautical decor
9089
  best nautical home
9090
  best online
9091
+ best page about
9092
  best pant
9093
+ best paragraph about
9094
  best payment
9095
  best places botox
9096
  best porn
9097
  best priced
9098
+ best promo
9099
  best prostate
9100
  best sandal
9101
  best sex
9102
  best shapewear
9103
  best shoe price
9104
+ best site about
9105
+ best skin care
9106
+ best smm
9107
+ best social media
9108
  best suppl
9109
  best tummy
9110
  best vape
9111
  best vpn service
9112
+ best web about
9113
  best webmaster
9114
  best wordpress
9115
  best writing comp
9117
  best you can see
9118
  best_small_
9119
  best-anal
9120
+ best-attorn
9121
  best-blogging
9122
+ best-body-shop
9123
  best-bodycon
9124
  best-booster
9125
  best-cartier
9152
  best-porn
9153
  best-priced
9154
  best-probiotic
9155
+ best-promo
9156
  best-prostate
9157
  best-real
9158
  best-sandal
9162
  best-shapewear
9163
  best-shoe-price
9164
  best-shop
9165
+ best-skin-care
9166
  best-small-
9167
+ best-smm
9168
+ best-social-media
9169
  best-software-for
9170
  best-suppl
9171
  best-tummy
9182
  bestad.
9183
  bestads.
9184
  bestairjordan
9185
+ bestattorn
9186
+ bestblog
9187
  bestbut
9188
  bestcartier
9189
  bestcase
9228
  bestpricebuy
9229
  bestpricesbuy
9230
  bestprobiotic
9231
+ bestpromo
9232
  bestreal
9233
  bestsalesell
9234
  bestsellerbag
9236
  bestsex
9237
  bestshop
9238
  bestsmart
9239
+ bestsmm
9240
  bestsuppl
9241
  besttummy
9242
  bestvape
9243
  bestvpn
9244
  bestweb
9245
+ besty promo
9246
+ besty-promo
9247
+ bestypromo
9248
  bet-88
9249
  bet-guru
9250
  bet-khong
9273
  betrueger dreck
9274
  betrueger-dreck
9275
  betruegerdreck
9276
+ bets giris
9277
+ bets-giris
9278
+ bets10 giris
9279
+ bets10-giris
9280
+ bets10giris
9281
  betscript
9282
+ betsgiris
9283
  better essay writ
9284
  better handling driving
9285
+ better it is easy
9286
  better-essay-writ
9287
  better-service
9288
  betterjudg
9291
  betting news
9292
  betting on mlb
9293
  betting online
9294
+ betting platform
9295
  betting script
9296
  betting site
9297
  betting website
9298
  betting-article
9299
  betting-news
9300
  betting-online
9301
+ betting-platform
9302
  betting-script
9303
  betting-site
9304
  betting-website
9306
  bettor than
9307
  between tthe
9308
  betweenex
9309
+ bevefage
9310
  bezpieczne leczenie
9311
  bezpieczne-leczenie
9312
  bhilt
9414
  binary-option
9415
  binarycrypto
9416
  binaryoption
9417
+ bintang 4d
9418
+ bintang-4d
9419
+ bintang4d
9420
  bio bronz
9421
  bio skin
9422
  bio-bronz
9477
  bitcoin $
9478
  bitcoin acc
9479
  bitcoin add
9480
+ bitcoin age
9481
+ bitcoin aja
9482
  bitcoin bot
9483
  bitcoin buy
9484
  bitcoin casino
9492
  bitcoin million
9493
  bitcoin mine
9494
  bitcoin mining
9495
+ bitcoin mix
9496
  bitcoin per day
9497
  bitcoin per week
9498
  bitcoin rush
9501
  bitcoin_
9502
  bitcoin-acc
9503
  bitcoin-add
9504
+ bitcoin-age
9505
+ bitcoin-aja
9506
  bitcoin-buy
9507
  bitcoin-casino
9508
  bitcoin-code
9514
  bitcoin-million
9515
  bitcoin-mine
9516
  bitcoin-mining
9517
+ bitcoin-mix
9518
  bitcoin-per-day
9519
  bitcoin-per-week
9520
  bitcoin-rush
9522
  bitcoin-wallet
9523
  bitcoinacc
9524
  bitcoinadd
9525
+ bitcoinage
9526
+ bitcoinaja
9527
+ bitcoinbot
9528
  bitcoinbuy
9529
  bitcoincas
9530
  bitcoincode
9534
  bitcoindonat
9535
  bitcoindump
9536
  bitcoinmillion
9537
+ bitcoinmix
9538
  bitcoinrush
9539
  bitcoins
9540
  bitcointalk
9583
  black magic removal
9584
  black magic spell
9585
  black magic wealth
9586
+ black militari
9587
  black tight
9588
  black tits
9589
  black ugg
9595
  black-magic-removal
9596
  black-magic-spell
9597
  black-magic-wealth
9598
+ black-militari
9599
  black-tight
9600
  black-tits
9601
  black-ugg
9602
  black-www
9603
  blackfriday
9604
  blackgay
9605
+ blackhat freedom
9606
+ blackhat-freedom
9607
  blackjack pit
9608
  blackjack slot
9609
  blackjack terbaik
9655
  blocker-queda
9656
  blog _
9657
  blog ::
 
 
9658
  blog (wordpress
9659
  blog a menudo
9660
+ blog about animal
9661
+ blog admin
9662
+ blog already
9663
  blog article
9664
  blog based
9665
  blog beast
9684
  blog give pleasant
9685
  blog gives pleasant
9686
  blog glance
9687
+ blog gold
9688
  blog here
9689
  blog if you
9690
  blog is a center
9691
  blog is a centre
9692
  blog is actually
9693
+ blog is extreme
9694
  blog is fastidious
9695
  blog is invaluable
9696
  blog is loading
9697
+ blog is practical
9698
  blog is priceless
9699
+ blog is really practical
9700
  blog is truly
9701
  blog it help
9702
  blog it is
9709
  blog loading
9710
  blog look
9711
  blog mark
9712
+ blog menu
9713
  blog moze
9714
  blog może
9715
  blog occasion
9716
  blog on regular
9717
  blog on the web
9718
+ blog optim
9719
+ blog owner
9720
  blog platform
9721
  blog post
9722
  blog projet
9741
  blog vid
9742
  blog viewer
9743
  blog visit
9744
+ blog was ..
9745
+ blog was …
9746
  blog was how
9747
  blog was..
9748
+ blog was…
9749
  blog web
9750
  blog which content
9751
  blog wiki
9760
  blog-0
9761
  blog-1
9762
  blog-2
9763
+ blog-admin
9764
  blog-based
9765
  blog-beast
9766
  blog-before
9781
  blog-format
9782
  blog-frequently
9783
  blog-glance
9784
+ blog-gold
9785
  blog-here
9786
  blog-is-loading
9787
  blog-it-help
9793
  blog-loading
9794
  blog-look
9795
  blog-mark
9796
+ blog-menu
9797
  blog-occasion
9798
+ blog-optim
9799
+ blog-owner
9800
  blog-platform
9801
  blog-post
9802
  blog-projet
9827
  blog:quần
9828
  blog.;
9829
  blog.:
 
 
9830
  blog.best
9831
  blog.real
9832
  blog.thank
9848
  blog0
9849
  blog1
9850
  blog2
9851
+ blogadmin
9852
  blogbased
9853
  blogbeast
9854
  blogblog
9899
  blogging-visit
9900
  bloggingg
9901
  blogginglook
9902
+ bloggold
9903
  bloggybest
9904
  bloghome
9905
  blogid
9911
  bloglook
9912
  bloglove
9913
  blogmark
9914
+ blogmenu
9915
+ blogoptim
9916
  blogow
9917
  blogów
9918
  blogplatform
9919
  blogprodesign
9920
  blogprojet
9921
  blogrtui.ru
9922
+ blogs already
9923
  blogs article
9924
  blogs if you
9925
  blogs like every
9962
  blogspotprov
9963
  blogsys
9964
  blogtitle
9965
+ blogu jak
9966
  blogue0
9967
  blogue1
9968
  blogue2
10043
  body hormone
10044
  body massage in
10045
  body shapewear
10046
+ body shop place
10047
  body-erotic
10048
  body-goods
10049
  body-hormone
10050
  body-massage-in
10051
  body-shapewear
10052
+ body-shop-place
10053
  bodycon bandage
10054
  bodycon dress
10055
  bodycon home
10073
  boilers-spare
10074
  boilerspare
10075
  boilersspare
10076
+ bokep abg
10077
+ bokep anak
10078
+ bokep indo
10079
+ bokep jepan
10080
+ bokep jilbab
10081
+ bokep-abg
10082
+ bokep-anak
10083
+ bokep-indo
10084
+ bokep-jepan
10085
+ bokep-jilbab
10086
+ bokepabg
10087
+ bokepanak
10088
+ bokepindo
10089
+ bokepjepan
10090
+ bokepjilbab
10091
  bokkmark
10092
  bokserki
10093
  bola online
10104
  bolsos marc
10105
  bolsos-marc
10106
  bolsosmarc
10107
+ bolster their rank
10108
+ bolster your rank
10109
+ bom artigo
10110
+ bom postagem
10111
+ bom-artigo
10112
+ bom-postagem
10113
  bon copie
10114
  bon-copie
10115
  boncopie
10116
  bone wellness
10117
  bone-wellness
10118
+ bonem turystycz
10119
+ bonem-turystycz
10120
  bonerz
10121
  bong 88
10122
  bong online
10213
  bookmarked!
10214
  bookmarking and checking
10215
  bookmarking it
10216
+ bookmarking land
10217
+ bookmarking web
10218
+ bookmarking-it
10219
+ bookmarking-land
10220
+ bookmarking-web
10221
+ bookmarkingit
10222
  bookmarkingland
10223
+ bookmarkingweb
10224
  bookmarks thank
10225
  bookmarks web
10226
  bookmarks-thank
10409
  bought mme
10410
  boulder boulder
10411
  boulder-boulder
10412
+ bouncy castle rent
10413
+ bouncy house rent
10414
+ bouncy-castle-rent
10415
+ bouncy-house-rent
10416
+ bouncycastlerent
10417
+ bouncyhouserent
10418
  boundless online
10419
  bountiful with
10420
  bountiful-with
10591
  brittny-battle
10592
  brittnybattle
10593
  bro thank you
10594
+ brockenstube
10595
  broker blueprint
10596
  broker dealer
10597
  broker forex
10609
  broncosoffic
10610
  brothershit
10611
  brought agreeable
10612
+ browns jers
10613
+ browns-jers
10614
  browse around this blog
10615
  browse around this site
10616
  browse around this web
10889
  bursasite
10890
  bursatransfer
10891
  bursted out laugh
10892
+ bus bathroom
10893
+ bus upholstery
10894
+ bus-bathroom
10895
+ bus-upholstery
10896
  busca sexo
10897
  busca-sexo
10898
  buscando soluções
10899
  busienss
10900
+ business award
10901
  business catalyst
10902
  business collect
10903
  business empire
10906
  business online world
10907
  business seo
10908
  business setup
10909
+ business to google
10910
  business train
10911
+ business website
10912
  business-a2review
10913
+ business-award
10914
  business-boss
10915
  business-catalyst
10916
  business-collect
10917
  business-daily
10918
  business-empire
 
10919
  business-first
10920
  business-formation
10921
  business-in
10922
  business-intel
10923
  business-know
10924
  business-loan
 
 
 
 
10925
  business-seo
10926
  business-setup
10927
+ business-to-google
10928
  business-train
10929
+ business-website
10930
  business’ status
10931
  business’s status
10932
+ businessaward
10933
  businessboss
10934
  businesscatalyst
10935
  businesscollect
10936
  businessdaily
10937
  businesses status
10938
  businesses-status
 
10939
  businessfirst
10940
  businessintel
10941
  businessknow
10942
+ businesslisting
10943
  businessloan
 
 
 
10944
  businessseo
10945
  businesstogoogle
 
10946
  busiunes
10947
  buspirone
10948
  busquemail
10964
  buy ageless
10965
  buy albenda
10966
  buy albenza
10967
+ buy avana
10968
+ buy bactrim
10969
  buy black magic
10970
  buy blade
10971
  buy canadagoose
10972
+ buy cbd
10973
  buy cetirizine
10974
  buy cheap
10975
  buy crypto
11026
  buy soccer
11027
  buy social account
11028
  buy targeted
11029
+ buy telegram
11030
  buy thesis
11031
  buy tiktok
11032
  buy toms
11044
  buy-acrylic
11045
  buy-albenda
11046
  buy-albenza
11047
+ buy-avana
11048
+ buy-bactrim
11049
  buy-black-magic
11050
  buy-blade
11051
  buy-canadagoose
11052
+ buy-cbd
11053
  buy-cetirizine
11054
  buy-cheap
11055
  buy-cig
11112
  buy-social-account
11113
  buy-soma
11114
  buy-targeted
11115
+ buy-telegram
11116
  buy-thesis
11117
  buy-tiktok
11118
  buy-toms
11133
  buy.cock
11134
  buy.top
11135
  buyalbenza
11136
+ buyavana
11137
  buycanada
11138
+ buycbd
11139
  buycetirizine
11140
  buycheap
11141
  buycig
11155
  buying and selling system
11156
  buying face
11157
  buying fifa
11158
+ buying firearm
11159
+ buying guns
11160
  buying insta
11161
  buying likes
11162
  buying married
11165
  buying-a-car
11166
  buying-face
11167
  buying-fifa
11168
+ buying-firearm
11169
+ buying-guns
11170
  buying-insta
11171
  buying-likes
11172
  buying-papers-online
11174
  buying-traff
11175
  buyingface
11176
  buyingfifa
11177
+ buyingfirearm
11178
+ buyingguns
11179
  buyinginsta
11180
  buyinglikes
11181
  buyingrune
11347
  california-date
11348
  california-dating
11349
  californiaadult
11350
+ calisma portal
11351
+ calisma-portal
11352
+ calismaportal
11353
  calitate super
11354
  calitate-super
11355
  call center outsourc
11356
  call centre outsourc
11357
  call futurity
11358
+ call girl service
11359
+ call girls service
11360
  call-center-outsourc
11361
  call-centre-outsourc
11362
  call-futurity
11363
+ call-girl-service
11364
+ call-girls-service
11365
  callerid
11366
  callgirl
11367
  callgyrl
11431
  camisetas-polo
11432
  camisetashollis
11433
  camisetaspolo
11434
+ camper bathroom
11435
+ camper cabinet
11436
+ camper counter
11437
+ camper fabric
11438
+ camper lighting
11439
+ camper reno
11440
+ camper resto
11441
+ camper slide
11442
+ camper solar
11443
+ camper upgrade
11444
+ camper windshield
11445
+ camper-bathroom
11446
+ camper-cabinet
11447
+ camper-counter
11448
+ camper-fabric
11449
+ camper-lighting
11450
+ camper-reno
11451
+ camper-resto
11452
+ camper-slide
11453
+ camper-solar
11454
+ camper-upgrade
11455
+ camper-windshield
11456
  campervanhire
11457
  camsex
11458
  can assist you have
11500
  canadaout
11501
  canadian drug
11502
  canadian hgh
11503
+ canadian king
11504
  canadian loan
11505
  canadian pharm
11506
  canadian-drug
11507
  canadian-hgh
11508
+ canadian-king
11509
  canadian-loan
11510
  canadian-pharm
11511
  canadiandrug
11512
  canadianhgh
11513
+ canadianking
11514
  canadianloan
11515
  candy crash
11516
  candy-crash
11517
  candy-crush
11518
  candycrash
11519
  candycrush
11520
+ canli bahis
11521
+ canli-bahis
11522
  cann also
11523
  cann't
11524
  cann’t
11554
  capabilities also
11555
  capabilities-also
11556
  capable of effortless
11557
+ capable of provide
11558
  capable to provide
11559
  capacidad produccion
11560
  capacidad producción
11587
  card-debt
11588
  card-dump
11589
  card-financial
11590
+ cardano coin
11591
+ cardano-coin
11592
+ cardanocoin
11593
  cardcheat
11594
  carder board
11595
  carder-board
11626
  cars-insur
11627
  carsgame
11628
  carsinsur
11629
+ cartalidge
11630
  cartier anelli
11631
  cartier bracelet
11632
  cartier fidanza
11693
  cash-team
11694
  cash.com.
11695
  cash.xyz
11696
+ cash|
11697
  cash4
11698
  cashadvance
11699
  cashbuzz
11707
  cashforsilver
11708
  cashfuck
11709
  cashgenerat
11710
+ cashis online
11711
+ cashis-online
11712
+ cashisonline
11713
  cashloan
11714
  cashnow
11715
  cashout
11717
  casier judiciaire
11718
  casier-judiciaire
11719
  casino account
11720
+ casino bet
11721
  casino bonus
11722
  casino enligne
11723
  casino fish
11730
  casino only
11731
  casino partic
11732
  casino phish
11733
+ casino review
11734
  casino script
11735
  casino site
11736
  casino slot
11737
+ casino tipps
11738
+ casino tips
11739
  casino today
11740
  casino view
11741
  casino_
11742
  casino-1
11743
  casino-24
11744
  casino-account
11745
+ casino-bet
11746
  casino-bonus
11747
  casino-enligne
11748
  casino-fish
11756
  casino-only
11757
  casino-partic
11758
  casino-phish
11759
+ casino-review
11760
  casino-script
11761
  casino-site
11762
  casino-slot
11767
  casino1
11768
  casino24
11769
  casinoaccount
11770
+ casinobet
11771
  casinobonus
11772
  casinoenligne
11773
  casinoer
11878
  cc-shop
11879
  ccan visit
11880
  ccheap
11881
+ ccleaner full
11882
+ ccleaner-full
11883
+ ccleanerfull
11884
  ccshop
11885
  cctv dahua
11886
  cctv distrib
11893
  ccvshop
11894
  ce billet
11895
  ce-billet
11896
+ cecha talentu
11897
+ cechą talentu
11898
  celeb diet
11899
  celeb hair
11900
  celeb nude
11906
  celebnude
11907
  celebrate blogging
11908
  celebrate-blogging
11909
+ celebration screener
11910
  celebrex
11911
  celebrities diet
11912
  celebrities hair
11919
  celebritiesnude
11920
  celebrity diet
11921
  celebrity hair
11922
+ celebrity milf
11923
  celebrity-diet
11924
  celebrity-hair
11925
+ celebrity-milf
11926
  celebrity-nude
11927
  celebritydiet
11928
  celebrityhair
11929
+ celebritymilf
11930
  celebritynude
11931
  celebs diet
11932
  celebs hair
12081
  chachurbat
12082
  chack-tip
12083
  chacktip
12084
+ challenge discount
12085
+ challenge-discount
12086
  chanclas hollis
12087
  chanclas-hollis
12088
  chanclashollis
12174
  charmsthomas
12175
  chat met vrouwen
12176
  chat porn
12177
+ chat sex
12178
  chat support office
12179
  chat tarot
12180
+ chat xxx
12181
  chat-bait
12182
  chat-bate
12183
  chat-chat
12184
  chat-met-vrouwen
12185
  chat-porn
12186
+ chat-sex
12187
  chat-tarot
12188
+ chat-xxx
12189
  chatburt
12190
  chatchat
12191
  chaterba
12208
  chatporn
12209
  chatr-bat
12210
  chatrbat
12211
+ chatsex
12212
  chattburt
12213
  chatte-bat
12214
  chattebat
12226
  chaturbat
12227
  chaturbbat
12228
  chaturrbat
12229
+ chatxxx
12230
  chaussres boutique
12231
  chaussres pascher
12232
  chaussres-boutique
12316
  chce-rozwodu
12317
  chcoin.co
12318
  cheap |
12319
+ cheap advair
12320
  cheap afl
12321
  cheap air
12322
  cheap anti
12374
  cheap longchamp
12375
  cheap loubou
12376
  cheap louis
12377
+ cheap lyrica
12378
  cheap mackage
12379
  cheap mbt
12380
  cheap michael
12404
  cheap sherr
12405
  cheap shoe
12406
  cheap silver
12407
+ cheap smm
12408
  cheap soccer
12409
  cheap stephen
12410
  cheap sunglass
12427
  cheap youth
12428
  cheap_
12429
  cheap-adobe
12430
+ cheap-advair
12431
  cheap-afl
12432
  cheap-atlanta
12433
  cheap-autentic
12482
  cheap-kobe
12483
  cheap-lebron
12484
  cheap-loubou
12485
+ cheap-lyrica
12486
  cheap-mackage
12487
  cheap-mbt
12488
  cheap-michael
12513
  cheap-sherr
12514
  cheap-shoe
12515
  cheap-silver
12516
+ cheap-smm
12517
  cheap-soccer
12518
  cheap-stephen
12519
  cheap-sunglass
12538
  cheap-youth
12539
  cheap+
12540
  cheapadobe
12541
+ cheapadvair
12542
  cheapafl
12543
  cheapatlanta
12544
  cheapautentic
12569
  cheapest pokemon
12570
  cheapest price
12571
  cheapest ray
12572
+ cheapest smm
12573
  cheapest-hockey
12574
  cheapest-lowest
12575
  cheapest-pokemon
12576
  cheapest-price
12577
  cheapest-ray
12578
+ cheapest-smm
12579
  cheapest.co
12580
  cheapesthockey
12581
  cheapestlow
12582
  cheapestprice
12583
+ cheapestsmm
12584
  cheapferrag
12585
  cheapflowergirl
12586
  cheapfootbal
12600
  cheaplebron
12601
  cheaploubou
12602
  cheaplouis
12603
+ cheaplyrica
12604
  cheapmackage
12605
  cheapmbt
12606
  cheapmichael
12628
  cheapsex
12629
  cheapshoe
12630
  cheapsilver
12631
+ cheapsmm
12632
  cheapstephen
12633
  cheapsugg
12634
  cheapsunglass
12705
  check out my web
12706
  check out new post
12707
  check out the blog
12708
+ check out the link
12709
  check out the page
12710
  check out the site
12711
  check out the sitte
12712
  check out the web
12713
+ check out this link
12714
+ check out this site
12715
  check the ideas
12716
+ check this blog
12717
  check this ideas
12718
  check this link
12719
+ check this site
12720
  check this video
12721
  check us out guy
12722
  check weblog
12729
  check-out out
12730
  check-out-new-post
12731
  check-out-out
12732
+ check-out-the-link
12733
+ check-out-the-site
12734
+ check-out-this-link
12735
+ check-out-this-site
12736
+ check-this-blog
12737
  check-this-link
12738
+ check-this-site
12739
  check-this-video
12740
  check-weblog
12741
  check-who-call
13171
  click for more
13172
  click fraud
13173
  click here
13174
+ click in bio
13175
+ click in my profile
13176
+ click in profile
13177
  click now
13178
  click on secure
13179
  click over here
13180
+ click that link
13181
  click the blog
13182
  click the last site
13183
  click the link
13227
  clickforu
13228
  clickfraud
13229
  clicking it
13230
+ clicking that link
13231
+ clicking the link
13232
+ clicking this link
13233
  clicking world
13234
  clicking-world
13235
  clicknow
13347
  coach syoppu
13348
  coach thai
13349
  coach tokyo
13350
+ coach training
13351
  coach wallet
13352
  coach wrist
13353
  coach ya
13382
  coach-syoppu
13383
  coach-thai
13384
  coach-tokyo
13385
+ coach-training
13386
  coach-wallet
13387
  coach-wrist
13388
  coach-ya
13506
  coin master hack
13507
  coin offering
13508
  coin xbox
13509
+ coin yorum
13510
  coin-cheat
13511
  coin-cloud
13512
  coin-foot
13519
  coin-master-hack
13520
  coin-offering
13521
  coin-xbox
13522
+ coin-yorum
13523
  coincheat
13524
  coincloud
13525
  coinfoot
13554
  coinsxbox
13555
  coinvest
13556
  coinxbox
13557
+ coinyorum
13558
  cokment
13559
  colastrina
13560
+ colchon alta gama
13561
+ colchones alta gama
13562
  collectif abssice
13563
  collectif celine
13564
  collectif moncler
13582
  collections-shops
13583
  collections-supply
13584
  collegasintekst
13585
+ college fuck
13586
  college persuasive
13587
+ college pussy
13588
  college-essay
13589
+ college-fuck
13590
  college-loan
13591
  college-persuasive
13592
+ college-pussy
13593
  collegeessay
13594
  collegeloan
13595
  collezione celine
13768
  commerceretail
13769
  commercesale
13770
  commercewhole
13771
+ commercial counter
13772
+ commercial door
13773
+ commercial fiber
13774
+ commercial fibre
13775
  commercial office move
13776
+ commercial slideout
13777
+ commercial technician
13778
+ commercial-counter
13779
+ commercial-door
13780
+ commercial-fiber
13781
+ commercial-fibre
13782
  commercial-office-move
13783
+ commercial-slideout
13784
+ commercial-technician
13785
  commerical lender
13786
  commerical-lender
13787
  commericallender
13798
  communal-authent
13799
  community.atom
13800
  commutee
13801
+ como emagrecer
13802
  como facebook
13803
  como ganhar
13804
  como maquiar
13805
  como reconquista
13806
  como trabalhar
13807
+ como-emagrecer
13808
  como-facebook
13809
  como-ganhar
13810
  como-maquiar
13934
  considerably this page
13935
  considerably this site
13936
  considerably this web
13937
+ consideration speculate
13938
  consideration-prior-to
13939
+ considerations speculate
13940
  considerations-prior-to
13941
  considering-innovation
13942
  consolidation loan
13949
  construct-chicken
13950
  constructionn
13951
  construtor
13952
+ consultation attorn
13953
  consultation lawyer
13954
+ consultation-attorn
13955
  consultation-lawyer
13956
+ consultationattorn
13957
  consultationlawyer
13958
  consulte nuestro servicio
13959
  consumer buzz
13966
  contactos-chico
13967
  contactos-mujeres
13968
  contactus/contact
13969
+ contain nice material
13970
+ contains nice material
13971
  contemporize the
13972
  contemporizes the
13973
  content ,
13983
  content?.
13984
  contents are masterpiece
13985
  contents?.
13986
+ conteudo legitimo
13987
+ conteúdo legítimo
13988
+ conteudo-legitimo
13989
+ continentfal
13990
  continually have got
13991
  continue assim
13992
  continue-assim
13999
  contoh-plakat
14000
  contohplakat
14001
  contratacin
14002
+ contre pitbull
14003
+ contre-pitbull
14004
  control diet
14005
  control-diet
14006
  controldiet
14036
  cooker ninja
14037
  cooker-ninja
14038
  cookerninja
14039
+ cooking fever free
14040
+ cooking-fever-free
14041
  cool article
14042
  cool blog
14043
  cool post
14158
  costume medi
14159
  costume tendance
14160
  costume versace
14161
+ costume will complement
14162
  costume- aged
14163
  costume-ermen
14164
  costume-homme
14253
  couponspriv
14254
  courses casino
14255
  courses-casino
14256
+ coursework service
14257
+ coursework-service
14258
  couture avec
14259
  couture-avec
14260
  couyld
14379
  creating short article
14380
  creation will run
14381
  credit direct
14382
+ credit loan
14383
  credit repair
14384
  credit report
14385
  credit score
14386
  credit_
14387
  credit-card
14388
+ credit-check
14389
  credit-direct
14390
  credit-format
14391
+ credit-loan
14392
  credit-repair
14393
  credit-report
14394
  credit-score
14398
  creditcard.us
14399
  creditdirect
14400
  creditformat
14401
+ creditloan
14402
+ credito gratis
14403
+ crédito gratis
14404
+ credito inmediato
14405
+ crédito inmediato
14406
+ credito online
14407
+ crédito online
14408
+ credito personal
14409
+ crédito personal
14410
+ credito por internet
14411
+ credito rapid
14412
+ crédito rápid
14413
+ credito-gratis
14414
+ credito-inmediato
14415
+ credito-online
14416
+ credito-personal
14417
+ credito-por-internet
14418
+ credito-rapid
14419
+ creditogratis
14420
+ creditoinmediato
14421
+ creditoonline
14422
+ creditopersonal
14423
+ creditorapid
14424
+ creditos gratis
14425
+ créditos gratis
14426
+ creditos inmediato
14427
+ créditos inmediato
14428
+ creditos online
14429
+ créditos online
14430
+ creditos personal
14431
+ créditos personal
14432
+ creditos por internet
14433
+ creditos rapid
14434
+ creditos rapido
14435
+ créditos rápido
14436
+ creditos-gratis
14437
+ creditos-inmediato
14438
+ creditos-online
14439
+ creditos-personal
14440
+ creditos-por-internet
14441
+ creditos-rapid
14442
+ creditos-rapido
14443
+ creditosgratis
14444
+ creditosinmediato
14445
+ creditosonline
14446
+ creditospersonal
14447
+ creditosrapid
14448
+ creditosrapido
14449
  creditrepair
14450
  creditreport
14451
  creditscore
14484
  crypto + bitcoin
14485
  crypto + btc
14486
  crypto + forex
14487
+ crypto ad
14488
  crypto bitcoin
14489
  crypto btc
14490
  crypto curren
14491
+ crypto enth
14492
  crypto hack
14493
  crypto moneda
14494
  crypto script
14495
+ crypto stak
14496
  crypto tab
14497
+ crypto thumb
14498
  crypto_
14499
+ crypto-ad
14500
  crypto-bitcoin
14501
  crypto-btc
14502
  crypto-curren
14503
+ crypto-enth
14504
  crypto-hack
14505
  crypto-moneda
14506
  crypto-script
14507
+ crypto-stak
14508
  crypto-tab
14509
+ crypto-thumb
14510
  crypto/btc
14511
+ cryptoad
14512
  cryptobtc
14513
  cryptocurrency coin
14514
+ cryptocurrency enth
14515
  cryptocurrency news
14516
  cryptocurrency strat
14517
  cryptocurrency-coin
14518
+ cryptocurrency-enth
14519
  cryptocurrency-news
14520
  cryptocurrency-strat
14521
  cryptohack
14522
  cryptomoneda
14523
  cryptoscript
14524
+ cryptostak
14525
  cryptotab
14526
+ cryptothumb
14527
  crystal hack
14528
  crystal-hack
14529
  crystalhack
14665
  cuz-this
14666
  cv meaning
14667
  cv-meaning
14668
+ cvv dump
14669
  cvv shop
14670
+ cvv site
14671
+ cvv-dump
14672
  cvv-shop
14673
+ cvv-site
14674
+ cvvdump
14675
  cvvshop
14676
+ cvvsite
14677
  çý
14678
  cyber jeunesse
14679
  cyber monday
14727
  daddy-sitte
14728
  dafeult
14729
  daftar agen
14730
+ daftar game
14731
  daftar harg
14732
  daftar judi
14733
  daftar poke
14734
+ daftar qq
14735
+ daftar slot
14736
  daftar-agen
14737
+ daftar-game
14738
  daftar-harg
14739
  daftar-judi
14740
  daftar-poke
14741
+ daftar-qq
14742
+ daftar-slot
14743
  daftaragen
14744
  daftarharg
14745
  daftarjudi
14932
  day-diet
14933
  day-lengthy
14934
  day-loubou
14935
+ day-to-day deal
14936
  day. bye
14937
  day.did
14938
  dayloubou
14957
  de-tivi
14958
  dead composed subject
14959
  deal benefit
14960
+ deal flow
14961
+ deal livingsocial
14962
  deal of problem
14963
  deal this blog
14964
  deal this page
14968
  deal-4u
14969
  deal-benefit
14970
  deal-eu
14971
+ deal-flow
14972
  deal-uk
14973
  deal-us
14974
  deal.bl
14975
  deal4u
14976
  dealeu
14977
+ dealflow
14978
  dealongamento
14979
  dealonline
14980
  deals-4-u
14992
  dealus
14993
  dear-lover
14994
  dearlover
14995
+ death attorn
14996
  death erotic
14997
+ death-attorn
14998
  death-erotic
14999
  deatherotic
15000
  debt money
15043
  definate
15044
  definetely
15045
  definitelly
15046
+ definition econo
15047
  degree expert
15048
  degree twenty
15049
  degree-expert
15058
  dekorativno prikladno
15059
  dekorativno-prikladno
15060
  del sitio web
15061
+ deliuveries
15062
+ deliuvery
15063
  deliver noticeable result
15064
  deliver overtly
15065
  deliver result
15070
  delivers result
15071
  delivers-result
15072
  deliversresult
15073
+ delivery can deliver
15074
+ delivery deliver
15075
+ delivery flower
15076
+ delivery philip
15077
+ delivery-flower
15078
+ delivery-near-me
15079
+ delivery-nearme
15080
+ delivery-philip
15081
  delta-marketing
15082
  deltamarketing
15083
  deltasone
15091
  dem-kauf-eines
15092
  dem-tien
15093
  đếm-tiền
15094
+ demasiado tu post
15095
  demo0
15096
  demo1
15097
  demo2
15113
  deneme mal
15114
  deneme-icerik
15115
  deneme-mal
15116
+ dengan maksimum
15117
  denschlaf
15118
  dental chat room
15119
  dental guru
15143
  depart your site
15144
  depart your web
15145
  depnhat
15146
+ depo pulsa
15147
+ depo slot
15148
+ depo-pulsa
15149
+ depo-slot
15150
  depoimentos reais
15151
  depoimentos-reais
15152
  deposit casino
15153
+ deposit-bonus
15154
  deposit-casino
15155
+ deposit.ru
15156
  depositbank
15157
  depositcasino
15158
+ depression 1
15159
+ depression 2
15160
+ depression 3
15161
+ depression 4
15162
+ depression 5
15163
+ depression 6
15164
+ depression 7
15165
+ depression 8
15166
+ depression 9
15167
+ depression and obs
15168
+ depression and preg
15169
+ depression definition
15170
+ depression ecg
15171
+ depression m kya
15172
+ depression medication
15173
+ depression symptom
15174
+ depression-definition
15175
+ depression-medication
15176
  depression-symptom
 
15177
  derm exclus
15178
  derm-exclus
15179
  dermexclus
15181
  derniers modèle
15182
  derniers-modele
15183
  derniers-modèle
 
15184
  derogatory circum
15185
  derogatory item
15186
  derun escort
15194
  desconto
15195
  describes feasible
15196
  describes-feasible
15197
+ description career
15198
+ description-career
15199
+ descriptioncareer
15200
  descriptive article
15201
  descriptive blog
15202
  descriptive post
15225
  design-own
15226
  design-product-design
15227
  designcheap
15228
+ designed on a place
15229
  designed to me
15230
  designed-to-me
15231
  designeed
15297
  detskie-diskotek
15298
  deutschland-online
15299
  deutschlandonline
15300
+ development – digital
15301
+ development – website
15302
  development an app
15303
  devenir trade
15304
  devenir-trade
15311
  dewapoker
15312
  dewelop
15313
  df!
15314
+ dfsfds
15315
  dfy suite
15316
  dfy-suite
15317
  dfysuite
15344
  didnít
15345
  didrex online
15346
  didrex-online
15347
+ die besten nativ
15348
  die kuhlbox
15349
  die kühlbox
15350
  die-kühlbox
15399
  diet.htm
15400
  diet.jsp
15401
  diet.php
15402
+ dieta desayuno
15403
  dieta detox
15404
+ dieta easy
15405
+ dieta kat
15406
+ dieta sanatoasa
15407
  dieta sofrida
15408
+ dieta zero
15409
+ dieta-desayuno
15410
  dieta-detox
15411
+ dieta-easy
15412
+ dieta-kat
15413
+ dieta-sanatoasa
15414
  dieta-sofrida
15415
+ dieta-zero
15416
  dietary advice
15417
  dietary advise
15418
  dietary status
15463
  diiclfuf
15464
  diid yoou
15465
  diid you
15466
+ dikkat eksikligi
15467
+ dikkat eksikliği
15468
+ dikkat-eksikligi
15469
  dili optim
15470
  dili-optim
15471
  dilioptim
15505
  discount afl
15506
  discount anta
15507
  discount bag
15508
+ discount cialis
15509
  discount jord
15510
  discount kratom
15511
  discount mbt
15521
  discount-afl
15522
  discount-anta
15523
  discount-bag
15524
+ discount-cialis
15525
  discount-cig
15526
  discount-jord
15527
  discount-kratom
15551
  discountt
15552
  discountugg
15553
  discountwheel
15554
+ discover a person
15555
  discover sociable site
15556
  discover web design
15557
  discovered this blog
15591
  disfunçăo erétil
15592
  disfuncao-eretil
15593
  disfunçăo-erétil
15594
+ disi birak
15595
+ disi-birak
15596
+ disibirak
15597
+ diskret leveran
15598
+ diskret-leveran
15599
  disney se pega
15600
  disorder quiz
15601
  disorder-quiz
15630
  divulgaemail
15631
  diy divorce
15632
  diy-divorce
15633
+ dışı bırak
15634
  djstool
15635
  djtool
15636
  đľđ
15787
  done a formidable
15788
  done formidable
15789
  done grateful
15790
+ đong party
15791
+ động party
15792
  dong phuc dep
15793
  đồng phục đẹp
15794
  dong-max
15795
+ đong-party
15796
  dong-phuc-dep
15797
  dongmax
15798
  dongphucdep
15813
  dooes-not
15814
  door-blog
15815
  dopamine
15816
+ dopningsrelevanta
15817
  dora-scrum
15818
  dorascrum
15819
  dos-seios
15915
  downloadsonline
15916
  downlowd
15917
  downlown
15918
+ downtown quintessence
15919
  doxycycline
15920
  dr prescription
15921
  dr visit online
16017
  drivel of an site
16018
  drivel of an web
16019
  drivewayservice
16020
+ drkenansimsek
16021
  drmarten jap
16022
  drmarten jp
16023
  drmarten uk
16050
  drop your premium
16051
  drop,dehy
16052
  drop.dehy
 
16053
  drug buy
16054
  drug cheap
16055
  drug-buy
16060
  druggz
16061
  drugs buy
16062
  drugs cheap
16063
+ drugs fedex
16064
  drugs info
16065
+ drugs ups
16066
+ drugs usps
16067
  drugs-buy
16068
  drugs-cheap
16069
+ drugs-fedex
16070
  drugs-info
16071
+ drugs-ups
16072
+ drugs-usps
16073
  drugs. regard
16074
  drugs4u
16075
  drugsbuy
16131
  dude.de
16132
  dudes.de
16133
  dugg some
16134
+ dui attorn
16135
+ dui lawyer
16136
+ dui-attorn
16137
+ dui-lawyer
16138
  dulichtrongoi
16139
  dulichtuxu
16140
  dummytest
16179
  dvd-erotic
16180
  dvdbox
16181
  dvdrip
16182
+ dwi-attorn
16183
+ dwiattorn
16184
  dwn.linksind.
16185
  dylongfa
16186
  dynamic advert
16235
  e| t
16236
  e2by.in
16237
  eâcute
16238
+ eager of read
16239
  eagerly wiggling
16240
  eagerly-wiggling
16241
  eaglefight.eaglefight
16264
  easier consume
16265
  easier to available
16266
  easily one tight
16267
+ easy agency
16268
+ easy blog
16269
  easy consume
16270
  easy naked
16271
+ easy weblog
16272
+ easy website
16273
  easy with your present
16274
+ easy-agency
16275
+ easy-blog
16276
  easy-naked
16277
+ easy-weblog
16278
+ easy-website
16279
  easy.in
16280
+ easyagency
16281
  easyloan
16282
  easynaked
16283
  easyrent
16284
+ easyslim
16285
  eating hemp
16286
  eating-hemp
16287
  eatinghemp
16308
  ecig review
16309
  ecig-review
16310
  ecigreview
16311
+ eclipse review
16312
+ eclipse-review
16313
+ eclipsereview
16314
  ecom email
16315
  ecom success
16316
  ecom-email
16369
  egyptjers
16370
  ehttp
16371
  eight %
16372
+ eigyht
16373
  eine seite widmen
16374
  einkommen
16375
  ejaculate help
16396
  ekologiczne logo
16397
  ekologiczne-logo
16398
  ekorting
16399
+ eksikligi afyon
16400
+ eksikliği afyon
16401
+ eksikligi-afyon
16402
  ekskluzywne zestaw
16403
  ekskluzywne-zestaw
16404
  ekspedisi murah
16425
  elektrik malzeme
16426
  elektrik-malzeme
16427
  elektrikmalzeme
16428
+ elektronik cash
16429
+ elektronik-cash
16430
  elementary entry
16431
  elementary-entry
16432
  eli online
16459
  elitescort
16460
  eliteskort
16461
  elitewom
16462
+ ellezza.pt
16463
  eloans
16464
  elsa-dress
16465
  elveda canimin
16467
  elway jers
16468
  elway-jers
16469
  elwayjers
16470
+ emagrecer fazendo
16471
+ emagrecer flanco
16472
+ emagrecer hot
16473
+ emagrecer inter
16474
+ emagrecer limpa
16475
  emagrecer podem
16476
+ emagrecer rapido
16477
+ emagrecer rápido
16478
+ emagrecer urgent
16479
+ emagrecer whey
16480
+ emagrecer-fazendo
16481
+ emagrecer-flanco
16482
+ emagrecer-hot
16483
+ emagrecer-inter
16484
+ emagrecer-limpa
16485
  emagrecer-podem
16486
+ emagrecer-rapido
16487
+ emagrecer-urgent
16488
+ emagrecer-whey
16489
  email academy
16490
  email advertis
16491
  email advertiz
16544
  empowernetwork
16545
  empreendedor
16546
  empresa de referencia
16547
+ empresa de reparacione
16548
+ empresa de servicio
16549
  empresa familiar nacida
16550
  empresa grande
16551
+ empresa-de-reparacione
16552
+ empresa-de-servicio
16553
  empresa-grande
16554
  empresas grande
16555
  empresas-grande
16578
  endlaved
16579
  endocrinol meta
16580
  endocrinol-meta
16581
+ eneagrama
16582
+ eneagramizar
16583
+ eneatipo
16584
+ enemy to covid
16585
+ enerbetic
16586
  energetic article
16587
  energetic blog
16588
+ energetic page
16589
  energetic post
16590
+ energetic site
16591
+ energetic web
16592
  energetic-article
16593
  energetic-blog
16594
  energetic-post
16611
  engagementring
16612
  engagermate
16613
  engagge
16614
+ engagment
16615
  engine account
16616
  engine online
16617
  engine optim
16654
  enhancepill
16655
  enhanceyou
16656
  enhttp
16657
+ enjoy mobile game
16658
  enjoy your blog
16659
  enjoy your page
16660
  enjoy your post
16661
  enjoy your site
16662
  enjoy your web
16663
+ enjoy-mobile-game
16664
  enjoy-more
16665
  enjoying by these
16666
  enjoying by this
16738
  equipement-manufact
16739
  equipment manufact
16740
  equipment-manufact
16741
+ equipo de pro
16742
  equivalentt
16743
  era afl
16744
  era mlb
16829
  erotischer reife
16830
  erotischer-reife
16831
  erotyczna
16832
+ ervaren crypto
16833
+ ervaren-crypto
16834
  eryaman escort
16835
  eryaman eskort
16836
  eryaman-escort
17143
  every stuff
17144
  every wearer
17145
  every-advert
17146
+ every-great-attorn
17147
  every-info
17148
  every-leg
17149
  every-light
17162
  everyone-furthermore
17163
  everypant
17164
  everysock
17165
+ everything dental
17166
+ everything information
17167
  everything-dental
17168
+ everything-information
17169
  everythingdental
17170
  everythink
17171
  everytight
17187
  excellent article
17188
  excellent blog
17189
  excellent content
17190
+ excellent factor
17191
  excellent gift for
17192
  excellent gifts for
17193
  excellent movie clip
17238
  excessively-skill
17239
  exchange buying and selling
17240
  exchange link
 
17241
  exchange-link
 
17242
  exchangelink
17243
  exchanging link
17244
  exchanging-link
17260
  exelon
17261
  exercice
17262
  exgirlfriend
17263
+ exipure discount
17264
+ exipure supplement
17265
+ exipure-discount
17266
+ exipure-supplement
17267
+ exipurediscount
17268
+ exipuresupplement
17269
  exists lots
17270
  exit.asp
17271
  exmo.co
17281
  experience simply
17282
  experience-boat
17283
  experience-simply
17284
+ experienced business
17285
+ experienced crypto
17286
+ experienced-business
17287
+ experienced-crypto
17288
  experiencia en el sector
17289
  expert presence
17290
  expert suggestion
17291
+ expert write
17292
  expert writing
17293
  expert-presence
17294
  expert-suggestion
17346
  extra 10 discount
17347
  extra 20 discount
17348
  extra gry
17349
+ extra than half
17350
  extract cbd
17351
  extract pill
17352
  extract-cbd
17357
  extremely broad for
17358
  extremely much
17359
  extremely superb
17360
+ extremely university
17361
  extremely valid point
17362
+ extremely_university
17363
  extremely-ample
17364
  extremely-much
17365
  extremely-superb
17366
+ extremely-university
17367
  extremely}
17368
  extremley
17369
  extremrly
17608
  family motor vehicle
17609
  family-motor-vehicle
17610
  famous blog
17611
+ famous news
17612
  famous palmist
17613
+ famous social net
17614
  famous-blog
17615
+ famous-news
17616
  famous-palmist
17617
+ famousnews
17618
  fan hack
17619
  fan-hack
17620
  fanalert
17723
  fashion hair
17724
  fashion list
17725
  fashion men
17726
+ fashion room
17727
  fashion store
17728
  fashion trend
17729
  fashion web
17735
  fashion-hair
17736
  fashion-list
17737
  fashion-men
17738
+ fashion-room
17739
  fashion-store
17740
  fashion-trend
17741
  fashion-web
17814
  fastidious repl
17815
  fastidious respo
17816
  fastidious site
17817
+ fastidious thin
17818
  fastidious thou
17819
  fastidious under
17820
  fastidious urg
17837
  fastidious-repl
17838
  fastidious-respo
17839
  fastidious-site
17840
+ fastidious-thin
17841
  fastidious-thou
17842
  fastidious-under
17843
  fastidious-urg
17845
  fastidious-writ
17846
  fastidious, my
17847
  fastidious=
17848
+ fastidiouus
17849
  fastlink.run
17850
  fastloan
17851
  fastmoney
18118
  fetishmen
18119
  fetishsex
18120
  fetishwom
18121
+ fever free gem
18122
+ fever-free-gem
18123
  few web log
18124
  few web page
18125
  few web site
18189
  filenamesdat
18190
  files/new
18191
  filestube
18192
+ film drinking
18193
  film erotic
18194
  film it would also
18195
  film izle
18200
  film song download
18201
  film streaming complet
18202
  film x
18203
+ film-drinking
18204
  film-erotic
18205
  film-izle
18206
  film-kovasi
18214
  filmerotic
18215
  filmizle
18216
  filmkovasi
18217
+ filmkox
18218
  filmmodu
18219
  filmporn
18220
  films enables
18248
  finance cash
18249
  finance debt
18250
  finance emerg
18251
+ finance provider
18252
  finance service
18253
  finance solution
18254
  finance-
18257
  finance-debt
18258
  finance-emerg
18259
  finance-pak
18260
+ finance-provider
18261
  finance-service
18262
  finance-solution
18263
  financeblog
18348
  finiteinstant
18349
  finnd out
18350
  fioricet
18351
+ firearm online
18352
+ firearm store
18353
+ firearm-online
18354
+ firearm-store
18355
+ firearmonline
18356
+ firearmstore
18357
  firefox-setting
18358
  firefoxik
18359
  firefoxsetting
18415
  fiverseller
18416
  fivestardoll
18417
  fix credit
18418
+ fix oyun
18419
  fix-credit
18420
  fix-iphone
18421
+ fix-oyun
18422
  fixcredit
18423
  fixed credit
18424
  fixed footbal
18435
  fixing-credit
18436
  fixingcredit
18437
  fixiphone
18438
+ fixoyun
18439
  fj.o.g.a
18440
  fj.o.ga
18441
  fj.og.a
18460
  flat belly tonic
18461
  flat-belly-tonic
18462
  flats.web
18463
+ fleet cabinet
18464
+ fleet interior
18465
+ fleet-cabinet
18466
+ fleet-interior
18467
  fler artiklar
18468
  fler-artiklar
18469
  flex-global
18484
  floating-board
18485
  floatingboard
18486
  floridaflee
18487
+ flower store
18488
+ flower tomorrow
18489
+ flower_store
18490
+ flower-store
18491
+ flower-tomorrow
18492
+ flowers tomorrow
18493
  flowers-on-line
18494
  flowers-online
18495
+ flowers-tomorrow
18496
+ flowerstore
18497
  floxacin
18498
  fluccun
18499
  fluconazole
18596
  footwearmbt
18597
  footwears
18598
  for a article
18599
+ for a easy
18600
  for black mans
18601
  for black mens
18602
  for black womans
18773
  fortemuscle
18774
  forteparafon
18775
  forthcoming post
18776
+ forthcoming submit
18777
  forthcoming-post
18778
+ forthcoming-submit
18779
+ forthe post
18780
  fortnite aimbot
18781
  fortnite cheat
18782
  fortnite hack
18805
  forumizmit
18806
  forums.real
18807
  forums.thank
18808
+ forward moneyline
18809
  forwarding-parcel-forward
18810
  forwholesale
18811
  forwindows8
18892
  free csgo
18893
  free diamond
18894
  free download
18895
+ free ecard
18896
  free escort
18897
  free eskort
18898
  free facebook
18902
  free gay
18903
  free hack
18904
  free hip hop
18905
+ free hookup
18906
  free if you win
18907
+ free indexer
18908
  free instagram
18909
  free internation
18910
  free ios
18918
  free money
18919
  free new year
18920
  free new yr
18921
+ free nude
18922
  free number
18923
  free on-line
18924
  free online
18936
  free sex
18937
  free simple
18938
  free skins
18939
+ free snapchat
18940
  free spin link
18941
  free spins link
18942
  free strat
18943
  free super
18944
  free tarot
18945
+ free tiktok
18946
  free to surf
18947
  free too surf
18948
  free trap ins
18949
  free trial incent
18950
+ free twitter
18951
  free v buck
18952
  free visit
18953
  free watch
18971
  free-csgo
18972
  free-diamond
18973
  free-download
18974
+ free-ecard
18975
  free-escort
18976
  free-eskort
18977
  free-facebook
18984
  free-hack
18985
  free-hemp
18986
  free-hip-hop
18987
+ free-hookup
18988
+ free-indexer
18989
  free-instagram
18990
  free-internation
18991
  free-ios
19004
  free-movie
19005
  free-mp3
19006
  free-mp4
19007
+ free-nude
19008
  free-number
19009
  free-offer
19010
  free-on-line
19026
  free-sex
19027
  free-simple
19028
  free-skins
19029
+ free-snapchat
19030
  free-spin-link
19031
  free-spins-link
19032
  free-strat
19033
  free-super
19034
  free-tarot
19035
+ free-tiktok
19036
  free-trial-incent
19037
+ free-twitter
19038
  free-v-buck
19039
  free-v-bucks
19040
  free-watch
19064
  freedomevaluation
19065
  freedomreview
19066
  freedownload
19067
+ freeecard
19068
  freeescort
19069
  freeeskort
19070
  freefor.co
19071
  freefortnite
19072
  freegay
19073
  freegold
19074
+ freehookup
19075
  freehub
19076
+ freeindexer
19077
  freeinternation
19078
  freeipad
19079
  freeiphone
19097
  freemp3
19098
  freemp4
19099
  freenom.link
19100
+ freenude
19101
  freeoffer
19102
  freeonline
19103
  freepokecoin
19148
  freshreview
19149
  freshseo
19150
  freshwaterpearl
 
19151
  friday 2020
19152
  friday 2021
19153
+ friday 2022
19154
  friday michael
19155
  friday mlb
19156
  friday moncler
19161
  friday sale
19162
  friday ugg
19163
  friday watch
 
19164
  friday-2020
19165
  friday-2021
19166
+ friday-2022
19167
  friday-michael
19168
  friday-mlb
19169
  friday-moncler
19174
  friday-sale
19175
  friday-ugg
19176
  friday-watch
 
19177
  friday2020
19178
  friday2021
19179
+ friday2022
19180
  fridaymlb
19181
  fridaymoncler
19182
  fridaynba
19305
  fulgor fantastic
19306
  fulgor fantástic
19307
  fulgor-fantastic
19308
+ full crack
19309
  full download page
19310
  full length motion
19311
  full length movie
19312
  full length-motion
19313
  full movie
19314
  full porn
19315
+ full-crack
19316
+ full-film
19317
  full-house-for-rent
19318
  full-length-movie
19319
  full-movie
19320
  full-porn
19321
  full.com/watch
19322
  full4k
19323
+ fullcrack
19324
+ fullfilm
19325
  fullmovie
19326
  fullporn
19327
+ fullz info
19328
+ fullz-info
19329
+ fullzinfo
19330
  fulmalware
19331
  fun teaser with
19332
  fun-88
19408
  further-former
19409
  furworld.ru
19410
  furworld.su
19411
+ futbol barata
19412
+ fútbol barata
19413
  futbol barcelona
19414
+ futbol-barata
19415
  futbol-barcelona
19416
  futbol/forum
19417
+ futbolbarata
19418
  futbolbarcelona
19419
  futuristic-market
19420
  futuristicmarket
19513
  gamble online
19514
  gamble-online
19515
  gambleonline
19516
+ gambling boat
19517
  gambling casino
19518
  gambling game
19519
  gambling online
19520
+ gambling site
19521
  gambling-4-u
19522
  gambling-4u
19523
+ gambling-boat
19524
  gambling-casino
19525
  gambling-game
19526
  gambling-online
19527
+ gambling-site
19528
  gambling4u
19529
  gamblingcasino
19530
  gamblinggame
19531
  gamblingonline
19532
+ gamblingsite
19533
  game bong
19534
  game casino
19535
+ game gold
19536
  game ionline
19537
  game jers
19538
  game online
19539
+ game pertama
19540
  game status system
19541
  game torrent
19542
  game wiki
19545
  game-copy
19546
  game-full-online
19547
  game-game
19548
+ game-gold
19549
  game-ionline
19550
  game-jers
19551
  game-money
19552
  game-online
19553
+ game-pertama
19554
  game-torrent
19555
  game-wiki
19556
  game,arcad
19569
  gamedesigndegree
19570
  gamefullonline
19571
  gamegame
19572
+ gamegold
19573
  gameionline
19574
  gamejers
19575
  gamemoney
19624
  gaogb
19625
  gaoland
19626
  gapscent
19627
+ garansi kepuasan
19628
  garantizadas por escrito
19629
  garantizar la calidad
19630
  garantizar product
19631
  garantizar-product
19632
+ garbage domain
19633
+ garbage-domain
19634
+ garbagedomain
19635
  garcinia
19636
+ garden of this funeral
19637
  garena free
19638
  garena-free
19639
  garenafree
19660
  gau bong dore
19661
  gấu bông dore
19662
  gau-bong-dore
19663
+ gauge the potency
19664
+ gave attain
19665
+ gave succeed
19666
  gawab.com
19667
  gay cartoon
19668
  gay chat
19779
  generatingprofit
19780
  generation algorithm
19781
  generation-algorithm
 
19782
  generator 2020
19783
  generator 2021
19784
+ generator 2022
19785
  generator-2020
19786
  generator-2021
19787
+ generator-2022
19788
  generator2020
19789
  generator2021
19790
+ generator2022
19791
  generatorpro
19792
  generic albenda
19793
  generic albenza
19816
  genuinely good thing
19817
  genuinely great info
19818
  genuinely health
19819
+ genuinely interesting point
19820
  genuinely very help
19821
  genuinely-fantas
19822
  genuinely-fastidious
19853
  get bytecoin
19854
  get face
19855
  get fastidious
19856
+ get free gem
19857
  get fuck
19858
  get hold this
19859
+ get into touch
19860
  get know how
19861
  get know-how
19862
  get litecoin
19874
  get tthe
19875
  get tthis
19876
  get v buck
19877
+ get you winning
19878
  get yours here
19879
  get_rid
19880
  get_started
19888
  get-face
19889
  get-fantastic
19890
  get-fastidious
19891
+ get-free-gem
19892
  get-fuck
19893
  get-hermes
19894
  get-know-how
19909
  get-the-answer
19910
  get-tinder
19911
  get-translate
19912
+ get-u-promo
19913
  get-widget
19914
+ get-you-winning
19915
  getaloan
19916
  getastyle
19917
  getbitcoin
19942
  getting-thought
19943
  gettingknowledge
19944
  gettranslate
19945
+ getupromo
19946
  getwidget
19947
  getyou.asp
19948
  gezichtsbehand
19996
  giftsclick
19997
  giftsingapore
19998
  giftssingapore
19999
+ giga porn
20000
+ giga-porn
20001
  gigantix.co
20002
+ gigaporn
20003
  gikves
20004
  gilet moncler
20005
  gilet-moncler
20177
  giveaway-win
20178
  giveaway! win
20179
  gives fastidious
20180
+ gives good understand
20181
+ gives great understand
20182
  gives quality base
20183
  gives-fastidious
20184
  gkhk
20215
  glubokoye glot
20216
  glubokoye-glot
20217
  glucophage
20218
+ glueclosamine
20219
  glutamina
20220
  glyburide
20221
  gma1l
20461
  goog even
20462
  goog luck
20463
  goog-luck
20464
+ google arama
20465
  google bind
20466
  google click
20467
  google for-
20483
  google solution
20484
  google us
20485
  google voice pva
20486
+ google-arama
20487
  google-bind
20488
  google-click
20489
  google-fuck
20626
  gooseyouth
20627
  gopgle
20628
  goping to
20629
+ gordura eliminar
20630
+ gordura foraminal
20631
+ gordura retro
20632
+ gordura subcut
20633
+ gordura trans
20634
+ gordura unto
20635
+ gordura visceral
20636
+ gordura-eliminar
20637
+ gordura-foraminal
20638
+ gordura-retro
20639
+ gordura-subcut
20640
+ gordura-trans
20641
+ gordura-unto
20642
+ gordura-visceral
20643
+ gorgeous bath design
20644
+ gorgeous bathroom design
20645
  gorgeous elegant
20646
  gorgeous escort
20647
  gorgeous eskort
20650
  gorgeous-eskort
20651
  gorgeousescort
20652
  gorgeouseskort
20653
+ gorod top
20654
+ gorod-top
20655
+ gorod.top
20656
  gosgov
20657
  goshop.
20658
  gossip posted
20683
  gotta favourite
20684
  gotten the therap
20685
  gotten very good thing
20686
+ governments job
20687
+ governments-job
20688
  gowatchs
20689
  gown love
20690
  gown online
20728
  gran calidad
20729
  gran experiencia dentro
20730
  gran experiencia en
20731
+ gran fiabilidad
20732
  gran flexibilidad
20733
  gran-calidad
20734
  grand opening giveaway
20749
  granny-porn
20750
  grannyporn
20751
  grateest
20752
+ gratifying operate
20753
+ gratifying-operate
20754
  gratis coin
20755
  gratis online
20756
  gratis sex
21009
  growth-hormone
21010
  growthhormone
21011
  grsentas
21012
+ gru movie
21013
+ gru-movie
21014
+ gru2movie
21015
+ grumovie
21016
  gruppmeddelanden
21017
  gruppo gucci
21018
  gruppo-gucci
21160
  gunler bayim
21161
  gunler-bayim
21162
  guns for sale
21163
+ guns online
21164
+ guns-online
21165
+ gunsonline
21166
  gunstig kaufen
21167
  günstig kaufen
21168
  gunstig-kaufen
21184
  guys-porn
21185
  guysporn
21186
  guyys
21187
+ guzel bir sayfa
21188
+ gymgrossisten
21189
  gyslera
21190
  gⲟ
21191
 
21197
  habitof
21198
  hack $
21199
  hack 123
 
21200
  hack 2020
21201
  hack 2021
21202
+ hack 2022
21203
  hack android
21204
  hack apk
21205
  hack blog
21218
  hack generat
21219
  hack get
21220
  hack glitch
21221
+ hack google
21222
  hack instagram
21223
  hack instant
21224
  hack ios
21238
  hack web
21239
  hack xyz
21240
  hack-123
 
21241
  hack-2020
21242
  hack-2021
21243
+ hack-2022
21244
  hack-android
21245
  hack-apk
21246
  hack-blog
21262
  hack-generat
21263
  hack-get
21264
  hack-glitch
21265
+ hack-google
21266
  hack-instagram
21267
  hack-instant
21268
  hack-ios
21288
  hack.blog
21289
  hack.web
21290
  hack123
 
21291
  hack2020
21292
  hack2021
21293
+ hack2022
21294
  hackandroid
21295
  hackapk
21296
  hackasphalt
21306
  hackface
21307
  hackfb
21308
  hackgem
21309
+ hackgoogle
21310
  hacking 123
21311
  hacking-123
21312
  hacking123
21440
  haohao
21441
  happens you are deal
21442
  happy and ready
21443
+ happy birthday gift
21444
+ happy birthday image
21445
+ happy christmas gift
21446
+ happy christmas image
21447
  happy fresh year
21448
  happy tht
21449
+ happy-birthday-gift
21450
+ happy-birthday-image
21451
+ happy-christmas-gift
21452
+ happy-christmas-image
21453
+ happy-fresh-year
21454
  happybirthday1
21455
+ happybirthdaygift
21456
+ happybirthdayimage
21457
+ happychristmasgift
21458
  happychristmasimage
21459
  haraka black
21460
  haraka-black
21470
  hardyhuppari
21471
  hardyjean
21472
  harga emas
21473
+ harga jasa
21474
  harga plakat
21475
  harga-emas
21476
+ harga-jasa
21477
  harga-plakat
21478
  harnessedthem
21479
  hartmann repeated
21538
  hawks-jers
21539
  hawksjers
21540
  hay 100 localidad
21541
+ hayat bilgiler
21542
+ hayat-bilgiler
21543
+ hayatbilgiler
21544
 
21545
  hcg boost
21546
  hcg-boost
21573
  hdzfilm
21574
  he contact admin
21575
  he is discussing online
21576
+ he isnt
21577
  heading out throughout
21578
  headphone power cord
 
21579
  headset 2020
21580
  headset 2021
21581
+ headset 2022
21582
  headset-2020
21583
  headset-2021
21584
+ headset-2022
21585
  headset2020
21586
  headset2021
21587
+ headset2022
21588
  healing-article
21589
  healingindu
21590
  health advis
21618
  healthrelated
21619
  healthstock
21620
  healthsuppl
21621
+ healthypple
21622
+ hearing aid near
21623
+ hearing aids near
21624
+ hearing-aid-near
21625
+ hearing-aids-near
21626
  heart food consult
21627
  heart site
21628
  heart-food-consult
21630
  hearted web
21631
  hearted-web
21632
  heartsite
21633
+ hed crypto
21634
+ hed-crypto
21635
  hedge fund
21636
  hedge-fund
21637
  heel ped
21700
  hello, its good
21701
  hello, its me
21702
  hello, please suggest
21703
+ hello, this article
21704
+ hello, this blog
21705
+ hello, this page
21706
+ hello, this post
21707
+ hello, this web
21708
+ hello,my
21709
+ hello,this
21710
+ hello! this article
21711
+ hello! this blog
21712
+ hello! this page
21713
+ hello! this post
21714
+ hello! this web
21715
  hello!my
21716
+ hello!this
21717
+ hello. this article
21718
+ hello. this blog
21719
+ hello. this page
21720
+ hello. this post
21721
+ hello. this web
21722
  hello.this
21723
  helloadmin
21724
  hellobonus
21778
  hence choose
21779
  hentai
21780
  heook
21781
+ hepatitis b depression
21782
  hepcinat
21783
  her escort
21784
  her eskort
21968
  hi, it’s me
21969
  hi, its good
21970
  hi, its me
21971
+ hi, this article
21972
+ hi, this blog
21973
+ hi, this page
21974
+ hi, this post
21975
+ hi, this web
21976
  hi, yup
21977
+ hi,this
21978
+ hi! this article
21979
+ hi! this blog
21980
+ hi! this page
21981
+ hi! this post
21982
+ hi! this web
21983
+ hi!this
21984
+ hi. this article
21985
+ hi. this blog
21986
+ hi. this page
21987
+ hi. this post
21988
+ hi. this web
21989
+ hi.this
21990
+ hidra club
21991
+ hidra onion
21992
+ hidra rus
21993
+ hidra ruz
21994
+ hidra-club
21995
+ hidra-onion
21996
+ hidra-rus
21997
+ hidra-ruz
21998
+ hidraclub
21999
+ hidraonion
22000
+ hidrarus
22001
+ hidraruz
22002
  hidro-ponik
22003
  hidroponik
22004
  hien nay
22280
  hollisteruk
22281
  hollywood-online
22282
  hollywoodonline
22283
+ holo coin
22284
+ holo yorum
22285
+ holo-coin
22286
+ holo-yorum
22287
+ holocoin
22288
+ holoyorum
22289
  home online
22290
  home-based
22291
  home-loan
22348
  hoodiecheap
22349
  hoody-cheap
22350
  hoodycheap
22351
+ hookup now
22352
+ hookup-now
22353
  hookup0
22354
  hookup1
22355
  hookup2
22360
  hookup7
22361
  hookup8
22362
  hookup9
22363
+ hookupnow
22364
  hoolgain
22365
  hoolz
22366
+ hoop|hoop
22367
  hootel
22368
  hoow is
22369
  hop dong kinh
22376
  hormonio-masculin
22377
  horoscopes
22378
  horoskop
22379
+ horrible credit
22380
+ horrible-credit
22381
  horsesimul
22382
  host seller
22383
  host-file
22502
  houseforsale
22503
  housesforsale
22504
  housing final even
22505
+ houur
22506
  hover-glide
22507
  hover-shop
22508
  hoverboard 360
22549
  how would certain
22550
  how_do
22551
  howdy just wanted
22552
+ howdy superb
22553
+ howdy-superb
22554
  however before
22555
  however good topic
22556
  however great topic
22613
  httpshttp
22614
  httpswww
22615
  httpwww
22616
+ huawei yeni
22617
+ huawei-yeni
22618
  huay-today
22619
  huaytoday
22620
  huge 100%
22657
  hut,hang
22658
  hut.hang
22659
  hyclate
22660
+ hydra club
22661
+ hydra onion
22662
+ hydra rus
22663
+ hydra ruz
22664
+ hydra-club
22665
+ hydra-onion
22666
+ hydra-rus
22667
+ hydra-ruz
22668
+ hydraclub
22669
+ hydraonion
22670
+ hydrarus
22671
+ hydraruz
22672
  hydrocodone
22673
  hydroponicsys
22674
  hydroxatone
22720
  i'd hump to
22721
  i'll bookmark and
22722
  i'm bookmarking and
22723
+ i'm horny
22724
  i'm will soon
22725
  i'mnot
22726
  i'v got
22730
  i’d hump to
22731
  i’ll bookmark and
22732
  i’m bookmarking and
22733
+ i’m horny
22734
  i’m will soon
22735
  i’mn
22736
  i’ts
22743
  iamimport
22744
  icon/set
22745
  icons/set
22746
+ icracks.
22747
  idanmark
22748
  idea for your blog
22749
  idea for your page
22765
  idm crack
22766
  idm-crack
22767
  idmcrack
22768
+ if depression gets
22769
  if like it
22770
  if you're.
22771
  if you’re.
22814
  illusion-origami
22815
  im grateful
22816
  im happy
22817
+ im horny
22818
  im looking
22819
  im not
22820
  im please
22890
  įmonių pardavimas
22891
  imoniu-pardavimas
22892
  impact knowledge of
22893
+ impending article
22894
+ impending blog
22895
+ impending page
22896
+ impending post
22897
+ impending site
22898
+ impending web
22899
  implanty
22900
  impoirtant
22901
  imporrtant
22903
  import games off
22904
  important be know
22905
  important infos
 
22906
  important-in-2020
22907
  important-in-2021
22908
+ important-in-2022
22909
  important-infos
22910
  impregnacji
22911
  impressive article
22937
  imptortant
22938
  imqge
22939
  imtmdiae
22940
+ in a a lot
22941
  in a ll
22942
  in blog commenting
22943
  in delicious
23071
  individual friendly
23072
  individual pleasant
23073
  individual stuffs
23074
+ individual their
23075
  individual-friendly
23076
  individual-pleasant
23077
  individual-stuffs
23078
+ individuals their
23079
  indo blackjack
23080
  indo casino
23081
  indo-blackjack
23084
  indocasino
23085
  indonesia blackjack
23086
  indonesia casino
23087
+ indonesia slot
23088
  indonesia-blackjack
23089
  indonesia-casino
23090
+ indonesia-slot
23091
  indonesiablackjack
23092
  indonesiacasino
23093
+ indonesiaslot
23094
  indownload
23095
  indre pengemark
23096
  indre-pengemark
23119
  infected-crash
23120
  infinity-2
23121
  infinity2
23122
+ inflatable castle rent
23123
+ inflatable house rent
23124
+ inflatable-castle-rent
23125
+ inflatable-house-rent
23126
+ inflatablecastlerent
23127
+ inflatablehouserent
23128
  influenza picture
23129
  info ,
23130
  info !
23132
  info approximate
23133
  info base
23134
  info for my mission
23135
+ info is invaluable
23136
  info is priceless
23137
  info is worth
23138
  info you
23150
  info/tag
23151
  info/user
23152
  info/view
23153
+ info>>>
23154
  info0.site
23155
  info0site
23156
  info1.site
23273
  injection fact
23274
  injection-fact
23275
  injectionfact
23276
+ injuries attorn
23277
  injuries insur
23278
  injuries lawyer
23279
+ injuries-attorn
23280
  injuries-insur
23281
  injuries-lawyer
23282
+ injuriesattorn
23283
  injuriesinsur
23284
  injurieslawyer
23285
+ injury attorn
23286
  injury lawyer
23287
+ injury-attorn
23288
  injury-lawyer
23289
+ injuryattorn
23290
  injurylawyer
23291
  inn accordance
23292
  inna cena
23327
  insdier
23328
  inseminacion artificial
23329
  inseminacion-artificial
23330
+ insert my data
23331
+ insert your data
23332
  inside an setting
23333
  inside reputation
23334
  inside-reputation
23354
  insta sex
23355
  insta-appraisal
23356
  insta-cheat
23357
+ insta-fab
23358
  insta-fuck
23359
  insta-kink
23360
  insta-sex
23373
  instagram privado
23374
  instagram private
23375
  instagram shop
23376
+ instagram sifresiz
23377
+ instagram şifresiz
23378
  instagram story view
23379
  instagram takipci
23380
  instagram takipçi
23389
  instagram-privado
23390
  instagram-private
23391
  instagram-shop
23392
+ instagram-sifresiz
23393
  instagram-story-view
23394
  instagram-takipci
23395
  instagram-trick
23414
  instant cash
23415
  instant loan
23416
  instant pay
 
23417
  instant traff
23418
  instant web
23419
  instant week
23422
  instant-cash
23423
  instant-loan
23424
  instant-pay
 
23425
  instant-traff
23426
  instant-web
23427
  instant-week
23550
  internetmarket
23551
  internetmosque
23552
  internetowe
23553
+ internetowy
23554
  internetpage
23555
  internetparish
23556
  internetpoker
23668
  ios dapps
23669
  ios spoof
23670
  ios-spoof
23671
+ ip stresser
23672
+ ip-stresser
23673
  ip.ideal
23674
  ipad tablet
23675
  ipad-1
23756
  ipodsuppl
23757
  iporn
23758
  iprofit
23759
+ ipstresser
23760
+ ipsum decide
23761
  ipアドレス
23762
  iq option
23763
  iq science
23778
  irresistible-web
23779
  is about advert
23780
  is as nicely
23781
+ is consice
23782
  is goping
23783
  is great article
23784
  is great blog
23789
  is my page
23790
  is my web
23791
  is seo
23792
+ is some inspirational
23793
  is thhe
23794
  is-goping
23795
  is-now-available
23814
  isn”t
23815
  isn`t
23816
  isnít
 
23817
  isotretinoine
23818
  isseo
23819
  issue with your site
23841
  it duvet
23842
  it for posting
23843
  it for the post
23844
+ it isnt
23845
  it oakley
23846
  it ordeno
23847
  it ordenó
23937
  itt is
23938
  itt was
23939
  itzshipd
23940
+ ive been go
23941
  iwant2
23942
  iwc brand
23943
  iwc-brand
23981
  jackenonline
23982
  jackenwest
23983
  jackeonline
 
23984
  jacket 2020
23985
  jacket 2021
23986
+ jacket 2022
23987
  jacket canad
23988
  jacket jap
23989
  jacket jp
23990
  jacket out
23991
  jacket sale
23992
  jacket sunglass
 
23993
  jacket-2020
23994
  jacket-2021
23995
+ jacket-2022
23996
  jacket-canad
23997
  jacket-jap
23998
  jacket-jp
23999
  jacket-out
24000
  jacket-sale
24001
  jacket-sunglass
 
24002
  jacket2020
24003
  jacket2021
24004
+ jacket2022
24005
  jacketcanad
24006
  jacketout
 
24007
  jackets 2020
24008
  jackets 2021
24009
+ jackets 2022
24010
  jackets jap
24011
  jackets jp
24012
  jackets out
24013
  jackets sale
 
24014
  jackets-2020
24015
  jackets-2021
24016
+ jackets-2022
24017
  jackets-for-kids
24018
  jackets-for-men
24019
  jackets-for-wom
24021
  jackets-jp
24022
  jackets-out
24023
  jackets-sale
 
24024
  jackets2020
24025
  jackets2021
24026
+ jackets2022
24027
  jacketsale
24028
  jacketsforkids
24029
  jacketsformen
24061
  jacobsjp
24062
  jacobspurse
24063
  jacobsuk
24064
+ jadi maksimum
24065
  jagody acai
24066
  jagody-acai
24067
  jagowho
24136
  japonesa tatuage
24137
  japonesa-tatuage
24138
  japonesatatuage
24139
+ jasa pembuatan
24140
+ jasa-pembuatan
24141
  jassen dames
24142
  jassen neder
24143
  jassen out
24147
  jassendames
24148
  jassenneder
24149
  jassenout
24150
+ jayngarl
24151
  jazz jers
24152
  jazz-jers
24153
  jazzjers
24315
  job on the page
24316
  job on the site
24317
  job on the web
24318
+ job search engine
24319
+ job search site
24320
  job usa
24321
  job-mom
24322
+ job-search-engine
24323
+ job-search-site
24324
  job-usa
24325
  jobs mom
24326
  jobs usa
24327
  jobs-mom
24328
  jobs-usa
24329
+ jobsearchengine
24330
+ jobsearchsite
24331
  jogadore assiduos
24332
  jogadore assíduos
24333
  jogadore-assiduos
24355
  jointpain
24356
  jojobet
24357
  joker casino
24358
+ joker gaming
24359
+ joker slot
24360
  joker-123
24361
  joker-casino
24362
+ joker-gaming
24363
+ joker-slot
24364
  joker123
24365
  jokercasino
24366
  jokerfull
24367
+ jokerslot
24368
  joma jewelery
24369
  joma jewellery
24370
  joma jewelry
24418
  jordanbrand
24419
  jordangamma
24420
  jordangrise
24421
+ jordanian bookish
24422
  jordankicks
24423
  jordanmilan
24424
  jordannoir
24482
  juanjuan
24483
  judi blackjack
24484
  judi casino
24485
+ judi freebet
24486
  judi online
24487
  judi poker
24488
  judi roulette
24489
+ judi slot
24490
  judi-blackjack
24491
  judi-casino
24492
+ judi-freebet
24493
  judi-online
24494
  judi-poker
24495
  judi-roulette
24496
+ judi-slot
24497
  judiblackjack
24498
  judicasino
24499
  judionline
24524
  just cetirizine
24525
  just like hypno
24526
  just saying you
24527
+ just subscribe
24528
  just wanna
24529
  just-book-mark
24530
  just-cetirizine
24531
+ just-subscribe
24532
  just-wanna
24533
  justcan do
24534
  justcetirizine
24642
  karuteie
24643
  kasino
24644
  kassino
24645
+ kasyno online
24646
+ kasyno-online
24647
  kat.h.l.e.en
24648
  kat.h.l.ee.n
24649
  kat.h.l.een
24681
  kawaiireview
24682
  kawastrefa
24683
  kazino
24684
+ keamanan data
24685
+ keamanan-data
24686
  keen of read
24687
  keep blogging!
24688
  keep on blogging
24706
  kensingtonparka
24707
  keo nha cai
24708
  kèo-bóng
24709
+ kepuasan konsumen
24710
  kerja hotel
24711
  kerja-hotel
24712
  kerjahotel
24741
  khẩu trang
24742
  khau-trang
24743
  khautrang
24744
+ khong web
24745
+ không web
24746
+ khong-web
24747
+ khongweb
24748
  khttp
24749
  khumbu north
24750
  khumbu-north
24771
  kidpantie
24772
  kidpanty
24773
  kids baby
24774
+ kids massage
24775
  kids nike
24776
  kids out
24777
  kids ugg
24778
  kids-baby
24779
+ kids-massage
24780
  kids-nike
24781
  kids-ugg
24782
  kidsnike
24807
  kindle-cash
24808
  kindlecash
24809
  king hack
24810
+ king pharm
24811
  king slot
24812
  king-hack
24813
+ king-pharm
24814
  king-slot
24815
  kinghack
24816
+ kingpharm
24817
  kinh doanh
24818
  kinh-doanh
24819
  kinhdoanh
24947
  kodekupon
24948
  kolay bir web
24949
  kolay-bir-web
24950
+ kolbex.pt
24951
  kollagen intensiv
24952
  kollagen-intensiv
24953
+ koltuk yikama
24954
+ koltuk yıkama
24955
+ koltuk-yikama
24956
  kombat hack
24957
  kombat x hack
24958
  kombat-hack
24968
  konforlu secenek
24969
  konforlu seçenek
24970
  konforlu-secenek
24971
+ kong izle
24972
+ kong-izle
24973
  konkurs
24974
  konopiami indyjskimi
24975
  konopiami-indyjskimi
24997
  koop-dsqu
24998
  koopdsqu
24999
  koopsted
25000
+ kop steroid
25001
+ köp steroid
25002
+ kop-steroid
25003
  kope jassen
25004
  kope-jassen
25005
  kopejassen
25006
+ kopen growshop
25007
+ kopen-growshop
25008
  kopfhoerer
25009
  kopia-zapasowa
25010
  kor out
25124
  kreddit
25125
  kreddyt
25126
  kreddyyt
25127
+ kredi yonetim
25128
+ kredi yönetim
25129
+ kredi-yonetim
25130
  kredit
25131
+ krediyonetim
25132
  kredyt
25133
  kredyyt
25134
+ kripto borsasi
25135
+ kripto egitim
25136
+ kripto eğitim
25137
+ kripto para
25138
+ kripto-borsasi
25139
+ kripto-egitim
25140
+ kripto-para
25141
+ kriptopara
25142
  kristi longchamp
25143
  kristi-longchamp
25144
  kristilongchamp
25145
  krossoverov
25146
  ku42.
25147
+ kuat termurah
25148
+ kuat-termurah
25149
+ kuattermurah
25150
  kugelbahn
25151
  kult und genuss
25152
  kulturtasche habe
25170
  kurs-yevro
25171
  kurta online
25172
  kurta-online
25173
+ kurumsal web
25174
+ kurumsal-web
25175
  kussin hartmann
25176
  kussin-hartmann
25177
  kussinhartmann
25269
  landingpage
25270
  landslagstroja
25271
  landslagströja
25272
+ lang crypto
25273
+ lang-crypto
25274
  lap lap
25275
  lap-lap
25276
  laplap
25407
  laurentsandal
25408
  laurenuk
25409
  lavado de dinero
25410
+ law run from
25411
  lawful page
25412
  lawful-page
25413
  lawoffice.net
25427
  layout look great
25428
  layout of your blog
25429
  layout of your page
25430
+ layout of your site
25431
+ layout of your web
25432
  layout-look-great
25433
  layout...?
25434
 
25449
  leagle porn
25450
  leagle-porn
25451
  leaked1
 
25452
  leaks-2020
25453
  leaks-2021
25454
+ leaks-2022
25455
  learn about keto
25456
  learn about this blog
25457
  learn about this issue
25473
  learn+health
25474
  learnface
25475
  learnhelp
25476
+ learning speaking
25477
  learningxchange
25478
  learnpain
25479
  learnpianohere
25490
  lebron-shoe
25491
  lebronshoe
25492
  lebronxshoe
25493
+ lechenie narkomani
25494
+ lechenie-narkomani
25495
  lechit narkomaniy
25496
  lechit-narkomaniy
25497
  led thumb
25508
  legal cash
25509
  legal hack
25510
  legal kratom
25511
+ legal leaf offer
25512
  legal porn
25513
+ legal sport
25514
  legal steroid
25515
+ legal thc product
25516
  legal-bud
25517
  legal-cash
25518
  legal-hack
25519
  legal-kratom
25520
+ legal-leaf-offer
25521
  legal-porn
25522
+ legal-sport
25523
  legal-steroid
25524
+ legal-thc-product
25525
  legalbud
25526
  legalcash
25527
  legalhack
25528
+ legalized sport
25529
+ legalized-sport
25530
+ legalsport
25531
  legalsteroid
25532
  legend hack
25533
  legend-hack
25551
  legit pharm
25552
  legit script
25553
  legit way
 
25554
  legit-2020
25555
  legit-2021
25556
+ legit-2022
25557
  legit-drug
25558
  legit-graph
25559
  legit-pharm
25560
  legit-script
25561
  legit-way
 
25562
  legit2020
25563
  legit2021
25564
+ legit2022
25565
  legitdrug
25566
  legitgraph
25567
  legitimate drug
25661
  level market
25662
  level-50
25663
  level-market
25664
+ levelbusiness
25665
  levelmarket
25666
  levels dissertation
25667
  levels-dissertation
25693
  librarys.jsp
25694
  librarys.php
25695
  librium
25696
+ license key cheap
25697
+ license key free
25698
+ license-key-cheap
25699
+ license-key-free
25700
  licensed appliance
25701
  licensed-appliance
25702
  licenzija
25705
  lid-pants
25706
  lies sound truth
25707
  life sex
25708
+ life teaching
25709
  life-sex
25710
+ life-teaching
25711
  life.acne
25712
  life.cert
25713
  lifeinsur
25728
  ligne médicament
25729
  ligne-medicament
25730
  ligne-médicament
25731
+ ligopartner
25732
  liht therap
25733
  liht-therap
25734
  like & share
25748
  like your blog
25749
  like your video
25750
  like your web
25751
+ liked your blog
25752
  likes on facebook
25753
  likes on instagram
25754
  likes on snapchat
25768
  liliporno
25769
  limit hold'em
25770
  limit hold’em
25771
+ limited free gem
25772
  limited jers
25773
+ limited-free-gem
25774
  limited-japan
25775
  limited-jers
25776
  limited-jp
25793
  link change arrange
25794
  link competence
25795
  link creati
25796
+ link dapatkan
25797
  link directory
25798
  link download
25799
  link exchang
25800
  link issue
25801
  link juice
25802
+ link logger
25803
  link market
25804
  link pyramid
25805
  link redirect
25813
  link to your online
25814
  link track
25815
  link vault
25816
+ link_go
25817
  link-bait
25818
  link-build
25819
  link-camp
25820
  link-click
25821
  link-competence
25822
  link-creati
25823
+ link-dapatkan
25824
  link-directory
25825
  link-download
25826
  link-exchang
25827
+ link-go
25828
  link-issue
25829
  link-juice
25830
+ link-logger
25831
  link-market
25832
  link-pyramid
25833
  link-redirect
25846
  linkcamp
25847
  linkclick
25848
  linkdirect
25849
+ linkedin0
25850
+ linkedin1
25851
+ linkedin2
25852
+ linkedin3
25853
+ linkedin4
25854
+ linkedin5
25855
+ linkedin6
25856
+ linkedin7
25857
+ linkedin8
25858
+ linkedin9
25859
  linkexchang
25860
  linking camp
25861
  linking issue
25872
  linkissue
25873
  linkjuice
25874
  linklegend
25875
+ linklogger
25876
  linkman
25877
  linkmarket
25878
  linkpyramid
25906
  lip-filler
25907
  lipi=urn
25908
  lipitor
25909
+ liqulr
25910
  lirtle effort
25911
  lisinopril
25912
  lisseur-pascher
25921
  listen-news
25922
  listen-to-youtube
25923
  listentoyoutube
25924
+ listing from google
25925
  listy,
25926
  lite/wbb
25927
  lite1/wbb
25953
  livesex
25954
  livesmale
25955
  living by google
25956
+ living pores
25957
+ living-pores
25958
+ livingpores
25959
+ livingsocial discount
25960
  livro advert
25961
  livro marketing
25962
  livro-advert
25993
  loan fast
25994
  loan lender
25995
  loan online
25996
+ loan payday
25997
  loan-canad
25998
  loan-cash
25999
  loan-comp
26001
  loan-fast
26002
  loan-lender
26003
  loan-online
26004
+ loan-payday
26005
  loan.bid
26006
  loan.co
26007
  loan.in
26008
  loan.net
26009
+ loan|
26010
  loanalys
26011
  loancash
26012
  loancomp
26014
  loanfast
26015
  loanlender
26016
  loanonline
26017
+ loanpayday
26018
  loans canad
26019
  loans compan
26020
  loans fast
26021
  loans online
26022
+ loans payday
26023
  loans-canad
26024
  loans-compan
26025
  loans-direct
26026
  loans-fast
26027
  loans-online
26028
+ loans-payday
26029
  loans.co
26030
  loans.in
26031
  loans.net
26032
  loans.xyz
26033
+ loans|
26034
  loans1
26035
  loans2
26036
  loans3
26040
  loansdirect
26041
  loansfast
26042
  loansonline
26043
+ loanspayday
26044
  locate-cell-phone
26045
  locatecellphone
26046
  lociraj
26055
  log/?
26056
  logcabins
26057
  login uk
26058
+ login wap
26059
  login widget
26060
  login-uk
26061
+ login-wap
26062
  login-widget
26063
  login.asp
26064
  login.cfm
26133
  long-lasting-duration
26134
  long-penis
26135
  longafter
 
26136
  longchamp 2020
26137
  longchamp 2021
26138
+ longchamp 2022
26139
  longchamp aus
26140
  longchamp bag
26141
  longchamp doctor
26158
  longchamp uk
26159
  longchamp yama
26160
  longchamp_
 
26161
  longchamp-2020
26162
  longchamp-2021
26163
+ longchamp-2022
26164
  longchamp-aus
26165
  longchamp-doctor
26166
  longchamp-fabric
26187
  longchamp.htm
26188
  longchamp.jsp
26189
  longchamp.php
 
26190
  longchamp2020
26191
  longchamp2021
26192
+ longchamp2022
26193
  longchampaus
26194
  longchampbag
26195
  longchampdoctor
26244
  look more page
26245
  look more post
26246
  look more web
26247
+ look my new
26248
  look on-line
26249
  look paying homage
26250
  look your article
26288
  los-replic
26289
  lose at casino
26290
  lose belly fat
26291
+ lose virginity
26292
  lose weight motivat
26293
  lose weight simply
26294
  lose-belly-fat
26295
+ lose-virginity
26296
  lose-weight
26297
  losers beat
26298
  losers outnumbered
26300
  losers-outnumbered
26301
  loseweight
26302
  losing maany
26303
+ losing virginity
26304
+ losing-virginity
26305
  losreplic
26306
  loss weight
26307
  loss-weight
26341
  lottie maxi
26342
  lottie-maxi
26343
  lottiemaxi
26344
+ lotto power
26345
+ lotto_
26346
+ lotto-power
26347
  lotto-tip
26348
+ lottopower
26349
  lottotip
26350
  loubiton
26351
  louboutin bianca
26420
  louisvuit.
26421
  louisvuitton
26422
  louiswuitton
26423
+ lova begravning
26424
+ lova-begravning
26425
+ lovabegravning
26426
  love (:
26427
+ love =)
26428
  love connect
26429
  love cougar
26430
  love perfect
26508
  lpgn-laminin
26509
  lpgn-moldova
26510
  lpgn-product
26511
+ ltd. electric
26512
  ltongealp
26513
  ltonser
26514
  lub cbd
26518
  luck jers
26519
  luck-jers
26520
  luckjers
26521
+ lucky me i found
26522
  lucky patcher
26523
  lucky-patcher
26524
  luckypatcher
26612
  lvreplic
26613
  lvsale
26614
  lvuk
26615
+ lyrica for
26616
+ lyrica price
26617
+ lyrica-for
26618
+ lyrica-price
26619
  lyrica.to
26620
  lyrica4u
26621
+ lyricafor
26622
+ lyricaprice
26623
  lⲟ
26624
 
26625
 
26693
  magicmoncler
26694
  magister kesehatan
26695
  magister-kesehatan
26696
+ magnetic marketing
26697
+ magnetic-marketing
26698
+ magneticmarketing
26699
  magnificent article
26700
  magnificent blog
26701
  magnificent good
26810
  make blogging
26811
  make comment due
26812
  make csgo
26813
+ make good job
26814
  make good using
26815
  make hemp
26816
  make may stay
26981
  many extra popular
26982
  many-utilizes
26983
  manyy
26984
+ mapovych aplikaci
26985
+ mapovych-aplikaci
26986
  maqnage
26987
  maquiagem para
26988
  maquiagem profes
27023
  mariages simplif
27024
  mariages-simplif
27025
  marihuana
27026
+ marijuana attorn
27027
  marijuana bene
27028
  marijuana etf
27029
  marijuana fact
27030
  marijuana lawyer
27031
  marijuana sample
27032
  marijuana strain
27033
+ marijuana-attorn
27034
  marijuana-bene
27035
  marijuana-etf
27036
  marijuana-fact
27073
  market-xchange
27074
  market.financ
27075
  marketexchang
27076
+ marketing agency
27077
  marketing blog
27078
  marketing book
27079
  marketing digital
27080
+ marketing effort
27081
  marketing exchang
27082
  marketing funnel
27083
  marketing hero
27084
+ marketing letter
27085
  marketing mark
27086
  marketing monst
27087
  marketing online
27088
  marketing platform
27089
  marketing prof
27090
  marketing samu
27091
+ marketing search
27092
  marketing service
27093
  marketing software
27094
  marketing specialist
27095
+ marketing strategy
27096
  marketing tip
27097
  marketing video clip
27098
  marketing with social
27099
  marketing with video
27100
  marketing xchange
27101
  marketing-advert
27102
+ marketing-agency
27103
  marketing-and-advert
27104
  marketing-approach
27105
  marketing-blog
27106
  marketing-book
27107
  marketing-digital
27108
+ marketing-effort
27109
  marketing-exchang
27110
  marketing-funnel
27111
  marketing-hero
27112
+ marketing-letter
27113
  marketing-mark
27114
  marketing-mix
27115
  marketing-monst
27117
  marketing-platform
27118
  marketing-prof
27119
  marketing-samu
27120
+ marketing-search
27121
  marketing-service
27122
  marketing-software
27123
  marketing-specialist
27124
+ marketing-strategy
27125
  marketing-tip
27126
  marketing-video-clip
27127
  marketing-xchange
27136
  marketingplatform
27137
  marketingprof
27138
  marketingsamu
27139
+ marketingsearch
27140
  marketingservice
27141
  marketingtip
27142
  marketingxchange
27210
  massage erotic
27211
  massage massage
27212
  massage velvet
 
27213
  massage-close
27214
  massage-envy
27215
  massage-erotic
27276
  mastery-series
27277
  mastery-since
27278
  mastery-under
27279
+ masturbate her
27280
+ masturbate him
27281
+ masturbate the
27282
+ masturbate-her
27283
+ masturbate-him
27284
+ masturbate-the
27285
+ masturbates her
27286
+ masturbates him
27287
+ masturbates the
27288
+ masturbates-her
27289
+ masturbates-him
27290
+ masturbates-the
27291
+ masturbating her
27292
+ masturbating him
27293
+ masturbating the
27294
+ masturbating-her
27295
+ masturbating-him
27296
+ masturbating-the
27297
  mat luoi
27298
  mặt lưỡi
27299
  mat-luoi
27309
  material-stylish
27310
  material, regards
27311
  matiion
27312
+ matka gambl
27313
+ matka online
27314
+ matka play
27315
+ matka-gambl
27316
+ matka-online
27317
+ matka-play
27318
+ matkaonline
27319
+ matkaplay
27320
  matluoi
27321
  matters on the web
27322
  matthews jers
27324
  matthewsjers
27325
  mattress clothes
27326
  matural
27327
+ maverick movie
27328
+ maverick-movie
27329
+ maverickmovie
27330
  max griffey
27331
  max sale
27332
  max-griffey
27560
  medias-sociaux
27561
  medical marijuana
27562
  medical-marijuana
27563
+ medicament info
27564
+ medicament-info
27565
  medicarefraud
27566
  medicinez
27567
  medicinz
27649
  meja casino
27650
  meja-casino
27651
  mejacasino
27652
+ mejor calidad
27653
+ mejor credito
27654
+ mejor crédito
27655
+ mejor prestamo
27656
+ mejor préstamo
27657
  mejor servicio
27658
+ mejor-calidad
27659
+ mejor-credito
27660
+ mejor-prestamo
27661
  mejor-servicio
27662
+ mejorcredito
27663
  mejores booster
27664
+ mejores credito
27665
+ mejores crédito
27666
+ mejores prestamo
27667
+ mejores préstamo
27668
  mejores-booster
27669
+ mejores-credito
27670
+ mejores-prestamo
27671
+ mejorescredito
27672
+ mejoresprestamo
27673
+ mejorprestamo
27674
  melatonin
27675
  melhor preco
27676
  melhor preço
27712
  membership.jsp
27713
  membership.php
27714
  membershiphack
27715
+ membuka link ini
27716
  memerangi keragu
27717
  memerangi-keragu
27718
+ memevioro
27719
  memoria javit
27720
  memória javit
27721
  memoria teszt
27764
  men's timber
27765
  men’s timber
27766
  men+
27767
+ menang on line
27768
+ menang online
27769
+ menang-on-line
27770
+ menang-online
27771
  menbarbour
27772
  menboost
27773
  mencheap
27844
  mercedes-vip
27845
  mercedesvip
27846
  mercenary.co
 
27847
  mercurial 2020
27848
  mercurial 2021
27849
+ mercurial 2022
27850
  mercurial vapo
 
27851
  mercurial-2020
27852
  mercurial-2021
27853
+ mercurial-2022
27854
  mercurial-vapo
 
27855
  mercurial2020
27856
  mercurial2021
27857
+ mercurial2022
27858
  mercurialvapo
27859
  merely extremely
27860
  merely wanna
27865
  meridia
27866
  mes hormone
27867
  mes-hormone
27868
+ mesin slot
27869
+ mesin-slot
27870
  message all around
27871
  message erotic
27872
  message the agency
27909
  metronidazole
27910
  metrostar
27911
  meu teor send
27912
+ mezzanine finance
27913
+ mezzanine-finance
27914
  mezzo louis
27915
  mezzo-louis
27916
  mezzolouis
27969
  mild activ
27970
  mild-activ
27971
  milendress
27972
+ milf nipple
27973
+ milf porn
27974
  milf_
27975
+ milf-nipple
27976
+ milf-porn
27977
+ milfnipple
27978
+ milfporn
27979
  milfs_
27980
+ militari costume
27981
+ militari-costume
27982
+ military costume
27983
  military friendly
27984
  military vacation
27985
+ military-costume
27986
  military-friendly
27987
  military-vacation
27988
  militaryfriendly
28072
  mirror femme
28073
  mirror-femme
28074
  mirrorfemme
28075
+ mishapen
28076
  miss hookup
28077
  miss-hookup
28078
  missed hookup
28152
  mlsp-suit
28153
  mlspweapon
28154
  mmcenter.in
28155
+ mmm i really
28156
  mmy blog
28157
  mmy page
28158
  mmy web
28245
  moncle-site
28246
  moncle-sito
28247
  monclear
 
28248
  moncler 2020
28249
  moncler 2021
28250
+ moncler 2022
28251
  moncler amster
28252
  moncler andorra
28253
  moncler barata
28302
  moncler weste
28303
  moncler westen
28304
  moncler--
 
28305
  moncler-2020
28306
  moncler-2021
28307
+ moncler-2022
28308
  moncler-amster
28309
  moncler-andorra
28310
  moncler-barata
28366
  moncler.jsp
28367
  moncler.php
28368
  moncler`
 
28369
  moncler2020
28370
  moncler2021
28371
+ moncler2022
28372
  moncleramster
28373
  monclerandorra
28374
  monclerbarata
28436
  monetize you
28437
  monetize-you
28438
  money adder
28439
+ money bonus
28440
  money buzz
28441
  money fast
28442
  money generat
28443
+ money malaysia
28444
  money man uga
28445
  money now loan
28446
  money online
28449
  money robot
28450
  money vault
28451
  money-adder
28452
+ money-bonus
28453
  money-buzz
28454
  money-fast
28455
  money-game
28457
  money-illusion
28458
  money-loan
28459
  money-mak
28460
+ money-malaysia
28461
  money-now-loan
28462
  money-online
28463
  money-phone
28473
  money.htm
28474
  money.jsp
28475
  money.php
28476
+ moneybonus
28477
  moneybuzz
28478
  moneyfast
28479
  moneygame
28480
  moneygenerat
28481
  moneyillusion
28482
+ moneyline bet
28483
  moneyloan
28484
  moneymak
28485
  moneyonline
28588
  more clash of
28589
  more effective!
28590
  more eventually
28591
+ more message here
28592
  more of your article
28593
  more of your blog
28594
  more of your post
28604
  more-eventually
28605
  more-lv
28606
  more-smartly
28607
+ more>>>
28608
  morelv
28609
  morpg
28610
  morre about
28645
  motivation-book
28646
  motor whole
28647
  motor-whole
28648
+ motorhome cabinet
28649
+ motorhome lighting
28650
+ motorhome mechanic
28651
+ motorhome upgrade
28652
+ motorhome windshield
28653
+ motorhome-cabinet
28654
+ motorhome-lighting
28655
+ motorhome-mechanic
28656
+ motorhome-upgrade
28657
+ motorhome-windshield
28658
  mount sex
28659
  mount-sex
28660
  mountsex
28667
  movementpart
28668
  mover los angeles
28669
  movers los angeles
28670
+ movi.co
28671
  movie are general
28672
  movie full
28673
  movie game play
28765
  much-important
28766
  much-utile
28767
  muchgucci
28768
+ mucho mas articulo
28769
  mucho tu post
28770
  mudah beli
28771
  mudah-beli
28775
  muhammad-christ
28776
  muhammadchrist
28777
  muhst say
28778
+ muita artigo
28779
+ muita postagem
28780
+ muita-artigo
28781
+ muita-postagem
28782
  mujer timberland
28783
  mujer-timberland
28784
  mujeres solteras
28896
  my apple macbook
28897
  my bebo
28898
  my bitcoin
 
 
 
28899
  my blg ;
28900
  my blg :
28901
  my blg;
28902
  my blg:
28903
  my blo look
 
 
 
28904
  my blog ;
28905
  my blog :
28906
+ my blog ..
28907
  my blog …
28908
  my blog audience
28909
  my blog fer
28917
  my blog..
28918
  my blog…
28919
  my blopg
 
 
 
28920
  my boog ;
28921
  my boog :
28922
  my boog ..
28946
  my own blog
28947
  my own web
28948
  my paage
28949
+ my page ;
28950
+ my page :
 
28951
  my page ..
28952
  my page …
28953
  my page 24
28962
  my pagge
28963
  my personal own
28964
  my ppage
28965
+ my profile link
28966
  my pzge
28967
  my sikte
28968
  my site ;
28972
  my site looks
28973
  my site read
28974
  my site rolnic
28975
+ my site too
28976
  my site trek
28977
  my site;
28978
  my site:
28979
  my site..
28980
  my site…
28981
  my sitee
 
 
 
28982
  my sitte ;
28983
  my sitte :
28984
  my sitte ..
28988
  my sitte:
28989
  my sitte..
28990
  my sitte…
28991
+ my sjte
28992
  my social networks
28993
  my ssite
28994
  my vape
28996
  my wallet is
28997
  my wblg
28998
  my wblog
28999
+ my web ;
29000
+ my web :
 
29001
  my web ..
29002
  my web …
29003
  my web blog
29013
  my web…
29014
  my webb
29015
  my weblg
29016
+ my weblog ;
29017
+ my weblog :
29018
+ my weblog ..
29019
+ my weblog …
29020
  my weblog goes
29021
  my weblog read
29022
  my weblog trek
29023
  my webpage
29024
+ my website ;
29025
+ my website :
29026
+ my website ..
29027
  my website …
29028
  my website goes
29029
  my website read
29053
  my-my
29054
  my-new-ip
29055
  my-online
29056
+ my-promo
29057
  my-pzge
29058
  my-sitte
29059
  my-ssite
29096
  mynocine-sans
29097
  myonline
29098
  myowndomain
29099
+ mypromo
29100
  myqrop
29101
  myresume
29102
  myreview.co
29209
  nam-nữ
29210
  namacalnie zalega
29211
  namacalnie-zalega
29212
+ name of lorem
29213
  name on yolo
29214
  name-brand
29215
  name-on-yolo
29228
  nanogold
29229
  naproxen
29230
  narkologicheskaya
29231
+ narkotikamissbruk
29232
  naruto hottest
29233
  naruto-hottest
29234
  nashivki leibly
29314
  ñç
29315
  nce nce
29316
  near near
29317
+ near_me
29318
+ nearby rv
29319
  nearly like a clean
29320
  neat article
29321
  neat blog
29331
  neat-web
29332
  neatarticle
29333
  neatblog
29334
+ neathfull
29335
  neatly favor
29336
  neatly favour
29337
  neatly preferred
29349
  need bytecoin
29350
  need litecoin
29351
  need sex
29352
+ need to strategy
29353
  need wondrous
29354
  need-bitcoin
29355
  need-bytecoin
29357
  need-sex
29358
  needbitcoin
29359
  needbytecoin
29360
+ needed it hard
29361
  needlitecoin
29362
  needmoney
29363
  needs wondrous
29428
  new large
29429
  new manolo
29430
  new mastery
29431
+ new porn
29432
  new room decor
29433
  new rooms decor
29434
  new seo
29449
  new-manolo
29450
  new-mastery
29451
  new-oakley
29452
+ new-porn
29453
  new-proxy-list
29454
  new-room-decor
29455
  new-rooms-decor
29476
  newjord
29477
  newmanolo
29478
  newoakley
29479
+ newporn
29480
  newport 100s
29481
  newport-100s
29482
  newport100s
29494
  newss.
29495
  newvibram
29496
  newwebsite
 
29497
  newyear2020
29498
  newyear2021
29499
+ newyear2022
29500
  nexium.to
29501
  nexium4u
29502
  nexopia
29541
  nfr.htm
29542
  nfr.jsp
29543
  nfr.php
29544
+ nft market
29545
+ nft-market
29546
+ nftmarket
29547
  nghiệp google
29548
  nghiep-a-z
29549
  nghiệp-a-z
29771
  no collateral
29772
  no continu
29773
  no copy right
29774
+ no credit check
29775
  no fee apart
29776
  no genuine difference
29777
  no guarant
29783
  no-continu
29784
  no-copy-right
29785
  no-credit
 
29786
  no-fuss
29787
  no-guarant
29788
  no-hassle
29803
  noir-homme
29804
  noirhomme
29805
  nolvadex
29806
+ nonstoreexit
29807
  noo wonder
29808
  noot sure
29809
  nordstrom moncler
29877
  nova coleção
29878
  nova-colecao
29879
  nova-coleção
29880
+ novice crypto
29881
+ novice-crypto
29882
  novo negocio
29883
  novo negócio
29884
  novo-negocio
30189
  oczyszczalnia przydomow
30190
  oczyszczalnia-przydomow
30191
  odchudzanie
30192
+ odds checker
30193
  odds of affect
30194
+ odds-checker
30195
+ oddschecker
30196
  odszkodowania
30197
  oduvan4ik
30198
  odziez
30212
  of essay writing
30213
  of herpes
30214
  of internet
30215
+ of lucrative offer
30216
  of manies
30217
  of of the
30218
  of on your blog
30306
  officeerror
30307
  official giub
30308
  official moncler
30309
+ official porn
30310
  official web
30311
  official-giub
30312
  official-moncler
30313
+ official-porn
30314
  official-sale
30315
  official-steeler
30316
  official-style
30322
  officialgiub
30323
  officialmailsite
30324
  officialmoncler
30325
+ officialporn
30326
  officialsale
30327
  officialsteeler
30328
  officialstyle
30346
  offline-forum
30347
  ofhuman
30348
  oficery
30349
+ oficial reparacione
30350
+ oficial-reparacione
30351
  oficialniy sayt
30352
  oficialniy-sayt
30353
+ oficialreparacione
30354
  ofnews
30355
  ogrodowyparasol
30356
  ogrodowypokrowi
30378
  olur oturum
30379
  olur-oturum
30380
  omalizumab
30381
+ omg площадка
30382
+ omgomgomg
30383
  on board battery
30384
  on da chia se
30385
  ơn đã chia sẻ
30465
  online albenda
30466
  online albenza
30467
  online bag
30468
+ online bahis
30469
  online best
30470
  online betting
30471
  online boot
30504
  online gaming play
30505
  online gaming store
30506
  online gefunden
30507
+ online gold
30508
  online grant app
30509
  online gratis
30510
  online gry
30511
  online heel
30512
  online hn
30513
+ online indonesia
30514
  online internet
30515
  online journ
30516
  online life coach
30517
  online loan
30518
  online longbow
30519
  online m4a
30520
+ online matka
30521
  online movie
30522
  online mp3
30523
  online mp4
30528
  online pokie
30529
  online profit
30530
  online reader
30531
+ online real money
30532
  online reddit
30533
  online rewad
30534
  online schuh
30536
  online shoe
30537
  online shop
30538
  online site
30539
+ online slot
30540
+ online spiel
30541
  online store selling
30542
  online success
30543
  online toos
30549
  online weblog
30550
  online webpage
30551
  online website
 
30552
  online-24
30553
  online-albenda
30554
  online-albenza
30555
  online-bag
30556
+ online-bahis
30557
  online-best
30558
  online-betting
30559
  online-blog
30586
  online-gaming-play
30587
  online-gaming-store
30588
  online-gefunden
30589
+ online-gold
30590
  online-grant-app
30591
  online-gratis
30592
  online-gry
30593
  online-guide-of
30594
  online-heel
30595
  online-hn
30596
+ online-indonesia
30597
  online-internet
30598
  online-invest
30599
  online-journ
30602
  online-longbow
30603
  online-m4a
30604
  online-market
30605
+ online-matka
30606
  online-med
30607
  online-money
30608
  online-movie
30624
  online-shoe
30625
  online-shop
30626
  online-site
30627
+ online-slot
30628
+ online-spiel
30629
  online-store
30630
  online-success
30631
  online-toos
30632
+ online-tutor
30633
  online-unblock
30634
  online-usa
30635
  online-video-market
30637
  online-webpage
30638
  online-website
30639
  online-zapatilla
 
30640
  online,look
30641
  online,shop
30642
  online:look
30668
  onlineforsale
30669
  onlinefree
30670
  onlinegambl
30671
+ onlinegame
30672
+ onlinegold
30673
  onlineheel
30674
  onlineinternet
30675
  onlineinvest
30676
  onlinejp
30677
  onlineloan
30678
  onlinem4a
30679
+ onlinematka
30680
  onlinemed
30681
  onlinemoney
30682
  onlinemp3
30694
  onlinesex
30695
  onlineshoe
30696
  onlineshop
30697
+ onlinespiel
30698
  onlinestore
30699
+ onlinetutor
30700
  onlinezapatilla
30701
  onlpy
30702
  only + free
30738
  ooobrand
30739
  ooowatch
30740
  openair
30741
+ opendoar
30742
  openlink?
30743
  openning
30744
  operated respir
30804
  ordergeneric
30805
  orderparafon
30806
  ordersoma
30807
+ org download
30808
+ org-download
30809
  organic hemp
30810
  organic seo
30811
  organic-hemp
30815
  organizovana-zlo
30816
  organogold
30817
  orgazma
30818
+ orgdownload
30819
  orghttp
30820
  oriflame
30821
  origami origami
31095
  oxycontin
31096
  oympia
31097
  oyun avtomat
31098
+ oyun oyna
31099
  oyun-avtomat
31100
+ oyun-oyna
31101
+ oyunoyna
31102
 
31103
 
31104
 
31151
  page gives pleasant
31152
  page is fastidious
31153
  page is invaluable
31154
+ page is practical
31155
  page is priceless
31156
+ page is really practical
31157
  page is truly
31158
  page link
31159
  page of search engine
31207
  pagss
31208
  paid autosurf
31209
  paid google
31210
+ paid online survey
31211
  paid review
31212
  paid-autosurf
31213
  paid-google
31214
+ paid-online-survey
31215
  paid-review
31216
  pain-behind
31217
  pain-relief
31438
  paragraph is truly
31439
  paragraph offer
31440
  paragraph post
31441
+ paragraph present
31442
  paragraph writ
31443
  paragraph-at-this
31444
  paragraph-here
31555
  passionately fond
31556
  passionately-fond
31557
  passive income system
31558
+ passive revenue stream
31559
  passive-income-system
31560
+ passive-revenue-stream
31561
  passo_a_passo
31562
  passo-a-passo
31563
  passprefix
31589
  pastebin.fun
31590
  patagonia-zone
31591
  patagoniazone
31592
+ paternity dna
31593
+ paternity-dna
31594
  patience maxi
31595
  patience-maxi
31596
  patiencemaxi
31614
  paxil
31615
  pay_day
31616
  pay-as-you-go
31617
+ payday cash
31618
  payday loan
31619
+ payday-cash
31620
  payday-loan
31621
  payday-on
31622
  payday.co
31626
  payday.ru
31627
  payday.su
31628
  payday.za
31629
+ payday|
31630
+ paydaycash
31631
  paydayloan
31632
  paydaynote
31633
  paydayon
31654
  paypall
31655
  paypalmoney
31656
  payroll-calc
31657
+ paysafecard
 
 
 
31658
  pazarlayan pezevengin
31659
  pazarlayan-pezevengin
31660
  pbrolme
31721
  pefcret
31722
  pen montblanc
31723
  pen-montblanc
31724
+ pendik escort
31725
+ pendik eskort
31726
+ pendik-escort
31727
+ pendik-eskort
31728
  penetrar uma
31729
  penetrative sex
31730
  penetrative-sex
31784
  pension frankfurt
31785
  pension-frankfurt
31786
  pensmontblanc
31787
+ pent written content
31788
  people about the subject
31789
  people about the topic
31790
  people about this subject
31791
  people about this topic
31792
  people can deeply
31793
+ people eat music
31794
  people for the subject
31795
  people for the topic
31796
  people for this subject
31822
  perabot kantor
31823
  perabot-kantor
31824
  percocet
31825
+ perder peso
31826
+ perder-peso
31827
+ perderpeso
31828
  perfect blog
31829
  perfect diet
31830
  perfect interest
31871
  perku versla
31872
  perku verslą
31873
  perku-versla
31874
+ permainan slot
31875
+ permainan-slot
31876
  permission allow
31877
  permission-allow
31878
  permonth.co
31880
  person-prov
31881
  persona attribute
31882
  personal blogroll
31883
+ personal loan
31884
  personal pc
31885
  personal personal
31886
  personal pupil
31887
  personal silicone
31888
  personal stuffs
31889
+ personal_loan
31890
  personal-blogroll
31891
  personal-exper
31892
  personal-injury
31893
+ personal-loan
31894
  personal-natur
31895
  personal-pc
31896
  personal-personal
31904
  personalised-silicone
31905
  personalized silicone
31906
  personalizedsilicone
31907
+ personalloan
31908
  personalnatur
31909
  personalpc
31910
  personen daten
31912
  personenbezogener daten
31913
  personenbezogener-daten
31914
  personnalis
31915
+ peruse google
31916
+ perusing google
31917
  perxon
31918
  pesimdesiniz
31919
  peşimdesiniz
31946
  pflegeversicherung
31947
  pflegezusatzversicherung
31948
  pg concern
31949
+ pg slot
31950
  pg-concern
31951
+ pg-slot
31952
  pg/blog
31953
  pg/forum
31954
  pg/page
31956
  pg/profil
31957
  pg/view
31958
  pgconcern
31959
+ pgslot
31960
  phan mem quan
31961
  phần mềm quản
31962
  phan-mem
31963
  phần-mềm
31964
  phan-mem-quan
31965
+ phap ly hung
31966
+ pháp lý hưng
31967
+ phap ly vung
31968
+ pháp lý vững
31969
+ phap-ly-hung
31970
+ phap-ly-vung
31971
+ pharm rx
31972
+ pharm store
31973
  pharm_
31974
+ pharm-rx
31975
+ pharm-store
31976
  pharm.
31977
  pharma canad
31978
  pharma euro
31992
  pharmacy from
31993
  pharmacy online
31994
  pharmacy outlet
31995
+ pharmacy rx
31996
+ pharmacy store
31997
  pharmacy without
31998
  pharmacy_
31999
  pharmacy-24
32002
  pharmacy-from
32003
  pharmacy-online
32004
  pharmacy-outlet
32005
+ pharmacy-rx
32006
+ pharmacy-store
32007
  pharmacy-without
32008
  pharmacy24
32009
  pharmacyat
32010
  pharmacyonline
32011
  pharmacyoutlet
32012
+ pharmacyrx
32013
  pharmaeuro
32014
  pharmancies_
32015
  pharmaun
32016
  pharmi
32017
  pharmo
32018
+ pharmrx
32019
  pharms
32020
  pharmz
32021
  pheaemon
32108
  phpinfo
32109
  phpoakley
32110
  phttp
 
 
32111
  phuc 2020
32112
  phục 2020
32113
  phuc 2021
32114
  phục 2021
32115
+ phuc 2022
32116
+ phục 2022
32117
  phục áo phông
32118
  phục áo thun
32119
  phục bon mua
32120
  phuc hot
32121
  phuc trend
 
32122
  phuc-2020
32123
  phuc-2021
32124
+ phuc-2022
32125
  phuc-ao-phong
32126
  phuc-ao-thun
32127
  phuc-bon-mua
32128
  phuc-hot
32129
  phuc-trend
 
32130
  phuc2020
32131
  phuc2021
32132
+ phuc2022
32133
  phucbonmua
32134
  phuchot
32135
  phuctrend
32140
  physician-review
32141
  physicians formula
32142
  physicians-formula
32143
+ physique temperature
32144
+ physique-temperature
32145
  phytoceramide
32146
  pɦân phối
32147
  pɦân-phối
32164
  piece of writing
32165
  piece off writing
32166
  piece-chap
32167
+ piel besos
32168
+ piezas de alta
32169
+ piezas de pro
32170
  pignee
32171
  pigus kvepalai
32172
  pigus-kvepalai
32192
  pillsforsale
32193
  pillsonline
32194
  pillz
32195
+ pimped resume
32196
  pimples free
32197
  pimples-free
32198
  pin dump
32200
  pin, dump
32201
  pine-and-onyx
32202
  ping your self
32203
+ pink dining room
32204
  pink large
32205
  pink-large
32206
  pinklarge
32259
  pjbpro
32260
  pjure breast
32261
  pjure-breast
32262
+ pkv qq
32263
+ pkv-qq
32264
+ pkvqq
32265
  pl/wiki
32266
  place for naughty
32267
  place-for-naughty
32304
  plavix
32305
  play film trailer
32306
  play films trailer
32307
+ play fortuna
32308
  play hack
32309
+ play matka
32310
  play video review
32311
  play videos review
32312
+ play website
32313
  play-film-trailer
32314
  play-films-trailer
32315
+ play-fortuna
32316
  play-free
32317
  play-hack
32318
+ play-matka
32319
  play-online
32320
  play-reel-king
32321
  play-runescape
32322
  play-video-review
32323
  play-videos-review
32324
+ play-website
32325
  playedd
32326
  playerblock
32327
+ playfortuna
32328
  playfree
32329
  playher
32330
  playing film trailer
32335
  playing-films-trailer
32336
  playing-video-review
32337
  playing-videos-review
32338
+ playmatka
32339
  playonline
32340
  playstation code
32341
  playstation-code
32342
  playvid
32343
+ playwebsite
32344
  plazajp
32345
  pleasant article
32346
  pleasant blog
32431
  point ,
32432
  point !
32433
  point .
32434
+ point depression
32435
  point generat
32436
+ point massage
32437
+ point_massage
32438
  point-generat
32439
+ point-massage
32440
  point|
32441
  pointgenerat
32442
+ pointmassage
32443
  points ,
32444
  points !
32445
  points .
32446
  points generat
32447
  points in feature
32448
+ points you have written
32449
  points-generat
32450
  points-to-think
32451
  pointsgenerat
32452
  poished
32453
  poisk-nomera-tele
32454
  pojap
32455
+ pok%c3%83_mon
32456
  poke amulet
32457
  poke cheat
32458
  poke coin
32509
  poker game
32510
  poker machine
32511
  poker match
32512
+ poker menang
32513
  poker mistake
32514
  poker money
32515
  poker online
32517
  poker republi
32518
  poker room
32519
  poker site
32520
+ poker slot
32521
  poker soda
32522
  poker strat
32523
  poker terp
32546
  poker-machine
32547
  poker-man
32548
  poker-match
32549
+ poker-menang
32550
  poker-mistake
32551
  poker-money
32552
  poker-online
32554
  poker-republi
32555
  poker-room
32556
  poker-site
32557
+ poker-slot
32558
  poker-soda
32559
  poker-strat
32560
  poker-terp
32585
  pokeronline
32586
  pokerqq
32587
  pokerrepubli
32588
+ pokerslot
32589
  pokersoda
32590
  pokerstrat
32591
  pokertexas
32627
  polosralph
32628
  polsce pdf
32629
  polsce-pdf
32630
+ polskie kasyno
32631
+ polskie-kasyno
32632
  pomyslow prezent
32633
  pomysłow prezent
32634
  pomyslow-prezent
32668
  porn app
32669
  porn beer
32670
  porn big
32671
+ porn clip
32672
  porn cocuk
32673
  porn comic
32674
  porn dairy
32689
  porn hot
32690
  porn hub
32691
  porn izle
32692
+ porn king
32693
  porn lesb
32694
  porn live
32695
  porn lohan
32727
  porn young
32728
  porn_
32729
  porn-
32730
+ porn-clip
32731
  porn-hd
32732
  porn-izle
32733
+ porn-king
32734
  porn-play
32735
  porn-podcast
32736
  porn-rape
32743
  pornapp
32744
  pornbeer
32745
  pornbig
32746
+ pornclip
32747
  porncocuk
32748
  porncomic
32749
  porndairy
32765
  pornhub
32766
  pornhud
32767
  pornizle
32768
+ pornking
32769
  pornlesb
32770
  pornlive
32771
  pornlohan
32945
  portray & decorat
32946
  portray & decorat
32947
  portray and decorat
32948
+ posamochod opinie
32949
  positikon
32950
  positive credit history
32951
  positively helpful
32958
  possible kill you
32959
  possibly can constant
32960
  possibly kill you
32961
+ possibly possibly
32962
  possui publicidade
32963
  possui zero
32964
  possui-publicidade
32965
  possui-zero
32966
  post ::
32967
  post aat
32968
+ post as well as
32969
  post at this site
32970
  post como este
32971
  post composing
33008
  post.real
33009
  post.thank
33010
  postcarf
33011
+ posted on your blog
33012
+ posted on your page
33013
+ posted on your site
33014
+ posted on your web
33015
  postfully
33016
  posting comment
33017
  posting movies frequent
33101
  ppvtraff
33102
  pr článek
33103
  pr článk
33104
+ pr-bookmark
33105
  pra acabar
33106
  pra-acabar
33107
  prac licencjackich
33168
  pragnanter firmen
33169
  prägnanter firmen
33170
  pragnanter-firmen
33171
+ pratik bilgiler
33172
+ pratik-bilgiler
33173
+ pratikbilgiler
33174
  prawnik
33175
  prazer sexual
33176
  prazer-sexual
33177
  prazosin
33178
+ prbookmark
33179
  prdetty
33180
  precios_
33181
  precisely lots
33235
  premature ejac
33236
  premature-ejac
33237
  prematureejac
33238
+ premium anschluss
33239
  premium anti
33240
  premium cig
33241
  premium digit
33244
  premium improve
33245
  premium key
33246
  premium out
33247
+ premium wiet
33248
+ premium wordpress
33249
  premium-account
33250
+ premium-anschluss
33251
  premium-anti
33252
  premium-cig
33253
  premium-digit
33255
  premium-free
33256
  premium-key
33257
  premium-out
33258
+ premium-wiet
33259
+ premium-wordpress
33260
  premium.ru
33261
  premiumaccount
33262
  premiumanti
33266
  premiumfree
33267
  premiumkey
33268
  premiumout
33269
+ premiumwordpress
33270
  prentice capital
33271
  prentice-capital
33272
  prenticecapital
33318
  press-webpage
33319
  pressuppose
33320
  presta dinero
33321
+ présta dinero
33322
  presta rapidos
33323
+ présta rapidos
33324
  presta-dinero
33325
  presta-rapidos
33326
  prestadinero
33327
+ prestamo inmediato
33328
+ préstamo inmediato
33329
+ prestamo online
33330
+ préstamo online
33331
+ prestamo rapidos
33332
+ préstamo rapidos
33333
+ prestamo-inmediato
33334
+ prestamo-online
33335
+ prestamo-rapidos
33336
+ prestamoinmediato
33337
+ prestamoonline
33338
+ prestamorapidos
33339
+ prestamos inmediato
33340
+ préstamos inmediato
33341
+ prestamos online
33342
+ préstamos online
33343
+ prestamos personal
33344
+ préstamos personal
33345
  prestamos rapidos
33346
+ préstamos rapidos
33347
+ prestamos-inmediato
33348
+ prestamos-online
33349
+ prestamos-personal
33350
  prestamos-rapidos
33351
+ prestamosinmediato
33352
+ prestamosonline
33353
+ prestamospersonal
33354
  prestamosrapidos
33355
  prestarapidos
33356
  pretty candy as
33369
  prezzibors
33370
  prezzigiub
33371
  price cheap
33372
+ price for advair
33373
  price now!
33374
+ price per click
33375
  price philip
33376
  price replic
33377
  price sunglass
33378
  price-cheap
33379
+ price-for-advair
33380
  price-of-gold
33381
+ price-per-click
33382
  price-philip
33383
  price-replic
33384
  price-sunglass
33432
  privatamateur
33433
  private amateur
33434
  private ftp
33435
+ private universite
33436
  private-amateur
33437
  private-ftp
33438
  private-label
33439
  private-proxy
33440
+ private-universite
33441
  privateamateur
33442
  privateftp
33443
  privatelabel
33457
  prix-ugg
33458
  prixchaus
33459
  prixugg
33460
+ pro casino
33461
  pro key
33462
  pro medical
33463
  pro pip
33464
  pro review
33465
  pro_site
33466
+ pro-casino
33467
  pro-medical
33468
  pro-pip
33469
  pro-review
33485
  probllem
33486
  proc opport
33487
  proc-opport
33488
+ procasino
33489
  procedures-for
33490
  proceed travel in
33491
  proceed your writing
33540
  profesionalidad y experiencia
33541
  profesjonal
33542
  professianal
33543
+ profession coach
33544
+ profession-coach
33545
  professional 2020
33546
  professional 2021
33547
+ professional 2022
33548
  professional blog
33549
+ professional casino
33550
  professional cosmet
33551
  professional essay
33552
  professional hypno
33553
  professional poker
33554
  professional top quality
33555
  professional ugg
 
33556
  professional-2020
33557
  professional-2021
33558
+ professional-2022
33559
  professional-blog
33560
+ professional-casino
33561
  professional-cosmet
33562
  professional-essay
33563
  professional-hypno
33564
  professional-poker
33565
  professional-ugg
 
33566
  professional2020
33567
  professional2021
33568
+ professional2022
33569
  professionalpoker
33570
  professionals.co
33571
  professionalugg
33572
+ profesyonel kurumsal
33573
+ profesyonel-kurumsal
33574
  proficiency advantage
33575
  proficiency badge
33576
  proficiency course
33633
  profitseek
33634
  profitsreview
33635
  program fault you
33636
+ program kasir
33637
  program ppc
33638
+ program-kasir
33639
  program-ppc
33640
  programs on ways
33641
  progress loan
33664
  promo art
33665
  promo artist
33666
  promo bag
33667
+ promo click
33668
  promo marketing
33669
  promo shop
33670
  promo store
33674
  promo-art
33675
  promo-artist
33676
  promo-bag
33677
+ promo-click
33678
  promo-marketing
33679
  promo-shop
33680
  promo-store
33681
  promo-sys
33682
  promo-team
33683
  promo-voucher
33684
+ promo.store
33685
  promo+
33686
  promoart
33687
  promobag
33688
  promocja
33689
+ promoclick
33690
  promocode
33691
  promomarketing
33692
  promos code
33735
  propeer
33736
  proper blog
33737
  proper-ugg
33738
+ properly collectively
33739
+ properly, collectively
33740
  propertiok
33741
  property highly secure
33742
  property pro
33744
  propertypro
33745
  properugg
33746
  propip
33747
+ propiska sobstvennik
33748
+ propiska-sobstvennik
33749
  propranolol
33750
  proshop.ru
33751
  prospects of decay
33752
+ prostaphytol
33753
  prostate stimul
33754
  prostate-stimul
33755
  prostitutki
33756
+ prosubiekt
33757
  protandim
33758
+ protection outcomes
33759
  protein bene
33760
  protein powder
33761
  protein review
33767
  protein-tozu
33768
  proteinbene
33769
  proteindiet
33770
+ proteinpulver
33771
  proteintozu
33772
  prova da oab
33773
  prova-da-oab
33777
  provewhether
33778
  provide in the blog
33779
  provide one thing back
33780
+ provided by knowledge
33781
+ provided_by_knowledge
33782
+ provided-by-knowledge
33783
  provider proficient
33784
  provider-proficient
33785
  provigil
33896
  pupil loan
33897
  pupil-loan
33898
  puppy hating dan
33899
+ purchase facebook
33900
  purchase generic
33901
  purchase guilt
33902
+ purchase instagram
33903
  purchase pitch
33904
  purchase privilege
33905
+ purchase sympathy
33906
+ purchase telegram
33907
  purchase tiffany
33908
+ purchase tiktok
33909
+ purchase twitter
33910
+ purchase_sympathy
33911
+ purchase-facebook
33912
  purchase-generic
33913
  purchase-guilt
33914
+ purchase-instagram
33915
  purchase-pitch
33916
  purchase-privilege
33917
+ purchase-sympathy
33918
+ purchase-telegram
33919
  purchase-tiffany
33920
+ purchase-tiktok
33921
+ purchase-twitter
33922
  purchase!cock
33923
  purchasegeneric
33924
  purchases pitch
34023
  qatarescort
34024
  qatareskort
34025
  qhttp
34026
+ qq 77
34027
+ qq 88
34028
  qq blog
34029
  qq online
34030
+ qq-77
34031
+ qq-88
34032
  qq-blog
34033
  qq-online
34034
  qq.blog
34035
  qq.online
34036
+ qq77
34037
+ qq88
34038
  qqq
34039
  qquality
34040
  qsymia india
34132
  quincyfemme
34133
  quinoa stomach
34134
  quinoa-stomach
34135
+ quintessence causing
34136
+ quit masturbat
34137
+ quit-masturbat
34138
  quit-smok
34139
  quit-smoking
34140
  quit9to5
34188
  racinghack
34189
  radikal.ru
34190
  radiocarpea
34191
+ raelnightclub
34192
+ raelxclub
34193
  rahalat maroc
34194
  rahalat-maroc
34195
  raiders hat
34197
  raidershat
34198
  raloxifene
34199
  ralph-lauren
34200
+ rambler.ru
34201
  ramipril
34202
  rank increase
34203
  rank-build
34379
  real-lesbian
34380
  real-mastery
34381
  real-money
34382
+ real-night-club
34383
+ real-nightclub
34384
+ real-x-club
34385
+ real-xclub
34386
  realcasino
34387
  realestate.co
34388
  realestate.web
34394
  reallky
34395
  really a commonly
34396
  really easy along
34397
+ really exceedingly
34398
  really excellent info
34399
  really fantastic info
34400
  really fastidious
34401
  really fruitful
34402
+ really good essay
34403
  really good paragraph
34404
  really interesting info
34405
  really like this blog
34418
  realmoney
34419
  realms-full
34420
  realmsfull
34421
+ realnightclub
34422
  realtor promo
34423
  realtor-promo
34424
+ realxclub
34425
  reap the most effect
34426
+ rearacion
34427
  reason your brand
34428
  reason-your-brand
34429
  reasonable_trendy_
34432
  reasonabpe
34433
  reasons your brand
34434
  reasons-why
34435
+ reasons-you-will-never
34436
  reasons-your-brand
34437
  rebate supply
34438
  rebate-supply
34462
  reborn-web
34463
  reccomend this
34464
  reccomend-this
34465
+ reccommend
34466
  receive carried
34467
  receive-carried
34468
  recent seo
34529
  reconquista-perfeita
34530
  records-data
34531
  recordsdata
34532
+ recovery blog
34533
+ recovery-blog
34534
  recovery-now
34535
  recoverynow
34536
  red christ
34537
+ red head nude
34538
  red ugg
34539
  red-bottom-shoe
34540
  red-christ
34541
+ red-head-nude
34542
  red-ugg
34543
  red+bottom+shoe
34544
  redact your preceding
34547
  redchrist
34548
  redeem playstation
34549
  redeem-playstation
34550
+ redhead nude
34551
+ redhead-nude
34552
+ redheadnude
34553
  redi_url
34554
  redi-url
34555
  redir.asp
34567
  redireccion.jsp
34568
  redireccion.php
34569
  redirect_link
34570
+ redirect_to
34571
  redirect-link
34572
+ redirect-to
34573
  redirect.asp
34574
  redirect.cfm
34575
  redirect.cgi
34602
  redsoleshoe
34603
  reductil
34604
  redugg
34605
+ redutor de barriga
34606
+ redutor-de-barriga
34607
+ redutordebarriga
34608
  redwingjp
34609
  reebok baseball
34610
  reebok ital
34674
  registration-paid
34675
  registration-strat
34676
  registrator
34677
+ registratsiya online
34678
+ registratsiya-online
34679
  registry-clean
34680
  registry-fix
34681
  registry-repair
34690
  regulados-de-forex
34691
  regulate their gaming
34692
  reguliatory
34693
+ reinforce energy
34694
+ reinforces energy
34695
  reinigungsfirmen hab
34696
  reirect
34697
  rejersey.co
34742
  relogios-replic
34743
  relogios-réplica
34744
  relogiosreplic
34745
+ relx infinity
34746
+ relx vape
34747
+ relx-infinity
34748
+ relx-vape
34749
+ relxinfinity
34750
+ relxvape
34751
  remarkable article
34752
  remarkable blog
34753
  remarkable info
34823
  renda extra
34824
  renda-extra
34825
  renewal amenit
34826
+ reno_tip
34827
+ reno-tip
34828
+ renovation_tip
34829
+ renovation-tip
34830
+ renown know
34831
  rent luxury
34832
  rent_in
34833
  rent-luxury
34852
  repairs near me
34853
  repairs near you
34854
  repairvirgin
34855
+ reparacion aire
34856
+ reparacion calenta
34857
+ reparacion cocina
34858
+ reparacion de aire
34859
+ reparacion de calenta
34860
+ reparacion de electro
34861
+ reparacion electro
34862
+ reparacion energetica
34863
+ reparacion frigorif
34864
+ reparacion lavadora
34865
+ reparacion-aire
34866
+ reparacion-calenta
34867
+ reparacion-cocina
34868
+ reparacion-de-aire
34869
+ reparacion-de-calenta
34870
+ reparacion-de-electro
34871
+ reparacion-electro
34872
+ reparacion-energetica
34873
+ reparacion-frigorif
34874
+ reparacion-lavadora
34875
+ reparacioncocina
34876
  reparatii-masini-spa
34877
  repeated galdi
34878
  repeated-galdi
35060
  resulthk
35061
  resulthong
35062
  results.htm
35063
+ resume creating
35064
+ resume creation
35065
+ resume creator
35066
+ resume drafter
35067
  resume expert
35068
+ resume pimp
35069
+ resume sculpted
35070
  resume-101
35071
+ resume-creating
35072
+ resume-creation
35073
+ resume-creator
35074
+ resume-drafter
35075
  resume-expert
35076
+ resume-pimp
35077
+ resume-sculpted
35078
  resume101
35079
  resumeexpert
35080
  resumes expert
35123
  review my sitte
35124
  review my web
35125
  review online edit
35126
+ review reading
35127
  review site
35128
  review website
35129
  review you tube
35131
  review-bonus
35132
  review-discount
35133
  review-on
35134
+ review-reading
35135
  review-sale
35136
  review-site
35137
  review-source
35150
  reviewbonus
35151
  reviewdiscount
35152
  reviewon
35153
+ reviewreading
35154
  reviews best
35155
  reviews online
35156
+ reviews reading
35157
  reviews you tube
35158
  reviews youtube
35159
  reviews-best
35160
  reviews-on
35161
  reviews-online
35162
+ reviews-reading
35163
  reviews-today
35164
  reviews-you-tube
35165
  reviews-youtube
35178
  reviewsite
35179
  reviewson
35180
  reviewsource
35181
+ reviewsreading
35182
  reviewstoday
35183
  reviewstv
35184
  reviewthe
35239
  ripoff the consumer
35240
  ripoff their consumer
35241
  ripoffreport
35242
+ rise online
35243
  rise-hire
35244
+ rise-online
35245
  risehire
35246
  rizatriptan
35247
  road of success
35305
  ronniie
35306
  roofingcontractor
35307
  room by hour
35308
+ room design idea
35309
  room-by-hour
35310
  room-decorating-idea
35311
  rooms by hour
35436
  rượu đẹp
35437
  ruou-dep
35438
  ruproshop
35439
+ russia channel
35440
+ russia web
35441
+ russia-channel
35442
+ russia-web
35443
  russia.ru
35444
+ russiachannel
35445
+ russian channel
35446
  russian mis
35447
  russian mr
35448
  russian ms
35449
  russian mulberry
35450
  russian stalker
35451
+ russian web
35452
  russian-army-good
35453
+ russian-channel
35454
  russian-mis
35455
  russian-mr
35456
  russian-ms
35457
  russian-mulberry
35458
  russian-stalker
35459
+ russian-web
35460
+ russianchannel
35461
  russianmis
35462
  russianmr
35463
  russianms
35464
  russianmulberry
35465
+ russianweb
35466
+ russiaweb
35467
  russkom nacionaliz
35468
  russkom-nacionaliz
35469
  rusztowania
35470
  ruwordpress
35471
+ rv bathroom
35472
+ rv counter
35473
+ rv door
35474
+ rv fabric
35475
+ rv mechanic
35476
+ rv reno
35477
+ rv repair
35478
+ rv resto
35479
+ rv seat
35480
+ rv solar
35481
+ rv-bathroom
35482
+ rv-counter
35483
+ rv-door
35484
+ rv-fabric
35485
+ rv-mechanic
35486
+ rv-reno
35487
+ rv-repair
35488
+ rv-resto
35489
+ rv-seat
35490
+ rv-solar
35491
+ rx pharmacy
35492
  rx-pharm
35493
  rxpharm
35494
 
35509
  s:.
35510
  s!.
35511
  s.@
35512
+ s.|
35513
  s.all
35514
  s.for
35515
  s.p.o.r.t
35543
  sabosale
35544
  saboshop
35545
  sabouk
35546
+ sabung ayam
35547
+ sabung-ayam
35548
+ sabungayam
35549
  sac celine
35550
  sac chanel
35551
  sac chloe
35778
  samke amount
35779
  samurai siege
35780
  samurai-siege
35781
+ san go cong
35782
+ sàn gỗ công
35783
  san pham
35784
  sản phẩm
35785
  san xuat
35786
  sản xuất
35787
+ san-go-cong
35788
  san-pham
35789
  sản-phẩm
35790
  san-xuat
35826
  sanders-jers
35827
  sandersjers
35828
  sandypasch
35829
+ sangocong
35830
  sans ordonnance
35831
  sans-ordonnance
35832
  sante blog
35846
  sapui5
35847
  sarees india
35848
  sarees-india
35849
+ sat electrodomestico
35850
+ sat-electrodomestico
35851
  satchelbag
35852
  satcheldbag
35853
+ satisfaccion externa
35854
+ satisfacción externa
35855
+ satisfacciones externa
35856
+ satisfacciónes externa
35857
  satisfied reading
35858
  satisfied-reading
35859
  satisfying existence
35860
  satllite
35861
+ satta porn
35862
+ satta-porn
35863
+ sattaporn
35864
  saudavel perder
35865
  saudável perder
35866
  saudavel-perder
35872
  saved as a fave
35873
  saved as a favorite
35874
  saved as a favourite
35875
+ saved to bookmark
35876
  savor a movie
35877
  sawfwaf
35878
  say about this article
35885
  say this page
35886
  say this site
35887
  say this web
35888
+ say your article
35889
  say your blog
35890
  say your page
35891
+ say your post
35892
  say your site
35893
  say your web
35894
  sayt vizitk
35954
  schoenendsqu
35955
  schoenenseite
35956
  schoeneseite
35957
+ scholarship of your dream
35958
  schon schon
35959
  schon-schon
35960
  school.a
36009
  scraper-free
36010
  scraper-software
36011
  scraperfree
36012
+ screener seek
36013
  script-buck
36014
  scriptbuck
36015
+ sculpted resume
36016
  sculpting bandage
36017
  sculpting-bandage
36018
  sd3546a
36022
  sdfasd
36023
  sdfklj
36024
  sdfsdf
36025
+ sdfsfd
36026
  sdlkfj
36027
  seaddons
36028
  seahawks jers
36035
  search engines list
36036
  search engines posi
36037
  search engines pref
36038
+ search expired domain
36039
+ search expiring domain
36040
  search ffor
36041
  search gogle
36042
  search master knowledge
36043
  search optim
36044
  search porn
36045
+ search_engine_you
36046
+ search_engines_you
36047
+ search_firm
36048
+ search-engine-
36049
+ search-engine-you
36050
+ search-engines-
36051
+ search-engines-you
36052
+ search-expired-
36053
+ search-expiring-
36054
  search-gogle
36055
  search-optim
36056
  search-porn
36057
+ searchengine-
36058
  searchengine.
36059
+ searchengine/
36060
+ searchengines-
36061
+ searchengines.
36062
+ searchengines/
36063
  searchhing
36064
  searching
36065
  searchoptim
36066
  searchporn
36067
+ seat cover shop
36068
  seat presently
36069
+ seat-cover-shop
36070
+ seatcovershop
36071
  seawaypab
36072
  sec-leading
36073
  secara free
36096
  secureimage
36097
  securesmtp
36098
  security ip camera
36099
+ security quantity
36100
  security-for
36101
  security-ip-camera
36102
+ security-quantity
36103
  see this blog
36104
  see this site
36105
  see this weblog
36106
  see this website
36107
+ see your expertise
36108
  seek engines
36109
  seek-engines
36110
  seeking for info
36111
+ seeking garbled
36112
  seeking prospect
36113
  seeking-prospect
36114
  seekingman
36157
  selecting-great-white
36158
  self google
36159
  self on instagram
36160
+ self-coin
36161
  self-google
36162
  self-help
36163
  self-on-instagram
36164
+ selfcoin
36165
  selfgoogle
36166
  selfiestick
36167
  sell dump
36177
  selling-machine
36178
  selllancel
36179
  sellnow
36180
+ selot terlengkap
36181
+ selot-terlengkap
36182
  sembol clan
36183
  sembol-clan
36184
  send earn
36216
  seo barn
36217
  seo blog
36218
  seo bul
36219
+ seo business
36220
  seo buy
36221
  seo check
36222
  seo cms
36262
  seo-barn
36263
  seo-blog
36264
  seo-bul
36265
+ seo-business
36266
  seo-buy
36267
  seo-check
36268
  seo-cms
36300
  seo-widget
36301
  seo-wise
36302
  seo-with
36303
+ seo-x-business
36304
  seo,
36305
  seo?
36306
  seo1337
36309
  seoagenc
36310
  seoalgo
36311
  seobarn
36312
+ seobusiness
36313
  seobuy
36314
  seocheck
36315
  seocms
36339
  seowidget
36340
  seowise
36341
  seowith
36342
+ seoxbusiness
36343
  sepid-shimi
36344
  sepidshimi
36345
  ser aprovado no
36353
  serenityfull
36354
  serial numberul
36355
  serial-numberul
 
36356
  serie tv 2020
36357
  serie tv 2021
36358
+ serie tv 2022
36359
  serie-tv-2020
36360
  serie-tv-2021
36361
+ serie-tv-2022
36362
  series erotic
 
36363
  series tv 2020
36364
  series tv 2021
36365
+ series tv 2022
36366
  series-erotic
 
36367
  series-tv-2020
36368
  series-tv-2021
36369
+ series-tv-2022
36370
  serieserotic
36371
  seriestv
36372
  serious ad invest
36390
  servantappear
36391
  served bitch
36392
  served-bitch
 
36393
  server 2020
36394
  server 2021
36395
+ server 2022
36396
  server coaching
36397
  server download
 
36398
  server-2020
36399
  server-2021
36400
+ server-2022
36401
  server-coaching
36402
  server-download
36403
  server.download
 
36404
  server2020
36405
  server2021
36406
+ server2022
36407
  service near me
36408
  service near you
36409
  service now!
36421
  services/service
36422
  servicii profes
36423
  servicii-profes
36424
+ servicio calenta
36425
+ servicio de reparacion
36426
+ servicio electro
36427
  servicio postventa
36428
  servicio servicio
36429
  servicio tan robusto
36430
+ servicio tecnico calenta
36431
+ servicio tecnico electro
36432
  servicio tecnico madrid
36433
  servicio técnico madrid
36434
  servicio tecnico oficial
36435
  servicio técnico oficial
36436
+ servicio-calenta
36437
+ servicio-de-reparacion
36438
+ servicio-electro
36439
  servicio-postventa
36440
  servicio-servicio
36441
  servicios los servicios
36444
  servicios-pirata
36445
  servicios-servicio
36446
  servicios: servicio
36447
+ serviciotecnico
36448
  servicos prestado
36449
  serviços prestado
36450
  servicos-prestado
36481
  several websites can
36482
  several-opportune
36483
  sex advice
36484
+ sex beba
36485
  sex blog
36486
  sex budd
36487
  sex cam
36488
+ sex capade
36489
+ sex chat
36490
  sex clermont
36491
  sex club
36492
  sex dat
36506
  sex kat
36507
  sex kontakt
36508
  sex live
36509
+ sex love
36510
  sex mama
36511
  sex mount
36512
  sex movie
36513
  sex mp
36514
  sex naked
36515
+ sex on video
36516
  sex papa
36517
  sex pc
36518
  sex porn
36539
  sex zit je
36540
  sex_
36541
  sex-advice
36542
+ sex-beba
36543
  sex-blog
36544
  sex-budd
36545
  sex-cam
36546
+ sex-capade
36547
+ sex-chat
36548
  sex-clermont
36549
  sex-club
36550
  sex-dat
36565
  sex-kat
36566
  sex-kontakt
36567
  sex-live
36568
+ sex-love
36569
  sex-mama
36570
  sex-mount
36571
  sex-movie
36572
  sex-mp
36573
  sex-naked
36574
+ sex-on-video
36575
  sex-papa
36576
  sex-pc
36577
  sex-porn
36602
  sex>
36603
  sex2call
36604
  sexadvice
36605
+ sexbeba
36606
  sexblog
36607
  sexbudd
36608
  sexcam
36609
+ sexcapade
36610
+ sexchat
36611
  sexclub
36612
  sexdat
36613
  sexelist
36625
  sexkat
36626
  sexkontakt
36627
  sexlive
36628
+ sexlove
36629
  sexmama
36630
  sexmount
36631
  sexmovie
36638
  sexo-brutal
36639
  sexo-mon
36640
  sexomon
36641
+ sexonvideo
36642
  sexpapa
36643
  sexpc
36644
  sexporn
36678
  sexvid
36679
  sexvirgin
36680
  sexweb
36681
+ sexy baccarat
36682
  sexy blog
36683
  sexy escort
36684
  sexy eskort
36700
  sexy women
36701
  sexy_
36702
  sexy-app
36703
+ sexy-baccarat
36704
  sexy-blog
36705
  sexy-escort
36706
  sexy-eskort
36730
  sexy.php
36731
  sexy2call
36732
  sexyapp
36733
+ sexybaccarat
36734
  sexyblog
36735
  sexyescort
36736
  sexyeskort
36751
  sg-launch
36752
  sgames.co
36753
  sglaunch
36754
+ shade theme
36755
+ shade-theme
36756
  shag.ru
36757
  shame on google
36758
  shanghai date
36891
  shemale-porn
36892
  shemale-sex
36893
  shemale-vid
36894
+ shiba coin
36895
+ shiba-coin
36896
+ shibacoin
36897
  shield your self
36898
  shift dress
36899
  shift-dress
36900
  shiftdress
36901
+ shipping winning
36902
+ shipping-winning
36903
  shirt cease
36904
  shirt cheap
36905
  shirt custom
37012
  shoeonline
37013
  shoeout
37014
  shoepromo
 
37015
  shoes 2020
37016
  shoes 2021
37017
+ shoes 2022
37018
  shoes america
37019
  shoes announce
37020
  shoes dior
37031
  shoes web store
37032
  shoes woman
37033
  shoes women
 
37034
  shoes-2020
37035
  shoes-2021
37036
+ shoes-2022
37037
  shoes-america
37038
  shoes-cheap
37039
  shoes-cloth
37056
  shoes.mobi
37057
  shoes.name
37058
  shoes+
 
37059
  shoes2020
37060
  shoes2021
37061
+ shoes2022
37062
  shoesale
37063
  shoesamerica
37064
  shoescloth
37076
  shoesuk
37077
  shoesus
37078
  shoeuk
37079
+ shonuji
37080
  shoot-tequila
37081
  shop bán phụ
37082
  shop blog
37089
  shop makeup
37090
  shop online
37091
  shop our homecoming
37092
+ shop place near
37093
+ shop places near
37094
  shop sell perfume
37095
  shop sells perfume
37096
  shop thai
37111
  shop-online
37112
  shop-our-homecoming
37113
  shop-pin
37114
+ shop-place-near
37115
+ shop-places-near
37116
  shop-shoe
37117
  shop-thai
37118
  shop-to-you
37171
  short ugg
37172
  short-bodycon
37173
  short-ugg
37174
+ shortedlink
37175
  shorttermloan
37176
  shortugg
37177
  shot.you
37216
  si#mple
37217
  sia ottimo
37218
  sia-ottimo
37219
+ sialis0
37220
+ sialis1
37221
+ sialis2
37222
+ sialis3
37223
+ sialis4
37224
+ sialis5
37225
+ sialis6
37226
+ sialis7
37227
+ sialis8
37228
+ sialis9
37229
  sibutramine
37230
+ side promo
37231
+ side-promo
37232
+ sidepromo
37233
  sidify prog
37234
  sidify-prog
37235
  sieg heil
37354
  sistemas-bolsa
37355
  sistemas-populare
37356
  sistershit
 
 
37357
  site ::
37358
  site !
 
37359
  site (:
37360
  site =)
37361
+ site about animal
37362
  site amor
37363
  site and comment
37364
  site and save
37373
  site is extreme
37374
  site is fastidious
37375
  site is invaluable
37376
+ site is practical
37377
  site is priceless
37378
+ site is really practical
37379
  site is truly
37380
  site link
37381
  site load speed
37385
  site now ;)
37386
  site offer
37387
  site offic
37388
+ site optim
37389
  site owner
37390
  site particular
37391
  site platform
37394
  site proprietor
37395
  site provid
37396
  site que fale
37397
+ site selot
37398
+ site stresser
37399
  site taste
37400
  site technique
37401
  site theme
37419
  site-link
37420
  site-offer
37421
  site-offic
37422
+ site-optim
37423
  site-owner
37424
  site-particular
37425
  site-platform
37427
  site-post
37428
  site-proprietor
37429
  site-provid
37430
+ site-selot
37431
+ site-stresser
37432
  site-taste
37433
  site-technique
37434
  site-theme
37441
  site:-
37442
  site:)
37443
  site? my web
 
 
37444
  site.vip
37445
  site/essay
37446
  site24
37467
  sitemizi-siyaret
37468
  sitemizi-ziyaret
37469
  siteoffic
37470
+ siteoptim
37471
  sites and blogs
37472
  sites luke
37473
  sites on the internet
37477
  sites24
37478
  sitesi tıkla
37479
  sitesi-tıkla
37480
+ sitestresser
37481
  siteuffic
37482
  sitevip
37483
  siteweb
37495
  sitougg
37496
  situs ilegal
37497
  situs judi
37498
+ situs online
37499
+ situs permainan
37500
  situs poker
37501
  situs qq
37502
+ situs slot
37503
  situs togel
37504
+ situs_slot
37505
  situs-ilegal
37506
  situs-judi
37507
+ situs-online
37508
+ situs-permainan
37509
  situs-poker
37510
  situs-qq
37511
+ situs-slot
37512
  situs-togel
37513
  situsqq
37514
  siutpd
37542
  skilledblog
37543
  skillset expert
37544
  skillset-expert
37545
+ skin care cosmetic
37546
  skin club
37547
+ skin concept
37548
  skin pigment
37549
  skin_pigment
37550
+ skin-care-cosmetic
37551
  skin-care-review
37552
  skin-club
37553
+ skin-concept
37554
  skin-pigment
37555
  skincare-review
37556
  skincare-work
37557
  skincarereview
37558
  skincarework
37559
  skinclub
37560
+ skinconcept
37561
  skinnys review
37562
  skinnys-review
37563
  skinnysreview
37584
  skortimber
37585
  skup-aut
37586
  skup,aut
37587
+ sky pharm
37588
+ sky-pharm
37589
+ skypharm
37590
  skyrocket you
37591
  skyrocket-you
37592
+ sleazy attorn
37593
  sleazy lawyer
37594
+ sleazy-attorn
37595
  sleazy-lawyer
37596
  sledge baseball
37597
  sledge bat
37616
  slipperskhaki
37617
  slme genuine
37618
  slongchamp
37619
+ slot depo
37620
+ slot gacor
37621
+ slot game
37622
  slot machine
37623
+ slot online
37624
+ slot qq
37625
+ slot tempat
37626
+ slot terbaik
37627
+ slot terbesar
37628
+ slot terga
37629
+ slot terlengkap
37630
+ slot terpercaya
37631
+ slot_gacor
37632
+ slot-depo
37633
+ slot-gacor
37634
+ slot-game
37635
  slot-machine
37636
+ slot-online
37637
+ slot-qq
37638
+ slot-tempat
37639
+ slot-terbaik
37640
+ slot-terbesar
37641
+ slot-terga
37642
+ slot-terlengkap
37643
+ slot-terpercaya
37644
+ slotgacor
37645
  slotmachine
37646
+ slotonline
37647
+ slotqq
37648
  slots blackjack
37649
  slots machine
37650
+ slots online
37651
  slots rtp
37652
+ slots_on_the_internet
37653
  slots-blackjack
37654
  slots-machine
37655
+ slots-on-the-internet
37656
+ slots-online
37657
  slots-rtp
37658
  slots, blackjack
37659
  slotsmachine
37715
  smarketoreview
37716
  smarketosecret
37717
  smarketosoftware
37718
+ smart casino
37719
  smart hoverboard
37720
  smart-balance
37721
+ smart-buy
37722
+ smart-casino
37723
  smart-drug
37724
  smart-hoverboard
37725
  smart-watch-gps
37726
  smartbalance
37727
  smartbeting
37728
  smartbets
37729
+ smartbuy
37730
+ smartcasino
37731
  smartdrug
37732
  smarthoverboard
37733
  smartly written article
37739
  smith-sold
37740
  smithsold
37741
  smm pannel
37742
+ smm supreme
37743
+ smm-supreme
37744
+ smmsupreme
37745
  smnall
37746
  smok priv
37747
  smok-priv
37758
  smurf account
37759
  smurf-account
37760
  smurfaccount
37761
+ snabb leveran
37762
+ snabb-leveran
37763
  snapback-cap
37764
  snapbacks
37765
  snapchat ++
37766
  snapchat intro
37767
+ snapchat like
37768
  snapchat monetiz
37769
  snapchat money
37770
  snapchat privado
37772
  snapchat you tube
37773
  snapchat youtube
37774
  snapchat-intro
37775
+ snapchat-like
37776
  snapchat-monetiz
37777
  snapchat-money
37778
  snapchat-privado
37854
  socaltms
37855
  soccer betting
37856
  soccer jersey sale
37857
+ soccer wager
37858
  soccer-betting
37859
  soccer-jersey-sale
37860
+ soccer-wager
37861
  soccerbet
37862
  soccerjerseyclub
37863
  soccerjerseysale
37864
  soccerjerseysclub
37865
+ soccerwager
37866
  sociable worker
37867
  social butler
37868
  social buzz
37911
  softsecret
37912
  software beneath
37913
  software house
37914
+ software kasir
37915
  software program operate
37916
  software secret
37917
  software-beneath
37918
  software-house
37919
+ software-kasir
37920
  software-program-operate
37921
  software-secret
37922
  software.in
37990
  solicitar un presta
37991
  solicitar-un-presta
37992
  solicitous afternoon
37993
+ solidcord german
37994
+ solidcord philip
37995
+ solidcord platform
37996
+ solidcord-platform
37997
+ solidcordplatform
37998
+ solidray german
37999
+ solidray official
38000
+ solidray philip
38001
+ solidray platform
38002
+ solidray-german
38003
+ solidray-official
38004
+ solidray-philip
38005
+ solidray-platform
38006
+ solidraygerman
38007
+ solidrayofficial
38008
+ solidrayphilip
38009
+ solidrayplatform
38010
  solo cheat
38011
  solo-cheat
38012
  solução
38027
  some %
38028
  some coinage
38029
  some extra ass
38030
+ some free gem
38031
  some functionalitie
38032
  some genuinely great
38033
  some ideas are new
38037
  some real interest
38038
  some really interest
38039
  some-coinage
38040
+ some-free-gem
38041
  some-functionalitie
38042
  somedias
38043
  somee one
38061
  soon:)
38062
  sosial media
38063
  sosial-media
38064
+ soulmate sketch
38065
+ soulmate-sketch
38066
+ soulmatesketch
38067
  sound like you know
38068
  source blossom
38069
  source of incomes
38119
  sparkle-ugg
38120
  sparkleugg
38121
  speaking approximate
38122
+ speaking learning
38123
  special approximate
38124
  special daay
38125
  special-approximate
38130
  specials-wood
38131
  specialty-transfer
38132
  specialtytransfer
38133
+ specific as feasible
38134
  specific gift
38135
  specific-gift
38136
+ specifics as feasible
38137
  specifucally
38138
+ speculative institute
38139
  spedified
38140
  speed proxi
38141
  speed proxy
38166
  spicy-bbw
38167
  spider solitaire
38168
  spider-solitaire
38169
+ spiel automat
38170
+ spiel casino
38171
+ spiel-automat
38172
+ spiel-casino
38173
+ spielautomat
38174
+ spielcasino
38175
  spielleiterin be
38176
  spielleiterin ist
38177
  spilivanie derev'yev
38178
  spilivanie derev’yev
38179
+ spilivanie derevyev
38180
+ spilivanie-derevyev
38181
  spip.asp
38182
  spip.cfm
38183
  spip.ctr
38285
  sprawdzone narzedzia
38286
  sprawdzone narzędzia
38287
  sprawdzone-narzedzia
 
38288
  sprawdzonenarzedzia
 
38289
  sprinkler tune
38290
  sprinkler-tune
38291
  sprinklertune
38292
+ sprinter awning
38293
+ sprinter body
38294
  sprinter repair
38295
+ sprinter-awning
38296
+ sprinter-body
38297
  sprinter-repair
38298
  sprzataniu powier
38299
  sprzataniu-powier
38396
  steroid-satin
38397
  steroid-scam
38398
  steroid-siparis
38399
+ steroidapoteket
38400
  steroidcounter
38401
  steroidfake
38402
  steroidler online
38423
  steroidsripoff
38424
  steroidsscam
38425
  stevewynnloan
38426
+ stew about hosting
38427
+ stew about upgrade
38428
  stewart furniture
38429
  stewart patio
38430
  stewart-furniture
38565
  strategies-for
38566
  strategii binarny
38567
  strategii-binarny
38568
+ strategy a visit
38569
  strategy for increasing more
38570
  strategy-for
38571
  stratificat.
38669
  stumpmaster
38670
  stunning blog
38671
  stunning brilliance
38672
+ stunning page
38673
+ stunning post
38674
+ stunning quest
 
 
38675
  stunning site
38676
+ stunning story
 
38677
  stunning web
38678
  stunningq
38679
  style design for you
38695
  sua postagem
38696
  sua-mulher
38697
  sua-pagina
 
38698
  sua-postagem
38699
  sub & fav
38700
  sub & like
38759
  substance deal
38760
  substance-deal
38761
  substancedeal
38762
+ substantive congestion
38763
  subtitle indo
38764
  subtitle-indo
38765
  subtitleindo
38791
  successblog
38792
  successful article
38793
  successful blog
38794
+ successful marketing
38795
  successful page
38796
  successful post
38797
  successful site
38798
  successful web
38799
  successful-article
38800
  successful-blog
38801
+ successful-marketing
38802
  successful-page
38803
  successful-post
38804
  successful-site
38904
  super-comp
38905
  super-fortnite
38906
  super-locksmith
38907
+ super-positive customer
38908
+ super-positive-customer
38909
  super-real
38910
  superaffiliate
38911
  superarticle
38944
  superiorcompan
38945
  superiorresourc
38946
  superiorsport
38947
+ superlative thesis
38948
  superlocksmith
38949
  superseller
38950
  superstar class
39072
  swarovski-jp
39073
  swarovskijap
39074
  swarovskijp
39075
+ swedish massage
39076
+ swedish_massage
39077
+ swedish-massage
39078
+ swedishmassage
39079
  sweet article
39080
  sweet blog
39081
  sweet cum
39237
  takie poglosk
39238
  takie pogłosk
39239
  takie-poglosk
39240
+ takim blogu
39241
  takin note
39242
  takin-note
39243
  taking curcumin
39244
  taking-curcumin
39245
+ takipci hilesi
39246
+ takipçi hilesi
39247
  takipci satin
39248
  takipçi satın
39249
  takipci_satin
39250
+ takipci-hilesi
39251
  takipci-satin
39252
  takje care
39253
  takje-care
39378
  taschenleerer leder
39379
  taschenleerer-leder
39380
  taschenlongchamp
39381
+ tasinma firmasi
39382
+ tasinma-firmasi
39383
+ taşınma firması
39384
  taskss
39385
  tastegood.co
39386
  tatoo cheap
39436
  tatuagens feminin
39437
  tatuagens_
39438
  tatuagens-feminin
39439
+ tavsiye 360
39440
  tavsiye filmler izle
39441
+ tavsiye-360
39442
  tavsiye-filmler-izle
39443
+ tavsiye360
39444
  tax book
39445
  tax debt
39446
  tax idea
39479
  teamwork-coach
39480
  teamworkcoach
39481
  technique kids
39482
+ technique of blog
39483
  techniue
39484
  technolgy news
39485
  technolgy-news
39487
  technological-globe
39488
  tecnicas para voce
39489
  técnicas para você
39490
+ tecnico electrodomestico
39491
+ tecnico oficial
39492
  tecnico y asistencia tecnica
39493
  técnico y asistencia tecnica
39494
  tecnico y servicio tecnica
39495
  técnico y servicio tecnica
39496
+ tecnico-electrodomestico
39497
+ tecnico-oficial
39498
+ tecnicooficial
39499
  teen cam
39500
  teen female
39501
  teen lesb
39526
  teenpussy
39527
  teens cam
39528
  teens porn
39529
+ teens sex
39530
  teens webcam
39531
  teens-cam
39532
  teens-porn
39533
+ teens-sex
39534
  teens-webcam
39535
  teenscam
39536
  teensex
39537
  teensporn
39538
+ teenssex
39539
  teenswebcam
39540
  teenvirgin
39541
  teenwebcam
39544
  teeshollis
39545
  teeth teeth
39546
  tegs:
39547
+ tek tek google
39548
+ tek-tek-google
39549
  tekhbez
39550
+ tele entulho
39551
  tele gratuit
39552
  tele realite
39553
  télé réalité
39554
+ tele-entulho
39555
  tele-gratuit
39556
  tele-realite
39557
  télé-réalité
39558
+ teleentulho
39559
  telefono de informacion
39560
  teléfono de información
39561
  telegratuit
39562
  telepon-
39563
  telerealite
39564
  téléréalité
39565
+ television channel for
39566
+ television channels for
39567
  telhadista-em
39568
  telling everything concern
39569
  tem.p.test
39593
  tengo una web
39594
  tennisstream
39595
  tenormin
39596
+ teor de qualidade
39597
  terima barang
39598
  terima-barang
39599
  term dinner
39625
  test.in
39626
  test.tumblr
39627
  test1.
39628
+ tested resume
39629
  testimonail
39630
  testosterona
39631
  testosterone-boost
39735
  that youre
39736
  that-gia-re
39737
  that-i-may-subscribe
 
39738
  that, great article
39739
  that, great blog
39740
  that, great page
39886
  theme for blog
39887
  theme generat
39888
  theme of your blog
39889
+ theme of your page
39890
  theme of your site
39891
+ theme of your web
39892
  theme sale
39893
  theme-basic
39894
  theme-generat
39937
  thetwo
39938
  theuniversity
39939
  they are discussing online
39940
+ they dont
39941
  they loophole
39942
  they the t
39943
  they-loophole
40020
  this blog:
40021
  this blog's post
40022
  this blog’s post
40023
+ this blogs post
40024
  this complete blog
40025
  this complete page
40026
  this complete post
40065
  this post will assist
40066
  this proficiency
40067
  this publish
40068
+ this pure article
40069
+ this pure blog
40070
+ this pure page
40071
+ this pure site
40072
+ this pure web
40073
  this site before
40074
  this site certain
40075
  this site defin
40165
  thomassabosale
40166
  thomassabouk
40167
  thomassabous
40168
+ thor love
40169
+ thor-love
40170
+ thorlove
40171
  thornhill ambassador
40172
  thornhill-ambassador
40173
  thornhillambassador
40189
  thousand%
40190
  thportfol
40191
  three %
40192
+ three posts are $
40193
  thriloed
40194
  thrity
40195
  throat blow
40207
  through the web
40208
  through this blog
40209
  through this web
40210
+ through your article
40211
  through your blog
40212
+ through your page
40213
+ through your post
40214
+ through your web
40215
  through-a-blog
40216
  through-that-blog
40217
  through-that-web
40309
  tiktok beğeni
40310
  tiktok fan
40311
  tiktok intro
40312
+ tiktok like
40313
  tiktok monetiz
40314
  tiktok money
40315
  tiktok privado
40320
  tiktok-fan
40321
  tiktok-hack
40322
  tiktok-intro
40323
+ tiktok-like
40324
  tiktok-monetiz
40325
  tiktok-money
40326
  tiktok-privado
40429
  tinydick
40430
  tinytowtim
40431
  tion?i
40432
+ tip:the
40433
  tipblog
40434
  tipo más habit
40435
  tipo-mas-habit
40436
  tips beberapa
40437
  tips blog
40438
  tips daily
 
40439
  tips for 2020
40440
  tips for 2021
40441
+ tips for 2022
40442
  tips for a success
40443
  tips for success
40444
  tips membeli
40510
  to daylight
40511
  to ddo
40512
  to gget
40513
+ to look to for
40514
  to my blog
40515
  to my page
40516
  to my sire
40540
  to-truly
40541
  to.p.ic
40542
  to.pi.c
40543
+ toan dau tu
40544
+ toàn đầu tư
40545
+ toan-dau-tu
40546
  toasterovensnow
40547
  tobuy.in
40548
  today news
40657
  top stop
40658
  top tier
40659
  top top
40660
+ top venture capital
40661
  top vid
40662
  top viral
40663
  top_bank
40694
  top-tier
40695
  top-tool
40696
  top-top
40697
+ top-venture-capital
40698
  top-vid
40699
  top-viral
40700
  top.asses
40713
  topbvlgar
40714
  topcontractor
40715
  topdatabase
40716
+ topdatalist
40717
  topfakeid
40718
  topforum
40719
  topfreecam
40803
  totosly
40804
  touche. great
40805
  touche. so
40806
+ tour site
40807
  tour-discount
40808
+ tour-site
40809
  tourdiscount
40810
+ toursite
40811
  towarowe anna lewandowska
40812
  town|
40813
  toys,sex
40820
  tracing service
40821
  tracing-service
40822
  tracingservice
40823
+ track a phone
40824
  track hyperlink
40825
+ track-a-phone
40826
  track-back
40827
  track-click
40828
  track-hyperlink
40841
  trackertrace
40842
  trackertracing
40843
  trackhyperlink
40844
+ tracking a phone
40845
  tracking-a-phone
40846
  tradaoquan
40847
  trade_you
40848
  trading-method
40849
+ traditional bath design
40850
+ traditional bathroom design
40851
+ traffic attorn
40852
  traffic bot
40853
  traffic exchang
40854
  traffic ivy
40855
+ traffic lawyer
40856
  traffic software
40857
+ traffic-attorn
40858
  traffic-bot
40859
  traffic-exchang
40860
  traffic-ivy
40861
+ traffic-lawyer
40862
  traffic-software
40863
  trafficbot
40864
  trafficivy
40865
  trafficvance
40866
  trafficz
40867
  traffscience
40868
+ trailer counter
40869
+ trailer fabric
40870
+ trailer reno
40871
+ trailer resto
40872
  trailer sale
40873
+ trailer solar
40874
+ trailer-counter
40875
+ trailer-fabric
40876
+ trailer-reno
40877
+ trailer-resto
40878
  trailer-sale
40879
+ trailer-solar
40880
  trailersale
40881
  train pet dog
40882
  training pet dog
40933
  trello freetalk
40934
  trello-freetalk
40935
  tremendous blog
40936
+ tremendous feminist
40937
  tremendous post
40938
  tremendous site
40939
  tremendous web
40969
  trial a bit
40970
  trial-software-install
40971
  trickphoto
40972
+ triệu đồng
40973
  trik selalu
40974
  trik-selalu
40975
  trimethoprim
40980
  trimoxazole-tablet
40981
  triviatrivia
40982
  trollapp
40983
+ trong game
40984
+ trong-game
40985
  trong-top-5
40986
  trong-top-10
40987
  trong-top-five
40994
  trovaprezzi
40995
  trruly
40996
  truc-tiep-bong-da
40997
+ truck center
40998
+ truck centre
40999
+ truck counter
41000
+ truck paint
41001
+ truck reno
41002
+ truck resto
41003
+ truck-center
41004
+ truck-centre
41005
+ truck-counter
41006
+ truck-paint
41007
+ truck-reno
41008
+ truck-resto
41009
  true search
41010
  truly a fastidious
41011
  truly data you
41012
+ truly enjoy
41013
  truly fastidious
41014
  truly fruitful
41015
  truly peaked
41016
+ truly pleasant thing
41017
  truly sharing nice
41018
  truly suppose
41019
  truly thk
41020
  truly typically
41021
  truly very
41022
  truly when some
41023
+ truly-enjoy
41024
  truly-fastidious
41025
  truly-fruitful
41026
  truly-peaked
41045
  trumptrump
41046
  trumpvote
41047
  trumpwon
41048
+ trust website
41049
+ trust-website
41050
+ trusted website
41051
+ trusted-website
41052
+ trusting website
41053
+ trusting-website
41054
  truth however
41055
  truth teaching article
41056
  truth-however
41119
  turtle-home
41120
  turtlehome
41121
  turystyka
41122
+ tutor near me
41123
  tutorial.asp
41124
  tutorial.cfm
41125
  tutorial.ctr
41149
  twit.t.
41150
  twitter advert
41151
  twitter intro
41152
+ twitter like
41153
  twitter monetiz
41154
  twitter money
41155
  twitter privado
41159
  twitter-advert
41160
  twitter-hack
41161
  twitter-intro
41162
+ twitter-like
41163
  twitter-monetiz
41164
  twitter-money
41165
  twitter-privado
41166
  twitter-shop
41167
  twitter-takipci
41168
  two %
41169
+ two posts are $
41170
  twoj blog
41171
  twój blog
41172
  twojego blog
41206
  ua-eqt-sup
41207
  uae escort
41208
  uae eskort
41209
+ uae shop
41210
  uae-escort
41211
  uae-eskort
41212
+ uae-shop
41213
+ uae.shop
41214
  uaeescort
41215
  uaeeskort
41216
  uaepearl
41217
+ uaeshop
41218
  uaewomensclub
41219
  uau incrivel
41220
  uau incrível
41627
  unique-interact
41628
  uniquebroker
41629
  uniqueinteract
41630
+ unirae
41631
+ united stattes
41632
  unitedidesign
41633
+ unitted states
41634
  universal key
41635
  universal-key
41636
  universalkey
41637
+ university suggest
41638
+ university_suggest
41639
+ university-suggest
41640
  unknown.co
41641
  unknown.in
41642
  unknown.pl
41670
  unlockiphone
41671
  unlockmobil
41672
  unlockphone
41673
+ unlucky reality
41674
+ unlucky-reality
41675
  unono chaus
41676
  unono-chaus
41677
  unonochaus
41765
  upgrade-your-bed
41766
  upgrade-your-living
41767
  upgradekey
41768
+ upholstery cost
41769
+ upholstery couch
41770
+ upholstery-cost
41771
+ upholstery-couch
41772
  upload and promo
41773
  upload foto
41774
  upload-file
41936
  uuse
41937
  uustore
41938
  uy/image
41939
+ uygun fiyatlarla
41940
+ uygun-fiyatlarla
41941
 
41942
 
41943
  v buck buy
42019
  value-web
42020
  valueble
42021
  valueserver
42022
+ van bathroom
42023
+ van body
42024
+ van counter
42025
+ van sound
42026
+ van washing
42027
+ van-bathroom
42028
+ van-body
42029
+ van-counter
42030
+ van-sound
42031
+ van-washing
42032
+ vanguard education
42033
  vanilla balance
42034
  vanilla gift
42035
  vanilla-balance
42042
  vape cart
42043
  vape clearance
42044
  vape cloud
42045
+ vape daily
42046
  vape e-juice
42047
  vape ejuice
42048
  vape juice
42056
  vape-cart
42057
  vape-clearance
42058
  vape-cloud
42059
+ vape-daily
42060
  vape-e-juice
42061
  vape-ejuice
42062
  vape-juice
42069
  vapecart
42070
  vapeclearance
42071
  vapecloud
42072
+ vapedaily
42073
  vapeejuice
42074
  vapejuice
42075
  vapepen
42079
  vaper-ejuice
42080
  vaperejuice
42081
  vapes cart
42082
+ vapes daily
42083
  vapes kit
42084
  vapes-cart
42085
+ vapes-daily
42086
  vapes-kit
42087
  vapesave
42088
  vapescart
42089
+ vapesdaily
42090
  vapestick
42091
  vapo save
42092
  vapo-save
42093
  vapor cloud
42094
+ vapor daily
42095
  vapor ix
42096
  vapor juice
42097
  vapor pen
42098
  vapor stick
42099
  vapor x
42100
  vapor-cloud
42101
+ vapor-daily
42102
  vapor-ix
42103
  vapor-juice
42104
  vapor-pen
42105
  vapor-stick
42106
  vapor-x
42107
  vaporcloud
42108
+ vapordaily
42109
  vaporix
42110
  vaporizer pen
42111
  vaporizer-pen
42112
  vaporjuice
42113
  vaporpen
42114
+ vapors daily
42115
+ vapors-daily
42116
+ vaporsdaily
42117
  vaporstick
42118
  vaporx
42119
  vaposave
42120
+ vapour daily
42121
  vapour ix
42122
  vapour juice
42123
  vapour pen
42124
  vapour stick
42125
  vapour x
42126
  vapour-cloud
42127
+ vapour-daily
42128
  vapour-ix
42129
  vapour-juice
42130
  vapour-pen
42131
  vapour-stick
42132
  vapour-x
42133
  vapourcloud
42134
+ vapourdaily
42135
  vapourix
42136
  vapourizer pen
42137
  vapourizer-pen
42138
  vapourjuice
42139
+ vapours daily
42140
+ vapours-daily
42141
+ vapoursdaily
42142
  vapourstick
42143
  vapourx
42144
  varabella
42146
  variant1
42147
  variant2
42148
  variant3
42149
+ vay tiền mặt
42150
  vbucks
42151
  vbyj
42152
  vc free
42212
  vergin-porn
42213
  verginporn
42214
  verify itunes should
42215
+ verify my site
42216
  verify online
42217
  verify their site
42218
  verify-out
42306
  vetementfemme
42307
  vetementhomme
42308
  veterinarnaya
42309
+ vetranarian
42310
  vetrinary
42311
  vf gratuit
42312
  vf-gratuit
42381
  video it would also
42382
  video magnif
42383
  video marketing
42384
+ video on sex
42385
  video ought not
42386
  video para canal
42387
  vídeo para canal
42415
  video-erotic
42416
  video-magnif
42417
  video-marketing
42418
+ video-on-sex
42419
  video-para-canal
42420
  video-poker
42421
  video-pokie
42548
  viewblog
42549
  viewentry
42550
  viewer to click
42551
+ viewers of article
42552
+ viewers of blog
42553
+ viewers of page
42554
+ viewers of site
42555
+ viewers of web
42556
  viewers to click
42557
  viewijng
42558
  viewlink
42562
  viewtopic
42563
  vigara
42564
  vigrx
42565
+ viktminskning
42566
  villa-for-rent
42567
  villas-for-rent
42568
  vimax
42648
  virgin porn
42649
  virgin-porn
42650
  virginporn
42651
+ virtual coach
42652
  virtual credit
42653
  virtual funds
42654
  virtual sex
42655
+ virtual-coach
42656
  virtual-credit
42657
  virtual-funds
42658
  virtual-sex
42709
  visit-web
42710
  visitant
42711
  visitar blog
42712
+ visitar mi sitio
42713
  visitar-blog
42714
  visited android app
42715
  visited blog
42796
  vk.cc
42797
  vkews
42798
  vkgnfx
42799
+ vod request
42800
+ vod service
42801
+ vod-request
42802
+ vod-service
42803
  vodstreaming
42804
  vogue toms
42805
  vogue-toms
43030
  warfarinonline
43031
  warmjp
43032
  warranty high
43033
+ warriors jers
43034
+ warriors-jers
43035
+ warriorsjers
43036
  wars cheat
43037
  wars hack
43038
  wars-cheat
43046
  warts-garden
43047
  wartsclinic
43048
  wartsgarden
43049
+ was consice
43050
  was ddoing
43051
  was pretty candy
43052
  wasbusiness
43061
  watch seiko
43062
  watch the best movie
43063
  watch this site
43064
+ watch this video
43065
  watch-full-length
43066
  watch-hdonline
43067
  watch-instant
43070
  watch-replic
43071
  watch-seiko
43072
  watch-this-site
43073
+ watch-this-video
43074
  watch-trailer-and
43075
  watch-vid
43076
  watch-watch
43093
  wating for you
43094
  watte ausgestopft
43095
  watte-ausgestopft
43096
+ wave depression
43097
+ wave-depression
43098
  way of amateur
43099
  way of blog
43100
  way your design
43132
  wearinbed
43133
  weave-hair
43134
  weavehair
43135
+ web about animal
43136
  web anal
43137
  web based college
43138
  web blog;
43151
  web is extreme
43152
  web is fastidious
43153
  web is invaluable
43154
+ web is practical
43155
  web is priceless
43156
+ web is really practical
43157
  web is truly
43158
  web market
43159
  web online
43160
  web optim
43161
  web owner
43162
+ web page ;
43163
+ web page :
43164
  web page ..
43165
  web page …
43166
  web page daily
43176
  web property
43177
  web scheme
43178
  web seo
43179
+ web sex
43180
  web sie
43181
  web sikte
43182
  web site ..
43189
  web sites post
43190
  web sitte
43191
  web sjte
43192
+ web stresser
43193
  web sute
43194
  web therefore
43195
  web through google
43228
  web-property
43229
  web-scheme
43230
  web-seo
43231
+ web-sex
43232
  web-sie
43233
  web-site
43234
  web-sitte
43235
  web-sjte
43236
  web-solution
43237
+ web-stresser
43238
  web-therefore
43239
  web-traff
43240
  web-user-acquire
43254
  webbmaster
43255
  webcam babe
43256
  webcam site
43257
+ webcam teen
43258
  webcam-babe
43259
  webcam-site
43260
+ webcam-teen
43261
  webcambabe
43262
  webcamchat
43263
  webcamsite
43264
+ webcamteen
43265
  webcontent
43266
  webdesign.co
43267
  webdl
43275
  weblog link
43276
  weblog post
43277
  weblog thank
43278
+ weblog unintention
43279
  weblog-link
43280
  weblog. thank
43281
  weblogg
43303
  webpage from
43304
  webpage is loading
43305
  webpage it is
 
43306
  webpage on regular
43307
  webpage post
43308
  webpage thank
43312
  webpage-for-any
43313
  webpage-from
43314
  webpage-is-loading
 
43315
  webpage-visit
43316
  webpage-you
43317
  webpage;
43323
  webpage’s article
43324
  webpage’s blog
43325
  webpage’s post
43326
+ webpagelink
43327
  webpages article
43328
  webpages blog
43329
  webpages post
43348
  websit was
43349
  websit-was
43350
  website ..
43351
+ website …
43352
  website anjing
43353
  website as friend
43354
  website bookmark
43361
  website everyday
43362
  website for every
43363
  website from where
43364
+ website india
43365
  website inquiry
43366
  website is a center
43367
  website is a centre
43368
+ website is appreciate
43369
+ website is beneficial
43370
+ website is benefit
43371
  website is loading
43372
  website it help
43373
  website kami
43395
  website through google
43396
  website traff
43397
  website training
43398
+ website unintention
43399
  website usa
43400
  website using
43401
  website visit
43402
+ website was ;
43403
+ website was :
43404
  website was ..
43405
  website was …
43406
  website was..
43420
  website-everyday
43421
  website-for-essay
43422
  website-for-every
43423
+ website-india
43424
  website-inquiry
43425
  website-is-loading
43426
  website-it-help
43445
  website; this
43446
  website. thank
43447
  website..
43448
+ website…
43449
  website.keep
43450
  website's article
43451
  website's post
43453
  website’s post
43454
  website}
43455
  website1
43456
+ websitelink
43457
  websitelook
43458
  websitenet
43459
  websiteonline
43491
  websolution
43492
  webssite
43493
  webste
43494
+ webstresser
43495
  websute
43496
  webtherefore
43497
  webviewconsult
43536
  welcome-to-my-site
43537
  welcome-to-my-web
43538
  welcometonginx
43539
+ welcoming muted
43540
+ welcoming, muted
43541
  well donme
43542
  well informed people
43543
  well written!
43593
  wewe will
43594
  wewewe
43595
  what assets is
43596
+ what blog does
43597
  what does turn
43598
  what theyre
43599
  what up dear
43600
+ what weblog does
43601
+ what website does
43602
  what youre
43603
  what-blog
43604
  what-does-turn
43642
  where-sell
43643
  where-to-buy
43644
  where-to-get
43645
+ where-to-purchase
43646
  where-to-sell
43647
  where+can
43648
  where+to
43652
  wheresell
43653
  wheretobuy
43654
  wheretoget
43655
+ whgile
43656
+ whho did
43657
+ whho has
43658
+ whho will
43659
  which blog platform
43660
  which site platform
43661
  which weblog platform
43675
  whn the
43676
  whn you
43677
  who don know
43678
+ who dont
43679
  who theyre
43680
  who usess
43681
+ who youre
43682
  whoa this
43683
  whoa-this
43684
  whoah this
43698
  wholesale hand
43699
  wholesale iphone
43700
  wholesale jers
43701
+ wholesale jewel
43702
  wholesale jord
43703
  wholesale led
43704
  wholesale mlb
43724
  wholesale-hand
43725
  wholesale-iphone
43726
  wholesale-jers
43727
+ wholesale-jewel
43728
  wholesale-jord
43729
  wholesale-led
43730
  wholesale-mac
43747
  wholesalefree
43748
  wholesalehand
43749
  wholesalejers
 
43750
  wholesalejord
43751
  wholesaleled
43752
  wholesalemac
43766
  whorebutt
43767
  whttp
43768
  whwn choos
43769
+ why but this
43770
  why designing shabby
43771
  why_designing_shabby
43772
  why-designing-shabby
43787
  więcej tutaj
43788
  wiecej-tutaj
43789
  więcej-tutaj
43790
+ wiet soort
43791
+ wiet zaden
43792
+ wiet-soort
43793
+ wiet-zaden
43794
+ wietsoort
43795
+ wietzaden
43796
  wife app
43797
  wife-app
43798
  wife-tube
43859
  willebijoux
43860
  willesold
43861
  willhemp
43862
+ willl the
43863
  wilson jers
43864
  wilson-jers
43865
  wilsonjers
43911
  wirh you
43912
  wise quote
43913
  wise-quote
43914
+ wish online
43915
+ wish-online
43916
  wishing for blog
43917
+ wishonline
43918
  wispy lash
43919
  wispy-lash
43920
  witamina jest
43936
  with prepaid plastic
43937
  with professional skill
43938
  with retinoid
43939
+ with these site
43940
  with thhe
43941
  with this blog
43942
  with this page showing?
43977
  withthose
43978
  withwebtraffic
43979
  withwebvisit
43980
+ witth my
43981
+ witth our
43982
+ witth the
43983
+ witth this
43984
+ witth your
43985
  wiuth a
43986
  wiuth the
43987
  wlasciwy blog
44089
  wonderful homepage
44090
  wonderful informative
44091
  wonderful online
44092
+ wonderful paragraph
44093
  wonderful post
44094
  wonderful publish
44095
  wonderful read!
44102
  wonderful-homepage
44103
  wonderful-informative
44104
  wonderful-online
44105
+ wonderful-paragraph
44106
  wonderful-post
44107
  wonderful-publish
44108
  wonderful-read
44231
  words-essay
44232
  woriing
44233
  work !!
44234
+ work doer
44235
  work you have here
44236
  work you write
44237
+ work-doer
44238
  work-review
44239
  work-you-write
44240
  work!excellent
44241
  work!fantastic
44242
  work!wonderful
44243
  workable symptom
44244
+ workdoer
44245
  working, great job
44246
  workout-sale
44247
  workoutsale
44360
  write any article
44361
  write any essay
44362
  write any paper
44363
+ write college homework
44364
  write my article
44365
  write my essay
44366
  write my paper
44367
  write news title
44368
+ write on the blog
44369
+ write on the internet
44370
+ write on the net
44371
+ write on the page
44372
+ write on the web
44373
  write subsequent
44374
  write the e-book
44375
  write the ebook
44433
  writinghelper
44434
  writingpaper
44435
  writingservice
44436
+ written on the blog
44437
+ written on the internet
44438
+ written on the net
44439
+ written on the page
44440
+ written on the web
44441
  wrote an really
44442
  wrote the e-book
44443
  wtf brand
44653
  y pezone
44654
  y teta
44655
  y tetona
44656
+ y tte sigo
44657
  y-culo
44658
  y-pezone
44659
  y-teta
44675
  yahoo’s front page
44676
  yahoo’s home page
44677
  yahoospy
44678
+ yandas medya
44679
+ yandaş medya
44680
+ yandas-medya
44681
+ yandasmedya
44682
  yangin cıkıs
44683
  yangin kapisi
44684
  yangin merdiveni
44698
  yeezy3
44699
  yeezyboost
44700
  yhttp
44701
+ yil hediyeleri
44702
+ yil-hediyeleri
44703
  yiur blog
44704
  yiur business
44705
  yiur info
44706
+ yıl hediyeleri
44707
  yjjcw
44708
  yk cheap
44709
  yk-cheap
44797
  you for the blog
44798
  you for the post
44799
  you for the share
44800
+ you forthe
44801
  you gucci
44802
  you is very effective
44803
  you mayy
44869
  you’re sill
44870
  you”ll
44871
  you”re
44872
+ you@example
44873
  you`ll
44874
  you`re
44875
  youcanwear
44897
  your asthma so
44898
  your bed furniture
44899
  your bedroom play
44900
+ your bitcoin
44901
  your blog kept
44902
  your blog might
44903
  your blog on
44928
  your lover
44929
  your lung area
44930
  your marketer
44931
+ your marketing
44932
  your mode of describ
44933
  your mode of explain
44934
  your movie to put
44965
  your site really
44966
  your site seem
44967
  your site..
44968
+ your site…
44969
  your sites prior
44970
  your sites really
44971
  your sites seem
45008
  your wweb
45009
  your zits
45010
  your-account
45011
+ your-bitcoin
45012
  your-blog
45013
  your-blog-real
45014
  your-blogs-real
45029
  your-loan
45030
  your-lover
45031
  your-marketer
45032
+ your-marketing
45033
  your-new-important
45034
  your-new-stuff-regular
45035
  your-next-blog
45064
  your.mail@
45065
  youraccount
45066
  yourbanker
45067
+ yourbitcoin
45068
  yourblog
45069
  yourbudget
45070
  yourcredit
45120
  youtube mp4
45121
  youtube sens
45122
  youtube snap
45123
+ youtube takip
45124
  youtube vi
45125
  youtube-com
45126
  youtube-down
45132
  youtube-mp4
45133
  youtube-sens
45134
  youtube-snap
45135
+ youtube-takip
45136
  youtube-vi
45137
  youtube: how
45138
  youtube:how
45145
  youtubers earn
45146
  youtubesens
45147
  youtubesnap
45148
+ youtubetakip
45149
  youtubetomp3
45150
  youtubetomp4
45151
  youtubetv
45152
  youtubevi
45153
+ youtucam
45154
  youtvplay
45155
  youu
45156
  youur
45199
  z http
45200
  z.@
45201
  zabaw
45202
+ zaden kopen
45203
+ zaden-kopen
45204
  zafar islamov
45205
  zafar-islamov
45206
  zafarislamov
45492
  адекватного муж
45493
  адекватного-муж
45494
  админу
45495
+ активировать счет
45496
+ алкогол
45497
  альтернатива
45498
  анальной ебли
45499
  андроид
45533
  бесплатная-демо
45534
  бесплатная-диаг
45535
  бесплатно
 
 
 
 
45536
  бетор фирма
45537
  бетор-фирма
45538
  беторфирма
45550
  бутик отел
45551
  бутик-отел
45552
  быстро!
45553
+ в ватсап
45554
  валка деревьев
45555
  валка-деревьев
45556
  вариантов дизайна несколько
45595
  винтовой-нас
45596
  вклады сбербанк
45597
  вклады-сбербанк
45598
+ во ватсап
45599
  вольво (
45600
  вольво-вольво
45601
  вот - http
45602
  вот http
45603
  вот: http
45604
+ временная регистрация
45605
  все подробно
45606
  все-подробно
45607
  всем привет
45626
  гадание-online
45627
  гей питер
45628
  гей-питер
45629
+ гидра сайт
45630
  глубокое глот
45631
  глубокое-глот
45632
  говорим гово
45639
  говорю-гово
45640
  головные устройс
45641
  головные-устройс
45642
+ город топ
45643
  грузоперевозки
45644
  давайте обсудим
45645
  давайте-обсудим
45680
  длительное лечени
45681
  длительное-лечени
45682
  для взлома
45683
+ для ип
45684
  для сайт
45685
  для тела
45686
  для-взлома
45697
  доставка
45698
  доход
45699
  драйвера
45700
+ душу на простор
45701
  ԁa
45702
  ԁe
45703
  ԁi
45729
  заболевани
45730
  загородный дом
45731
  загородный-дом
45732
+ зайти на официальную
45733
  зайти на сайт
45734
  зайти-на-сайт
45735
  заказ
45760
  игровые
45761
  игровые автом
45762
  игровые-автом
45763
+ игровых автомат
45764
  иж пневмо
45765
  изготовлен
45766
  инете
45852
  леонбет
45853
  лечение зависимости
45854
  лечение мето
45855
+ лечение наркомании
45856
  лечение-зависимости
45857
+ лечение-мето
45858
+ лечение-наркомании
45859
  лечить наркомани
45860
  лечить-наркомани
45861
  лига легенд
45870
  любит глубокое
45871
  любит-глубокое
45872
  магаз
45873
+ магазин гидра
45874
  маркет
45875
  массажер тренажер
45876
  массажер-тренажер
45967
  оs
45968
  оt
45969
  оv
45970
+ образец обслуживания
45971
  обрезка деревьев
45972
  обрезка-деревьев
45973
  обучение
45989
  открыть сайт
45990
  открыть-сайт
45991
  отличные
45992
+ официальную гидру
45993
  официальный сайт
45994
  официальный-сайт
45995
  официальных
46019
  платки-батик
46020
  платок батик
46021
  платок-батик
46022
+ плей фортуна
46023
+ плейфортуна
46024
  под ключ
46025
  под-ключ
46026
  подарки
46107
  продолжительном-сроке
46108
  производство
46109
  промо
46110
+ прописка собственник
46111
  проститутки
46112
  просыпаются филосо
46113
  просыпаются-филосо
46138
  реальный-кардинг
46139
  реальный-муж
46140
  регистратор
46141
+ регистрация найти
46142
  реестр специал
46143
  реестр-специал
46144
  результаты лечени
46194
  с№
46195
  сµ
46196
  сайт hydra
46197
+ сайт omg
46198
  сайт визитк
46199
  сайт очень
46200
  сайт рассылки
46283
  сроке службы
46284
  сроке-службы
46285
  сруба
46286
+ ссылке
46287
  статей
46288
  стать богатым
46289
  стать-богатым
46368
  фитнесс клуб
46369
  фитнесс-клуб
46370
  форекс
46371
+ фортуна зеркало
46372
  форум
46373
  фото
46374
  футбол
46415
  эротика
46416
  эротиче
46417
  эротичес
46418
+ эти строки
46419
  этот сайт
46420
  этот-сайт
46421
  юридической
46423
  язык-алматы
46424
  языка алматы
46425
  языка-алматы
46426
+ якості link
46427
  яндekc
46428
  ԝa
46429
  ԝe
46466
  איפור לכלה
46467
  איפור ערב
46468
  בכירים בהייטק
46469
+ דירות דיסקרטיות
46470
+ דירות-דיסקרטיות
46471
  ויקיפדיה
46472
  חשפניות
46473
  טכנאי מזגנים
46477
  מאפרת מקצועית
46478
  מתקין מזגנים
46479
  תיקון מזגנים
46480
+ آگهی ارزان
46481
  آموزش شرط
46482
  أخبار , اخبار
46483
  أخبار اخبار
46492
  اخبار الرياضة
46493
  اخبار, الرياضة
46494
  اخر اخبار
46495
+ ادائیگی
46496
  ارائه ی تخصصی
46497
  ارخص سيرفر
46498
  از وبلاگ
46499
  ازواج حكاية
46500
  ازواج,حكاية
46501
  افراد ارزان
46502
+ افراد همجنس
46503
  افضل شركه
46504
  افلام اونلاين
46505
  اقل اسعار
46524
  اونلاين,انمي
46525
  ايجي بست
46526
  ايفون مجانية
46527
+ بازاریابی
46528
  بازی انفجار
46529
+ باکرگی
46530
+ برندهای مختلف
46531
  بست افلام
46532
  بست,افلام
46533
  بغایت مهمی
46536
  بهترین
46537
  بيع متابعين
46538
  پازل باند
46539
+ تبخال ها
46540
  تحميل العاب
46541
  تخصصی ترین
46542
  تخصصی نمای
46549
  تعلم الماني
46550
  تعلم, الماني
46551
  تعلم,الماني
46552
+ تلویزیون ارزان
46553
  جفت درمانی
46554
  جمال مكياج
46555
  جمال, مكياج
46556
  جمال,مكياج
46557
+ جنسی برای
46558
  حبيبة كوميديا
46559
  حبيبة,كوميديا
46560
  حزينه حزينة
46561
  حزينه, حزينة
46562
  حزينه,حزينة
46563
  خبر عن الرياضة
46564
+ خرید تلویزیون
46565
+ خرید رپورتاژ
46566
  خسارة الوزن
46567
  خصم,كود
46568
  خلاصه داستان - دانلود
46569
  خلاصه داستان : دانلود
46570
  خلاصه داستان-دانلود
46571
+ خود ارضايي
46572
  داستان سکسی
46573
  دانلود آهنگ
46574
  دانلود فیلم سکسی
46577
  دستگاه حضور
46578
  دورات تدريب
46579
  ديالى،علوم
46580
+ رابطه جنسی
46581
+ رپورتاژ آگهی
46582
  رتويت تويتر
46583
  زواج المسيار
46584
  زواج سعودية
46587
  زواج,مسيار
46588
  زياده متابعين
46589
  ساک
46590
+ سایت زیر
46591
+ سنگ کلیه
46592
  سوپر
46593
  سوريا أرخص
46594
  سوريا,أرخص
46610
  فقدان-الوزن
46611
  قم نجار
46612
  قیمت نبشی
46613
+ قیمت و خرید
46614
  كاشف الذهب
46615
  كاشف المعادن
46616
  كاشفات الذهب
46627
  كوفيد تمارين
46628
  كوفيد, تمارين
46629
  كوفيد,تمارين
46630
+ کرپٹوکرنسی
46631
  کیر
46632
  لتحميل
46633
  لرش المبيد ات
46637
  لماني,تعلم
46638
  لمكافحه الحشر ات
46639
  لمكافحه الحشرات
46640
+ لیست قیمت
46641
+ مارکتینگ
46642
  متابعين انستقرام
46643
  متابعين سناب
46644
  متجرالبخور
46654
  مشاهدة الافلام
46655
  مشاوره خانواده
46656
  معاهد تدريب
46657
+ مقالات انگلیسی
46658
  مقاله و بلاگ
46659
  منوعات حبيبة
46660
  موقع سؤال
46662
  موقع سناره
46663
  موقع صنديد
46664
  نجار بالدما
46665
+ نقد فیلم
46666
+ نمایشگاه گناه
46667
  نمو الشعر
46668
  نيوز , اخبار
46669
  نيوز اخبار
46670
  نيوز, اخبار
46671
+ نیکو ویروس
46672
  ها و بلاگ
46673
  و بلاگ ها
46674
+ واریکوسل
46675
+ وب سایت
46676
  وب وجود
46677
+ وبسایت
46678
  وبلاگ نویسان
46679
  وظائف
46680
  ขาย
46731
  검증사이트
46732
  게임
46733
  경마배팅
46734
+ 놀이터 보너
46735
+ 놀이터보너
46736
  대출
46737
+ 레이디알바
46738
  로얄카지노
46739
  루이비통
46740
  리그중계
46743
  먹튀
46744
  무료쿠폰
46745
  바카라
46746
+ 보너스
46747
  보험
46748
  블랙잭
46749
  성인사이트
46754
  안마
46755
  야구중계
46756
  야동
46757
+ 여우알바
46758
  여자친구
46759
  온라인카지노
46760
+ 유흥구인
46761
+ 유흥업소
46762
  이트 순위
46763
  인터넷카지노
46764
  장기렌트
46766
  축구중계
46767
  출장업소
46768
  카지노
46769
+ 쿠폰
46770
  태풍티비
46771
  토토
46772
  트위터
46773
+ 파워볼
46774
  파워볼사이트
46775
  포인트받
46776
+ 피자가게
46777
  필수적이다
46778
+ 후불
46779
  アークテリクス
46780
  アイホン
46781
  アウトレット
46806
  オークリー
46807
  おざ
46808
  オロビアンコ
46809
+ オンラインカジノ
46810
  お客
46811
  お店を
46812
  お金を
46876
  パワハラ
46877
  バンクオブアメリカ
46878
  バンズ
46879
+ ビットコイン
46880
  ビトン
46881
  ブーツ
46882
  ファッショ
46930
  信息平台
46931
 
46932
  借錢網
46933
+ 優惠
46934
  光碟破解
46935
  全球华人
46936
  公式
46959
  商城
46960
  块钱
46961
  基測|
46962
+ 壯陽
46963
  外贸
46964
+ 大除毛
46965
  奖网
46966
  好評
46967
  婚庆礼仪
46988
  投注网站
46989
  摔死女
46990
  攜心山
46991
+ 春藥
46992
  晶燈
46993
  服务
46994
  札入れ
47043
 
47044
  荷物
47045
  落枕
47046
+ 藥專
47047
  血症
47048
  行動電源
47049
  装着
47075
  锘縉
47076
  锟斤拷
47077
  门户网
47078
+ 除毛雷射
47079
  革の
47080
 
47081
  韓国音楽
assets/css/admin.css CHANGED
@@ -1,99 +1,525 @@
1
  :root {
2
- --zerospam-primary: #840012;
 
 
 
 
3
  }
4
 
5
- .zerospam-new-window-link::after {
6
- background-image: url("../img/icon-new-window.svg");
7
- background-position: center;
8
- background-repeat: no-repeat;
9
- background-size: contain;
10
- content: "";
 
 
 
 
 
 
 
 
 
 
11
  display: inline-block;
12
- height: 11px;
13
- margin-left: 3px;
14
- vertical-align: middle;
15
- width: 11px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  }
17
 
18
- .zerospam-flag {
19
- display: inline-block;
20
- margin-right: 8px;
21
- vertical-align: sub;
22
  }
23
 
24
- .zerospam-callout,
25
- .zerospam-modal,
26
- .zerospam-notice,
27
- .zerospam-module {
28
- background: #fff;
29
- border: 1px solid #ccd0d4;
30
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
31
  }
32
 
33
- .zerospam-modal,
34
- .zerospam-notice,
35
- .zerospam-module {
36
- box-sizing: border-box;
37
- padding: 30px;
38
  }
39
 
40
- .zerospam-notice,
41
- .zerospam-callout {
42
- margin: 20px 0;
 
43
  }
44
 
45
- .zerospam-modules {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  display: flex;
47
- flex-wrap: wrap;
48
- margin-left: -10px;
49
- margin-right: -10px;
 
 
 
 
 
 
 
 
 
 
50
  }
51
 
52
- .zerospam-module {
53
- margin: 10px;
54
- width: calc(100% - 20px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
- .zerospam-module h3 {
58
- margin: 0 0 30px 0;
59
  }
60
 
61
- @media (min-width: 768px) {
62
- .zerospam-module-map {
63
- width: calc(60% - 20px);
 
 
 
 
 
 
 
64
  }
 
65
 
66
- .zerospam-module-ip {
67
- width: calc(40% - 20px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
 
69
 
70
- .zerospam-module-pie,
71
- .zerospam-module-line-chart {
72
- width: calc(50% - 20px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  }
74
  }
75
 
76
- .zerospam-callout {
 
 
 
 
 
 
 
 
77
  display: flex;
78
  flex-wrap: wrap;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  }
80
 
81
- .zerospam-callout h2,
82
- .zerospam-callout h3 {
83
- margin-top: 0;
 
84
  }
85
 
86
- .zerospam-callout p:last-child {
87
- margin-bottom: 0;
 
 
 
 
 
 
 
88
  }
89
 
90
- .zerospam-callout-col {
91
- box-sizing: border-box;
92
- padding: 20px;
93
- width: 100%;
 
 
 
 
 
 
 
 
 
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  .zerospam-modal {
 
97
  box-sizing: border-box;
98
  left: 50%;
99
  max-width: 600px;
@@ -108,7 +534,6 @@
108
  width: 100%;
109
  z-index: 1;
110
  }
111
-
112
  .zerospam-modal.is-active {
113
  opacity: 1;
114
  visibility: visible;
@@ -126,9 +551,7 @@
126
  top: 15px;
127
  width: 15px;
128
  }
129
-
130
- .zerospam-close-modal::before,
131
- .zerospam-close-modal::after {
132
  background: #23282d;
133
  content: "";
134
  display: block;
@@ -138,127 +561,14 @@
138
  top: 0;
139
  width: 3px;
140
  }
141
-
142
  .zerospam-close-modal::before {
143
  transform: rotate(45deg);
144
  }
145
-
146
  .zerospam-close-modal::after {
147
  transform: rotate(-45deg);
148
  }
149
 
150
- .zerospam-modal-details {
151
- align-items: center;
152
- display: flex;
153
- flex-wrap: wrap;
154
- }
155
-
156
- .zerospam-modal-title,
157
- .zerospam-modal-subtitle {
158
- width: 50%;
159
- }
160
-
161
- .zerospam-modal-headline,
162
- .zerospam-modal-list {
163
- width: 100%;
164
- }
165
-
166
- .zerospam-modal-list li {
167
- display: flex;
168
- justify-content: space-between;
169
- padding: 5px;
170
- }
171
-
172
- .zerospam-modal-list li strong,
173
- .zerospam-modal-list li span {
174
- width: 50%;
175
- }
176
-
177
- .zerospam-modal-list li:nth-child(odd) {
178
- background: #f9f9f9;
179
- }
180
-
181
- .zerospam-modal-subtitle {
182
- text-align: right;
183
- }
184
-
185
- /* Tabs */
186
- .zerospam-settings-tabs .form-table,
187
- .zerospam-tab {
188
- display: none;
189
- }
190
-
191
- .zerospam-settings-tabs h2 {
192
- background: #fff;
193
- border: 1px solid #ccd0d4;
194
- box-shadow: 0 1px 1px rgb(0 0 0 / 4%);
195
- display: block;
196
- cursor: pointer;
197
- margin: 15px 0 0 0;
198
- padding: 15px 20px;
199
- }
200
-
201
- .zerospam-settings-tabs .form-table {
202
- background: #fff;
203
- border: 1px solid #ccd0d4;
204
- border-top: 0;
205
- margin: 0;
206
- padding: 20px;
207
- }
208
-
209
- .zerospam-settings-tabs .form-table.is-active,
210
- .zerospam-tab.is-active {
211
- display: block;
212
- }
213
-
214
- .zerospam-modal form {
215
- display: flex;
216
- flex-wrap: wrap;
217
- }
218
-
219
- .zerospam-modal form label {
220
- display: flex;
221
- flex-wrap: wrap;
222
- margin-bottom: 10px;
223
- width: 100%;
224
- }
225
-
226
- .zerospam-modal form label[for="blocked-ip"],
227
- .zerospam-modal form label[for="blocked-type"],
228
- .zerospam-modal form label[for="blocked-start-date"],
229
- .zerospam-modal form label[for="blocked-end-date"] {
230
- width: 50%;
231
- }
232
-
233
- .zerospam-modal form label[for="location-type"],
234
- .zerospam-modal form label[for="location-key"],
235
- .zerospam-modal form.zerospam-block-location-form label[for="blocked-type"] {
236
- width: calc(100% / 3);
237
- }
238
-
239
- .zerospam-modal input[type="text"],
240
- .zerospam-modal input[type="datetime-local"],
241
- .zerospam-modal select {
242
- width: 100%;
243
- }
244
-
245
- .zerospam-modal input[type="submit"] {
246
- margin-top: 16px;
247
- }
248
-
249
- /* Type theming */
250
- .zerospam-type-blocked::before,
251
- .zerospam-type-login::before,
252
- .zerospam-type-registration::before,
253
- .zerospam-type-comment::before,
254
- .zerospam-type-fluent_form::before,
255
- .zerospam-type-wpforms::before,
256
- .zerospam-type-contactform7::before,
257
- .zerospam-type-givewp::before,
258
- .zerospam-type-memberpress_registration::before,
259
- .zerospam-type-memberpress_login::before,
260
- .zerospam-type-mailchimp4wp::before,
261
- .zerospam-type-woocommerce_registration::before {
262
  background-position: center;
263
  background-repeat: no-repeat;
264
  background-size: contain;
@@ -269,122 +579,186 @@
269
  vertical-align: sub;
270
  width: 16px;
271
  }
272
-
273
- /* Type: blocked */
274
  .zerospam-type-blocked {
275
  color: var(--zerospam-primary);
276
  }
277
-
278
  .zerospam-type-blocked::before {
279
  background-image: url("../img/icon.svg");
280
  }
281
-
282
- /* Type: login, registration, comment */
283
- .zerospam-type-login::before,
284
- .zerospam-type-registration::before,
285
- .zerospam-type-comment::before {
286
  background-image: url("../img/icon-wordpress.svg");
287
  }
288
-
289
- /* Type: fluent_form */
290
  .zerospam-type-fluent_form::before {
291
  background-image: url("../img/icon-fluent-forms.svg");
292
  }
293
-
294
- /* Type: wpforms */
 
295
  .zerospam-type-wpforms::before {
296
- background-image: url("../img/icon-wpforms.svg");
297
  }
298
-
299
- /* Type: contactform7 */
300
  .zerospam-type-contactform7::before {
301
- background-image: url("../img/icon-cf7.png");
302
  }
303
-
304
- /* Type: memberpress_registration, memberpress_login */
305
- .zerospam-type-memberpress_registration::before,
306
- .zerospam-type-memberpress_login::before {
307
  background-image: url("../img/icon-memberpress.svg");
308
  }
309
-
310
- /* Type: givewp */
311
  .zerospam-type-givewp::before {
312
- background-image: url("../img/icon-givewp.png");
313
  }
314
-
315
- /* Type: mailchimp4wp */
316
  .zerospam-type-mailchimp4wp::before {
317
  background-image: url("../img/icon-mc4wp.svg");
318
  }
319
-
320
- /* Type: woocommerce_registration */
321
  .zerospam-type-woocommerce_registration::before {
322
- background-image: url("../img/icon-woocommerce.svg");
323
  }
324
-
325
- @media (min-width: 768px) {
326
- .zerospam-callout {
327
- flex-wrap: nowrap;
328
- }
329
-
330
- .zerospam-callout-col {
331
- padding: 30px;
332
- width: 100%;
333
- }
334
  }
335
 
336
  .zerospam-list {
 
337
  margin: 0;
 
338
  }
339
-
340
- .zerospam-list li {
341
  align-items: center;
342
- border-bottom: 1px solid #ccd0d4;
343
  display: flex;
344
- margin: 0;
345
- padding: 5px 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  }
347
 
348
- .zerospam-list li span {
349
- padding-left: 5px;
350
- padding-right: 5px;
351
  }
352
 
353
- .zerospam-list li:last-child {
354
- padding-right: 0;
355
- border-bottom: 0;
 
 
 
 
 
 
 
 
 
 
356
  }
357
 
358
- .zerospam-list li span:first-child {
359
- padding-left: 0;
360
- width: 35%;
 
361
  }
362
 
363
- .zerospam-list li span:nth-child(2) {
364
- width: 35%;
 
365
  }
366
 
367
- .zerospam-list li span:nth-child(3) {
368
- text-align: right;
369
- width: 8%;
370
  }
371
 
372
- .zerospam-list li span:nth-child(4) {
373
- text-align: right;
374
- width: 22%;
 
375
  }
376
 
377
- .zerospam-export-import-block {
378
- display: flex;
379
- flex-wrap: wrap;
 
 
 
 
 
380
  }
381
 
382
- .zerospam-export-import-block-column {
383
- width: 100%;
 
 
 
 
384
  }
385
 
386
- @media (min-width: 768px) {
387
- .zerospam-export-import-block-column {
388
- width: 50%;
389
- }
390
  }
 
 
 
 
 
 
 
 
1
  :root {
2
+ --zerospam-primary: #3f0008;
3
+ --zerospam-secondary: #840012;
4
+ --zerospam-accent: #ff2929;
5
+ --zerospam-trinary: #be0000;
6
+ --zerospam-success: #69b86b;
7
  }
8
 
9
+ .zerospam-form .description, .zerospam-block__content, .zerospam-form td {
10
+ color: var(--zerospam-primary);
11
+ display: block;
12
+ font-size: 0.8125rem;
13
+ line-height: 1.384615385rem;
14
+ margin: 0 0 0.5625rem 0;
15
+ }
16
+
17
+ .zerospam-table-form .button,
18
+ .zerospam-form .button, .zerospam-block .button {
19
+ backface-visibility: hidden;
20
+ background: var(--zerospam-trinary);
21
+ border: 1px solid transparent;
22
+ border-radius: 3px;
23
+ box-shadow: 0 2px 1px rgba(28, 31, 63, 0.06);
24
+ color: #fff;
25
  display: inline-block;
26
+ font-size: 0.875rem;
27
+ font-weight: 500;
28
+ line-height: 1;
29
+ min-height: 0;
30
+ outline: none;
31
+ padding: 0.875rem 2rem;
32
+ transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
33
+ }
34
+ .zerospam-table-form .button:active,
35
+ .zerospam-form .button:active, .zerospam-block .button:active, .zerospam-table-form .button:focus,
36
+ .zerospam-form .button:focus, .zerospam-block .button:focus {
37
+ background-color: var(--zerospam-accent);
38
+ box-shadow: 0 4px 6px rgba(28, 31, 63, 0.08);
39
+ border-color: var(--zerospam-accent);
40
+ color: #fff;
41
+ }
42
+ .zerospam-table-form .button:hover,
43
+ .zerospam-form .button:hover, .zerospam-block .button:hover {
44
+ background-color: var(--zerospam-trinary);
45
+ border: 1px solid transparent;
46
+ box-shadow: 0 4px 6px rgba(28, 31, 63, 0.08);
47
+ color: #fff;
48
+ transform: translate(0, -2px);
49
+ }
50
+ .zerospam-table-form .button-primary.button,
51
+ .zerospam-form .button-primary.button, .zerospam-block .button-primary.button {
52
+ background: var(--zerospam-accent);
53
+ }
54
+ .zerospam-table-form .button-primary.button:focus,
55
+ .zerospam-form .button-primary.button:focus, .zerospam-block .button-primary.button:focus {
56
+ color: #fff;
57
  }
58
 
59
+ .zerospam-list--data-actions .button, .zerospam-table-form .column-actions .button {
60
+ font-size: 11px;
61
+ padding: 0.4rem 0.5rem;
 
62
  }
63
 
64
+ #wpcontent {
65
+ padding-left: 0 !important;
 
 
 
 
 
66
  }
67
 
68
+ .wrap {
69
+ margin-left: 12px;
 
 
 
70
  }
71
 
72
+ .zerospam-small-icon {
73
+ height: 18px;
74
+ vertical-align: sub;
75
+ width: auto;
76
  }
77
 
78
+ .zerospam-header {
79
+ background-color: var(--zerospam-secondary);
80
+ background-image: url("../img/logo-flat.svg");
81
+ background-position: 0.5rem 0.5rem;
82
+ background-repeat: no-repeat;
83
+ background-size: 100px;
84
+ padding: 1.5rem 1.5rem 1.5rem 8rem;
85
+ }
86
+ @media (min-width: 782px) {
87
+ .zerospam-header {
88
+ align-items: center;
89
+ display: flex;
90
+ justify-content: space-between;
91
+ }
92
+ }
93
+ .zerospam-header a {
94
+ color: var(--zerospam-accent);
95
+ }
96
+ .zerospam-header__status {
97
+ align-items: center;
98
+ background-color: #fff;
99
+ border-radius: 3px;
100
+ column-gap: 8px;
101
  display: flex;
102
+ padding: 10px 15px;
103
+ }
104
+
105
+ @media (min-width: 782px) {
106
+ .zerospam-dashboard {
107
+ column-gap: 3rem;
108
+ display: grid;
109
+ grid-template-columns: 200px 1fr;
110
+ grid-template-rows: auto;
111
+ }
112
+ }
113
+ .zerospam-dashboard a {
114
+ color: var(--zerospam-accent);
115
  }
116
 
117
+ a.zerospam-dashboard__menu-link {
118
+ align-items: center;
119
+ border: 1px solid transparent;
120
+ border-radius: 3px;
121
+ color: var(--zerospam-primary);
122
+ column-gap: 8px;
123
+ display: flex;
124
+ font-size: 0.875rem;
125
+ font-weight: 400;
126
+ line-height: normal;
127
+ margin: 0;
128
+ padding: 0.6875rem 0.5rem 0.6875rem 1rem;
129
+ text-decoration: none;
130
+ }
131
+ a.zerospam-dashboard__menu-link:hover {
132
+ color: var(--zerospam-primary);
133
+ }
134
+ a.zerospam-dashboard__menu-link--active, a.zerospam-dashboard__menu-link:focus {
135
+ background-color: #fff;
136
+ font-weight: 500;
137
+ }
138
+ a.zerospam-dashboard__menu-link--active {
139
+ border-color: #e3e6ef;
140
+ box-shadow: 0 1px 4px rgba(18, 25, 97, 0.08);
141
+ margin-top: 0.125rem;
142
  }
143
 
144
+ .zerospam-dashboard__menu-icon {
145
+ width: 18px;
146
  }
147
 
148
+ .zerospam-block__grid {
149
+ align-items: center;
150
+ column-gap: 30px;
151
+ row-gap: 30px;
152
+ display: grid;
153
+ grid-template-columns: 1fr;
154
+ }
155
+ @media (min-width: 782px) {
156
+ .zerospam-block__grid {
157
+ grid-template-columns: 65% 1fr;
158
  }
159
+ }
160
 
161
+ .zerospam-block, .zerospam-form tr {
162
+ background: #fff;
163
+ border: 1px solid #e3e6ef;
164
+ border-radius: 3px;
165
+ box-shadow: 0 1px 4px rgba(18, 25, 97, 0.08);
166
+ box-sizing: border-box;
167
+ width: 100%;
168
+ }
169
+ .zerospam-block__content, .zerospam-form td {
170
+ border-top: 1px solid #ebebf2;
171
+ display: block;
172
+ margin: 0;
173
+ padding: 1rem 1rem 1.25rem;
174
+ }
175
+ .zerospam-block__content code, .zerospam-form td code {
176
+ font-size: 0.85em;
177
+ }
178
+ .zerospam-block__content--supports {
179
+ align-items: center;
180
+ column-gap: 8px;
181
+ display: flex;
182
+ flex-wrap: wrap;
183
+ }
184
+ .zerospam-block__headline, .zerospam-form th {
185
+ box-sizing: border-box;
186
+ color: var(--zerospam-primary);
187
+ display: block;
188
+ font-size: 0.875rem;
189
+ font-weight: 500;
190
+ line-height: 2.875rem;
191
+ margin: 0;
192
+ padding: 0 0 0 1.0625rem;
193
+ width: 100%;
194
+ }
195
+ .zerospam-block--callout .zerospam-block__content, .zerospam-block--callout .zerospam-form td, .zerospam-form .zerospam-block--callout td {
196
+ padding: 2rem 3rem;
197
+ }
198
+ .zerospam-block--callout .zerospam-block__content h3, .zerospam-block--callout .zerospam-form td h3, .zerospam-form .zerospam-block--callout td h3 {
199
+ font-size: 24px;
200
+ font-weight: bold;
201
+ line-height: 1.2;
202
+ }
203
+ .zerospam-block--callout .zerospam-block__content .button, .zerospam-block--callout .zerospam-form td .button, .zerospam-form .zerospam-block--callout td .button {
204
+ margin-top: 0.7rem;
205
+ }
206
+ .zerospam-block--success .zerospam-block__content, .zerospam-block--success .zerospam-form td, .zerospam-form .zerospam-block--success td, .zerospam-block--error .zerospam-block__content, .zerospam-block--error .zerospam-form td, .zerospam-form .zerospam-block--error td, .zerospam-block--notice .zerospam-block__content, .zerospam-block--notice .zerospam-form td, .zerospam-form .zerospam-block--notice td {
207
+ position: relative;
208
+ color: #fff;
209
+ font-size: 13px;
210
+ padding: 1.3rem 2rem;
211
+ }
212
+ .zerospam-block--notice {
213
+ background: var(--zerospam-success);
214
+ }
215
+ .zerospam-block--success, .zerospam-block--error {
216
+ margin-bottom: 1rem;
217
+ }
218
+ .zerospam-block--success .zerospam-block__content, .zerospam-block--success .zerospam-form td, .zerospam-form .zerospam-block--success td, .zerospam-block--error .zerospam-block__content, .zerospam-block--error .zerospam-form td, .zerospam-form .zerospam-block--error td {
219
+ padding-left: 60px;
220
+ }
221
+ .zerospam-block--success .zerospam-block__content::before, .zerospam-block--success .zerospam-form td::before, .zerospam-form .zerospam-block--success td::before, .zerospam-block--error .zerospam-block__content::before, .zerospam-block--error .zerospam-form td::before, .zerospam-form .zerospam-block--error td::before {
222
+ background-position: center;
223
+ background-repeat: no-repeat;
224
+ background-size: contain;
225
+ border: 1px solid #fff;
226
+ border-radius: 100%;
227
+ content: "";
228
+ display: inline-block;
229
+ height: 25px;
230
+ left: 1.5rem;
231
+ position: absolute;
232
+ top: 18px;
233
+ width: 25px;
234
+ }
235
+ .zerospam-block--success .zerospam-block__content::before, .zerospam-block--success .zerospam-form td::before, .zerospam-form .zerospam-block--success td::before {
236
+ background-color: #fff;
237
+ background-image: url("../img/icon-success.svg");
238
+ }
239
+ .zerospam-block--error .zerospam-block__content, .zerospam-block--error .zerospam-form td, .zerospam-form .zerospam-block--error td {
240
+ background-color: var(--zerospam-accent);
241
+ color: #fff;
242
+ }
243
+ .zerospam-block--error .zerospam-block__content::before, .zerospam-block--error .zerospam-form td::before, .zerospam-form .zerospam-block--error td::before {
244
+ background-color: var(--zerospam-accent);
245
+ background-image: url("../img/icon-x.svg?sd");
246
+ }
247
+ @media (min-width: 782px) {
248
+ .zerospam-block--map {
249
+ width: calc(60% - var(--zerospam-block-gap));
250
+ }
251
+ }
252
+ @media (min-width: 782px) {
253
+ .zerospam-block--list {
254
+ width: calc(40% - var(--zerospam-block-gap));
255
  }
256
+ }
257
 
258
+ .zerospam-blocks {
259
+ --zerospam-block-gap: 0.875rem;
260
+ display: flex;
261
+ flex-wrap: wrap;
262
+ margin-left: calc(var(--zerospam-block-gap) / 2 * -1);
263
+ margin-right: calc(var(--zerospam-block-gap) / 2 * -1);
264
+ }
265
+ .zerospam-blocks .zerospam-block, .zerospam-blocks .zerospam-form tr, .zerospam-form .zerospam-blocks tr {
266
+ margin: calc(var(--zerospam-block-gap) / 2);
267
+ }
268
+ .zerospam-blocks .zerospam-block--facebook, .zerospam-blocks .zerospam-block--twitter {
269
+ background-color: transparent;
270
+ border: 0;
271
+ box-shadow: none;
272
+ }
273
+ @media (min-width: 782px) {
274
+ .zerospam-blocks .zerospam-block--facebook {
275
+ width: 340px;
276
+ }
277
+ }
278
+ @media (min-width: 782px) {
279
+ .zerospam-blocks .zerospam-block--twitter {
280
+ width: calc(100% - var(--zerospam-block-gap) * 2 - 340px);
281
  }
282
  }
283
 
284
+ .zerospam-table-form .column-actions {
285
+ column-gap: 5px;
286
+ display: flex;
287
+ }
288
+ .zerospam-table-form .tablenav-pages .current-page {
289
+ width: auto;
290
+ }
291
+ .zerospam-table-form .tablenav {
292
+ align-items: center;
293
  display: flex;
294
  flex-wrap: wrap;
295
+ height: auto;
296
+ margin: 0 0 1rem 0;
297
+ padding-top: 0;
298
+ }
299
+ .zerospam-table-form .tablenav .actions {
300
+ align-items: center;
301
+ column-gap: 5px;
302
+ display: flex;
303
+ padding: 0;
304
+ }
305
+ .zerospam-table-form .tablenav .actions select {
306
+ float: none;
307
+ margin-right: 0;
308
+ }
309
+ .zerospam-table-form .tablenav .tablenav-pages {
310
+ flex-grow: 1;
311
+ float: none;
312
+ margin: 0;
313
+ text-align: right;
314
+ }
315
+ .zerospam-table-form .tablenav.bottom {
316
+ margin: 1rem 0 0 0;
317
+ }
318
+ .zerospam-table-form p.search-box {
319
+ align-items: center;
320
+ column-gap: 5px;
321
+ display: flex;
322
+ margin-bottom: 5px;
323
+ float: none;
324
+ }
325
+ .zerospam-table-form .search-box input[name=s] {
326
+ float: none;
327
+ margin: 0;
328
+ }
329
+
330
+ .zerospam-table-form .regular-text,
331
+ .zerospam-form .regular-text {
332
+ width: 100%;
333
+ }
334
+ .zerospam-table-form .code,
335
+ .zerospam-form .code {
336
+ font-size: 0.8rem;
337
+ }
338
+ .zerospam-table-form select,
339
+ .zerospam-table-form input[type=text],
340
+ .zerospam-table-form input[type=url],
341
+ .zerospam-table-form input[type=number],
342
+ .zerospam-table-form input[type=search],
343
+ .zerospam-table-form input[type=datetime-local],
344
+ .zerospam-table-form textarea,
345
+ .zerospam-form select,
346
+ .zerospam-form input[type=text],
347
+ .zerospam-form input[type=url],
348
+ .zerospam-form input[type=number],
349
+ .zerospam-form input[type=search],
350
+ .zerospam-form input[type=datetime-local],
351
+ .zerospam-form textarea {
352
+ border: 1px solid var(--zerospam-trinary);
353
+ color: var(--zerospam-primary);
354
+ max-width: none;
355
+ padding: 0.45rem 1rem;
356
+ width: 100%;
357
+ }
358
+ .zerospam-table-form select:hover,
359
+ .zerospam-table-form input[type=text]:hover,
360
+ .zerospam-table-form input[type=url]:hover,
361
+ .zerospam-table-form input[type=number]:hover,
362
+ .zerospam-table-form input[type=search]:hover,
363
+ .zerospam-table-form input[type=datetime-local]:hover,
364
+ .zerospam-table-form textarea:hover,
365
+ .zerospam-form select:hover,
366
+ .zerospam-form input[type=text]:hover,
367
+ .zerospam-form input[type=url]:hover,
368
+ .zerospam-form input[type=number]:hover,
369
+ .zerospam-form input[type=search]:hover,
370
+ .zerospam-form input[type=datetime-local]:hover,
371
+ .zerospam-form textarea:hover {
372
+ color: var(--zerospam-primary);
373
+ }
374
+ .zerospam-table-form select:focus,
375
+ .zerospam-table-form input[type=text]:focus,
376
+ .zerospam-table-form input[type=url]:focus,
377
+ .zerospam-table-form input[type=number]:focus,
378
+ .zerospam-table-form input[type=search]:focus,
379
+ .zerospam-table-form input[type=datetime-local]:focus,
380
+ .zerospam-table-form textarea:focus,
381
+ .zerospam-form select:focus,
382
+ .zerospam-form input[type=text]:focus,
383
+ .zerospam-form input[type=url]:focus,
384
+ .zerospam-form input[type=number]:focus,
385
+ .zerospam-form input[type=search]:focus,
386
+ .zerospam-form input[type=datetime-local]:focus,
387
+ .zerospam-form textarea:focus {
388
+ border: 1px solid var(--zerospam-trinary);
389
+ box-shadow: none;
390
+ }
391
+ .zerospam-table-form input[type=radio],
392
+ .zerospam-table-form input[type=checkbox],
393
+ .zerospam-form input[type=radio],
394
+ .zerospam-form input[type=checkbox] {
395
+ display: none;
396
+ }
397
+ .zerospam-table-form input[type=radio] + label,
398
+ .zerospam-table-form input[type=checkbox] + label,
399
+ .zerospam-form input[type=radio] + label,
400
+ .zerospam-form input[type=checkbox] + label {
401
+ display: inline-block;
402
+ margin-bottom: 0.2rem;
403
+ position: relative;
404
+ }
405
+ .zerospam-table-form input[type=radio] + label::before, .zerospam-table-form input[type=radio] + label::after,
406
+ .zerospam-table-form input[type=checkbox] + label::before,
407
+ .zerospam-table-form input[type=checkbox] + label::after,
408
+ .zerospam-form input[type=radio] + label::before,
409
+ .zerospam-form input[type=radio] + label::after,
410
+ .zerospam-form input[type=checkbox] + label::before,
411
+ .zerospam-form input[type=checkbox] + label::after {
412
+ content: "";
413
+ cursor: pointer;
414
+ }
415
+ .zerospam-table-form input[type=radio] + label::before,
416
+ .zerospam-table-form input[type=checkbox] + label::before,
417
+ .zerospam-form input[type=radio] + label::before,
418
+ .zerospam-form input[type=checkbox] + label::before {
419
+ background: var(--zerospam-trinary);
420
+ border: 2px solid transparent;
421
+ border-radius: 15px;
422
+ box-shadow: inset 0 1px 2px rgba(90, 97, 105, 0.15);
423
+ display: inline-block;
424
+ height: 1.125rem;
425
+ margin-right: 0.5rem;
426
+ padding: 0.1275rem;
427
+ position: relative;
428
+ vertical-align: middle;
429
+ transition: all 0.25s ease;
430
+ transition-duration: 0.2s;
431
+ transition-property: background-color, border-color, color, fill, stroke;
432
+ transition-timing-function: cubic-bezier(0.4, 0, 0.1, 1);
433
+ width: 2.625rem;
434
+ }
435
+ .zerospam-table-form input[type=radio] + label::after,
436
+ .zerospam-table-form input[type=checkbox] + label::after,
437
+ .zerospam-form input[type=radio] + label::after,
438
+ .zerospam-form input[type=checkbox] + label::after {
439
+ background: #fff center no-repeat url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjQ3NDkgMi41MjUxYS41ODMzLjU4MzMgMCAwMDAgLjgyNUw0LjEyNDggNWwtMS42NSAxLjY1YS41ODMzLjU4MzMgMCAxMC44MjUuODI0OWwxLjY1LTEuNjUgMS42NDk5IDEuNjVhLjU4MzMuNTgzMyAwIDEwLjgyNS0uODI1TDUuNzc0NiA1bDEuNjUtMS42NWEuNTgzMy41ODMzIDAgMTAtLjgyNS0uODI0OWwtMS42NSAxLjY1LTEuNjQ5OS0xLjY1YS41ODMzLjU4MzMgMCAwMC0uODI1IDB6IiBmaWxsPSIjOTA5MkIyIi8+PC9zdmc+);
440
+ background-size: 0.625rem;
441
+ border-radius: 50%;
442
+ box-shadow: 0 1px 4px rgba(24, 24, 72, 0.12);
443
+ display: block;
444
+ height: 1.125rem;
445
+ left: 4px;
446
+ position: absolute;
447
+ top: 4px;
448
+ transition: all 0.25s ease;
449
+ transition-duration: 0.2s;
450
+ transition-property: background, left;
451
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
452
+ width: 1.125rem;
453
+ z-index: 1;
454
+ }
455
+ .zerospam-table-form input[type=radio]:checked + label::before,
456
+ .zerospam-table-form input[type=checkbox]:checked + label::before,
457
+ .zerospam-form input[type=radio]:checked + label::before,
458
+ .zerospam-form input[type=checkbox]:checked + label::before {
459
+ background: var(--zerospam-accent);
460
+ }
461
+ .zerospam-table-form input[type=radio]:checked + label::after,
462
+ .zerospam-table-form input[type=checkbox]:checked + label::after,
463
+ .zerospam-form input[type=radio]:checked + label::after,
464
+ .zerospam-form input[type=checkbox]:checked + label::after {
465
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI3IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0yLjY2NjcgNC4zOTA1TDYuODYxOS4xOTUzYS42NjY3LjY2NjcgMCAwMS45NDI4Ljk0MjhsLTUuMTM4IDUuMTM4TC4xOTUzIDMuODA0N2EuNjY2Ny42NjY3IDAgMDEuOTQyOC0uOTQyOGwxLjUyODYgMS41Mjg2eiIgZmlsbD0iIzNFN0RBNiIvPjwvc3ZnPg==);
466
+ background-size: 0.5rem;
467
+ left: 1.7rem;
468
  }
469
 
470
+ .zerospam-form-field-container {
471
+ align-items: center;
472
+ column-gap: 10px;
473
+ display: flex;
474
  }
475
 
476
+ .zerospam-form-field {
477
+ margin-bottom: 0.6875rem;
478
+ }
479
+ .zerospam-form-field > label {
480
+ color: var(--zerospam-primary);
481
+ display: block;
482
+ font-size: 0.8125rem;
483
+ line-height: 1.384615385rem;
484
+ margin: 0 0 5px 0;
485
  }
486
 
487
+ .zerospam-form-fields {
488
+ --zerospam-block-gap: 0.875rem;
489
+ display: flex;
490
+ flex-wrap: wrap;
491
+ margin-left: calc(var(--zerospam-block-gap) / 2 * -1);
492
+ margin-right: calc(var(--zerospam-block-gap) / 2 * -1);
493
+ }
494
+ .zerospam-form-fields .zerospam-form-field {
495
+ margin: calc(var(--zerospam-block-gap) / 2);
496
+ width: calc(100% - var(--zerospam-block-gap));
497
+ }
498
+ .zerospam-form-fields .zerospam-form-field--half {
499
+ width: calc(50% - var(--zerospam-block-gap));
500
  }
501
 
502
+ .zerospam-form > h2 {
503
+ display: none;
504
+ }
505
+ .zerospam-form tbody {
506
+ display: grid;
507
+ grid-column-gap: 0.875rem;
508
+ grid-row-gap: 0.875rem;
509
+ grid-template-columns: 1fr;
510
+ }
511
+ @media (min-width: 782px) {
512
+ .zerospam-form tbody {
513
+ grid-template-columns: 1fr 1fr;
514
+ }
515
+ }
516
+ .zerospam-form tr {
517
+ box-sizing: border-box;
518
+ display: block;
519
+ position: relative;
520
+ }
521
  .zerospam-modal {
522
+ box-shadow: 0 0 4rem 100vw rgba(0, 0, 0, 0.5);
523
  box-sizing: border-box;
524
  left: 50%;
525
  max-width: 600px;
534
  width: 100%;
535
  z-index: 1;
536
  }
 
537
  .zerospam-modal.is-active {
538
  opacity: 1;
539
  visibility: visible;
551
  top: 15px;
552
  width: 15px;
553
  }
554
+ .zerospam-close-modal::before, .zerospam-close-modal::after {
 
 
555
  background: #23282d;
556
  content: "";
557
  display: block;
561
  top: 0;
562
  width: 3px;
563
  }
 
564
  .zerospam-close-modal::before {
565
  transform: rotate(45deg);
566
  }
 
567
  .zerospam-close-modal::after {
568
  transform: rotate(-45deg);
569
  }
570
 
571
+ .zerospam-type-blocked::before, .zerospam-type-login::before, .zerospam-type-registration::before, .zerospam-type-comment::before, .zerospam-type-fluent_form::before, .zerospam-type-wpforms::before, .zerospam-type-contactform7::before, .zerospam-type-givewp::before, .zerospam-type-memberpress_registration::before, .zerospam-type-memberpress_login::before, .zerospam-type-mailchimp4wp::before, .zerospam-type-woocommerce_registration::before, .zerospam-type-gravityforms::before, .zerospam-type-formidable::before {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
  background-position: center;
573
  background-repeat: no-repeat;
574
  background-size: contain;
579
  vertical-align: sub;
580
  width: 16px;
581
  }
 
 
582
  .zerospam-type-blocked {
583
  color: var(--zerospam-primary);
584
  }
 
585
  .zerospam-type-blocked::before {
586
  background-image: url("../img/icon.svg");
587
  }
588
+ .zerospam-type-login::before, .zerospam-type-registration::before, .zerospam-type-comment::before {
 
 
 
 
589
  background-image: url("../img/icon-wordpress.svg");
590
  }
 
 
591
  .zerospam-type-fluent_form::before {
592
  background-image: url("../img/icon-fluent-forms.svg");
593
  }
594
+ .zerospam-type-formidable::before {
595
+ background-image: url("../../modules/formidable/icon-formidable.png");
596
+ }
597
  .zerospam-type-wpforms::before {
598
+ background-image: url("../../modules/wpforms/icon-wpforms.svg");
599
  }
 
 
600
  .zerospam-type-contactform7::before {
601
+ background-image: url("../../modules/contactform7/icon-cf7.png");
602
  }
603
+ .zerospam-type-memberpress_registration::before, .zerospam-type-memberpress_login::before {
 
 
 
604
  background-image: url("../img/icon-memberpress.svg");
605
  }
 
 
606
  .zerospam-type-givewp::before {
607
+ background-image: url("../../modules/give/icon-givewp.png");
608
  }
 
 
609
  .zerospam-type-mailchimp4wp::before {
610
  background-image: url("../img/icon-mc4wp.svg");
611
  }
 
 
612
  .zerospam-type-woocommerce_registration::before {
613
+ background-image: url("../../modules/woocommerce/icon-woocommerce.svg");
614
  }
615
+ .zerospam-type-gravityforms::before {
616
+ background-image: url("../../modules/gravityforms/icon-gravity-forms.svg");
 
 
 
 
 
 
 
 
617
  }
618
 
619
  .zerospam-list {
620
+ list-style: none;
621
  margin: 0;
622
+ padding: 0;
623
  }
624
+ .zerospam-list--data-actions li, .zerospam-list--data li {
 
625
  align-items: center;
626
+ column-gap: 15px;
627
  display: flex;
628
+ }
629
+ .zerospam-list--data-actions {
630
+ font-size: 12px;
631
+ line-height: 1.2;
632
+ }
633
+ .zerospam-list--data-actions .zerospam-list__value img {
634
+ vertical-align: sub;
635
+ }
636
+ .zerospam-list--data-actions .zerospam-list__value:first-child {
637
+ overflow: hidden;
638
+ text-overflow: ellipsis;
639
+ white-space: nowrap;
640
+ }
641
+ .zerospam-list--data-actions .zerospam-list__value:nth-child(2) {
642
+ flex-grow: 1;
643
+ text-align: right;
644
+ width: 25%;
645
+ }
646
+ .zerospam-list--data-actions .zerospam-list__value:nth-child(3) {
647
+ flex-shrink: 0;
648
+ text-align: right;
649
+ width: 30px;
650
+ }
651
+ .zerospam-list--data-actions .zerospam-list__value:last-child {
652
+ flex-shrink: 0;
653
+ text-align: right;
654
+ width: 40px;
655
+ }
656
+ .zerospam-list--data .zerospam-list__label,
657
+ .zerospam-list--data .zerospam-list__value {
658
+ font-size: 12px;
659
+ }
660
+ .zerospam-list--data .zerospam-list__label {
661
+ font-weight: bold;
662
+ flex-shrink: 0;
663
+ width: 170px;
664
+ }
665
+ .zerospam-list--data .zerospam-list__value {
666
+ flex-grow: 1;
667
+ }
668
+ .zerospam-list--checks {
669
+ font-size: 15px;
670
+ line-height: 1.3;
671
+ }
672
+ .zerospam-list--checks li {
673
+ margin-bottom: 20px;
674
+ padding-left: 30px;
675
+ position: relative;
676
+ }
677
+ .zerospam-list--checks li:last-child {
678
+ margin-bottom: 0;
679
+ }
680
+ .zerospam-list--checks li::before {
681
+ background-image: url("../img/icon-success.svg");
682
+ background-position: center;
683
+ background-repeat: no-repeat;
684
+ background-size: contain;
685
+ content: "";
686
+ display: inline-block;
687
+ height: 22px;
688
+ left: 0;
689
+ position: absolute;
690
+ top: -2px;
691
+ width: 22px;
692
  }
693
 
694
+ .zerospam-flag {
695
+ margin-right: 5px;
696
+ vertical-align: sub;
697
  }
698
 
699
+ /* */
700
+ .zerospam-dashboard__section-link,
701
+ .zerospam-new-window-link::after {
702
+ background-image: url("../img/icon-new-window.svg");
703
+ background-position: center;
704
+ background-repeat: no-repeat;
705
+ background-size: contain;
706
+ content: "";
707
+ display: inline-block;
708
+ height: 11px;
709
+ margin-left: 3px;
710
+ vertical-align: middle;
711
+ width: 11px;
712
  }
713
 
714
+ .zerospam-notice {
715
+ background: #fff;
716
+ border: 1px solid #ccd0d4;
717
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
718
  }
719
 
720
+ .zerospam-notice {
721
+ box-sizing: border-box;
722
+ padding: 30px;
723
  }
724
 
725
+ .zerospam-notice {
726
+ margin: 20px 0;
 
727
  }
728
 
729
+ /* Tabs */
730
+ .zerospam-settings-tabs .form-table,
731
+ .zerospam-tab {
732
+ display: none;
733
  }
734
 
735
+ .zerospam-settings-tabs h2 {
736
+ background: #fff;
737
+ border: 1px solid #ccd0d4;
738
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
739
+ display: block;
740
+ cursor: pointer;
741
+ margin: 15px 0 0 0;
742
+ padding: 15px 20px;
743
  }
744
 
745
+ .zerospam-settings-tabs .form-table {
746
+ background: #fff;
747
+ border: 1px solid #ccd0d4;
748
+ border-top: 0;
749
+ margin: 0;
750
+ padding: 20px;
751
  }
752
 
753
+ .zerospam-settings-tabs .form-table.is-active,
754
+ .zerospam-tab.is-active {
755
+ display: block;
 
756
  }
757
+
758
+ .zerospam-export-import-block {
759
+ column-gap: 12px;
760
+ display: grid;
761
+ grid-template-columns: 1fr 1fr;
762
+ }
763
+
764
+ /*# sourceMappingURL=admin.css.map */
assets/css/admin.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sourceRoot":"","sources":["../src/scss/admin.scss"],"names":[],"mappings":"AAkCA;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;AAAA;AAAA;EAEE;EACA;EACA;EACA;;AAGF;AAAA;EACE;EACA;EACA;EACA;EACA;;AAGF;AAAA;EACE;;AAEA;AAAA;EACE;;;AAKN;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AA/FE;EAyFJ;IASI;IACA;IACA;;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAjHA;EAqHJ;IAEI;IACA;IACA;IACA;;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EAEE;EACA;;AAGF;EACE;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AA1KE;EAqKJ;IAQI;;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAMA;EAEE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAQJ;EACE;EACA;EACA;EACA;;AAIJ;EACE;;AAGF;EAEE;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMJ;EACE;EACA;;AAEA;EACE;EACA;;AAnSJ;EAwSF;IAEI;;;AA1SF;EA8SF;IAEI;;;;AAKN;EACE;EAEA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEE;EACA;EACA;;AApUF;EAuUA;IAEI;;;AAzUJ;EA6UA;IAEI;;;;AAON;EACE;EACA;;AAQA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;;;AAOJ;AAAA;EACE;;AAGF;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;AAQJ;AAAA;AAAA;AAAA;EAEE;;AAEA;AAAA;AAAA;AAAA;EACE;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;EACA;;;AAOV;EACE;EACA;EACA;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EAEA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;;;AAMJ;EACE;;AAOF;EACE;EACA;EACA;EACA;;AAhjBA;EA4iBF;IAOI;;;AAIJ;EACE;EACA;EACA;;AAcJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAmBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;;AAEA;EACE;;AAOF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAMF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;AAKF;EACE;;;AAKN;EACE;EACA;EACA;;AAIE;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAOE;EACE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAMJ;AAAA;EAEE;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMR;EACE;EACA;;;AAGF;AACA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AACA;AAAA;EAEE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;;;AAGF;EACE;EACA;EACA","file":"admin.css"}
assets/img/icon-blocked.svg ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#E0E0D1;}
7
+ .st1{opacity:0.2;}
8
+ .st2{fill:#231F20;}
9
+ .st3{fill:#C75C5C;}
10
+ </style>
11
+ <g id="Layer_1">
12
+ <g>
13
+ <circle class="st0" cx="32" cy="32" r="32"/>
14
+ </g>
15
+ <g class="st1">
16
+ <path class="st2" d="M32,12c-12.2,0-22,9.8-22,22s9.8,22,22,22s22-9.8,22-22S44.2,12,32,12z M48,34c0,3.3-1,6.4-2.8,9L23,20.8
17
+ c2.6-1.7,5.7-2.8,9-2.8C40.8,18,48,25.2,48,34z M16,34c0-3.3,1-6.4,2.8-9L41,47.2C38.4,49,35.3,50,32,50C23.2,50,16,42.8,16,34z"
18
+ />
19
+ </g>
20
+ <g>
21
+ <path class="st3" d="M32,16c8.8,0,16,7.2,16,16s-7.2,16-16,16s-16-7.2-16-16S23.2,16,32,16 M32,10c-12.2,0-22,9.8-22,22
22
+ s9.8,22,22,22s22-9.8,22-22S44.2,10,32,10L32,10z"/>
23
+ </g>
24
+ <g>
25
+ <rect x="12.2" y="29" transform="matrix(0.7071 0.7071 -0.7071 0.7071 32 -13.2548)" class="st3" width="39.6" height="6"/>
26
+ </g>
27
+ </g>
28
+ <g id="Layer_2">
29
+ </g>
30
+ </svg>
assets/img/icon-bug.svg ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
5
+ <g>
6
+ <path style="fill:#C74C4E;" d="M495.078,327.706H438.13c-9.346,0-16.922-7.577-16.922-16.922c0-9.346,7.577-16.922,16.922-16.922
7
+ h56.947c9.346,0,16.922,7.577,16.922,16.922C512,320.13,504.423,327.706,495.078,327.706z"/>
8
+ <path style="fill:#C74C4E;" d="M372.82,193.964c-6.609-6.609-6.609-17.323,0-23.932l40.267-40.266
9
+ c6.608-6.609,17.323-6.608,23.932,0c6.609,6.609,6.609,17.323,0,23.932l-40.267,40.267
10
+ C390.143,200.572,379.428,200.573,372.82,193.964z"/>
11
+ <path style="fill:#C74C4E;" d="M413.087,491.803l-40.267-40.267c-6.609-6.609-6.609-17.323,0-23.932
12
+ c6.608-6.609,17.323-6.609,23.932,0l40.267,40.267c6.609,6.609,6.609,17.323,0,23.932
13
+ C430.411,498.412,419.696,498.413,413.087,491.803z"/>
14
+ </g>
15
+ <g>
16
+ <path style="fill:#DE5153;" d="M73.87,327.706H16.922C7.577,327.706,0,320.13,0,310.784c0-9.346,7.577-16.922,16.922-16.922H73.87
17
+ c9.346,0,16.922,7.577,16.922,16.922C90.792,320.13,83.215,327.706,73.87,327.706z"/>
18
+ <path style="fill:#DE5153;" d="M115.248,193.964l-40.267-40.267c-6.609-6.608-6.609-17.323,0-23.932
19
+ c6.608-6.609,17.323-6.609,23.932,0l40.267,40.266c6.609,6.609,6.609,17.323,0,23.932
20
+ C132.574,200.572,121.857,200.573,115.248,193.964z"/>
21
+ <path style="fill:#DE5153;" d="M74.981,491.803c-6.609-6.609-6.609-17.323,0-23.932l40.267-40.267
22
+ c6.608-6.609,17.323-6.609,23.932,0s6.609,17.323,0,23.932l-40.267,40.267C92.305,498.412,81.589,498.413,74.981,491.803z"/>
23
+ <path style="fill:#DE5153;" d="M318.458,157.792c-19.824-8.106-40.838-12.216-62.458-12.216c-21.619,0-42.633,4.11-62.458,12.216
24
+ c-9.484,3.876-20.213-1.507-22.783-11.411c-6.887-26.532-1.199-54.209,15.608-75.937c16.808-21.73,42.189-34.192,69.635-34.192
25
+ s52.826,12.461,69.633,34.188c16.807,21.727,22.497,49.407,15.609,75.94C338.659,156.338,327.89,161.648,318.458,157.792z"/>
26
+ </g>
27
+ <path style="fill:#C74C4E;" d="M325.633,70.44C308.827,48.713,283.446,36.252,256,36.252v109.324c21.62,0,42.634,4.11,62.458,12.216
28
+ c9.431,3.856,20.2-1.454,22.783-11.412C348.13,119.846,342.441,92.167,325.633,70.44z"/>
29
+ <g>
30
+ <path style="fill:#FC5B5D;" d="M244.924,65.966l-39.36-34.086c-7.066-6.118-7.833-16.805-1.715-23.871
31
+ c6.117-7.065,16.805-7.833,23.87-1.714L256,30.788l28.282-24.492c7.062-6.12,17.75-5.351,23.87,1.714s5.351,17.752-1.715,23.871
32
+ l-39.36,34.086C260.722,71.473,251.28,71.473,244.924,65.966z"/>
33
+ <path style="fill:#FC5B5D;" d="M256,509.837c-109.759,0-199.053-89.295-199.053-199.053c0-109.971,89.103-199.053,199.053-199.053
34
+ c109.935,0,199.053,89.071,199.053,199.053C455.053,420.542,365.759,509.837,256,509.837z"/>
35
+ </g>
36
+ <g>
37
+ <path style="fill:#DE5153;" d="M256,111.731v398.105c109.759,0,199.053-89.295,199.053-199.053
38
+ C455.053,200.802,365.935,111.731,256,111.731z"/>
39
+ <path style="fill:#DE5153;" d="M239.078,112.451V509.11c10.98,0.928,21.944,1.006,33.845,0V112.451
40
+ C261.924,111.528,250.948,111.456,239.078,112.451z"/>
41
+ <path style="fill:#DE5153;" d="M164.935,356.356c-25.128,0-45.572-20.443-45.572-45.572c0-25.128,20.443-45.572,45.572-45.572
42
+ s45.572,20.443,45.572,45.572C210.507,335.913,190.064,356.356,164.935,356.356z"/>
43
+ <circle style="fill:#DE5153;" cx="195.702" cy="397.26" r="17.336"/>
44
+ <circle style="fill:#DE5153;" cx="204.332" cy="227.889" r="17.336"/>
45
+ <path style="fill:#DE5153;" d="M308.153,8.008c-6.119-7.065-16.807-7.834-23.87-1.714l-28.282,24.492L256,30.786v39.31
46
+ c3.95,0,7.901-1.376,11.079-4.13l39.36-34.086C313.505,25.761,314.272,15.074,308.153,8.008z"/>
47
+ </g>
48
+ <g>
49
+ <path style="fill:#C74C4E;" d="M272.922,112.451c-5.606-0.47-11.207-0.716-16.922-0.716v398.099c5.491,0,11.093-0.229,16.922-0.723
50
+ V112.451z"/>
51
+ <path style="fill:#C74C4E;" d="M347.065,356.356c-25.128,0-45.572-20.443-45.572-45.572c0-25.128,20.443-45.572,45.572-45.572
52
+ c25.129,0,45.572,20.443,45.572,45.572C392.636,335.913,372.193,356.356,347.065,356.356z"/>
53
+ <circle style="fill:#C74C4E;" cx="316.302" cy="397.26" r="17.336"/>
54
+ <circle style="fill:#C74C4E;" cx="307.672" cy="227.889" r="17.336"/>
55
+ </g>
56
+ <g>
57
+ </g>
58
+ <g>
59
+ </g>
60
+ <g>
61
+ </g>
62
+ <g>
63
+ </g>
64
+ <g>
65
+ </g>
66
+ <g>
67
+ </g>
68
+ <g>
69
+ </g>
70
+ <g>
71
+ </g>
72
+ <g>
73
+ </g>
74
+ <g>
75
+ </g>
76
+ <g>
77
+ </g>
78
+ <g>
79
+ </g>
80
+ <g>
81
+ </g>
82
+ <g>
83
+ </g>
84
+ <g>
85
+ </g>
86
+ </svg>
assets/img/icon-edit.svg ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="489px" height="489px" viewBox="0 0 489 489" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>icon-edit</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="icon-edit" transform="translate(0.697000, 0.000236)" fill="#FFFFFF" fill-rule="nonzero">
6
+ <path d="M486.45,462.519764 L450.05,294.919764 C450.05,290.719764 447.95,287.619764 444.85,284.519764 L183.55,23.2197636 C163.55,0.319763574 109.25,-14.8802364 71.15,23.2197636 L23.25,71.1197636 C-7.75,102.119764 -7.75,152.519764 23.25,183.519764 L284.55,444.819764 C286.65,446.919764 289.75,449.019764 293.95,450.019764 L462.55,488.519764 C472.65,490.019764 491.65,483.619764 486.45,462.519764 Z M52.35,154.419764 C36.75,138.819764 36.75,114.819764 52.35,99.2197636 L100.25,51.3197636 C115.45,36.1197636 140.25,36.1197636 155.45,51.3197636 L393.85,289.719764 L366.75,289.719764 C355.35,289.719764 345.95,299.119764 345.95,310.519764 L345.95,344.819764 L311.65,344.819764 C300.25,344.819764 290.85,354.219764 290.85,365.619764 L290.85,391.719764 L52.35,154.419764 Z M332.35,415.719764 L332.35,386.519764 L366.65,386.519764 C384.65,388.219764 387.45,370.019764 387.45,365.719764 L387.45,331.319764 L416.65,331.319764 L440.65,440.619764 L332.35,415.719764 Z" id="Shape"></path>
7
+ </g>
8
+ </g>
9
+ </svg>
assets/img/icon-email.svg ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 309.267 309.267" style="enable-background:new 0 0 309.267 309.267;" xml:space="preserve">
5
+ <g>
6
+ <path style="fill:#F4B459;" d="M28.994,256.112h251.279c16.014,0,28.994-12.989,28.994-28.994V82.149
7
+ c0-16.014-12.98-28.994-28.994-28.994H28.994C12.989,53.155,0,66.135,0,82.149v144.969C0,243.123,12.989,256.112,28.994,256.112z"
8
+ />
9
+ <g>
10
+ <path style="fill:#E8AB54;" d="M9.723,248.622l120.943-93.07L9.984,60.413C3.914,65.729,0,73.441,0,82.149v144.969
11
+ C0,235.69,3.798,243.316,9.723,248.622z M299.486,60.578l-125.417,95.245l125.301,92.944c6.031-5.306,9.897-12.999,9.897-21.649
12
+ V82.149C309.267,73.538,305.44,65.893,299.486,60.578z"/>
13
+ </g>
14
+ <path style="fill:#FADAAC;" d="M305.44,241.257L199.825,156.75l106.881-86.44c-2.378-5.267-6.253-9.665-11.105-12.69
15
+ L159.079,166.83L18.865,55.069c-5.644,2.117-10.486,5.866-13.83,10.776l112.892,90.548L6.495,245.181
16
+ c3.798,4.716,8.978,8.196,14.99,9.819l110.399-87.32l6.736,5.432c11.308,11.646,29.641,11.646,40.959,0l6.272-5.074l107.267,84.942
17
+ C298.327,250.39,302.589,246.312,305.44,241.257z"/>
18
+ </g>
19
+ <g>
20
+ </g>
21
+ <g>
22
+ </g>
23
+ <g>
24
+ </g>
25
+ <g>
26
+ </g>
27
+ <g>
28
+ </g>
29
+ <g>
30
+ </g>
31
+ <g>
32
+ </g>
33
+ <g>
34
+ </g>
35
+ <g>
36
+ </g>
37
+ <g>
38
+ </g>
39
+ <g>
40
+ </g>
41
+ <g>
42
+ </g>
43
+ <g>
44
+ </g>
45
+ <g>
46
+ </g>
47
+ <g>
48
+ </g>
49
+ </svg>
assets/img/icon-error.svg ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
5
+ <path style="fill:#464655;" d="M509.435,448.962L271.75,44.367c-7.076-12.045-24.424-12.045-31.5,0L2.565,448.962
6
+ c-7.194,12.245,1.595,27.705,15.75,27.705h475.368C507.839,476.666,516.629,461.207,509.435,448.962z"/>
7
+ <path style="fill:#5B5D6E;" d="M310.09,109.633c-75.525,54.5-124.731,143.208-124.731,243.46c0,44.069,9.578,85.877,26.64,123.573
8
+ h281.685c14.155,0,22.944-15.459,15.75-27.705L310.09,109.633z"/>
9
+ <path style="fill:#FFDC64;" d="M252.195,93.738L53.788,431.474c-2.57,4.374,0.585,9.885,5.658,9.885h393.11
10
+ c5.073,0,8.228-5.511,5.658-9.885L259.805,93.738C258.099,90.834,253.901,90.834,252.195,93.738z"/>
11
+ <path style="fill:#FFF082;" d="M185.36,353.093c0,30.722,4.638,60.357,13.216,88.267h253.98c5.073,0,8.228-5.511,5.658-9.885
12
+ L282.389,132.181C222.755,187.029,185.36,265.683,185.36,353.093z"/>
13
+ <g>
14
+ <circle style="fill:#464655;" cx="256.028" cy="379.568" r="17.653"/>
15
+ <path style="fill:#464655;" d="M239.049,213.171l7.566,113.485c0.33,4.948,4.174,8.784,8.805,8.784h1.216
16
+ c4.631,0,8.475-3.834,8.805-8.784l7.566-113.485c0.365-5.475-3.682-10.131-8.805-10.131h-16.347
17
+ C242.731,203.04,238.684,207.697,239.049,213.171z"/>
18
+ </g>
19
+ <path style="fill:#FFC850;" d="M452.556,450.186H59.442c-5.499,0-10.62-2.966-13.353-7.741c-2.733-4.78-2.698-10.697,0.086-15.442
20
+ L244.587,89.258c2.405-4.086,6.672-6.525,11.422-6.525c4.741,0,9.008,2.439,11.413,6.525l198.401,337.744
21
+ c2.784,4.75,2.819,10.667,0.086,15.442C463.176,447.22,458.055,450.186,452.556,450.186z M63.399,432.533h385.201L255.998,104.684
22
+ L63.399,432.533z"/>
23
+ <path style="fill:#FFDC64;" d="M448.599,432.533H196.069c1.633,5.964,3.455,11.844,5.441,17.653h251.048
24
+ c5.499,0,10.62-2.966,13.353-7.741c2.733-4.775,2.698-10.692-0.086-15.442L289.135,126.224c-4.553,3.944-9,8.005-13.307,12.212
25
+ L448.599,432.533z"/>
26
+ <g>
27
+ </g>
28
+ <g>
29
+ </g>
30
+ <g>
31
+ </g>
32
+ <g>
33
+ </g>
34
+ <g>
35
+ </g>
36
+ <g>
37
+ </g>
38
+ <g>
39
+ </g>
40
+ <g>
41
+ </g>
42
+ <g>
43
+ </g>
44
+ <g>
45
+ </g>
46
+ <g>
47
+ </g>
48
+ <g>
49
+ </g>
50
+ <g>
51
+ </g>
52
+ <g>
53
+ </g>
54
+ <g>
55
+ </g>
56
+ </svg>
assets/img/icon-export.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <svg width="24px" height="24px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" d="M19.7903934,18.6127185 L19.7072026,18.7069258 L16.7071326,21.7069258 C16.6801187,21.7339397 16.6515664,21.7594153 16.6216183,21.7832098 L16.500353,21.8659223 L16.500353,21.8659223 L16.427064,21.9043128 L16.427064,21.9043128 L16.3400271,21.9405322 L16.3400271,21.9405322 L16.2335653,21.9723902 L16.2335653,21.9723902 L16.116647,21.9930913 L16.033029,21.9992768 L16.033029,21.9992768 L15.9409671,21.9980859 L15.8251966,21.9845213 L15.8251966,21.9845213 L15.6878494,21.9500809 L15.6878494,21.9500809 L15.5767675,21.9061457 L15.5767675,21.9061457 L15.4792778,21.8538236 L15.4792778,21.8538236 L15.3832241,21.7870331 L15.2928749,21.7069258 L12.2927974,18.7069258 C11.902263,18.3164015 11.902263,17.6832365 12.2927974,17.2927122 C12.6532907,16.9322283 13.2205364,16.9044987 13.6128377,17.2095236 L13.7070475,17.2927122 L14.9998966,18.584819 L14.9999741,8.99981902 C14.9999741,8.48698318 15.3860143,8.06431186 15.883353,8.00654675 L16.0000259,7.99981902 C16.5523106,7.99981902 17.0000259,8.44753427 17.0000259,8.99981902 L16.9998966,18.584819 L18.2929525,17.2927122 C18.6534458,16.9322283 19.2206915,16.9044987 19.6129929,17.2095236 L19.7072026,17.2927122 C20.0376548,17.6231559 20.0884936,18.1273245 19.859719,18.511222 L19.7903934,18.6127185 L19.7903934,18.6127185 Z M4.29279737,5.29255711 L7.29286736,2.29255711 L7.40481484,2.1959774 L7.51569719,2.12453966 L7.51569719,2.12453966 L7.62891562,2.07076785 L7.62891562,2.07076785 L7.73413453,2.03538486 L7.73413453,2.03538486 L7.82519664,2.01496161 L7.82519664,2.01496161 L7.94096709,2.00139699 L8.05914398,2.00139699 L8.05914398,2.00139699 L8.17466132,2.0149356 L8.17466132,2.0149356 L8.31274961,2.04953478 L8.31274961,2.04953478 L8.36670687,2.06905084 L8.45385903,2.10832658 L8.45385903,2.10832658 L8.52068604,2.14573132 L8.52068604,2.14573132 L8.60170489,2.20078783 L8.60170489,2.20078783 L8.66547577,2.25320781 L8.66547577,2.25320781 L8.70713264,2.29255711 L11.7072026,5.29255711 L11.7903934,5.38676445 C12.0700068,5.74636472 12.0700068,6.25296306 11.7903934,6.61256333 L11.7072026,6.70677067 L11.6129929,6.78995928 C11.2533833,7.06956543 10.7467718,7.06956543 10.3871623,6.78995928 L10.2929525,6.70677067 L8.99989658,5.41466389 L9.00002585,14.9996639 C9.00002585,15.5124997 8.61398566,15.9351711 8.11664698,15.9929362 L8.00002585,15.9996639 L7.88335302,15.9929362 C7.42427116,15.9396145 7.06002351,15.5753669 7.00670188,15.116285 L6.99997415,14.9996639 L6.99989658,5.41466389 L5.7070475,6.70677067 L5.61283773,6.78995928 C5.22053638,7.09498417 4.65329066,7.06725463 4.29279737,6.70677067 C3.93230409,6.34628671 3.90457384,5.77905565 4.20960662,5.38676445 L4.29279737,5.29255711 Z"/>
3
+ </svg>
assets/img/icon-google.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path fill="#FFC107" d="M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12c0-6.627,5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24c0,11.045,8.955,20,20,20c11.045,0,20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z"/><path fill="#FF3D00" d="M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z"/><path fill="#4CAF50" d="M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36c-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z"/><path fill="#1976D2" d="M43.611,20.083H42V20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571c0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z"/></svg>
assets/img/icon-honeypot.svg ADDED
@@ -0,0 +1 @@
 
1
+ <?xml version="1.0" ?><svg width="47.5px" height="47.5px" viewBox="0 0 47.5 47.5" id="svg2" style="enable-background:new 0 0 47.5 47.5;" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs6"><clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"><path d="M 0,38 38,38 38,0 0,0 0,38 Z" id="path18"/></clipPath></defs><g id="g10" transform="matrix(1.25,0,0,-1.25,0,47.5)"><g id="g12"><g clip-path="url(#clipPath16)" id="g14"><g id="g20" transform="translate(32,15)"><path d="m 0,0 c -3,-11 -5.019,-14 -13,-14 -8,0 -10,3 -13,14 -2.035,7.46 2,14 13,14 C -2,14 2.034,7.46 0,0" id="path22" style="fill:#f4900c;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g24" transform="translate(30,26)"><path d="m 0,0 c 2,-4 -3,-8 -11,-8 -8,0 -13,4 -11,8 1.482,2.964 4.373,6 11,6 6.627,0 9.519,-3.036 11,-6" id="path26" style="fill:#be1931;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g28" transform="translate(31,26)"><path d="m 0,0 c 0,-4 -5.373,-6 -12,-6 -6.627,0 -12,2 -12,6 0,3.313 5.373,6 12,6 C -5.373,6 0,3.313 0,0" id="path30" style="fill:#ffac33;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g32" transform="translate(28,27)"><path d="m 0,0 c 1,-1 2,-2 2,-3 0,-1 -1,-3 -2,-2 0,0 2.948,-1.154 2,-4 -1,-3 -4,-2 -4,0 0,2 -1.553,3.342 -2,2 -1,-3 -3,-3 -4,-2 -1,1 -1,2 -1,2 0,0 -3,0 -2,2 1,2 0,2 0,2 0,0 0,1 1,1 1,0 7,1 8,2 1,1 2,0 2,0" id="path34" style="fill:#ffe8b6;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g36" transform="translate(29,27.7222)"><path d="m 0,0 c 0,-2.608 -4.477,-4.722 -10,-4.722 -5.523,0 -10,2.114 -10,4.722 0,2.608 4.477,4.278 10,4.278 5.523,0 10,-1.67 10,-4.278" id="path38" style="fill:#662113;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g40" transform="translate(19,23)"><path d="M 0,0 C 4.548,0 8.379,1.435 9.593,3.396 9.4,3.598 9.201,3.799 9,4 9,4 7,6 6,5 5,4 0,4 -1,4 -2,4 -3,3 -3,3 -3,3 -1.413,0.989 -1.603,0.066 -1.08,0.026 -0.547,0 0,0" id="path42" style="fill:#f4900c;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g44" transform="translate(27,28.5)"><path d="m 0,0 c 0,-1.933 -3.582,-3.5 -8,-3.5 -4.418,0 -8,1.567 -8,3.5 0,1.933 3.582,5.5 8,5.5 4.418,0 8,-3.567 8,-5.5" id="path46" style="fill:#ffcc4d;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g48" transform="translate(21,34.5)"><path d="m 0,0 c 0,-0.828 -0.896,-1.5 -2,-1.5 -1.104,0 -2,0.672 -2,1.5 0,0.828 0.896,1.5 2,1.5 1.104,0 2,-0.672 2,-1.5" id="path50" style="fill:#f4900c;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g52" transform="translate(6.6851,12.5898)"><path d="m 0,0 c 0.725,-2.457 1.425,-4.436 2.204,-6.013 3.111,-2.577 8.111,-2.577 10.111,-2.577 2,0 7,0 10.106,2.576 0.781,1.577 1.483,3.556 2.208,6.014 C 21.924,-1.562 17.427,-2.59 12.315,-2.59 7.203,-2.59 2.705,-1.562 0,0" id="path54" style="fill:#ffcc4d;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g></g></g></g></svg>
assets/img/icon-info.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="246px" height="246px" viewBox="0 0 246 246" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>icon-info</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="icon-info" fill="#FFFFFF" fill-rule="nonzero">
6
+ <path d="M122.667,0 C55.028,0 0,55.028 0,122.667 C0,190.306 55.027,245.334 122.666,245.334 C190.305,245.334 245.333,190.306 245.333,122.667 C245.333,55.028 190.305,0 122.667,0 Z M122.667,215.334 C71.57,215.334 30,173.764 30,122.667 C30,71.57 71.57,30 122.667,30 C173.764,30 215.334,71.57 215.334,122.667 C215.334,173.764 173.763,215.334 122.667,215.334 Z" id="Shape"></path>
7
+ <rect id="Rectangle" x="107.667" y="109.167" width="30" height="79"></rect>
8
+ <rect id="Rectangle" x="107.667" y="57.167" width="30" height="29"></rect>
9
+ </g>
10
+ </g>
11
+ </svg>
assets/img/icon-ipinfo.svg ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="24px" height="30px" viewBox="0 0 24 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Path</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="logo" transform="translate(0.000000, 0.000977)" fill="#0095E5">
6
+ <path d="M13.2061,22.6077235 L15.1581,24.8807235 L17.4131,22.9147235 L19.6221,20.9887235 C21.9976,18.9002235 23.4548,15.9599235 23.6781,12.8047235 C23.9057,9.64720345 22.882,6.52684345 20.8281,4.11777345 C19.8094,2.93635345 18.5678,1.96731345 17.1744,1.26603345 C15.7809,0.564756452 14.2629,0.145003452 12.7071,0.0307712515 C11.1521,-0.0815362485 9.59012996,0.114261452 8.11090996,0.606934452 C6.63168996,1.09960345 5.26427996,1.87946345 4.08711996,2.90177345 C1.71146996,4.99064345 0.254275959,7.93125345 0.0311230588,11.0867235 C-0.196099041,14.2440235 0.827587959,17.3639235 2.88111996,19.7727235 L10.6701,28.8427235 C11.3661,29.6527235 12.0981,30.5307235 13.2291,29.5947235 L13.2631,29.5657235 L13.2951,29.5367235 C14.3771,28.5417235 13.6201,27.6857235 12.9241,26.8747235 L12.4381,26.3097235 L5.13611996,17.8027235 C3.60076996,15.9983235 2.83581996,13.6629235 3.00611996,11.2997235 C3.17376996,8.93808345 4.26396996,6.73719345 6.04111996,5.17277345 C6.92283996,4.40840345 7.94663996,3.82541345 9.05391996,3.45717345 C10.1612,3.08894345 11.3302,2.94268345 12.4941,3.02677345 C14.846,3.19983345 17.033,4.29976345 18.5741,6.08477345 C20.1095,7.88921345 20.8744,10.2246235 20.7041,12.5877235 C20.5367,14.9493235 19.4469,17.1502235 17.6701,18.7147235 L15.4621,20.6407235 L13.5101,18.3677235 L11.5581,16.0947235 L9.64811996,13.8697235 C9.14905996,13.2749235 8.90099996,12.5091235 8.95642996,11.7346235 C9.01185996,10.9601235 9.36642996,10.2375235 9.94511996,9.71977345 C10.5329,9.21767345 11.295,8.96749345 12.066,9.02346345 C12.8371,9.07943345 13.555,9.43704345 14.0641,10.0187235 C14.4992,10.5372235 14.7459,11.1877235 14.7641,11.8643235 C14.7823,12.5409235 14.5708,13.2037235 14.1641,13.7447235 C13.9701,14.0270235 13.8743,14.3654235 13.8917,14.7075235 C13.909,15.0496235 14.0385,15.3765235 14.2601,15.6377235 C15.2401,16.7787235 16.3211,15.9937235 16.8971,15.0277235 C17.5386,13.9495235 17.8276,12.6979235 17.7238,11.4476235 C17.62,10.1972235 17.1286,9.01049345 16.3181,8.05277345 C15.2939,6.86873345 13.8415,6.13979345 12.2801,6.02616345 C10.7186,5.91253345 9.17597996,6.42350345 7.99111996,7.44677345 C6.81345996,8.48874345 6.09098996,9.95070345 5.97862996,11.5191235 C5.86627996,13.0875235 6.37299996,14.6376235 7.39011996,15.8367235 L9.30111996,18.0627235 L11.2541,20.3327235 L13.2061,22.6057235 L13.2061,22.6077235 L13.2061,22.6077235 Z" id="Path"></path>
7
+ </g>
8
+ </g>
9
+ </svg>
assets/img/icon-ipstack.svg ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="73px" height="73px" viewBox="0 0 73 73" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>ipstack_logo</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="ipstack_logo" transform="translate(0.400000, 0.400000)" fill-rule="nonzero">
6
+ <g id="Group">
7
+ <g fill="#E97C2A" id="Path">
8
+ <path d="M22.3,2.8 L22.3,2.8 C22.3,2.8 22.4,2.8 22.4,2.8 C22.4,2.8 22.3,2.8 22.3,2.8 Z"></path>
9
+ <path d="M15.9,17.1 C15.9,14.1 18.2,11.6 21.1,11.2 L22.3,2.8 C13.3,6.5 6.2,13.7 2.5,22.7 L15.9,17.7 C15.9,17.5 15.9,17.3 15.9,17.1 Z"></path>
10
+ <path d="M24.4,41.4 L0.1,40.1 C1,48 4.4,55.1 9.5,60.6 C10.4,58.5 12.5,57 15,57 C15.6,57 16.2,57.1 16.8,57.3 L25.6,43.3 C25.1,42.7 24.7,42.1 24.4,41.4 Z"></path>
11
+ <path d="M26.3,34.4 L22.2,23.1 C22.1,23.1 22.1,23.1 22,23.1 C20.3,23.1 18.8,22.4 17.7,21.3 L1,27.5 C0.3,30.2 0,33.1 0,36 L24.3,37.3 C24.6,36.2 25.3,35.2 26.3,34.4 Z"></path>
12
+ <path d="M29.9,45.1 C29.6,45.1 29.4,45.1 29.1,45 L19.9,59.7 C20.5,60.7 20.9,61.8 20.9,63 C20.9,64.9 20,66.5 18.7,67.6 C24,70.5 29.9,72 35.9,72 C36.7,72 37.5,72 38.3,71.9 L29.9,45.1 Z"></path>
13
+ <path d="M47.9,7.1 C47.9,5.4 48.6,3.9 49.7,2.8 C45.5,1 40.8,0 35.9,0 C32.6,0 29.5,0.4 26.5,1.3 L25,11.9 C25.8,12.4 26.5,13 26.9,13.8 L47.9,7.2 C47.9,7.3 47.9,7.2 47.9,7.1 Z"></path>
14
+ <path d="M63.9,44.1 C63.9,47.1 61.7,49.6 58.8,50 L54.4,66.9 C64.2,61 71,50.5 71.8,38.4 L63.9,43.3 C63.9,43.6 63.9,43.8 63.9,44.1 Z"></path>
15
+ <path d="M59.6,9 C59.1,10.4 58.1,11.6 56.8,12.4 L59.6,38.3 C60.6,38.6 61.4,39.1 62.1,39.7 L71.8,33.7 C71.2,23.9 66.6,15.1 59.6,9 Z"></path>
16
+ <path d="M55.6,38.5 L52.8,12.9 C51.5,12.6 50.3,12 49.4,11 L27.8,17.8 C27.6,19.3 26.9,20.6 25.8,21.6 L30,33.1 C33,33.2 35.5,35.5 35.9,38.4 L52.5,41.4 C53.2,40.1 54.3,39.1 55.6,38.5 Z"></path>
17
+ <path d="M52.1,45.4 L35,42.3 C34.6,42.8 34.2,43.3 33.7,43.7 L42.4,71.4 C44.9,70.9 47.4,70.2 49.7,69.3 L54.9,49.2 C53.5,48.4 52.5,47 52.1,45.4 Z"></path>
18
+ </g>
19
+ <path d="M14.9,60.1 C16.6,60.1 17.9,61.4 17.9,63.1 C17.9,64.4 17,65.6 15.8,66 C14.4,65.1 13.2,64.1 11.9,63 C12,61.3 13.3,60.1 14.9,60.1 Z M29.9,42.1 C28.2,42.1 26.9,40.8 26.9,39.1 C26.9,37.4 28.2,36.1 29.9,36.1 C31.6,36.1 32.9,37.4 32.9,39.1 C32.9,40.8 31.6,42.1 29.9,42.1 Z M24.9,17.1 C24.9,18.8 23.6,20.1 21.9,20.1 C20.2,20.1 18.9,18.8 18.9,17.1 C18.9,15.4 20.2,14.1 21.9,14.1 C23.6,14.1 24.9,15.4 24.9,17.1 Z M57.9,47.1 C56.2,47.1 54.9,45.8 54.9,44.1 C54.9,42.4 56.2,41.1 57.9,41.1 C59.6,41.1 60.9,42.4 60.9,44.1 C60.9,45.8 59.6,47.1 57.9,47.1 L57.9,47.1 Z M56.9,7.1 C56.9,8.8 55.6,10.1 53.9,10.1 C52.2,10.1 50.9,8.8 50.9,7.1 C50.9,5.8 51.7,4.7 52.8,4.3 C54.2,5.1 55.6,5.9 56.9,6.8 C56.9,6.9 56.9,7 56.9,7.1 Z" id="Shape" fill="#FFFFFF"></path>
20
+ </g>
21
+ </g>
22
+ </g>
23
+ </svg>
assets/img/icon-location.svg ADDED
@@ -0,0 +1 @@
 
1
+ <?xml version="1.0" ?><svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><defs><style>.cls-1{fill:#8c9eff;}.cls-2{fill:#5f7cf9;}.cls-3{fill:#4062ed;}</style></defs><title/><g id="Map"><path class="cls-1" d="M25.7,11.49a10.49,10.49,0,0,0-2.84-6.63,9.71,9.71,0,0,0-13.72,0A10.49,10.49,0,0,0,6.3,11.49c-.27,3.13,1.22,5.8,2.78,8.27.37.58,3.64,5.78,5.22,8.35a2,2,0,0,0,1.7.95h0a2,2,0,0,0,1.7-.95c1.58-2.57,4.85-7.77,5.22-8.35C24.48,17.29,26,14.62,25.7,11.49Z"/><path class="cls-2" d="M17.7,28.11c1.58-2.57,4.85-7.77,5.22-8.35,1.56-2.47,3-5.14,2.78-8.27a10.49,10.49,0,0,0-2.84-6.63A9.64,9.64,0,0,0,16,2v27A2,2,0,0,0,17.7,28.11Z"/><circle class="cls-2" cx="16" cy="12" r="4"/><path class="cls-3" d="M20,12a4,4,0,0,0-4-4v8A4,4,0,0,0,20,12Z"/></g></svg>
assets/img/icon-log.svg ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
5
+ <rect x="73.846" y="334.769" style="fill:#707487;" width="49.231" height="78.769"/>
6
+ <path style="fill:#FF7873;" d="M452.923,167.385v118.154l50.849-8.475c4.747-0.791,8.228-4.898,8.228-9.712v-81.78
7
+ c0-4.814-3.479-8.921-8.228-9.712L452.923,167.385z"/>
8
+ <path style="fill:#FF5050;" d="M452.923,0h-5.093c-3.003,0-5.744,1.41-7.623,3.753C368.023,93.66,102.871,106.256,29.041,108.021
9
+ c-10.699,0.255-19.195,8.982-19.195,19.684v197.513c0,10.702,8.496,19.429,19.195,19.685
10
+ c73.831,1.765,338.982,14.359,411.166,104.267c1.879,2.341,4.62,3.753,7.623,3.753h5.093c5.438,0,9.846-4.409,9.846-9.846V9.846
11
+ C462.769,4.409,458.361,0,452.923,0z"/>
12
+ <path style="fill:#C84146;" d="M452.923,324.923h-5.093c-3.003,0-5.744-0.768-7.623-2.039
13
+ c-64.496-43.659-282.938-53.769-381.415-56.111c-5.342-0.127-9.561-4.497-9.561-9.84V107.386c-7.691,0.29-14.556,0.5-20.19,0.634
14
+ c-10.699,0.256-19.195,8.983-19.195,19.685v197.513c0,10.702,8.496,19.429,19.195,19.685
15
+ c73.831,1.765,338.982,14.359,411.166,104.267c1.879,2.341,4.62,3.753,7.623,3.753h5.093c5.438,0,9.846-4.409,9.846-9.846V319.572
16
+ C462.769,322.527,458.361,324.923,452.923,324.923z"/>
17
+ <g>
18
+ <path style="fill:#91282D;" d="M128,177.231H49.231c-5.442,0-9.846-4.404-9.846-9.846c0-5.442,4.404-9.846,9.846-9.846H128
19
+ c5.442,0,9.846,4.404,9.846,9.846C137.846,172.827,133.442,177.231,128,177.231z"/>
20
+ <path style="fill:#91282D;" d="M128,295.385H49.231c-5.442,0-9.846-4.404-9.846-9.846c0-5.442,4.404-9.846,9.846-9.846H128
21
+ c5.442,0,9.846,4.404,9.846,9.846C137.846,290.981,133.442,295.385,128,295.385z"/>
22
+ </g>
23
+ <path style="fill:#FF5050;" d="M130.414,409.631C127.086,394.655,113.803,384,98.462,384s-28.624,10.655-31.952,25.631
24
+ l-20.561,92.523h105.025L130.414,409.631z"/>
25
+ <path style="fill:#959CB5;" d="M187.077,512H9.846C4.404,512,0,507.596,0,502.154c0-5.442,4.404-9.846,9.846-9.846h177.231
26
+ c5.442,0,9.846,4.404,9.846,9.846C196.923,507.595,192.519,512,187.077,512z"/>
27
+ <path style="fill:#91282D;" d="M128,236.308H49.231c-5.442,0-9.846-4.404-9.846-9.846s4.404-9.846,9.846-9.846H128
28
+ c5.442,0,9.846,4.404,9.846,9.846S133.442,236.308,128,236.308z"/>
29
+ <circle style="fill:#707487;" cx="98.462" cy="413.538" r="14.769"/>
30
+ <g>
31
+ </g>
32
+ <g>
33
+ </g>
34
+ <g>
35
+ </g>
36
+ <g>
37
+ </g>
38
+ <g>
39
+ </g>
40
+ <g>
41
+ </g>
42
+ <g>
43
+ </g>
44
+ <g>
45
+ </g>
46
+ <g>
47
+ </g>
48
+ <g>
49
+ </g>
50
+ <g>
51
+ </g>
52
+ <g>
53
+ </g>
54
+ <g>
55
+ </g>
56
+ <g>
57
+ </g>
58
+ <g>
59
+ </g>
60
+ </svg>
assets/img/icon-reports.svg ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
5
+ <polygon style="fill:#2D2D2D;" points="313.816,343.644 180.864,209.524 52.456,337.94 41.144,326.612 180.912,186.852
6
+ 313.816,320.908 441.064,192.548 452.424,203.812 "/>
7
+ <circle style="fill:#C9C9C9;" cx="46.792" cy="332.276" r="46.792"/>
8
+ <circle style="fill:#FFFFFF;" cx="46.792" cy="332.276" r="20.592"/>
9
+ <circle style="fill:#C9C9C9;" cx="315.976" cy="332.276" r="46.792"/>
10
+ <circle style="fill:#FFFFFF;" cx="315.976" cy="332.276" r="20.592"/>
11
+ <circle style="fill:#E50914;" cx="180.96" cy="198.188" r="65.256"/>
12
+ <circle style="fill:#FFFFFF;" cx="180.96" cy="198.188" r="28.72"/>
13
+ <circle style="fill:#E50914;" cx="446.744" cy="198.188" r="65.256"/>
14
+ <circle style="fill:#FFFFFF;" cx="446.744" cy="198.188" r="28.72"/>
15
+ <g>
16
+ </g>
17
+ <g>
18
+ </g>
19
+ <g>
20
+ </g>
21
+ <g>
22
+ </g>
23
+ <g>
24
+ </g>
25
+ <g>
26
+ </g>
27
+ <g>
28
+ </g>
29
+ <g>
30
+ </g>
31
+ <g>
32
+ </g>
33
+ <g>
34
+ </g>
35
+ <g>
36
+ </g>
37
+ <g>
38
+ </g>
39
+ <g>
40
+ </g>
41
+ <g>
42
+ </g>
43
+ <g>
44
+ </g>
45
+ </svg>
assets/img/icon-settings.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px" baseProfile="basic"><path fill="#8fcae6" d="M44.5,20h-2.964c-0.457-2.003-1.25-3.876-2.315-5.564l2.103-2.103c0.975-0.975,0.975-2.562,0-3.536 l-2.121-2.121c-0.976-0.976-2.562-0.974-3.536,0l-2.103,2.103C31.876,7.714,30.003,6.921,28,6.464V3.5C28,2.121,26.879,1,25.5,1h-3 C21.121,1,20,2.121,20,3.5v2.964c-2.003,0.457-3.876,1.25-5.564,2.315l-2.103-2.103c-0.976-0.976-2.562-0.974-3.536,0L6.676,8.797 c-0.975,0.975-0.975,2.562,0,3.536l2.103,2.103C7.714,16.124,6.921,17.997,6.464,20H3.5C2.121,20,1,21.121,1,22.5v3 C1,26.879,2.121,28,3.5,28h2.964c0.457,2.003,1.25,3.876,2.315,5.564l-2.103,2.103c-0.975,0.975-0.975,2.562,0,3.536l2.121,2.121 c0.487,0.487,1.128,0.731,1.768,0.731c0.641,0,1.281-0.244,1.769-0.731l2.103-2.103c1.689,1.065,3.561,1.858,5.564,2.315V44.5 c0,1.379,1.121,2.5,2.5,2.5h3c1.379,0,2.5-1.121,2.5-2.5v-2.964c2.003-0.457,3.876-1.25,5.564-2.315l2.103,2.103 c0.487,0.487,1.128,0.731,1.768,0.731c0.641,0,1.281-0.244,1.769-0.731l2.121-2.121c0.975-0.975,0.975-2.562,0-3.536l-2.103-2.103 c1.065-1.689,1.858-3.561,2.315-5.564H44.5c1.379,0,2.5-1.121,2.5-2.5v-3C47,21.121,45.879,20,44.5,20z"/><path fill="#324561" d="M24,34c-5.514,0-10-4.486-10-10s4.486-10,10-10s10,4.486,10,10S29.514,34,24,34z M24,16 c-4.411,0-8,3.589-8,8s3.589,8,8,8s8-3.589,8-8S28.411,16,24,16z"/></svg>
assets/img/icon-stop-forum-spam.png ADDED
Binary file
assets/img/icon-success.svg ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>status-success-svgrepo-com</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="status-success-svgrepo-com" fill="#69B86B">
6
+ <path d="M6,12 C9.3137085,12 12,9.3137085 12,6 C12,2.6862915 9.3137085,0 6,0 C2.6862915,0 0,2.6862915 0,6 C0,9.3137085 2.6862915,12 6,12 Z M8.576,4.98 C8.82910082,4.66101338 8.7814353,4.19834562 8.46861498,3.93766202 C8.15579466,3.67697843 7.6921162,3.71352619 7.424,4.02 L5.45,6.389 L4.53,5.469 C4.23558233,5.18490644 3.76780228,5.18919039 3.47863704,5.47862843 C3.1894718,5.76806646 3.18562895,6.23585035 3.47,6.53 L4.97,8.03 C5.11896124,8.17885832 5.32364277,8.25823207 5.53401815,8.24872143 C5.74439352,8.23921079 5.94107811,8.1416921 6.076,7.98 L8.576,4.98 Z" id="Shape"></path>
7
+ </g>
8
+ </g>
9
+ </svg>
assets/img/icon-trash.svg ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="162px" height="173px" viewBox="0 0 162 173" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>icon-trash</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="icon-trash" transform="translate(0.744000, 0.000000)" fill="#FFFFFF" fill-rule="nonzero">
6
+ <path d="M161.054,25.078 L147.381,25.078 L117.41,25.078 L117.41,0 L43.644,0 L43.644,25.078 L13.673,25.078 L0,25.078 L0,40.078 L14.806,40.078 L24.806,172.541 L136.249,172.541 L146.249,40.078 L161.054,40.078 L161.054,25.078 L161.054,25.078 Z M58.644,15 L102.41,15 L102.41,25.078 L58.644,25.078 L58.644,15 Z M122.339,157.541 L38.716,157.541 L29.848,40.078 L43.644,40.078 L117.41,40.078 L131.206,40.078 L122.339,157.541 Z" id="Shape"></path>
7
+ <rect id="Rectangle" x="74.527" y="65.693" width="12" height="66.232"></rect>
8
+ <rect id="Rectangle" x="51.527" y="65.693" width="12" height="66.232"></rect>
9
+ <rect id="Rectangle" x="97.527" y="65.693" width="12" height="66.232"></rect>
10
+ </g>
11
+ </g>
12
+ </svg>
assets/img/icon-words.svg ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="444.792px" height="444.792px" viewBox="0 0 444.792 444.792" style="enable-background:new 0 0 444.792 444.792;"
6
+ xml:space="preserve">
7
+ <g>
8
+ <g>
9
+ <g>
10
+ <path d="M269.383,386.938c-18.445,0-36.202-4.397-52.08-12.682H107.22c-10.099,0-18.315-8.219-18.315-18.315v-56.576
11
+ c0-10.099,8.217-18.314,18.315-18.314h49.748c-0.13-2.231-0.204-4.479-0.204-6.731c0-8.453,0.922-16.763,2.719-24.813H56.516
12
+ v-30.832h101.802c8.71,0,15.772-7.061,15.772-15.771s-7.063-15.771-15.772-15.771H56.516v-30.832h50.704h185.134
13
+ c8.184,0,15.131,5.398,17.471,12.818c11.723,4.491,22.652,10.962,32.389,19.231v-13.735c0-6.465-1.25-12.641-3.5-18.314h40.303
14
+ c8.709,0,15.771-7.063,15.771-15.773s-7.062-15.771-15.771-15.771h-4.411v-93.21h4.411c8.709,0,15.771-7.063,15.771-15.773
15
+ S387.726,0,379.017,0H107.22C79.728,0,57.362,22.367,57.362,49.859v56.576c0,6.467,1.25,12.643,3.5,18.316H20.56
16
+ c-8.71,0-15.772,7.061-15.772,15.771s7.063,15.773,15.772,15.773h4.412v93.207H20.56c-8.71,0-15.772,7.062-15.772,15.771
17
+ c0,8.709,7.063,15.771,15.772,15.771h40.302c-2.25,5.675-3.5,11.852-3.5,18.313v56.575c0,27.494,22.366,49.861,49.858,49.861
18
+ H332.7l-25.398-25.4C295.136,384.74,282.411,386.938,269.383,386.938z M88.905,49.859c0-10.098,8.217-18.314,18.315-18.314
19
+ H343.06v30.83H241.256c-8.709,0-15.771,7.063-15.771,15.773s7.062,15.771,15.771,15.771H343.06v30.832H107.22
20
+ c-10.099,0-18.315-8.217-18.315-18.316V49.859z"/>
21
+ <path d="M432.407,400.461l-79.035-79.034c21.303-37.448,16.01-86.032-15.896-117.937c-38.263-38.262-100.517-38.262-138.775,0
22
+ c-38.261,38.26-38.262,100.518,0,138.775c31.904,31.906,80.488,37.199,117.938,15.896l79.035,79.033
23
+ c10.129,10.129,26.607,10.129,36.734,0C442.536,427.07,442.536,410.592,432.407,400.461z M317.931,322.721
24
+ c-27.481,27.483-72.202,27.483-99.688,0c-27.481-27.481-27.481-72.201,0-99.686c27.484-27.482,72.203-27.482,99.688,0
25
+ C345.413,250.52,345.413,295.238,317.931,322.721z"/>
26
+ </g>
27
+ </g>
28
+ </g>
29
+ <g>
30
+ </g>
31
+ <g>
32
+ </g>
33
+ <g>
34
+ </g>
35
+ <g>
36
+ </g>
37
+ <g>
38
+ </g>
39
+ <g>
40
+ </g>
41
+ <g>
42
+ </g>
43
+ <g>
44
+ </g>
45
+ <g>
46
+ </g>
47
+ <g>
48
+ </g>
49
+ <g>
50
+ </g>
51
+ <g>
52
+ </g>
53
+ <g>
54
+ </g>
55
+ <g>
56
+ </g>
57
+ <g>
58
+ </g>
59
+ </svg>
assets/img/icon-x.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="50px" height="50px" viewBox="0 0 50 50" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>icon-x</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="icon-x">
6
+ <circle id="Oval" fill="#FF2929" fill-rule="nonzero" cx="25" cy="25" r="25"></circle>
7
+ <polyline id="Path" stroke="#FFFFFF" stroke-width="5" stroke-linecap="round" points="16 34 25 25 34 16"></polyline>
8
+ <polyline id="Path" stroke="#FFFFFF" stroke-width="5" stroke-linecap="round" points="16 16 25 25 34 34"></polyline>
9
+ </g>
10
+ </g>
11
+ </svg>
assets/img/icon.svg CHANGED
@@ -1,6 +1,6 @@
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <svg width="512px" height="478px" viewBox="0 0 512 478" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
- <title>WordPress Zero Spam</title>
4
  <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
  <g transform="translate(256.000000, 239.000000) scale(-1, 1) translate(-256.000000, -239.000000) " fill-rule="nonzero">
6
  <path d="M241,0 L96,0 C87.716,0 81,6.716 81,15 L81,127 C81,135.284 87.716,142 96,142 L241,142 C249.284,142 256,135.284 256,127 L256,15 C256,6.716 249.284,0 241,0 Z" id="Path" fill="#BE0000"></path>
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <svg width="512px" height="478px" viewBox="0 0 512 478" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Zero Spam</title>
4
  <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
  <g transform="translate(256.000000, 239.000000) scale(-1, 1) translate(-256.000000, -239.000000) " fill-rule="nonzero">
6
  <path d="M241,0 L96,0 C87.716,0 81,6.716 81,15 L81,127 C81,135.284 87.716,142 96,142 L241,142 C249.284,142 256,135.284 256,127 L256,15 C256,6.716 249.284,0 241,0 Z" id="Path" fill="#BE0000"></path>
assets/img/logo-flat.svg ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="512px" height="435px" viewBox="0 0 512 435" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>zero-spam-logo</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="zero-spam-logo" transform="translate(256.000000, 217.500000) scale(-1, 1) translate(-256.000000, -217.500000) " fill-rule="nonzero">
6
+ <polygon id="box-13" fill="#FFA17C" points="176 351 176 435 0 435 0 351"></polygon>
7
+ <polygon id="box-12" fill="#FF2929" points="256 351 256 435 176 435 176 351"></polygon>
8
+ <polygon id="box-11" fill="#BE0000" points="336 351 336 435 256 435 256 351"></polygon>
9
+ <polygon id="box-10" fill="#63000D" points="512 351 512 435 336 435 336 351"></polygon>
10
+ <polygon id="box-9" fill="#FF2929" points="96 239 96 351 0 351 0 239"></polygon>
11
+ <polygon id="box-8" fill="#BE0000" points="256 239 256 351 96 351 96 239"></polygon>
12
+ <polygon id="box-7" fill="#840012" points="416 239 416 351 256 351 256 239"></polygon>
13
+ <polygon id="box-6" fill="#BE0000" points="512 239 512 351 416 351 416 239"></polygon>
14
+ <path d="M176,112 L15,112 C6.716,112 0,118.716 0,127 L0,239 L176,239 L176,112 Z" id="box-5" fill="#FF7038"></path>
15
+ <polygon id="box-4" fill="#FF2929" points="256 239 176 239 176 112 256 112"></polygon>
16
+ <polygon id="box-3" fill="#BE0000" points="336 239 256 239 256 112 336 112"></polygon>
17
+ <path d="M512,127 L512,239 L336,239 L336,112 L497,112 C505.28,112 512,118.72 512,127 Z" id="box-2" fill="#63000D"></path>
18
+ <path d="M241,0 L96,0 C87.716,0 81,5.29712676 81,11.8309859 C81,32.7599735 81,48.4567141 81,58.9212079 C81,68.0873871 81,85.8366558 81,112.169014 L256,112.169014 L256,11.8309859 C256,5.29712676 249.284,0 241,0 Z" id="box-1" fill="#BE0000"></path>
19
+ </g>
20
+ </g>
21
+ </svg>
assets/img/text-zero-spam.svg ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="123px" height="11px" viewBox="0 0 123 11" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Zero Spam for WordPress</title>
4
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g fill="#FFFFFF" fill-rule="nonzero">
6
+ <g transform="translate(64.000000, 2.000000)">
7
+ <path d="M0.176,3.752 C0.122666667,3.752 0.08,3.736 0.048,3.704 C0.016,3.672 -1.13686838e-13,3.62933333 -1.13686838e-13,3.576 L-1.13686838e-13,3.464 C-1.13686838e-13,3.41066667 0.016,3.368 0.048,3.336 C0.08,3.304 0.122666667,3.288 0.176,3.288 L4.776,3.288 C4.82933333,3.288 4.872,3.304 4.904,3.336 C4.936,3.368 4.952,3.41066667 4.952,3.464 L4.952,3.576 C4.952,3.62933333 4.936,3.672 4.904,3.704 C4.872,3.736 4.82933333,3.752 4.776,3.752 L0.176,3.752 Z"></path>
8
+ <path d="M8.664,5.92 C8.61066667,5.92 8.568,5.904 8.536,5.872 C8.504,5.84 8.488,5.79733333 8.488,5.744 L8.488,2.224 L7.776,2.224 C7.72266667,2.224 7.68,2.208 7.648,2.176 C7.616,2.144 7.6,2.10133333 7.6,2.048 L7.6,1.936 C7.6,1.88266667 7.616,1.84 7.648,1.808 C7.68,1.776 7.72266667,1.76 7.776,1.76 L8.488,1.76 L8.488,1.304 C8.488,1.064 8.52133333,0.845333333 8.588,0.648 C8.65466667,0.450666667 8.77466667,0.293333333 8.948,0.176 C9.12133333,0.0586666667 9.37066667,0 9.696,0 L10.112,0 C10.1653333,0 10.208,0.016 10.24,0.048 C10.272,0.08 10.288,0.122666667 10.288,0.176 L10.288,0.288 C10.288,0.341333333 10.272,0.384 10.24,0.416 C10.208,0.448 10.1653333,0.464 10.112,0.464 L9.696,0.464 C9.41333333,0.464 9.22266667,0.54 9.124,0.692 C9.02533333,0.844 8.976,1.06133333 8.976,1.344 L8.976,1.76 L10.032,1.76 C10.0853333,1.76 10.128,1.776 10.16,1.808 C10.192,1.84 10.208,1.88266667 10.208,1.936 L10.208,2.048 C10.208,2.10133333 10.192,2.144 10.16,2.176 C10.128,2.208 10.0853333,2.224 10.032,2.224 L8.976,2.224 L8.976,5.744 C8.976,5.79733333 8.96,5.84 8.928,5.872 C8.896,5.904 8.85333333,5.92 8.8,5.92 L8.664,5.92 Z"></path>
9
+ <path d="M12.472,6 C12.088,6 11.7666667,5.92 11.508,5.76 C11.2493333,5.6 11.052,5.38133333 10.916,5.104 C10.78,4.82666667 10.7066667,4.51733333 10.696,4.176 C10.6906667,4.096 10.688,3.984 10.688,3.84 C10.688,3.696 10.6906667,3.584 10.696,3.504 C10.7066667,3.15733333 10.78,2.84666667 10.916,2.572 C11.052,2.29733333 11.2493333,2.08 11.508,1.92 C11.7666667,1.76 12.088,1.68 12.472,1.68 C12.856,1.68 13.1773333,1.76 13.436,1.92 C13.6946667,2.08 13.892,2.29733333 14.028,2.572 C14.164,2.84666667 14.2373333,3.15733333 14.248,3.504 C14.2533333,3.584 14.256,3.696 14.256,3.84 C14.256,3.984 14.2533333,4.096 14.248,4.176 C14.2373333,4.51733333 14.164,4.82666667 14.028,5.104 C13.892,5.38133333 13.6946667,5.6 13.436,5.76 C13.1773333,5.92 12.856,6 12.472,6 Z M12.472,5.536 C12.8453333,5.536 13.1493333,5.416 13.384,5.176 C13.6186667,4.936 13.744,4.58933333 13.76,4.136 C13.7653333,4.056 13.768,3.95733333 13.768,3.84 C13.768,3.72266667 13.7653333,3.624 13.76,3.544 C13.744,3.08533333 13.6186667,2.73733333 13.384,2.5 C13.1493333,2.26266667 12.8453333,2.144 12.472,2.144 C12.0986667,2.144 11.7946667,2.26266667 11.56,2.5 C11.3253333,2.73733333 11.2,3.08533333 11.184,3.544 C11.1786667,3.624 11.176,3.72266667 11.176,3.84 C11.176,3.95733333 11.1786667,4.056 11.184,4.136 C11.2,4.58933333 11.3253333,4.936 11.56,5.176 C11.7946667,5.416 12.0986667,5.536 12.472,5.536 Z" id="Shape"></path>
10
+ <path d="M15.528,5.92 C15.4746667,5.92 15.432,5.904 15.4,5.872 C15.368,5.84 15.352,5.79733333 15.352,5.744 L15.352,1.944 C15.352,1.89066667 15.368,1.84666667 15.4,1.812 C15.432,1.77733333 15.4746667,1.76 15.528,1.76 L15.656,1.76 C15.7093333,1.76 15.7533333,1.77733333 15.788,1.812 C15.8226667,1.84666667 15.84,1.89066667 15.84,1.944 L15.84,2.312 C15.936,2.12533333 16.0746667,1.98666667 16.256,1.896 C16.4373333,1.80533333 16.6613333,1.76 16.928,1.76 L17.224,1.76 C17.2773333,1.76 17.32,1.776 17.352,1.808 C17.384,1.84 17.4,1.88266667 17.4,1.936 L17.4,2.048 C17.4,2.10133333 17.384,2.144 17.352,2.176 C17.32,2.208 17.2773333,2.224 17.224,2.224 L16.88,2.224 C16.56,2.224 16.3066667,2.31733333 16.12,2.504 C15.9333333,2.69066667 15.84,2.944 15.84,3.264 L15.84,5.744 C15.84,5.79733333 15.8226667,5.84 15.788,5.872 C15.7533333,5.904 15.7093333,5.92 15.656,5.92 L15.528,5.92 Z"></path>
11
+ <path d="M20.92,5.92 C20.856,5.92 20.8066667,5.90533333 20.772,5.876 C20.7373333,5.84666667 20.712,5.79733333 20.696,5.728 L19.6,0.576 C19.5946667,0.554666667 19.5906667,0.534666667 19.588,0.516 C19.5853333,0.497333333 19.584,0.485333333 19.584,0.48 C19.584,0.437333333 19.6,0.4 19.632,0.368 C19.664,0.336 19.7013333,0.32 19.744,0.32 L19.912,0.32 C20.0133333,0.32 20.072,0.36 20.088,0.44 L21.024,5 L22.016,1.744 C22.032,1.696 22.06,1.65333333 22.1,1.616 C22.14,1.57866667 22.1946667,1.56 22.264,1.56 L22.44,1.56 C22.5146667,1.56 22.5706667,1.57866667 22.608,1.616 C22.6453333,1.65333333 22.672,1.696 22.688,1.744 L23.68,5 L24.616,0.44 C24.632,0.36 24.6906667,0.32 24.792,0.32 L24.96,0.32 C25.0026667,0.32 25.04,0.336 25.072,0.368 C25.104,0.4 25.12,0.437333333 25.12,0.48 C25.12,0.485333333 25.1186667,0.497333333 25.116,0.516 C25.1133333,0.534666667 25.1093333,0.554666667 25.104,0.576 L24.008,5.728 C23.992,5.79733333 23.9666667,5.84666667 23.932,5.876 C23.8973333,5.90533333 23.848,5.92 23.784,5.92 L23.664,5.92 C23.6,5.92 23.548,5.904 23.508,5.872 C23.468,5.84 23.4373333,5.792 23.416,5.728 L22.352,2.352 L21.288,5.728 C21.2666667,5.792 21.236,5.84 21.196,5.872 C21.156,5.904 21.104,5.92 21.04,5.92 L20.92,5.92 Z"></path>
12
+ <path d="M27.56,6 C27.176,6 26.8546667,5.92 26.596,5.76 C26.3373333,5.6 26.14,5.38133333 26.004,5.104 C25.868,4.82666667 25.7946667,4.51733333 25.784,4.176 C25.7786667,4.096 25.776,3.984 25.776,3.84 C25.776,3.696 25.7786667,3.584 25.784,3.504 C25.7946667,3.15733333 25.868,2.84666667 26.004,2.572 C26.14,2.29733333 26.3373333,2.08 26.596,1.92 C26.8546667,1.76 27.176,1.68 27.56,1.68 C27.944,1.68 28.2653333,1.76 28.524,1.92 C28.7826667,2.08 28.98,2.29733333 29.116,2.572 C29.252,2.84666667 29.3253333,3.15733333 29.336,3.504 C29.3413333,3.584 29.344,3.696 29.344,3.84 C29.344,3.984 29.3413333,4.096 29.336,4.176 C29.3253333,4.51733333 29.252,4.82666667 29.116,5.104 C28.98,5.38133333 28.7826667,5.6 28.524,5.76 C28.2653333,5.92 27.944,6 27.56,6 Z M27.56,5.536 C27.9333333,5.536 28.2373333,5.416 28.472,5.176 C28.7066667,4.936 28.832,4.58933333 28.848,4.136 C28.8533333,4.056 28.856,3.95733333 28.856,3.84 C28.856,3.72266667 28.8533333,3.624 28.848,3.544 C28.832,3.08533333 28.7066667,2.73733333 28.472,2.5 C28.2373333,2.26266667 27.9333333,2.144 27.56,2.144 C27.1866667,2.144 26.8826667,2.26266667 26.648,2.5 C26.4133333,2.73733333 26.288,3.08533333 26.272,3.544 C26.2666667,3.624 26.264,3.72266667 26.264,3.84 C26.264,3.95733333 26.2666667,4.056 26.272,4.136 C26.288,4.58933333 26.4133333,4.936 26.648,5.176 C26.8826667,5.416 27.1866667,5.536 27.56,5.536 Z" id="Shape"></path>
13
+ <path d="M30.616,5.92 C30.5626667,5.92 30.52,5.904 30.488,5.872 C30.456,5.84 30.44,5.79733333 30.44,5.744 L30.44,1.944 C30.44,1.89066667 30.456,1.84666667 30.488,1.812 C30.52,1.77733333 30.5626667,1.76 30.616,1.76 L30.744,1.76 C30.7973333,1.76 30.8413333,1.77733333 30.876,1.812 C30.9106667,1.84666667 30.928,1.89066667 30.928,1.944 L30.928,2.312 C31.024,2.12533333 31.1626667,1.98666667 31.344,1.896 C31.5253333,1.80533333 31.7493333,1.76 32.016,1.76 L32.312,1.76 C32.3653333,1.76 32.408,1.776 32.44,1.808 C32.472,1.84 32.488,1.88266667 32.488,1.936 L32.488,2.048 C32.488,2.10133333 32.472,2.144 32.44,2.176 C32.408,2.208 32.3653333,2.224 32.312,2.224 L31.968,2.224 C31.648,2.224 31.3946667,2.31733333 31.208,2.504 C31.0213333,2.69066667 30.928,2.944 30.928,3.264 L30.928,5.744 C30.928,5.79733333 30.9106667,5.84 30.876,5.872 C30.8413333,5.904 30.7973333,5.92 30.744,5.92 L30.616,5.92 Z"></path>
14
+ <path d="M34.624,6 C34.3146667,6 34.052,5.944 33.836,5.832 C33.62,5.72 33.4453333,5.57066667 33.312,5.384 C33.1786667,5.19733333 33.0813333,4.98933333 33.02,4.76 C32.9586667,4.53066667 32.9226667,4.29866667 32.912,4.064 C32.9066667,3.984 32.904,3.90933333 32.904,3.84 C32.904,3.77066667 32.9066667,3.696 32.912,3.616 C32.9226667,3.38133333 32.9586667,3.14933333 33.02,2.92 C33.0813333,2.69066667 33.1786667,2.48266667 33.312,2.296 C33.4453333,2.10933333 33.62,1.96 33.836,1.848 C34.052,1.736 34.3146667,1.68 34.624,1.68 C34.9546667,1.68 35.228,1.74133333 35.444,1.864 C35.66,1.98666667 35.8346667,2.136 35.968,2.312 L35.968,0.416 C35.968,0.362666667 35.984,0.32 36.016,0.288 C36.048,0.256 36.0906667,0.24 36.144,0.24 L36.28,0.24 C36.3333333,0.24 36.376,0.256 36.408,0.288 C36.44,0.32 36.456,0.362666667 36.456,0.416 L36.456,5.744 C36.456,5.79733333 36.44,5.84 36.408,5.872 C36.376,5.904 36.3333333,5.92 36.28,5.92 L36.144,5.92 C36.0906667,5.92 36.048,5.904 36.016,5.872 C35.984,5.84 35.968,5.79733333 35.968,5.744 L35.968,5.368 C35.8346667,5.54933333 35.66,5.7 35.444,5.82 C35.228,5.94 34.9546667,6 34.624,6 Z M34.672,5.536 C34.976,5.536 35.2213333,5.464 35.408,5.32 C35.5946667,5.176 35.7333333,4.996 35.824,4.78 C35.9146667,4.564 35.9626667,4.34666667 35.968,4.128 C35.9733333,4.048 35.976,3.944 35.976,3.816 C35.976,3.688 35.9733333,3.584 35.968,3.504 C35.9626667,3.29066667 35.9133333,3.08 35.82,2.872 C35.7266667,2.664 35.5866667,2.49066667 35.4,2.352 C35.2133333,2.21333333 34.9706667,2.144 34.672,2.144 C34.3626667,2.144 34.116,2.21333333 33.932,2.352 C33.748,2.49066667 33.616,2.672 33.536,2.896 C33.456,3.12 33.4106667,3.36 33.4,3.616 C33.3946667,3.76533333 33.3946667,3.91466667 33.4,4.064 C33.4106667,4.32 33.456,4.56 33.536,4.784 C33.616,5.008 33.748,5.18933333 33.932,5.328 C34.116,5.46666667 34.3626667,5.536 34.672,5.536 Z" id="Shape"></path>
15
+ <path d="M38.04,5.92 C37.9866667,5.92 37.944,5.904 37.912,5.872 C37.88,5.84 37.864,5.79733333 37.864,5.744 L37.864,0.504 C37.864,0.445333333 37.88,0.4 37.912,0.368 C37.944,0.336 37.9866667,0.32 38.04,0.32 L39.984,0.32 C40.3573333,0.32 40.6813333,0.382666667 40.956,0.508 C41.2306667,0.633333333 41.444,0.818666667 41.596,1.064 C41.748,1.30933333 41.824,1.61333333 41.824,1.976 C41.824,2.33866667 41.748,2.64266667 41.596,2.888 C41.444,3.13333333 41.2306667,3.31866667 40.956,3.444 C40.6813333,3.56933333 40.3573333,3.632 39.984,3.632 L38.368,3.632 L38.368,5.744 C38.368,5.79733333 38.352,5.84 38.32,5.872 C38.288,5.904 38.2426667,5.92 38.184,5.92 L38.04,5.92 Z M38.368,3.152 L39.944,3.152 C40.408,3.152 40.7533333,3.05066667 40.98,2.848 C41.2066667,2.64533333 41.32,2.35466667 41.32,1.976 C41.32,1.59733333 41.2066667,1.30666667 40.98,1.104 C40.7533333,0.901333333 40.408,0.8 39.944,0.8 L38.368,0.8 L38.368,3.152 Z" id="Shape"></path>
16
+ <path d="M42.96,5.92 C42.9066667,5.92 42.864,5.904 42.832,5.872 C42.8,5.84 42.784,5.79733333 42.784,5.744 L42.784,1.944 C42.784,1.89066667 42.8,1.84666667 42.832,1.812 C42.864,1.77733333 42.9066667,1.76 42.96,1.76 L43.088,1.76 C43.1413333,1.76 43.1853333,1.77733333 43.22,1.812 C43.2546667,1.84666667 43.272,1.89066667 43.272,1.944 L43.272,2.312 C43.368,2.12533333 43.5066667,1.98666667 43.688,1.896 C43.8693333,1.80533333 44.0933333,1.76 44.36,1.76 L44.656,1.76 C44.7093333,1.76 44.752,1.776 44.784,1.808 C44.816,1.84 44.832,1.88266667 44.832,1.936 L44.832,2.048 C44.832,2.10133333 44.816,2.144 44.784,2.176 C44.752,2.208 44.7093333,2.224 44.656,2.224 L44.312,2.224 C43.992,2.224 43.7386667,2.31733333 43.552,2.504 C43.3653333,2.69066667 43.272,2.944 43.272,3.264 L43.272,5.744 C43.272,5.79733333 43.2546667,5.84 43.22,5.872 C43.1853333,5.904 43.1413333,5.92 43.088,5.92 L42.96,5.92 Z"></path>
17
+ <path d="M47.016,6 C46.4986667,6 46.088,5.83066667 45.784,5.492 C45.48,5.15333333 45.3066667,4.70933333 45.264,4.16 C45.2586667,4.08 45.256,3.97333333 45.256,3.84 C45.256,3.70666667 45.2586667,3.6 45.264,3.52 C45.2906667,3.15733333 45.376,2.83733333 45.52,2.56 C45.664,2.28266667 45.8626667,2.06666667 46.116,1.912 C46.3693333,1.75733333 46.6693333,1.68 47.016,1.68 C47.3893333,1.68 47.7066667,1.76266667 47.968,1.928 C48.2293333,2.09333333 48.4306667,2.33066667 48.572,2.64 C48.7133333,2.94933333 48.784,3.31733333 48.784,3.744 L48.784,3.864 C48.784,3.91733333 48.7666667,3.96 48.732,3.992 C48.6973333,4.024 48.6533333,4.04 48.6,4.04 L45.752,4.04 C45.752,4.04 45.752,4.05066667 45.752,4.072 C45.752,4.09333333 45.752,4.10933333 45.752,4.12 C45.7626667,4.36 45.8186667,4.588 45.92,4.804 C46.0213333,5.02 46.1653333,5.196 46.352,5.332 C46.5386667,5.468 46.76,5.536 47.016,5.536 C47.2453333,5.536 47.436,5.50133333 47.588,5.432 C47.74,5.36266667 47.8613333,5.28666667 47.952,5.204 C48.0426667,5.12133333 48.1013333,5.05866667 48.128,5.016 C48.176,4.94666667 48.2133333,4.90533333 48.24,4.892 C48.2666667,4.87866667 48.3093333,4.872 48.368,4.872 L48.496,4.872 C48.544,4.872 48.5853333,4.88666667 48.62,4.916 C48.6546667,4.94533333 48.6693333,4.984 48.664,5.032 C48.6586667,5.10666667 48.6173333,5.19866667 48.54,5.308 C48.4626667,5.41733333 48.3533333,5.52533333 48.212,5.632 C48.0706667,5.73866667 47.8986667,5.82666667 47.696,5.896 C47.4933333,5.96533333 47.2666667,6 47.016,6 Z M45.752,3.592 L48.296,3.592 L48.296,3.56 C48.296,3.29333333 48.2453333,3.05333333 48.144,2.84 C48.0426667,2.62666667 47.896,2.45733333 47.704,2.332 C47.512,2.20666667 47.2826667,2.144 47.016,2.144 C46.7493333,2.144 46.5213333,2.20666667 46.332,2.332 C46.1426667,2.45733333 45.9986667,2.62666667 45.9,2.84 C45.8013333,3.05333333 45.752,3.29333333 45.752,3.56 L45.752,3.592 Z" id="Shape"></path>
18
+ <path d="M51.16,6 C50.8826667,6 50.644,5.96266667 50.444,5.888 C50.244,5.81333333 50.08,5.724 49.952,5.62 C49.824,5.516 49.7293333,5.41333333 49.668,5.312 C49.6066667,5.21066667 49.5733333,5.13333333 49.568,5.08 C49.5626667,5.02133333 49.5813333,4.97733333 49.624,4.948 C49.6666667,4.91866667 49.7066667,4.904 49.744,4.904 L49.864,4.904 C49.896,4.904 49.924,4.90933333 49.948,4.92 C49.972,4.93066667 50.0026667,4.96 50.04,5.008 C50.1093333,5.09866667 50.1893333,5.18533333 50.28,5.268 C50.3706667,5.35066667 50.4866667,5.416 50.628,5.464 C50.7693333,5.512 50.9466667,5.536 51.16,5.536 C51.48,5.536 51.744,5.47466667 51.952,5.352 C52.16,5.22933333 52.264,5.048 52.264,4.808 C52.264,4.65866667 52.2226667,4.53866667 52.14,4.448 C52.0573333,4.35733333 51.9173333,4.27733333 51.72,4.208 C51.5226667,4.13866667 51.256,4.06666667 50.92,3.992 C50.584,3.912 50.3266667,3.816 50.148,3.704 C49.9693333,3.592 49.848,3.46266667 49.784,3.316 C49.72,3.16933333 49.688,3.01066667 49.688,2.84 C49.688,2.65333333 49.7413333,2.47066667 49.848,2.292 C49.9546667,2.11333333 50.1133333,1.96666667 50.324,1.852 C50.5346667,1.73733333 50.8,1.68 51.12,1.68 C51.3813333,1.68 51.604,1.71466667 51.788,1.784 C51.972,1.85333333 52.1226667,1.93733333 52.24,2.036 C52.3573333,2.13466667 52.444,2.232 52.5,2.328 C52.556,2.424 52.5866667,2.50133333 52.592,2.56 C52.5973333,2.61333333 52.5813333,2.656 52.544,2.688 C52.5066667,2.72 52.464,2.736 52.416,2.736 L52.296,2.736 C52.2533333,2.736 52.2186667,2.72666667 52.192,2.708 C52.1653333,2.68933333 52.1413333,2.664 52.12,2.632 C52.0666667,2.54666667 52.0026667,2.46666667 51.928,2.392 C51.8533333,2.31733333 51.7533333,2.25733333 51.628,2.212 C51.5026667,2.16666667 51.3333333,2.144 51.12,2.144 C50.8,2.144 50.5626667,2.20933333 50.408,2.34 C50.2533333,2.47066667 50.176,2.63733333 50.176,2.84 C50.176,2.95733333 50.208,3.06 50.272,3.148 C50.336,3.236 50.456,3.316 50.632,3.388 C50.808,3.46 51.064,3.536 51.4,3.616 C51.7413333,3.69066667 52.0106667,3.78266667 52.208,3.892 C52.4053333,4.00133333 52.5453333,4.13066667 52.628,4.28 C52.7106667,4.42933333 52.752,4.60533333 52.752,4.808 C52.752,5.02133333 52.692,5.21866667 52.572,5.4 C52.452,5.58133333 52.2733333,5.72666667 52.036,5.836 C51.7986667,5.94533333 51.5066667,6 51.16,6 Z"></path>
19
+ <path d="M55.096,6 C54.8186667,6 54.58,5.96266667 54.38,5.888 C54.18,5.81333333 54.016,5.724 53.888,5.62 C53.76,5.516 53.6653333,5.41333333 53.604,5.312 C53.5426667,5.21066667 53.5093333,5.13333333 53.504,5.08 C53.4986667,5.02133333 53.5173333,4.97733333 53.56,4.948 C53.6026667,4.91866667 53.6426667,4.904 53.68,4.904 L53.8,4.904 C53.832,4.904 53.86,4.90933333 53.884,4.92 C53.908,4.93066667 53.9386667,4.96 53.976,5.008 C54.0453333,5.09866667 54.1253333,5.18533333 54.216,5.268 C54.3066667,5.35066667 54.4226667,5.416 54.564,5.464 C54.7053333,5.512 54.8826667,5.536 55.096,5.536 C55.416,5.536 55.68,5.47466667 55.888,5.352 C56.096,5.22933333 56.2,5.048 56.2,4.808 C56.2,4.65866667 56.1586667,4.53866667 56.076,4.448 C55.9933333,4.35733333 55.8533333,4.27733333 55.656,4.208 C55.4586667,4.13866667 55.192,4.06666667 54.856,3.992 C54.52,3.912 54.2626667,3.816 54.084,3.704 C53.9053333,3.592 53.784,3.46266667 53.72,3.316 C53.656,3.16933333 53.624,3.01066667 53.624,2.84 C53.624,2.65333333 53.6773333,2.47066667 53.784,2.292 C53.8906667,2.11333333 54.0493333,1.96666667 54.26,1.852 C54.4706667,1.73733333 54.736,1.68 55.056,1.68 C55.3173333,1.68 55.54,1.71466667 55.724,1.784 C55.908,1.85333333 56.0586667,1.93733333 56.176,2.036 C56.2933333,2.13466667 56.38,2.232 56.436,2.328 C56.492,2.424 56.5226667,2.50133333 56.528,2.56 C56.5333333,2.61333333 56.5173333,2.656 56.48,2.688 C56.4426667,2.72 56.4,2.736 56.352,2.736 L56.232,2.736 C56.1893333,2.736 56.1546667,2.72666667 56.128,2.708 C56.1013333,2.68933333 56.0773333,2.664 56.056,2.632 C56.0026667,2.54666667 55.9386667,2.46666667 55.864,2.392 C55.7893333,2.31733333 55.6893333,2.25733333 55.564,2.212 C55.4386667,2.16666667 55.2693333,2.144 55.056,2.144 C54.736,2.144 54.4986667,2.20933333 54.344,2.34 C54.1893333,2.47066667 54.112,2.63733333 54.112,2.84 C54.112,2.95733333 54.144,3.06 54.208,3.148 C54.272,3.236 54.392,3.316 54.568,3.388 C54.744,3.46 55,3.536 55.336,3.616 C55.6773333,3.69066667 55.9466667,3.78266667 56.144,3.892 C56.3413333,4.00133333 56.4813333,4.13066667 56.564,4.28 C56.6466667,4.42933333 56.688,4.60533333 56.688,4.808 C56.688,5.02133333 56.628,5.21866667 56.508,5.4 C56.388,5.58133333 56.2093333,5.72666667 55.972,5.836 C55.7346667,5.94533333 55.4426667,6 55.096,6 Z"></path>
20
+ <path d="M57.824,5.92 C57.7706667,5.92 57.728,5.904 57.696,5.872 C57.664,5.84 57.648,5.79733333 57.648,5.744 L57.648,5.36 C57.648,5.30666667 57.664,5.26266667 57.696,5.228 C57.728,5.19333333 57.7706667,5.176 57.824,5.176 L58.208,5.176 C58.2613333,5.176 58.3053333,5.19333333 58.34,5.228 C58.3746667,5.26266667 58.392,5.30666667 58.392,5.36 L58.392,5.744 C58.392,5.79733333 58.3746667,5.84 58.34,5.872 C58.3053333,5.904 58.2613333,5.92 58.208,5.92 L57.824,5.92 Z"></path>
21
+ </g>
22
+ <g id="Zero-Spam">
23
+ <path d="M0.288,8.52 C0.208,8.52 0.14,8.492 0.084,8.436 C0.028,8.38 5.68434189e-14,8.308 5.68434189e-14,8.22 L5.68434189e-14,7.38 C5.68434189e-14,7.26 0.024,7.164 0.072,7.092 C0.12,7.02 0.156,6.968 0.18,6.936 L4.356,1.536 L0.408,1.536 C0.32,1.536 0.25,1.508 0.198,1.452 C0.146,1.396 0.12,1.328 0.12,1.248 L0.12,0.42 C0.12,0.332 0.146,0.26 0.198,0.204 C0.25,0.148 0.32,0.12 0.408,0.12 L6.144,0.12 C6.232,0.12 6.304,0.148 6.36,0.204 C6.416,0.26 6.444,0.332 6.444,0.42 L6.444,1.248 C6.444,1.344 6.428,1.424 6.396,1.488 C6.364,1.552 6.328,1.612 6.288,1.668 L2.196,7.092 L6.276,7.092 C6.364,7.092 6.436,7.12 6.492,7.176 C6.548,7.232 6.576,7.304 6.576,7.392 L6.576,8.232 C6.576,8.312 6.548,8.38 6.492,8.436 C6.436,8.492 6.364,8.52 6.276,8.52 L0.288,8.52 Z"></path>
24
+ <path d="M10.38,8.64 C9.492,8.64 8.788,8.384 8.268,7.872 C7.748,7.36 7.468,6.632 7.428,5.688 C7.42,5.608 7.416,5.506 7.416,5.382 C7.416,5.258 7.42,5.16 7.428,5.088 C7.46,4.48 7.598,3.958 7.842,3.522 C8.086,3.086 8.424,2.75 8.856,2.514 C9.288,2.278 9.796,2.16 10.38,2.16 C11.028,2.16 11.572,2.294 12.012,2.562 C12.452,2.83 12.784,3.202 13.008,3.678 C13.232,4.154 13.344,4.704 13.344,5.328 L13.344,5.58 C13.344,5.66 13.316,5.728 13.26,5.784 C13.204,5.84 13.132,5.868 13.044,5.868 L9.06,5.868 C9.06,5.868 9.06,5.88 9.06,5.904 C9.06,5.928 9.06,5.948 9.06,5.964 C9.068,6.244 9.122,6.502 9.222,6.738 C9.322,6.974 9.47,7.164 9.666,7.308 C9.862,7.452 10.096,7.524 10.368,7.524 C10.592,7.524 10.78,7.49 10.932,7.422 C11.084,7.354 11.208,7.276 11.304,7.188 C11.4,7.1 11.468,7.028 11.508,6.972 C11.58,6.876 11.638,6.818 11.682,6.798 C11.726,6.778 11.792,6.768 11.88,6.768 L12.912,6.768 C12.992,6.768 13.058,6.792 13.11,6.84 C13.162,6.888 13.184,6.948 13.176,7.02 C13.168,7.148 13.102,7.304 12.978,7.488 C12.854,7.672 12.676,7.852 12.444,8.028 C12.212,8.204 11.922,8.35 11.574,8.466 C11.226,8.582 10.828,8.64 10.38,8.64 Z M9.06,4.86 L11.712,4.86 L11.712,4.824 C11.712,4.512 11.66,4.238 11.556,4.002 C11.452,3.766 11.3,3.582 11.1,3.45 C10.9,3.318 10.66,3.252 10.38,3.252 C10.1,3.252 9.86,3.318 9.66,3.45 C9.46,3.582 9.31,3.766 9.21,4.002 C9.11,4.238 9.06,4.512 9.06,4.824 L9.06,4.86 Z" id="Shape"></path>
25
+ <path d="M14.904,8.52 C14.824,8.52 14.756,8.492 14.7,8.436 C14.644,8.38 14.616,8.312 14.616,8.232 L14.616,2.58 C14.616,2.492 14.644,2.42 14.7,2.364 C14.756,2.308 14.824,2.28 14.904,2.28 L15.876,2.28 C15.956,2.28 16.026,2.308 16.086,2.364 C16.146,2.42 16.176,2.492 16.176,2.58 L16.176,3.072 C16.36,2.816 16.598,2.62 16.89,2.484 C17.182,2.348 17.52,2.28 17.904,2.28 L18.396,2.28 C18.484,2.28 18.554,2.308 18.606,2.364 C18.658,2.42 18.684,2.488 18.684,2.568 L18.684,3.432 C18.684,3.512 18.658,3.58 18.606,3.636 C18.554,3.692 18.484,3.72 18.396,3.72 L17.46,3.72 C17.076,3.72 16.778,3.826 16.566,4.038 C16.354,4.25 16.248,4.548 16.248,4.932 L16.248,8.232 C16.248,8.312 16.22,8.38 16.164,8.436 C16.108,8.492 16.036,8.52 15.948,8.52 L14.904,8.52 Z"></path>
26
+ <path d="M22.296,8.64 C21.656,8.64 21.118,8.528 20.682,8.304 C20.246,8.08 19.914,7.764 19.686,7.356 C19.458,6.948 19.328,6.472 19.296,5.928 C19.288,5.784 19.284,5.608 19.284,5.4 C19.284,5.192 19.288,5.016 19.296,4.872 C19.328,4.32 19.462,3.842 19.698,3.438 C19.934,3.034 20.27,2.72 20.706,2.496 C21.142,2.272 21.672,2.16 22.296,2.16 C22.92,2.16 23.45,2.272 23.886,2.496 C24.322,2.72 24.658,3.034 24.894,3.438 C25.13,3.842 25.264,4.32 25.296,4.872 C25.304,5.016 25.308,5.192 25.308,5.4 C25.308,5.608 25.304,5.784 25.296,5.928 C25.264,6.472 25.134,6.948 24.906,7.356 C24.678,7.764 24.346,8.08 23.91,8.304 C23.474,8.528 22.936,8.64 22.296,8.64 Z M22.296,7.452 C22.72,7.452 23.048,7.318 23.28,7.05 C23.512,6.782 23.64,6.388 23.664,5.868 C23.672,5.748 23.676,5.592 23.676,5.4 C23.676,5.208 23.672,5.052 23.664,4.932 C23.64,4.412 23.512,4.018 23.28,3.75 C23.048,3.482 22.72,3.348 22.296,3.348 C21.872,3.348 21.544,3.482 21.312,3.75 C21.08,4.018 20.952,4.412 20.928,4.932 C20.92,5.052 20.916,5.208 20.916,5.4 C20.916,5.592 20.92,5.748 20.928,5.868 C20.952,6.388 21.08,6.782 21.312,7.05 C21.544,7.318 21.872,7.452 22.296,7.452 Z" id="Shape"></path>
27
+ <path d="M32.448,8.64 C31.704,8.64 31.082,8.53 30.582,8.31 C30.082,8.09 29.702,7.802 29.442,7.446 C29.182,7.09 29.044,6.716 29.028,6.324 C29.028,6.252 29.052,6.192 29.1,6.144 C29.148,6.096 29.208,6.072 29.28,6.072 L30.348,6.072 C30.452,6.072 30.53,6.094 30.582,6.138 C30.634,6.182 30.68,6.236 30.72,6.3 C30.768,6.452 30.86,6.602 30.996,6.75 C31.132,6.898 31.318,7.02 31.554,7.116 C31.79,7.212 32.088,7.26 32.448,7.26 C33.024,7.26 33.454,7.164 33.738,6.972 C34.022,6.78 34.164,6.52 34.164,6.192 C34.164,5.96 34.088,5.774 33.936,5.634 C33.784,5.494 33.55,5.366 33.234,5.25 C32.918,5.134 32.5,5.012 31.98,4.884 C31.38,4.74 30.878,4.566 30.474,4.362 C30.07,4.158 29.766,3.9 29.562,3.588 C29.358,3.276 29.256,2.88 29.256,2.4 C29.256,1.936 29.382,1.524 29.634,1.164 C29.886,0.804 30.246,0.52 30.714,0.312 C31.182,0.104 31.74,1.42108547e-14 32.388,1.42108547e-14 C32.908,1.42108547e-14 33.368,0.07 33.768,0.21 C34.168,0.35 34.5,0.534 34.764,0.762 C35.028,0.99 35.23,1.234 35.37,1.494 C35.51,1.754 35.584,2.008 35.592,2.256 C35.592,2.32 35.57,2.378 35.526,2.43 C35.482,2.482 35.42,2.508 35.34,2.508 L34.224,2.508 C34.16,2.508 34.096,2.492 34.032,2.46 C33.968,2.428 33.916,2.368 33.876,2.28 C33.828,2.032 33.672,1.82 33.408,1.644 C33.144,1.468 32.804,1.38 32.388,1.38 C31.956,1.38 31.608,1.46 31.344,1.62 C31.08,1.78 30.948,2.028 30.948,2.364 C30.948,2.588 31.014,2.774 31.146,2.922 C31.278,3.07 31.49,3.2 31.782,3.312 C32.074,3.424 32.46,3.544 32.94,3.672 C33.62,3.824 34.176,4 34.608,4.2 C35.04,4.4 35.356,4.654 35.556,4.962 C35.756,5.27 35.856,5.66 35.856,6.132 C35.856,6.66 35.714,7.11 35.43,7.482 C35.146,7.854 34.748,8.14 34.236,8.34 C33.724,8.54 33.128,8.64 32.448,8.64 Z"></path>
28
+ <path d="M37.392,10.8 C37.312,10.8 37.244,10.772 37.188,10.716 C37.132,10.66 37.104,10.592 37.104,10.512 L37.104,2.568 C37.104,2.488 37.132,2.42 37.188,2.364 C37.244,2.308 37.312,2.28 37.392,2.28 L38.34,2.28 C38.428,2.28 38.498,2.308 38.55,2.364 C38.602,2.42 38.628,2.488 38.628,2.568 L38.628,3.048 C38.82,2.792 39.072,2.58 39.384,2.412 C39.696,2.244 40.084,2.16 40.548,2.16 C40.972,2.16 41.34,2.228 41.652,2.364 C41.964,2.5 42.224,2.694 42.432,2.946 C42.64,3.198 42.8,3.496 42.912,3.84 C43.024,4.184 43.088,4.564 43.104,4.98 C43.112,5.116 43.116,5.256 43.116,5.4 C43.116,5.544 43.112,5.688 43.104,5.832 C43.096,6.232 43.036,6.602 42.924,6.942 C42.812,7.282 42.65,7.578 42.438,7.83 C42.226,8.082 41.964,8.28 41.652,8.424 C41.34,8.568 40.972,8.64 40.548,8.64 C40.116,8.64 39.748,8.562 39.444,8.406 C39.14,8.25 38.892,8.044 38.7,7.788 L38.7,10.512 C38.7,10.592 38.674,10.66 38.622,10.716 C38.57,10.772 38.5,10.8 38.412,10.8 L37.392,10.8 Z M40.104,7.356 C40.448,7.356 40.716,7.282 40.908,7.134 C41.1,6.986 41.24,6.792 41.328,6.552 C41.416,6.312 41.468,6.048 41.484,5.76 C41.492,5.52 41.492,5.28 41.484,5.04 C41.468,4.752 41.416,4.488 41.328,4.248 C41.24,4.008 41.1,3.814 40.908,3.666 C40.716,3.518 40.448,3.444 40.104,3.444 C39.776,3.444 39.51,3.52 39.306,3.672 C39.102,3.824 38.954,4.018 38.862,4.254 C38.77,4.49 38.716,4.732 38.7,4.98 C38.692,5.124 38.688,5.276 38.688,5.436 C38.688,5.596 38.692,5.752 38.7,5.904 C38.708,6.144 38.764,6.374 38.868,6.594 C38.972,6.814 39.124,6.996 39.324,7.14 C39.524,7.284 39.784,7.356 40.104,7.356 Z" id="Shape"></path>
29
+ <path d="M46.272,8.64 C45.856,8.64 45.48,8.558 45.144,8.394 C44.808,8.23 44.542,8.01 44.346,7.734 C44.15,7.458 44.052,7.148 44.052,6.804 C44.052,6.244 44.28,5.798 44.736,5.466 C45.192,5.134 45.788,4.912 46.524,4.8 L48.168,4.56 L48.168,4.308 C48.168,3.972 48.084,3.712 47.916,3.528 C47.748,3.344 47.46,3.252 47.052,3.252 C46.764,3.252 46.53,3.31 46.35,3.426 C46.17,3.542 46.036,3.696 45.948,3.888 C45.884,3.992 45.792,4.044 45.672,4.044 L44.724,4.044 C44.636,4.044 44.57,4.02 44.526,3.972 C44.482,3.924 44.46,3.86 44.46,3.78 C44.468,3.652 44.522,3.496 44.622,3.312 C44.722,3.128 44.874,2.95 45.078,2.778 C45.282,2.606 45.548,2.46 45.876,2.34 C46.204,2.22 46.6,2.16 47.064,2.16 C47.568,2.16 47.994,2.222 48.342,2.346 C48.69,2.47 48.968,2.636 49.176,2.844 C49.384,3.052 49.536,3.296 49.632,3.576 C49.728,3.856 49.776,4.152 49.776,4.464 L49.776,8.232 C49.776,8.312 49.748,8.38 49.692,8.436 C49.636,8.492 49.568,8.52 49.488,8.52 L48.516,8.52 C48.428,8.52 48.358,8.492 48.306,8.436 C48.254,8.38 48.228,8.312 48.228,8.232 L48.228,7.764 C48.124,7.908 47.984,8.048 47.808,8.184 C47.632,8.32 47.418,8.43 47.166,8.514 C46.914,8.598 46.616,8.64 46.272,8.64 Z M46.68,7.5 C46.96,7.5 47.214,7.44 47.442,7.32 C47.67,7.2 47.85,7.014 47.982,6.762 C48.114,6.51 48.18,6.192 48.18,5.808 L48.18,5.556 L46.98,5.748 C46.508,5.82 46.156,5.936 45.924,6.096 C45.692,6.256 45.576,6.452 45.576,6.684 C45.576,6.86 45.63,7.01 45.738,7.134 C45.846,7.258 45.984,7.35 46.152,7.41 C46.32,7.47 46.496,7.5 46.68,7.5 Z" id="Shape"></path>
30
+ <path d="M51.6,8.52 C51.52,8.52 51.452,8.492 51.396,8.436 C51.34,8.38 51.312,8.312 51.312,8.232 L51.312,2.568 C51.312,2.488 51.34,2.42 51.396,2.364 C51.452,2.308 51.52,2.28 51.6,2.28 L52.536,2.28 C52.616,2.28 52.684,2.308 52.74,2.364 C52.796,2.42 52.824,2.488 52.824,2.568 L52.824,2.976 C52.992,2.752 53.218,2.562 53.502,2.406 C53.786,2.25 54.124,2.168 54.516,2.16 C55.428,2.144 56.064,2.5 56.424,3.228 C56.608,2.908 56.874,2.65 57.222,2.454 C57.57,2.258 57.956,2.16 58.38,2.16 C58.796,2.16 59.174,2.256 59.514,2.448 C59.854,2.64 60.122,2.93 60.318,3.318 C60.514,3.706 60.612,4.196 60.612,4.788 L60.612,8.232 C60.612,8.312 60.584,8.38 60.528,8.436 C60.472,8.492 60.404,8.52 60.324,8.52 L59.34,8.52 C59.26,8.52 59.192,8.492 59.136,8.436 C59.08,8.38 59.052,8.312 59.052,8.232 L59.052,4.884 C59.052,4.524 59,4.238 58.896,4.026 C58.792,3.814 58.652,3.664 58.476,3.576 C58.3,3.488 58.104,3.444 57.888,3.444 C57.712,3.444 57.536,3.488 57.36,3.576 C57.184,3.664 57.04,3.814 56.928,4.026 C56.816,4.238 56.76,4.524 56.76,4.884 L56.76,8.232 C56.76,8.312 56.732,8.38 56.676,8.436 C56.62,8.492 56.552,8.52 56.472,8.52 L55.488,8.52 C55.408,8.52 55.34,8.492 55.284,8.436 C55.228,8.38 55.2,8.312 55.2,8.232 L55.2,4.884 C55.2,4.524 55.144,4.238 55.032,4.026 C54.92,3.814 54.776,3.664 54.6,3.576 C54.424,3.488 54.236,3.444 54.036,3.444 C53.852,3.444 53.672,3.49 53.496,3.582 C53.32,3.674 53.176,3.824 53.064,4.032 C52.952,4.24 52.896,4.524 52.896,4.884 L52.896,8.232 C52.896,8.312 52.868,8.38 52.812,8.436 C52.756,8.492 52.688,8.52 52.608,8.52 L51.6,8.52 Z"></path>
31
+ </g>
32
+ </g>
33
+ </g>
34
+ </svg>
assets/js/admin.js CHANGED
@@ -1,114 +1,98 @@
1
- (function($) {
2
- var ZeroSpamAdmin = {
3
- init: function() {
4
- // Set active tab on the settings page.
5
- var $settingsContainer = $('.zerospam-settings-tabs');
6
- if ( $settingsContainer.length ) {
7
- this.openTab(1, $settingsContainer);
8
-
9
- $('h2', $settingsContainer).click(function(e) {
10
- e.preventDefault();
11
-
12
- const index = $settingsContainer.find('h2').index(this) + 1;
13
- ZeroSpamAdmin.openTab(index);
14
- });
15
- }
16
- },
17
-
18
- openTab: function( index, $container ) {
19
- $('.form-table', $container).removeClass('is-active');
20
- $('.h2', $container).removeClass('is-active');
21
-
22
- const $settingsTabContent = $('.form-table:nth-of-type(' + index + ')', $container);
23
- const $settingsTab = $('h2:nth-of-type(' + index + ')', $container);
24
-
25
- $settingsTabContent.addClass('is-active');
26
- $settingsTab.addClass('is-active');
27
- },
28
-
29
- prepopulateFields: function( $btn ) {
30
- var ip = $btn.data('ip');
31
- $('input[name="blocked_ip"]', $('.zerospam-modal-block')).val('');
32
- if ( ip ) {
33
- $('input[name="blocked_ip"]', $('.zerospam-modal-block')).val(ip);
34
- }
35
-
36
- var keyType = $btn.data('keytype');
37
- $('select[name="key_type"]', $('.zerospam-modal-block')).val('country_code');
38
- if ( keyType ) {
39
- $('select[name="key_type"]', $('.zerospam-modal-block')).val(keyType);
40
- }
41
-
42
- var blockedKey = $btn.data('blockedkey');
43
- $('input[name="blocked_key"]', $('.zerospam-modal-block')).val('');
44
- if ( blockedKey ) {
45
- $('input[name="blocked_key"]', $('.zerospam-modal-block')).val(blockedKey);
46
- }
47
-
48
- var reason = $btn.data('reason');
49
- $('input[name="blocked_reason"]', $('.zerospam-modal-block')).val('');
50
- if ( reason ) {
51
- $('input[name="blocked_reason"]', $('.zerospam-modal-block')).val(reason);
52
- }
53
-
54
- var type = $btn.data('type');
55
- $('select[name="blocked_type"]', $('.zerospam-modal-block')).val('temporary');
56
- if ( type ) {
57
- $('select[name="blocked_type"]', $('.zerospam-modal-block')).val(type);
58
- }
59
-
60
- var startDate = $btn.data('start');
61
- $('input[name="blocked_start_date"]', $('.zerospam-modal-block')).val('');
62
- if ( startDate ) {
63
- $('input[name="blocked_start_date"]', $('.zerospam-modal-block')).val(startDate);
64
- }
65
-
66
- var endDate = $btn.data('end');
67
- $('input[name="blocked_end_date"]', $('.zerospam-modal-block')).val('');
68
- if ( endDate ) {
69
- $('input[name="blocked_end_date"]', $('.zerospam-modal-block')).val(endDate);
70
- }
71
- }
72
- };
73
-
74
- $(function() {
75
- ZeroSpamAdmin.init();
76
-
77
- $( '.zerospam-details-trigger' ).click(function( e ) {
78
  e.preventDefault();
79
- $('.zerospam-modal').removeClass('is-active');
80
 
81
- var id = $(this).data('id');
82
- $('#zerospam-details-' + id).addClass('is-active');
83
  });
84
 
85
- $('.zerospam-close-modal').click(function(e) {
86
- e.preventDefault();
87
- $('.zerospam-modal').removeClass('is-active');
88
- });
89
 
90
- $('.zerospam-block-location-trigger').click(function(e) {
91
- e.preventDefault();
92
 
93
- ZeroSpamAdmin.prepopulateFields($(this));
94
 
95
- $('.zerospam-modal').removeClass('is-active');
96
- $('#zerospam-block-location').addClass('is-active');
97
- });
98
 
99
- $('.zerospam-block-trigger').click(function(e) {
100
- e.preventDefault();
101
 
102
- ZeroSpamAdmin.prepopulateFields($(this));
103
 
104
- $('.zerospam-modal').removeClass('is-active');
105
- $('#zerospam-block-ip').addClass('is-active');
106
- });
107
 
108
- $(document).on('keydown', function(e) {
109
- if(e.key == "Escape") {
110
- $('.zerospam-modal').removeClass('is-active');
111
- }
112
- });
113
  });
114
  })(jQuery);
1
+ (function ($) {
2
+ var ZeroSpamAdmin = {
3
+ prepopulateFields: function ($btn) {
4
+ var ip = $btn.data("ip");
5
+ $('input[name="blocked_ip"]', $(".zerospam-modal-block")).val("");
6
+ if (ip) {
7
+ $('input[name="blocked_ip"]', $(".zerospam-modal-block")).val(ip);
8
+ }
9
+
10
+ var keyType = $btn.data("keytype");
11
+ $('select[name="key_type"]', $(".zerospam-modal-block")).val(
12
+ "country_code"
13
+ );
14
+ if (keyType) {
15
+ $('select[name="key_type"]', $(".zerospam-modal-block")).val(keyType);
16
+ }
17
+
18
+ var blockedKey = $btn.data("blockedkey");
19
+ $('input[name="blocked_key"]', $(".zerospam-modal-block")).val("");
20
+ if (blockedKey) {
21
+ $('input[name="blocked_key"]', $(".zerospam-modal-block")).val(
22
+ blockedKey
23
+ );
24
+ }
25
+
26
+ var reason = $btn.data("reason");
27
+ $('input[name="blocked_reason"]', $(".zerospam-modal-block")).val("");
28
+ if (reason) {
29
+ $('input[name="blocked_reason"]', $(".zerospam-modal-block")).val(
30
+ reason
31
+ );
32
+ }
33
+
34
+ var type = $btn.data("type");
35
+ $('select[name="blocked_type"]', $(".zerospam-modal-block")).val(
36
+ "temporary"
37
+ );
38
+ if (type) {
39
+ $('select[name="blocked_type"]', $(".zerospam-modal-block")).val(type);
40
+ }
41
+
42
+ var startDate = $btn.data("start");
43
+ $('input[name="blocked_start_date"]', $(".zerospam-modal-block")).val("");
44
+ if (startDate) {
45
+ $('input[name="blocked_start_date"]', $(".zerospam-modal-block")).val(
46
+ startDate
47
+ );
48
+ }
49
+
50
+ var endDate = $btn.data("end");
51
+ $('input[name="blocked_end_date"]', $(".zerospam-modal-block")).val("");
52
+ if (endDate) {
53
+ $('input[name="blocked_end_date"]', $(".zerospam-modal-block")).val(
54
+ endDate
55
+ );
56
+ }
57
+ },
58
+ };
59
+
60
+ $(function () {
61
+ $(".zerospam-details-trigger").click(function (e) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  e.preventDefault();
63
+ $(".zerospam-modal").removeClass("is-active");
64
 
65
+ var id = $(this).data("id");
66
+ $("#zerospam-details-" + id).addClass("is-active");
67
  });
68
 
69
+ $(".zerospam-close-modal").click(function (e) {
70
+ e.preventDefault();
71
+ $(".zerospam-modal").removeClass("is-active");
72
+ });
73
 
74
+ $(".zerospam-block-location-trigger").click(function (e) {
75
+ e.preventDefault();
76
 
77
+ ZeroSpamAdmin.prepopulateFields($(this));
78
 
79
+ $(".zerospam-modal").removeClass("is-active");
80
+ $("#zerospam-block-location").addClass("is-active");
81
+ });
82
 
83
+ $(".zerospam-block-trigger").click(function (e) {
84
+ e.preventDefault();
85
 
86
+ ZeroSpamAdmin.prepopulateFields($(this));
87
 
88
+ $(".zerospam-modal").removeClass("is-active");
89
+ $("#zerospam-block-ip").addClass("is-active");
90
+ });
91
 
92
+ $(document).on("keydown", function (e) {
93
+ if (e.key == "Escape") {
94
+ $(".zerospam-modal").removeClass("is-active");
95
+ }
96
+ });
97
  });
98
  })(jQuery);
assets/src/scss/admin.scss ADDED
@@ -0,0 +1,930 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Project breakpoints.
2
+ $breakpoints: (
3
+ "small": (
4
+ min-width: 0,
5
+ ),
6
+ "medium": (
7
+ min-width: 782px,
8
+ ),
9
+ "large": (
10
+ min-width: 960px,
11
+ ),
12
+ );
13
+
14
+ /// Mixin to manage responsive breakpoints
15
+ ///
16
+ /// @author Kitty Giraudel
17
+ /// @param {String} $breakpoint - Breakpoint name
18
+ /// @require $breakpoints
19
+ @mixin breakpoint($breakpoint) {
20
+ // If the key exists in the map
21
+ @if map-has-key($breakpoints, $breakpoint) {
22
+ // Prints a media query based on the value
23
+ @media #{inspect(map-get($breakpoints, $breakpoint))} {
24
+ @content;
25
+ }
26
+ }
27
+
28
+ // If the key doesn't exist in the map
29
+ @else {
30
+ @warn 'Unfortunately, no value could be retrieved from `#{$breakpoint}`. '
31
+ + 'Available breakpoints are: #{map-keys($breakpoints)}.';
32
+ }
33
+ }
34
+
35
+ :root {
36
+ --zerospam-primary: #3f0008;
37
+ --zerospam-secondary: #840012;
38
+ --zerospam-accent: #ff2929;
39
+ --zerospam-trinary: #be0000;
40
+ --zerospam-success: #69b86b;
41
+ }
42
+
43
+ %default-text {
44
+ color: var(--zerospam-primary);
45
+ display: block;
46
+ font-size: 0.8125rem;
47
+ line-height: 1.384615385rem;
48
+ margin: 0 0 0.5625rem 0;
49
+ }
50
+
51
+ %button {
52
+ backface-visibility: hidden;
53
+ background: var(--zerospam-trinary);
54
+ border: 1px solid transparent;
55
+ border-radius: 3px;
56
+ box-shadow: 0 2px 1px rgb(28 31 63 / 6%);
57
+ color: #fff;
58
+ display: inline-block;
59
+ font-size: 0.875rem;
60
+ font-weight: 500;
61
+ line-height: 1;
62
+ min-height: 0;
63
+ outline: none;
64
+ padding: 0.875rem 2rem;
65
+ transition: transform 0.3s ease, box-shadow 0.3s ease,
66
+ background-color 0.3s ease;
67
+
68
+ &:active,
69
+ &:focus {
70
+ background-color: var(--zerospam-accent);
71
+ box-shadow: 0 4px 6px rgb(28 31 63 / 8%);
72
+ border-color: var(--zerospam-accent);
73
+ color: #fff;
74
+ }
75
+
76
+ &:hover {
77
+ background-color: var(--zerospam-trinary);
78
+ border: 1px solid transparent;
79
+ box-shadow: 0 4px 6px rgb(28 31 63 / 8%);
80
+ color: #fff;
81
+ transform: translate(0, -2px);
82
+ }
83
+
84
+ &.button-primary {
85
+ background: var(--zerospam-accent);
86
+
87
+ &:focus {
88
+ color: #fff;
89
+ }
90
+ }
91
+ }
92
+
93
+ %button-small {
94
+ font-size: 11px;
95
+ padding: 0.4rem 0.5rem;
96
+ }
97
+
98
+ #wpcontent {
99
+ padding-left: 0 !important;
100
+ }
101
+
102
+ .wrap {
103
+ margin-left: 12px;
104
+ }
105
+
106
+ .zerospam-small-icon {
107
+ height: 18px;
108
+ vertical-align: sub;
109
+ width: auto;
110
+ }
111
+
112
+ .zerospam-header {
113
+ background-color: var(--zerospam-secondary);
114
+ background-image: url("../img/logo-flat.svg");
115
+ background-position: 0.5rem 0.5rem;
116
+ background-repeat: no-repeat;
117
+ background-size: 100px;
118
+ padding: 1.5rem 1.5rem 1.5rem 8rem;
119
+
120
+ @include breakpoint(medium) {
121
+ align-items: center;
122
+ display: flex;
123
+ justify-content: space-between;
124
+ }
125
+
126
+ a {
127
+ color: var(--zerospam-accent);
128
+ }
129
+
130
+ &__status {
131
+ align-items: center;
132
+ background-color: #fff;
133
+ border-radius: 3px;
134
+ column-gap: 8px;
135
+ display: flex;
136
+ padding: 10px 15px;
137
+ }
138
+ }
139
+
140
+ .zerospam-dashboard {
141
+ @include breakpoint(medium) {
142
+ column-gap: 3rem;
143
+ display: grid;
144
+ grid-template-columns: 200px 1fr;
145
+ grid-template-rows: auto;
146
+ }
147
+
148
+ a {
149
+ color: var(--zerospam-accent);
150
+ }
151
+ }
152
+
153
+ a.zerospam-dashboard__menu-link {
154
+ align-items: center;
155
+ border: 1px solid transparent;
156
+ border-radius: 3px;
157
+ color: var(--zerospam-primary);
158
+ column-gap: 8px;
159
+ display: flex;
160
+ font-size: 0.875rem;
161
+ font-weight: 400;
162
+ line-height: normal;
163
+ margin: 0;
164
+ padding: 0.6875rem 0.5rem 0.6875rem 1rem;
165
+ text-decoration: none;
166
+
167
+ &:hover {
168
+ color: var(--zerospam-primary);
169
+ }
170
+
171
+ &--active,
172
+ &:focus {
173
+ background-color: #fff;
174
+ font-weight: 500;
175
+ }
176
+
177
+ &--active {
178
+ border-color: #e3e6ef;
179
+ box-shadow: 0 1px 4px rgb(18 25 97 / 8%);
180
+ margin-top: 0.125rem;
181
+ }
182
+ }
183
+
184
+ .zerospam-dashboard__menu-icon {
185
+ width: 18px;
186
+ }
187
+
188
+ .zerospam-block__grid {
189
+ align-items: center;
190
+ column-gap: 30px;
191
+ row-gap: 30px;
192
+ display: grid;
193
+ grid-template-columns: 1fr;
194
+
195
+ @include breakpoint(medium) {
196
+ grid-template-columns: 65% 1fr;
197
+ }
198
+ }
199
+
200
+ .zerospam-block {
201
+ background: #fff;
202
+ border: 1px solid #e3e6ef;
203
+ border-radius: 3px;
204
+ box-shadow: 0 1px 4px rgb(18 25 97 / 8%);
205
+ box-sizing: border-box;
206
+ width: 100%;
207
+
208
+ .button {
209
+ @extend %button;
210
+ }
211
+
212
+ &__content {
213
+ @extend %default-text;
214
+ border-top: 1px solid #ebebf2;
215
+ display: block;
216
+ margin: 0;
217
+ padding: 1rem 1rem 1.25rem;
218
+
219
+ code {
220
+ font-size: 0.85em;
221
+ }
222
+
223
+ &--supports {
224
+ align-items: center;
225
+ column-gap: 8px;
226
+ display: flex;
227
+ flex-wrap: wrap;
228
+ }
229
+ }
230
+
231
+ &__headline {
232
+ box-sizing: border-box;
233
+ color: var(--zerospam-primary);
234
+ display: block;
235
+ font-size: 0.875rem;
236
+ font-weight: 500;
237
+ line-height: 2.875rem;
238
+ margin: 0;
239
+ padding: 0 0 0 1.0625rem;
240
+ width: 100%;
241
+ }
242
+
243
+ &--callout {
244
+ .zerospam-block__content {
245
+ padding: 2rem 3rem;
246
+
247
+ h3 {
248
+ font-size: 24px;
249
+ font-weight: bold;
250
+ line-height: 1.2;
251
+ }
252
+
253
+ .button {
254
+ margin-top: 0.7rem;
255
+ }
256
+ }
257
+ }
258
+
259
+ &--success,
260
+ &--error,
261
+ &--notice {
262
+ .zerospam-block__content {
263
+ position: relative;
264
+ color: #fff;
265
+ font-size: 13px;
266
+ padding: 1.3rem 2rem;
267
+ }
268
+ }
269
+
270
+ &--notice {
271
+ background: var(--zerospam-success);
272
+ }
273
+
274
+ &--success,
275
+ &--error {
276
+ margin-bottom: 1rem;
277
+
278
+ .zerospam-block__content {
279
+ padding-left: 60px;
280
+
281
+ &::before {
282
+ background-position: center;
283
+ background-repeat: no-repeat;
284
+ background-size: contain;
285
+ border: 1px solid #fff;
286
+ border-radius: 100%;
287
+ content: "";
288
+ display: inline-block;
289
+ height: 25px;
290
+ left: 1.5rem;
291
+ position: absolute;
292
+ top: 18px;
293
+ width: 25px;
294
+ }
295
+ }
296
+ }
297
+
298
+ &--success {
299
+ .zerospam-block__content {
300
+ &::before {
301
+ background-color: #fff;
302
+ background-image: url("../img/icon-success.svg");
303
+ }
304
+ }
305
+ }
306
+
307
+ &--error {
308
+ .zerospam-block__content {
309
+ background-color: var(--zerospam-accent);
310
+ color: #fff;
311
+
312
+ &::before {
313
+ background-color: var(--zerospam-accent);
314
+ background-image: url("../img/icon-x.svg?sd");
315
+ }
316
+ }
317
+ }
318
+
319
+ &--map {
320
+ @include breakpoint(medium) {
321
+ width: calc(60% - var(--zerospam-block-gap));
322
+ }
323
+ }
324
+
325
+ &--list {
326
+ @include breakpoint(medium) {
327
+ width: calc(40% - var(--zerospam-block-gap));
328
+ }
329
+ }
330
+ }
331
+
332
+ .zerospam-blocks {
333
+ --zerospam-block-gap: 0.875rem;
334
+
335
+ display: flex;
336
+ flex-wrap: wrap;
337
+ margin-left: calc(var(--zerospam-block-gap) / 2 * -1);
338
+ margin-right: calc(var(--zerospam-block-gap) / 2 * -1);
339
+
340
+ .zerospam-block {
341
+ margin: calc(var(--zerospam-block-gap) / 2);
342
+
343
+ &--facebook,
344
+ &--twitter {
345
+ background-color: transparent;
346
+ border: 0;
347
+ box-shadow: none;
348
+ }
349
+
350
+ &--facebook {
351
+ @include breakpoint(medium) {
352
+ width: 340px;
353
+ }
354
+ }
355
+
356
+ &--twitter {
357
+ @include breakpoint(medium) {
358
+ width: calc(100% - (var(--zerospam-block-gap) * 2) - 340px);
359
+ }
360
+ }
361
+ }
362
+ }
363
+
364
+ .zerospam-table-form {
365
+ .column-actions {
366
+ column-gap: 5px;
367
+ display: flex;
368
+
369
+ .button {
370
+ @extend %button-small;
371
+ }
372
+ }
373
+
374
+ .tablenav-pages {
375
+ .current-page {
376
+ width: auto;
377
+ }
378
+ }
379
+
380
+ .tablenav {
381
+ align-items: center;
382
+ display: flex;
383
+ flex-wrap: wrap;
384
+ height: auto;
385
+ margin: 0 0 1rem 0;
386
+ padding-top: 0;
387
+
388
+ .actions {
389
+ align-items: center;
390
+ column-gap: 5px;
391
+ display: flex;
392
+ padding: 0;
393
+
394
+ select {
395
+ float: none;
396
+ margin-right: 0;
397
+ }
398
+ }
399
+
400
+ .tablenav-pages {
401
+ flex-grow: 1;
402
+ float: none;
403
+ margin: 0;
404
+ text-align: right;
405
+ }
406
+
407
+ &.bottom {
408
+ margin: 1rem 0 0 0;
409
+ }
410
+ }
411
+
412
+ p.search-box {
413
+ align-items: center;
414
+ column-gap: 5px;
415
+ display: flex;
416
+ margin-bottom: 5px;
417
+ float: none;
418
+ }
419
+
420
+ .search-box {
421
+ input[name="s"] {
422
+ float: none;
423
+ margin: 0;
424
+ }
425
+ }
426
+ }
427
+
428
+ .zerospam-table-form,
429
+ .zerospam-form {
430
+ .regular-text {
431
+ width: 100%;
432
+ }
433
+
434
+ .code {
435
+ font-size: 0.8rem;
436
+ }
437
+
438
+ select,
439
+ input[type="text"],
440
+ input[type="url"],
441
+ input[type="number"],
442
+ input[type="search"],
443
+ input[type="datetime-local"],
444
+ textarea {
445
+ border: 1px solid var(--zerospam-trinary);
446
+ color: var(--zerospam-primary);
447
+ max-width: none;
448
+ padding: 0.45rem 1rem;
449
+ width: 100%;
450
+
451
+ &:hover {
452
+ color: var(--zerospam-primary);
453
+ }
454
+
455
+ &:focus {
456
+ border: 1px solid var(--zerospam-trinary);
457
+ box-shadow: none;
458
+ }
459
+ }
460
+
461
+ .button {
462
+ @extend %button;
463
+ }
464
+
465
+ input[type="radio"],
466
+ input[type="checkbox"] {
467
+ display: none;
468
+
469
+ + label {
470
+ display: inline-block;
471
+ margin-bottom: 0.2rem;
472
+ position: relative;
473
+
474
+ &::before,
475
+ &::after {
476
+ content: "";
477
+ cursor: pointer;
478
+ }
479
+
480
+ &::before {
481
+ background: var(--zerospam-trinary);
482
+ border: 2px solid transparent;
483
+ border-radius: 15px;
484
+ box-shadow: inset 0 1px 2px rgb(90 97 105 / 15%);
485
+ display: inline-block;
486
+ height: 1.125rem;
487
+ margin-right: 0.5rem;
488
+ padding: 0.1275rem;
489
+ position: relative;
490
+ vertical-align: middle;
491
+ transition: all 0.25s ease;
492
+ transition-duration: 0.2s;
493
+ transition-property: background-color, border-color, color, fill, stroke;
494
+ transition-timing-function: cubic-bezier(0.4, 0, 0.1, 1);
495
+ width: 2.625rem;
496
+ }
497
+
498
+ &::after {
499
+ background: #fff center no-repeat
500
+ url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjQ3NDkgMi41MjUxYS41ODMzLjU4MzMgMCAwMDAgLjgyNUw0LjEyNDggNWwtMS42NSAxLjY1YS41ODMzLjU4MzMgMCAxMC44MjUuODI0OWwxLjY1LTEuNjUgMS42NDk5IDEuNjVhLjU4MzMuNTgzMyAwIDEwLjgyNS0uODI1TDUuNzc0NiA1bDEuNjUtMS42NWEuNTgzMy41ODMzIDAgMTAtLjgyNS0uODI0OWwtMS42NSAxLjY1LTEuNjQ5OS0xLjY1YS41ODMzLjU4MzMgMCAwMC0uODI1IDB6IiBmaWxsPSIjOTA5MkIyIi8+PC9zdmc+);
501
+ background-size: 0.625rem;
502
+ border-radius: 50%;
503
+ box-shadow: 0 1px 4px rgb(24 24 72 / 12%);
504
+ display: block;
505
+ height: 1.125rem;
506
+ left: 4px;
507
+ position: absolute;
508
+ top: 4px;
509
+ transition: all 0.25s ease;
510
+ transition-duration: 0.2s;
511
+ transition-property: background, left;
512
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
513
+ width: 1.125rem;
514
+ z-index: 1;
515
+ }
516
+ }
517
+
518
+ &:checked {
519
+ + label {
520
+ &::before {
521
+ background: var(--zerospam-accent);
522
+ }
523
+
524
+ &::after {
525
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI3IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0yLjY2NjcgNC4zOTA1TDYuODYxOS4xOTUzYS42NjY3LjY2NjcgMCAwMS45NDI4Ljk0MjhsLTUuMTM4IDUuMTM4TC4xOTUzIDMuODA0N2EuNjY2Ny42NjY3IDAgMDEuOTQyOC0uOTQyOGwxLjUyODYgMS41Mjg2eiIgZmlsbD0iIzNFN0RBNiIvPjwvc3ZnPg==);
526
+ background-size: 0.5rem;
527
+ left: 1.7rem;
528
+ }
529
+ }
530
+ }
531
+ }
532
+ }
533
+
534
+ .zerospam-form-field-container {
535
+ align-items: center;
536
+ column-gap: 10px;
537
+ display: flex;
538
+ }
539
+
540
+ .zerospam-form-field {
541
+ margin-bottom: 0.6875rem;
542
+
543
+ > label {
544
+ color: var(--zerospam-primary);
545
+ display: block;
546
+ font-size: 0.8125rem;
547
+ line-height: 1.384615385rem;
548
+ margin: 0 0 5px 0;
549
+ }
550
+ }
551
+
552
+ .zerospam-form-fields {
553
+ --zerospam-block-gap: 0.875rem;
554
+
555
+ display: flex;
556
+ flex-wrap: wrap;
557
+ margin-left: calc(var(--zerospam-block-gap) / 2 * -1);
558
+ margin-right: calc(var(--zerospam-block-gap) / 2 * -1);
559
+
560
+ .zerospam-form-field {
561
+ margin: calc(var(--zerospam-block-gap) / 2);
562
+ width: calc(100% - var(--zerospam-block-gap));
563
+
564
+ &--half {
565
+ width: calc(50% - var(--zerospam-block-gap));
566
+ }
567
+ }
568
+ }
569
+
570
+ .zerospam-form {
571
+ > h2 {
572
+ display: none;
573
+ }
574
+
575
+ .description {
576
+ @extend %default-text;
577
+ }
578
+
579
+ tbody {
580
+ display: grid;
581
+ grid-column-gap: 0.875rem;
582
+ grid-row-gap: 0.875rem;
583
+ grid-template-columns: 1fr;
584
+
585
+ @include breakpoint(medium) {
586
+ grid-template-columns: 1fr 1fr;
587
+ }
588
+ }
589
+
590
+ tr {
591
+ box-sizing: border-box;
592
+ display: block;
593
+ position: relative;
594
+
595
+ @extend .zerospam-block;
596
+ }
597
+
598
+ th {
599
+ @extend .zerospam-block__headline;
600
+ }
601
+
602
+ td {
603
+ @extend .zerospam-block__content;
604
+ }
605
+ }
606
+
607
+ .zerospam-modal {
608
+ box-shadow: 0 0 4rem 100vw rgb(0 0 0 / 50%);
609
+ box-sizing: border-box;
610
+ left: 50%;
611
+ max-width: 600px;
612
+ opacity: 0;
613
+ position: fixed;
614
+ max-height: calc(90vh - 60px);
615
+ overflow: auto;
616
+ top: 50%;
617
+ transform: translate(-50%, -50%);
618
+ transition: all 0.5s;
619
+ visibility: hidden;
620
+ width: 100%;
621
+ z-index: 1;
622
+
623
+ &.is-active {
624
+ opacity: 1;
625
+ visibility: visible;
626
+ }
627
+ }
628
+
629
+ .zerospam-close-modal {
630
+ background: transparent;
631
+ border: 0;
632
+ cursor: pointer;
633
+ display: block;
634
+ height: 16px;
635
+ padding: 0;
636
+ position: absolute;
637
+ right: 15px;
638
+ top: 15px;
639
+ width: 15px;
640
+
641
+ &::before,
642
+ &::after {
643
+ background: #23282d;
644
+ content: "";
645
+ display: block;
646
+ height: 16px;
647
+ left: 6px;
648
+ position: absolute;
649
+ top: 0;
650
+ width: 3px;
651
+ }
652
+
653
+ &::before {
654
+ transform: rotate(45deg);
655
+ }
656
+
657
+ &::after {
658
+ transform: rotate(-45deg);
659
+ }
660
+ }
661
+
662
+ .zerospam-type- {
663
+ &blocked,
664
+ &login,
665
+ &registration,
666
+ &comment,
667
+ &fluent_form,
668
+ &wpforms,
669
+ &contactform7,
670
+ &givewp,
671
+ &memberpress_registration,
672
+ &memberpress_login,
673
+ &mailchimp4wp,
674
+ &woocommerce_registration,
675
+ &gravityforms,
676
+ &formidable {
677
+ &::before {
678
+ background-position: center;
679
+ background-repeat: no-repeat;
680
+ background-size: contain;
681
+ content: "";
682
+ display: inline-block;
683
+ height: 16px;
684
+ margin-right: 5px;
685
+ vertical-align: sub;
686
+ width: 16px;
687
+ }
688
+ }
689
+
690
+ &blocked {
691
+ color: var(--zerospam-primary);
692
+
693
+ &::before {
694
+ background-image: url("../img/icon.svg");
695
+ }
696
+ }
697
+
698
+ &login,
699
+ &registration,
700
+ &comment {
701
+ &::before {
702
+ background-image: url("../img/icon-wordpress.svg");
703
+ }
704
+ }
705
+
706
+ &fluent_form {
707
+ &::before {
708
+ background-image: url("../img/icon-fluent-forms.svg");
709
+ }
710
+ }
711
+
712
+ &formidable {
713
+ &::before {
714
+ background-image: url("../../modules/formidable/icon-formidable.png");
715
+ }
716
+ }
717
+
718
+ &wpforms {
719
+ &::before {
720
+ background-image: url("../../modules/wpforms/icon-wpforms.svg");
721
+ }
722
+ }
723
+
724
+ &contactform7 {
725
+ &::before {
726
+ background-image: url("../../modules/contactform7/icon-cf7.png");
727
+ }
728
+ }
729
+
730
+ &memberpress_registration,
731
+ &memberpress_login {
732
+ &::before {
733
+ background-image: url("../img/icon-memberpress.svg");
734
+ }
735
+ }
736
+
737
+ &givewp {
738
+ &::before {
739
+ background-image: url("../../modules/give/icon-givewp.png");
740
+ }
741
+ }
742
+
743
+ &mailchimp4wp {
744
+ &::before {
745
+ background-image: url("../img/icon-mc4wp.svg");
746
+ }
747
+ }
748
+
749
+ &woocommerce_registration {
750
+ &::before {
751
+ background-image: url("../../modules/woocommerce/icon-woocommerce.svg");
752
+ }
753
+ }
754
+
755
+ &gravityforms {
756
+ &::before {
757
+ background-image: url("../../modules/gravityforms/icon-gravity-forms.svg");
758
+ }
759
+ }
760
+ }
761
+
762
+ .zerospam-list {
763
+ list-style: none;
764
+ margin: 0;
765
+ padding: 0;
766
+
767
+ &--data-actions,
768
+ &--data {
769
+ li {
770
+ align-items: center;
771
+ column-gap: 15px;
772
+ display: flex;
773
+ }
774
+ }
775
+
776
+ &--data-actions {
777
+ font-size: 12px;
778
+ line-height: 1.2;
779
+
780
+ .button {
781
+ @extend %button-small;
782
+ }
783
+
784
+ .zerospam-list__value {
785
+ img {
786
+ vertical-align: sub;
787
+ }
788
+
789
+ &:first-child {
790
+ overflow: hidden;
791
+ text-overflow: ellipsis;
792
+ white-space: nowrap;
793
+ }
794
+
795
+ &:nth-child(2) {
796
+ flex-grow: 1;
797
+ text-align: right;
798
+ width: 25%;
799
+ }
800
+
801
+ &:nth-child(3) {
802
+ flex-shrink: 0;
803
+ text-align: right;
804
+ width: 30px;
805
+ }
806
+
807
+ &:last-child {
808
+ flex-shrink: 0;
809
+ text-align: right;
810
+ width: 40px;
811
+ }
812
+ }
813
+ }
814
+
815
+ &--data {
816
+ .zerospam-list__label,
817
+ .zerospam-list__value {
818
+ font-size: 12px;
819
+ }
820
+
821
+ .zerospam-list__label {
822
+ font-weight: bold;
823
+ flex-shrink: 0;
824
+ width: 170px;
825
+ }
826
+
827
+ .zerospam-list__value {
828
+ flex-grow: 1;
829
+ }
830
+ }
831
+
832
+ &--checks {
833
+ font-size: 15px;
834
+ line-height: 1.3;
835
+
836
+ li {
837
+ margin-bottom: 20px;
838
+ padding-left: 30px;
839
+ position: relative;
840
+
841
+ &:last-child {
842
+ margin-bottom: 0;
843
+ }
844
+
845
+ &::before {
846
+ background-image: url("../img/icon-success.svg");
847
+ background-position: center;
848
+ background-repeat: no-repeat;
849
+ background-size: contain;
850
+ content: "";
851
+ display: inline-block;
852
+ height: 22px;
853
+ left: 0;
854
+ position: absolute;
855
+ top: -2px;
856
+ width: 22px;
857
+ }
858
+ }
859
+ }
860
+ }
861
+
862
+ .zerospam-flag {
863
+ margin-right: 5px;
864
+ vertical-align: sub;
865
+ }
866
+
867
+ /* */
868
+ .zerospam-dashboard__section-link,
869
+ .zerospam-new-window-link::after {
870
+ background-image: url("../img/icon-new-window.svg");
871
+ background-position: center;
872
+ background-repeat: no-repeat;
873
+ background-size: contain;
874
+ content: "";
875
+ display: inline-block;
876
+ height: 11px;
877
+ margin-left: 3px;
878
+ vertical-align: middle;
879
+ width: 11px;
880
+ }
881
+
882
+ .zerospam-notice {
883
+ background: #fff;
884
+ border: 1px solid #ccd0d4;
885
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
886
+ }
887
+
888
+ .zerospam-notice {
889
+ box-sizing: border-box;
890
+ padding: 30px;
891
+ }
892
+
893
+ .zerospam-notice {
894
+ margin: 20px 0;
895
+ }
896
+
897
+ /* Tabs */
898
+ .zerospam-settings-tabs .form-table,
899
+ .zerospam-tab {
900
+ display: none;
901
+ }
902
+
903
+ .zerospam-settings-tabs h2 {
904
+ background: #fff;
905
+ border: 1px solid #ccd0d4;
906
+ box-shadow: 0 1px 1px rgb(0 0 0 / 4%);
907
+ display: block;
908
+ cursor: pointer;
909
+ margin: 15px 0 0 0;
910
+ padding: 15px 20px;
911
+ }
912
+
913
+ .zerospam-settings-tabs .form-table {
914
+ background: #fff;
915
+ border: 1px solid #ccd0d4;
916
+ border-top: 0;
917
+ margin: 0;
918
+ padding: 20px;
919
+ }
920
+
921
+ .zerospam-settings-tabs .form-table.is-active,
922
+ .zerospam-tab.is-active {
923
+ display: block;
924
+ }
925
+
926
+ .zerospam-export-import-block {
927
+ column-gap: 12px;
928
+ display: grid;
929
+ grid-template-columns: 1fr 1fr;
930
+ }
core/admin/class-admin.php CHANGED
@@ -48,7 +48,7 @@ class Admin {
48
  if ( ! empty( array_intersect( $roles, $selected_user_roles ) ) ) {
49
  wp_add_dashboard_widget(
50
  'zerospam_dashboard_widget',
51
- __( 'WordPress Zero Spam', 'zero-spam' ),
52
  array( $this, 'dashboard_widget' )
53
  );
54
  }
@@ -123,7 +123,7 @@ class Admin {
123
  $messages = array();
124
 
125
  // Check Zero Spam license key.
126
- $zerospam_protection = \ZeroSpam\Core\Settings::get_settings( 'zero-spam' );
127
  if ( 'enabled' === $zerospam_protection ) {
128
  $zerospam_license_key = \ZeroSpam\Core\Settings::get_settings( 'zerospam_license' );
129
  if ( ! $zerospam_license_key ) {
@@ -159,7 +159,7 @@ class Admin {
159
  'content' => sprintf(
160
  wp_kses(
161
  /* translators: %1$s: Replaced with the Zero Spam settings page URL */
162
- __( '<strong>Thanks for installing WordPress Zero Spam!</strong> Visit the <a href="%1$s">setting page</a> to configure your site\'s protection level or <strong><a href="%2$s">click here</a> to automatically configure recommended settings</strong>. For enhanced protection, get a <a href="%3$s" target="_blank">Zero Spam premium license</a>.', 'zero-spam' ),
163
  array(
164
  'strong' => array(),
165
  'a' => array(
@@ -169,7 +169,7 @@ class Admin {
169
  )
170
  ),
171
  esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) ),
172
- esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings&zerospam-action=auto-configure' ) ),
173
  esc_url( ZEROSPAM_URL . 'product/premium/' )
174
  ),
175
  );
@@ -250,7 +250,7 @@ class Admin {
250
  public function plugin_row_meta( $plugin_meta, $plugin_file ) {
251
  if ( ZEROSPAM_PLUGIN_BASE === $plugin_file ) {
252
  $row_meta = array(
253
- 'docs' => '<a href="https://github.com/bmarshall511/wordpress-zero-spam/wiki" aria-label="' . esc_attr( __( 'View WordPress Zero Spam Documentation', 'zero-spam' ) ) . '" target="_blank">' . __( 'Docs & FAQs', 'zero-spam' ) . '</a>',
254
  );
255
 
256
  $plugin_meta = array_merge( $plugin_meta, $row_meta );
@@ -276,7 +276,7 @@ class Admin {
276
  $footer_text = sprintf(
277
  /* translators: 1: Elementor, 2: Link to plugin review */
278
  __( 'Enjoyed %1$s? Please leave us a %2$s rating. We really appreciate your support!', 'zero-spam' ),
279
- '<strong>' . __( 'WordPress Zero Spam', 'zero-spam' ) . '</strong>',
280
  '<a href="https://wordpress.org/plugins/zero-spam/#reviews" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
281
  );
282
  }
48
  if ( ! empty( array_intersect( $roles, $selected_user_roles ) ) ) {
49
  wp_add_dashboard_widget(
50
  'zerospam_dashboard_widget',
51
+ __( 'Zero Spam for WordPress', 'zero-spam' ),
52
  array( $this, 'dashboard_widget' )
53
  );
54
  }
123
  $messages = array();
124
 
125
  // Check Zero Spam license key.
126
+ $zerospam_protection = \ZeroSpam\Core\Settings::get_settings( 'zero-spam-zerospam' );
127
  if ( 'enabled' === $zerospam_protection ) {
128
  $zerospam_license_key = \ZeroSpam\Core\Settings::get_settings( 'zerospam_license' );
129
  if ( ! $zerospam_license_key ) {
159
  'content' => sprintf(
160
  wp_kses(
161
  /* translators: %1$s: Replaced with the Zero Spam settings page URL */
162
+ __( '<strong>Thanks for installing Zero Spam for WordPress!</strong> Visit the <a href="%1$s">setting page</a> to configure your site\'s protection level or <strong><a href="%2$s">click here</a> to automatically configure recommended settings</strong>.', 'zero-spam' ),
163
  array(
164
  'strong' => array(),
165
  'a' => array(
169
  )
170
  ),
171
  esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) ),
172
+ wp_nonce_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings&zerospam-action=autoconfigure' ), 'autoconfigure', 'zero-spam' ),
173
  esc_url( ZEROSPAM_URL . 'product/premium/' )
174
  ),
175
  );
250
  public function plugin_row_meta( $plugin_meta, $plugin_file ) {
251
  if ( ZEROSPAM_PLUGIN_BASE === $plugin_file ) {
252
  $row_meta = array(
253
+ 'docs' => '<a href="https://github.com/bmarshall511/wordpress-zero-spam/wiki" aria-label="' . esc_attr( __( 'View Documentation', 'zero-spam' ) ) . '" target="_blank">' . __( 'Docs & FAQs', 'zero-spam' ) . '</a>',
254
  );
255
 
256
  $plugin_meta = array_merge( $plugin_meta, $row_meta );
276
  $footer_text = sprintf(
277
  /* translators: 1: Elementor, 2: Link to plugin review */
278
  __( 'Enjoyed %1$s? Please leave us a %2$s rating. We really appreciate your support!', 'zero-spam' ),
279
+ '<strong>' . __( 'Zero Spam for WordPress', 'zero-spam' ) . '</strong>',
280
  '<a href="https://wordpress.org/plugins/zero-spam/#reviews" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
281
  );
282
  }
core/admin/class-dashboard.php CHANGED
@@ -17,6 +17,13 @@ defined( 'ABSPATH' ) || die();
17
  */
18
  class Dashboard {
19
 
 
 
 
 
 
 
 
20
  /**
21
  * Constructor
22
  */
@@ -36,27 +43,11 @@ class Dashboard {
36
  * Block IP handler
37
  */
38
  public function block_ip() {
39
- $url = parse_url( sanitize_url( $_POST['redirect'] ) );
40
-
41
- $url['query'] = str_replace(
42
- array(
43
- 'zerospam-success=1',
44
- 'zerospam-error=1',
45
- 'zerospam-error=2',
46
- 'zerospam-error=3',
47
- 'zerospam-error=4',
48
- 'zerospam-error=5',
49
- 'zerospam-error=6',
50
- 'zerospam-error=7',
51
- ),
52
- '',
53
- $url['query']
54
- );
55
-
56
- $url = $url['scheme'] . '://' . $url['host'] . ( ! empty( $url['port'] ) ? ':' . $url['port'] : '' ) . $url['path'] . '?' . $url['query'];
57
 
58
  if ( ! isset( $_POST['zerospam'] ) || ! wp_verify_nonce( $_POST['zerospam'], 'zerospam' ) ) {
59
- wp_redirect( $url . '&zerospam-error=1' );
60
  exit;
61
  }
62
 
@@ -69,8 +60,10 @@ class Dashboard {
69
 
70
  // Blocking by custom key.
71
  if ( ! empty( $_POST['key_type'] ) ) {
 
 
72
  if ( empty( $_POST['blocked_key'] ) ) {
73
- wp_safe_redirect( $url . '&zerospam-error=6' );
74
  exit;
75
  }
76
 
@@ -79,7 +72,7 @@ class Dashboard {
79
  }
80
 
81
  if ( empty( $record['user_ip'] ) && empty( $record['key_type'] ) ) {
82
- wp_safe_redirect( $url . '&zerospam-error=7' );
83
  exit;
84
  }
85
 
@@ -90,17 +83,17 @@ class Dashboard {
90
 
91
 
92
  if ( ! empty( $record['user_ip'] ) && ! rest_is_ip_address( $record['user_ip'] ) ) {
93
- wp_safe_redirect( $url . '&zerospam-error=1' );
94
  exit;
95
  }
96
 
97
  if ( ! $record['blocked_type'] ) {
98
- wp_safe_redirect( $url . '&zerospam-error=2' );
99
  exit;
100
  }
101
 
102
  if ( 'temporary' === $record['blocked_type'] && ! $record['end_block'] ) {
103
- wp_safe_redirect( $url . '&zerospam-error=5' );
104
  exit;
105
  }
106
 
@@ -115,19 +108,19 @@ class Dashboard {
115
  }
116
 
117
  if ( 'temporary' === $record['blocked_type'] && ! $record['end_block'] ) {
118
- wp_safe_redirect( $url . '&error=3' );
119
  exit;
120
  }
121
 
122
- if ( ! ZeroSpam\Includes\DB::blocked( $record ) ) {
123
- wp_safe_redirect( $url . '&zerospam-error=4' );
124
  exit;
125
  }
126
 
127
  // Add the the .htaccess file.
128
  \ZeroSpam\Core\Utilities::refresh_htaccess();
129
 
130
- wp_safe_redirect( $url . '&zerospam-success=1' );
131
  exit;
132
  }
133
 
@@ -152,245 +145,209 @@ class Dashboard {
152
  if ( ! current_user_can( 'manage_options' ) ) {
153
  return;
154
  }
155
- ?>
156
- <div class="wrap">
157
- <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
158
- <?php require ZEROSPAM_PATH . 'includes/templates/admin-callout.php'; ?>
159
-
160
- <?php if ( ! empty( $_GET['zerospam-error'] ) ): ?>
161
- <div class="notice notice-error is-dismissible">
162
- <p><strong>
163
- <?php
164
- switch( intval( $_GET['zerospam-error'] ) ) :
165
- case 1:
166
- esc_html_e( 'Please enter a valid IP address.', 'zero-spam' );
167
- break;
168
- case 2:
169
- esc_html_e( 'Please select a valid type.', 'zero-spam' );
170
- break;
171
- case 3:
172
- esc_html_e( 'Please select a date & time when the temporary block should end.', 'zero-spam' );
173
- break;
174
- case 4:
175
- esc_html_e( 'There was a problem adding the record to the database. Please try again.', 'zero-spam' );
176
- break;
177
- case 5:
178
- esc_html_e( 'Temporary blocks require an end date.', 'zero-spam' );
179
- break;
180
- case 6:
181
- esc_html_e( 'You must enter a valid location key (ex. US, TX, etc.).', 'zero-spam' );
182
- break;
183
- case 7:
184
- esc_html_e( 'Missing required fields. Please try again.', 'zero-spam' );
185
- break;
186
- endswitch;
187
- ?>
188
- </strong></p>
189
- <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'zero-spam' ); ?></span></button>
190
- </div>
191
- <?php elseif ( ! empty( $_GET['zerospam-success'] ) ): ?>
192
- <div class="notice notice-success is-dismissible">
193
- <p><strong><?php _e( 'The blocked record has been successfully added.', 'wpzerospam' ); ?></strong></p>
194
- <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'zero-spam' ); ?>.</span></button>
195
- </div>
196
- <?php endif; ?>
197
 
198
- <?php
199
- $active_tab = 'stats';
200
- if ( ! empty( $_REQUEST['tab'] ) ) {
201
- $active_tab = sanitize_text_field( $_REQUEST['tab'] );
202
- }
203
- ?>
204
- <div class="nav-tab-wrapper">
205
- <a id="zerospam-settings-tab-stats" class="nav-tab<?php if ( 'stats' === $active_tab ) : ?> nav-tab-active<?php endif; ?>" href="<?php echo esc_url( admin_url( 'index.php?page=wordpress-zero-spam-dashboard&tab=stats' ) ); ?>"><?php echo __( 'Statistics', 'zero-spam' ); ?></a>
206
- <a id="zerospam-settings-tab-log" class="nav-tab<?php if ( 'log' === $active_tab ) : ?> nav-tab-active<?php endif; ?>" href="<?php echo esc_url( admin_url( 'index.php?page=wordpress-zero-spam-dashboard&tab=log' ) ); ?>"><?php echo __( 'Log', 'zero-spam' ); ?></a>
207
- <a id="zerospam-settings-tab-blocked-ips" class="nav-tab<?php if ( 'blocked' === $active_tab ) : ?> nav-tab-active<?php endif; ?>" href="<?php echo esc_url( admin_url( 'index.php?page=wordpress-zero-spam-dashboard&tab=blocked' ) ); ?>"><?php echo __( 'Blocked IPs', 'zero-spam' ); ?></a>
208
- <a id="zerospam-settings-tab-blocked-locations" class="nav-tab<?php if ( 'blocked-locations' === $active_tab ) : ?> nav-tab-active<?php endif; ?>" href="<?php echo esc_url( admin_url( 'index.php?page=wordpress-zero-spam-dashboard&tab=blocked-locations' ) ); ?>"><?php echo __( 'Blocked Locations', 'zero-spam' ); ?></a>
209
- </div>
210
 
211
- <div class="zerospam-tabs">
212
- <?php
213
- if ( 'stats' === $active_tab ) :
214
- $entries = ZeroSpam\Includes\DB::query( 'log' );
215
-
216
- if ( 'enabled' === ZeroSpam\Core\Settings::get_settings( 'log_blocked_ips' ) ) :
217
- echo '<div class="zerospam-modules">';
218
-
219
- echo '<div class="zerospam-module zerospam-module-map">';
220
- echo sprintf(
221
- wp_kses(
222
- __( '<h3>Detections World Map</h3>', 'zero-spam' ),
223
- array(
224
- 'h3' => array(),
225
- )
226
- )
227
- );
228
- require ZEROSPAM_PATH . 'includes/templates/admin-map.php';
229
- echo '</div>';
230
-
231
- ?>
232
- <div class="zerospam-module zerospam-module-ip">
233
- <h3><?php esc_html_e( 'Most Detections by IP Address', 'zero-spam' ); ?></h3>
234
- <?php require ZEROSPAM_PATH . 'includes/templates/admin-ips.php'; ?>
235
- </div>
236
 
237
- <div class="zerospam-module zerospam-module-pie">
238
- <h3><?php esc_html_e( 'Detections by Location', 'zero-spam' ); ?></h3>
239
- <?php require ZEROSPAM_PATH . 'includes/templates/admin-pie.php'; ?>
240
- </div>
241
-
242
- <div class="zerospam-module zerospam-module-line-chart">
243
- <h3><?php esc_html_e( 'Detection History', 'zero-spam' ); ?></h3>
244
- <?php require ZEROSPAM_PATH . 'includes/templates/admin-line-chart.php'; ?>
245
- </div>
246
- <?php
247
-
248
- echo '</div>';
249
- else :
250
- ?>
251
- <div class="zerospam-notice">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  <?php
253
  echo sprintf(
254
  wp_kses(
255
  /* translators: %s: url */
256
- __( 'Zero Spam for WordPress logging is currently <strong>disabled</strong>. It can be enabled on the <a href="%s">settings page</a>.', 'zero-spam' ),
257
  array(
258
  'strong' => array(),
259
  'a' => array(
 
260
  'href' => array(),
 
261
  ),
262
  )
263
  ),
264
- esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) )
265
  );
266
  ?>
267
  </div>
268
- <?php
269
- endif;
270
- endif;
271
- ?>
272
-
273
- <?php if ( 'log' === $active_tab ) : ?>
274
- <div id="tab-log" class="zerospam-tab is-active">
275
- <?php if ( 'enabled' === ZeroSpam\Core\Settings::get_settings( 'log_blocked_ips' ) ) : ?>
 
 
276
 
277
- <h2><?php echo __( 'Zero Spam for WordPress Log', 'zero-spam' ); ?></h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  <?php
279
- $table_data = new ZeroSpam\Core\Admin\Tables\LogTable();
 
 
280
  $table_data->prepare_items();
281
  ?>
282
- <form id="zerospam-log-table" method="post">
283
  <?php wp_nonce_field( 'zerospam_nonce', 'zerospam_nonce' ); ?>
284
  <input type="hidden" name="paged" value="1" />
285
  <?php $table_data->search_box( __( 'Search IPs', 'zero-spam' ), 'search-ip' ); ?>
286
  <?php $table_data->display(); ?>
287
  </form>
288
-
289
- <?php else : ?>
290
- <div class="zerospam-notice">
291
- <?php
 
292
  echo sprintf(
293
  wp_kses(
294
  /* translators: %s: url */
295
- __( 'Zero Spam for WordPress logging is currently <strong>disabled</strong>. It can be enabled on the <a href="%s">settings page</a>.', 'zero-spam' ),
296
  array(
297
  'strong' => array(),
298
  'a' => array(
 
299
  'href' => array(),
 
300
  ),
301
  )
302
  ),
303
- esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) )
304
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  ?>
306
- </div>
307
- <?php endif; ?>
308
- </div>
309
- <?php endif; ?>
310
-
311
- <?php if ( 'blocked' === $active_tab ) : ?>
312
- <div id="tab-blocked-ips" class="zerospam-tab is-active">
313
- <h2><?php echo __( 'Blocked IPs', 'zero-spam' ); ?></h2>
314
- <?php
315
- $block_method = \ZeroSpam\Core\Settings::get_settings( 'block_method' );
316
- if ( ! empty( $block_method ) && 'php' !== $block_method ) :
317
- echo sprintf(
318
- wp_kses(
319
- /* translators: %s: url */
320
- __( '<p>When using .htaccess &amp; due to <a href="%s" target="_blank" rel="noreferrer noopener">character limit restrictions</a>, <strong>no more than 170 blocked IP addresses recommended</strong>.</p>', 'zero-spam' ),
321
- array(
322
- 'strong' => array(),
323
- 'a' => array(
324
- 'target' => array(),
325
- 'href' => array(),
326
- 'rel' => array(),
327
- ),
328
- )
329
- ),
330
- esc_url( 'https://httpd.apache.org/docs/current/en/configuring.html' ),
331
- );
332
- endif;
333
-
334
- $table_data = new ZeroSpam\Core\Admin\Tables\BlockedTable();
335
- $table_data->prepare_items();
336
- ?>
337
- <form id="zerospam-blocked-table" method="post">
338
- <?php wp_nonce_field( 'zerospam_nonce', 'zerospam_nonce' ); ?>
339
- <input type="hidden" name="paged" value="1" />
340
- <?php $table_data->search_box( __( 'Search IPs', 'zero-spam' ), 'search-ip' ); ?>
341
- <?php $table_data->display(); ?>
342
- </form>
343
- </div>
344
- <?php endif; ?>
345
-
346
- <?php if ( 'blocked-locations' === $active_tab ) : ?>
347
- <div id="tab-blocked-locations" class="zerospam-tab is-active">
348
- <h2><?php echo __( 'Blocked Locations', 'zero-spam' ); ?></h2>
349
- <?php
350
- if (
351
- ! ZeroSpam\Core\Settings::get_settings( 'ipstack_api' ) &&
352
- ! ZeroSpam\Core\Settings::get_settings( 'ipinfo_access_token' )
353
- ) {
354
- _e( '<strong>Blocking locations is currently disabled.</strong> A valid ipstack API key or IPinfo access token is required (defined in the plugin settings).', 'zero-spam' );
355
- }
356
-
357
- $table_data = new ZeroSpam\Core\Admin\Tables\BlockedLocations();
358
- $table_data->prepare_items();
359
- ?>
360
- <form id="zerospam-blocked-table" method="post">
361
- <?php wp_nonce_field( 'zerospam_nonce', 'zerospam_nonce' ); ?>
362
- <input type="hidden" name="paged" value="1" />
363
- <?php $table_data->search_box( __( 'Search IPs', 'zero-spam' ), 'search-ip' ); ?>
364
- <?php $table_data->display(); ?>
365
- </form>
366
- </div>
367
- <?php endif; ?>
368
  </div>
 
369
 
370
- <div class="zerospam-modal zerospam-modal-block" id="zerospam-block-ip">
371
- <button class="zerospam-close-modal" aria-label="<?php echo esc_attr( __( 'Close Modal', 'zero-spam' ) ); ?>"></button>
372
- <div class="zerospam-modal-details">
373
- <div class="zerospam-modal-title">
374
- <h3><?php echo __( 'Add/Update Blocked IP', 'zero-spam' ); ?></h3>
375
- </div>
376
- <div class="zerospam-modal-subtitle">
377
-
378
- </div>
379
 
 
 
 
380
  <?php require ZEROSPAM_PATH . 'includes/templates/admin-block-ip.php'; ?>
381
  </div>
382
  </div>
 
383
 
384
- <div class="zerospam-modal zerospam-modal-block" id="zerospam-block-location">
385
- <button class="zerospam-close-modal" aria-label="<?php echo esc_attr( __( 'Close Modal', 'zero-spam' ) ); ?>"></button>
386
- <div class="zerospam-modal-details">
387
- <div class="zerospam-modal-title">
388
- <h3><?php echo __( 'Add/Update Blocked Location', 'zero-spam' ); ?></h3>
389
- </div>
390
- <div class="zerospam-modal-subtitle">
391
-
392
- </div>
393
 
 
 
 
394
  <?php
395
  $location_form = true;
396
  require ZEROSPAM_PATH . 'includes/templates/admin-block-ip.php';
17
  */
18
  class Dashboard {
19
 
20
+ /**
21
+ * Base admin link
22
+ *
23
+ * @var string $base_admin_link Base admin link
24
+ */
25
+ public static $base_admin_link = 'index.php?page=wordpress-zero-spam-dashboard';
26
+
27
  /**
28
  * Constructor
29
  */
43
  * Block IP handler
44
  */
45
  public function block_ip() {
46
+ $base_admin_link = self::$base_admin_link;
47
+ $subview = 'blocked-ips';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  if ( ! isset( $_POST['zerospam'] ) || ! wp_verify_nonce( $_POST['zerospam'], 'zerospam' ) ) {
50
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Link expired, please try again.' );
51
  exit;
52
  }
53
 
60
 
61
  // Blocking by custom key.
62
  if ( ! empty( $_POST['key_type'] ) ) {
63
+ $subview = 'blocked-locations';
64
+
65
  if ( empty( $_POST['blocked_key'] ) ) {
66
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Missing block record key.' );
67
  exit;
68
  }
69
 
72
  }
73
 
74
  if ( empty( $record['user_ip'] ) && empty( $record['key_type'] ) ) {
75
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Missing record key.' );
76
  exit;
77
  }
78
 
83
 
84
 
85
  if ( ! empty( $record['user_ip'] ) && ! rest_is_ip_address( $record['user_ip'] ) ) {
86
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Invalid IP address.' );
87
  exit;
88
  }
89
 
90
  if ( ! $record['blocked_type'] ) {
91
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Missing block type.' );
92
  exit;
93
  }
94
 
95
  if ( 'temporary' === $record['blocked_type'] && ! $record['end_block'] ) {
96
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Missing block end date.' );
97
  exit;
98
  }
99
 
108
  }
109
 
110
  if ( 'temporary' === $record['blocked_type'] && ! $record['end_block'] ) {
111
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=Missing block end date.' );
112
  exit;
113
  }
114
 
115
+ if ( ! \ZeroSpam\Includes\DB::blocked( $record ) ) {
116
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=error&zerospam-msg=There was a problem adding the record, please try again.' );
117
  exit;
118
  }
119
 
120
  // Add the the .htaccess file.
121
  \ZeroSpam\Core\Utilities::refresh_htaccess();
122
 
123
+ wp_redirect( $base_admin_link . '&subview=' . $subview . '&zerospam-type=success&zerospam-msg=Record has been successfully added/updated.' );
124
  exit;
125
  }
126
 
145
  if ( ! current_user_can( 'manage_options' ) ) {
146
  return;
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
+ $base_admin_link = self::$base_admin_link;
 
 
 
 
 
 
 
 
 
 
 
150
 
151
+ // @codingStandardsIgnoreLine
152
+ $subview = ! empty( $_REQUEST['subview'] ) ? sanitize_text_field( $_REQUEST['subview'] ) : 'reports';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
 
154
+ ?>
155
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-header.php'; ?>
156
+ <div class="wrap">
157
+ <div class="zerospam-dashboard">
158
+ <div class="zerospam-dashboard__col">
159
+ <ul class="zerospam-dashboard__sections">
160
+ <li>
161
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=reports" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'reports' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
162
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-reports.svg" class="zerospam-dashboard__menu-icon" />
163
+ <?php esc_html_e( 'Dashboard', 'zero-spam' ); ?>
164
+ </a>
165
+ </li>
166
+ <li>
167
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=log" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'log' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
168
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-log.svg" class="zerospam-dashboard__menu-icon" />
169
+ <?php esc_html_e( 'Log', 'zero-spam' ); ?>
170
+ </a>
171
+ </li>
172
+ <li>
173
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=blocked-ips" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'blocked-ips' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
174
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-blocked.svg" class="zerospam-dashboard__menu-icon" />
175
+ <?php esc_html_e( 'Blocked IPs', 'zero-spam' ); ?>
176
+ </a>
177
+ </li>
178
+ <li>
179
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=blocked-locations" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'blocked-locations' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
180
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-location.svg" class="zerospam-dashboard__menu-icon" />
181
+ <?php esc_html_e( 'Blocked Locations', 'zero-spam' ); ?>
182
+ </a>
183
+ </li>
184
+ </ul>
185
+
186
+ <div class="zerospam-block" style="margin-top: 40px;">
187
+ <div class="zerospam-block__content">
188
  <?php
189
  echo sprintf(
190
  wp_kses(
191
  /* translators: %s: url */
192
+ __( '<p><strong>We want to hear from you!</strong> <a href="%1$s" target="_blank" rel="noreferrer noopener">Submit your review</a> for 10&#37; off a Zero Spam license.</p>', 'zero-spam' ),
193
  array(
194
  'strong' => array(),
195
  'a' => array(
196
+ 'target' => array(),
197
  'href' => array(),
198
+ 'rel' => array(),
199
  ),
200
  )
201
  ),
202
+ 'https://wordpress.org/support/plugin/zero-spam/reviews/?filter=5'
203
  );
204
  ?>
205
  </div>
206
+ </div>
207
+ </div>
208
+ <div class="zerospam-dashboard__col">
209
+ <?php if ( ! empty( $_REQUEST['zerospam-msg'] ) ) : ?>
210
+ <div class="zerospam-block zerospam-block--notice zerospam-block--<?php echo ! empty( $_REQUEST['zerospam-type'] ) ? esc_attr( $_REQUEST['zerospam-type'] ) : 'default' ?>">
211
+ <div class="zerospam-block__content">
212
+ <?php echo sanitize_text_field( wp_unslash( $_REQUEST['zerospam-msg'] ) ); ?>
213
+ </div>
214
+ </div>
215
+ <?php endif; ?>
216
 
217
+ <?php
218
+ $entries = \ZeroSpam\Includes\DB::query( 'log' );
219
+ switch ( $subview ) :
220
+ case 'reports':
221
+ ?>
222
+ <div class="zerospam-blocks">
223
+ <div class="zerospam-block zerospam-block--twitter">
224
+ <a class="twitter-timeline" data-height="350" href="https://twitter.com/ZeroSpamOrg?ref_src=twsrc%5Etfw">Tweets by ZeroSpamOrg</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
225
+ </div>
226
+
227
+ <div class="zerospam-block zerospam-block--facebook">
228
+ <iframe src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2Fzerospamorg&tabs=timeline&width=340&height=354&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true&appId=2704301689814493" width="340" height="354" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"></iframe>
229
+ </div>
230
+
231
+ <div class="zerospam-block zerospam-block--map">
232
+ <h3 class="zerospam-block__headline"><?php esc_html_e( 'Detections World Map', 'zero-spam' ); ?></h3>
233
+ <div class="zerospam-block__content">
234
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-map.php'; ?>
235
+ </div>
236
+ </div>
237
+
238
+ <div class="zerospam-block zerospam-block--list">
239
+ <h3 class="zerospam-block__headline"><?php esc_html_e( 'Most Detections by IP Address', 'zero-spam' ); ?></h3>
240
+ <div class="zerospam-block__content">
241
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-ips.php'; ?>
242
+ </div>
243
+ </div>
244
+
245
+ <div class="zerospam-block zerospam-block--list">
246
+ <h3 class="zerospam-block__headline"><?php esc_html_e( 'Detections by Location', 'zero-spam' ); ?></h3>
247
+ <div class="zerospam-block__content">
248
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-pie.php'; ?>
249
+ </div>
250
+ </div>
251
+
252
+ <div class="zerospam-block zerospam-block--map">
253
+ <h3 class="zerospam-block__headline"><?php esc_html_e( 'Detection History', 'zero-spam' ); ?></h3>
254
+ <div class="zerospam-block__content">
255
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-line-chart.php'; ?>
256
+ </div>
257
+ </div>
258
+ </div>
259
  <?php
260
+ break;
261
+ case 'log':
262
+ $table_data = new \ZeroSpam\Core\Admin\Tables\LogTable();
263
  $table_data->prepare_items();
264
  ?>
265
+ <form class="zerospam-table-form" method="post">
266
  <?php wp_nonce_field( 'zerospam_nonce', 'zerospam_nonce' ); ?>
267
  <input type="hidden" name="paged" value="1" />
268
  <?php $table_data->search_box( __( 'Search IPs', 'zero-spam' ), 'search-ip' ); ?>
269
  <?php $table_data->display(); ?>
270
  </form>
271
+ <?php
272
+ break;
273
+ case 'blocked-ips':
274
+ $block_method = \ZeroSpam\Core\Settings::get_settings( 'block_method' );
275
+ if ( ! empty( $block_method ) && 'php' !== $block_method ) :
276
  echo sprintf(
277
  wp_kses(
278
  /* translators: %s: url */
279
+ __( '<p>When using .htaccess &amp; due to <a href="%s" target="_blank" rel="noreferrer noopener">character limit restrictions</a>, <strong>no more than 170 blocked IP addresses recommended</strong>.</p>', 'zero-spam' ),
280
  array(
281
  'strong' => array(),
282
  'a' => array(
283
+ 'target' => array(),
284
  'href' => array(),
285
+ 'rel' => array(),
286
  ),
287
  )
288
  ),
289
+ esc_url( 'https://httpd.apache.org/docs/current/en/configuring.html' ),
290
  );
291
+ endif;
292
+
293
+ $table_data = new \ZeroSpam\Core\Admin\Tables\BlockedTable();
294
+ $table_data->prepare_items();
295
+ ?>
296
+ <form class="zerospam-table-form" method="post">
297
+ <?php wp_nonce_field( 'zerospam_nonce', 'zerospam_nonce' ); ?>
298
+ <input type="hidden" name="paged" value="1" />
299
+ <?php $table_data->search_box( __( 'Search IPs', 'zero-spam' ), 'search-ip' ); ?>
300
+ <?php $table_data->display(); ?>
301
+ </form>
302
+ <?php
303
+ break;
304
+ case 'blocked-locations':
305
+ if (
306
+ ! \ZeroSpam\Core\Settings::get_settings( 'ipstack_api' ) &&
307
+ ! \ZeroSpam\Core\Settings::get_settings( 'ipinfo_access_token' )
308
+ ) :
309
+ ?>
310
+ <div class="zerospam-block zerospam-block--error">
311
+ <div class="zerospam-block__content">
312
+ <?php _e( '<strong>Blocking locations is currently disabled.</strong> A valid ipstack API key or IPinfo access token is required.', 'zero-spam' ); ?>
313
+ </div>
314
+ </div>
315
+ <?php endif; ?>
316
+ <?php
317
+ $table_data = new \ZeroSpam\Core\Admin\Tables\BlockedLocations();
318
+ $table_data->prepare_items();
319
  ?>
320
+ <form class="zerospam-table-form" method="post">
321
+ <?php wp_nonce_field( 'zerospam_nonce', 'zerospam_nonce' ); ?>
322
+ <input type="hidden" name="paged" value="1" />
323
+ <?php $table_data->search_box( __( 'Search IPs', 'zero-spam' ), 'search-ip' ); ?>
324
+ <?php $table_data->display(); ?>
325
+ </form>
326
+ <?php
327
+ break;
328
+ endswitch;
329
+ ?>
330
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
  </div>
332
+ </div>
333
 
334
+ <div class="zerospam-modal zerospam-modal-block" id="zerospam-block-ip">
335
+ <button class="zerospam-close-modal" aria-label="<?php echo esc_attr( __( 'Close Modal', 'zero-spam' ) ); ?>"></button>
 
 
 
 
 
 
 
336
 
337
+ <div class="zerospam-block">
338
+ <h3 class="zerospam-block__headline"><?php echo __( 'Add/Update Blocked IP', 'zero-spam' ); ?></h3>
339
+ <div class="zerospam-block__content">
340
  <?php require ZEROSPAM_PATH . 'includes/templates/admin-block-ip.php'; ?>
341
  </div>
342
  </div>
343
+ </div>
344
 
345
+ <div class="zerospam-modal zerospam-modal-block" id="zerospam-block-location">
346
+ <button class="zerospam-close-modal" aria-label="<?php echo esc_attr( __( 'Close Modal', 'zero-spam' ) ); ?>"></button>
 
 
 
 
 
 
 
347
 
348
+ <div class="zerospam-block">
349
+ <h3 class="zerospam-block__headline"><?php echo __( 'Add/Update Blocked Location', 'zero-spam' ); ?></h3>
350
+ <div class="zerospam-block__content">
351
  <?php
352
  $location_form = true;
353
  require ZEROSPAM_PATH . 'includes/templates/admin-block-ip.php';
core/admin/class-settings.php CHANGED
@@ -14,6 +14,12 @@ defined( 'ABSPATH' ) || die();
14
  * Settings
15
  */
16
  class Settings {
 
 
 
 
 
 
17
 
18
  /**
19
  * Admin constructor
@@ -22,25 +28,13 @@ class Settings {
22
  add_action( 'admin_menu', array( $this, 'admin_menu' ) );
23
  add_action( 'admin_init', array( $this, 'register_settings' ) );
24
  add_action( 'admin_action_import_settings', array( $this, 'import_settings' ) );
25
-
26
- // @codingStandardsIgnoreLine
27
- if ( ! empty( $_REQUEST['zerospam-msg'] ) ) {
28
- add_action(
29
- 'admin_notices',
30
- function() {
31
- // @codingStandardsIgnoreLine
32
- add_settings_error( 'zerospam-notices', 'zerospam-msg', sanitize_text_field( wp_unslash( $_REQUEST['zerospam-msg'] ) ), 'success' );
33
- }
34
- );
35
- }
36
  }
37
 
38
  /**
39
  * Imports settings
40
  */
41
  public function import_settings() {
42
- $redirect = ! empty( $_POST['redirect'] ) ? esc_url( sanitize_text_field( wp_unslash( $_POST['redirect'] ) ) ) : get_site_url();
43
- $redirect = wp_parse_url( $redirect );
44
 
45
  $redirect['query'] = str_replace(
46
  array(
@@ -51,14 +45,16 @@ class Settings {
51
  $redirect['query']
52
  );
53
 
54
- $redirect = $redirect['scheme'] . '://' . $redirect['host'] . ( ! empty( $redirect['port'] ) ? ':' . $redirect['port'] : '' ) . $redirect['path'] . '?' . $redirect['query'];
55
 
56
  if ( isset( $_POST['zerospam'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['zerospam'] ) ), 'import_settings' ) ) {
57
  $settings_json = sanitize_text_field( wp_unslash( $_POST['settings'] ) ); // @codingStandardsIgnoreLine
58
  if ( ! empty( $settings_json ) ) {
59
  $settings = json_decode( $settings_json, true );
60
  if ( json_last_error() === JSON_ERROR_NONE ) {
61
- update_option( 'wpzerospam', $settings, true );
 
 
62
 
63
  wp_safe_redirect( $redirect . '&zerospam-success=1' );
64
  exit;
@@ -84,6 +80,8 @@ class Settings {
84
  * Processes nonce actions
85
  */
86
  public function process_nonce_actions() {
 
 
87
  if (
88
  ! empty( $_REQUEST['zerospam-action'] ) &&
89
  'autoconfigure' === $_REQUEST['zerospam-action'] &&
@@ -91,8 +89,8 @@ class Settings {
91
  ) {
92
  \ZeroSpam\Core\Settings::auto_configure();
93
 
94
- $message = __( 'WordPress Zero Spam has successfully been auto-configured with the recommended settings.', 'zero-spam' );
95
- $redirect_url = 'options-general.php?page=wordpress-zero-spam-settings&tab=settings&zerospam-msg=' . $message;
96
 
97
  wp_safe_redirect( $redirect_url );
98
  exit;
@@ -103,8 +101,8 @@ class Settings {
103
  ) {
104
  \ZeroSpam\Core\Settings::update_blocked_email_domains();
105
 
106
- $message = __( 'WordPress Zero Spam\'s blocked email domains have been successfully updated to the recommended.', 'zero-spam' );
107
- $redirect_url = 'options-general.php?page=wordpress-zero-spam-settings&tab=settings&zerospam-msg=' . $message;
108
 
109
  wp_safe_redirect( $redirect_url );
110
  exit;
@@ -115,8 +113,8 @@ class Settings {
115
  ) {
116
  self::regenerate_honeypot();
117
 
118
- $message = __( 'WordPress Zero Spam\'s honeypot ID has been successfully reset.', 'zero-spam' );
119
- $redirect_url = 'options-general.php?page=wordpress-zero-spam-settings&tab=settings&zerospam-msg=' . $message;
120
 
121
  wp_safe_redirect( $redirect_url );
122
  exit;
@@ -128,7 +126,7 @@ class Settings {
128
  \ZeroSpam\Core\Settings::update_disallowed_words();
129
 
130
  $message = __( 'WordPress\'s disallowed words list has been successfully updated to the recommended.', 'zero-spam' );
131
- $redirect_url = 'options-general.php?page=wordpress-zero-spam-settings&tab=settings&zerospam-msg=' . $message;
132
 
133
  wp_safe_redirect( $redirect_url );
134
  exit;
@@ -139,11 +137,35 @@ class Settings {
139
  ) {
140
  \ZeroSpam\Core\Utilities::delete_error_log();
141
 
142
- $message = __( 'WordPress Zero Spam\'s error log has been successfully deleted.', 'zero-spam' );
143
- $redirect_url = 'options-general.php?page=wordpress-zero-spam-settings&tab=error&zerospam-msg=' . $message;
144
 
145
  wp_safe_redirect( $redirect_url );
146
  exit;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  }
148
  }
149
 
@@ -169,6 +191,27 @@ class Settings {
169
  * @param array $input Input array.
170
  */
171
  public function settings_validation( $input ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  update_option( 'zerospam_configured', 1 );
173
 
174
  return $input;
@@ -178,83 +221,38 @@ class Settings {
178
  * Register settings
179
  */
180
  public function register_settings() {
181
- register_setting(
182
- 'wpzerospam',
183
- 'wpzerospam',
184
- array(
185
- 'sanitize_callback' => array( $this, 'settings_validation' ),
186
- )
187
- );
188
-
189
  foreach ( \ZeroSpam\Core\Settings::get_sections() as $key => $section ) {
 
 
 
 
 
 
 
 
190
  add_settings_section(
191
- 'zerospam_' . $key,
192
  $section['title'],
193
  array( $this, 'settings_section' ),
194
- 'wpzerospam'
195
  );
196
  }
197
 
198
  foreach ( \ZeroSpam\Core\Settings::get_settings() as $key => $setting ) {
199
- $options = array(
200
- 'label_for' => $key,
201
- 'type' => $setting['type'],
 
 
 
202
  );
203
 
204
- if ( ! empty( $setting['options'] ) ) {
205
- $options['options'] = $setting['options'];
206
- }
207
-
208
- if ( ! empty( $setting['value'] ) ) {
209
- $options['value'] = $setting['value'];
210
- }
211
-
212
- if ( ! empty( $setting['placeholder'] ) ) {
213
- $options['placeholder'] = $setting['placeholder'];
214
- }
215
-
216
- if ( ! empty( $setting['class'] ) ) {
217
- $options['class'] = $setting['class'];
218
- }
219
-
220
- if ( ! empty( $setting['desc'] ) ) {
221
- $options['desc'] = $setting['desc'];
222
- }
223
-
224
- if ( ! empty( $setting['suffix'] ) ) {
225
- $options['suffix'] = $setting['suffix'];
226
- }
227
-
228
- if ( ! empty( $setting['min'] ) ) {
229
- $options['min'] = $setting['min'];
230
- }
231
-
232
- if ( ! empty( $setting['max'] ) ) {
233
- $options['max'] = $setting['max'];
234
- }
235
-
236
- if ( ! empty( $setting['step'] ) ) {
237
- $options['step'] = $setting['step'];
238
- }
239
-
240
- if ( ! empty( $setting['html'] ) ) {
241
- $options['html'] = $setting['html'];
242
- }
243
-
244
- if ( ! empty( $setting['field_class'] ) ) {
245
- $options['field_class'] = $setting['field_class'];
246
- }
247
-
248
- if ( ! empty( $setting['multiple'] ) ) {
249
- $options['multiple'] = $setting['multiple'];
250
- }
251
-
252
  add_settings_field(
253
  $key,
254
  ! empty( $setting['title'] ) ? $setting['title'] : false,
255
  array( $this, 'settings_field' ),
256
- 'wpzerospam',
257
- 'zerospam_' . $setting['section'],
258
  $options
259
  );
260
  }
@@ -274,6 +272,26 @@ class Settings {
274
  * @param array $args Field arguments.
275
  */
276
  public function settings_field( $args ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
  switch ( $args['type'] ) {
278
  case 'html':
279
  echo wp_kses(
@@ -313,7 +331,7 @@ class Settings {
313
  ?>
314
  <textarea
315
  id="<?php echo esc_attr( $args['label_for'] ); ?>"
316
- name="wpzerospam[<?php echo esc_attr( $args['label_for'] ); ?>]"
317
  rows="5"
318
  <?php if ( ! empty( $args['field_class'] ) ) : ?>
319
  class="<?php echo esc_attr( $args['field_class'] ); ?>"
@@ -332,7 +350,7 @@ class Settings {
332
  ?>
333
  <input
334
  id="<?php echo esc_attr( $args['label_for'] ); ?>"
335
- name="wpzerospam[<?php echo esc_attr( $args['label_for'] ); ?>]"
336
  type="<?php echo esc_attr( $args['type'] ); ?>"
337
  <?php if ( ! empty( $args['value'] ) ) : ?>
338
  value="<?php echo esc_attr( $args['value'] ); ?>"
@@ -360,14 +378,13 @@ class Settings {
360
  return;
361
  }
362
 
363
- $name = 'wpzerospam[' . esc_attr( $args['label_for'] ) . ']';
364
  if ( ! empty( $args['multiple'] ) ) :
365
- $name = 'wpzerospam[' . esc_attr( $args['label_for'] ) . '][]';
366
  endif;
367
  ?>
368
  <select
369
  id="<?php echo esc_attr( $args['label_for'] ); ?>"
370
- name="<?php echo esc_attr( $name ); ?>"
371
  <?php if ( ! empty( $args['multiple'] ) ) : ?>
372
  multiple
373
  <?php endif; ?>
@@ -406,23 +423,21 @@ class Settings {
406
  return;
407
  }
408
 
 
409
  foreach ( $args['options'] as $key => $label ) {
410
  $selected = false;
411
- $name = 'wpzerospam[' . esc_attr( $args['label_for'] ) . ']';
412
  if ( count( $args['options'] ) > 1 && 'checkbox' === $args['type'] ) {
413
- $name .= '[' . esc_attr( $key ) . ']';
414
  }
415
 
416
  if ( ! empty( $args['value'] ) && $args['value'] == $key ) {
417
  $selected = true;
418
  }
419
-
420
  ?>
421
- <label for="<?php echo esc_attr( $args['label_for'] . $key ); ?>">
422
  <input
423
  type="<?php echo esc_attr( $args['type'] ); ?>"
424
  id="<?php echo esc_attr( $args['label_for'] . $key ); ?>"
425
- name="<?php echo esc_attr( $name ); ?>"
426
  value="<?php echo esc_attr( $key ); ?>"
427
  <?php if ( ! empty( $args['field_class'] ) ) : ?>
428
  class="<?php echo esc_attr( $args['field_class'] ); ?>"
@@ -431,25 +446,29 @@ class Settings {
431
  checked="checked"
432
  <?php endif; ?>
433
  />
434
- <?php
435
- echo wp_kses(
436
- $label,
437
- array(
438
- 'a' => array(
439
- 'target' => array(),
440
- 'href' => array(),
441
- 'class' => array(),
442
- 'rel' => array(),
443
- ),
444
- 'strong' => array(),
445
- 'b' => array(),
446
- 'code' => array(),
447
- )
448
- );
449
- ?>
450
- </label><br />
 
 
 
451
  <?php
452
  }
 
453
  break;
454
  }
455
 
@@ -470,22 +489,7 @@ class Settings {
470
  );
471
  }
472
 
473
- if ( ! empty( $args['desc'] ) ) {
474
- echo '<p class="description">' . wp_kses(
475
- $args['desc'],
476
- array(
477
- 'a' => array(
478
- 'target' => array(),
479
- 'href' => array(),
480
- 'class' => array(),
481
- 'rel' => array(),
482
- ),
483
- 'strong' => array(),
484
- 'b' => array(),
485
- 'code' => array(),
486
- )
487
- ) . '</p>';
488
- }
489
  }
490
 
491
  /**
@@ -496,49 +500,229 @@ class Settings {
496
  return;
497
  }
498
 
499
- $base_admin_link = 'options-general.php?page=wordpress-zero-spam-settings';
 
500
  // @codingStandardsIgnoreLine
501
- $current_tab = ! empty( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 'settings';
502
- $admin_tabs = array(
503
- 'settings' => array(
504
- 'title' => __( 'Settings', 'zero-spam' ),
505
- 'template' => 'settings',
506
- ),
507
- 'export' => array(
508
- 'title' => __( 'Export/Import Settings', 'zero-spam' ),
509
- 'template' => 'export',
510
- ),
511
- 'error' => array(
512
- 'title' => __( 'Error Log', 'zero-spam' ),
513
- 'template' => 'errors',
514
- ),
515
- );
516
  ?>
 
517
  <div class="wrap">
518
- <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
519
 
520
- <?php require ZEROSPAM_PATH . 'includes/templates/admin-callout.php'; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
521
 
522
- <nav class="nav-tab-wrapper" style="margin-bottom: 16px;">
523
- <?php
524
- foreach ( $admin_tabs as $key => $tab ) :
525
- $admin_url = admin_url( $base_admin_link . '&amp;tab=' . $key );
526
- $classes = array( 'nav-tab' );
527
 
528
- if ( $current_tab === $key ) :
529
- $classes[] = 'nav-tab-active';
530
- endif;
531
- ?>
532
- <a
533
- href="<?php echo esc_url( $admin_url ); ?>"
534
- class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"
535
- >
536
- <?php echo esc_html( $tab['title'] ); ?>
537
- </a>
538
- <?php endforeach; ?>
539
- </nav>
540
-
541
- <?php require ZEROSPAM_PATH . 'includes/templates/settings/' . $admin_tabs[ $current_tab ]['template'] . '.php'; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
542
  </div>
543
  <?php
544
  }
14
  * Settings
15
  */
16
  class Settings {
17
+ /**
18
+ * Base admin link
19
+ *
20
+ * @var string $base_admin_link Base admin link
21
+ */
22
+ public static $base_admin_link = 'options-general.php?page=wordpress-zero-spam-settings';
23
 
24
  /**
25
  * Admin constructor
28
  add_action( 'admin_menu', array( $this, 'admin_menu' ) );
29
  add_action( 'admin_init', array( $this, 'register_settings' ) );
30
  add_action( 'admin_action_import_settings', array( $this, 'import_settings' ) );
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  /**
34
  * Imports settings
35
  */
36
  public function import_settings() {
37
+ $base_admin_link = self::$base_admin_link;
 
38
 
39
  $redirect['query'] = str_replace(
40
  array(
45
  $redirect['query']
46
  );
47
 
48
+ $redirect = admin_url( "$base_admin_link&subview=export" );
49
 
50
  if ( isset( $_POST['zerospam'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['zerospam'] ) ), 'import_settings' ) ) {
51
  $settings_json = sanitize_text_field( wp_unslash( $_POST['settings'] ) ); // @codingStandardsIgnoreLine
52
  if ( ! empty( $settings_json ) ) {
53
  $settings = json_decode( $settings_json, true );
54
  if ( json_last_error() === JSON_ERROR_NONE ) {
55
+ foreach ( $settings as $module => $module_settings ) {
56
+ update_option( "zero-spam-$module", $module_settings, true );
57
+ }
58
 
59
  wp_safe_redirect( $redirect . '&zerospam-success=1' );
60
  exit;
80
  * Processes nonce actions
81
  */
82
  public function process_nonce_actions() {
83
+ $base_admin_link = self::$base_admin_link;
84
+
85
  if (
86
  ! empty( $_REQUEST['zerospam-action'] ) &&
87
  'autoconfigure' === $_REQUEST['zerospam-action'] &&
89
  ) {
90
  \ZeroSpam\Core\Settings::auto_configure();
91
 
92
+ $message = __( 'Zero Spam for WordPress has successfully been auto-configured with the recommended settings.', 'zero-spam' );
93
+ $redirect_url = "$base_admin_link&subview=settings&zerospam-msg=$message&zerospam-type=success";
94
 
95
  wp_safe_redirect( $redirect_url );
96
  exit;
101
  ) {
102
  \ZeroSpam\Core\Settings::update_blocked_email_domains();
103
 
104
+ $message = __( 'Zero Spam for WordPress blocked email domains have been successfully updated.', 'zero-spam' );
105
+ $redirect_url = "$base_admin_link&subview=settings&zerospam-msg=$message&zerospam-type=success";
106
 
107
  wp_safe_redirect( $redirect_url );
108
  exit;
113
  ) {
114
  self::regenerate_honeypot();
115
 
116
+ $message = __( 'Zero Spam for WordPress honeypot ID has been successfully reset.', 'zero-spam' );
117
+ $redirect_url = "$base_admin_link&subview=settings&zerospam-msg=$message&zerospam-type=success";
118
 
119
  wp_safe_redirect( $redirect_url );
120
  exit;
126
  \ZeroSpam\Core\Settings::update_disallowed_words();
127
 
128
  $message = __( 'WordPress\'s disallowed words list has been successfully updated to the recommended.', 'zero-spam' );
129
+ $redirect_url = 'options-general.php?page=wordpress-zero-spam-settings&tab=settings&zerospam-type=success&zerospam-msg=' . $message;
130
 
131
  wp_safe_redirect( $redirect_url );
132
  exit;
137
  ) {
138
  \ZeroSpam\Core\Utilities::delete_error_log();
139
 
140
+ $message = __( 'Zero Spam for WordPress error log has been successfully deleted.', 'zero-spam' );
141
+ $redirect_url = "$base_admin_link&subview=errors&zerospam-type=success&zerospam-msg=$message";
142
 
143
  wp_safe_redirect( $redirect_url );
144
  exit;
145
+ } elseif (
146
+ ! empty( $_REQUEST['zerospam-action'] ) &&
147
+ 'delete-location-block' === $_REQUEST['zerospam-action'] &&
148
+ check_admin_referer( 'delete-location-block', 'zero-spam' )
149
+ ) {
150
+ $block_id = sanitize_text_field( $_REQUEST['zerospam-id'] );
151
+ \ZeroSpam\Includes\DB::delete( 'blocked', 'blocked_id', $block_id );
152
+
153
+ $message = __( 'The record has been successfully deleted.', 'zero-spam' );
154
+ $redirect_url = "index.php?page=wordpress-zero-spam-dashboard&subview=blocked-locations&zerospam-msg=$message&zerospam-type=success";
155
+
156
+ wp_safe_redirect( $redirect_url );
157
+ } elseif (
158
+ ! empty( $_REQUEST['zerospam-action'] ) &&
159
+ 'delete-ip-block' === $_REQUEST['zerospam-action'] &&
160
+ check_admin_referer( 'delete-ip-block', 'zero-spam' )
161
+ ) {
162
+ $block_id = sanitize_text_field( $_REQUEST['zerospam-id'] );
163
+ \ZeroSpam\Includes\DB::delete( 'blocked', 'blocked_id', $block_id );
164
+
165
+ $message = __( 'The record has been successfully deleted.', 'zero-spam' );
166
+ $redirect_url = "index.php?page=wordpress-zero-spam-dashboard&subview=blocked-ips&zerospam-msg=$message&zerospam-type=success";
167
+
168
+ wp_safe_redirect( $redirect_url );
169
  }
170
  }
171
 
191
  * @param array $input Input array.
192
  */
193
  public function settings_validation( $input ) {
194
+ // If the Zero Spam license has been submitted, verify it.
195
+ if ( ! empty( $input['zerospam_license'] ) ) {
196
+ $license = \ZeroSpam\Modules\Zero_Spam::get_license( $input['zerospam_license'] );
197
+ if ( empty( $license['license_key'] ) ) {
198
+ \ZeroSpam\Core\Utilities::log( 'Zero Spam: invalid license key entered.');
199
+ $input['zerospam_license'] = __( 'Invalid license entered.', 'zero-spam' );
200
+ $input['zerospam'] = false;
201
+ }
202
+ }
203
+
204
+ // Check if the correct version of Gravity Forms is installed.
205
+ if ( ! empty( $input['verify_gravityforms'] ) && 'enabled' == $input['verify_gravityforms'] ) {
206
+ $data = get_plugin_data( ABSPATH . 'wp-content/plugins/gravityforms/gravityforms.php' );
207
+ if ( ! empty( $data['Version'] ) ) {
208
+ if ( ! version_compare( $data['Version'], '2.7', '>=' ) ) {
209
+ \ZeroSpam\Core\Utilities::log( 'Gravity Forms: requires at least v2.7');
210
+ $input['verify_gravityforms'] = false;
211
+ }
212
+ }
213
+ }
214
+
215
  update_option( 'zerospam_configured', 1 );
216
 
217
  return $input;
221
  * Register settings
222
  */
223
  public function register_settings() {
 
 
 
 
 
 
 
 
224
  foreach ( \ZeroSpam\Core\Settings::get_sections() as $key => $section ) {
225
+ register_setting(
226
+ "zero-spam-$key", // Group
227
+ "zero-spam-$key", // Name
228
+ array(
229
+ 'sanitize_callback' => array( $this, 'settings_validation' ),
230
+ )
231
+ );
232
+
233
  add_settings_section(
234
+ 'zero-spam-' . $key,
235
  $section['title'],
236
  array( $this, 'settings_section' ),
237
+ 'zero-spam-' . $key // Page
238
  );
239
  }
240
 
241
  foreach ( \ZeroSpam\Core\Settings::get_settings() as $key => $setting ) {
242
+ $options = array_merge(
243
+ array(
244
+ 'label_for' => $key,
245
+ 'type' => $setting['type'],
246
+ ),
247
+ $setting
248
  );
249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  add_settings_field(
251
  $key,
252
  ! empty( $setting['title'] ) ? $setting['title'] : false,
253
  array( $this, 'settings_field' ),
254
+ 'zero-spam-' . $setting['module'], // Page
255
+ 'zero-spam-' . $setting['module'], // Section
256
  $options
257
  );
258
  }
272
  * @param array $args Field arguments.
273
  */
274
  public function settings_field( $args ) {
275
+ $setting_name = 'zero-spam-' . $args['module'] .'[' . $args['label_for'] . ']';
276
+
277
+ if ( ! empty( $args['desc'] ) ) {
278
+ echo '<p class="description">' . wp_kses(
279
+ $args['desc'],
280
+ array(
281
+ 'a' => array(
282
+ 'target' => array(),
283
+ 'href' => array(),
284
+ 'class' => array(),
285
+ 'rel' => array(),
286
+ ),
287
+ 'strong' => array(),
288
+ 'b' => array(),
289
+ 'code' => array(),
290
+ )
291
+ ) . '</p>';
292
+ }
293
+
294
+ echo '<div class="zerospam-form-field-container">';
295
  switch ( $args['type'] ) {
296
  case 'html':
297
  echo wp_kses(
331
  ?>
332
  <textarea
333
  id="<?php echo esc_attr( $args['label_for'] ); ?>"
334
+ name="<?php echo esc_attr( $setting_name ); ?>"
335
  rows="5"
336
  <?php if ( ! empty( $args['field_class'] ) ) : ?>
337
  class="<?php echo esc_attr( $args['field_class'] ); ?>"
350
  ?>
351
  <input
352
  id="<?php echo esc_attr( $args['label_for'] ); ?>"
353
+ name="<?php echo esc_attr( $setting_name ); ?>"
354
  type="<?php echo esc_attr( $args['type'] ); ?>"
355
  <?php if ( ! empty( $args['value'] ) ) : ?>
356
  value="<?php echo esc_attr( $args['value'] ); ?>"
378
  return;
379
  }
380
 
 
381
  if ( ! empty( $args['multiple'] ) ) :
382
+ $setting_name .= '[]';
383
  endif;
384
  ?>
385
  <select
386
  id="<?php echo esc_attr( $args['label_for'] ); ?>"
387
+ name="<?php echo esc_attr( $setting_name ); ?>"
388
  <?php if ( ! empty( $args['multiple'] ) ) : ?>
389
  multiple
390
  <?php endif; ?>
423
  return;
424
  }
425
 
426
+ echo '<div class="zerospam-form-field-group">';
427
  foreach ( $args['options'] as $key => $label ) {
428
  $selected = false;
 
429
  if ( count( $args['options'] ) > 1 && 'checkbox' === $args['type'] ) {
430
+ $setting_name .= '[' . $key . ']';
431
  }
432
 
433
  if ( ! empty( $args['value'] ) && $args['value'] == $key ) {
434
  $selected = true;
435
  }
 
436
  ?>
 
437
  <input
438
  type="<?php echo esc_attr( $args['type'] ); ?>"
439
  id="<?php echo esc_attr( $args['label_for'] . $key ); ?>"
440
+ name="<?php echo esc_attr( $setting_name ); ?>"
441
  value="<?php echo esc_attr( $key ); ?>"
442
  <?php if ( ! empty( $args['field_class'] ) ) : ?>
443
  class="<?php echo esc_attr( $args['field_class'] ); ?>"
446
  checked="checked"
447
  <?php endif; ?>
448
  />
449
+
450
+ <label for="<?php echo esc_attr( $args['label_for'] . $key ); ?>">
451
+ <?php
452
+ echo wp_kses(
453
+ $label,
454
+ array(
455
+ 'a' => array(
456
+ 'target' => array(),
457
+ 'href' => array(),
458
+ 'class' => array(),
459
+ 'rel' => array(),
460
+ ),
461
+ 'strong' => array(),
462
+ 'b' => array(),
463
+ 'code' => array(),
464
+ )
465
+ );
466
+ ?>
467
+ </label>
468
+ <br />
469
  <?php
470
  }
471
+ echo '</div>';
472
  break;
473
  }
474
 
489
  );
490
  }
491
 
492
+ echo '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
  }
494
 
495
  /**
500
  return;
501
  }
502
 
503
+ $base_admin_link = self::$base_admin_link;
504
+
505
  // @codingStandardsIgnoreLine
506
+ $subview = ! empty( $_REQUEST['subview'] ) ? sanitize_text_field( $_REQUEST['subview'] ) : 'settings';
507
+
508
+ $sections = apply_filters( 'zerospam_setting_sections', [] );
 
 
 
 
 
 
 
 
 
 
 
 
509
  ?>
510
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-header.php'; ?>
511
  <div class="wrap">
512
+ <div class="zerospam-dashboard">
513
+ <div class="zerospam-dashboard__col">
514
+ <ul class="zerospam-dashboard__sections">
515
+ <li>
516
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=settings" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'settings' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
517
+
518
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-settings.svg" class="zerospam-dashboard__menu-icon" />
519
+ <?php esc_html_e( 'Settings', 'zero-spam' ); ?>
520
+ </a>
521
+ </li>
522
+ <?php foreach ( $sections as $key => $section ) : ?>
523
+ <li>
524
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=$key" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( $key === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
525
+ <?php if ( ! empty( $section['icon'] ) ) : ?>
526
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ) . $section['icon']; ?>" class="zerospam-dashboard__menu-icon" />
527
+ <?php endif; ?>
528
+ <?php echo $section['title']; ?>
529
+ </a>
530
+ </li>
531
+ <?php endforeach; ?>
532
+ <li>
533
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=export" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'export' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
534
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-export.svg" class="zerospam-dashboard__menu-icon" />
535
+ <?php esc_html_e( 'Import/Export Settings', 'zero-spam' ); ?>
536
+ </a>
537
+ </li>
538
+ <li>
539
+ <a href="<?php echo esc_url( admin_url( "$base_admin_link&subview=errors" ) ); ?>" class="zerospam-dashboard__menu-link <?php if ( 'errors' === $subview ) : echo 'zerospam-dashboard__menu-link--active'; endif; ?>">
540
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-error.svg" class="zerospam-dashboard__menu-icon" />
541
+ <?php esc_html_e( 'Error Log', 'zero-spam' ); ?>
542
+ </a>
543
+ </li>
544
+ </ul>
545
+ </div>
546
+ <div class="zerospam-dashboard__col">
547
+ <?php if ( ! empty( $_REQUEST['zerospam-msg'] ) ) : ?>
548
+ <div class="zerospam-block zerospam-block--notice zerospam-block--<?php echo ! empty( $_REQUEST['zerospam-type'] ) ? esc_attr( $_REQUEST['zerospam-type'] ) : 'default' ?>">
549
+ <div class="zerospam-block__content">
550
+ <?php echo sanitize_text_field( wp_unslash( $_REQUEST['zerospam-msg'] ) ); ?>
551
+ </div>
552
+ </div>
553
+ <?php endif; ?>
554
 
555
+ <?php
556
+ foreach ( $sections as $key => $section ) :
557
+ if ( $key === $subview && ! empty( $section['supports'] ) ) :
558
+ ?>
559
+ <div class="zerospam-block">
560
+ <div class="zerospam-block__content zerospam-block__content--supports">
561
+ <strong><?php _e( 'Detection Support', 'zero-spam' ); ?>:</strong>
562
+ <?php
563
+ foreach ( $section['supports'] as $k => $s ) :
564
+ switch ( $s ) :
565
+ case 'honeypot':
566
+ echo '<img class="zerospam-small-icon" src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-honeypot.svg" alt="' . esc_attr( __( 'Honeypot', 'zero-spam' ) ) . '" />';
567
+ break;
568
+ case 'email':
569
+ echo '<img class="zerospam-small-icon" src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-email.svg" alt="' . esc_attr( __( 'Email', 'zero-spam' ) ) . '" />';
570
+ break;
571
+ case 'davidwalsh':
572
+ echo '<img class="zerospam-small-icon" src="' . plugin_dir_url( ZEROSPAM ) . 'modules/davidwalsh/icon-david-walsh.png" alt="' . esc_attr( __( 'David Walsh', 'zero-spam' ) ) . '" />';
573
+ break;
574
+ case 'words':
575
+ echo '<img class="zerospam-small-icon" src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-words.svg" alt="' . esc_attr( __( 'Disallowed Words', 'zero-spam' ) ) . '" />';
576
+ break;
577
+ endswitch;
578
+
579
+ endforeach;
580
+ ?>
581
+ </div>
582
+ </div>
583
+ <?php
584
+ endif;
585
+ endforeach;
586
+ ?>
587
+
588
+ <?php if ( ! in_array( $subview, array( 'export', 'errors' ) ) ) : ?>
589
+ <?php
590
+ switch ( $subview ) :
591
+ case 'zerospam':
592
+
593
+ $license_key = \ZeroSpam\Core\Settings::get_settings( 'zerospam_license' );
594
+ $license_key_enabled = \ZeroSpam\Core\Settings::get_settings( 'zerospam' );
595
+ if ( ! $license_key || "enabled" !== $license_key_enabled ) :
596
+ ?>
597
+ <div class="zerospam-block zerospam-block--callout">
598
+ <div class="zerospam-block__content">
599
+ <div class="zerospam-block__grid">
600
+ <div class="zerospam-block__grid-column">
601
+ <?php echo sprintf(
602
+ wp_kses(
603
+ /* translators: %1s: Replaced with the Zero Spam URL, %2$s: Replaced with the DDoD attack wiki URL */
604
+ __( '<h3>Super-charge your protection with a <a href="%1$s" target="_blank" rel="noopener noreferrer">Zero Spam license</a>!</h3><p>Enable enhanced protection with a Zero Spam API license — one of the largest, most comprehensive, constantly-growing global malicious IP and email databases available. Once enabled, all visitors will be checked against Zero Spam\'s blacklist and can help prevent <a href="%2$s" target="_blank" rel="noopener noreferrer">DDoS attacks</a> &amp; fraudsters looking to test stolen credit card numbers.</p><p>Zero Spam is comprised of a global detection network of over 30,000+ apps and sites that monitor traffic and usage in real-time to detect malicious activity. <a href="%2$s" target="_blank" rel="noopener noreferrer">Subscribe today</a> for enhanced protection.</p>', 'zero-spam' ),
605
+ array(
606
+ 'h3' => array(),
607
+ 'p' => array(),
608
+ 'a' => array(
609
+ 'href' => array(),
610
+ 'class' => array(),
611
+ 'rel' => array(),
612
+ ),
613
+ 'strong' => array(),
614
+ )
615
+ ),
616
+ esc_url( ZEROSPAM_URL . 'subscribe/' ),
617
+ esc_url( ZEROSPAM_URL . 'subscribe/' )
618
+ ); ?>
619
+ <p><a href="https://www.zerospam.org/subscribe/" target="_blank" rel="noreferrer noopener" class="button button-primary"><?php _e( 'Get a License', 'zero-spam' ); ?> →</a>
620
+ <a href="https://www.zerospam.org/" target="_blank" rel="noreferrer noopener" class="button"><?php _e( 'Learn More', 'zero-spam' ); ?> →</a></p>
621
+ </div>
622
+ <div class="zerospam-block__grid-column">
623
+ <ul class="zerospam-list zerospam-list--checks">
624
+ <li><?php _e( 'Real-time malicious IP monitoring', 'zero-spam' ); ?></li>
625
+ <li><?php _e( 'Block reported spammy email addresses', 'zero-spam' ); ?></li>
626
+ <li><?php _e( 'Helps prevent DDoS attacks', 'zero-spam' ); ?></li>
627
+ <li><?php _e( 'Detailed IP & email address reports', 'zero-spam' ); ?></li>
628
+ <li><?php _e( 'Helps prevents stolen credit card testing', 'zero-spam' ); ?></li>
629
+ </ul>
630
+ </div>
631
+ </div>
632
+ </div>
633
+ </div>
634
+ <?php
635
+ endif;
636
+ break;
637
+ endswitch;
638
+ ?>
639
 
640
+ <form action="options.php" method="post" class="zerospam-form">
641
+ <?php
642
+ // Output security fields for the registered setting "zero-spam".
643
+ settings_fields( "zero-spam-$subview" );
 
644
 
645
+ // Output setting sections and their fields.
646
+ do_settings_sections( "zero-spam-$subview" );
647
+
648
+ // Output save settings button.
649
+ submit_button( 'Save Settings →' );
650
+ ?>
651
+ </form>
652
+ <?php elseif( $subview === 'export' ) : ?>
653
+ <?php if ( ! empty( $_GET['zerospam-error'] ) ) : ?>
654
+ <div class="notice notice-error is-dismissible">
655
+ <p><strong>
656
+ <?php
657
+ switch( intval( $_GET['zerospam-error'] ) ) :
658
+ case 1:
659
+ esc_html_e( 'There was a problem importing the settings JSON. Please try again.', 'zero-spam' );
660
+ break;
661
+ endswitch;
662
+ ?>
663
+ </strong></p>
664
+ <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'zero-spam' ); ?></span></button>
665
+ </div>
666
+ <?php elseif ( ! empty( $_GET['zerospam-success'] ) ) : ?>
667
+ <div class="notice notice-success is-dismissible">
668
+ <p><strong><?php esc_html_e( 'The settings JSON has been successfully imported.', 'zero-spam' ); ?></strong></p>
669
+ <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'zero-spam' ); ?>.</span></button>
670
+ </div>
671
+ <?php endif; ?>
672
+
673
+ <div class="zerospam-form">
674
+ <h2><?php esc_html_e( 'Settings Import/Export', 'zero-spam' ); ?></h2>
675
+ <?php
676
+ $modules = \ZeroSpam\Core\Settings::get_settings_by_module();
677
+ foreach ( $modules as $module => $settings ) :
678
+ foreach ( $settings as $setting_key => $setting ) :
679
+ $modules[ $module ][ $setting_key ] = ! empty( $setting['value'] ) ? $setting['value'] : false;
680
+ endforeach;
681
+ endforeach;
682
+ ?>
683
+ <div class="zerospam-export-import-block">
684
+ <div class="zerospam-export-import-block-column">
685
+ <h4><?php esc_html_e( 'Export Settings', 'zero-spam' ); ?></h4>
686
+ <textarea readonly class="large-text code" rows="25"><?php echo wp_json_encode( $modules ); ?></textarea>
687
+ </div>
688
+ <div class="zerospam-export-import-block-column">
689
+ <h4><?php esc_html_e( 'Import Settings', 'zero-spam' ); ?></h4>
690
+ <form method="post" action="<?php echo esc_url( admin_url( 'admin.php' ) ); ?>" class="zerospam-import-settings-form">
691
+ <?php wp_nonce_field( 'import_settings', 'zerospam' ); ?>
692
+ <input type="hidden" name="action" value="import_settings" />
693
+ <textarea class="large-text code" name="settings" rows="25"></textarea>
694
+ <input type="submit" class="button button-primary" value="<?php esc_html_e( 'Import Settings →', 'zero-spam' ); ?>" />
695
+ </form>
696
+ </div>
697
+ </div>
698
+ </div>
699
+ <?php
700
+ elseif( $subview === 'errors' ) :
701
+ $log = \ZeroSpam\Core\Utilities::get_error_log();
702
+ if ( ! $log ) :
703
+ ?>
704
+ <div class="zerospam-block">
705
+ <div class="zerospam-block__content">
706
+ <?php _e( 'No errors have been reported.', 'zero-spam' ); ?>
707
+ </div>
708
+ </div>
709
+ <?php
710
+ else:
711
+ ?>
712
+ <div class="zerospam-form">
713
+ <textarea readonly class="large-text code" rows="30"><?php echo esc_html( $log ); ?></textarea>
714
+ <a
715
+ href="<?php echo esc_url( wp_nonce_url( admin_url( "$base_admin_link&zerospam-action=delete-error-log" ), 'delete-error-log', 'zero-spam' ) ); ?>"
716
+ class="button button-primary"
717
+ >
718
+ <?php esc_html_e( 'Clear Error Log →', 'zero-spam' ); ?>
719
+ </a>
720
+ </div>
721
+ <?php endif; ?>
722
+
723
+ <?php endif; ?>
724
+ </div>
725
+ </div>
726
  </div>
727
  <?php
728
  }
core/admin/tables/class-blockedlocations.php CHANGED
@@ -25,8 +25,8 @@ class BlockedLocations extends WP_List_Table {
25
  global $status, $page;
26
 
27
  $args = array(
28
- 'singular' => __( 'WordPress Zero Spam Blocked Location', 'zero-spam' ),
29
- 'plural' => __( 'WordPress Zero Spam Blocked Locations', 'zero-spam' ),
30
  );
31
  parent::__construct( $args );
32
  }
@@ -51,7 +51,7 @@ class BlockedLocations extends WP_List_Table {
51
  return 'N/A';
52
  }
53
 
54
- $date_time_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
55
  return get_date_from_gmt( gmdate( 'Y-m-d H:i:s', strtotime( $item[ $column_name ] ) ), $date_time_format );
56
  break;
57
  case 'location':
@@ -77,9 +77,18 @@ class BlockedLocations extends WP_List_Table {
77
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['start_block'] ) ) ); ?>"
78
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['end_block'] ) ) ); ?>"
79
  data-type="<?php echo esc_attr( $item['blocked_type'] ); ?>"
 
80
  >
81
- <?php esc_html_e( 'Update Block', 'zero-spam' ); ?>
82
  </button>
 
 
 
 
 
 
 
 
83
  <?php
84
  return ob_get_clean();
85
  break;
25
  global $status, $page;
26
 
27
  $args = array(
28
+ 'singular' => __( 'Zero Spam for WordPress Blocked Location', 'zero-spam' ),
29
+ 'plural' => __( 'Zero Spam for WordPress Blocked Locations', 'zero-spam' ),
30
  );
31
  parent::__construct( $args );
32
  }
51
  return 'N/A';
52
  }
53
 
54
+ $date_time_format = 'm/d/Y';
55
  return get_date_from_gmt( gmdate( 'Y-m-d H:i:s', strtotime( $item[ $column_name ] ) ), $date_time_format );
56
  break;
57
  case 'location':
77
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['start_block'] ) ) ); ?>"
78
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['end_block'] ) ) ); ?>"
79
  data-type="<?php echo esc_attr( $item['blocked_type'] ); ?>"
80
+ aria-label="<?php echo esc_attr( __( 'Update Block', 'zero-spam' ) ); ?>"
81
  >
82
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-edit.svg" width="13" />
83
  </button>
84
+
85
+ <a
86
+ class="button"
87
+ aria-label="<?php echo esc_attr( __( 'Delete block', 'zero-spam' ) ); ?>"
88
+ href="<?php echo wp_nonce_url( admin_url( 'index.php?page=wordpress-zero-spam-dashboard&zerospam-action=delete-location-block&zerospam-id=' . $item['blocked_id'] ), 'delete-location-block', 'zero-spam' ) ?>"
89
+ >
90
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-trash.svg" width="13" />
91
+ </a>
92
  <?php
93
  return ob_get_clean();
94
  break;
core/admin/tables/class-blockedtable.php CHANGED
@@ -15,23 +15,20 @@ defined( 'ABSPATH' ) || die();
15
 
16
  /**
17
  * Log table.
18
- *
19
- * @since 5.0.0
20
  */
21
  class BlockedTable extends WP_List_Table {
22
 
23
  /**
24
  * Log table constructor.
25
  *
26
- * @since 5.0.0
27
  * @access public
28
  */
29
  public function __construct() {
30
  global $status, $page;
31
 
32
  $args = array(
33
- 'singular' => __( 'WordPress Zero Spam Blocked IP', 'zero-spam' ),
34
- 'plural' => __( 'WordPress Zero Spam Blocked IPs', 'zero-spam' ),
35
  );
36
  parent::__construct( $args );
37
  }
@@ -61,7 +58,7 @@ class BlockedTable extends WP_List_Table {
61
  if ( empty( $item[ $column_name ] ) || '0000-00-00 00:00:00' === $item[ $column_name ] ) {
62
  return 'N/A';
63
  } else {
64
- $date_time_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
65
  return get_date_from_gmt( gmdate( 'Y-m-d H:i:s', strtotime( $item[ $column_name ] ) ), $date_time_format );
66
  }
67
  break;
@@ -75,9 +72,18 @@ class BlockedTable extends WP_List_Table {
75
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['start_block'] ) ) ); ?>"
76
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['end_block'] ) ) ); ?>"
77
  data-type="<?php echo esc_attr( $item['blocked_type'] ); ?>"
 
78
  >
79
- <?php esc_html_e( 'Update Block', 'zero-spam' ); ?>
80
  </button>
 
 
 
 
 
 
 
 
81
  <?php
82
  return ob_get_clean();
83
  break;
@@ -230,7 +236,7 @@ class BlockedTable extends WP_List_Table {
230
  submit_button( __( 'Filter', 'zero-spam' ), '', 'filter_action', false );
231
  */
232
  ?>
233
- <button class="button zerospam-block-trigger"><?php echo __( 'Add Blocked IP Address', 'zero-spam' ); ?></button>
234
  <?php
235
  $settings = \ZeroSpam\Core\Settings::get_settings( 'block_method' );
236
 
15
 
16
  /**
17
  * Log table.
 
 
18
  */
19
  class BlockedTable extends WP_List_Table {
20
 
21
  /**
22
  * Log table constructor.
23
  *
 
24
  * @access public
25
  */
26
  public function __construct() {
27
  global $status, $page;
28
 
29
  $args = array(
30
+ 'singular' => __( 'Zero Spam for WordPress Blocked IP', 'zero-spam' ),
31
+ 'plural' => __( 'Zero Spam for WordPress Blocked IPs', 'zero-spam' ),
32
  );
33
  parent::__construct( $args );
34
  }
58
  if ( empty( $item[ $column_name ] ) || '0000-00-00 00:00:00' === $item[ $column_name ] ) {
59
  return 'N/A';
60
  } else {
61
+ $date_time_format = 'm/d/Y';
62
  return get_date_from_gmt( gmdate( 'Y-m-d H:i:s', strtotime( $item[ $column_name ] ) ), $date_time_format );
63
  }
64
  break;
72
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['start_block'] ) ) ); ?>"
73
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $item['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $item['end_block'] ) ) ); ?>"
74
  data-type="<?php echo esc_attr( $item['blocked_type'] ); ?>"
75
+ aria-label="<?php echo esc_attr( __( 'Update Block', 'zero-spam' ) ); ?>"
76
  >
77
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-edit.svg" width="13" />
78
  </button>
79
+
80
+ <a
81
+ class="button"
82
+ aria-label="<?php echo esc_attr( __( 'Delete block', 'zero-spam' ) ); ?>"
83
+ href="<?php echo wp_nonce_url( admin_url( 'index.php?page=wordpress-zero-spam-dashboard&zerospam-action=delete-ip-block&zerospam-id=' . $item['blocked_id'] ), 'delete-ip-block', 'zero-spam' ) ?>"
84
+ >
85
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-trash.svg" width="13" />
86
+ </a>
87
  <?php
88
  return ob_get_clean();
89
  break;
236
  submit_button( __( 'Filter', 'zero-spam' ), '', 'filter_action', false );
237
  */
238
  ?>
239
+ <button class="button zerospam-block-trigger"><?php echo __( 'Add Blocked IP Address', 'zero-spam' ); ?></button>
240
  <?php
241
  $settings = \ZeroSpam\Core\Settings::get_settings( 'block_method' );
242
 
core/admin/tables/class-logtable.php CHANGED
@@ -25,8 +25,8 @@ class LogTable extends WP_List_Table {
25
  global $status, $page;
26
 
27
  $args = array(
28
- 'singular' => __( 'WordPress Zero Spam Log', 'zero-spam' ),
29
- 'plural' => __( 'WordPress Zero Spam Logs', 'zero-spam' ),
30
  );
31
  parent::__construct( $args );
32
  }
@@ -59,16 +59,23 @@ class LogTable extends WP_List_Table {
59
  return '<a href="' . ZEROSPAM_URL . 'ip-lookup/' . urlencode( $item[ $column_name ] ) .'" target="_blank" rel="noopener noreferrer">' . $item[ $column_name ] . '</a>';
60
  break;
61
  case 'date_recorded':
62
- $date_time_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
63
  return get_date_from_gmt( gmdate( 'Y-m-d H:i:s', strtotime( $item[ $column_name ] ) ), $date_time_format );
64
  break;
65
  case 'actions':
66
  ob_start();
67
  ?>
68
- <button class="button zerospam-details-trigger" data-id="<?php echo esc_attr( $item['log_id'] ); ?>"><?php esc_html_e( 'Details', 'zero-spam' ); ?></button>
69
  <div class="zerospam-modal" id="zerospam-details-<?php echo esc_attr( $item['log_id'] ); ?>">
70
  <button class="zerospam-close-modal" aria-label="<?php echo esc_attr( __( 'Close Modal', 'zero-spam' ) ); ?>"></button>
71
- <?php require ZEROSPAM_PATH . 'includes/templates/admin-modal-details.php'; ?>
 
 
 
 
 
 
 
72
  </div>
73
  <?php
74
  $blocked = ZeroSpam\Includes\DB::blocked( $item['user_ip'] );
@@ -81,13 +88,14 @@ class LogTable extends WP_List_Table {
81
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['start_block'] ) ) ); ?>"
82
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['end_block'] ) ) ); ?>"
83
  data-type="<?php echo esc_attr( $blocked['blocked_type'] ); ?>"
 
84
  >
85
- <?php esc_html_e( 'Update Block', 'zero-spam' ); ?>
86
  </button>
87
  <?php
88
  else :
89
  ?>
90
- <button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $item['user_ip'] ); ?>"><?php esc_html_e( 'Block IP', 'zero-spam' ); ?></button>
91
  <?php
92
  endif;
93
 
25
  global $status, $page;
26
 
27
  $args = array(
28
+ 'singular' => __( 'Zero Spam for WordPress Log', 'zero-spam' ),
29
+ 'plural' => __( 'Zero Spam for WordPress Logs', 'zero-spam' ),
30
  );
31
  parent::__construct( $args );
32
  }
59
  return '<a href="' . ZEROSPAM_URL . 'ip-lookup/' . urlencode( $item[ $column_name ] ) .'" target="_blank" rel="noopener noreferrer">' . $item[ $column_name ] . '</a>';
60
  break;
61
  case 'date_recorded':
62
+ $date_time_format = 'm/d/Y g:ia';
63
  return get_date_from_gmt( gmdate( 'Y-m-d H:i:s', strtotime( $item[ $column_name ] ) ), $date_time_format );
64
  break;
65
  case 'actions':
66
  ob_start();
67
  ?>
68
+ <button class="button zerospam-details-trigger" data-id="<?php echo esc_attr( $item['log_id'] ); ?>" aria-label="<?php esc_html_e( 'Details', 'zero-spam' ); ?>"><img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-info.svg" width="13" /></button>
69
  <div class="zerospam-modal" id="zerospam-details-<?php echo esc_attr( $item['log_id'] ); ?>">
70
  <button class="zerospam-close-modal" aria-label="<?php echo esc_attr( __( 'Close Modal', 'zero-spam' ) ); ?>"></button>
71
+
72
+ <div class="zerospam-block zerospam-block--list">
73
+ <h3 class="zerospam-block__headline"><?php esc_html_e( 'Detection ID #', 'zero-spam' ); ?><?php echo esc_attr( $item['log_id'] ); ?></h3>
74
+ <div class="zerospam-block__content">
75
+ <?php require ZEROSPAM_PATH . 'includes/templates/admin-modal-details.php'; ?>
76
+ </div>
77
+ </div>
78
+
79
  </div>
80
  <?php
81
  $blocked = ZeroSpam\Includes\DB::blocked( $item['user_ip'] );
88
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['start_block'] ) ) ); ?>"
89
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['end_block'] ) ) ); ?>"
90
  data-type="<?php echo esc_attr( $blocked['blocked_type'] ); ?>"
91
+ aria-label="<?php esc_html_e( 'Update Block', 'zero-spam' ); ?>"
92
  >
93
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-edit.svg" width="13" />
94
  </button>
95
  <?php
96
  else :
97
  ?>
98
+ <button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $item['user_ip'] ); ?>" aria-label="<?php esc_html_e( 'Block IP', 'zero-spam' ); ?>"><img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-blocked.svg" width="13" /></button>
99
  <?php
100
  endif;
101
 
core/class-access.php CHANGED
@@ -35,11 +35,16 @@ class Access {
35
  }
36
 
37
  /**
38
- * Returns true if WordPress Zero Spam should process a submission.
39
  *
40
  * @param boolean $ignore_ajax True if AJAX shouldn't be checked.
41
  */
42
  public static function process( $ignore_ajax = false ) {
 
 
 
 
 
43
  if ( $ignore_ajax && is_admin() || is_user_logged_in() ) {
44
  return false;
45
  } elseif ( ! $ignore_ajax && ( is_admin() && ! wp_doing_ajax() ) || is_user_logged_in() ) {
@@ -163,9 +168,7 @@ class Access {
163
  * @param array $settings The plugin settings.
164
  */
165
  public function check_blocked( $access_checks, $user_ip, $settings ) {
166
- $access_checks['blocked'] = array(
167
- 'blocked' => false,
168
- );
169
 
170
  // Check if geolocation information is available, if so, check if blocked.
171
  $geolocation_information = \ZeroSpam\Core\Utilities::geolocation( $user_ip );
35
  }
36
 
37
  /**
38
+ * Determines is security checks need to be triggers.
39
  *
40
  * @param boolean $ignore_ajax True if AJAX shouldn't be checked.
41
  */
42
  public static function process( $ignore_ajax = false ) {
43
+ // Fix for .favicon requests.
44
+ if ( strpos( $_SERVER['REQUEST_URI'], '.ico' ) !== false ) {
45
+ return false;
46
+ }
47
+
48
  if ( $ignore_ajax && is_admin() || is_user_logged_in() ) {
49
  return false;
50
  } elseif ( ! $ignore_ajax && ( is_admin() && ! wp_doing_ajax() ) || is_user_logged_in() ) {
168
  * @param array $settings The plugin settings.
169
  */
170
  public function check_blocked( $access_checks, $user_ip, $settings ) {
171
+ $access_checks['blocked'] = false;
 
 
172
 
173
  // Check if geolocation information is available, if so, check if blocked.
174
  $geolocation_information = \ZeroSpam\Core\Utilities::geolocation( $user_ip );
core/class-settings.php CHANGED
@@ -33,10 +33,16 @@ class Settings {
33
  * Returns the plugin setting sections
34
  */
35
  public static function get_sections() {
 
36
  self::$sections['general'] = array(
37
  'title' => __( 'General Settings', 'zero-spam' ),
38
  );
39
 
 
 
 
 
 
40
  return apply_filters( 'zerospam_setting_sections', self::$sections );
41
  }
42
 
@@ -60,11 +66,11 @@ class Settings {
60
  * Updates blocked email domains with recommended settings.
61
  */
62
  public static function update_blocked_email_domains() {
63
- $settings = self::get_settings();
64
  $recommended_blocked_email_domains = \ZeroSpam\Core\Utilities::blocked_email_domains();
65
 
66
  $new_settings = array();
67
- foreach ( $settings as $key => $setting ) {
68
  if ( 'blocked_email_domains' === $key ) {
69
  $new_settings[ $key ] = implode( "\n", $recommended_blocked_email_domains );
70
  } else {
@@ -73,7 +79,7 @@ class Settings {
73
  }
74
 
75
  if ( $new_settings ) {
76
- update_option( 'wpzerospam', $new_settings );
77
  }
78
  }
79
 
@@ -82,19 +88,41 @@ class Settings {
82
  */
83
  public static function auto_configure() {
84
  $settings = self::get_settings();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
 
86
- $recommended_settings = array();
87
  foreach ( $settings as $key => $setting ) {
88
- $recommended_settings[ $key ] = isset( $setting['value'] ) ? $setting['value'] : false;
89
- if ( isset( $setting['recommended'] ) ) {
90
- $recommended_settings[ $key ] = $setting['recommended'];
 
 
 
91
  }
92
  }
93
 
94
- if ( $recommended_settings ) {
95
- update_option( 'wpzerospam', $recommended_settings );
96
- update_option( 'zerospam_configured', 1 );
97
- }
98
  }
99
 
100
  /**
@@ -103,18 +131,27 @@ class Settings {
103
  * @param string $key Setting key to retrieve.
104
  */
105
  public static function get_settings( $key = false ) {
106
- $options = get_option( 'wpzerospam' );
107
 
108
  self::$settings['use_recommended_settings'] = array(
109
  'title' => __( 'Use Recommended Settings', 'zero-spam' ),
110
  'desc' => sprintf(
111
  wp_kses(
112
- __( '<strong>WARNING:</strong> This will override all existing settings.', 'zero-spam' ),
 
113
  array(
 
114
  'strong' => array(),
 
 
 
 
 
115
  )
116
- )
 
117
  ),
 
118
  'section' => 'general',
119
  'type' => 'html',
120
  'html' => sprintf(
@@ -134,24 +171,27 @@ class Settings {
134
 
135
  self::$settings['share_data'] = array(
136
  'title' => __( 'Usage Data Sharing', 'zero-spam' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  'section' => 'general',
138
  'type' => 'checkbox',
139
  'options' => array(
140
- 'enabled' => sprintf(
141
- wp_kses(
142
- /* translators: %s: url */
143
- __( 'Join <a href="%1$s" target="_blank" rel="noreferrer noopener">Zero Spam\'s global community</a> &amp; report detections by opting in to share non-sensitive data. <a href="%2$s" target="_blank" rel="noreferrer noopener">Learn more</a>.', 'zero-spam' ),
144
- array(
145
- 'a' => array(
146
- 'target' => array(),
147
- 'href' => array(),
148
- 'rel' => array(),
149
- ),
150
- )
151
- ),
152
- esc_url( ZEROSPAM_URL . '?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=data_sharing' ),
153
- esc_url( 'https://github.com/bmarshall511/wordpress-zero-spam/wiki/FAQ#what-data-is-shared-when-usage-data-sharing-is-enabled' )
154
- ),
155
  ),
156
  'value' => ! empty( $options['share_data'] ) ? $options['share_data'] : false,
157
  'recommended' => 'enabled',
@@ -168,6 +208,7 @@ class Settings {
168
  self::$settings['widget_visibility'] = array(
169
  'title' => __( 'Dashboard Widget Visibility', 'zero-spam' ),
170
  'section' => 'general',
 
171
  'type' => 'select',
172
  'desc' => __( 'Select which user roles have access to the admin dashboard widget. You may control-click (Windows) or command-click (Mac) to select more than one.', 'zero-spam' ),
173
  'options' => $roles_array,
@@ -180,6 +221,7 @@ class Settings {
180
  'title' => __( 'IP Block Handler', 'zero-spam' ),
181
  'desc' => __( 'Determines how blocked IPs are handled when they attempt to access the site.', 'zero-spam' ),
182
  'section' => 'general',
 
183
  'type' => 'radio',
184
  'options' => array(
185
  'redirect' => __( 'Redirect user', 'zero-spam' ),
@@ -222,6 +264,7 @@ class Settings {
222
  esc_url( 'https://www.highfivery.com/?utm_source=' . get_bloginfo( 'url' ) . '&utm_medium=zerospam_plugin_htaccess&utm_campaign=zerospam_plugin' )
223
  ),
224
  'section' => 'general',
 
225
  'type' => 'radio',
226
  'options' => array(
227
  'htaccess_legacy' => __( '.htaccess (Apache servers < 2.4)', 'zero-spam' ),
@@ -238,6 +281,7 @@ class Settings {
238
  'title' => __( 'Blocked Message', 'zero-spam' ),
239
  'desc' => __( 'The message displayed to blocked users when \'Display a 403 Forbidden error\' is selected.', 'zero-spam' ),
240
  'section' => 'general',
 
241
  'type' => 'text',
242
  'field_class' => 'large-text',
243
  'placeholder' => $message,
@@ -249,6 +293,7 @@ class Settings {
249
  'title' => __( 'Blocked Users Redirect', 'zero-spam' ),
250
  'desc' => __( 'The URL blocked users are redirected to when \'Redirect user\' is selected.', 'zero-spam' ),
251
  'section' => 'general',
 
252
  'type' => 'url',
253
  'field_class' => 'regular-text',
254
  'placeholder' => 'https://wordpress.org/plugins/zero-spam/',
@@ -259,10 +304,11 @@ class Settings {
259
  self::$settings['log_blocked_ips'] = array(
260
  'title' => __( 'Log Blocked IPs', 'zero-spam' ),
261
  'section' => 'general',
 
262
  'type' => 'checkbox',
263
- 'desc' => __( 'Enables logging IPs that are blocked from accessing the site.', 'zero-spam' ),
264
  'options' => array(
265
- 'enabled' => __( 'Enabled', 'zero-spam' ),
266
  ),
267
  'value' => ! empty( $options['log_blocked_ips'] ) ? $options['log_blocked_ips'] : false,
268
  'recommended' => 'enabled',
@@ -272,6 +318,7 @@ class Settings {
272
  'title' => __( 'Maximum Log Entries', 'zero-spam' ),
273
  'desc' => __( 'The maximum number of log entries when logging is enabled. When the maximum is reached, the oldest entries will be deleted.', 'zero-spam' ),
274
  'section' => 'general',
 
275
  'type' => 'number',
276
  'field_class' => 'small-text',
277
  'placeholder' => 10000,
@@ -283,6 +330,7 @@ class Settings {
283
  'title' => __( 'IP Whitelist', 'zero-spam' ),
284
  'desc' => __( 'Enter IPs that should be whitelisted (IPs that should never be blocked), one per line.', 'zero-spam' ),
285
  'section' => 'general',
 
286
  'type' => 'textarea',
287
  'field_class' => 'regular-text code',
288
  'placeholder' => '',
@@ -293,6 +341,7 @@ class Settings {
293
  'title' => __( 'Blocked Email Domains', 'zero-spam' ),
294
  'desc' => __( 'Enter a list of email domains that should be blocked, one per line.', 'zero-spam' ),
295
  'section' => 'general',
 
296
  'type' => 'textarea',
297
  'field_class' => 'regular-text code',
298
  'placeholder' => '',
@@ -310,6 +359,7 @@ class Settings {
310
  )
311
  ),
312
  'section' => 'general',
 
313
  'type' => 'html',
314
  'html' => sprintf(
315
  wp_kses(
@@ -339,6 +389,7 @@ class Settings {
339
  \ZeroSpam\Core\Utilities::get_honeypot()
340
  ),
341
  'section' => 'general',
 
342
  'type' => 'html',
343
  'html' => sprintf(
344
  wp_kses(
@@ -359,6 +410,7 @@ class Settings {
359
  'title' => __( 'Override &amp; Update Core Disallowed Words', 'zero-spam' ),
360
  'desc' => __( 'Update WP core\'s disallowed words option with <a href="https://github.com/splorp/wordpress-comment-blacklist/" target="_blank" rel="noreferrer noopener">splorp\'s Comment Blacklist for WordPress</a>. <strong>WARNING:</strong> This will override any existing words.', 'zero-spam' ),
361
  'section' => 'general',
 
362
  'type' => 'html',
363
  'html' => sprintf(
364
  wp_kses(
@@ -375,7 +427,7 @@ class Settings {
375
  ),
376
  );
377
 
378
- $settings = apply_filters( 'zerospam_settings', self::$settings, $options );
379
 
380
  if ( $key ) {
381
  if ( ! empty( $settings[ $key ]['value'] ) ) {
33
  * Returns the plugin setting sections
34
  */
35
  public static function get_sections() {
36
+ // DEPRECATED
37
  self::$sections['general'] = array(
38
  'title' => __( 'General Settings', 'zero-spam' ),
39
  );
40
 
41
+ // v5.4
42
+ self::$sections['settings'] = array(
43
+ 'title' => __( 'Settings', 'zero-spam' ),
44
+ );
45
+
46
  return apply_filters( 'zerospam_setting_sections', self::$sections );
47
  }
48
 
66
  * Updates blocked email domains with recommended settings.
67
  */
68
  public static function update_blocked_email_domains() {
69
+ $modules = self::get_settings_by_module();
70
  $recommended_blocked_email_domains = \ZeroSpam\Core\Utilities::blocked_email_domains();
71
 
72
  $new_settings = array();
73
+ foreach ( $modules['settings'] as $key => $setting ) {
74
  if ( 'blocked_email_domains' === $key ) {
75
  $new_settings[ $key ] = implode( "\n", $recommended_blocked_email_domains );
76
  } else {
79
  }
80
 
81
  if ( $new_settings ) {
82
+ update_option( 'zero-spam-settings', $new_settings );
83
  }
84
  }
85
 
88
  */
89
  public static function auto_configure() {
90
  $settings = self::get_settings();
91
+ $modules = self::get_settings_by_module();
92
+
93
+ foreach ( $modules as $module => $setting ) {
94
+ $recommended_settings = array();
95
+ foreach ( $setting as $key => $args ) {
96
+ $recommended_settings[ $key ] = isset( $args['value'] ) ? $args['value'] : false;
97
+ if ( isset( $args['recommended'] ) ) {
98
+ $recommended_settings[ $key ] = $args['recommended'];
99
+ }
100
+ }
101
+
102
+ update_option( "zero-spam-$module", $recommended_settings );
103
+ }
104
+
105
+ update_option( 'zerospam_configured', 1 );
106
+ }
107
+
108
+ /**
109
+ * Returns settings by modules.
110
+ */
111
+ public static function get_settings_by_module() {
112
+ $settings = self::get_settings();
113
+ $modules = array();
114
 
 
115
  foreach ( $settings as $key => $setting ) {
116
+ if ( ! array_key_exists( $setting['module'], $modules ) ) {
117
+ $modules[ $setting['module'] ] = array(
118
+ $key => $setting
119
+ );
120
+ } else {
121
+ $modules[ $setting['module'] ][ $key ] = $setting;
122
  }
123
  }
124
 
125
+ return $modules;
 
 
 
126
  }
127
 
128
  /**
131
  * @param string $key Setting key to retrieve.
132
  */
133
  public static function get_settings( $key = false ) {
134
+ $options = get_option( 'zero-spam-settings' );
135
 
136
  self::$settings['use_recommended_settings'] = array(
137
  'title' => __( 'Use Recommended Settings', 'zero-spam' ),
138
  'desc' => sprintf(
139
  wp_kses(
140
+ /* translators: %s: url */
141
+ __( 'Get maximum protection fast with our one-click configuration setup. Please enter any <a href="%1$s" target="_blank" rel="noreferrer noopener">supported plugins</a> are installed & activated first. <strong>Performing this action will override all existing settings.', 'zero-spam' ),
142
  array(
143
+ 'rel' => array(),
144
  'strong' => array(),
145
+ 'a' => array(
146
+ 'href' => array(),
147
+ 'class' => array(),
148
+ 'target' => array()
149
+ ),
150
  )
151
+ ),
152
+ "https://github.com/Highfivery/zero-spam-for-wordpress/wiki/FAQ#what-plugins-are-supported-by-zero-spam-for-wordpress"
153
  ),
154
+ 'module' => 'settings',
155
  'section' => 'general',
156
  'type' => 'html',
157
  'html' => sprintf(
171
 
172
  self::$settings['share_data'] = array(
173
  'title' => __( 'Usage Data Sharing', 'zero-spam' ),
174
+ 'desc' => sprintf(
175
+ wp_kses(
176
+ /* translators: %s: url */
177
+ __( 'Help us provide better protection & contribute to our <a href="%1$s" target="_blank" rel="noreferrer noopener">real-time global detection network</a> by opting into sharing non-sensitive data (<strong>we will never share or sell any personal identifiable information, <a href="%2$s" target="_blank" rel="noreferrer noopener">learn more</a></strong>).', 'zero-spam' ),
178
+ array(
179
+ 'strong' => array(),
180
+ 'a' => array(
181
+ 'target' => array(),
182
+ 'href' => array(),
183
+ 'rel' => array(),
184
+ ),
185
+ )
186
+ ),
187
+ esc_url( ZEROSPAM_URL . '?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=data_sharing' ),
188
+ esc_url( 'https://github.com/bmarshall511/wordpress-zero-spam/wiki/FAQ#what-data-is-shared-when-usage-data-sharing-is-enabled' )
189
+ ),
190
+ 'module' => 'settings',
191
  'section' => 'general',
192
  'type' => 'checkbox',
193
  'options' => array(
194
+ 'enabled' => false,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  ),
196
  'value' => ! empty( $options['share_data'] ) ? $options['share_data'] : false,
197
  'recommended' => 'enabled',
208
  self::$settings['widget_visibility'] = array(
209
  'title' => __( 'Dashboard Widget Visibility', 'zero-spam' ),
210
  'section' => 'general',
211
+ 'module' => 'settings',
212
  'type' => 'select',
213
  'desc' => __( 'Select which user roles have access to the admin dashboard widget. You may control-click (Windows) or command-click (Mac) to select more than one.', 'zero-spam' ),
214
  'options' => $roles_array,
221
  'title' => __( 'IP Block Handler', 'zero-spam' ),
222
  'desc' => __( 'Determines how blocked IPs are handled when they attempt to access the site.', 'zero-spam' ),
223
  'section' => 'general',
224
+ 'module' => 'settings',
225
  'type' => 'radio',
226
  'options' => array(
227
  'redirect' => __( 'Redirect user', 'zero-spam' ),
264
  esc_url( 'https://www.highfivery.com/?utm_source=' . get_bloginfo( 'url' ) . '&utm_medium=zerospam_plugin_htaccess&utm_campaign=zerospam_plugin' )
265
  ),
266
  'section' => 'general',
267
+ 'module' => 'settings',
268
  'type' => 'radio',
269
  'options' => array(
270
  'htaccess_legacy' => __( '.htaccess (Apache servers < 2.4)', 'zero-spam' ),
281
  'title' => __( 'Blocked Message', 'zero-spam' ),
282
  'desc' => __( 'The message displayed to blocked users when \'Display a 403 Forbidden error\' is selected.', 'zero-spam' ),
283
  'section' => 'general',
284
+ 'module' => 'settings',
285
  'type' => 'text',
286
  'field_class' => 'large-text',
287
  'placeholder' => $message,
293
  'title' => __( 'Blocked Users Redirect', 'zero-spam' ),
294
  'desc' => __( 'The URL blocked users are redirected to when \'Redirect user\' is selected.', 'zero-spam' ),
295
  'section' => 'general',
296
+ 'module' => 'settings',
297
  'type' => 'url',
298
  'field_class' => 'regular-text',
299
  'placeholder' => 'https://wordpress.org/plugins/zero-spam/',
304
  self::$settings['log_blocked_ips'] = array(
305
  'title' => __( 'Log Blocked IPs', 'zero-spam' ),
306
  'section' => 'general',
307
+ 'module' => 'settings',
308
  'type' => 'checkbox',
309
+ 'desc' => __( 'When enabled, logs all IPs that are blocked from accessing the site. Not recommended for high-traffic websites.', 'zero-spam' ),
310
  'options' => array(
311
+ 'enabled' => false
312
  ),
313
  'value' => ! empty( $options['log_blocked_ips'] ) ? $options['log_blocked_ips'] : false,
314
  'recommended' => 'enabled',
318
  'title' => __( 'Maximum Log Entries', 'zero-spam' ),
319
  'desc' => __( 'The maximum number of log entries when logging is enabled. When the maximum is reached, the oldest entries will be deleted.', 'zero-spam' ),
320
  'section' => 'general',
321
+ 'module' => 'settings',
322
  'type' => 'number',
323
  'field_class' => 'small-text',
324
  'placeholder' => 10000,
330
  'title' => __( 'IP Whitelist', 'zero-spam' ),
331
  'desc' => __( 'Enter IPs that should be whitelisted (IPs that should never be blocked), one per line.', 'zero-spam' ),
332
  'section' => 'general',
333
+ 'module' => 'settings',
334
  'type' => 'textarea',
335
  'field_class' => 'regular-text code',
336
  'placeholder' => '',
341
  'title' => __( 'Blocked Email Domains', 'zero-spam' ),
342
  'desc' => __( 'Enter a list of email domains that should be blocked, one per line.', 'zero-spam' ),
343
  'section' => 'general',
344
+ 'module' => 'settings',
345
  'type' => 'textarea',
346
  'field_class' => 'regular-text code',
347
  'placeholder' => '',
359
  )
360
  ),
361
  'section' => 'general',
362
+ 'module' => 'settings',
363
  'type' => 'html',
364
  'html' => sprintf(
365
  wp_kses(
389
  \ZeroSpam\Core\Utilities::get_honeypot()
390
  ),
391
  'section' => 'general',
392
+ 'module' => 'settings',
393
  'type' => 'html',
394
  'html' => sprintf(
395
  wp_kses(
410
  'title' => __( 'Override &amp; Update Core Disallowed Words', 'zero-spam' ),
411
  'desc' => __( 'Update WP core\'s disallowed words option with <a href="https://github.com/splorp/wordpress-comment-blacklist/" target="_blank" rel="noreferrer noopener">splorp\'s Comment Blacklist for WordPress</a>. <strong>WARNING:</strong> This will override any existing words.', 'zero-spam' ),
412
  'section' => 'general',
413
+ 'module' => 'settings',
414
  'type' => 'html',
415
  'html' => sprintf(
416
  wp_kses(
427
  ),
428
  );
429
 
430
+ $settings = apply_filters( 'zerospam_settings', self::$settings );
431
 
432
  if ( $key ) {
433
  if ( ! empty( $settings[ $key ]['value'] ) ) {
core/class-utilities.php CHANGED
@@ -111,6 +111,29 @@ class Utilities {
111
  return false;
112
  }
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  /**
115
  * Determines if an email has been blocked by it's domain.
116
  *
@@ -211,7 +234,7 @@ class Utilities {
211
  return false;
212
  }
213
 
214
- if ( insert_with_markers( $htaccess_file, 'WordPress Zero Spam', $lines ) ) {
215
  return true;
216
  } else {
217
  self::log( 'Unable to update the .htacess file, unknown error.' );
@@ -270,9 +293,9 @@ class Utilities {
270
  }
271
 
272
  // Write the log file.
273
- $file = $upload_dir . '/' . $file . '.log';
274
- $file = fopen( $file, $mode );
275
- $bytes = fwrite( $file, current_time( 'mysql' ) . "::" . $entry . "\n" );
276
  fclose( $file );
277
 
278
  return $bytes;
@@ -623,7 +646,6 @@ class Utilities {
623
  /**
624
  * Returns the generated key for checking submissions.
625
  *
626
- * @since 5.0.0
627
  * @access public
628
  *
629
  * @return string A unique key used for the 'honeypot' field.
@@ -736,8 +758,6 @@ class Utilities {
736
  /**
737
  * Get an IP address geolocation information.
738
  *
739
- * @since 5.1.1
740
- *
741
  * @param string $ip IP address to lookup.
742
  * @return boolean|array False if geolocation is unavailable or array of location information.
743
  */
@@ -771,7 +791,7 @@ class Utilities {
771
 
772
  // 2. Query the ipstack API.
773
  $ipstack_location = \ZeroSpam\Modules\ipstack::get_geolocation( $ip );
774
- if ( $ipstack_location ) {
775
  // ipstack API key provided, process the response.
776
  if ( ! empty( $ipstack_location['error'] ) ) {
777
  // ipstack returned an error, log it for future reference.
@@ -826,7 +846,7 @@ class Utilities {
826
 
827
  // 3. Query the IPinfo API.
828
  $ipinfo_location = ZeroSpam\Modules\IPinfoModule::get_geolocation( $ip );
829
- if ( $ipinfo_location ) {
830
  // IPinfo token provided, process the response.
831
  // Add available location info to the standarized array.
832
  if ( ! empty( $ipinfo_location['hostname'] ) ) {
111
  return false;
112
  }
113
 
114
+ /**
115
+ * Determines if an email is valid.
116
+ *
117
+ * @param string $email Email address.
118
+ */
119
+ public static function is_email( $email ) {
120
+ if ( ! is_email( $email ) ) {
121
+ return false;
122
+ }
123
+
124
+ // Check the email domain.
125
+ if ( function_exists( 'checkdnsrr' ) ) {
126
+ $email_domain = substr( $email, strpos( $email, '@' ) + 1 );
127
+ if ( ! checkdnsrr( $email_domain, "MX" ) ) {
128
+ if ( ! ( checkdnsrr( $email_domain, "A" ) ) || ! ( checkdnsrr( $email_domain, "AAAA" ) ) ) {
129
+ return false;
130
+ }
131
+ }
132
+ }
133
+
134
+ return true;;
135
+ }
136
+
137
  /**
138
  * Determines if an email has been blocked by it's domain.
139
  *
234
  return false;
235
  }
236
 
237
+ if ( insert_with_markers( $htaccess_file, 'Zero Spam for WordPress', $lines ) ) {
238
  return true;
239
  } else {
240
  self::log( 'Unable to update the .htacess file, unknown error.' );
293
  }
294
 
295
  // Write the log file.
296
+ $file_path = $upload_dir . '/' . $file . '.log';
297
+ $file = fopen( $file_path, $mode );
298
+ $bytes = fwrite( $file, current_time( 'mysql' ) . "::" . $entry . "\n" );
299
  fclose( $file );
300
 
301
  return $bytes;
646
  /**
647
  * Returns the generated key for checking submissions.
648
  *
 
649
  * @access public
650
  *
651
  * @return string A unique key used for the 'honeypot' field.
758
  /**
759
  * Get an IP address geolocation information.
760
  *
 
 
761
  * @param string $ip IP address to lookup.
762
  * @return boolean|array False if geolocation is unavailable or array of location information.
763
  */
791
 
792
  // 2. Query the ipstack API.
793
  $ipstack_location = \ZeroSpam\Modules\ipstack::get_geolocation( $ip );
794
+ if ( ! empty( $ipstack_location ) ) {
795
  // ipstack API key provided, process the response.
796
  if ( ! empty( $ipstack_location['error'] ) ) {
797
  // ipstack returned an error, log it for future reference.
846
 
847
  // 3. Query the IPinfo API.
848
  $ipinfo_location = ZeroSpam\Modules\IPinfoModule::get_geolocation( $ip );
849
+ if ( ! empty( $ipinfo_location ) ) {
850
  // IPinfo token provided, process the response.
851
  // Add available location info to the standarized array.
852
  if ( ! empty( $ipinfo_location['hostname'] ) ) {
includes/class-db.php CHANGED
@@ -16,7 +16,7 @@ defined( 'ABSPATH' ) || die();
16
  class DB {
17
 
18
  // Current DB version.
19
- const DB_VERSION = '0.8';
20
 
21
  /**
22
  * DB tables
@@ -67,7 +67,7 @@ class DB {
67
  blocked_type ENUM('permanent','temporary') NOT NULL DEFAULT 'temporary',
68
  user_ip VARCHAR(39) NOT NULL,
69
  blocked_key VARCHAR(255) NULL,
70
- key_type ENUM('ip','email','username','country_code','region_code','zip') NOT NULL DEFAULT 'ip',
71
  date_added DATETIME NOT NULL,
72
  start_block DATETIME NULL DEFAULT NULL,
73
  end_block DATETIME NULL DEFAULT NULL,
16
  class DB {
17
 
18
  // Current DB version.
19
+ const DB_VERSION = '0.9';
20
 
21
  /**
22
  * DB tables
67
  blocked_type ENUM('permanent','temporary') NOT NULL DEFAULT 'temporary',
68
  user_ip VARCHAR(39) NOT NULL,
69
  blocked_key VARCHAR(255) NULL,
70
+ key_type ENUM('ip','email','username','country_code','region_code','zip', 'city') NOT NULL DEFAULT 'ip',
71
  date_added DATETIME NOT NULL,
72
  start_block DATETIME NULL DEFAULT NULL,
73
  end_block DATETIME NULL DEFAULT NULL,
includes/class-plugin.php CHANGED
@@ -81,6 +81,12 @@ class Plugin {
81
  // Database functionality.
82
  new \ZeroSpam\Includes\DB();
83
 
 
 
 
 
 
 
84
  // Zero Spam module.
85
  new \ZeroSpam\Modules\Zero_Spam();
86
 
@@ -159,6 +165,11 @@ class Plugin {
159
  new \ZeroSpam\Modules\WooCommerce\WooCommerce();
160
  }
161
 
 
 
 
 
 
162
  // Debug module.
163
  new \ZeroSpam\Modules\Debug();
164
  }
81
  // Database functionality.
82
  new \ZeroSpam\Includes\DB();
83
 
84
+ // Updates functionality.
85
+ new \ZeroSpam\Includes\Updates();
86
+
87
+ // Site security
88
+ new \ZeroSpam\Modules\Security();
89
+
90
  // Zero Spam module.
91
  new \ZeroSpam\Modules\Zero_Spam();
92
 
165
  new \ZeroSpam\Modules\WooCommerce\WooCommerce();
166
  }
167
 
168
+ // Zero Spam Gravity Forms module.
169
+ if ( is_plugin_active( 'gravityforms/gravityforms.php' ) ) {
170
+ new \ZeroSpam\Modules\GravityForms\GravityForms();
171
+ }
172
+
173
  // Debug module.
174
  new \ZeroSpam\Modules\Debug();
175
  }
includes/class-updates.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Updates class
4
+ *
5
+ * @package ZeroSpam
6
+ */
7
+
8
+ namespace ZeroSpam\Includes;
9
+
10
+ // Security Note: Blocks direct access to the plugin PHP files.
11
+ defined( 'ABSPATH' ) || die();
12
+
13
+ /**
14
+ * Updates class
15
+ */
16
+ class Updates {
17
+ /**
18
+ * Constructor
19
+ */
20
+ public function __construct() {
21
+ add_action( 'init', array( $this, 'check' ) );
22
+ }
23
+
24
+ /**
25
+ * Checks for updates
26
+ */
27
+ public function check() {
28
+ $last_update = get_option( 'zero-spam-last-update' );
29
+ if ( ! $last_update || ZEROSPAM_VERSION !== $last_update ) {
30
+
31
+ // Update old settings value to new.
32
+ // @TODO: Delete the wpzerospam option once enough time has passed to allow people to upgrade.
33
+ $old_settings = get_option( 'wpzerospam' );
34
+ if ( $old_settings ) {
35
+ $modules = \ZeroSpam\Core\Settings::get_settings_by_module();
36
+ foreach ( $modules as $module => $settings ) {
37
+ $updated_settings = array();
38
+ foreach ( $settings as $key => $attr ) {
39
+ $updated_settings[ $key ] = ! empty( $attr['value'] ) ? $attr['value'] : false;
40
+
41
+ if ( ! empty( $old_settings[ $key ] ) ) {
42
+ $updated_settings[ $key ] = $old_settings[ $key ];
43
+ }
44
+ }
45
+
46
+ update_option( "zero-spam-$module", $updated_settings, true );
47
+ }
48
+
49
+ update_option( 'zero-spam-last-update', ZEROSPAM_VERSION );
50
+ }
51
+
52
+ }
53
+ }
54
+ }
includes/templates/admin-block-ip.php CHANGED
@@ -3,76 +3,81 @@
3
  * Block IP.
4
  *
5
  * @package ZeroSpam
6
- * @since 5.0.0
7
  */
8
  ?>
9
 
10
- <form method="post" action="<?php echo esc_url( admin_url( 'admin.php' ) ); ?>"<?php if ( ! empty( $location_form ) ) : ?> class="zerospam-block-location-form"<?php endif; ?>>
11
  <?php wp_nonce_field( 'zerospam', 'zerospam' ); ?>
12
  <input type="hidden" name="action" value="add_blocked_ip" />
13
- <input type="hidden" name="redirect" value="<?php echo esc_url( ZeroSpam\Core\Utilities::current_url() ); ?>" />
14
 
15
- <?php if ( empty( $location_form ) ) : ?>
16
- <label for="blocked-ip">
17
- <?php _e( 'IP Address', 'zero-spam' ); ?>
18
- <input
19
- type="text"
20
- name="blocked_ip"
21
- value="<?php if( ! empty( $_REQUEST['ip'] ) ) : echo esc_attr( $_REQUEST['ip'] ); endif; ?>"
22
- placeholder="e.g. xxx.xxx.x.x"
23
- />
24
- </label>
25
- <?php else: ?>
26
- <label for="location-type">
27
- <?php esc_html_e( 'Location Type', 'zero-spam' ); ?>
28
- <select id="location-type" name="key_type">
29
- <option value="country_code"><?php esc_html_e( 'Country Code', 'zero-spam' ); ?></option>
30
- <option value="region_code"><?php esc_html_e( 'Region Code', 'zero-spam' ); ?></option>
31
- <option value="city"><?php esc_html_e( 'City Name', 'zero-spam' ); ?></option>
32
- <option value="zip"><?php esc_html_e( 'Zip/Postal Code', 'zero-spam' ); ?></option>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  </select>
34
- </label>
35
 
36
- <label for="location-key">
37
- <?php esc_html_e( 'Location Key', 'zero-spam' ); ?>
 
 
 
 
 
38
  <input
39
- id="location-key"
40
- type="text"
41
- name="blocked_key"
42
  value=""
43
- placeholder="ex. US"
44
  />
45
- </label>
46
- <?php endif; ?>
47
 
48
- <label for="blocked-type"><?php esc_html_e( 'Type', 'zero-spam' ); ?>
49
- <select id="blocked-type" name="blocked_type">
50
- <option value="temporary"><?php esc_html_e( 'Temporary', 'zero-spam' ); ?></option>
51
- <option value="permanent"><?php esc_html_e( 'Permanent', 'zero-spam' ); ?></option>
52
- </select>
53
- </label>
54
-
55
- <label for="blocked-reason">
56
- <?php esc_html_e( 'Reason', 'zero-spam' ); ?>
57
- <input type="text" id="blocked-reason" name="blocked_reason" value="" placeholder="<?php esc_attr_e( 'e.g. Spammed form', 'zero-spam' ); ?>" />
58
- </label>
59
-
60
- <label for="blocked-start-date">
61
- <?php esc_html_e( 'Start Date', 'zero-spam' ); ?>
62
- <input
63
- type="datetime-local"
64
- id="blocked-start-date"
65
- name="blocked_start_date"
66
- value=""
67
- placeholder="<?php echo esc_attr( __( 'Optional', 'zero-spam' ) ); ?>"
68
- />
69
- </label>
70
-
71
- <label for="blocked-end-date">
72
- <?php esc_html_e( 'End Date', 'zero-spam' ); ?>
73
- <input type="datetime-local" id="blocked-end-date" name="blocked_end_date" value="" placeholder="<?php esc_attr_e( 'Optional', 'zero-spam' ); ?>" />
74
- </label>
75
-
76
- <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Add/Update Blocked IP', 'zero-spam' ); ?>" />
77
 
 
 
 
 
 
78
  </form>
3
  * Block IP.
4
  *
5
  * @package ZeroSpam
 
6
  */
7
  ?>
8
 
9
+ <form method="post" class="zerospam-table-form<?php if ( ! empty( $location_form ) ) : ?> zerospam-block-location-form<?php endif; ?>" action="<?php echo esc_url( admin_url( 'admin.php' ) ); ?>">
10
  <?php wp_nonce_field( 'zerospam', 'zerospam' ); ?>
11
  <input type="hidden" name="action" value="add_blocked_ip" />
 
12
 
13
+ <div class="zerospam-form-fields">
14
+ <?php if ( empty( $location_form ) ) : ?>
15
+ <div class="zerospam-form-field zerospam-form-field--half">
16
+ <label for="blocked-ip"><?php _e( 'IP Address', 'zero-spam' ); ?></label>
17
+ <input
18
+ d="blocked-ip"
19
+ type="text"
20
+ name="blocked_ip"
21
+ value="<?php if( ! empty( $_REQUEST['ip'] ) ) : echo esc_attr( $_REQUEST['ip'] ); endif; ?>"
22
+ placeholder="e.g. xxx.xxx.x.x"
23
+ />
24
+ </div>
25
+ <?php else: ?>
26
+ <div class="zerospam-form-field zerospam-form-field--half">
27
+ <label for="location-type"><?php esc_html_e( 'Location Type', 'zero-spam' ); ?></label>
28
+ <select id="location-type" name="key_type">
29
+ <option value="country_code"><?php esc_html_e( 'Country Code', 'zero-spam' ); ?></option>
30
+ <option value="region_code"><?php esc_html_e( 'Region Code', 'zero-spam' ); ?></option>
31
+ <option value="city"><?php esc_html_e( 'City Name', 'zero-spam' ); ?></option>
32
+ <option value="zip"><?php esc_html_e( 'Zip/Postal Code', 'zero-spam' ); ?></option>
33
+ </select>
34
+ </div>
35
+
36
+ <div class="zerospam-form-field zerospam-form-field--half">
37
+ <label for="location-key"><?php esc_html_e( 'Location Key', 'zero-spam' ); ?></label>
38
+ <input
39
+ id="location-key"
40
+ type="text"
41
+ name="blocked_key"
42
+ value=""
43
+ placeholder="ex. US"
44
+ />
45
+ </div>
46
+ <?php endif; ?>
47
+
48
+ <div class="zerospam-form-field zerospam-form-field--half">
49
+ <label for="blocked-type"><?php esc_html_e( 'Type', 'zero-spam' ); ?></label>
50
+ <select id="blocked-type" name="blocked_type">
51
+ <option value="temporary"><?php esc_html_e( 'Temporary', 'zero-spam' ); ?></option>
52
+ <option value="permanent"><?php esc_html_e( 'Permanent', 'zero-spam' ); ?></option>
53
  </select>
54
+ </div>
55
 
56
+ <div class="zerospam-form-field">
57
+ <label for="blocked-reason"><?php esc_html_e( 'Reason', 'zero-spam' ); ?></label>
58
+ <input type="text" id="blocked-reason" name="blocked_reason" value="" placeholder="<?php esc_attr_e( 'e.g. Spammed form', 'zero-spam' ); ?>" />
59
+ </div>
60
+
61
+ <div class="zerospam-form-field zerospam-form-field--half">
62
+ <label for="blocked-start-date"><?php esc_html_e( 'Start Date', 'zero-spam' ); ?></label>
63
  <input
64
+ type="datetime-local"
65
+ id="blocked-start-date"
66
+ name="blocked_start_date"
67
  value=""
68
+ placeholder="<?php echo esc_attr( __( 'Optional', 'zero-spam' ) ); ?>"
69
  />
70
+ </div>
 
71
 
72
+ <div class="zerospam-form-field zerospam-form-field--half">
73
+ <label for="blocked-end-date"><?php esc_html_e( 'End Date', 'zero-spam' ); ?></label>
74
+ <input type="datetime-local" id="blocked-end-date" name="blocked_end_date" value="" placeholder="<?php esc_attr_e( 'Optional', 'zero-spam' ); ?>" />
75
+ </div>
76
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
+ <?php if ( empty( $location_form ) ) : ?>
79
+ <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Add/Update Blocked IP →', 'zero-spam' ); ?>" />
80
+ <?php else: ?>
81
+ <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Add/Update Blocked Location →', 'zero-spam' ); ?>" />
82
+ <?php endif; ?>
83
  </form>
includes/templates/admin-callout.php DELETED
@@ -1,130 +0,0 @@
1
- <?php
2
- /**
3
- * Callout.
4
- *
5
- * @package ZeroSpam
6
- * @since 5.0.0
7
- */
8
-
9
- $settings = \ZeroSpam\Core\Settings::get_settings();
10
- ?>
11
-
12
- <div class="zerospam-callout">
13
- <div class="zerospam-callout-col">
14
- <?php if ( 'enabled' !== $settings['zerospam']['value'] || empty( $settings['zerospam_license']['value'] ) ) : ?>
15
- <h2>
16
- <?php
17
- echo sprintf(
18
- wp_kses(
19
- /* translators: %s: Zero Spam API link */
20
- __( 'Super-charge WordPress Zero Spam with a <a href="%s" target="_blank" rel="noopener noreferrer"> Zero Spam API License</a>.', 'zero-spam' ),
21
- array(
22
- 'a' => array(
23
- 'target' => array(),
24
- 'href' => array(),
25
- 'rel' => array(),
26
- ),
27
- )
28
- ),
29
- esc_url( ZEROSPAM_URL . 'subscribe/' )
30
- );
31
- ?>
32
- </h2>
33
- <?php
34
- echo sprintf(
35
- wp_kses(
36
- /* translators: %s: Zero Spam API link */
37
- __( '<p>Enable enhanced protection with a <strong>Zero Spam API license</strong> &mdash; one of the largest, most comprehensive, constantly-growing global malicious IP, email, and username databases available.</p><p><a href="%1$s" target="_blank" rel="noopener noreferrer">Zero Spam</a> is comprised of a global detection network of over 30,000+ apps and sites that monitor traffic and usage in real-time to detect malicious activity. <a href="%1$s" target="_blank" rel="noopener noreferrer"><strong>Subscribe today</strong></a> for enhanced protection.</p>', 'zero-spam' ),
38
- array(
39
- 'a' => array(
40
- 'target' => array(),
41
- 'href' => array(),
42
- 'rel' => array(),
43
- ),
44
- 'p' => array(),
45
- 'strong' => array(),
46
- )
47
- ),
48
- esc_url( ZEROSPAM_URL . '?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=license' ),
49
- esc_url( ZEROSPAM_URL . 'subscribe/?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=license' )
50
- );
51
- ?>
52
- <p style="margin-top: 30px">
53
- <a class="button button-primary" href="<?php echo esc_url( ZEROSPAM_URL ); ?>subscribe/?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=license" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Enable Enhanced Protection', 'zero-spam' ); ?></a>
54
- <a href="<?php echo esc_url( ZEROSPAM_URL ); ?>?utm_source=wordpress_zero_spam&utm_medium=dashboard_widget&utm_campaign=license" target="_blank" rel="noreferrer noopener" class="button button-secondary"><?php esc_html_e( 'Learn More', 'zero-spam' ); ?></a>
55
- </p>
56
- <?php else : ?>
57
- <h2>
58
- <?php
59
- echo sprintf(
60
- wp_kses(
61
- /* translators: %s: Zero Spam link */
62
- __( 'Congratulations, <a href="%1$s" target="_blank" rel="noopener noreferrer">Zero Spam</a> enhanced protection is enabled!', 'zero-spam' ),
63
- array(
64
- 'a' => array(
65
- 'target' => array(),
66
- 'href' => array(),
67
- 'rel' => array(),
68
- ),
69
- )
70
- ),
71
- esc_url( ZEROSPAM_URL . '?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=license' )
72
- );
73
- ?>
74
- </h2>
75
- <?php
76
- echo sprintf(
77
- wp_kses(
78
- /* translators: %s: Zero Spam API link */
79
- __( '<p><a href="%1$s" target="_blank" rel="noopener noreferrer">Zero Spam</a> is comprised of a global detection network of over 30,000+ apps and sites that monitor traffic and usage in real-time to detect malicious activity.</p>', 'zero-spam' ),
80
- array(
81
- 'a' => array(
82
- 'target' => array(),
83
- 'href' => array(),
84
- 'rel' => array(),
85
- ),
86
- 'p' => array(),
87
- 'strong' => array(),
88
- )
89
- ),
90
- esc_url( ZEROSPAM_URL . '?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=license' )
91
- );
92
- ?>
93
- <?php endif; ?>
94
- </div>
95
- <div class="zerospam-callout-col zerospam-callout-actions">
96
- <ul style="margin-top: 0">
97
- <?php if ( 'enabled' !== $settings['zerospam']['value'] || empty( $settings['zerospam_license']['value'] ) ) : ?>
98
- <li style="margin-bottom: 20px;">
99
- <a href="<?php echo esc_url( ZEROSPAM_URL ); ?>subscribe/?utm_source=wordpress_zero_spam&utm_medium=settings_page&utm_campaign=license" target="_blank">
100
- <strong><?php esc_html_e( 'Get a Zero Spam API License', 'zero-spam' ); ?></strong>
101
- </a>
102
- </li>
103
- <?php endif; ?>
104
- <li><a href="https://github.com/bmarshall511/wordpress-zero-spam/issues" target="_blank"><?php esc_html_e( 'Submit a Bug or Feature Request', 'zero-spam' ); ?></a></li>
105
- <li><a href="https://github.com/bmarshall511/wordpress-zero-spam/wiki" target="_blank" rel="noreferrer noopener"><?php esc_html_e( 'WordPress Zero Spam Plugin Documentation', 'zero-spam' ); ?></a></li>
106
- <li><a href="https://github.com/bmarshall511/wordpress-zero-spam" target="_blank" rel="noreferrer noopener"><?php esc_html_e( 'Become a Contributor &mdash; Fork on Github', 'zero-spam' ); ?></a></li>
107
- <li><a href="https://twitter.com/ZeroSpamOrg" target="_blank"><?php esc_html_e( 'Follow us on Twitter', 'zero-spam' ); ?></a> &amp; <a href="https://www.facebook.com/zerospamorg/" target="_blank"><?php esc_html_e( 'Facebook', 'zero-spam' ); ?></a></li>
108
- </ul>
109
- <hr />
110
- <?php
111
- echo sprintf(
112
- wp_kses(
113
- /* translators: %s: Zero Spam API link */
114
- __( '<p><small>WordPress Zero Spam is proudly developed &amp; maintained by <a href="%1$s" target="_blank" rel="noopener noreferrer">Highfivery LLC &mdash; a creative digital agency</a>.</small></p>', 'zero-spam' ),
115
- array(
116
- 'a' => array(
117
- 'target' => array(),
118
- 'href' => array(),
119
- 'rel' => array(),
120
- ),
121
- 'p' => array(),
122
- 'strong' => array(),
123
- 'small' => array(),
124
- )
125
- ),
126
- esc_url( 'https://www.highfivery.com/?utm_source=' . get_bloginfo( 'url' ) . '&utm_medium=zerospam_plugin_callout&utm_campaign=zerospam_plugin' )
127
- );
128
- ?>
129
- </div>
130
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/templates/admin-header.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin header
4
+ *
5
+ * @package ZeroSpam
6
+ */
7
+
8
+ ?>
9
+
10
+ <header class="zerospam-header">
11
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ) . 'assets/img/text-zero-spam.svg' ?>" width="250" />
12
+ <div class="zerospam-header__status">
13
+ <?php
14
+ $status = \ZeroSpam\Core\Settings::get_settings( 'zerospam' );
15
+ if ( 'enabled' !== $status ) :
16
+ echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-error.svg" class="zerospam-small-icon" />';
17
+ echo sprintf(
18
+ wp_kses(
19
+ /* translators: %1s: Replaced with the Zero Spam URL */
20
+ __( '<strong>Enhanced Protection is <a href="%1$s">DISABLED</a>.</strong>', 'zero-spam' ),
21
+ array(
22
+ 'h3' => array(),
23
+ 'p' => array(),
24
+ 'a' => array(
25
+ 'href' => array(),
26
+ 'class' => array(),
27
+ 'rel' => array(),
28
+ ),
29
+ 'strong' => array(),
30
+ )
31
+ ),
32
+ admin_url( "options-general.php?page=wordpress-zero-spam-settings&subview=zerospam" )
33
+ );
34
+ else :
35
+ $license_key = \ZeroSpam\Core\Settings::get_settings( 'zerospam_license' );
36
+ if ( $license_key ) :
37
+ $license = \ZeroSpam\Modules\Zero_Spam::get_license( $license_key );
38
+ if ( empty( $license['license_key'] ) ) :
39
+ echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-error.svg" class="zerospam-small-icon" />';
40
+ echo sprintf(
41
+ wp_kses(
42
+ /* translators: %1s: Replaced with the Zero Spam URL */
43
+ __( '<strong>Enhanced Protection is <a href="%1$s">DISABLED</a> (invalid license).</strong>', 'zero-spam' ),
44
+ array(
45
+ 'h3' => array(),
46
+ 'p' => array(),
47
+ 'a' => array(
48
+ 'href' => array(),
49
+ 'class' => array(),
50
+ 'rel' => array(),
51
+ ),
52
+ 'strong' => array(),
53
+ )
54
+ ),
55
+ admin_url( "options-general.php?page=wordpress-zero-spam-settings&subview=zerospam" )
56
+ );
57
+ else :
58
+ echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-success.svg" class="zerospam-small-icon" />';
59
+ echo sprintf(
60
+ wp_kses(
61
+ /* translators: %1s: Replaced with the Zero Spam URL */
62
+ __( '<strong>Protected &mdash; %1s queries available</strong>', 'zero-spam' ),
63
+ array(
64
+ 'h3' => array(),
65
+ 'p' => array(),
66
+ 'a' => array(
67
+ 'href' => array(),
68
+ 'class' => array(),
69
+ 'rel' => array(),
70
+ ),
71
+ 'strong' => array(),
72
+ )
73
+ ),
74
+ number_format( $license['queries_remaining'], 0 )
75
+ );
76
+ endif;
77
+ else:
78
+ echo '<img src="' . plugin_dir_url( ZEROSPAM ) . 'assets/img/icon-error.svg" class="zerospam-small-icon" />';
79
+ echo sprintf(
80
+ wp_kses(
81
+ /* translators: %1s: Replaced with the Zero Spam URL, %2$s: Replaced with the DDoD attack wiki URL */
82
+ __( '<strong>Enhanced Protection is <a href="%1$s">DISABLED</a>.</strong>', 'zero-spam' ),
83
+ array(
84
+ 'h3' => array(),
85
+ 'p' => array(),
86
+ 'a' => array(
87
+ 'href' => array(),
88
+ 'class' => array(),
89
+ 'rel' => array(),
90
+ ),
91
+ 'strong' => array(),
92
+ )
93
+ ),
94
+ admin_url( "options-general.php?page=wordpress-zero-spam-settings&subview=zerospam" )
95
+ );
96
+ endif;
97
+ endif;
98
+ ?>
99
+ </div>
100
+ </header>
includes/templates/admin-ips.php CHANGED
@@ -34,7 +34,7 @@ if ( $ips ) {
34
  arsort( $ips );
35
  }
36
  ?>
37
- <ul class="zerospam-list">
38
  <?php
39
  $limit = 12;
40
  $cnt = 0;
@@ -45,29 +45,29 @@ if ( $ips ) {
45
  }
46
  ?>
47
  <li>
48
- <span>
49
  <?php if ( ! empty( $data['country'] ) ) : ?>
50
  <img
51
  src="<?php echo esc_url( ZeroSpam\Core\Utilities::country_flag_url( $data['country'] ) ); ?>"
52
  alt="<?php echo esc_attr( $data['country'] ); ?>"
53
  class="zerospam-flag"
54
- width="16"
55
- height="16"
56
  />
57
  <?php endif; ?>
58
  <a href="<?php echo esc_url( ZEROSPAM_URL ); ?>ip-lookup/<?php echo urlencode( $ip ); ?>" target="_blank" rel="noopener noreferrer">
59
  <?php echo esc_html( $ip ); ?>
60
  </a>
61
  </span>
62
- <span>
63
  <?php if ( ! empty( $data['country'] ) ) : ?>
64
  <?php echo ZeroSpam\Core\Utilities::countries( $data['country'] ); ?>
65
  <?php else: ?>
66
  <?php esc_html_e( 'Unknown', 'zero-spam' ); ?>
67
  <?php endif; ?>
68
  </span>
69
- <span><?php echo number_format( $data['count'], 0 ); ?></span>
70
- <span>
71
  <?php
72
  $blocked = ZeroSpam\Includes\DB::blocked( $ip );
73
  if ( $blocked ) :
@@ -79,13 +79,14 @@ if ( $ips ) {
79
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['start_block'] ) ) ); ?>"
80
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['end_block'] ) ) ); ?>"
81
  data-type="<?php echo esc_attr( $blocked['blocked_type'] ); ?>"
 
82
  >
83
- <?php esc_html_e( 'Update Block', 'zero-spam' ); ?>
84
  </button>
85
  <?php
86
  else :
87
  ?>
88
- <button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $ip ); ?>"><?php esc_html_e( 'Block IP', 'zero-spam' ); ?></button>
89
  <?php
90
  endif;
91
  ?>
34
  arsort( $ips );
35
  }
36
  ?>
37
+ <ul class="zerospam-list zerospam-list--data-actions">
38
  <?php
39
  $limit = 12;
40
  $cnt = 0;
45
  }
46
  ?>
47
  <li>
48
+ <span class="zerospam-list__value">
49
  <?php if ( ! empty( $data['country'] ) ) : ?>
50
  <img
51
  src="<?php echo esc_url( ZeroSpam\Core\Utilities::country_flag_url( $data['country'] ) ); ?>"
52
  alt="<?php echo esc_attr( $data['country'] ); ?>"
53
  class="zerospam-flag"
54
+ width="14"
55
+ height="14"
56
  />
57
  <?php endif; ?>
58
  <a href="<?php echo esc_url( ZEROSPAM_URL ); ?>ip-lookup/<?php echo urlencode( $ip ); ?>" target="_blank" rel="noopener noreferrer">
59
  <?php echo esc_html( $ip ); ?>
60
  </a>
61
  </span>
62
+ <span class="zerospam-list__value">
63
  <?php if ( ! empty( $data['country'] ) ) : ?>
64
  <?php echo ZeroSpam\Core\Utilities::countries( $data['country'] ); ?>
65
  <?php else: ?>
66
  <?php esc_html_e( 'Unknown', 'zero-spam' ); ?>
67
  <?php endif; ?>
68
  </span>
69
+ <span class="zerospam-list__value"><?php echo number_format( $data['count'], 0 ); ?></span>
70
+ <span class="zerospam-list__value">
71
  <?php
72
  $blocked = ZeroSpam\Includes\DB::blocked( $ip );
73
  if ( $blocked ) :
79
  data-start="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['start_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['start_block'] ) ) ); ?>"
80
  data-end="<?php echo esc_attr( gmdate( 'Y-m-d', strtotime( $blocked['end_block'] ) ) ); ?>T<?php echo esc_attr( gmdate( 'H:i', strtotime( $blocked['end_block'] ) ) ); ?>"
81
  data-type="<?php echo esc_attr( $blocked['blocked_type'] ); ?>"
82
+ aria-label="<?php esc_html_e( 'Update Block', 'zero-spam' ); ?>"
83
  >
84
+ <img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-edit.svg" width="13" />
85
  </button>
86
  <?php
87
  else :
88
  ?>
89
+ <button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $ip ); ?>" aria-label="<?php esc_html_e( 'Block IP', 'zero-spam' ); ?>"><img src="<?php echo plugin_dir_url( ZEROSPAM ); ?>assets/img/icon-blocked.svg" width="13" /></button>
90
  <?php
91
  endif;
92
  ?>
includes/templates/admin-modal-details.php CHANGED
@@ -15,24 +15,23 @@ if ( $submission_data ) :
15
  endif;
16
  ?>
17
  <div class="zerospam-modal-details">
18
- <div class="zerospam-modal-title">
19
- <h3><?php echo esc_html_e( 'Detection ID', 'zero-spam' ); ?> #<?php echo esc_html( $item['log_id'] ); ?></h3>
20
- </div>
21
- <div class="zerospam-modal-subtitle">
22
- <?php
23
- echo esc_html(
24
- gmdate(
25
- 'M j, Y g:ia',
26
- strtotime( $item['date_recorded'] )
27
- )
28
- );
29
- ?>
30
- </div>
31
-
32
- <ul class="zerospam-modal-list">
33
  <li>
34
- <strong><?php esc_html_e( 'IP Address', 'zero-spam' ); ?></strong>
35
- <span>
36
  <?php
37
  $lookup_url = ZEROSPAM_URL . 'ip-lookup/';
38
  $lookup_url .= rawurlencode( $item['user_ip'] ) . '/';
@@ -60,8 +59,8 @@ endif;
60
  </span>
61
  </li>
62
  <li>
63
- <strong><?php esc_html_e( 'Type', 'zero-spam' ); ?></strong>
64
- <span>
65
  <?php
66
  $detection_types = apply_filters( 'zerospam_types', array() );
67
  if ( ! empty( $detection_types[ $item['log_type'] ] ) ) :
@@ -77,8 +76,8 @@ endif;
77
  </li>
78
  <?php if ( $submission_data && ! empty( $submission_data['failed'] ) ) : ?>
79
  <li>
80
- <strong><?php esc_html_e( 'Failed', 'zero-spam' ); ?></strong>
81
- <span>
82
  <?php
83
  $failed_types = apply_filters( 'zerospam_failed_types', array() );
84
  if ( ! empty( $failed_types[ $submission_data['failed'] ] ) ) :
@@ -98,9 +97,7 @@ endif;
98
  ?>
99
  </ul>
100
 
101
- <button class="button action zerospam-block-trigger" data-id="<?php echo esc_attr( $item['log_id'] ); ?>">
102
- <?php esc_html_e( 'Block IP', 'zero-spam' ); ?>
103
- </button>
104
 
105
  <?php if ( ! empty( $item['latitude'] ) && ! empty( $item['longitude'] ) ) : ?>
106
  <h4 class="zerospam-modal-headline"><?php esc_html_e( 'Location', 'zero-spam' ); ?></h4>
@@ -108,16 +105,16 @@ endif;
108
  $coordinates = $item['latitude'] . ',' . $item['longitude'];
109
  do_action( 'zerospam_google_map', $coordinates );
110
  ?>
111
- <ul class="zerospam-modal-list">
112
  <?php if ( ! empty( $item['country'] ) ) : ?>
113
  <li>
114
- <strong><?php esc_html_e( 'Country', 'zero-spam' ); ?></strong>
115
- <span>
116
  <?php
117
  $country_name = ! empty( $item['country_name'] ) ? $item['country_name'] : false;
118
- $flag = ZeroSpam\Core\Utilities::country_flag_url( $item['country'] );
119
 
120
- $country = '<img src="' . esc_url( $flag ) . '" width="16" height="16" alt="' . esc_attr( $country_name . ' (' . $item['country'] . ')' ) . '" class="zerospam-flag" />';
121
  if ( $country_name ) {
122
  $country .= esc_html( $country_name . ' (' . $item['country'] . ')' );
123
  } else {
@@ -128,6 +125,7 @@ endif;
128
  $country,
129
  array(
130
  'img' => array(
 
131
  'width' => array(),
132
  'height' => array(),
133
  'alt' => array(),
@@ -141,8 +139,8 @@ endif;
141
  <?php endif; ?>
142
  <?php if ( ! empty( $item['region'] ) || ! empty( $item['region_name'] ) ) : ?>
143
  <li>
144
- <strong><?php esc_html_e( 'Region', 'zero-spam' ); ?></strong>
145
- <span>
146
  <?php if ( ! empty( $item['region_name'] ) ) : ?>
147
  <?php echo esc_html( $item['region_name'] ); ?>
148
  <?php endif; ?>
@@ -154,22 +152,22 @@ endif;
154
  <?php endif; ?>
155
  <?php if ( ! empty( $item['city'] ) ) : ?>
156
  <li>
157
- <strong><?php echo esc_html_e( 'City', 'zero-spam' ); ?></strong>
158
- <span><?php echo esc_html( $item['city'] ); ?>
159
  </span>
160
  </li>
161
  <?php endif; ?>
162
  <?php if ( ! empty( $item['zip'] ) ) : ?>
163
  <li>
164
- <strong><?php echo esc_html_e( 'Zip/Postal Code', 'zero-spam' ); ?></strong>
165
- <span><?php echo esc_html( $item['zip'] ); ?>
166
  </span>
167
  </li>
168
  <?php endif; ?>
169
  <?php if ( ! empty( $item['latitude'] ) || ! empty( $item['region_name'] ) ) : ?>
170
  <li>
171
- <strong><?php echo esc_html_e( 'Coordinates', 'zero-spam' ); ?></strong>
172
- <span>
173
  <?php if ( ! empty( $item['latitude'] ) ) : ?>
174
  <?php echo esc_html( $item['latitude'] ); ?>&deg;,
175
  <?php endif; ?>
@@ -188,12 +186,12 @@ endif;
188
  <?php
189
 
190
  if ( $submission_data ) :
191
- echo '<ul class="zerospam-modal-list">';
192
  foreach ( $submission_data as $key => $value ) :
193
  ?>
194
  <li>
195
- <strong><?php echo esc_html( $key ); ?></strong>
196
- <span>
197
  <?php
198
  if ( is_array( $value ) ) :
199
  // Sanatize the array.
15
  endif;
16
  ?>
17
  <div class="zerospam-modal-details">
18
+ <ul class="zerospam-list zerospam-list--data">
19
+ <li>
20
+ <span class="zerospam-list__label"><?php esc_html_e( 'Date', 'zero-spam' ); ?></span>
21
+ <span class="zerospam-list__value">
22
+ <?php
23
+ echo esc_html(
24
+ gmdate(
25
+ 'M j, Y g:ia',
26
+ strtotime( $item['date_recorded'] )
27
+ )
28
+ );
29
+ ?>
30
+ </span>
31
+ </li>
 
32
  <li>
33
+ <span class="zerospam-list__label"><?php esc_html_e( 'IP Address', 'zero-spam' ); ?></span>
34
+ <span class="zerospam-list__value">
35
  <?php
36
  $lookup_url = ZEROSPAM_URL . 'ip-lookup/';
37
  $lookup_url .= rawurlencode( $item['user_ip'] ) . '/';
59
  </span>
60
  </li>
61
  <li>
62
+ <span class="zerospam-list__label"><?php esc_html_e( 'Type', 'zero-spam' ); ?></span>
63
+ <span class="zerospam-list__value">
64
  <?php
65
  $detection_types = apply_filters( 'zerospam_types', array() );
66
  if ( ! empty( $detection_types[ $item['log_type'] ] ) ) :
76
  </li>
77
  <?php if ( $submission_data && ! empty( $submission_data['failed'] ) ) : ?>
78
  <li>
79
+ <span class="zerospam-list__label"><?php esc_html_e( 'Failed', 'zero-spam' ); ?></span>
80
+ <span class="zerospam-list__value">
81
  <?php
82
  $failed_types = apply_filters( 'zerospam_failed_types', array() );
83
  if ( ! empty( $failed_types[ $submission_data['failed'] ] ) ) :
97
  ?>
98
  </ul>
99
 
100
+ <button class="button zerospam-block-trigger" data-ip="<?php echo esc_attr( $item['user_ip'] ); ?>"><?php esc_html_e( 'Block IP', 'zero-spam' ); ?></button>
 
 
101
 
102
  <?php if ( ! empty( $item['latitude'] ) && ! empty( $item['longitude'] ) ) : ?>
103
  <h4 class="zerospam-modal-headline"><?php esc_html_e( 'Location', 'zero-spam' ); ?></h4>
105
  $coordinates = $item['latitude'] . ',' . $item['longitude'];
106
  do_action( 'zerospam_google_map', $coordinates );
107
  ?>
108
+ <ul class="zerospam-list zerospam-list--data">
109
  <?php if ( ! empty( $item['country'] ) ) : ?>
110
  <li>
111
+ <span class="zerospam-list__label"><?php esc_html_e( 'Country', 'zero-spam' ); ?></span>
112
+ <span class="zerospam-list__value">
113
  <?php
114
  $country_name = ! empty( $item['country_name'] ) ? $item['country_name'] : false;
115
+ $flag = \ZeroSpam\Core\Utilities::country_flag_url( $item['country'] );
116
 
117
+ $country = '<img src="' . $flag . '" width="16" height="16" alt="' . esc_attr( $country_name . ' (' . $item['country'] . ')' ) . '" class="zerospam-flag" />';
118
  if ( $country_name ) {
119
  $country .= esc_html( $country_name . ' (' . $item['country'] . ')' );
120
  } else {
125
  $country,
126
  array(
127
  'img' => array(
128
+ 'src' => array(),
129
  'width' => array(),
130
  'height' => array(),
131
  'alt' => array(),
139
  <?php endif; ?>
140
  <?php if ( ! empty( $item['region'] ) || ! empty( $item['region_name'] ) ) : ?>
141
  <li>
142
+ <span class="zerospam-list__label"><?php esc_html_e( 'Region', 'zero-spam' ); ?></span>
143
+ <span class="zerospam-list__value">
144
  <?php if ( ! empty( $item['region_name'] ) ) : ?>
145
  <?php echo esc_html( $item['region_name'] ); ?>
146
  <?php endif; ?>
152
  <?php endif; ?>
153
  <?php if ( ! empty( $item['city'] ) ) : ?>
154
  <li>
155
+ <span class="zerospam-list__label"><?php echo esc_html_e( 'City', 'zero-spam' ); ?></span>
156
+ <span class="zerospam-list__value"><?php echo esc_html( $item['city'] ); ?>
157
  </span>
158
  </li>
159
  <?php endif; ?>
160
  <?php if ( ! empty( $item['zip'] ) ) : ?>
161
  <li>
162
+ <span class="zerospam-list__label"><?php echo esc_html_e( 'Zip/Postal Code', 'zero-spam' ); ?></span>
163
+ <span class="zerospam-list__value"><?php echo esc_html( $item['zip'] ); ?>
164
  </span>
165
  </li>
166
  <?php endif; ?>
167
  <?php if ( ! empty( $item['latitude'] ) || ! empty( $item['region_name'] ) ) : ?>
168
  <li>
169
+ <span class="zerospam-list__label"><?php echo esc_html_e( 'Coordinates', 'zero-spam' ); ?></span>
170
+ <span class="zerospam-list__value">
171
  <?php if ( ! empty( $item['latitude'] ) ) : ?>
172
  <?php echo esc_html( $item['latitude'] ); ?>&deg;,
173
  <?php endif; ?>
186
  <?php
187
 
188
  if ( $submission_data ) :
189
+ echo '<ul class="zerospam-list zerospam-list--data">';
190
  foreach ( $submission_data as $key => $value ) :
191
  ?>
192
  <li>
193
+ <span class="zerospam-list__label"><?php echo esc_html( $key ); ?></span>
194
+ <span class="zerospam-list__value">
195
  <?php
196
  if ( is_array( $value ) ) :
197
  // Sanatize the array.
includes/templates/settings/errors.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- /**
3
- * Settings: Error log template
4
- *
5
- * @package ZeroSpam
6
- */
7
-
8
- $log = \ZeroSpam\Core\Utilities::get_error_log();
9
- if ( ! $log ) {
10
- esc_html_e( 'Yay! No errors have been reported.', 'zero-spam' );
11
- return;
12
- }
13
- ?>
14
-
15
- <textarea readonly class="large-text code" rows="30"><?php echo esc_html( $log ); ?></textarea>
16
- <a
17
- href="<?php echo esc_url( wp_nonce_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings&zerospam-action=delete-error-log' ), 'delete-error-log', 'zero-spam' ) ); ?>"
18
- class="button button-primary"
19
- >
20
- <?php esc_html_e( 'Clear Error Log', 'zero-spam' ); ?>
21
- </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/templates/settings/export.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- /**
3
- * Settings: Export/import template
4
- *
5
- * @package ZeroSpam
6
- */
7
-
8
- ?>
9
-
10
- <?php if ( ! empty( $_GET['zerospam-error'] ) ) : ?>
11
- <div class="notice notice-error is-dismissible">
12
- <p><strong>
13
- <?php
14
- switch( intval( $_GET['zerospam-error'] ) ) :
15
- case 1:
16
- esc_html_e( 'There was a problem importing the settings JSON. Please try again.', 'zero-spam' );
17
- break;
18
- endswitch;
19
- ?>
20
- </strong></p>
21
- <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'zero-spam' ); ?></span></button>
22
- </div>
23
- <?php elseif ( ! empty( $_GET['zerospam-success'] ) ) : ?>
24
- <div class="notice notice-success is-dismissible">
25
- <p><strong><?php esc_html_e( 'The settings JSON has been successfully imported.', 'zero-spam' ); ?></strong></p>
26
- <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'zero-spam' ); ?>.</span></button>
27
- </div>
28
- <?php endif; ?>
29
-
30
- <h3><?php esc_html_e( 'Settings Import/Export', 'zero-spam' ); ?></h3>
31
- <p><?php esc_html_e( 'Quickly export and import your saved settings into other sites below.', 'zero-spam' ); ?></p>
32
- <?php
33
- $settings = ZeroSpam\Core\Settings::get_settings();
34
- $settings_json = array();
35
- foreach ( $settings as $key => $data ) :
36
- if ( isset( $data['value'] ) ) :
37
- $settings_json[ $key ] = $data['value'];
38
- endif;
39
- endforeach;
40
- ?>
41
- <div class="zerospam-export-import-block">
42
- <div class="zerospam-export-import-block-column">
43
- <h4><?php esc_html_e( 'Settings JSON', 'zero-spam' ); ?></h4>
44
- <textarea readonly class="large-text code" rows="10"><?php echo wp_json_encode( $settings_json ); ?></textarea>
45
- </div>
46
- <div class="zerospam-export-import-block-column">
47
- <h4><?php esc_html_e( 'Paste the settings JSON to import.', 'zero-spam' ); ?></h4>
48
- <form method="post" action="<?php echo esc_url( admin_url( 'admin.php' ) ); ?>" class="zerospam-import-settings-form">
49
- <?php wp_nonce_field( 'import_settings', 'zerospam' ); ?>
50
- <input type="hidden" name="action" value="import_settings" />
51
- <input type="hidden" name="redirect" value="<?php echo esc_url( ZeroSpam\Core\Utilities::current_url() ); ?>" />
52
- <textarea class="large-text code" name="settings" rows="10"></textarea>
53
- <input type="submit" class="button button-primary" value="<?php esc_html_e( 'Import Settings', 'zero-spam' ); ?>" />
54
- </form>
55
- </div>
56
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/templates/settings/settings.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- /**
3
- * Settings: Export/import template
4
- *
5
- * @package ZeroSpam
6
- */
7
-
8
- ?>
9
-
10
- <form action="options.php" method="post">
11
- <?php
12
- // Output security fields for the registered setting "wpzerospam".
13
- settings_fields( 'wpzerospam' );
14
-
15
- echo '<div class="zerospam-settings-tabs">';
16
- // Output setting sections and their fields.
17
- do_settings_sections( 'wpzerospam' );
18
-
19
- // Output save settings button.
20
- submit_button( 'Save Settings' );
21
- ?>
22
- </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
modules/class-debug.php CHANGED
@@ -26,7 +26,7 @@ class Debug {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_get_ip', array( $this, 'debug_ip' ), 10, 1 );
31
  }
32
 
@@ -56,6 +56,7 @@ class Debug {
56
  public function sections( $sections ) {
57
  $sections['debug'] = array(
58
  'title' => __( 'Debug', 'zero-spam' ),
 
59
  );
60
 
61
  return $sections;
@@ -65,16 +66,18 @@ class Debug {
65
  * Admin settings
66
  *
67
  * @param array $settings Array of available settings.
68
- * @param array $options Array of saved database options.
69
  */
70
- public function settings( $settings, $options ) {
 
 
71
  $settings['debug'] = array(
72
  'title' => __( 'Debug', 'zero-spam' ),
73
- 'desc' => __( 'For troubleshooting site issues.', 'zero-spam' ),
74
  'section' => 'debug',
 
75
  'type' => 'checkbox',
76
  'options' => array(
77
- 'enabled' => __( 'Enabled', 'zero-spam' ),
78
  ),
79
  'value' => ! empty( $options['debug'] ) ? $options['debug'] : false,
80
  );
@@ -83,12 +86,13 @@ class Debug {
83
  'title' => __( 'Debug IP', 'zero-spam' ),
84
  'desc' => wp_kses(
85
  /* translators: %s: url */
86
- __( 'Mock a IP address for debugging. <strong>WARNING: This overrides all visitor IP addresses and while enabled could block legit visitors from accessing the site.</strong>', 'zero-spam' ),
87
  array(
88
  'strong' => array(),
89
  )
90
  ),
91
  'section' => 'debug',
 
92
  'type' => 'text',
93
  'placeholder' => '127.0.0.1',
94
  'value' => ! empty( $options['debug_ip'] ) ? $options['debug_ip'] : false,
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
  add_filter( 'zerospam_get_ip', array( $this, 'debug_ip' ), 10, 1 );
31
  }
32
 
56
  public function sections( $sections ) {
57
  $sections['debug'] = array(
58
  'title' => __( 'Debug', 'zero-spam' ),
59
+ 'icon' => 'assets/img/icon-bug.svg'
60
  );
61
 
62
  return $sections;
66
  * Admin settings
67
  *
68
  * @param array $settings Array of available settings.
 
69
  */
70
+ public function settings( $settings ) {
71
+ $options = get_option( 'zero-spam-debug' );
72
+
73
  $settings['debug'] = array(
74
  'title' => __( 'Debug', 'zero-spam' ),
75
+ 'desc' => __( 'When enabled, provides verbose logging & allows the site admin to test an IP address access.', 'zero-spam' ),
76
  'section' => 'debug',
77
+ 'module' => 'debug',
78
  'type' => 'checkbox',
79
  'options' => array(
80
+ 'enabled' => false,
81
  ),
82
  'value' => ! empty( $options['debug'] ) ? $options['debug'] : false,
83
  );
86
  'title' => __( 'Debug IP', 'zero-spam' ),
87
  'desc' => wp_kses(
88
  /* translators: %s: url */
89
+ __( 'Mock an IP address for debugging. This overrides all visitor IP addresses and <strong>while enabled could block legit visitors from accessing the site</strong>.', 'zero-spam' ),
90
  array(
91
  'strong' => array(),
92
  )
93
  ),
94
  'section' => 'debug',
95
+ 'module' => 'debug',
96
  'type' => 'text',
97
  'placeholder' => '127.0.0.1',
98
  'value' => ! empty( $options['debug_ip'] ) ? $options['debug_ip'] : false,
modules/class-google.php CHANGED
@@ -26,7 +26,7 @@ class Google {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
 
31
  $api_key = \ZeroSpam\Core\Settings::get_settings( 'google_api' );
32
  if ( ! empty( $api_key ) ) {
@@ -69,7 +69,8 @@ class Google {
69
  */
70
  public function sections( $sections ) {
71
  $sections['google'] = array(
72
- 'title' => __( 'Google API Integration (geolocation)', 'zero-spam' ),
 
73
  );
74
 
75
  return $sections;
@@ -79,12 +80,14 @@ class Google {
79
  * Admin settings
80
  *
81
  * @param array $settings Array of available settings.
82
- * @param array $options Array of saved database options.
83
  */
84
- public function settings( $settings, $options ) {
 
 
85
  $settings['google_api'] = array(
86
  'title' => __( 'Google API Key', 'zero-spam' ),
87
  'section' => 'google',
 
88
  'type' => 'text',
89
  'field_class' => 'regular-text',
90
  'placeholder' => __( 'Enter your Google API key.', 'zero-spam' ),
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
 
31
  $api_key = \ZeroSpam\Core\Settings::get_settings( 'google_api' );
32
  if ( ! empty( $api_key ) ) {
69
  */
70
  public function sections( $sections ) {
71
  $sections['google'] = array(
72
+ 'title' => __( 'Google Map', 'zero-spam' ),
73
+ 'icon' => 'assets/img/icon-google.svg'
74
  );
75
 
76
  return $sections;
80
  * Admin settings
81
  *
82
  * @param array $settings Array of available settings.
 
83
  */
84
+ public function settings( $settings ) {
85
+ $options = get_option( 'zero-spam-google' );
86
+
87
  $settings['google_api'] = array(
88
  'title' => __( 'Google API Key', 'zero-spam' ),
89
  'section' => 'google',
90
+ 'module' => 'google',
91
  'type' => 'text',
92
  'field_class' => 'regular-text',
93
  'placeholder' => __( 'Enter your Google API key.', 'zero-spam' ),
modules/class-ipinfomodule.php CHANGED
@@ -28,7 +28,7 @@ class IPinfoModule {
28
  */
29
  public function init() {
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
32
  add_filter( 'zerospam_log_record', array( $this, 'log_record' ) );
33
  }
34
 
@@ -39,7 +39,8 @@ class IPinfoModule {
39
  */
40
  public function sections( $sections ) {
41
  $sections['ipinfo'] = array(
42
- 'title' => __( 'IPinfo Integration (geolocation)', 'zero-spam' ),
 
43
  );
44
 
45
  return $sections;
@@ -49,9 +50,10 @@ class IPinfoModule {
49
  * Admin settings
50
  *
51
  * @param array $settings Array of available settings.
52
- * @param array $options Array of saved database options.
53
  */
54
- public function settings( $settings, $options ) {
 
 
55
  $settings['ipinfo_access_token'] = array(
56
  'title' => __( 'Access Token', 'zero-spam' ),
57
  'desc' => sprintf(
@@ -71,6 +73,7 @@ class IPinfoModule {
71
  esc_url( 'https://ipinfo.io/signup/' )
72
  ),
73
  'section' => 'ipinfo',
 
74
  'type' => 'text',
75
  'field_class' => 'regular-text',
76
  'placeholder' => __( 'Enter your IPinfo access token.', 'zero-spam' ),
@@ -80,6 +83,7 @@ class IPinfoModule {
80
  $settings['ipinfo_cache'] = array(
81
  'title' => __( 'Cache Expiration', 'zero-spam' ),
82
  'section' => 'ipinfo',
 
83
  'type' => 'number',
84
  'field_class' => 'small-text',
85
  'suffix' => __( 'day(s)', 'zero-spam' ),
@@ -158,9 +162,9 @@ class IPinfoModule {
158
  $client = new IPinfo( $settings['ipinfo_access_token']['value'] );
159
  $result = $client->getDetails( $ip );
160
  } catch ( \ipinfo\ipinfo\IPinfoException $e ) {
161
- \ZeroSpam\Core\Utilities::log( $e->__toString() );
162
  } catch ( Exception $e ) {
163
- \ZeroSpam\Core\Utilities::log( $e->__toString() );
164
  }
165
 
166
  if ( $result ) {
28
  */
29
  public function init() {
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
32
  add_filter( 'zerospam_log_record', array( $this, 'log_record' ) );
33
  }
34
 
39
  */
40
  public function sections( $sections ) {
41
  $sections['ipinfo'] = array(
42
+ 'title' => __( 'IPinfo (geolocation)', 'zero-spam' ),
43
+ 'icon' => 'assets/img/icon-ipinfo.svg'
44
  );
45
 
46
  return $sections;
50
  * Admin settings
51
  *
52
  * @param array $settings Array of available settings.
 
53
  */
54
+ public function settings( $settings ) {
55
+ $options = get_option( 'zero-spam-ipinfo' );
56
+
57
  $settings['ipinfo_access_token'] = array(
58
  'title' => __( 'Access Token', 'zero-spam' ),
59
  'desc' => sprintf(
73
  esc_url( 'https://ipinfo.io/signup/' )
74
  ),
75
  'section' => 'ipinfo',
76
+ 'module' => 'ipinfo',
77
  'type' => 'text',
78
  'field_class' => 'regular-text',
79
  'placeholder' => __( 'Enter your IPinfo access token.', 'zero-spam' ),
83
  $settings['ipinfo_cache'] = array(
84
  'title' => __( 'Cache Expiration', 'zero-spam' ),
85
  'section' => 'ipinfo',
86
+ 'module' => 'ipinfo',
87
  'type' => 'number',
88
  'field_class' => 'small-text',
89
  'suffix' => __( 'day(s)', 'zero-spam' ),
162
  $client = new IPinfo( $settings['ipinfo_access_token']['value'] );
163
  $result = $client->getDetails( $ip );
164
  } catch ( \ipinfo\ipinfo\IPinfoException $e ) {
165
+ \ZeroSpam\Core\Utilities::log( 'ipinfo: ' . $e->__toString() );
166
  } catch ( Exception $e ) {
167
+ \ZeroSpam\Core\Utilities::log( 'ipinfo: ' . $e->__toString() );
168
  }
169
 
170
  if ( $result ) {
modules/class-ipstack.php CHANGED
@@ -26,7 +26,7 @@ class ipstack {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_log_record', array( $this, 'log_record' ) );
31
  }
32
 
@@ -37,7 +37,8 @@ class ipstack {
37
  */
38
  public function sections( $sections ) {
39
  $sections['ipstack'] = array(
40
- 'title' => __( 'ipstack Integration (geolocation)', 'zero-spam' ),
 
41
  );
42
 
43
  return $sections;
@@ -47,9 +48,10 @@ class ipstack {
47
  * Admin settings
48
  *
49
  * @param array $settings Array of available settings.
50
- * @param array $options Array of saved database options.
51
  */
52
- public function settings( $settings, $options ) {
 
 
53
  $settings['ipstack_api'] = array(
54
  'title' => __( 'API Key', 'zero-spam' ),
55
  'desc' => sprintf(
@@ -69,6 +71,7 @@ class ipstack {
69
  esc_url( 'https://ipstack.com/product?fpr=zerospam' )
70
  ),
71
  'section' => 'ipstack',
 
72
  'type' => 'text',
73
  'field_class' => 'regular-text',
74
  'placeholder' => __( 'Enter your ipstack API key.', 'zero-spam' ),
@@ -78,6 +81,7 @@ class ipstack {
78
  $settings['ipstack_timeout'] = array(
79
  'title' => __( 'API Timeout', 'zero-spam' ),
80
  'section' => 'ipstack',
 
81
  'type' => 'number',
82
  'field_class' => 'small-text',
83
  'suffix' => __( 'seconds', 'zero-spam' ),
@@ -90,6 +94,7 @@ class ipstack {
90
  $settings['ipstack_cache'] = array(
91
  'title' => __( 'Cache Expiration', 'zero-spam' ),
92
  'section' => 'ipstack',
 
93
  'type' => 'number',
94
  'field_class' => 'small-text',
95
  'suffix' => __( 'day(s)', 'zero-spam' ),
@@ -179,6 +184,12 @@ class ipstack {
179
  if ( $response ) {
180
  $result = json_decode( $response, true );
181
 
 
 
 
 
 
 
182
  $expiration = 14 * DAY_IN_SECONDS;
183
  if ( ! empty( $settings['ipstack_cache']['value'] ) ) {
184
  $expiration = $settings['ipstack_cache']['value'] * DAY_IN_SECONDS;
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
  add_filter( 'zerospam_log_record', array( $this, 'log_record' ) );
31
  }
32
 
37
  */
38
  public function sections( $sections ) {
39
  $sections['ipstack'] = array(
40
+ 'title' => __( 'ipstack (geolocation)', 'zero-spam' ),
41
+ 'icon' => 'assets/img/icon-ipstack.svg'
42
  );
43
 
44
  return $sections;
48
  * Admin settings
49
  *
50
  * @param array $settings Array of available settings.
 
51
  */
52
+ public function settings( $settings ) {
53
+ $options = get_option( 'zero-spam-ipstack' );
54
+
55
  $settings['ipstack_api'] = array(
56
  'title' => __( 'API Key', 'zero-spam' ),
57
  'desc' => sprintf(
71
  esc_url( 'https://ipstack.com/product?fpr=zerospam' )
72
  ),
73
  'section' => 'ipstack',
74
+ 'module' => 'ipstack',
75
  'type' => 'text',
76
  'field_class' => 'regular-text',
77
  'placeholder' => __( 'Enter your ipstack API key.', 'zero-spam' ),
81
  $settings['ipstack_timeout'] = array(
82
  'title' => __( 'API Timeout', 'zero-spam' ),
83
  'section' => 'ipstack',
84
+ 'module' => 'ipstack',
85
  'type' => 'number',
86
  'field_class' => 'small-text',
87
  'suffix' => __( 'seconds', 'zero-spam' ),
94
  $settings['ipstack_cache'] = array(
95
  'title' => __( 'Cache Expiration', 'zero-spam' ),
96
  'section' => 'ipstack',
97
+ 'module' => 'ipstack',
98
  'type' => 'number',
99
  'field_class' => 'small-text',
100
  'suffix' => __( 'day(s)', 'zero-spam' ),
184
  if ( $response ) {
185
  $result = json_decode( $response, true );
186
 
187
+ if ( ! empty( $result ) && ! empty( $result['error'] ) ) {
188
+ \ZeroSpam\Core\Utilities::log( 'ipstack: ' . json_encode( $result['error'] ));
189
+
190
+ return false;
191
+ }
192
+
193
  $expiration = 14 * DAY_IN_SECONDS;
194
  if ( ! empty( $settings['ipstack_cache']['value'] ) ) {
195
  $expiration = $settings['ipstack_cache']['value'] * DAY_IN_SECONDS;
modules/class-projecthoneypot.php CHANGED
@@ -26,7 +26,7 @@ class ProjectHoneypot {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
 
31
  if ( \ZeroSpam\Core\Access::process() ) {
32
  add_filter( 'zerospam_access_checks', array( $this, 'access_check' ), 10, 2 );
@@ -91,11 +91,6 @@ class ProjectHoneypot {
91
 
92
  $response = wp_cache_get( $cache_key );
93
  if ( false === $response ) {
94
- $timeout = 5;
95
- if ( ! empty( $settings['project_honeypot_timeout']['value'] ) ) {
96
- $timeout = intval( $settings['project_honeypot_timeout']['value'] );
97
- }
98
-
99
  $octets = explode( '.', $ip );
100
  krsort( $octets );
101
 
@@ -105,11 +100,13 @@ class ProjectHoneypot {
105
  $dns_array = dns_get_record( $endpoint, DNS_A );
106
 
107
  if ( ! isset( $dns_array[0]['ip'] ) ) {
 
108
  return false;
109
  }
110
 
111
  $results = explode( '.', $dns_array[0]['ip'] );
112
  if ( '127' !== $results[0] ) {
 
113
  return false;
114
  }
115
 
@@ -168,7 +165,8 @@ class ProjectHoneypot {
168
  */
169
  public function sections( $sections ) {
170
  $sections['project_honeypot'] = array(
171
- 'title' => __( 'Project Honeypot Integration', 'zero-spam' ),
 
172
  );
173
 
174
  return $sections;
@@ -178,12 +176,14 @@ class ProjectHoneypot {
178
  * Admin settings
179
  *
180
  * @param array $settings Array of available settings.
181
- * @param array $options Array of saved database options.
182
  */
183
- public function settings( $settings, $options ) {
 
 
184
  $settings['project_honeypot'] = array(
185
  'title' => __( 'Status', 'zero-spam' ),
186
  'section' => 'project_honeypot',
 
187
  'type' => 'checkbox',
188
  'options' => array(
189
  'enabled' => __( 'Enabled', 'zero-spam' ),
@@ -226,6 +226,7 @@ class ProjectHoneypot {
226
  esc_url( 'https://www.projecthoneypot.org/create_account.php' )
227
  ),
228
  'section' => 'project_honeypot',
 
229
  'type' => 'text',
230
  'field_class' => 'regular-text',
231
  'placeholder' => __( 'Enter your Project Honeypot access key.', 'zero-spam' ),
@@ -235,6 +236,7 @@ class ProjectHoneypot {
235
  $settings['project_honeypot_cache'] = array(
236
  'title' => __( 'Cache Expiration', 'zero-spam' ),
237
  'section' => 'project_honeypot',
 
238
  'type' => 'number',
239
  'field_class' => 'small-text',
240
  'suffix' => __( 'day(s)', 'zero-spam' ),
@@ -248,6 +250,7 @@ class ProjectHoneypot {
248
  $settings['project_honeypot_score_min'] = array(
249
  'title' => __( 'Threat Score Minimum', 'zero-spam' ),
250
  'section' => 'project_honeypot',
 
251
  'type' => 'number',
252
  'field_class' => 'small-text',
253
  'placeholder' => __( '50', 'zero-spam' ),
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
 
31
  if ( \ZeroSpam\Core\Access::process() ) {
32
  add_filter( 'zerospam_access_checks', array( $this, 'access_check' ), 10, 2 );
91
 
92
  $response = wp_cache_get( $cache_key );
93
  if ( false === $response ) {
 
 
 
 
 
94
  $octets = explode( '.', $ip );
95
  krsort( $octets );
96
 
100
  $dns_array = dns_get_record( $endpoint, DNS_A );
101
 
102
  if ( ! isset( $dns_array[0]['ip'] ) ) {
103
+ \ZeroSpam\Core\Utilities::log( 'Project Honeypot Error: could not query the IP' );
104
  return false;
105
  }
106
 
107
  $results = explode( '.', $dns_array[0]['ip'] );
108
  if ( '127' !== $results[0] ) {
109
+ \ZeroSpam\Core\Utilities::log( 'Project Honeypot Error: query error' );
110
  return false;
111
  }
112
 
165
  */
166
  public function sections( $sections ) {
167
  $sections['project_honeypot'] = array(
168
+ 'title' => __( 'Project Honeypot', 'zero-spam' ),
169
+ 'icon' => 'assets/img/icon-honeypot.svg'
170
  );
171
 
172
  return $sections;
176
  * Admin settings
177
  *
178
  * @param array $settings Array of available settings.
 
179
  */
180
+ public function settings( $settings ) {
181
+ $options = get_option( 'zero-spam-project_honeypot' );
182
+
183
  $settings['project_honeypot'] = array(
184
  'title' => __( 'Status', 'zero-spam' ),
185
  'section' => 'project_honeypot',
186
+ 'module' => 'project_honeypot',
187
  'type' => 'checkbox',
188
  'options' => array(
189
  'enabled' => __( 'Enabled', 'zero-spam' ),
226
  esc_url( 'https://www.projecthoneypot.org/create_account.php' )
227
  ),
228
  'section' => 'project_honeypot',
229
+ 'module' => 'project_honeypot',
230
  'type' => 'text',
231
  'field_class' => 'regular-text',
232
  'placeholder' => __( 'Enter your Project Honeypot access key.', 'zero-spam' ),
236
  $settings['project_honeypot_cache'] = array(
237
  'title' => __( 'Cache Expiration', 'zero-spam' ),
238
  'section' => 'project_honeypot',
239
+ 'module' => 'project_honeypot',
240
  'type' => 'number',
241
  'field_class' => 'small-text',
242
  'suffix' => __( 'day(s)', 'zero-spam' ),
250
  $settings['project_honeypot_score_min'] = array(
251
  'title' => __( 'Threat Score Minimum', 'zero-spam' ),
252
  'section' => 'project_honeypot',
253
+ 'module' => 'project_honeypot',
254
  'type' => 'number',
255
  'field_class' => 'small-text',
256
  'placeholder' => __( '50', 'zero-spam' ),
modules/class-security.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Site security
4
+ *
5
+ * Implement Zero Spam's recommended WordPress security practices.
6
+ *
7
+ * @package ZeroSpam
8
+ */
9
+
10
+ namespace ZeroSpam\Modules;
11
+
12
+ // Security Note: Blocks direct access to the plugin PHP files.
13
+ defined( 'ABSPATH' ) || die();
14
+
15
+ /**
16
+ * Security class
17
+ */
18
+ class Security {
19
+ /**
20
+ * Constructor
21
+ */
22
+ public function __construct() {
23
+ // It can be considered a security risk to make your WP version visible &
24
+ // public you should hide it.
25
+ remove_action( 'wp_head', 'wp_generator' );
26
+
27
+ // XML-RPC can significantly amplify the brute-force attacks.
28
+ add_filter( 'xmlrpc_enabled', '__return_false' );
29
+ }
30
+ }
modules/class-stopforumspam.php CHANGED
@@ -26,7 +26,7 @@ class StopForumSpam {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
 
31
  if (
32
  'enabled' === \ZeroSpam\Core\Settings::get_settings( 'stop_forum_spam' ) &&
@@ -45,7 +45,8 @@ class StopForumSpam {
45
  */
46
  public function sections( $sections ) {
47
  $sections['stop_forum_spam'] = array(
48
- 'title' => __( 'Stop Forum Spam Integration', 'zero-spam' ),
 
49
  );
50
 
51
  return $sections;
@@ -55,12 +56,14 @@ class StopForumSpam {
55
  * Admin settings
56
  *
57
  * @param array $settings Array of available settings.
58
- * @param array $options Array of saved database options.
59
  */
60
- public function settings( $settings, $options ) {
 
 
61
  $settings['stop_forum_spam'] = array(
62
  'title' => __( 'Status', 'zero-spam' ),
63
  'section' => 'stop_forum_spam',
 
64
  'type' => 'checkbox',
65
  'options' => array(
66
  'enabled' => __( 'Enabled', 'zero-spam' ),
@@ -87,6 +90,7 @@ class StopForumSpam {
87
  $settings['stop_forum_spam_timeout'] = array(
88
  'title' => __( 'API Timeout', 'zero-spam' ),
89
  'section' => 'stop_forum_spam',
 
90
  'type' => 'number',
91
  'field_class' => 'small-text',
92
  'suffix' => __( 'seconds', 'zero-spam' ),
@@ -100,6 +104,7 @@ class StopForumSpam {
100
  $settings['stop_forum_spam_cache'] = array(
101
  'title' => __( 'Cache Expiration', 'zero-spam' ),
102
  'section' => 'stop_forum_spam',
 
103
  'type' => 'number',
104
  'field_class' => 'small-text',
105
  'suffix' => __( 'day(s)', 'zero-spam' ),
@@ -113,6 +118,7 @@ class StopForumSpam {
113
  $settings['stop_forum_spam_confidence_min'] = array(
114
  'title' => __( 'Confidence Minimum', 'zero-spam' ),
115
  'section' => 'stop_forum_spam',
 
116
  'type' => 'number',
117
  'field_class' => 'small-text',
118
  'suffix' => __( '%', 'zero-spam' ),
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
 
31
  if (
32
  'enabled' === \ZeroSpam\Core\Settings::get_settings( 'stop_forum_spam' ) &&
45
  */
46
  public function sections( $sections ) {
47
  $sections['stop_forum_spam'] = array(
48
+ 'title' => __( 'Stop Forum Spam', 'zero-spam' ),
49
+ 'icon' => 'assets/img/icon-stop-forum-spam.png'
50
  );
51
 
52
  return $sections;
56
  * Admin settings
57
  *
58
  * @param array $settings Array of available settings.
 
59
  */
60
+ public function settings( $settings ) {
61
+ $options = get_option( 'zero-spam-stop_forum_spam' );
62
+
63
  $settings['stop_forum_spam'] = array(
64
  'title' => __( 'Status', 'zero-spam' ),
65
  'section' => 'stop_forum_spam',
66
+ 'module' => 'stop_forum_spam',
67
  'type' => 'checkbox',
68
  'options' => array(
69
  'enabled' => __( 'Enabled', 'zero-spam' ),
90
  $settings['stop_forum_spam_timeout'] = array(
91
  'title' => __( 'API Timeout', 'zero-spam' ),
92
  'section' => 'stop_forum_spam',
93
+ 'module' => 'stop_forum_spam',
94
  'type' => 'number',
95
  'field_class' => 'small-text',
96
  'suffix' => __( 'seconds', 'zero-spam' ),
104
  $settings['stop_forum_spam_cache'] = array(
105
  'title' => __( 'Cache Expiration', 'zero-spam' ),
106
  'section' => 'stop_forum_spam',
107
+ 'module' => 'stop_forum_spam',
108
  'type' => 'number',
109
  'field_class' => 'small-text',
110
  'suffix' => __( 'day(s)', 'zero-spam' ),
118
  $settings['stop_forum_spam_confidence_min'] = array(
119
  'title' => __( 'Confidence Minimum', 'zero-spam' ),
120
  'section' => 'stop_forum_spam',
121
+ 'module' => 'stop_forum_spam',
122
  'type' => 'number',
123
  'field_class' => 'small-text',
124
  'suffix' => __( '%', 'zero-spam' ),
modules/class-zerospam.php CHANGED
@@ -32,11 +32,7 @@ class Zero_Spam {
32
  */
33
  public function init() {
34
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
35
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
36
-
37
- // Displays any available admin notices.
38
- add_action( 'admin_notices', array( $this, 'admin_notices' ) );
39
- add_action( 'admin_init', array( $this, 'check_notice_dismissal' ) );
40
 
41
  // Fires when a user submission has been detected as spam.
42
  add_action( 'zerospam_share_detection', array( $this, 'share_detection' ), 10, 1 );
@@ -94,7 +90,8 @@ class Zero_Spam {
94
  */
95
  public function sections( $sections ) {
96
  $sections['zerospam'] = array(
97
- 'title' => __( 'Zero Spam Enhanced Protection', 'zero-spam' ),
 
98
  );
99
 
100
  return $sections;
@@ -104,36 +101,14 @@ class Zero_Spam {
104
  * Admin settings
105
  *
106
  * @param array $settings Array of available settings.
107
- * @param array $options Array of saved database options.
108
  */
109
- public function settings( $settings, $options ) {
110
- $settings['zerospam_info'] = array(
111
- 'section' => 'zerospam',
112
- 'type' => 'html',
113
- 'html' => sprintf(
114
- wp_kses(
115
- /* translators: %1s: Replaced with the Zero Spam URL, %2$s: Replaced with the DDoD attack wiki URL */
116
- __( '<h3 style="margin-top: 0">Enabling enhanced protection is highly recommended.</h3><p>Enhanced protection adds additional checks using one of the largest, most comprehensive, constantly-growing global malicious IP, email, and username databases available, the <a href="%1$s" target="_blank" rel="noopener noreferrer">Zero Spam Blacklist</a>. Once enabled, all visitors will be checked against this blacklist that includes protected forms containing email and username fields &mdash; giving you the peace of mind that submissions are coming from legitimate. It can also help prevent <a href="%2$s" target="_blank" rel="noopener noreferrer">DDoS attacks</a> &amp; fraudsters looking to test stolen credit card numbers.</p>', 'zero-spam' ),
117
- array(
118
- 'h3' => array(
119
- 'style' => array(),
120
- ),
121
- 'p' => array(),
122
- 'a' => array(
123
- 'href' => array(),
124
- 'class' => array(),
125
- ),
126
- 'strong' => array(),
127
- )
128
- ),
129
- esc_url( ZEROSPAM_URL . '?utm_source=' . site_url() . '&utm_medium=admin_zerospam_info&utm_campaign=wpzerospam' ),
130
- esc_url( 'https://en.wikipedia.org/wiki/Denial-of-service_attack' )
131
- ),
132
- );
133
 
134
  $settings['zerospam'] = array(
135
  'title' => __( 'Status', 'zero-spam' ),
136
  'section' => 'zerospam',
 
137
  'type' => 'checkbox',
138
  'options' => array(
139
  'enabled' => __( 'Enabled', 'zero-spam' ),
@@ -178,6 +153,7 @@ class Zero_Spam {
178
  esc_url( ZEROSPAM_URL . 'product/premium/' )
179
  ),
180
  'section' => 'zerospam',
 
181
  'type' => 'text',
182
  'field_class' => 'regular-text',
183
  'placeholder' => __( 'Enter your Zero Spam license key.', 'zero-spam' ),
@@ -191,6 +167,7 @@ class Zero_Spam {
191
  $settings['zerospam_timeout'] = array(
192
  'title' => __( 'API Timeout', 'zero-spam' ),
193
  'section' => 'zerospam',
 
194
  'type' => 'number',
195
  'field_class' => 'small-text',
196
  'suffix' => __( 'seconds', 'zero-spam' ),
@@ -204,6 +181,7 @@ class Zero_Spam {
204
  $settings['zerospam_cache'] = array(
205
  'title' => __( 'Cache Expiration', 'zero-spam' ),
206
  'section' => 'zerospam',
 
207
  'type' => 'number',
208
  'field_class' => 'small-text',
209
  'suffix' => __( 'day(s)', 'zero-spam' ),
@@ -217,6 +195,7 @@ class Zero_Spam {
217
  $settings['zerospam_confidence_min'] = array(
218
  'title' => __( 'Confidence Minimum', 'zero-spam' ),
219
  'section' => 'zerospam',
 
220
  'type' => 'number',
221
  'field_class' => 'small-text',
222
  'suffix' => __( '%', 'zero-spam' ),
@@ -304,7 +283,7 @@ class Zero_Spam {
304
  // Add specially defined data to the API report.
305
 
306
  // From comments.
307
- if ( ! empty( $data['comment_author_email'] ) && is_email( $data['comment_author_email'] ) ) {
308
  $api_data['email_address'] = sanitize_email( $data['comment_author_email'] );
309
 
310
  if ( ! empty( $data['comment_author'] ) ) {
@@ -313,30 +292,30 @@ class Zero_Spam {
313
  }
314
 
315
  // From registration.
316
- if ( ! empty( $data['user_email'] ) && is_email( $data['user_email'] ) ) {
317
  $api_data['email_address'] = sanitize_email( $data['user_email'] );
318
  }
319
 
320
  // From WooCommerce registration.
321
- if ( ! empty( $data['email'] ) && is_email( $data['email'] ) ) {
322
  $api_data['email_address'] = sanitize_email( $data['email'] );
323
  }
324
 
325
  if ( ! empty( $data['post'] ) ) {
326
  // From MemberPress.
327
- if ( ! empty( $data['post']['user_email'] ) && is_email( $data['post']['user_email'] ) ) {
328
  $api_data['email_address'] = sanitize_email( $data['post']['user_email'] );
329
  }
330
 
331
  // From Mailchimp for WordPress.
332
- if ( ! empty( $data['post']['EMAIL'] ) && is_email( $data['post']['EMAIL'] ) ) {
333
  $api_data['email_address'] = sanitize_email( $data['post']['EMAIL'] );
334
  }
335
  }
336
 
337
  if ( ! empty( $data['data'] ) ) {
338
  // From GiveWP.
339
- if ( ! empty( $data['data']['give_email'] ) && is_email( $data['data']['give_email'] ) ) {
340
  $api_data['email_address'] = sanitize_email( $data['post']['give_email'] );
341
  }
342
  }
@@ -365,6 +344,10 @@ class Zero_Spam {
365
  * @param string $license The license key.
366
  */
367
  public static function get_license( $license ) {
 
 
 
 
368
  $cache_key = sanitize_title( 'license_' . $license );
369
  $license_data = wp_cache_get( $cache_key );
370
  if ( false === $license_data ) {
@@ -378,6 +361,10 @@ class Zero_Spam {
378
  if ( $license_data ) {
379
  $license_data = json_decode( $license_data, true );
380
 
 
 
 
 
381
  if ( ! empty( $license_data['license_key'] ) ) {
382
  $expiration = 1 * MONTH_IN_SECONDS;
383
  wp_cache_set( $cache_key, $license_data, 'zero_spam_store', $expiration );
@@ -388,113 +375,6 @@ class Zero_Spam {
388
  return $license_data;
389
  }
390
 
391
- /**
392
- * Checks if a notice should be dismissed.
393
- */
394
- public function check_notice_dismissal() {
395
- $user_id = get_current_user_id();
396
-
397
- // @codingStandardsIgnoreLine
398
- if ( isset( $_GET['zero-spam-dismiss-notice-enhanced-protection'] ) ) {
399
- update_user_meta( $user_id, 'zero_spam_dismiss_notice_enhanced_protection', current_time( 'mysql' ) );
400
- // @codingStandardsIgnoreLine
401
- } elseif ( isset( $_GET['zero-spam-dismiss-notice-license'] ) ) {
402
- update_user_meta( $user_id, 'zero_spam_dismiss_notice_missing_license', current_time( 'mysql' ) );
403
- }
404
- }
405
-
406
- /**
407
- * Outputs any available admin notices.
408
- */
409
- public function admin_notices() {
410
- // Only display notices for administrators.
411
- if ( ! current_user_can( 'administrator' ) ) {
412
- return;
413
- }
414
-
415
- $settings = \ZeroSpam\Core\Settings::get_settings();
416
- $user_id = get_current_user_id();
417
-
418
- $is_zerospam_enabled = 'enabled' === $settings['zerospam']['value'] ? true : false;
419
-
420
- $classes = array();
421
-
422
- if ( $is_zerospam_enabled ) {
423
- $license = ! empty( $settings['zerospam_license']['value'] ) ? $settings['zerospam_license']['value'] : false;
424
- if ( ! $license ) {
425
-
426
- $message_dismissed = get_user_meta( $user_id, 'zero_spam_dismiss_notice_missing_license', true );
427
-
428
- if ( $message_dismissed ) {
429
- $days_since_last_dismissed = \ZeroSpam\Core\Utilities::time_since( $message_dismissed, current_time( 'mysql' ), 'd' );
430
-
431
- if ( $days_since_last_dismissed <= 7 ) {
432
- return;
433
- }
434
- }
435
- } else {
436
- // Check license.
437
- $license_data = self::get_license( $license );
438
- if ( ! empty( $license_data['license_key'] ) ) {
439
- return;
440
- }
441
- }
442
-
443
- $classes[] = 'notice-error';
444
-
445
- $content = '<p>' . sprintf(
446
- wp_kses(
447
- /* translators: %1$s: Zero Spam settings URL, %2$s: dismiss message URL */
448
- __( '<strong>Your site is vulnerable to attacks.</strong> Please enter a valid <a href="%1$s" target="_blank" rel="noreferrer noopener"><strong>Zero Spam license key</strong></a> under <a href="%2$s">Zero Spam Enhanced Protection</a> or disable the Zero Spam Enhanced Protection option to dismiss this message.', 'zero-spam' ),
449
- array(
450
- 'strong' => array(),
451
- 'a' => array(
452
- 'href' => array(),
453
- ),
454
- )
455
- ),
456
- esc_url( esc_url( ZEROSPAM_URL . 'subscribe/' ), ),
457
- esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) ),
458
- esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings&zero-spam-dismiss-notice-license' ) ),
459
- ) . '</p>';
460
- } else {
461
- $message_dismissed = get_user_meta( $user_id, 'zero_spam_dismiss_notice_enhanced_protection', true );
462
-
463
- if ( $message_dismissed ) {
464
- $days_since_last_dismissed = \ZeroSpam\Core\Utilities::time_since( $message_dismissed, current_time( 'mysql' ), 'd' );
465
-
466
- if ( $days_since_last_dismissed <= 365 ) {
467
- return false;
468
- }
469
- }
470
-
471
- $classes[] = 'notice-warning';
472
-
473
- $content = '<p>' . sprintf(
474
- wp_kses(
475
- /* translators: %1$s: Zero Spam settings URL, %2$s: dismiss message URL */
476
- __( '<strong>Your site isn\'t taking full advantage of Zero Spam protection.</strong> For enhanced protection, please enable <a href="%1$s"><strong>Zero Spam Enhanced Protection</strong></a>. <a href="%2$s">Dismiss</a>', 'zero-spam' ),
477
- array(
478
- 'strong' => array(),
479
- 'a' => array(
480
- 'href' => array(),
481
- ),
482
- )
483
- ),
484
- esc_url( admin_url( 'options-general.php?page=wordpress-zero-spam-settings' ) ),
485
- esc_url( \ZeroSpam\Core\Utilities::current_url( array( 'zero-spam-dismiss-notice-enhanced-protection' ) ) ),
486
- ) . '</p>';
487
- }
488
- ?>
489
- <div class="notice <?php echo implode( ' ', $classes ); ?>">
490
- <?php
491
- // @codingStandardsIgnoreLine
492
- echo $content;
493
- ?>
494
- </div>
495
- <?php
496
- }
497
-
498
  /**
499
  * Query the Zero Spam Blacklist API
500
  *
@@ -522,13 +402,14 @@ class Zero_Spam {
522
  if ( false === $response ) {
523
  // Limit the number of requests.
524
  $last_query_option = get_site_option( 'zero_spam_last_api_query', false );
 
525
  if ( $last_query_option ) {
526
  list( $first_query_date, $num_queries) = explode( '*', $last_query_option );
527
 
528
  if ( gmdate( 'Y-m-d', strtotime( $first_query_date ) ) !== gmdate( 'Y-m-d' ) ) {
529
  // New day.
530
  update_site_option( 'zero_spam_last_api_query', current_time( 'mysql' ) . '*1' );
531
- } elseif ( $num_queries > 5 ) {
532
  return false;
533
  } else {
534
  update_site_option( 'zero_spam_last_api_query', $first_query_date . '*' . ( $num_queries+1 ) );
32
  */
33
  public function init() {
34
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
35
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
 
 
 
 
36
 
37
  // Fires when a user submission has been detected as spam.
38
  add_action( 'zerospam_share_detection', array( $this, 'share_detection' ), 10, 1 );
90
  */
91
  public function sections( $sections ) {
92
  $sections['zerospam'] = array(
93
+ 'title' => __( 'Enhanced Protection', 'zero-spam' ),
94
+ 'icon' => 'assets/img/icon.svg'
95
  );
96
 
97
  return $sections;
101
  * Admin settings
102
  *
103
  * @param array $settings Array of available settings.
 
104
  */
105
+ public function settings( $settings ) {
106
+ $options = get_option( 'zero-spam-zerospam' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
  $settings['zerospam'] = array(
109
  'title' => __( 'Status', 'zero-spam' ),
110
  'section' => 'zerospam',
111
+ 'module' => 'zerospam',
112
  'type' => 'checkbox',
113
  'options' => array(
114
  'enabled' => __( 'Enabled', 'zero-spam' ),
153
  esc_url( ZEROSPAM_URL . 'product/premium/' )
154
  ),
155
  'section' => 'zerospam',
156
+ 'module' => 'zerospam',
157
  'type' => 'text',
158
  'field_class' => 'regular-text',
159
  'placeholder' => __( 'Enter your Zero Spam license key.', 'zero-spam' ),
167
  $settings['zerospam_timeout'] = array(
168
  'title' => __( 'API Timeout', 'zero-spam' ),
169
  'section' => 'zerospam',
170
+ 'module' => 'zerospam',
171
  'type' => 'number',
172
  'field_class' => 'small-text',
173
  'suffix' => __( 'seconds', 'zero-spam' ),
181
  $settings['zerospam_cache'] = array(
182
  'title' => __( 'Cache Expiration', 'zero-spam' ),
183
  'section' => 'zerospam',
184
+ 'module' => 'zerospam',
185
  'type' => 'number',
186
  'field_class' => 'small-text',
187
  'suffix' => __( 'day(s)', 'zero-spam' ),
195
  $settings['zerospam_confidence_min'] = array(
196
  'title' => __( 'Confidence Minimum', 'zero-spam' ),
197
  'section' => 'zerospam',
198
+ 'module' => 'zerospam',
199
  'type' => 'number',
200
  'field_class' => 'small-text',
201
  'suffix' => __( '%', 'zero-spam' ),
283
  // Add specially defined data to the API report.
284
 
285
  // From comments.
286
+ if ( ! empty( $data['comment_author_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['comment_author_email'] ) ) {
287
  $api_data['email_address'] = sanitize_email( $data['comment_author_email'] );
288
 
289
  if ( ! empty( $data['comment_author'] ) ) {
292
  }
293
 
294
  // From registration.
295
+ if ( ! empty( $data['user_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['user_email'] ) ) {
296
  $api_data['email_address'] = sanitize_email( $data['user_email'] );
297
  }
298
 
299
  // From WooCommerce registration.
300
+ if ( ! empty( $data['email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['email'] ) ) {
301
  $api_data['email_address'] = sanitize_email( $data['email'] );
302
  }
303
 
304
  if ( ! empty( $data['post'] ) ) {
305
  // From MemberPress.
306
+ if ( ! empty( $data['post']['user_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['post']['user_email'] ) ) {
307
  $api_data['email_address'] = sanitize_email( $data['post']['user_email'] );
308
  }
309
 
310
  // From Mailchimp for WordPress.
311
+ if ( ! empty( $data['post']['EMAIL'] ) && \ZeroSpam\Core\Utilities::is_email( $data['post']['EMAIL'] ) ) {
312
  $api_data['email_address'] = sanitize_email( $data['post']['EMAIL'] );
313
  }
314
  }
315
 
316
  if ( ! empty( $data['data'] ) ) {
317
  // From GiveWP.
318
+ if ( ! empty( $data['data']['give_email'] ) && \ZeroSpam\Core\Utilities::is_email( $data['data']['give_email'] ) ) {
319
  $api_data['email_address'] = sanitize_email( $data['post']['give_email'] );
320
  }
321
  }
344
  * @param string $license The license key.
345
  */
346
  public static function get_license( $license ) {
347
+ if ( strpos( $license, 'invalid' ) !== false ) {
348
+ return false;
349
+ }
350
+
351
  $cache_key = sanitize_title( 'license_' . $license );
352
  $license_data = wp_cache_get( $cache_key );
353
  if ( false === $license_data ) {
361
  if ( $license_data ) {
362
  $license_data = json_decode( $license_data, true );
363
 
364
+ if ( empty( $license_data['license_key'] ) ) {
365
+ \ZeroSpam\Core\Utilities::log( 'Zero Spam License Check: ' . $license_data['response'] );
366
+ }
367
+
368
  if ( ! empty( $license_data['license_key'] ) ) {
369
  $expiration = 1 * MONTH_IN_SECONDS;
370
  wp_cache_set( $cache_key, $license_data, 'zero_spam_store', $expiration );
375
  return $license_data;
376
  }
377
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  /**
379
  * Query the Zero Spam Blacklist API
380
  *
402
  if ( false === $response ) {
403
  // Limit the number of requests.
404
  $last_query_option = get_site_option( 'zero_spam_last_api_query', false );
405
+
406
  if ( $last_query_option ) {
407
  list( $first_query_date, $num_queries) = explode( '*', $last_query_option );
408
 
409
  if ( gmdate( 'Y-m-d', strtotime( $first_query_date ) ) !== gmdate( 'Y-m-d' ) ) {
410
  // New day.
411
  update_site_option( 'zero_spam_last_api_query', current_time( 'mysql' ) . '*1' );
412
+ } elseif ( $num_queries > 100 ) {
413
  return false;
414
  } else {
415
  update_site_option( 'zero_spam_last_api_query', $first_query_date . '*' . ( $num_queries+1 ) );
modules/comments/class-comments.php CHANGED
@@ -1,6 +1,13 @@
1
  <?php
2
  /**
3
- * Comments class
 
 
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -28,14 +35,14 @@ class Comments {
28
  */
29
  public function init() {
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
32
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
33
 
34
  if (
35
  'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_comments' ) &&
36
  \ZeroSpam\Core\Access::process()
37
  ) {
38
- add_action( 'comment_form_before', array( $this, 'scripts' ) );
39
  add_filter( 'comment_form_defaults', array( $this, 'honeypot' ) );
40
  add_action( 'preprocess_comment', array( $this, 'preprocess_comments' ) );
41
  }
@@ -55,8 +62,15 @@ class Comments {
55
  /**
56
  * Load the scripts
57
  */
58
- public function scripts() {
59
- do_action( 'zerospam_comment_scripts' );
 
 
 
 
 
 
 
60
  }
61
 
62
  /**
@@ -89,6 +103,11 @@ class Comments {
89
  $validation_errors[] = 'honeypot';
90
  }
91
 
 
 
 
 
 
92
  // Check blocked email domains.
93
  if (
94
  ! empty( $commentdata['comment_author_email'] ) &&
@@ -186,7 +205,9 @@ class Comments {
186
  */
187
  public function sections( $sections ) {
188
  $sections['comments'] = array(
189
- 'title' => __( 'Comments Integration', 'zero-spam' ),
 
 
190
  );
191
 
192
  return $sections;
@@ -196,15 +217,18 @@ class Comments {
196
  * Admin settings
197
  *
198
  * @param array $settings Array of available settings.
199
- * @param array $options Array of saved database options.
200
  */
201
- public function settings( $settings, $options ) {
 
 
202
  $settings['verify_comments'] = array(
203
  'title' => __( 'Protect Comments', 'zero-spam' ),
 
204
  'section' => 'comments',
 
205
  'type' => 'checkbox',
206
  'options' => array(
207
- 'enabled' => __( 'Monitor comments for malicious or automated spambots.', 'zero-spam' ),
208
  ),
209
  'value' => ! empty( $options['verify_comments'] ) ? $options['verify_comments'] : false,
210
  'recommended' => 'enabled',
@@ -213,9 +237,10 @@ class Comments {
213
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
214
 
215
  $settings['comment_spam_message'] = array(
216
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
217
- 'desc' => __( 'When comment protection is enabled, the message displayed to the user when a comment has been detected as spam/malicious.', 'zero-spam' ),
218
  'section' => 'comments',
 
219
  'type' => 'text',
220
  'field_class' => 'large-text',
221
  'placeholder' => $message,
@@ -226,13 +251,14 @@ class Comments {
226
  $settings['log_blocked_comments'] = array(
227
  'title' => __( 'Log Blocked Comments', 'zero-spam' ),
228
  'section' => 'comments',
 
229
  'type' => 'checkbox',
230
  'desc' => wp_kses(
231
- __( 'Enables logging blocked comments. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
232
  array( 'strong' => array() )
233
  ),
234
  'options' => array(
235
- 'enabled' => __( 'Enabled', 'zero-spam' ),
236
  ),
237
  'value' => ! empty( $options['log_blocked_comments'] ) ? $options['log_blocked_comments'] : false,
238
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * Comments integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Checks blocked email domains (author email)
9
+ * 3. Uses the David Walsh technique
10
+ * 4. Checks against the disallowed words list
11
  *
12
  * @package ZeroSpam
13
  */
35
  */
36
  public function init() {
37
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
38
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
39
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
40
 
41
  if (
42
  'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_comments' ) &&
43
  \ZeroSpam\Core\Access::process()
44
  ) {
45
+ add_action( 'comment_form_before', array( $this, 'add_scripts' ) );
46
  add_filter( 'comment_form_defaults', array( $this, 'honeypot' ) );
47
  add_action( 'preprocess_comment', array( $this, 'preprocess_comments' ) );
48
  }
62
  /**
63
  * Load the scripts
64
  */
65
+ public function add_scripts() {
66
+ // Only add scripts to the appropriate pages.
67
+ if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_comments' ) ) {
68
+ wp_enqueue_script( 'zerospam-davidwalsh' );
69
+ add_action( 'wp_footer', function() {
70
+ // .wpd_comm_form for the wpDiscuz plugin
71
+ echo '<script type="text/javascript">jQuery(".comment-form, #commentform, .wpd_comm_form").ZeroSpamDavidWalsh();</script>';
72
+ }, 999 );
73
+ }
74
  }
75
 
76
  /**
103
  $validation_errors[] = 'honeypot';
104
  }
105
 
106
+ // Check email.
107
+ if ( ! empty( $commentdata['comment_author_email'] ) && ! \ZeroSpam\Core\Utilities::is_email( $commentdata['comment_author_email'] ) ) {
108
+ $validation_errors[] = 'invalid_email';
109
+ }
110
+
111
  // Check blocked email domains.
112
  if (
113
  ! empty( $commentdata['comment_author_email'] ) &&
205
  */
206
  public function sections( $sections ) {
207
  $sections['comments'] = array(
208
+ 'title' => __( 'Comments', 'zero-spam' ),
209
+ 'icon' => 'assets/img/icon-wordpress.svg',
210
+ 'supports' => array( 'honeypot', 'email', 'davidwalsh', 'words' ),
211
  );
212
 
213
  return $sections;
217
  * Admin settings
218
  *
219
  * @param array $settings Array of available settings.
 
220
  */
221
+ public function settings( $settings ) {
222
+ $options = get_option( 'zero-spam-comments' );
223
+
224
  $settings['verify_comments'] = array(
225
  'title' => __( 'Protect Comments', 'zero-spam' ),
226
+ 'desc' => __( 'Protects & monitors comment submissions.', 'zero-spam' ),
227
  'section' => 'comments',
228
+ 'module' => 'comments',
229
  'type' => 'checkbox',
230
  'options' => array(
231
+ 'enabled' => false
232
  ),
233
  'value' => ! empty( $options['verify_comments'] ) ? $options['verify_comments'] : false,
234
  'recommended' => 'enabled',
237
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
238
 
239
  $settings['comment_spam_message'] = array(
240
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
241
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
242
  'section' => 'comments',
243
+ 'module' => 'comments',
244
  'type' => 'text',
245
  'field_class' => 'large-text',
246
  'placeholder' => $message,
251
  $settings['log_blocked_comments'] = array(
252
  'title' => __( 'Log Blocked Comments', 'zero-spam' ),
253
  'section' => 'comments',
254
+ 'module' => 'comments',
255
  'type' => 'checkbox',
256
  'desc' => wp_kses(
257
+ __( 'When enabled, stores blocked comment submissions in the database.', 'zero-spam' ),
258
  array( 'strong' => array() )
259
  ),
260
  'options' => array(
261
+ 'enabled' => false,
262
  ),
263
  'value' => ! empty( $options['log_blocked_comments'] ) ? $options['log_blocked_comments'] : false,
264
  'recommended' => 'enabled',
modules/contactform7/class-contactform7.php CHANGED
@@ -1,6 +1,11 @@
1
  <?php
2
  /**
3
- * Contact Form 7 class
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -26,7 +31,7 @@ class ContactForm7 {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -34,7 +39,7 @@ class ContactForm7 {
34
  \ZeroSpam\Core\Access::process()
35
  ) {
36
  // Load scripts.
37
- add_action( 'wpcf7_enqueue_scripts', array( $this, 'scripts' ), 10 );
38
 
39
  // Adds Zero Spam's honeypot field.
40
  add_filter( 'wpcf7_form_elements', array( $this, 'add_honeypot' ), 10, 1 );
@@ -47,8 +52,13 @@ class ContactForm7 {
47
  /**
48
  * Load the scripts
49
  */
50
- public function scripts() {
51
- do_action( 'zerospam_wpcf7_scripts' );
 
 
 
 
 
52
  }
53
 
54
  /**
@@ -141,7 +151,9 @@ class ContactForm7 {
141
  */
142
  public function sections( $sections ) {
143
  $sections['contactform7'] = array(
144
- 'title' => __( 'Contact Form 7 Integration', 'zero-spam' ),
 
 
145
  );
146
 
147
  return $sections;
@@ -151,15 +163,18 @@ class ContactForm7 {
151
  * Admin settings
152
  *
153
  * @param array $settings Array of available settings.
154
- * @param array $options Array of saved database options.
155
  */
156
- public function settings( $settings, $options ) {
 
 
157
  $settings['verify_contactform7'] = array(
158
  'title' => __( 'Protect CF7 Submissions', 'zero-spam' ),
 
 
159
  'section' => 'contactform7',
160
  'type' => 'checkbox',
161
  'options' => array(
162
- 'enabled' => __( 'Monitor CF7 submissions for malicious or automated spambots.', 'zero-spam' ),
163
  ),
164
  'value' => ! empty( $options['verify_contactform7'] ) ? $options['verify_contactform7'] : false,
165
  'recommended' => 'enabled',
@@ -168,8 +183,9 @@ class ContactForm7 {
168
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
169
 
170
  $settings['contactform7_spam_message'] = array(
171
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
172
- 'desc' => __( 'When CF7 protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
 
173
  'section' => 'contactform7',
174
  'type' => 'text',
175
  'field_class' => 'large-text',
@@ -180,14 +196,15 @@ class ContactForm7 {
180
 
181
  $settings['log_blocked_contactform7'] = array(
182
  'title' => __( 'Log Blocked CF7 Submissions', 'zero-spam' ),
 
183
  'section' => 'contactform7',
184
  'type' => 'checkbox',
185
  'desc' => wp_kses(
186
- __( 'Enables logging blocked CF7 submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
187
  array( 'strong' => array() )
188
  ),
189
  'options' => array(
190
- 'enabled' => __( 'Enabled', 'zero-spam' ),
191
  ),
192
  'value' => ! empty( $options['log_blocked_contactform7'] ) ? $options['log_blocked_contactform7'] : false,
193
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * Contact Form 7 integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Uses the David Walsh technique
9
  *
10
  * @package ZeroSpam
11
  */
31
  */
32
  public function init() {
33
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
34
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
35
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
36
 
37
  if (
39
  \ZeroSpam\Core\Access::process()
40
  ) {
41
  // Load scripts.
42
+ add_action( 'wpcf7_enqueue_scripts', array( $this, 'add_scripts' ), 10 );
43
 
44
  // Adds Zero Spam's honeypot field.
45
  add_filter( 'wpcf7_form_elements', array( $this, 'add_honeypot' ), 10, 1 );
52
  /**
53
  * Load the scripts
54
  */
55
+ public function add_scripts() {
56
+ if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_contactform7' ) ) {
57
+ wp_enqueue_script( 'zerospam-davidwalsh' );
58
+ add_action( 'wp_footer', function() {
59
+ echo '<script type="text/javascript">jQuery(".wpcf7-form").ZeroSpamDavidWalsh();</script>';
60
+ }, 999 );
61
+ }
62
  }
63
 
64
  /**
151
  */
152
  public function sections( $sections ) {
153
  $sections['contactform7'] = array(
154
+ 'title' => __( 'Contact Form 7', 'zero-spam' ),
155
+ 'icon' => 'modules/contactform7/icon-cf7.png',
156
+ 'supports' => array( 'honeypot', 'davidwalsh' ),
157
  );
158
 
159
  return $sections;
163
  * Admin settings
164
  *
165
  * @param array $settings Array of available settings.
 
166
  */
167
+ public function settings( $settings ) {
168
+ $options = get_option( 'zero-spam-contactform7' );
169
+
170
  $settings['verify_contactform7'] = array(
171
  'title' => __( 'Protect CF7 Submissions', 'zero-spam' ),
172
+ 'desc' => __( 'Protects & monitors Contact Form 7 submissions.', 'zero-spam' ),
173
+ 'module' => 'contactform7',
174
  'section' => 'contactform7',
175
  'type' => 'checkbox',
176
  'options' => array(
177
+ 'enabled' => false,
178
  ),
179
  'value' => ! empty( $options['verify_contactform7'] ) ? $options['verify_contactform7'] : false,
180
  'recommended' => 'enabled',
183
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
184
 
185
  $settings['contactform7_spam_message'] = array(
186
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
187
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
188
+ 'module' => 'contactform7',
189
  'section' => 'contactform7',
190
  'type' => 'text',
191
  'field_class' => 'large-text',
196
 
197
  $settings['log_blocked_contactform7'] = array(
198
  'title' => __( 'Log Blocked CF7 Submissions', 'zero-spam' ),
199
+ 'module' => 'contactform7',
200
  'section' => 'contactform7',
201
  'type' => 'checkbox',
202
  'desc' => wp_kses(
203
+ __( 'When enabled, stores blocked Contact Form 7 submissions in the database.', 'zero-spam' ),
204
  array( 'strong' => array() )
205
  ),
206
  'options' => array(
207
+ 'enabled' => false,
208
  ),
209
  'value' => ! empty( $options['log_blocked_contactform7'] ) ? $options['log_blocked_contactform7'] : false,
210
  'recommended' => 'enabled',
{assets/img → modules/contactform7}/icon-cf7.png RENAMED
File without changes
modules/davidwalsh/assets/js/davidwalsh.js CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- * WordPress Zero Spam David Walsh jQuery plugin.
3
  *
4
  * Handles adding the required functionality for spam detections.
5
  */
@@ -34,7 +34,7 @@
34
 
35
  $(function () {
36
  var selectors =
37
- "#commentform, .wpforms-form, .wpcf7-form, .frm-fluent-form, .mepr-signup-form, .mc4wp-form, #mepr_loginform";
38
  if (
39
  typeof ZeroSpamDavidWalsh.selectors != "undefined" &&
40
  ZeroSpamDavidWalsh.selectors
1
  /**
2
+ * Zero Spam for WordPress David Walsh jQuery plugin.
3
  *
4
  * Handles adding the required functionality for spam detections.
5
  */
34
 
35
  $(function () {
36
  var selectors =
37
+ ".frm-fluent-form, .mepr-signup-form, .mc4wp-form, #mepr_loginform";
38
  if (
39
  typeof ZeroSpamDavidWalsh.selectors != "undefined" &&
40
  ZeroSpamDavidWalsh.selectors
modules/davidwalsh/class-davidwalsh.php CHANGED
@@ -28,7 +28,7 @@ class DavidWalsh {
28
  */
29
  public function init() {
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
32
  add_filter( 'zerospam_failed_types', array( $this, 'failed_types' ), 10, 1 );
33
 
34
  if (
@@ -37,11 +37,6 @@ class DavidWalsh {
37
  ) {
38
  add_action( 'wp_enqueue_scripts', array( $this, 'scripts' ), 0 );
39
  add_action( 'login_enqueue_scripts', array( $this, 'scripts' ) );
40
-
41
- add_action( 'zerospam_comment_scripts', array( $this, 'enqueue_script' ) );
42
- // See https://contactform7.com/loading-javascript-and-stylesheet-only-when-it-is-necessary/.
43
- add_action( 'zerospam_wpcf7_scripts', array( $this, 'enqueue_script' ) );
44
- add_action( 'zerospam_wpforms_scripts', array( $this, 'enqueue_script' ) );
45
  add_action( 'zerospam_fluentforms_scripts', array( $this, 'enqueue_script' ) );
46
  add_action( 'zerospam_mailchimp4wp_scripts', array( $this, 'enqueue_script' ) );
47
  add_action( 'zerospam_memberpress_login_scripts', array( $this, 'enqueue_script' ) );
@@ -66,6 +61,7 @@ class DavidWalsh {
66
  add_filter( 'zerospam_preprocess_memberpress_login', array( $this, 'validate_post' ), 10, 3 );
67
  add_filter( 'zerospam_preprocess_mailchimp4wp', array( $this, 'validate_post' ), 10, 3 );
68
  add_filter( 'zerospam_process_woocommerce_registration', array( $this, 'validate_post' ), 10, 3 );
 
69
  }
70
  }
71
 
@@ -112,7 +108,8 @@ class DavidWalsh {
112
  */
113
  public function sections( $sections ) {
114
  $sections['davidwalsh'] = array(
115
- 'title' => __( 'David Walsh Detection Settings', 'zero-spam' ),
 
116
  );
117
 
118
  return $sections;
@@ -122,9 +119,10 @@ class DavidWalsh {
122
  * Admin settings
123
  *
124
  * @param array $settings Array of available settings.
125
- * @param array $options Array of saved database options.
126
  */
127
- public function settings( $settings, $options ) {
 
 
128
  $settings['davidwalsh'] = array(
129
  'title' => __( 'David Walsh Technique', 'zero-spam' ),
130
  'desc' => sprintf(
@@ -143,6 +141,7 @@ class DavidWalsh {
143
  esc_url( 'https://davidwalsh.name/wordpress-comment-spam#utm_source=wordpresszerospam&utm_medium=admin_link&utm_campaign=wordpresszerospam' )
144
  ),
145
  'section' => 'davidwalsh',
 
146
  'type' => 'checkbox',
147
  'options' => array(
148
  'enabled' => __( 'Enabled', 'zero-spam' ),
@@ -168,6 +167,7 @@ class DavidWalsh {
168
  esc_url( 'https://davidwalsh.name/wordpress-comment-spam#utm_source=wordpresszerospam&utm_medium=admin_link&utm_campaign=wordpresszerospam' )
169
  ),
170
  'section' => 'davidwalsh',
 
171
  'type' => 'text',
172
  'field_class' => 'large-text',
173
  'placeholder' => '.custom-form',
28
  */
29
  public function init() {
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
32
  add_filter( 'zerospam_failed_types', array( $this, 'failed_types' ), 10, 1 );
33
 
34
  if (
37
  ) {
38
  add_action( 'wp_enqueue_scripts', array( $this, 'scripts' ), 0 );
39
  add_action( 'login_enqueue_scripts', array( $this, 'scripts' ) );
 
 
 
 
 
40
  add_action( 'zerospam_fluentforms_scripts', array( $this, 'enqueue_script' ) );
41
  add_action( 'zerospam_mailchimp4wp_scripts', array( $this, 'enqueue_script' ) );
42
  add_action( 'zerospam_memberpress_login_scripts', array( $this, 'enqueue_script' ) );
61
  add_filter( 'zerospam_preprocess_memberpress_login', array( $this, 'validate_post' ), 10, 3 );
62
  add_filter( 'zerospam_preprocess_mailchimp4wp', array( $this, 'validate_post' ), 10, 3 );
63
  add_filter( 'zerospam_process_woocommerce_registration', array( $this, 'validate_post' ), 10, 3 );
64
+ add_filter( 'zerospam_process_givewp_submission', array( $this, 'validate_post' ), 10, 3 );
65
  }
66
  }
67
 
108
  */
109
  public function sections( $sections ) {
110
  $sections['davidwalsh'] = array(
111
+ 'title' => __( 'David Walsh', 'zero-spam' ),
112
+ 'icon' => 'modules/davidwalsh/icon-david-walsh.png'
113
  );
114
 
115
  return $sections;
119
  * Admin settings
120
  *
121
  * @param array $settings Array of available settings.
 
122
  */
123
+ public function settings( $settings ) {
124
+ $options = get_option( 'zero-spam-davidwalsh' );
125
+
126
  $settings['davidwalsh'] = array(
127
  'title' => __( 'David Walsh Technique', 'zero-spam' ),
128
  'desc' => sprintf(
141
  esc_url( 'https://davidwalsh.name/wordpress-comment-spam#utm_source=wordpresszerospam&utm_medium=admin_link&utm_campaign=wordpresszerospam' )
142
  ),
143
  'section' => 'davidwalsh',
144
+ 'module' => 'davidwalsh',
145
  'type' => 'checkbox',
146
  'options' => array(
147
  'enabled' => __( 'Enabled', 'zero-spam' ),
167
  esc_url( 'https://davidwalsh.name/wordpress-comment-spam#utm_source=wordpresszerospam&utm_medium=admin_link&utm_campaign=wordpresszerospam' )
168
  ),
169
  'section' => 'davidwalsh',
170
+ 'module' => 'davidwalsh',
171
  'type' => 'text',
172
  'field_class' => 'large-text',
173
  'placeholder' => '.custom-form',
modules/davidwalsh/icon-david-walsh.png ADDED
Binary file
modules/fluentforms/class-fluentforms.php CHANGED
@@ -26,7 +26,7 @@ class FluentForms {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -178,7 +178,8 @@ class FluentForms {
178
  // Check blocked email domains.
179
  if (
180
  ! empty( $form_data[ $field_name ] ) &&
181
- \ZeroSpam\Core\Utilities::is_email_domain_blocked( $form_data[ $field_name ] )
 
182
  ) {
183
  $error_message = \ZeroSpam\Core\Utilities::detection_message( 'fluentforms_spam_message' );
184
 
@@ -206,8 +207,9 @@ class FluentForms {
206
  * @param array $sections Array of available setting sections.
207
  */
208
  public function sections( $sections ) {
209
- $sections['fluentforms'] = array(
210
- 'title' => __( 'Fluent Forms Integration', 'zero-spam' ),
 
211
  );
212
 
213
  return $sections;
@@ -217,15 +219,18 @@ class FluentForms {
217
  * Admin settings
218
  *
219
  * @param array $settings Array of available settings.
220
- * @param array $options Array of saved database options.
221
  */
222
- public function settings( $settings, $options ) {
 
 
223
  $settings['verify_fluentforms'] = array(
224
  'title' => __( 'Protect Fluent Form Submissions', 'zero-spam' ),
225
- 'section' => 'fluentforms',
 
 
226
  'type' => 'checkbox',
227
  'options' => array(
228
- 'enabled' => __( 'Monitor Fluent Form submissions for malicious or automated spambots.', 'zero-spam' ),
229
  ),
230
  'value' => ! empty( $options['verify_fluentforms'] ) ? $options['verify_fluentforms'] : false,
231
  'recommended' => 'enabled',
@@ -234,9 +239,10 @@ class FluentForms {
234
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
235
 
236
  $settings['fluentforms_spam_message'] = array(
237
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
238
- 'desc' => __( 'When Fluent Form protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
239
- 'section' => 'fluentforms',
 
240
  'type' => 'text',
241
  'field_class' => 'large-text',
242
  'placeholder' => $message,
@@ -246,14 +252,15 @@ class FluentForms {
246
 
247
  $settings['log_blocked_fluentforms'] = array(
248
  'title' => __( 'Log Blocked Fluent Form Submissions', 'zero-spam' ),
249
- 'section' => 'fluentforms',
 
250
  'type' => 'checkbox',
251
  'desc' => wp_kses(
252
- __( 'Enables logging blocked Fluent Form submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
253
  array( 'strong' => array() )
254
  ),
255
  'options' => array(
256
- 'enabled' => __( 'Enabled', 'zero-spam' ),
257
  ),
258
  'value' => ! empty( $options['log_blocked_fluentforms'] ) ? $options['log_blocked_fluentforms'] : false,
259
  'recommended' => 'enabled',
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
178
  // Check blocked email domains.
179
  if (
180
  ! empty( $form_data[ $field_name ] ) &&
181
+ \ZeroSpam\Core\Utilities::is_email_domain_blocked( $form_data[ $field_name ] ) &&
182
+ ! \ZeroSpam\Core\Utilities::is_email( $form_data[ $field_name ] )
183
  ) {
184
  $error_message = \ZeroSpam\Core\Utilities::detection_message( 'fluentforms_spam_message' );
185
 
207
  * @param array $sections Array of available setting sections.
208
  */
209
  public function sections( $sections ) {
210
+ $sections['fluent_form'] = array(
211
+ 'title' => __( 'Fluent Forms', 'zero-spam' ),
212
+ 'icon' => 'modules/fluentforms/icon-fluent-forms.svg'
213
  );
214
 
215
  return $sections;
219
  * Admin settings
220
  *
221
  * @param array $settings Array of available settings.
 
222
  */
223
+ public function settings( $settings ) {
224
+ $options = get_option( 'zero-spam-fluent_form' );
225
+
226
  $settings['verify_fluentforms'] = array(
227
  'title' => __( 'Protect Fluent Form Submissions', 'zero-spam' ),
228
+ 'desc' => __( 'Protects & monitors Fluent Form submissions.', 'zero-spam' ),
229
+ 'section' => 'fluent_form',
230
+ 'module' => 'fluent_form',
231
  'type' => 'checkbox',
232
  'options' => array(
233
+ 'enabled' => false,
234
  ),
235
  'value' => ! empty( $options['verify_fluentforms'] ) ? $options['verify_fluentforms'] : false,
236
  'recommended' => 'enabled',
239
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
240
 
241
  $settings['fluentforms_spam_message'] = array(
242
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
243
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
244
+ 'section' => 'fluent_form',
245
+ 'module' => 'fluent_form',
246
  'type' => 'text',
247
  'field_class' => 'large-text',
248
  'placeholder' => $message,
252
 
253
  $settings['log_blocked_fluentforms'] = array(
254
  'title' => __( 'Log Blocked Fluent Form Submissions', 'zero-spam' ),
255
+ 'section' => 'fluent_form',
256
+ 'module' => 'fluent_form',
257
  'type' => 'checkbox',
258
  'desc' => wp_kses(
259
+ __( 'When enabled, stores blocked Fluent Form submissions in the database.', 'zero-spam' ),
260
  array( 'strong' => array() )
261
  ),
262
  'options' => array(
263
+ 'enabled' => false,
264
  ),
265
  'value' => ! empty( $options['log_blocked_fluentforms'] ) ? $options['log_blocked_fluentforms'] : false,
266
  'recommended' => 'enabled',
modules/fluentforms/icon-fluent-forms.svg ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="113px" height="113px" viewBox="0 0 113 113" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Fluent Form with Light Background</title>
4
+ <defs>
5
+ <linearGradient x1="25.470009%" y1="25.4700976%" x2="94.8491805%" y2="94.8491805%" id="linearGradient-1">
6
+ <stop stop-color="#05CDFF" offset="0%"></stop>
7
+ <stop stop-color="#0976FF" offset="100%"></stop>
8
+ </linearGradient>
9
+ </defs>
10
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
11
+ <g id="Fluent-Form-with-Light-Background" fill-rule="nonzero">
12
+ <path d="M112.817,23.1555 L112.817,89.6617 C112.817,102.452 102.056,112.817 88.7736,112.817 L24.0437,112.817 C10.7681,112.817 0,102.452 0,89.6617 L0,23.1555 C0,10.3686 10.7681,0 24.0437,0 L88.7736,0 C102.053,0 112.817,10.3686 112.817,23.1555 Z" id="Path" fill="url(#linearGradient-1)"></path>
13
+ <path d="M91.1419,48.0698 L36.1029,48.0698 C27.5141,48.0698 20.5482,55.0322 20.5482,63.6246 C20.5482,64.2452 21.0511,64.7481 21.6718,64.7481 L76.7143,64.7481 C85.3031,64.7481 92.2691,57.7857 92.2691,49.1934 C92.2655,48.5727 91.7626,48.0698 91.1419,48.0698 Z" id="Path" fill="#FFFFFF"></path>
14
+ <path d="M80.9444,72.7019 L46.6533,72.7019 C37.9647,72.7019 30.9238,79.7427 30.9238,88.4314 C30.9238,88.9557 31.3483,89.3766 31.869,89.3766 L66.1565,89.3766 C74.8452,89.3766 81.8860227,82.3358 81.8860227,73.6471 C81.8896,73.1263 81.4651,72.7019 80.9444,72.7019 Z" id="Path" fill="#FFFFFF"></path>
15
+ <path d="M91.1419,23.4375 L36.1029,23.4375 C27.5141,23.4375 20.5482,30.3999 20.5482,38.9922 C20.5482,39.6128 21.0511,40.1158 21.6718,40.1158 L76.7143,40.1158 C85.3031,40.1158 92.2691,33.1534 92.2691,24.561 C92.2655,23.9404 91.7626,23.4375 91.1419,23.4375 Z" id="Path" fill="#FFFFFF"></path>
16
+ </g>
17
+ </g>
18
+ </svg>
modules/formidable/class-formidable.php CHANGED
@@ -1,6 +1,10 @@
1
  <?php
2
  /**
3
- * Formidable class
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -26,7 +30,7 @@ class Formidable {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -56,7 +60,9 @@ class Formidable {
56
  */
57
  public function sections( $sections ) {
58
  $sections['formidable'] = array(
59
- 'title' => __( 'Formidable Integration', 'zero-spam' ),
 
 
60
  );
61
 
62
  return $sections;
@@ -66,15 +72,18 @@ class Formidable {
66
  * Formidable settings
67
  *
68
  * @param array $settings Array of available settings.
69
- * @param array $options Array of saved database options.
70
  */
71
- public function settings( $settings, $options ) {
 
 
72
  $settings['verify_formidable'] = array(
73
  'title' => __( 'Protect Formidable Submissions', 'zero-spam' ),
 
74
  'section' => 'formidable',
 
75
  'type' => 'checkbox',
76
  'options' => array(
77
- 'enabled' => __( 'Monitor Formidable submissions for malicious or automated spambots.', 'zero-spam' ),
78
  ),
79
  'value' => ! empty( $options['verify_formidable'] ) ? $options['verify_formidable'] : false,
80
  'recommended' => 'enabled',
@@ -83,9 +92,10 @@ class Formidable {
83
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
84
 
85
  $settings['formidable_spam_message'] = array(
86
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
87
- 'desc' => __( 'When Formidable protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
88
  'section' => 'formidable',
 
89
  'type' => 'text',
90
  'field_class' => 'large-text',
91
  'placeholder' => $message,
@@ -96,13 +106,14 @@ class Formidable {
96
  $settings['log_blocked_formidable'] = array(
97
  'title' => __( 'Log Blocked Formidable Submissions', 'zero-spam' ),
98
  'section' => 'formidable',
 
99
  'type' => 'checkbox',
100
  'desc' => wp_kses(
101
- __( 'Enables logging blocked Formidable submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
102
  array( 'strong' => array() )
103
  ),
104
  'options' => array(
105
- 'enabled' => __( 'Enabled', 'zero-spam' ),
106
  ),
107
  'value' => ! empty( $options['log_blocked_formidable'] ) ? $options['log_blocked_formidable'] : false,
108
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * Formidable integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
  *
9
  * @package ZeroSpam
10
  */
30
  */
31
  public function init() {
32
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
33
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
34
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
35
 
36
  if (
60
  */
61
  public function sections( $sections ) {
62
  $sections['formidable'] = array(
63
+ 'title' => __( 'Formidable', 'zero-spam' ),
64
+ 'icon' => 'modules/formidable/icon-formidable.png',
65
+ 'supports' => array( 'honeypot' ),
66
  );
67
 
68
  return $sections;
72
  * Formidable settings
73
  *
74
  * @param array $settings Array of available settings.
 
75
  */
76
+ public function settings( $settings ) {
77
+ $options = get_option( 'zero-spam-formidable' );
78
+
79
  $settings['verify_formidable'] = array(
80
  'title' => __( 'Protect Formidable Submissions', 'zero-spam' ),
81
+ 'desc' => __( 'Protects & monitors Formidable submissions.', 'zero-spam' ),
82
  'section' => 'formidable',
83
+ 'module' => 'formidable',
84
  'type' => 'checkbox',
85
  'options' => array(
86
+ 'enabled' => false,
87
  ),
88
  'value' => ! empty( $options['verify_formidable'] ) ? $options['verify_formidable'] : false,
89
  'recommended' => 'enabled',
92
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
93
 
94
  $settings['formidable_spam_message'] = array(
95
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
96
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
97
  'section' => 'formidable',
98
+ 'module' => 'formidable',
99
  'type' => 'text',
100
  'field_class' => 'large-text',
101
  'placeholder' => $message,
106
  $settings['log_blocked_formidable'] = array(
107
  'title' => __( 'Log Blocked Formidable Submissions', 'zero-spam' ),
108
  'section' => 'formidable',
109
+ 'module' => 'formidable',
110
  'type' => 'checkbox',
111
  'desc' => wp_kses(
112
+ __( 'When enabled, stores blocked Formidable submissions in the database.', 'zero-spam' ),
113
  array( 'strong' => array() )
114
  ),
115
  'options' => array(
116
+ 'enabled' => false,
117
  ),
118
  'value' => ! empty( $options['log_blocked_formidable'] ) ? $options['log_blocked_formidable'] : false,
119
  'recommended' => 'enabled',
modules/formidable/icon-formidable.png ADDED
Binary file
modules/give/class-give.php CHANGED
@@ -1,6 +1,12 @@
1
  <?php
2
  /**
3
- * Give class
 
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -26,7 +32,7 @@ class Give {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -40,7 +46,29 @@ class Give {
40
  add_action( 'give_checkout_error_checks', array( $this, 'process_form' ), 10, 1 );
41
 
42
  // Load scripts.
43
- // @todo - integrate the david walsh technique.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  }
45
  }
46
 
@@ -84,6 +112,11 @@ class Give {
84
  $validation_errors[] = 'honeypot';
85
  }
86
 
 
 
 
 
 
87
  // Check blocked email domains.
88
  if (
89
  ! empty( $post_data['give_email'] ) &&
@@ -93,6 +126,18 @@ class Give {
93
  $validation_errors[] = 'blocked_email_domain';
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  if ( ! empty( $validation_errors ) ) {
97
  // Failed validations, log & send details if enabled.
98
  foreach ( $validation_errors as $key => $fail ) {
@@ -131,7 +176,9 @@ class Give {
131
  */
132
  public function sections( $sections ) {
133
  $sections['givewp'] = array(
134
- 'title' => __( 'GiveWP Integration', 'zero-spam' ),
 
 
135
  );
136
 
137
  return $sections;
@@ -141,9 +188,10 @@ class Give {
141
  * Admin settings
142
  *
143
  * @param array $settings Array of available settings.
144
- * @param array $options Array of saved database options.
145
  */
146
- public function settings( $settings, $options ) {
 
 
147
  $settings['verify_givewp'] = array(
148
  'title' => sprintf(
149
  wp_kses(
@@ -160,10 +208,12 @@ class Give {
160
  ),
161
  esc_url( 'https://givewp.com/ref/1118/' )
162
  ),
 
163
  'section' => 'givewp',
 
164
  'type' => 'checkbox',
165
  'options' => array(
166
- 'enabled' => __( 'Monitor GiveWP submissions for malicious or automated spambots.', 'zero-spam' ),
167
  ),
168
  'value' => ! empty( $options['verify_givewp'] ) ? $options['verify_givewp'] : false,
169
  'recommended' => 'enabled',
@@ -172,9 +222,10 @@ class Give {
172
  $message = __( 'We\'re sorry, but we\'re unable to process the transaction. Your IP has been flagged as possible spam.', 'zero-spam' );
173
 
174
  $settings['givewp_spam_message'] = array(
175
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
176
- 'desc' => __( 'When GiveWP protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
177
  'section' => 'givewp',
 
178
  'type' => 'text',
179
  'field_class' => 'large-text',
180
  'placeholder' => $message,
@@ -185,13 +236,14 @@ class Give {
185
  $settings['log_blocked_givewp'] = array(
186
  'title' => __( 'Log Blocked GiveWP Submissions', 'zero-spam' ),
187
  'section' => 'givewp',
 
188
  'type' => 'checkbox',
189
  'desc' => wp_kses(
190
- __( 'Enables logging blocked GiveWP submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
191
  array( 'strong' => array() )
192
  ),
193
  'options' => array(
194
- 'enabled' => __( 'Enabled', 'zero-spam' ),
195
  ),
196
  'value' => ! empty( $options['log_blocked_givewp'] ) ? $options['log_blocked_givewp'] : false,
197
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * GiveWP plugin integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Checks blocked email domains
9
+ * 3. Uses the David Walsh technique (legacy forms only)
10
  *
11
  * @package ZeroSpam
12
  */
32
  */
33
  public function init() {
34
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
35
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
36
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
37
 
38
  if (
46
  add_action( 'give_checkout_error_checks', array( $this, 'process_form' ), 10, 1 );
47
 
48
  // Load scripts.
49
+ add_action( 'wp_print_scripts', array( $this, 'add_scripts' ), 999 );
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Load the scripts
55
+ *
56
+ * @see https://givewp.com/documentation/developers/conditionally-load-give-styles-and-scripts/
57
+ */
58
+ public function add_scripts() {
59
+ global $post;
60
+
61
+ // Only add scripts to the appropriate pages.
62
+ if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_givewp' ) ) {
63
+ if (
64
+ // Register and enqueue scripts on single GiveWP Form pages
65
+ is_singular('give_forms') ||
66
+ // Now check for whether the shortcode 'give_form' exists
67
+ ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'give_form' ) )
68
+ ) {
69
+ wp_enqueue_script( 'zerospam-davidwalsh' );
70
+ wp_add_inline_script( 'zerospam-davidwalsh', 'jQuery(".give-form").ZeroSpamDavidWalsh();' );
71
+ }
72
  }
73
  }
74
 
112
  $validation_errors[] = 'honeypot';
113
  }
114
 
115
+ // Check email.
116
+ if ( ! empty( $post_data['give_email'] ) && ! \ZeroSpam\Core\Utilities::is_email( $post_data['give_email'] ) ) {
117
+ $validation_errors[] = 'invalid_email';
118
+ }
119
+
120
  // Check blocked email domains.
121
  if (
122
  ! empty( $post_data['give_email'] ) &&
126
  $validation_errors[] = 'blocked_email_domain';
127
  }
128
 
129
+ // Fire hook for additional validation (ex. David Walsh script). Only works for legacy forms.
130
+ $form_post_meta = get_post_meta( $post_data['give-form-id'] );
131
+ if ( in_array( 'legacy', $form_post_meta['_give_form_template'] ) ) {
132
+ $filtered_errors = apply_filters( 'zerospam_process_givewp_submission', array(), $post_data, 'givewp_spam_message' );
133
+
134
+ if ( ! empty( $filtered_errors ) ) {
135
+ foreach ( $filtered_errors as $key => $message ) {
136
+ $validation_errors[] = str_replace( 'zerospam_', '', $key );
137
+ }
138
+ }
139
+ }
140
+
141
  if ( ! empty( $validation_errors ) ) {
142
  // Failed validations, log & send details if enabled.
143
  foreach ( $validation_errors as $key => $fail ) {
176
  */
177
  public function sections( $sections ) {
178
  $sections['givewp'] = array(
179
+ 'title' => __( 'GiveWP', 'zero-spam' ),
180
+ 'icon' => 'modules/give/icon-givewp.png',
181
+ 'supports' => array( 'honeypot', 'email', 'davidwalsh' ),
182
  );
183
 
184
  return $sections;
188
  * Admin settings
189
  *
190
  * @param array $settings Array of available settings.
 
191
  */
192
+ public function settings( $settings ) {
193
+ $options = get_option( 'zero-spam-givewp' );
194
+
195
  $settings['verify_givewp'] = array(
196
  'title' => sprintf(
197
  wp_kses(
208
  ),
209
  esc_url( 'https://givewp.com/ref/1118/' )
210
  ),
211
+ 'desc' => __( 'Protects & monitors donation forms.', 'zero-spam' ),
212
  'section' => 'givewp',
213
+ 'module' => 'givewp',
214
  'type' => 'checkbox',
215
  'options' => array(
216
+ 'enabled' => false,
217
  ),
218
  'value' => ! empty( $options['verify_givewp'] ) ? $options['verify_givewp'] : false,
219
  'recommended' => 'enabled',
222
  $message = __( 'We\'re sorry, but we\'re unable to process the transaction. Your IP has been flagged as possible spam.', 'zero-spam' );
223
 
224
  $settings['givewp_spam_message'] = array(
225
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
226
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
227
  'section' => 'givewp',
228
+ 'module' => 'givewp',
229
  'type' => 'text',
230
  'field_class' => 'large-text',
231
  'placeholder' => $message,
236
  $settings['log_blocked_givewp'] = array(
237
  'title' => __( 'Log Blocked GiveWP Submissions', 'zero-spam' ),
238
  'section' => 'givewp',
239
+ 'module' => 'givewp',
240
  'type' => 'checkbox',
241
  'desc' => wp_kses(
242
+ __( 'When enabled, stores blocked donation submissions in the database.', 'zero-spam' ),
243
  array( 'strong' => array() )
244
  ),
245
  'options' => array(
246
+ 'enabled' => false,
247
  ),
248
  'value' => ! empty( $options['log_blocked_givewp'] ) ? $options['log_blocked_givewp'] : false,
249
  'recommended' => 'enabled',
{assets/img → modules/give}/icon-givewp.png RENAMED
File without changes
modules/gravityforms/class-gravityforms.php ADDED
@@ -0,0 +1,236 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Gravity Forms plugin integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Checks blocked email domains
9
+ *
10
+ * @package ZeroSpam
11
+ */
12
+
13
+ namespace ZeroSpam\Modules\GravityForms;
14
+
15
+ // Security Note: Blocks direct access to the plugin PHP files.
16
+ defined( 'ABSPATH' ) || die();
17
+
18
+ /**
19
+ * Gravity Forms
20
+ */
21
+ class GravityForms {
22
+ /**
23
+ * Constructor
24
+ */
25
+ public function __construct() {
26
+ add_action( 'init', array( $this, 'init' ) );
27
+ }
28
+
29
+ /**
30
+ * Fires after WordPress has finished loading but before any headers are sent.
31
+ */
32
+ public function init() {
33
+ add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
34
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
35
+ add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
36
+
37
+ if (
38
+ 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_gravityforms' ) &&
39
+ \ZeroSpam\Core\Access::process()
40
+ ) {
41
+ // Adds Zero Spam's honeypot field.
42
+ add_filter( 'gform_form_tag', array( $this, 'add_honeypot' ), 60, 2 );
43
+
44
+ // Processes the form.
45
+ add_action( 'gform_abort_submission_with_confirmation', array( $this, 'process_form' ), 10, 2 );
46
+ add_filter( 'gform_confirmation', array( $this, 'confirmation_message' ), 10, 4 );
47
+ /*
48
+ // Load scripts.
49
+ add_action( 'wp_print_scripts', array( $this, 'add_scripts' ), 999 );
50
+ */
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Load the scripts
56
+ *
57
+ * @see https://givewp.com/documentation/developers/conditionally-load-give-styles-and-scripts/
58
+ */
59
+ public function add_scripts() {
60
+ //wp_enqueue_script( 'zerospam-davidwalsh' );
61
+ //wp_add_inline_script( 'zerospam-davidwalsh', 'jQuery(".give-form").ZeroSpamDavidWalsh();' );
62
+ }
63
+
64
+
65
+ /**
66
+ * Adds Zero Spam's honeypot field.
67
+ *
68
+ * @see https://docs.gravityforms.com/gform_form_tag/#h-add-hidden-input
69
+ *
70
+ * @param string $form_tag The string containing the <form> tag
71
+ * @param array $form The current form object to be filtered.
72
+ */
73
+ public function add_honeypot( $form_tag, $form ) {
74
+ $form_tag .= \ZeroSpam\Core\Utilities::honeypot_field();
75
+
76
+ return $form_tag;
77
+ }
78
+
79
+ public function confirmation_message( $confirmation, $form, $entry, $ajax ) {
80
+ if ( empty( $entry ) || rgar( $entry, 'status' ) === 'spam' ) {
81
+ $error_message = \ZeroSpam\Core\Utilities::detection_message( 'gravityforms_spam_message' );
82
+
83
+ return $error_message;
84
+ }
85
+
86
+ return $confirmation;
87
+ }
88
+
89
+ /**
90
+ * Processes a donation submission.
91
+ *
92
+ * @param boolean $do_abort Indicates if the submission should abort without saving the entry. Default is false. Will be true if the anti-spam honeypot is enabled and the honeypot identified the submission as spam.
93
+ * @param FormObject $form The form currently being processed.
94
+ */
95
+ public function process_form( $do_abort, $form ) {
96
+ // // If submission is already marked to be aborted early, don't change it.
97
+ if ( $do_abort ) {
98
+ return true;
99
+ }
100
+
101
+ // @codingStandardsIgnoreLine
102
+ $post = \ZeroSpam\Core\Utilities::sanitize_array( $_POST );
103
+
104
+ // Check Zero Spam's honeypot field.
105
+ $honeypot_field_name = \ZeroSpam\Core\Utilities::get_honeypot();
106
+
107
+ // Create the details array for logging & sharing data.
108
+ $details = $post;
109
+
110
+ $details['type'] = 'gravityforms';
111
+
112
+ // Begin validation checks.
113
+ $validation_errors = array();
114
+
115
+ // @codingStandardsIgnoreLine
116
+ if ( isset( $post[ $honeypot_field_name ] ) && ! empty( $post[ $honeypot_field_name ] ) ) {
117
+ // Failed the honeypot check.
118
+ $validation_errors[] = 'honeypot';
119
+ }
120
+
121
+ if ( ! empty( $validation_errors ) ) {
122
+ $do_abort = true;
123
+
124
+ // Failed validations, log & send details if enabled.
125
+ foreach ( $validation_errors as $key => $fail ) {
126
+ $details['failed'] = $fail;
127
+
128
+ // Log the detection if enabled.
129
+ if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'log_blocked_gravityforms' ) ) {
130
+ \ZeroSpam\Includes\DB::log( 'gravityforms', $details );
131
+ }
132
+
133
+ // Share the detection if enabled.
134
+ if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'share_data' ) ) {
135
+ do_action( 'zerospam_share_detection', $details );
136
+ }
137
+ }
138
+ }
139
+
140
+ return $do_abort;
141
+ }
142
+
143
+ /**
144
+ * Add to the types array
145
+ *
146
+ * @param array $types Array of available detection types.
147
+ */
148
+ public function types( $types ) {
149
+ $types['gravityforms'] = __( 'Gravity Forms', 'zero-spam' );
150
+
151
+ return $types;
152
+ }
153
+
154
+ /**
155
+ * Admin section
156
+ *
157
+ * @param array $sections Array of available setting sections.
158
+ */
159
+ public function sections( $sections ) {
160
+ $sections['gravityforms'] = array(
161
+ 'title' => __( 'Gravity Forms', 'zero-spam' ),
162
+ 'icon' => 'modules/gravityforms/icon-gravity-forms.svg',
163
+ 'supports' => array( 'honeypot', 'email' ),
164
+ );
165
+
166
+ return $sections;
167
+ }
168
+
169
+ /**
170
+ * Admin settings
171
+ *
172
+ * @param array $settings Array of available settings.
173
+ */
174
+ public function settings( $settings ) {
175
+ $options = get_option( 'zero-spam-gravityforms' );
176
+
177
+ $settings['verify_gravityforms'] = array(
178
+ 'title' => sprintf(
179
+ wp_kses(
180
+ /* translators: %s: url */
181
+ __( 'Protect <a href="%s" target="_blank" rel="noreferrer noopener">Gravity Form</a> Submissions', 'zero-spam' ),
182
+ array(
183
+ 'a' => array(
184
+ 'href' => array(),
185
+ 'class' => array(),
186
+ 'target' => array(),
187
+ 'rel' => array(),
188
+ ),
189
+ )
190
+ ),
191
+ esc_url( 'https://www.gravityforms.com/' )
192
+ ),
193
+ 'desc' => __( 'Protects & monitors Gravity Form submissions (requires >=v2.7 to enable).', 'zero-spam' ),
194
+ 'section' => 'gravityforms',
195
+ 'module' => 'gravityforms',
196
+ 'type' => 'checkbox',
197
+ 'options' => array(
198
+ 'enabled' => false,
199
+ ),
200
+ 'value' => ! empty( $options['verify_gravityforms'] ) ? $options['verify_gravityforms'] : false,
201
+ 'recommended' => 'enabled',
202
+ );
203
+
204
+ $message = __( 'We were unable to process your submission: IP address has been flagged as possible spam.', 'zero-spam' );
205
+
206
+ $settings['gravityforms_spam_message'] = array(
207
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
208
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
209
+ 'section' => 'gravityforms',
210
+ 'module' => 'gravityforms',
211
+ 'type' => 'text',
212
+ 'field_class' => 'large-text',
213
+ 'placeholder' => $message,
214
+ 'value' => ! empty( $options['gravityforms_spam_message'] ) ? $options['gravityforms_spam_message'] : $message,
215
+ 'recommended' => $message,
216
+ );
217
+
218
+ $settings['log_blocked_gravityforms'] = array(
219
+ 'title' => __( 'Log Blocked Gravity Form Submissions', 'zero-spam' ),
220
+ 'section' => 'gravityforms',
221
+ 'module' => 'gravityforms',
222
+ 'type' => 'checkbox',
223
+ 'desc' => wp_kses(
224
+ __( 'When enabled, stores blocked form submissions in the database.', 'zero-spam' ),
225
+ array( 'strong' => array() )
226
+ ),
227
+ 'options' => array(
228
+ 'enabled' => false
229
+ ),
230
+ 'value' => ! empty( $options['log_blocked_gravityforms'] ) ? $options['log_blocked_gravityforms'] : false,
231
+ 'recommended' => 'enabled',
232
+ );
233
+
234
+ return $settings;
235
+ }
236
+ }
modules/gravityforms/icon-gravity-forms.svg ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 391.6 431.1" style="enable-background:new 0 0 391.6 431.1;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#F15A2B;}
7
+ .st1{fill:#FFFFFF;}
8
+ </style>
9
+ <path class="st0" d="M391.6,292.8c0,19.7-14,43.9-31,53.7l-133.8,77.2c-17.1,9.9-45,9.9-62,0L31,346.5c-17.1-9.9-31-34-31-53.7
10
+ V138.3c0-19.7,13.9-43.9,31-53.7L164.8,7.4c17.1-9.9,45-9.9,62,0l133.7,77.2c17.1,9.8,31,34,31,53.7L391.6,292.8L391.6,292.8z"/>
11
+ <path class="st1" d="M157.8,179.8H335V130H158.2c-25.3,0-46.3,8.7-62.3,25.7c-38.6,41.1-39.6,144.6-39.6,144.6h277.4v-93.6h-49.8
12
+ v43.8H109.5c1.1-16.3,8.6-45.5,22.8-60.6C138.7,183,146.8,179.8,157.8,179.8L157.8,179.8z"/>
13
+ </svg>
modules/login/class-login.php CHANGED
@@ -1,6 +1,11 @@
1
  <?php
2
  /**
3
- * Login class
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -26,7 +31,7 @@ class Login {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -158,7 +163,9 @@ class Login {
158
  */
159
  public function sections( $sections ) {
160
  $sections['login'] = array(
161
- 'title' => __( 'User Login Integration', 'zero-spam' ),
 
 
162
  );
163
 
164
  return $sections;
@@ -168,15 +175,18 @@ class Login {
168
  * Admin settings
169
  *
170
  * @param array $settings Array of available settings.
171
- * @param array $options Array of saved database options.
172
  */
173
- public function settings( $settings, $options ) {
 
 
174
  $settings['verify_login'] = array(
175
  'title' => __( 'Protect Login Attempts', 'zero-spam' ),
 
176
  'section' => 'login',
 
177
  'type' => 'checkbox',
178
  'options' => array(
179
- 'enabled' => __( 'Monitor login attempts for malicious or automated spambots.', 'zero-spam' ),
180
  ),
181
  'value' => ! empty( $options['verify_login'] ) ? $options['verify_login'] : false,
182
  'recommended' => 'enabled',
@@ -185,9 +195,10 @@ class Login {
185
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
186
 
187
  $settings['login_spam_message'] = array(
188
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
189
- 'desc' => __( 'When login protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
190
  'section' => 'login',
 
191
  'type' => 'text',
192
  'field_class' => 'large-text',
193
  'placeholder' => $message,
@@ -198,13 +209,14 @@ class Login {
198
  $settings['log_blocked_logins'] = array(
199
  'title' => __( 'Log Blocked Login Attempts', 'zero-spam' ),
200
  'section' => 'login',
 
201
  'type' => 'checkbox',
202
  'desc' => wp_kses(
203
- __( 'Enables logging blocked login attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
204
  array( 'strong' => array() )
205
  ),
206
  'options' => array(
207
- 'enabled' => __( 'Enabled', 'zero-spam' ),
208
  ),
209
  'value' => ! empty( $options['log_blocked_logins'] ) ? $options['log_blocked_logins'] : false,
210
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * Login integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Uses the David Walsh technique
9
  *
10
  * @package ZeroSpam
11
  */
31
  */
32
  public function init() {
33
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
34
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
35
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
36
 
37
  if (
163
  */
164
  public function sections( $sections ) {
165
  $sections['login'] = array(
166
+ 'title' => __( 'User Login', 'zero-spam' ),
167
+ 'icon' => 'assets/img/icon-wordpress.svg',
168
+ 'supports' => array( 'honeypot', 'davidwalsh' ),
169
  );
170
 
171
  return $sections;
175
  * Admin settings
176
  *
177
  * @param array $settings Array of available settings.
 
178
  */
179
+ public function settings( $settings ) {
180
+ $options = get_option( 'zero-spam-login' );
181
+
182
  $settings['verify_login'] = array(
183
  'title' => __( 'Protect Login Attempts', 'zero-spam' ),
184
+ 'desc' => __( 'Protects & monitors login attempts.', 'zero-spam' ),
185
  'section' => 'login',
186
+ 'module' => 'login',
187
  'type' => 'checkbox',
188
  'options' => array(
189
+ 'enabled' => false,
190
  ),
191
  'value' => ! empty( $options['verify_login'] ) ? $options['verify_login'] : false,
192
  'recommended' => 'enabled',
195
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
196
 
197
  $settings['login_spam_message'] = array(
198
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
199
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
200
  'section' => 'login',
201
+ 'module' => 'login',
202
  'type' => 'text',
203
  'field_class' => 'large-text',
204
  'placeholder' => $message,
209
  $settings['log_blocked_logins'] = array(
210
  'title' => __( 'Log Blocked Login Attempts', 'zero-spam' ),
211
  'section' => 'login',
212
+ 'module' => 'login',
213
  'type' => 'checkbox',
214
  'desc' => wp_kses(
215
+ __( 'When enabled, stores blocked login attempts in the database.', 'zero-spam' ),
216
  array( 'strong' => array() )
217
  ),
218
  'options' => array(
219
+ 'enabled' => false,
220
  ),
221
  'value' => ! empty( $options['log_blocked_logins'] ) ? $options['log_blocked_logins'] : false,
222
  'recommended' => 'enabled',
modules/mailchimpforwp/class-mailchimpforwp.php CHANGED
@@ -26,7 +26,7 @@ class MailchimpForWP {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -108,6 +108,11 @@ class MailchimpForWP {
108
  $validation_errors[] = 'honeypot';
109
  }
110
 
 
 
 
 
 
111
  // Check blocked email domains.
112
  if (
113
  ! empty( $post['EMAIL'] ) &&
@@ -167,7 +172,7 @@ class MailchimpForWP {
167
  */
168
  public function sections( $sections ) {
169
  $sections['mailchimp4wp'] = array(
170
- 'title' => __( 'Mailchimp for WordPress Integration', 'zero-spam' ),
171
  );
172
 
173
  return $sections;
@@ -177,12 +182,14 @@ class MailchimpForWP {
177
  * Admin settings
178
  *
179
  * @param array $settings Array of available settings.
180
- * @param array $options Array of saved database options.
181
  */
182
- public function settings( $settings, $options ) {
 
 
183
  $settings['verify_mailchimp4wp'] = array(
184
  'title' => __( 'Protect Forms', 'zero-spam' ),
185
  'section' => 'mailchimp4wp',
 
186
  'type' => 'checkbox',
187
  'options' => array(
188
  'enabled' => __( 'Monitor Mailchimp form submissions for malicious or automated spambots.', 'zero-spam' ),
@@ -197,6 +204,7 @@ class MailchimpForWP {
197
  'title' => __( 'Mailchimp Spam/Malicious Message', 'zero-spam' ),
198
  'desc' => __( 'When Mailchimp form protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
199
  'section' => 'mailchimp4wp',
 
200
  'type' => 'text',
201
  'field_class' => 'large-text',
202
  'placeholder' => $message,
@@ -207,6 +215,7 @@ class MailchimpForWP {
207
  $settings['log_blocked_mailchimp4wp'] = array(
208
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
209
  'section' => 'mailchimp4wp',
 
210
  'type' => 'checkbox',
211
  'desc' => wp_kses(
212
  __( 'Enables logging blocked Mailchimp form submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
108
  $validation_errors[] = 'honeypot';
109
  }
110
 
111
+ // Check email.
112
+ if ( ! empty( $post['EMAIL'] ) && ! \ZeroSpam\Core\Utilities::is_email( $post['EMAIL'] ) ) {
113
+ $validation_errors[] = 'invalid_email';
114
+ }
115
+
116
  // Check blocked email domains.
117
  if (
118
  ! empty( $post['EMAIL'] ) &&
172
  */
173
  public function sections( $sections ) {
174
  $sections['mailchimp4wp'] = array(
175
+ 'title' => __( 'Mailchimp for WordPress', 'zero-spam' ),
176
  );
177
 
178
  return $sections;
182
  * Admin settings
183
  *
184
  * @param array $settings Array of available settings.
 
185
  */
186
+ public function settings( $settings ) {
187
+ $options = get_option( 'zero-spam-mailchimp4wp' );
188
+
189
  $settings['verify_mailchimp4wp'] = array(
190
  'title' => __( 'Protect Forms', 'zero-spam' ),
191
  'section' => 'mailchimp4wp',
192
+ 'module' => 'mailchimp4wp',
193
  'type' => 'checkbox',
194
  'options' => array(
195
  'enabled' => __( 'Monitor Mailchimp form submissions for malicious or automated spambots.', 'zero-spam' ),
204
  'title' => __( 'Mailchimp Spam/Malicious Message', 'zero-spam' ),
205
  'desc' => __( 'When Mailchimp form protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
206
  'section' => 'mailchimp4wp',
207
+ 'module' => 'mailchimp4wp',
208
  'type' => 'text',
209
  'field_class' => 'large-text',
210
  'placeholder' => $message,
215
  $settings['log_blocked_mailchimp4wp'] = array(
216
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
217
  'section' => 'mailchimp4wp',
218
+ 'module' => 'mailchimp4wp',
219
  'type' => 'checkbox',
220
  'desc' => wp_kses(
221
  __( 'Enables logging blocked Mailchimp form submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
modules/memberpress/class-memberpress.php CHANGED
@@ -28,7 +28,7 @@ class MemberPress {
28
  global $wp_query;
29
 
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
32
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
33
 
34
  if ( \ZeroSpam\Core\Access::process() ) {
@@ -115,6 +115,11 @@ class MemberPress {
115
  $validation_errors[] = 'honeypot';
116
  }
117
 
 
 
 
 
 
118
  // Check blocked email domains.
119
  if (
120
  ! empty( $post['user_email'] ) &&
@@ -235,7 +240,7 @@ class MemberPress {
235
  */
236
  public function sections( $sections ) {
237
  $sections['memberpress'] = array(
238
- 'title' => __( 'MemberPress Integration', 'zero-spam' ),
239
  );
240
 
241
  return $sections;
@@ -245,14 +250,16 @@ class MemberPress {
245
  * Admin settings
246
  *
247
  * @param array $settings Array of available settings.
248
- * @param array $options Array of saved database options.
249
  */
250
- public function settings( $settings, $options ) {
 
 
251
  $default_spam_message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
252
 
253
  // Registration protection.
254
  $settings['memberpress_registration_info'] = array(
255
  'section' => 'memberpress',
 
256
  'type' => 'html',
257
  'html' => sprintf(
258
  wp_kses(
@@ -269,6 +276,7 @@ class MemberPress {
269
  $settings['verify_memberpress_registration'] = array(
270
  'title' => __( 'Protect Registration Forms', 'zero-spam' ),
271
  'section' => 'memberpress',
 
272
  'type' => 'checkbox',
273
  'options' => array(
274
  'enabled' => __( 'Monitor MemberPress registrations for malicious or automated spambots.', 'zero-spam' ),
@@ -281,6 +289,7 @@ class MemberPress {
281
  'title' => __( 'Registration Spam/Malicious Message', 'zero-spam' ),
282
  'desc' => __( 'When registration protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
283
  'section' => 'memberpress',
 
284
  'type' => 'text',
285
  'field_class' => 'large-text',
286
  'placeholder' => $default_spam_message,
@@ -291,6 +300,7 @@ class MemberPress {
291
  $settings['log_blocked_memberpress_registrations'] = array(
292
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
293
  'section' => 'memberpress',
 
294
  'type' => 'checkbox',
295
  'desc' => wp_kses(
296
  __( 'Enables logging blocked registration attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
@@ -306,6 +316,7 @@ class MemberPress {
306
  // User login protection.
307
  $settings['memberpress_login_info'] = array(
308
  'section' => 'memberpress',
 
309
  'type' => 'html',
310
  'html' => sprintf(
311
  wp_kses(
@@ -322,6 +333,7 @@ class MemberPress {
322
  $settings['verify_memberpress_login'] = array(
323
  'title' => __( 'Protect Login Forms', 'zero-spam' ),
324
  'section' => 'memberpress',
 
325
  'type' => 'checkbox',
326
  'options' => array(
327
  'enabled' => __( 'Monitor MemberPress logins for malicious or automated spambots.', 'zero-spam' ),
@@ -334,6 +346,7 @@ class MemberPress {
334
  'title' => __( 'Login Spam/Malicious Message', 'zero-spam' ),
335
  'desc' => __( 'When login protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
336
  'section' => 'memberpress',
 
337
  'type' => 'text',
338
  'field_class' => 'large-text',
339
  'placeholder' => $default_spam_message,
@@ -344,6 +357,7 @@ class MemberPress {
344
  $settings['log_blocked_memberpress_logins'] = array(
345
  'title' => __( 'Log Blocked Logins', 'zero-spam' ),
346
  'section' => 'memberpress',
 
347
  'type' => 'checkbox',
348
  'desc' => wp_kses(
349
  __( 'Enables logging blocked login attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
28
  global $wp_query;
29
 
30
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
31
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
32
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
33
 
34
  if ( \ZeroSpam\Core\Access::process() ) {
115
  $validation_errors[] = 'honeypot';
116
  }
117
 
118
+ // Check email.
119
+ if ( ! empty( $post['user_email'] ) && ! \ZeroSpam\Core\Utilities::is_email( $post['user_email'] ) ) {
120
+ $validation_errors[] = 'invalid_email';
121
+ }
122
+
123
  // Check blocked email domains.
124
  if (
125
  ! empty( $post['user_email'] ) &&
240
  */
241
  public function sections( $sections ) {
242
  $sections['memberpress'] = array(
243
+ 'title' => __( 'MemberPress', 'zero-spam' ),
244
  );
245
 
246
  return $sections;
250
  * Admin settings
251
  *
252
  * @param array $settings Array of available settings.
 
253
  */
254
+ public function settings( $settings ) {
255
+ $options = get_option( 'zero-spam-memberpress' );
256
+
257
  $default_spam_message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
258
 
259
  // Registration protection.
260
  $settings['memberpress_registration_info'] = array(
261
  'section' => 'memberpress',
262
+ 'module' => 'memberpress',
263
  'type' => 'html',
264
  'html' => sprintf(
265
  wp_kses(
276
  $settings['verify_memberpress_registration'] = array(
277
  'title' => __( 'Protect Registration Forms', 'zero-spam' ),
278
  'section' => 'memberpress',
279
+ 'module' => 'memberpress',
280
  'type' => 'checkbox',
281
  'options' => array(
282
  'enabled' => __( 'Monitor MemberPress registrations for malicious or automated spambots.', 'zero-spam' ),
289
  'title' => __( 'Registration Spam/Malicious Message', 'zero-spam' ),
290
  'desc' => __( 'When registration protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
291
  'section' => 'memberpress',
292
+ 'module' => 'memberpress',
293
  'type' => 'text',
294
  'field_class' => 'large-text',
295
  'placeholder' => $default_spam_message,
300
  $settings['log_blocked_memberpress_registrations'] = array(
301
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
302
  'section' => 'memberpress',
303
+ 'module' => 'memberpress',
304
  'type' => 'checkbox',
305
  'desc' => wp_kses(
306
  __( 'Enables logging blocked registration attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
316
  // User login protection.
317
  $settings['memberpress_login_info'] = array(
318
  'section' => 'memberpress',
319
+ 'module' => 'memberpress',
320
  'type' => 'html',
321
  'html' => sprintf(
322
  wp_kses(
333
  $settings['verify_memberpress_login'] = array(
334
  'title' => __( 'Protect Login Forms', 'zero-spam' ),
335
  'section' => 'memberpress',
336
+ 'module' => 'memberpress',
337
  'type' => 'checkbox',
338
  'options' => array(
339
  'enabled' => __( 'Monitor MemberPress logins for malicious or automated spambots.', 'zero-spam' ),
346
  'title' => __( 'Login Spam/Malicious Message', 'zero-spam' ),
347
  'desc' => __( 'When login protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
348
  'section' => 'memberpress',
349
+ 'module' => 'memberpress',
350
  'type' => 'text',
351
  'field_class' => 'large-text',
352
  'placeholder' => $default_spam_message,
357
  $settings['log_blocked_memberpress_logins'] = array(
358
  'title' => __( 'Log Blocked Logins', 'zero-spam' ),
359
  'section' => 'memberpress',
360
+ 'module' => 'memberpress',
361
  'type' => 'checkbox',
362
  'desc' => wp_kses(
363
  __( 'Enables logging blocked login attempts. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
modules/registration/class-registration.php CHANGED
@@ -1,6 +1,12 @@
1
  <?php
2
  /**
3
- * Registration class
 
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -26,7 +32,7 @@ class Registration {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -95,6 +101,11 @@ class Registration {
95
  $validation_errors[] = 'honeypot';
96
  }
97
 
 
 
 
 
 
98
  // Check blocked email domains.
99
  if (
100
  ! empty( $user_email ) &&
@@ -150,7 +161,9 @@ class Registration {
150
  */
151
  public function sections( $sections ) {
152
  $sections['registration'] = array(
153
- 'title' => __( 'Registration Integration', 'zero-spam' ),
 
 
154
  );
155
 
156
  return $sections;
@@ -160,15 +173,18 @@ class Registration {
160
  * Admin settings
161
  *
162
  * @param array $settings Array of available settings.
163
- * @param array $options Array of saved database options.
164
  */
165
- public function settings( $settings, $options ) {
 
 
166
  $settings['verify_registrations'] = array(
167
  'title' => __( 'Protect Registrations', 'zero-spam' ),
 
168
  'section' => 'registration',
 
169
  'type' => 'checkbox',
170
  'options' => array(
171
- 'enabled' => __( 'Monitor registrations for malicious or automated spambots.', 'zero-spam' ),
172
  ),
173
  'value' => ! empty( $options['verify_registrations'] ) ? $options['verify_registrations'] : false,
174
  'recommended' => 'enabled',
@@ -177,9 +193,10 @@ class Registration {
177
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
178
 
179
  $settings['registration_spam_message'] = array(
180
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
181
- 'desc' => __( 'When registration protection is enabled, the message displayed to the user when a registration has been detected as spam/malicious.', 'zero-spam' ),
182
  'section' => 'registration',
 
183
  'type' => 'text',
184
  'field_class' => 'large-text',
185
  'placeholder' => $message,
@@ -190,13 +207,14 @@ class Registration {
190
  $settings['log_blocked_registrations'] = array(
191
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
192
  'section' => 'registration',
 
193
  'type' => 'checkbox',
194
  'desc' => wp_kses(
195
- __( 'Enables logging blocked registrations. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
196
  array( 'strong' => array() )
197
  ),
198
  'options' => array(
199
- 'enabled' => __( 'Enabled', 'zero-spam' ),
200
  ),
201
  'value' => ! empty( $options['log_blocked_registrations'] ) ? $options['log_blocked_registrations'] : false,
202
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * Registration integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Checks blocked email domains
9
+ * 3. Uses the David Walsh technique
10
  *
11
  * @package ZeroSpam
12
  */
32
  */
33
  public function init() {
34
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
35
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
36
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
37
 
38
  if (
101
  $validation_errors[] = 'honeypot';
102
  }
103
 
104
+ // Check email.
105
+ if ( ! empty( $user_email ) && ! \ZeroSpam\Core\Utilities::is_email( $user_email ) ) {
106
+ $validation_errors[] = 'invalid_email';
107
+ }
108
+
109
  // Check blocked email domains.
110
  if (
111
  ! empty( $user_email ) &&
161
  */
162
  public function sections( $sections ) {
163
  $sections['registration'] = array(
164
+ 'title' => __( 'Registration', 'zero-spam' ),
165
+ 'icon' => 'assets/img/icon-wordpress.svg',
166
+ 'supports' => array( 'honeypot', 'email', 'davidwalsh' ),
167
  );
168
 
169
  return $sections;
173
  * Admin settings
174
  *
175
  * @param array $settings Array of available settings.
 
176
  */
177
+ public function settings( $settings ) {
178
+ $options = get_option( 'zero-spam-registration' );
179
+
180
  $settings['verify_registrations'] = array(
181
  'title' => __( 'Protect Registrations', 'zero-spam' ),
182
+ 'desc' => __( 'Protects & monitors registration submissions.', 'zero-spam' ),
183
  'section' => 'registration',
184
+ 'module' => 'registration',
185
  'type' => 'checkbox',
186
  'options' => array(
187
+ 'enabled' => false,
188
  ),
189
  'value' => ! empty( $options['verify_registrations'] ) ? $options['verify_registrations'] : false,
190
  'recommended' => 'enabled',
193
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
194
 
195
  $settings['registration_spam_message'] = array(
196
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
197
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
198
  'section' => 'registration',
199
+ 'module' => 'registration',
200
  'type' => 'text',
201
  'field_class' => 'large-text',
202
  'placeholder' => $message,
207
  $settings['log_blocked_registrations'] = array(
208
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
209
  'section' => 'registration',
210
+ 'module' => 'registration',
211
  'type' => 'checkbox',
212
  'desc' => wp_kses(
213
+ __( 'When enabled, stores blocked registration submissions in the database.', 'zero-spam' ),
214
  array( 'strong' => array() )
215
  ),
216
  'options' => array(
217
+ 'enabled' => false,
218
  ),
219
  'value' => ! empty( $options['log_blocked_registrations'] ) ? $options['log_blocked_registrations'] : false,
220
  'recommended' => 'enabled',
modules/woocommerce/class-woocommerce.php CHANGED
@@ -1,6 +1,12 @@
1
  <?php
2
  /**
3
- * Zero Spam for WordPress WooCommerce Module
 
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -39,7 +45,9 @@ class WooCommerce {
39
  */
40
  public function sections( $sections ) {
41
  $sections['woocommerce'] = array(
42
- 'title' => __( 'WooCommerce Integration', 'zero-spam' ),
 
 
43
  );
44
 
45
  return $sections;
@@ -49,15 +57,18 @@ class WooCommerce {
49
  * Register the Zero Spam admin settings for this module
50
  *
51
  * @param array $settings Array of available settings.
52
- * @param array $options Array of saved database options.
53
  */
54
- public function settings( $settings, $options ) {
 
 
55
  $settings['verify_woocommerce_registrations'] = array(
56
  'title' => __( 'Protect Registrations', 'zero-spam' ),
 
57
  'section' => 'woocommerce',
 
58
  'type' => 'checkbox',
59
  'options' => array(
60
- 'enabled' => __( 'Monitor WooCommerce registrations for malicious or automated spambots.', 'zero-spam' ),
61
  ),
62
  'value' => ! empty( $options['verify_woocommerce_registrations'] ) ? 'enabled' : false,
63
  'recommended' => 'enabled',
@@ -66,9 +77,10 @@ class WooCommerce {
66
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
67
 
68
  $settings['woocommerce_registration_spam_message'] = array(
69
- 'title' => __( 'Spam/Malicious Message', 'zero-spam' ),
70
- 'desc' => __( 'When WooCommerce registration protection is enabled, the message displayed to the user when a registration has been detected as spam/malicious.', 'zero-spam' ),
71
  'section' => 'woocommerce',
 
72
  'type' => 'text',
73
  'field_class' => 'large-text',
74
  'placeholder' => $message,
@@ -79,15 +91,16 @@ class WooCommerce {
79
  $settings['log_blocked_woocommerce_registrations'] = array(
80
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
81
  'section' => 'woocommerce',
 
82
  'type' => 'checkbox',
83
  'desc' => wp_kses(
84
- __( 'Enables logging blocked WooCommerce registrations. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
85
  array( 'strong' => array() )
86
  ),
87
  'options' => array(
88
- 'enabled' => __( 'Enabled', 'zero-spam' ),
89
  ),
90
- 'value' => ! empty( $options['log_blocked_registrations'] ) ? 'enabled' : false,
91
  'recommended' => 'enabled',
92
  );
93
 
@@ -135,7 +148,9 @@ class WooCommerce {
135
  // Only add scripts to the appropriate pages.
136
  if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'davidwalsh' ) ) {
137
  wp_enqueue_script( 'zerospam-davidwalsh' );
138
- wp_add_inline_script( 'zerospam-davidwalsh', 'jQuery(".woocommerce-form-register, .woocommerce-checkout").ZeroSpamDavidWalsh();' );
 
 
139
  }
140
  }
141
 
@@ -172,6 +187,11 @@ class WooCommerce {
172
  $validation_errors[] = 'honeypot';
173
  }
174
 
 
 
 
 
 
175
  // Check blocked email domains.
176
  if ( \ZeroSpam\Core\Utilities::is_email_domain_blocked( $email ) ) {
177
  // Email domain has been blocked.
1
  <?php
2
  /**
3
+ * WooCommerce integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Blocked email domains
9
+ * 3. David Walsh technique
10
  *
11
  * @package ZeroSpam
12
  */
45
  */
46
  public function sections( $sections ) {
47
  $sections['woocommerce'] = array(
48
+ 'title' => __( 'WooCommerce', 'zero-spam' ),
49
+ 'icon' => 'modules/woocommerce/icon-woocommerce.svg',
50
+ 'supports' => array( 'honeypot', 'email', 'davidwalsh' ),
51
  );
52
 
53
  return $sections;
57
  * Register the Zero Spam admin settings for this module
58
  *
59
  * @param array $settings Array of available settings.
 
60
  */
61
+ public function settings( $settings ) {
62
+ $options = get_option( 'zero-spam-woocommerce' );
63
+
64
  $settings['verify_woocommerce_registrations'] = array(
65
  'title' => __( 'Protect Registrations', 'zero-spam' ),
66
+ 'desc' => __( 'Protects & monitors WooCommerce registrations.', 'zero-spam' ),
67
  'section' => 'woocommerce',
68
+ 'module' => 'woocommerce',
69
  'type' => 'checkbox',
70
  'options' => array(
71
+ 'enabled' => false,
72
  ),
73
  'value' => ! empty( $options['verify_woocommerce_registrations'] ) ? 'enabled' : false,
74
  'recommended' => 'enabled',
77
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
78
 
79
  $settings['woocommerce_registration_spam_message'] = array(
80
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
81
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
82
  'section' => 'woocommerce',
83
+ 'module' => 'woocommerce',
84
  'type' => 'text',
85
  'field_class' => 'large-text',
86
  'placeholder' => $message,
91
  $settings['log_blocked_woocommerce_registrations'] = array(
92
  'title' => __( 'Log Blocked Registrations', 'zero-spam' ),
93
  'section' => 'woocommerce',
94
+ 'module' => 'woocommerce',
95
  'type' => 'checkbox',
96
  'desc' => wp_kses(
97
+ __( 'When enabled, stores blocked WooCommerce registrations in the database.', 'zero-spam' ),
98
  array( 'strong' => array() )
99
  ),
100
  'options' => array(
101
+ 'enabled' => false,
102
  ),
103
+ 'value' => ! empty( $options['log_blocked_woocommerce_registrations'] ) ? 'enabled' : false,
104
  'recommended' => 'enabled',
105
  );
106
 
148
  // Only add scripts to the appropriate pages.
149
  if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'davidwalsh' ) ) {
150
  wp_enqueue_script( 'zerospam-davidwalsh' );
151
+ add_action( 'wp_footer', function() {
152
+ echo '<script type="text/javascript">jQuery(".woocommerce-form-register, .woocommerce-checkout").ZeroSpamDavidWalsh();</script>';
153
+ }, 999 );
154
  }
155
  }
156
 
187
  $validation_errors[] = 'honeypot';
188
  }
189
 
190
+ // Check email.
191
+ if ( ! empty( $email ) && ! \ZeroSpam\Core\Utilities::is_email( $email ) ) {
192
+ $validation_errors[] = 'invalid_email';
193
+ }
194
+
195
  // Check blocked email domains.
196
  if ( \ZeroSpam\Core\Utilities::is_email_domain_blocked( $email ) ) {
197
  // Email domain has been blocked.
{assets/img → modules/woocommerce}/icon-woocommerce.svg RENAMED
File without changes
modules/wpforms/class-wpforms.php CHANGED
@@ -1,6 +1,11 @@
1
  <?php
2
  /**
3
- * WPForms class
 
 
 
 
 
4
  *
5
  * @package ZeroSpam
6
  */
@@ -26,7 +31,7 @@ class WPForms {
26
  */
27
  public function init() {
28
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
29
- add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 2 );
30
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
31
 
32
  if (
@@ -37,7 +42,7 @@ class WPForms {
37
  add_action( 'wpforms_frontend_output', array( $this, 'honeypot' ), 10, 1 );
38
 
39
  // Load scripts.
40
- add_action( 'wpforms_frontend_output', array( $this, 'scripts' ) );
41
 
42
  // Processes the form.
43
  add_action( 'wpforms_process', array( $this, 'preprocess_submission' ), 10, 3 );
@@ -76,6 +81,35 @@ class WPForms {
76
  // Begin validation checks.
77
  $validation_errors = array();
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  // Check Zero Spam's honeypot field.
80
  $honeypot_field_name = \ZeroSpam\Core\Utilities::get_honeypot();
81
  // @codingStandardsIgnoreLine
@@ -129,8 +163,14 @@ class WPForms {
129
  /**
130
  * Load the scripts
131
  */
132
- public function scripts() {
133
- do_action( 'zerospam_wpforms_scripts' );
 
 
 
 
 
 
134
  }
135
 
136
  /**
@@ -140,7 +180,9 @@ class WPForms {
140
  */
141
  public function sections( $sections ) {
142
  $sections['wpforms'] = array(
143
- 'title' => __( 'WPForms Integration', 'zero-spam' ),
 
 
144
  );
145
 
146
  return $sections;
@@ -150,15 +192,18 @@ class WPForms {
150
  * Admin settings
151
  *
152
  * @param array $settings Array of available settings.
153
- * @param array $options Array of saved database options.
154
  */
155
- public function settings( $settings, $options ) {
 
 
156
  $settings['verify_wpforms'] = array(
157
  'title' => __( 'Protect WPForms Submissions', 'zero-spam' ),
 
158
  'section' => 'wpforms',
 
159
  'type' => 'checkbox',
160
  'options' => array(
161
- 'enabled' => __( 'Monitor WPForms submissions for malicious or automated spambots.', 'zero-spam' ),
162
  ),
163
  'value' => ! empty( $options['verify_wpforms'] ) ? $options['verify_wpforms'] : false,
164
  'recommended' => 'enabled',
@@ -167,9 +212,10 @@ class WPForms {
167
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
168
 
169
  $settings['wpforms_spam_message'] = array(
170
- 'title' => __( 'WPForms Spam/Malicious Message', 'zero-spam' ),
171
- 'desc' => __( 'When WPForms protection is enabled, the message displayed to the user when a submission has been detected as spam/malicious.', 'zero-spam' ),
172
  'section' => 'wpforms',
 
173
  'type' => 'text',
174
  'field_class' => 'large-text',
175
  'placeholder' => $message,
@@ -180,13 +226,14 @@ class WPForms {
180
  $settings['log_blocked_wpforms'] = array(
181
  'title' => __( 'Log Blocked WPForms Submissions', 'zero-spam' ),
182
  'section' => 'wpforms',
 
183
  'type' => 'checkbox',
184
  'desc' => wp_kses(
185
- __( 'Enables logging blocked WPForms submissions. <strong>Recommended for enhanced protection.</strong>', 'zero-spam' ),
186
  array( 'strong' => array() )
187
  ),
188
  'options' => array(
189
- 'enabled' => __( 'Enabled', 'zero-spam' ),
190
  ),
191
  'value' => ! empty( $options['log_blocked_wpforms'] ) ? $options['log_blocked_wpforms'] : false,
192
  'recommended' => 'enabled',
1
  <?php
2
  /**
3
+ * WPForms integration module
4
+ *
5
+ * Malicious user detection techniques available:
6
+ *
7
+ * 1. Zero Spam honeypot field
8
+ * 2. Uses the David Walsh technique
9
  *
10
  * @package ZeroSpam
11
  */
31
  */
32
  public function init() {
33
  add_filter( 'zerospam_setting_sections', array( $this, 'sections' ) );
34
+ add_filter( 'zerospam_settings', array( $this, 'settings' ), 10, 1 );
35
  add_filter( 'zerospam_types', array( $this, 'types' ), 10, 1 );
36
 
37
  if (
42
  add_action( 'wpforms_frontend_output', array( $this, 'honeypot' ), 10, 1 );
43
 
44
  // Load scripts.
45
+ add_action( 'wpforms_frontend_output', array( $this, 'add_scripts' ) );
46
 
47
  // Processes the form.
48
  add_action( 'wpforms_process', array( $this, 'preprocess_submission' ), 10, 3 );
81
  // Begin validation checks.
82
  $validation_errors = array();
83
 
84
+ // Check individual fields.
85
+ if ( ! empty( $post['wpforms'] ) && ! empty( $post['wpforms']['fields'] ) ) {
86
+ foreach ( $post['wpforms']['fields'] as $key => $field ) {
87
+ if ( is_array( $field ) ) {
88
+ foreach ( $field as $k => $value ) {
89
+ if ( \ZeroSpam\Core\Utilities::is_email( $value ) && \ZeroSpam\Core\Utilities::is_email_domain_blocked( $value ) ) {
90
+ // Email address found & is blocked.
91
+ $validation_errors[] = 'blocked_email_domain';
92
+ } else {
93
+ // Check against disallowed list.
94
+ if ( \ZeroSpam\Core\Utilities::is_disallowed( $value ) ) {
95
+ $validation_errors[] = 'disallowed_list';
96
+ }
97
+ }
98
+ }
99
+ } else {
100
+ if ( \ZeroSpam\Core\Utilities::is_email( $field ) && \ZeroSpam\Core\Utilities::is_email_domain_blocked( $field ) ) {
101
+ // Email address found & is blocked.
102
+ $validation_errors[] = 'blocked_email_domain';
103
+ } else {
104
+ // Check against disallowed list.
105
+ if ( \ZeroSpam\Core\Utilities::is_disallowed( $field ) ) {
106
+ $validation_errors[] = 'disallowed_list';
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+
113
  // Check Zero Spam's honeypot field.
114
  $honeypot_field_name = \ZeroSpam\Core\Utilities::get_honeypot();
115
  // @codingStandardsIgnoreLine
163
  /**
164
  * Load the scripts
165
  */
166
+ public function add_scripts() {
167
+ // Only add scripts to the appropriate pages.
168
+ if ( 'enabled' === \ZeroSpam\Core\Settings::get_settings( 'verify_wpforms' ) ) {
169
+ wp_enqueue_script( 'zerospam-davidwalsh' );
170
+ add_action( 'wp_footer', function() {
171
+ echo '<script type="text/javascript">jQuery(".wpforms-form").ZeroSpamDavidWalsh();</script>';
172
+ }, 999 );
173
+ }
174
  }
175
 
176
  /**
180
  */
181
  public function sections( $sections ) {
182
  $sections['wpforms'] = array(
183
+ 'title' => __( 'WPForms', 'zero-spam' ),
184
+ 'icon' => 'modules/wpforms/icon-wpforms.svg',
185
+ 'supports' => array( 'honeypot', 'davidwalsh', 'email', 'words' ),
186
  );
187
 
188
  return $sections;
192
  * Admin settings
193
  *
194
  * @param array $settings Array of available settings.
 
195
  */
196
+ public function settings( $settings ) {
197
+ $options = get_option( 'zero-spam-wpforms' );
198
+
199
  $settings['verify_wpforms'] = array(
200
  'title' => __( 'Protect WPForms Submissions', 'zero-spam' ),
201
+ 'desc' => __( 'Protects & monitors WPForms submissions.', 'zero-spam' ),
202
  'section' => 'wpforms',
203
+ 'module' => 'wpforms',
204
  'type' => 'checkbox',
205
  'options' => array(
206
+ 'enabled' => false,
207
  ),
208
  'value' => ! empty( $options['verify_wpforms'] ) ? $options['verify_wpforms'] : false,
209
  'recommended' => 'enabled',
212
  $message = __( 'Your IP has been flagged as spam/malicious.', 'zero-spam' );
213
 
214
  $settings['wpforms_spam_message'] = array(
215
+ 'title' => __( 'Flagged Message', 'zero-spam' ),
216
+ 'desc' => __( 'Message displayed when a submission has been flagged.', 'zero-spam' ),
217
  'section' => 'wpforms',
218
+ 'module' => 'wpforms',
219
  'type' => 'text',
220
  'field_class' => 'large-text',
221
  'placeholder' => $message,
226
  $settings['log_blocked_wpforms'] = array(
227
  'title' => __( 'Log Blocked WPForms Submissions', 'zero-spam' ),
228
  'section' => 'wpforms',
229
+ 'module' => 'wpforms',
230
  'type' => 'checkbox',
231
  'desc' => wp_kses(
232
+ __( 'When enabled, stores blocked WPForms submissions in the database.', 'zero-spam' ),
233
  array( 'strong' => array() )
234
  ),
235
  'options' => array(
236
+ 'enabled' => false,
237
  ),
238
  'value' => ! empty( $options['log_blocked_wpforms'] ) ? $options['log_blocked_wpforms'] : false,
239
  'recommended' => 'enabled',
{assets/img → modules/wpforms}/icon-wpforms.svg RENAMED
File without changes
readme.txt CHANGED
@@ -3,9 +3,9 @@ Contributors: bmarshall511
3
  Tags: protection, firewall, security, spam, spam blocker
4
  Donate link: https://www.zerospam.org/subscribe/
5
  Requires at least: 5.2
6
- Tested up to: 5.9.3
7
  Requires PHP: 7.3
8
- Stable tag: 5.3.9
9
  License: GNU GPLv3
10
  License URI: https://choosealicense.com/licenses/gpl-3.0/
11
 
@@ -13,7 +13,7 @@ Protection against spam & malicious users using cutting-edge AI. Firewall, real-
13
 
14
  == Description ==
15
 
16
- Protection against spam & malicious users using cutting-edge AI. Features a highly-configurable firewall, real-time monitoring, integrates with popular blacklists & plugins like [WooCommerce](https://wordpress.org/plugins/woocommerce/), [GiveWP](https://givewp.com/ref/1118/) & more.
17
 
18
  **Install, activate, configure, then put your mind at ease!**
19
 
@@ -32,9 +32,10 @@ Protection against spam & malicious users using cutting-edge AI. Features a high
32
  = But wait, there's more! =
33
 
34
  * Protects comments, user registration &amp; login forms
 
35
  * Protects [GiveWP](https://givewp.com/ref/1118/) forms & helps prevent testing stolen credit cards
36
  * Protects [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) form submissions
37
- * Protects [Contact Form 7](https://wordpress.org/plugins/contact-form-7/), [WPForms](https://wordpress.org/plugins/wpforms-lite/), [Formidable Form Builder](https://wordpress.org/plugins/formidable/) & [Fluent Forms](https://wordpress.org/plugins/fluentform/) forms
38
  * Protects [MemberPress](https://memberpress.com/) & [WooCommerce](https://wordpress.org/plugins/woocommerce/) registrations
39
  * Protects [Mailchimp for WordPress](https://wordpress.org/plugins/mailchimp-for-wp/) sign-ups
40
  * and **can be integrated into any existing theme or plugin**
@@ -78,7 +79,7 @@ If a legitimate user is getting blocked, check the Log (Admin > Dashboard > Zero
78
 
79
  = How do I boost performance of Zero Spam for WordPress? =
80
 
81
- **Enabled caching.** Caching is highly recommended and will prevent repeated calls to third-party API and access checks on each page visit.
82
 
83
  You can also adjust the cache and API timeout settings in admin depending on your server and specific needs.
84
 
@@ -98,14 +99,34 @@ If hosting with Pantheon, see their [known issues page](https://pantheon.io/docs
98
 
99
  == Screenshots ==
100
 
101
- 1. Zero Spam for WordPress dashboard
102
- 2. Zero Spam for WordPress detections log
103
- 3. Zero Spam for WordPress blocked IPs
104
- 4. Zero Spam for WordPress blacklisted IPs
105
- 5. Zero Spam for WordPress settings
106
 
107
  == Changelog ==
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  = v5.3.9 =
110
 
111
  * fix(admin): fix issue with admin notice not dismissing properly, resolves #319
3
  Tags: protection, firewall, security, spam, spam blocker
4
  Donate link: https://www.zerospam.org/subscribe/
5
  Requires at least: 5.2
6
+ Tested up to: 6.0.2
7
  Requires PHP: 7.3
8
+ Stable tag: 5.4.0
9
  License: GNU GPLv3
10
  License URI: https://choosealicense.com/licenses/gpl-3.0/
11
 
13
 
14
  == Description ==
15
 
16
+ Protect against spam & malicious users using an advanced, highly-configurable firewall, real-time monitoring, integration with popular blacklists & plugins like [WooCommerce](https://wordpress.org/plugins/woocommerce/), [GiveWP](https://givewp.com/ref/1118/), [Gravity Forms](https://www.gravityforms.com/) & more.
17
 
18
  **Install, activate, configure, then put your mind at ease!**
19
 
32
  = But wait, there's more! =
33
 
34
  * Protects comments, user registration &amp; login forms
35
+ * Protects [wpDiscuz](https://wordpress.org/plugins/wpdiscuz/) comment forms
36
  * Protects [GiveWP](https://givewp.com/ref/1118/) forms & helps prevent testing stolen credit cards
37
  * Protects [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) form submissions
38
+ * Protects [Gravity Forms](https://www.gravityforms.com/), [Contact Form 7](https://wordpress.org/plugins/contact-form-7/), [WPForms](https://wordpress.org/plugins/wpforms-lite/), [Formidable Form Builder](https://wordpress.org/plugins/formidable/) & [Fluent Forms](https://wordpress.org/plugins/fluentform/) forms
39
  * Protects [MemberPress](https://memberpress.com/) & [WooCommerce](https://wordpress.org/plugins/woocommerce/) registrations
40
  * Protects [Mailchimp for WordPress](https://wordpress.org/plugins/mailchimp-for-wp/) sign-ups
41
  * and **can be integrated into any existing theme or plugin**
79
 
80
  = How do I boost performance of Zero Spam for WordPress? =
81
 
82
+ **Enable caching.** Caching is highly recommended and will prevent repeated calls to third-party API and access checks on each page visit.
83
 
84
  You can also adjust the cache and API timeout settings in admin depending on your server and specific needs.
85
 
99
 
100
  == Screenshots ==
101
 
102
+ 1. Dashboard
103
+ 2. Log
104
+ 3. Settings
105
+ 4. Add blocked IP address
106
+ 5. Add blocked location
107
 
108
  == Changelog ==
109
 
110
+ = v5.4.0 =
111
+
112
+ * chore(admin): updated the after-activation message
113
+ * chore(spam): updated splorp's wordpress comment blacklist
114
+ * feat(givewp): enhanced security using the david walsh method on legacy forms
115
+ * feat(admin): major ui enhancements
116
+ * feat(gravityforms): adds support for gravity forms
117
+ * feat(reports): improved error logs
118
+ * feat(wpdiscuz): resolves #327, added support for wpdiscuz
119
+ * feat(wpforms): now supports checking blocked email addresses
120
+ * feat(email): enhanced email security checks
121
+ * fix(double requests): issue with double checks being performed per page visit
122
+ * fix(blocks): fix for blocked ips not getting properly blocked
123
+ * fix(locations): fix for blocked locations not getting added/updated
124
+ * fix(comments): fix for valid comment submissions being flagged
125
+ * fix(admin): missing country flag in ip details modal
126
+ * fix(woocommerce): fix for login woocommerce registrations fixed
127
+ * fix(david walsh): fix for flagged submissions when using the david walsh technique
128
+ * perf(misc): misc performance improvements related to 3rd-party api queries
129
+
130
  = v5.3.9 =
131
 
132
  * fix(admin): fix issue with admin notice not dismissing properly, resolves #319
uninstall.php CHANGED
@@ -16,6 +16,8 @@ $tables = array(
16
  'blacklist' => 'wpzerospam_blacklist',
17
  );
18
 
 
 
19
  if ( is_multisite() ) {
20
  // @codingStandardsIgnoreLine
21
  $blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A );
@@ -30,6 +32,11 @@ if ( is_multisite() ) {
30
  delete_option( 'zerospam_configured' );
31
  delete_option( 'zerospam_davidwalsh' );
32
  delete_option( 'zero_spam_last_api_report' );
 
 
 
 
 
33
 
34
  foreach ( $tables as $key => $table ) {
35
  // @codingStandardsIgnoreLine
@@ -45,6 +52,11 @@ if ( is_multisite() ) {
45
  delete_option( 'zerospam_configured' );
46
  delete_option( 'zerospam_davidwalsh' );
47
  delete_option( 'zero_spam_last_api_report' );
 
 
 
 
 
48
 
49
  foreach ( $tables as $key => $table ) {
50
  // @codingStandardsIgnoreLine
16
  'blacklist' => 'wpzerospam_blacklist',
17
  );
18
 
19
+ $modules = \ZeroSpam\Core\Settings::get_settings_by_module();
20
+
21
  if ( is_multisite() ) {
22
  // @codingStandardsIgnoreLine
23
  $blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A );
32
  delete_option( 'zerospam_configured' );
33
  delete_option( 'zerospam_davidwalsh' );
34
  delete_option( 'zero_spam_last_api_report' );
35
+ delete_option( 'zero-spam-last-update' );
36
+
37
+ foreach ( $modules as $module => $settings ) {
38
+ delete_option( "zero-spam-$module" );
39
+ }
40
 
41
  foreach ( $tables as $key => $table ) {
42
  // @codingStandardsIgnoreLine
52
  delete_option( 'zerospam_configured' );
53
  delete_option( 'zerospam_davidwalsh' );
54
  delete_option( 'zero_spam_last_api_report' );
55
+ delete_option( 'zero-spam-last-update' );
56
+
57
+ foreach ( $modules as $module => $settings ) {
58
+ delete_option( "zero-spam-$module" );
59
+ }
60
 
61
  foreach ( $tables as $key => $table ) {
62
  // @codingStandardsIgnoreLine
wordpress-zero-spam.php CHANGED
@@ -13,7 +13,7 @@
13
  * Plugin Name: Zero Spam for WordPress
14
  * Plugin URI: https://www.highfivery.com/projects/zero-spam/
15
  * Description: Tired of all the ineffective WordPress anti-spam & security plugins? Zero Spam for WordPress makes blocking spam &amp; malicious activity a cinch. <strong>Just activate, configure, and say goodbye to spam.</strong>
16
- * Version: 5.3.9
17
  * Requires at least: 5.2
18
  * Requires PHP: 7.3
19
  * Author: Highfivery LLC
@@ -31,7 +31,7 @@ defined( 'ABSPATH' ) || die();
31
  define( 'ZEROSPAM', __FILE__ );
32
  define( 'ZEROSPAM_PATH', plugin_dir_path( ZEROSPAM ) );
33
  define( 'ZEROSPAM_PLUGIN_BASE', plugin_basename( ZEROSPAM ) );
34
- define( 'ZEROSPAM_VERSION', '5.3.9' );
35
 
36
  if ( defined( 'ZEROSPAM_DEVELOPMENT_URL' ) ) {
37
  define( 'ZEROSPAM_URL', ZEROSPAM_DEVELOPMENT_URL );
13
  * Plugin Name: Zero Spam for WordPress
14
  * Plugin URI: https://www.highfivery.com/projects/zero-spam/
15
  * Description: Tired of all the ineffective WordPress anti-spam & security plugins? Zero Spam for WordPress makes blocking spam &amp; malicious activity a cinch. <strong>Just activate, configure, and say goodbye to spam.</strong>
16
+ * Version: 5.4.0
17
  * Requires at least: 5.2
18
  * Requires PHP: 7.3
19
  * Author: Highfivery LLC
31
  define( 'ZEROSPAM', __FILE__ );
32
  define( 'ZEROSPAM_PATH', plugin_dir_path( ZEROSPAM ) );
33
  define( 'ZEROSPAM_PLUGIN_BASE', plugin_basename( ZEROSPAM ) );
34
+ define( 'ZEROSPAM_VERSION', '5.4.0' );
35
 
36
  if ( defined( 'ZEROSPAM_DEVELOPMENT_URL' ) ) {
37
  define( 'ZEROSPAM_URL', ZEROSPAM_DEVELOPMENT_URL );