Version Description
- August 16, 2021 =
- Improvement: Enhanced accessibility
- Improvement: Replaced regex in scan log with signature ID
- Improvement: Updated Knockout JS dependency to version 3.5.1
- Improvement: Removed PHP 8 compatibility notice
- Improvement: Added NTP status for Login Security to Diagnostics
- Improvement: Updated plugin headers for compatibility with WordPress 5.8
- Improvement: Updated Nginx documentation links to HTTPS
- Improvement: Updated IP address geolocation database
- Improvement: Expanded WAF SQL syntax support
- Improvement: Added optional constants to configure WAF database connection
- Improvement: Added support for matching punycode domain names
- Improvement: Updated Wordfence install count
- Improvement: Deprecated support for WordPress versions older than 4.4.0
- Improvement: Added warning messages when blocking U.S.
- Improvement: Added MYSQLI_CLIENT_SSL support to WAF database connection
- Improvement: Added 2FA and reCAPTCHA support for WooCommerce login and registration forms
- Improvement: Added option to require 2FA for any role
- Improvement: Added logic to automatically disable NTP after repeated failures and option to manually disable NTP
- Improvement: Updated reCAPTCHA setup note
- Fix: Prevented issue where country blocking changes are not saved
- Fix: Corrected string placeholder
- Fix: Added missing text domain to translation calls
- Fix: Corrected warning about sprintf arguments on Central setup page
- Fix: Prevented lost password functionality from revealing valid logins
Download this release
Release Info
Developer | wfalexk |
Plugin | Wordfence Security – Firewall & Malware Scan |
Version | 7.5.5 |
Comparing to | |
See all releases |
Code changes from version 7.5.4 to 7.5.5
- css/{activity-report-widget.1623076348.css → activity-report-widget.1629122067.css} +0 -0
- css/{diff.1623076348.css → diff.1629122067.css} +0 -0
- css/{dt_table.1623076348.css → dt_table.1629122067.css} +0 -0
- css/{fullLog.1623076348.css → fullLog.1629122067.css} +0 -0
- css/{iptraf.1623076348.css → iptraf.1629122067.css} +0 -0
- css/{jquery-ui-timepicker-addon.1623076348.css → jquery-ui-timepicker-addon.1629122067.css} +0 -0
- css/{jquery-ui.min.1623076348.css → jquery-ui.min.1629122067.css} +0 -0
- css/{jquery-ui.structure.min.1623076348.css → jquery-ui.structure.min.1629122067.css} +0 -0
- css/{jquery-ui.theme.min.1623076348.css → jquery-ui.theme.min.1629122067.css} +0 -0
- css/{main.1623076348.css → main.1629122067.css} +0 -0
- css/{phpinfo.1623076348.css → phpinfo.1629122067.css} +0 -0
- css/{wf-adminbar.1623076348.css → wf-adminbar.1629122067.css} +0 -0
- css/{wf-colorbox.1623076348.css → wf-colorbox.1629122067.css} +0 -0
- css/{wf-font-awesome.1623076348.css → wf-font-awesome.1629122067.css} +0 -0
- css/{wf-global.1623076348.css → wf-global.1629122067.css} +0 -0
- css/{wf-ionicons.1623076348.css → wf-ionicons.1629122067.css} +0 -0
- css/{wf-onboarding.1623076348.css → wf-onboarding.1629122067.css} +0 -0
- css/{wf-roboto-font.1623076348.css → wf-roboto-font.1629122067.css} +0 -0
- css/{wfselect2.min.1623076348.css → wfselect2.min.1629122067.css} +0 -0
- css/{wordfenceBox.1623076348.css → wordfenceBox.1629122067.css} +0 -0
- js/{Chart.bundle.min.1623076348.js → Chart.bundle.min.1629122067.js} +0 -0
- js/{admin.1623076348.js → admin.1629122067.js} +8 -7
- js/{admin.ajaxWatcher.1623076348.js → admin.ajaxWatcher.1629122067.js} +4 -3
- js/{admin.liveTraffic.1623076348.js → admin.liveTraffic.1629122067.js} +0 -0
- js/{date.1623076348.js → date.1629122067.js} +0 -0
- js/{jquery-ui-timepicker-addon.1623076348.js → jquery-ui-timepicker-addon.1629122067.js} +0 -0
- js/{jquery.colorbox-min.1623076348.js → jquery.colorbox-min.1629122067.js} +0 -0
- js/{jquery.colorbox.1623076348.js → jquery.colorbox.1629122067.js} +0 -0
- js/{jquery.dataTables.min.1623076348.js → jquery.dataTables.min.1629122067.js} +0 -0
- js/{jquery.qrcode.min.1623076348.js → jquery.qrcode.min.1629122067.js} +0 -0
- js/{jquery.tmpl.min.1623076348.js → jquery.tmpl.min.1629122067.js} +0 -0
- js/{jquery.tools.min.1623076348.js → jquery.tools.min.1629122067.js} +0 -0
- js/knockout-3.3.0.1623076348.js +0 -115
- js/knockout-3.5.1.1629122067.js +139 -0
- js/{wfdashboard.1623076348.js → wfdashboard.1629122067.js} +0 -0
- js/{wfdropdown.1623076348.js → wfdropdown.1629122067.js} +0 -0
- js/{wfglobal.1623076348.js → wfglobal.1629122067.js} +12 -0
- js/{wfi18n.1623076348.js → wfi18n.1629122067.js} +0 -0
- js/{wfpopover.1623076348.js → wfpopover.1629122067.js} +0 -0
- js/{wfselect2.min.1623076348.js → wfselect2.min.1629122067.js} +0 -0
- languages/wordfence.po +1547 -1083
- lib/GeoLite2-Country.mmdb +0 -0
- lib/IPTrafList.php +3 -3
- lib/dashboard/widget_countries.php +2 -2
- lib/dashboard/widget_ips.php +6 -6
- lib/dashboard/widget_localattacks.php +1 -1
- lib/dashboard/widget_logins.php +4 -4
- lib/dashboard/widget_networkattacks.php +2 -3
- lib/dashboard/widget_notifications.php +5 -5
- lib/email_unsubscribeRequest.php +1 -1
- lib/live_activity.php +1 -1
- lib/menu_dashboard.php +22 -22
- lib/menu_dashboard_options.php +2 -2
- lib/menu_firewall_blocking.php +15 -15
- lib/menu_firewall_waf.php +14 -14
- lib/menu_scanner.php +15 -15
- lib/menu_support.php +11 -11
- lib/menu_tools.php +5 -5
- lib/menu_tools_diagnostic.php +25 -24
- lib/menu_tools_importExport.php +1 -1
- lib/menu_tools_livetraffic.php +17 -17
- lib/menu_tools_twoFactor.php +5 -5
- lib/menu_tools_whois.php +2 -2
- lib/menu_wordfence_central.php +2 -2
- lib/wf503.php +32 -2
- lib/wfAPI.php +1 -1
- lib/wfActivityReport.php +1 -1
- lib/wfAdminNoticeQueue.php +16 -3
- lib/wfDiagnostic.php +34 -4
- lib/wfIssues.php +2 -2
- lib/wfLockedOut.php +32 -2
- lib/wfScan.php +3 -3
- lib/wfScanEngine.php +18 -19
- lib/wfVersionCheckController.php +7 -7
- lib/wordfenceClass.php +129 -83
- lib/wordfenceHash.php +5 -5
- lib/wordfenceScanner.php +6 -6
- lib/wordfenceURLHoover.php +7 -16
- models/block/wfBlock.php +2 -2
- models/firewall/wfFirewall.php +1 -1
- models/scanner/wfScanner.php +1 -1
- modules/login-security/classes/controller/ajax.php +127 -40
- modules/login-security/classes/controller/captcha.php +26 -0
- modules/login-security/classes/controller/notices.php +34 -1
- modules/login-security/classes/controller/permissions.php +42 -7
- modules/login-security/classes/controller/settings.php +126 -6
- modules/login-security/classes/controller/support.php +2 -0
- modules/login-security/classes/controller/time.php +14 -5
- modules/login-security/classes/controller/users.php +312 -33
- modules/login-security/classes/controller/wordfencels.php +304 -136
- modules/login-security/classes/model/view/title.php +1 -1
- modules/login-security/css/{admin-global.1623076348.css → admin-global.1629122067.css} +1 -1
- modules/login-security/css/admin.1623076348.css +0 -1
- modules/login-security/css/admin.1629122067.css +1 -0
css/{activity-report-widget.1623076348.css → activity-report-widget.1629122067.css}
RENAMED
File without changes
|
css/{diff.1623076348.css → diff.1629122067.css}
RENAMED
File without changes
|
css/{dt_table.1623076348.css → dt_table.1629122067.css}
RENAMED
File without changes
|
css/{fullLog.1623076348.css → fullLog.1629122067.css}
RENAMED
File without changes
|
css/{iptraf.1623076348.css → iptraf.1629122067.css}
RENAMED
File without changes
|
css/{jquery-ui-timepicker-addon.1623076348.css → jquery-ui-timepicker-addon.1629122067.css}
RENAMED
File without changes
|
css/{jquery-ui.min.1623076348.css → jquery-ui.min.1629122067.css}
RENAMED
File without changes
|
css/{jquery-ui.structure.min.1623076348.css → jquery-ui.structure.min.1629122067.css}
RENAMED
File without changes
|
css/{jquery-ui.theme.min.1623076348.css → jquery-ui.theme.min.1629122067.css}
RENAMED
File without changes
|
css/{main.1623076348.css → main.1629122067.css}
RENAMED
File without changes
|
css/{phpinfo.1623076348.css → phpinfo.1629122067.css}
RENAMED
File without changes
|
css/{wf-adminbar.1623076348.css → wf-adminbar.1629122067.css}
RENAMED
File without changes
|
css/{wf-colorbox.1623076348.css → wf-colorbox.1629122067.css}
RENAMED
File without changes
|
css/{wf-font-awesome.1623076348.css → wf-font-awesome.1629122067.css}
RENAMED
File without changes
|
css/{wf-global.1623076348.css → wf-global.1629122067.css}
RENAMED
File without changes
|
css/{wf-ionicons.1623076348.css → wf-ionicons.1629122067.css}
RENAMED
File without changes
|
css/{wf-onboarding.1623076348.css → wf-onboarding.1629122067.css}
RENAMED
File without changes
|
css/{wf-roboto-font.1623076348.css → wf-roboto-font.1629122067.css}
RENAMED
File without changes
|
css/{wfselect2.min.1623076348.css → wfselect2.min.1629122067.css}
RENAMED
File without changes
|
css/{wordfenceBox.1623076348.css → wordfenceBox.1629122067.css}
RENAMED
File without changes
|
js/{Chart.bundle.min.1623076348.js → Chart.bundle.min.1629122067.js}
RENAMED
File without changes
|
js/{admin.1623076348.js → admin.1629122067.js}
RENAMED
@@ -135,11 +135,12 @@
|
|
135 |
var tabs = jQuery('.wf-page-tabs').find('.wf-tab a');
|
136 |
if (tabs.length > 0) {
|
137 |
tabs.click(function() {
|
138 |
-
jQuery('.wf-page-tabs').find('.wf-tab').removeClass('wf-active');
|
139 |
jQuery('.wf-tab-content').removeClass('wf-active');
|
140 |
|
141 |
var tab = jQuery(this).closest('.wf-tab');
|
142 |
tab.addClass('wf-active');
|
|
|
143 |
var content = jQuery('#' + tab.data('target'));
|
144 |
content.addClass('wf-active');
|
145 |
document.title = tab.data('pageTitle') + " \u2039 " + self.basePageName;
|
@@ -1164,7 +1165,7 @@
|
|
1164 |
summaryUpdated = true;
|
1165 |
} else if (item.msg.indexOf('SUM_PAIDONLY:') != -1) {
|
1166 |
msg = item.msg.replace('SUM_PAIDONLY:', '');
|
1167 |
-
jQuery('#consoleSummary').append('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult"><a href="https://www.wordfence.com/wordfence-signup/" target="_blank" rel="noopener noreferrer">' + __('Paid Members Only') + '</a></div><div class="wfClear"></div>');
|
1168 |
summaryUpdated = true;
|
1169 |
} else if (item.msg.indexOf('SUM_FINAL:') != -1) {
|
1170 |
msg = item.msg.replace('SUM_FINAL:', '');
|
@@ -2031,7 +2032,7 @@
|
|
2031 |
'<input type="button" class="wf-btn wf-btn-primary" name="but1" id="wfRepairFileNextBtn" value="Repair File" disabled="disabled" onclick="WFAD.promptToRepairFileDone(' + parseInt(issueID, 10) + ', jQuery(\'#forceRepairFileCheckbox\').prop(\'checked\'));this.disabled=true;" />' +
|
2032 |
'<label class="wf-padding-add-left"><input type="checkbox" id="forceRepairFileCheckbox" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', !this.checked); return true;"> ' + __('Don\'t ask again') + '</label>' +
|
2033 |
'</p>' +
|
2034 |
-
'<div class="wordfenceHelpLink"><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer">' + __('Learn more about repairing modified files.') + '</a></div>'
|
2035 |
);
|
2036 |
},
|
2037 |
promptToRepairFileDone: function(issueID, dontPromptAgain) {
|
@@ -2192,7 +2193,7 @@
|
|
2192 |
'<br /><br />' +
|
2193 |
'<button class="wf-btn wf-btn-default" type="button" id="wf-htaccess-confirm" disabled="disabled" onclick="WFAD.confirmDisableDirectoryListing(' + issueID + ');">' + __('Add code to .htaccess') + '</button>');
|
2194 |
} else if (res.nginx) {
|
2195 |
-
self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), __("You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank' rel='noopener noreferrer' href='
|
2196 |
} else if (res.err) {
|
2197 |
self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("We encountered a problem"), sprintf(__("We can't modify your .htaccess file for you because: %s"), res.err));
|
2198 |
}
|
@@ -2251,7 +2252,7 @@
|
|
2251 |
},
|
2252 |
completeLiveTabSwitch: function() {
|
2253 |
this.ajax('wordfence_loadActivityLog', {}, function(res) {
|
2254 |
-
var html = '<a href="#" class="wfALogMailLink" onclick="WFAD.emailActivityLog(); return false;"></a><a href="#" class="wfALogReloadLink" onclick="WFAD.reloadActivityData(); return false;"></a>';
|
2255 |
if (res.events && res.events.length > 0) {
|
2256 |
jQuery('#wfActivity').empty();
|
2257 |
for (var i = 0; i < res.events.length; i++) {
|
@@ -3915,7 +3916,7 @@ jQuery.fn.wfCircularProgress = function(options) {
|
|
3915 |
var menu = $('<div class="wf-mobile-menu"><ul class="wf-mobile-menu-items"></ul></div>').css('width', opts.width).css('bottom', '-9999px');
|
3916 |
var itemsWrapper = menu.find('.wf-mobile-menu-items');
|
3917 |
for (var i = 0; i < opts.menuItems.length; i++) {
|
3918 |
-
var button = $('<li><a href="#" class="wf-btn wf-btn-callout-subtle"></a></li>');
|
3919 |
button.find('a').text(opts.menuItems[i].title).css('width', opts.width).on('click', null, {action: opts.menuItems[i].action}, function(e) {
|
3920 |
e.preventDefault();
|
3921 |
e.stopPropagation();
|
@@ -3939,7 +3940,7 @@ jQuery.fn.wfCircularProgress = function(options) {
|
|
3939 |
itemsWrapper.append(button);
|
3940 |
}
|
3941 |
|
3942 |
-
var button = $('<li class="wf-padding-add-top-small"><a href="#" class="wf-btn wf-btn-callout-subtle wf-btn-default">' + __('Close') + '</a></li>');
|
3943 |
button.find('a').css('width', opts.width).on('click', function(e) {
|
3944 |
e.preventDefault();
|
3945 |
e.stopPropagation();
|
135 |
var tabs = jQuery('.wf-page-tabs').find('.wf-tab a');
|
136 |
if (tabs.length > 0) {
|
137 |
tabs.click(function() {
|
138 |
+
jQuery('.wf-page-tabs').find('.wf-tab').removeClass('wf-active').find('a').attr('aria-selected', 'false');
|
139 |
jQuery('.wf-tab-content').removeClass('wf-active');
|
140 |
|
141 |
var tab = jQuery(this).closest('.wf-tab');
|
142 |
tab.addClass('wf-active');
|
143 |
+
tab.find('a').attr('aria-selected', 'true');
|
144 |
var content = jQuery('#' + tab.data('target'));
|
145 |
content.addClass('wf-active');
|
146 |
document.title = tab.data('pageTitle') + " \u2039 " + self.basePageName;
|
1165 |
summaryUpdated = true;
|
1166 |
} else if (item.msg.indexOf('SUM_PAIDONLY:') != -1) {
|
1167 |
msg = item.msg.replace('SUM_PAIDONLY:', '');
|
1168 |
+
jQuery('#consoleSummary').append('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult"><a href="https://www.wordfence.com/wordfence-signup/" target="_blank" rel="noopener noreferrer">' + __('Paid Members Only') + ' (' + __('opens in new tab') + ')</a></div><div class="wfClear"></div>');
|
1169 |
summaryUpdated = true;
|
1170 |
} else if (item.msg.indexOf('SUM_FINAL:') != -1) {
|
1171 |
msg = item.msg.replace('SUM_FINAL:', '');
|
2032 |
'<input type="button" class="wf-btn wf-btn-primary" name="but1" id="wfRepairFileNextBtn" value="Repair File" disabled="disabled" onclick="WFAD.promptToRepairFileDone(' + parseInt(issueID, 10) + ', jQuery(\'#forceRepairFileCheckbox\').prop(\'checked\'));this.disabled=true;" />' +
|
2033 |
'<label class="wf-padding-add-left"><input type="checkbox" id="forceRepairFileCheckbox" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', !this.checked); return true;"> ' + __('Don\'t ask again') + '</label>' +
|
2034 |
'</p>' +
|
2035 |
+
'<div class="wordfenceHelpLink"><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer">' + __('Learn more about repairing modified files.') + ' (' + __('opens in new tab') + ')</a></div>'
|
2036 |
);
|
2037 |
},
|
2038 |
promptToRepairFileDone: function(issueID, dontPromptAgain) {
|
2193 |
'<br /><br />' +
|
2194 |
'<button class="wf-btn wf-btn-default" type="button" id="wf-htaccess-confirm" disabled="disabled" onclick="WFAD.confirmDisableDirectoryListing(' + issueID + ');">' + __('Add code to .htaccess') + '</button>');
|
2195 |
} else if (res.nginx) {
|
2196 |
+
self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), __("You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank' rel='noopener noreferrer' href='https://nginx.org/en/docs/http/ngx_http_autoindex_module.html'>Nginx docs for more info</a> on how to do this."));
|
2197 |
} else if (res.err) {
|
2198 |
self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("We encountered a problem"), sprintf(__("We can't modify your .htaccess file for you because: %s"), res.err));
|
2199 |
}
|
2252 |
},
|
2253 |
completeLiveTabSwitch: function() {
|
2254 |
this.ajax('wordfence_loadActivityLog', {}, function(res) {
|
2255 |
+
var html = '<a href="#" class="wfALogMailLink" onclick="WFAD.emailActivityLog(); return false;" role="button"></a><a href="#" class="wfALogReloadLink" onclick="WFAD.reloadActivityData(); return false;" role="button"></a>';
|
2256 |
if (res.events && res.events.length > 0) {
|
2257 |
jQuery('#wfActivity').empty();
|
2258 |
for (var i = 0; i < res.events.length; i++) {
|
3916 |
var menu = $('<div class="wf-mobile-menu"><ul class="wf-mobile-menu-items"></ul></div>').css('width', opts.width).css('bottom', '-9999px');
|
3917 |
var itemsWrapper = menu.find('.wf-mobile-menu-items');
|
3918 |
for (var i = 0; i < opts.menuItems.length; i++) {
|
3919 |
+
var button = $('<li><a href="#" class="wf-btn wf-btn-callout-subtle" role="button"></a></li>');
|
3920 |
button.find('a').text(opts.menuItems[i].title).css('width', opts.width).on('click', null, {action: opts.menuItems[i].action}, function(e) {
|
3921 |
e.preventDefault();
|
3922 |
e.stopPropagation();
|
3940 |
itemsWrapper.append(button);
|
3941 |
}
|
3942 |
|
3943 |
+
var button = $('<li class="wf-padding-add-top-small"><a href="#" class="wf-btn wf-btn-callout-subtle wf-btn-default" role="button">' + __('Close') + '</a></li>');
|
3944 |
button.find('a').css('width', opts.width).on('click', function(e) {
|
3945 |
e.preventDefault();
|
3946 |
e.stopPropagation();
|
js/{admin.ajaxWatcher.1623076348.js → admin.ajaxWatcher.1629122067.js}
RENAMED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
(function($, document, window) {
|
2 |
var __ = window.wfi18n.__;
|
3 |
var sprintf = window.wfi18n.sprintf;
|
@@ -42,7 +44,7 @@
|
|
42 |
$.wordfenceBox({
|
43 |
closeButton: false,
|
44 |
width: '400px',
|
45 |
-
html: "<h3>" + __('Background Request Blocked') + "</h3><p>" + sprintf(__("Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."), "<code>" + requestURLEscaped + "</code>") + "</p><p class=\"wf-right\"><a href=\"https://www.wordfence.com/help/?query=ajax-blocked\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfboxhelp\"></a><a href=\"#\" class=\"button\" id=\"background-block-whitelist\">" + __("Add action to allowlist") + "</a> <a href=\"#\" class=\"button\" id=\"background-block-dismiss\">" + __("Dismiss") + "</a></p>",
|
46 |
onComplete: function() {
|
47 |
$('#background-block-dismiss').click(function(event) {
|
48 |
event.preventDefault();
|
@@ -84,8 +86,7 @@
|
|
84 |
}
|
85 |
$(function() {
|
86 |
wordfenceAJAXWatcher.init();
|
|
|
87 |
});
|
88 |
|
89 |
}(jQuery, document, window));
|
90 |
-
|
91 |
-
!function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-wfbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(A+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+tt).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),A=W.index(_.el),-1===A&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),at.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!U){U=$=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(st,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((l!==!1?Math.min(h,a(l,"x")):h)-z-D,0),_.h=Math.max((f!==!1?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(et),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),at.one(rt,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&at.one(rt,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?P.html(_.get("close")).appendTo(b):P.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(st).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(st,"Overlay").hide(),L=t([n(st,"LoadingOverlay")[0],n(st,"LoadingGraphic")[0]]),y=n(st,"Wrapper"),b=n(st,"Content").append(F=n(st,"Title"),R=n(st,"Current"),K=t('<button type="button"/>').attr({id:Z+"Previous"}),B=t('<button type="button"/>').attr({id:Z+"Next"}),S=t('<button type="button"/>').attr({id:Z+"Slideshow"}),L),P=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(st).append(n(st,"TopLeft"),T=n(st,"TopCenter"),n(st,"TopRight")),n(st,!1,"clear:left").append(C=n(st,"MiddleLeft"),b,H=n(st,"MiddleRight")),n(st,!1,"clear:left").append(n(st,"BottomLeft"),k=n(st,"BottomCenter"),n(st,"BottomRight"))).find("div div").css({"float":"left"}),M=n(st,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=B.add(K).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return x?(V||(V=!0,B.click(function(){J.next()}),K.click(function(){J.prev()}),P.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;U&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),U&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),K.click()):39===e&&(t.preventDefault(),B.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+tt,i):t("."+tt).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++lt;if($=!0,q=!1,u(ht),u(it),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e).eq(0);r=t("<div>").hide().insertBefore(c),at.one(ht,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),q=_.get("createImg"),t(q).addClass(Z+"Photo").bind("error."+Z,function(){h(n(st,"Error").html(_.get("imgError")))}).one("load",function(){d===lt&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(q.height=q.height/i.devicePixelRatio,q.width=q.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){q.height-=q.height*e,q.width-=q.width*e},_.mw&&q.width>_.mw&&(e=(q.width-_.mw)/q.width,o()),_.mh&&q.height>_.mh&&(e=(q.height-_.mh)/q.height,o())),_.h&&(q.style.marginTop=Math.max(_.mh-q.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(q.style.cursor="pointer",t(q).bind("click."+Z,function(){J.next()})),q.style.width=q.width+"px",q.style.height=q.height+"px",h(q)},1)}),q.src=e):e&&M.load(e,_.get("data"),function(e,i){d===lt&&h("error"===i?n(st,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,B,K,P,O,_,j,D,N,z,A,q,U,$,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="wordfenceBox",Z="wfbox",tt=Z+"Element",et=Z+"_open",it=Z+"_load",nt=Z+"_complete",ot=Z+"_cleanup",rt=Z+"_closed",ht=Z+"_purge",at=t("<a/>"),st="div",lt=0,dt={},ct=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[A+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),at.bind(nt,e).bind(it,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),at.unbind(nt,e).unbind(it,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,S.hide(),t(),at.unbind(nt,e).unbind(it,t),x.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(at.unbind(ot,o),o()):_.get("slideshow")&&W[1]&&(r=!0,at.one(ot,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;return e=e||{},t.isFunction(o)&&(o=t("<a/>"),e.open=!0),o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(tt),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var r,h,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,x.css({position:"fixed"})):(l=h,d=s,x.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-z-D,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",r={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==dt[t]?void(g=e):void 0}),e=g}dt=r,e||x.css(r),x.dequeue().animate(r,{duration:e||0,complete:function(){n(),$=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;U&&(t=t||{},t.width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if(U){var d,g="none"===_.get("transition")?0:_.get("speed");I.remove(),I=n(st,"LoadedContent").append(i),I.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(q).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&x[0].style.removeAttribute("filter")}var n,o,a=W.length;U&&(o=function(){clearTimeout(Q),L.hide(),u(nt),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),a>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",a)).show(),B[_.get("loop")||a-1>A?"show":"hide"]().html(_.get("next")),K[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ct(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),"class":Z+"Iframe"}).one("load",o).appendTo(I),at.one(ht,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(g,1,i):i())},"fade"===_.get("transition")?x.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!$&&W[1]&&(_.get("loop")||W[A+1])&&(A=h(1),f(W[A]))},J.prev=function(){!$&&W[1]&&(_.get("loop")||A)&&(A=h(-1),f(W[A]))},J.close=function(){U&&!G&&(G=!0,U=!1,u(ot),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(ht),I.remove(),setTimeout(function(){G=!1,u(rt),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+tt).removeData(Y).removeClass(tt),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)}(jQuery,document,window);
|
1 |
+
!function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-wfbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(A+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+tt).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),A=W.index(_.el),-1===A&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),at.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!U){U=$=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(st,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((l!==!1?Math.min(h,a(l,"x")):h)-z-D,0),_.h=Math.max((f!==!1?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(et),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),at.one(rt,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&at.one(rt,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?P.html(_.get("close")).appendTo(b):P.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(st).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(st,"Overlay").hide(),L=t([n(st,"LoadingOverlay")[0],n(st,"LoadingGraphic")[0]]),y=n(st,"Wrapper"),b=n(st,"Content").append(F=n(st,"Title"),R=n(st,"Current"),K=t('<button type="button"/>').attr({id:Z+"Previous"}),B=t('<button type="button"/>').attr({id:Z+"Next"}),S=t('<button type="button"/>').attr({id:Z+"Slideshow"}),L),P=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(st).append(n(st,"TopLeft"),T=n(st,"TopCenter"),n(st,"TopRight")),n(st,!1,"clear:left").append(C=n(st,"MiddleLeft"),b,H=n(st,"MiddleRight")),n(st,!1,"clear:left").append(n(st,"BottomLeft"),k=n(st,"BottomCenter"),n(st,"BottomRight"))).find("div div").css({"float":"left"}),M=n(st,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=B.add(K).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return x?(V||(V=!0,B.click(function(){J.next()}),K.click(function(){J.prev()}),P.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;U&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),U&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),K.click()):39===e&&(t.preventDefault(),B.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+tt,i):t("."+tt).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++lt;if($=!0,q=!1,u(ht),u(it),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e).eq(0);r=t("<div>").hide().insertBefore(c),at.one(ht,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),q=_.get("createImg"),t(q).addClass(Z+"Photo").bind("error."+Z,function(){h(n(st,"Error").html(_.get("imgError")))}).one("load",function(){d===lt&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(q.height=q.height/i.devicePixelRatio,q.width=q.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){q.height-=q.height*e,q.width-=q.width*e},_.mw&&q.width>_.mw&&(e=(q.width-_.mw)/q.width,o()),_.mh&&q.height>_.mh&&(e=(q.height-_.mh)/q.height,o())),_.h&&(q.style.marginTop=Math.max(_.mh-q.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(q.style.cursor="pointer",t(q).bind("click."+Z,function(){J.next()})),q.style.width=q.width+"px",q.style.height=q.height+"px",h(q)},1)}),q.src=e):e&&M.load(e,_.get("data"),function(e,i){d===lt&&h("error"===i?n(st,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,B,K,P,O,_,j,D,N,z,A,q,U,$,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="wordfenceBox",Z="wfbox",tt=Z+"Element",et=Z+"_open",it=Z+"_load",nt=Z+"_complete",ot=Z+"_cleanup",rt=Z+"_closed",ht=Z+"_purge",at=t("<a/>"),st="div",lt=0,dt={},ct=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[A+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),at.bind(nt,e).bind(it,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),at.unbind(nt,e).unbind(it,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,S.hide(),t(),at.unbind(nt,e).unbind(it,t),x.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(at.unbind(ot,o),o()):_.get("slideshow")&&W[1]&&(r=!0,at.one(ot,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;return e=e||{},t.isFunction(o)&&(o=t("<a/>"),e.open=!0),o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(tt),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var r,h,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,x.css({position:"fixed"})):(l=h,d=s,x.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-z-D,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",r={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==dt[t]?void(g=e):void 0}),e=g}dt=r,e||x.css(r),x.dequeue().animate(r,{duration:e||0,complete:function(){n(),$=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;U&&(t=t||{},t.width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if(U){var d,g="none"===_.get("transition")?0:_.get("speed");I.remove(),I=n(st,"LoadedContent").append(i),I.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(q).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&x[0].style.removeAttribute("filter")}var n,o,a=W.length;U&&(o=function(){clearTimeout(Q),L.hide(),u(nt),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),a>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",a)).show(),B[_.get("loop")||a-1>A?"show":"hide"]().html(_.get("next")),K[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ct(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),"class":Z+"Iframe"}).one("load",o).appendTo(I),at.one(ht,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(g,1,i):i())},"fade"===_.get("transition")?x.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!$&&W[1]&&(_.get("loop")||W[A+1])&&(A=h(1),f(W[A]))},J.prev=function(){!$&&W[1]&&(_.get("loop")||A)&&(A=h(-1),f(W[A]))},J.close=function(){U&&!G&&(G=!0,U=!1,u(ot),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(ht),I.remove(),setTimeout(function(){G=!1,u(rt),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+tt).removeData(Y).removeClass(tt),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)}(jQuery,document,window);
|
2 |
+
|
3 |
(function($, document, window) {
|
4 |
var __ = window.wfi18n.__;
|
5 |
var sprintf = window.wfi18n.sprintf;
|
44 |
$.wordfenceBox({
|
45 |
closeButton: false,
|
46 |
width: '400px',
|
47 |
+
html: "<h3>" + __('Background Request Blocked') + "</h3><p>" + sprintf(__("Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."), "<code>" + requestURLEscaped + "</code>") + "</p><p class=\"wf-right\"><a href=\"https://www.wordfence.com/help/?query=ajax-blocked\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfboxhelp\" title=\"" + __("Help") + "\"></a><a href=\"#\" class=\"button\" id=\"background-block-whitelist\">" + __("Add action to allowlist") + "</a> <a href=\"#\" class=\"button\" id=\"background-block-dismiss\">" + __("Dismiss") + "</a></p>",
|
48 |
onComplete: function() {
|
49 |
$('#background-block-dismiss').click(function(event) {
|
50 |
event.preventDefault();
|
86 |
}
|
87 |
$(function() {
|
88 |
wordfenceAJAXWatcher.init();
|
89 |
+
$('#wfboxPrevious, #wfboxNext, #wfboxSlideshow').remove();
|
90 |
});
|
91 |
|
92 |
}(jQuery, document, window));
|
|
|
|
js/{admin.liveTraffic.1623076348.js → admin.liveTraffic.1629122067.js}
RENAMED
File without changes
|
js/{date.1623076348.js → date.1629122067.js}
RENAMED
File without changes
|
js/{jquery-ui-timepicker-addon.1623076348.js → jquery-ui-timepicker-addon.1629122067.js}
RENAMED
File without changes
|
js/{jquery.colorbox-min.1623076348.js → jquery.colorbox-min.1629122067.js}
RENAMED
File without changes
|
js/{jquery.colorbox.1623076348.js → jquery.colorbox.1629122067.js}
RENAMED
File without changes
|
js/{jquery.dataTables.min.1623076348.js → jquery.dataTables.min.1629122067.js}
RENAMED
File without changes
|
js/{jquery.qrcode.min.1623076348.js → jquery.qrcode.min.1629122067.js}
RENAMED
File without changes
|
js/{jquery.tmpl.min.1623076348.js → jquery.tmpl.min.1629122067.js}
RENAMED
File without changes
|
js/{jquery.tools.min.1623076348.js → jquery.tools.min.1629122067.js}
RENAMED
File without changes
|
js/knockout-3.3.0.1623076348.js
DELETED
@@ -1,115 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Knockout JavaScript library v3.3.0
|
3 |
-
* (c) Steven Sanderson - http://knockoutjs.com/
|
4 |
-
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
5 |
-
*/
|
6 |
-
|
7 |
-
(function() {(function(p){var y=this||(0,eval)("this"),w=y.document,M=y.navigator,u=y.jQuery,E=y.JSON;(function(p){"function"===typeof define&&define.amd?define(["exports","require"],p):"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?p(module.exports||exports):p(y.ko={})})(function(N,O){function J(a,d){return null===a||typeof a in Q?a===d:!1}function R(a,d){var c;return function(){c||(c=setTimeout(function(){c=p;a()},d))}}function S(a,d){var c;return function(){clearTimeout(c);
|
8 |
-
c=setTimeout(a,d)}}function K(b,d,c,e){a.d[b]={init:function(b,k,h,l,g){var m,x;a.w(function(){var q=a.a.c(k()),n=!c!==!q,r=!x;if(r||d||n!==m)r&&a.Z.oa()&&(x=a.a.la(a.e.childNodes(b),!0)),n?(r||a.e.T(b,a.a.la(x)),a.Ja(e?e(g,q):g,b)):a.e.ma(b),m=n},null,{q:b});return{controlsDescendantBindings:!0}}};a.h.ka[b]=!1;a.e.R[b]=!0}var a="undefined"!==typeof N?N:{};a.b=function(b,d){for(var c=b.split("."),e=a,f=0;f<c.length-1;f++)e=e[c[f]];e[c[c.length-1]]=d};a.D=function(a,d,c){a[d]=c};a.version="3.3.0";
|
9 |
-
a.b("version",a.version);a.a=function(){function b(a,b){for(var c in a)a.hasOwnProperty(c)&&b(c,a[c])}function d(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function c(a,b){a.__proto__=b;return a}function e(b,c,g,d){var e=b[c].match(m)||[];a.a.o(g.match(m),function(b){a.a.ga(e,b,d)});b[c]=e.join(" ")}var f={__proto__:[]}instanceof Array,k={},h={};k[M&&/Firefox\/2/i.test(M.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];k.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");
|
10 |
-
b(k,function(a,b){if(b.length)for(var c=0,g=b.length;c<g;c++)h[b[c]]=a});var l={propertychange:!0},g=w&&function(){for(var a=3,b=w.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",c[0];);return 4<a?a:p}(),m=/\S+/g;return{Bb:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],o:function(a,b){for(var c=0,g=a.length;c<g;c++)b(a[c],c)},m:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,
|
11 |
-
b);for(var c=0,g=a.length;c<g;c++)if(a[c]===b)return c;return-1},vb:function(a,b,c){for(var g=0,d=a.length;g<d;g++)if(b.call(c,a[g],g))return a[g];return null},ya:function(b,c){var g=a.a.m(b,c);0<g?b.splice(g,1):0===g&&b.shift()},wb:function(b){b=b||[];for(var c=[],g=0,d=b.length;g<d;g++)0>a.a.m(c,b[g])&&c.push(b[g]);return c},Ka:function(a,b){a=a||[];for(var c=[],g=0,d=a.length;g<d;g++)c.push(b(a[g],g));return c},xa:function(a,b){a=a||[];for(var c=[],g=0,d=a.length;g<d;g++)b(a[g],g)&&c.push(a[g]);
|
12 |
-
return c},ia:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var c=0,g=b.length;c<g;c++)a.push(b[c]);return a},ga:function(b,c,g){var d=a.a.m(a.a.cb(b),c);0>d?g&&b.push(c):g||b.splice(d,1)},za:f,extend:d,Fa:c,Ga:f?c:d,A:b,pa:function(a,b){if(!a)return a;var c={},g;for(g in a)a.hasOwnProperty(g)&&(c[g]=b(a[g],g,a));return c},Ra:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Jb:function(b){b=a.a.O(b);for(var c=(b[0]&&b[0].ownerDocument||w).createElement("div"),g=0,d=b.length;g<
|
13 |
-
d;g++)c.appendChild(a.S(b[g]));return c},la:function(b,c){for(var g=0,d=b.length,e=[];g<d;g++){var m=b[g].cloneNode(!0);e.push(c?a.S(m):m)}return e},T:function(b,c){a.a.Ra(b);if(c)for(var g=0,d=c.length;g<d;g++)b.appendChild(c[g])},Qb:function(b,c){var g=b.nodeType?[b]:b;if(0<g.length){for(var d=g[0],e=d.parentNode,m=0,f=c.length;m<f;m++)e.insertBefore(c[m],d);m=0;for(f=g.length;m<f;m++)a.removeNode(g[m])}},na:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==
|
14 |
-
b;)a.splice(0,1);if(1<a.length){var c=a[0],g=a[a.length-1];for(a.length=0;c!==g;)if(a.push(c),c=c.nextSibling,!c)return;a.push(g)}}return a},Sb:function(a,b){7>g?a.setAttribute("selected",b):a.selected=b},ib:function(a){return null===a||a===p?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Dc:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},jc:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?
|
15 |
-
a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Qa:function(b){return a.a.jc(b,b.ownerDocument.documentElement)},tb:function(b){return!!a.a.vb(b,a.a.Qa)},v:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},n:function(b,c,d){var m=g&&l[c];if(!m&&u)u(b).bind(c,d);else if(m||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var e=function(a){d.call(b,a)},f="on"+c;b.attachEvent(f,e);a.a.C.fa(b,
|
16 |
-
function(){b.detachEvent(f,e)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,d,!1)},qa:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var g;"input"===a.a.v(b)&&b.type&&"click"==c.toLowerCase()?(g=b.type,g="checkbox"==g||"radio"==g):g=!1;if(u&&!g)u(b).trigger(c);else if("function"==typeof w.createEvent)if("function"==typeof b.dispatchEvent)g=w.createEvent(h[c]||"HTMLEvents"),g.initEvent(c,
|
17 |
-
!0,!0,y,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(g);else throw Error("The supplied element doesn't support dispatchEvent");else if(g&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");},c:function(b){return a.F(b)?b():b},cb:function(b){return a.F(b)?b.B():b},Ia:function(b,c,g){var d;c&&("object"===typeof b.classList?(d=b.classList[g?"add":"remove"],a.a.o(c.match(m),function(a){d.call(b.classList,a)})):"string"===
|
18 |
-
typeof b.className.baseVal?e(b.className,"baseVal",c,g):e(b,"className",c,g))},Ha:function(b,c){var g=a.a.c(c);if(null===g||g===p)g="";var d=a.e.firstChild(b);!d||3!=d.nodeType||a.e.nextSibling(d)?a.e.T(b,[b.ownerDocument.createTextNode(g)]):d.data=g;a.a.mc(b)},Rb:function(a,b){a.name=b;if(7>=g)try{a.mergeAttributes(w.createElement("<input name='"+a.name+"'/>"),!1)}catch(c){}},mc:function(a){9<=g&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},kc:function(a){if(g){var b=a.style.width;
|
19 |
-
a.style.width=0;a.style.width=b}},Bc:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var g=[],d=b;d<=c;d++)g.push(d);return g},O:function(a){for(var b=[],c=0,g=a.length;c<g;c++)b.push(a[c]);return b},Hc:6===g,Ic:7===g,M:g,Db:function(b,c){for(var g=a.a.O(b.getElementsByTagName("input")).concat(a.a.O(b.getElementsByTagName("textarea"))),d="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},m=[],e=g.length-1;0<=e;e--)d(g[e])&&m.push(g[e]);return m},yc:function(b){return"string"==
|
20 |
-
typeof b&&(b=a.a.ib(b))?E&&E.parse?E.parse(b):(new Function("return "+b))():null},jb:function(b,c,g){if(!E||!E.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return E.stringify(a.a.c(b),c,g)},zc:function(c,g,d){d=d||{};var m=d.params||{},e=d.includeFields||this.Bb,f=c;if("object"==typeof c&&"form"===a.a.v(c))for(var f=c.action,
|
21 |
-
l=e.length-1;0<=l;l--)for(var k=a.a.Db(c,e[l]),h=k.length-1;0<=h;h--)m[k[h].name]=k[h].value;g=a.a.c(g);var s=w.createElement("form");s.style.display="none";s.action=f;s.method="post";for(var p in g)c=w.createElement("input"),c.type="hidden",c.name=p,c.value=a.a.jb(a.a.c(g[p])),s.appendChild(c);b(m,function(a,b){var c=w.createElement("input");c.type="hidden";c.name=a;c.value=b;s.appendChild(c)});w.body.appendChild(s);d.submitter?d.submitter(s):s.submit();setTimeout(function(){s.parentNode.removeChild(s)},
|
22 |
-
0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.o);a.b("utils.arrayFirst",a.a.vb);a.b("utils.arrayFilter",a.a.xa);a.b("utils.arrayGetDistinctValues",a.a.wb);a.b("utils.arrayIndexOf",a.a.m);a.b("utils.arrayMap",a.a.Ka);a.b("utils.arrayPushAll",a.a.ia);a.b("utils.arrayRemoveItem",a.a.ya);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",a.a.Bb);a.b("utils.getFormFields",a.a.Db);a.b("utils.peekObservable",a.a.cb);a.b("utils.postJson",a.a.zc);a.b("utils.parseJson",a.a.yc);a.b("utils.registerEventHandler",
|
23 |
-
a.a.n);a.b("utils.stringifyJson",a.a.jb);a.b("utils.range",a.a.Bc);a.b("utils.toggleDomNodeCssClass",a.a.Ia);a.b("utils.triggerEvent",a.a.qa);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.A);a.b("utils.addOrRemoveItem",a.a.ga);a.b("utils.setTextContent",a.a.Ha);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var d=this;if(1===arguments.length)return function(){return d.apply(a,arguments)};var c=Array.prototype.slice.call(arguments,1);return function(){var e=
|
24 |
-
c.slice(0);e.push.apply(e,arguments);return d.apply(a,e)}});a.a.f=new function(){function a(b,k){var h=b[c];if(!h||"null"===h||!e[h]){if(!k)return p;h=b[c]="ko"+d++;e[h]={}}return e[h]}var d=0,c="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===p?p:e[d]},set:function(c,d,e){if(e!==p||a(c,!1)!==p)a(c,!0)[d]=e},clear:function(a){var b=a[c];return b?(delete e[b],a[c]=null,!0):!1},I:function(){return d++ +c}}};a.b("utils.domData",a.a.f);a.b("utils.domData.clear",a.a.f.clear);
|
25 |
-
a.a.C=new function(){function b(b,d){var e=a.a.f.get(b,c);e===p&&d&&(e=[],a.a.f.set(b,c,e));return e}function d(c){var e=b(c,!1);if(e)for(var e=e.slice(0),l=0;l<e.length;l++)e[l](c);a.a.f.clear(c);a.a.C.cleanExternalData(c);if(f[c.nodeType])for(e=c.firstChild;c=e;)e=c.nextSibling,8===c.nodeType&&d(c)}var c=a.a.f.I(),e={1:!0,8:!0,9:!0},f={1:!0,9:!0};return{fa:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},Pb:function(d,e){var f=b(d,!1);f&&(a.a.ya(f,
|
26 |
-
e),0==f.length&&a.a.f.set(d,c,p))},S:function(b){if(e[b.nodeType]&&(d(b),f[b.nodeType])){var c=[];a.a.ia(c,b.getElementsByTagName("*"));for(var l=0,g=c.length;l<g;l++)d(c[l])}return b},removeNode:function(b){a.S(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){u&&"function"==typeof u.cleanData&&u.cleanData([a])}}};a.S=a.a.C.S;a.removeNode=a.a.C.removeNode;a.b("cleanNode",a.S);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.C);a.b("utils.domNodeDisposal.addDisposeCallback",
|
27 |
-
a.a.C.fa);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.C.Pb);(function(){a.a.ca=function(b,d){var c;if(u)if(u.parseHTML)c=u.parseHTML(b,d)||[];else{if((c=u.clean([b],d))&&c[0]){for(var e=c[0];e.parentNode&&11!==e.parentNode.nodeType;)e=e.parentNode;e.parentNode&&e.parentNode.removeChild(e)}}else{(e=d)||(e=w);c=e.parentWindow||e.defaultView||y;var f=a.a.ib(b).toLowerCase(),e=e.createElement("div"),f=f.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!f.indexOf("<tr")&&[2,"<table><tbody>",
|
28 |
-
"</tbody></table>"]||(!f.indexOf("<td")||!f.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""],k="ignored<div>"+f[1]+b+f[2]+"</div>";for("function"==typeof c.innerShiv?e.appendChild(c.innerShiv(k)):e.innerHTML=k;f[0]--;)e=e.lastChild;c=a.a.O(e.lastChild.childNodes)}return c};a.a.gb=function(b,d){a.a.Ra(b);d=a.a.c(d);if(null!==d&&d!==p)if("string"!=typeof d&&(d=d.toString()),u)u(b).html(d);else for(var c=a.a.ca(d,b.ownerDocument),e=0;e<c.length;e++)b.appendChild(c[e])}})();
|
29 |
-
a.b("utils.parseHtmlFragment",a.a.ca);a.b("utils.setHtml",a.a.gb);a.H=function(){function b(c,d){if(c)if(8==c.nodeType){var f=a.H.Lb(c.nodeValue);null!=f&&d.push({ic:c,wc:f})}else if(1==c.nodeType)for(var f=0,k=c.childNodes,h=k.length;f<h;f++)b(k[f],d)}var d={};return{$a:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);
|
30 |
-
d[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},Wb:function(a,b){var f=d[a];if(f===p)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return f.apply(null,b||[]),!0}finally{delete d[a]}},Xb:function(c,d){var f=[];b(c,f);for(var k=0,h=f.length;k<h;k++){var l=f[k].ic,g=[l];d&&a.a.ia(g,d);a.H.Wb(f[k].wc,g);l.nodeValue="";l.parentNode&&l.parentNode.removeChild(l)}},Lb:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.H);
|
31 |
-
a.b("memoization.memoize",a.H.$a);a.b("memoization.unmemoize",a.H.Wb);a.b("memoization.parseMemoText",a.H.Lb);a.b("memoization.unmemoizeDomNodeAndDescendants",a.H.Xb);a.Sa={throttle:function(b,d){b.throttleEvaluation=d;var c=null;return a.j({read:b,write:function(a){clearTimeout(c);c=setTimeout(function(){b(a)},d)}})},rateLimit:function(a,d){var c,e,f;"number"==typeof d?c=d:(c=d.timeout,e=d.method);f="notifyWhenChangesStop"==e?S:R;a.Za(function(a){return f(a,c)})},notify:function(a,d){a.equalityComparer=
|
32 |
-
"always"==d?null:J}};var Q={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.Sa);a.Ub=function(b,d,c){this.da=b;this.La=d;this.hc=c;this.Gb=!1;a.D(this,"dispose",this.p)};a.Ub.prototype.p=function(){this.Gb=!0;this.hc()};a.Q=function(){a.a.Ga(this,a.Q.fn);this.G={};this.rb=1};var z={U:function(b,d,c){var e=this;c=c||"change";var f=new a.Ub(e,d?b.bind(d):b,function(){a.a.ya(e.G[c],f);e.ua&&e.ua(c)});e.ja&&e.ja(c);e.G[c]||(e.G[c]=[]);e.G[c].push(f);return f},notifySubscribers:function(b,
|
33 |
-
d){d=d||"change";"change"===d&&this.Yb();if(this.Ba(d))try{a.k.xb();for(var c=this.G[d].slice(0),e=0,f;f=c[e];++e)f.Gb||f.La(b)}finally{a.k.end()}},Aa:function(){return this.rb},pc:function(a){return this.Aa()!==a},Yb:function(){++this.rb},Za:function(b){var d=this,c=a.F(d),e,f,k;d.ta||(d.ta=d.notifySubscribers,d.notifySubscribers=function(a,b){b&&"change"!==b?"beforeChange"===b?d.pb(a):d.ta(a,b):d.qb(a)});var h=b(function(){c&&k===d&&(k=d());e=!1;d.Wa(f,k)&&d.ta(f=k)});d.qb=function(a){e=!0;k=a;
|
34 |
-
h()};d.pb=function(a){e||(f=a,d.ta(a,"beforeChange"))}},Ba:function(a){return this.G[a]&&this.G[a].length},nc:function(b){if(b)return this.G[b]&&this.G[b].length||0;var d=0;a.a.A(this.G,function(a,b){d+=b.length});return d},Wa:function(a,d){return!this.equalityComparer||!this.equalityComparer(a,d)},extend:function(b){var d=this;b&&a.a.A(b,function(b,e){var f=a.Sa[b];"function"==typeof f&&(d=f(d,e)||d)});return d}};a.D(z,"subscribe",z.U);a.D(z,"extend",z.extend);a.D(z,"getSubscriptionsCount",z.nc);
|
35 |
-
a.a.za&&a.a.Fa(z,Function.prototype);a.Q.fn=z;a.Hb=function(a){return null!=a&&"function"==typeof a.U&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.Q);a.b("isSubscribable",a.Hb);a.Z=a.k=function(){function b(a){c.push(e);e=a}function d(){e=c.pop()}var c=[],e,f=0;return{xb:b,end:d,Ob:function(b){if(e){if(!a.Hb(b))throw Error("Only subscribable things can act as dependencies");e.La(b,b.ac||(b.ac=++f))}},u:function(a,c,e){try{return b(),a.apply(c,e||[])}finally{d()}},oa:function(){if(e)return e.w.oa()},
|
36 |
-
Ca:function(){if(e)return e.Ca}}}();a.b("computedContext",a.Z);a.b("computedContext.getDependenciesCount",a.Z.oa);a.b("computedContext.isInitial",a.Z.Ca);a.b("computedContext.isSleeping",a.Z.Jc);a.b("ignoreDependencies",a.Gc=a.k.u);a.r=function(b){function d(){if(0<arguments.length)return d.Wa(c,arguments[0])&&(d.X(),c=arguments[0],d.W()),this;a.k.Ob(d);return c}var c=b;a.Q.call(d);a.a.Ga(d,a.r.fn);d.B=function(){return c};d.W=function(){d.notifySubscribers(c)};d.X=function(){d.notifySubscribers(c,
|
37 |
-
"beforeChange")};a.D(d,"peek",d.B);a.D(d,"valueHasMutated",d.W);a.D(d,"valueWillMutate",d.X);return d};a.r.fn={equalityComparer:J};var H=a.r.Ac="__ko_proto__";a.r.fn[H]=a.r;a.a.za&&a.a.Fa(a.r.fn,a.Q.fn);a.Ta=function(b,d){return null===b||b===p||b[H]===p?!1:b[H]===d?!0:a.Ta(b[H],d)};a.F=function(b){return a.Ta(b,a.r)};a.Da=function(b){return"function"==typeof b&&b[H]===a.r||"function"==typeof b&&b[H]===a.j&&b.qc?!0:!1};a.b("observable",a.r);a.b("isObservable",a.F);a.b("isWriteableObservable",a.Da);
|
38 |
-
a.b("isWritableObservable",a.Da);a.ba=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.r(b);a.a.Ga(b,a.ba.fn);return b.extend({trackArrayChanges:!0})};a.ba.fn={remove:function(b){for(var d=this.B(),c=[],e="function"!=typeof b||a.F(b)?function(a){return a===b}:b,f=0;f<d.length;f++){var k=d[f];e(k)&&(0===c.length&&this.X(),c.push(k),d.splice(f,1),f--)}c.length&&this.W();return c},
|
39 |
-
removeAll:function(b){if(b===p){var d=this.B(),c=d.slice(0);this.X();d.splice(0,d.length);this.W();return c}return b?this.remove(function(c){return 0<=a.a.m(b,c)}):[]},destroy:function(b){var d=this.B(),c="function"!=typeof b||a.F(b)?function(a){return a===b}:b;this.X();for(var e=d.length-1;0<=e;e--)c(d[e])&&(d[e]._destroy=!0);this.W()},destroyAll:function(b){return b===p?this.destroy(function(){return!0}):b?this.destroy(function(d){return 0<=a.a.m(b,d)}):[]},indexOf:function(b){var d=this();return a.a.m(d,
|
40 |
-
b)},replace:function(a,d){var c=this.indexOf(a);0<=c&&(this.X(),this.B()[c]=d,this.W())}};a.a.o("pop push reverse shift sort splice unshift".split(" "),function(b){a.ba.fn[b]=function(){var a=this.B();this.X();this.yb(a,b,arguments);a=a[b].apply(a,arguments);this.W();return a}});a.a.o(["slice"],function(b){a.ba.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.a.za&&a.a.Fa(a.ba.fn,a.r.fn);a.b("observableArray",a.ba);a.Sa.trackArrayChanges=function(b){function d(){if(!c){c=!0;var g=
|
41 |
-
b.notifySubscribers;b.notifySubscribers=function(a,b){b&&"change"!==b||++k;return g.apply(this,arguments)};var d=[].concat(b.B()||[]);e=null;f=b.U(function(c){c=[].concat(c||[]);if(b.Ba("arrayChange")){var g;if(!e||1<k)e=a.a.Ma(d,c,{sparse:!0});g=e}d=c;e=null;k=0;g&&g.length&&b.notifySubscribers(g,"arrayChange")})}}if(!b.yb){var c=!1,e=null,f,k=0,h=b.ja,l=b.ua;b.ja=function(a){h&&h.call(b,a);"arrayChange"===a&&d()};b.ua=function(a){l&&l.call(b,a);"arrayChange"!==a||b.Ba("arrayChange")||(f.p(),c=!1)};
|
42 |
-
b.yb=function(b,d,f){function l(a,b,c){return h[h.length]={status:a,value:b,index:c}}if(c&&!k){var h=[],r=b.length,v=f.length,t=0;switch(d){case "push":t=r;case "unshift":for(d=0;d<v;d++)l("added",f[d],t+d);break;case "pop":t=r-1;case "shift":r&&l("deleted",b[t],t);break;case "splice":d=Math.min(Math.max(0,0>f[0]?r+f[0]:f[0]),r);for(var r=1===v?r:Math.min(d+(f[1]||0),r),v=d+v-2,t=Math.max(r,v),G=[],A=[],p=2;d<t;++d,++p)d<r&&A.push(l("deleted",b[d],d)),d<v&&G.push(l("added",f[p],d));a.a.Cb(A,G);break;
|
43 |
-
default:return}e=h}}}};a.w=a.j=function(b,d,c){function e(a,b,c){if(I&&b===g)throw Error("A 'pure' computed must not be called recursively");B[a]=c;c.sa=F++;c.ea=b.Aa()}function f(){var a,b;for(a in B)if(B.hasOwnProperty(a)&&(b=B[a],b.da.pc(b.ea)))return!0}function k(){!s&&B&&a.a.A(B,function(a,b){b.p&&b.p()});B=null;F=0;G=!0;s=r=!1}function h(){var a=g.throttleEvaluation;a&&0<=a?(clearTimeout(z),z=setTimeout(function(){l(!0)},a)):g.nb?g.nb():l(!0)}function l(b){if(!v&&!G){if(y&&y()){if(!t){w();return}}else t=
|
44 |
-
!1;v=!0;try{var c=B,m=F,f=I?p:!F;a.k.xb({La:function(a,b){G||(m&&c[b]?(e(b,a,c[b]),delete c[b],--m):B[b]||e(b,a,s?{da:a}:a.U(h)))},w:g,Ca:f});B={};F=0;try{var l=d?A.call(d):A()}finally{a.k.end(),m&&!s&&a.a.A(c,function(a,b){b.p&&b.p()}),r=!1}g.Wa(n,l)&&(s||q(n,"beforeChange"),n=l,s?g.Yb():b&&q(n));f&&q(n,"awake")}finally{v=!1}F||w()}}function g(){if(0<arguments.length){if("function"===typeof C)C.apply(d,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
|
45 |
-
return this}a.k.Ob(g);(r||s&&f())&&l();return n}function m(){(r&&!F||s&&f())&&l();return n}function x(){return r||0<F}function q(a,b){g.notifySubscribers(a,b)}var n,r=!0,v=!1,t=!1,G=!1,A=b,I=!1,s=!1;A&&"object"==typeof A?(c=A,A=c.read):(c=c||{},A||(A=c.read));if("function"!=typeof A)throw Error("Pass a function that returns the value of the ko.computed");var C=c.write,D=c.disposeWhenNodeIsRemoved||c.q||null,u=c.disposeWhen||c.Pa,y=u,w=k,B={},F=0,z=null;d||(d=c.owner);a.Q.call(g);a.a.Ga(g,a.j.fn);
|
46 |
-
g.B=m;g.oa=function(){return F};g.qc="function"===typeof C;g.p=function(){w()};g.$=x;var T=g.Za;g.Za=function(a){T.call(g,a);g.nb=function(){g.pb(n);r=!0;g.qb(g)}};c.pure?(s=I=!0,g.ja=function(b){if(!G&&s&&"change"==b){s=!1;if(r||f())B=null,F=0,r=!0,l();else{var c=[];a.a.A(B,function(a,b){c[b.sa]=a});a.a.o(c,function(a,b){var c=B[a],g=c.da.U(h);g.sa=b;g.ea=c.ea;B[a]=g})}G||q(n,"awake")}},g.ua=function(b){G||"change"!=b||g.Ba("change")||(a.a.A(B,function(a,b){b.p&&(B[a]={da:b.da,sa:b.sa,ea:b.ea},b.p())}),
|
47 |
-
s=!0,q(p,"asleep"))},g.bc=g.Aa,g.Aa=function(){s&&(r||f())&&l();return g.bc()}):c.deferEvaluation&&(g.ja=function(a){"change"!=a&&"beforeChange"!=a||m()});a.D(g,"peek",g.B);a.D(g,"dispose",g.p);a.D(g,"isActive",g.$);a.D(g,"getDependenciesCount",g.oa);D&&(t=!0,D.nodeType&&(y=function(){return!a.a.Qa(D)||u&&u()}));s||c.deferEvaluation||l();D&&x()&&D.nodeType&&(w=function(){a.a.C.Pb(D,w);k()},a.a.C.fa(D,w));return g};a.sc=function(b){return a.Ta(b,a.j)};z=a.r.Ac;a.j[z]=a.r;a.j.fn={equalityComparer:J};
|
48 |
-
a.j.fn[z]=a.j;a.a.za&&a.a.Fa(a.j.fn,a.Q.fn);a.b("dependentObservable",a.j);a.b("computed",a.j);a.b("isComputed",a.sc);a.Nb=function(b,d){if("function"===typeof b)return a.w(b,d,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.w(b,d)};a.b("pureComputed",a.Nb);(function(){function b(a,f,k){k=k||new c;a=f(a);if("object"!=typeof a||null===a||a===p||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var h=a instanceof Array?[]:{};k.save(a,h);d(a,function(c){var g=
|
49 |
-
f(a[c]);switch(typeof g){case "boolean":case "number":case "string":case "function":h[c]=g;break;case "object":case "undefined":var d=k.get(g);h[c]=d!==p?d:b(g,f,k)}});return h}function d(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function c(){this.keys=[];this.mb=[]}a.Vb=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.F(b)&&
|
50 |
-
10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.Vb(b);return a.a.jb(b,c,d)};c.prototype={save:function(b,c){var d=a.a.m(this.keys,b);0<=d?this.mb[d]=c:(this.keys.push(b),this.mb.push(c))},get:function(b){b=a.a.m(this.keys,b);return 0<=b?this.mb[b]:p}}})();a.b("toJS",a.Vb);a.b("toJSON",a.toJSON);(function(){a.i={s:function(b){switch(a.a.v(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.f.get(b,a.d.options.ab):7>=a.a.M?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?
|
51 |
-
b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.i.s(b.options[b.selectedIndex]):p;default:return b.value}},Y:function(b,d,c){switch(a.a.v(b)){case "option":switch(typeof d){case "string":a.a.f.set(b,a.d.options.ab,p);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=d;break;default:a.a.f.set(b,a.d.options.ab,d),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof d?d:""}break;case "select":if(""===d||null===d)d=p;for(var e=-1,f=0,k=b.options.length,
|
52 |
-
h;f<k;++f)if(h=a.i.s(b.options[f]),h==d||""==h&&d===p){e=f;break}if(c||0<=e||d===p&&1<b.size)b.selectedIndex=e;break;default:if(null===d||d===p)d="";b.value=d}}}})();a.b("selectExtensions",a.i);a.b("selectExtensions.readValue",a.i.s);a.b("selectExtensions.writeValue",a.i.Y);a.h=function(){function b(b){b=a.a.ib(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=[],d=b.match(e),x,h=[],n=0;if(d){d.push(",");for(var r=0,v;v=d[r];++r){var t=v.charCodeAt(0);if(44===t){if(0>=n){c.push(x&&h.length?{key:x,
|
53 |
-
value:h.join("")}:{unknown:x||h.join("")});x=n=0;h=[];continue}}else if(58===t){if(!n&&!x&&1===h.length){x=h.pop();continue}}else 47===t&&r&&1<v.length?(t=d[r-1].match(f))&&!k[t[0]]&&(b=b.substr(b.indexOf(v)+1),d=b.match(e),d.push(","),r=-1,v="/"):40===t||123===t||91===t?++n:41===t||125===t||93===t?--n:x||h.length||34!==t&&39!==t||(v=v.slice(1,-1));h.push(v)}}return c}var d=["true","false","null","undefined"],c=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]",
|
54 |
-
"g"),f=/[\])"'A-Za-z0-9_$]+$/,k={"in":1,"return":1,"typeof":1},h={};return{ka:[],V:h,bb:b,Ea:function(e,g){function m(b,g){var e;if(!r){var l=a.getBindingHandler(b);if(l&&l.preprocess&&!(g=l.preprocess(g,b,m)))return;if(l=h[b])e=g,0<=a.a.m(d,e)?e=!1:(l=e.match(c),e=null===l?!1:l[1]?"Object("+l[1]+")"+l[2]:e),l=e;l&&k.push("'"+b+"':function(_z){"+e+"=_z}")}n&&(g="function(){return "+g+" }");f.push("'"+b+"':"+g)}g=g||{};var f=[],k=[],n=g.valueAccessors,r=g.bindingParams,v="string"===typeof e?b(e):e;
|
55 |
-
a.a.o(v,function(a){m(a.key||a.unknown,a.value)});k.length&&m("_ko_property_writers","{"+k.join(",")+" }");return f.join(",")},vc:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},ra:function(b,c,d,e,f){if(b&&a.F(b))!a.Da(b)||f&&b.B()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();a.b("expressionRewriting",a.h);a.b("expressionRewriting.bindingRewriteValidators",a.h.ka);a.b("expressionRewriting.parseObjectLiteral",a.h.bb);a.b("expressionRewriting.preProcessBindings",
|
56 |
-
a.h.Ea);a.b("expressionRewriting._twoWayBindings",a.h.V);a.b("jsonExpressionRewriting",a.h);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.h.Ea);(function(){function b(a){return 8==a.nodeType&&k.test(f?a.text:a.nodeValue)}function d(a){return 8==a.nodeType&&h.test(f?a.text:a.nodeValue)}function c(a,c){for(var e=a,f=1,l=[];e=e.nextSibling;){if(d(e)&&(f--,0===f))return l;l.push(e);b(e)&&f++}if(!c)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,
|
57 |
-
b){var d=c(a,b);return d?0<d.length?d[d.length-1].nextSibling:a.nextSibling:null}var f=w&&"\x3c!--test--\x3e"===w.createComment("test").text,k=f?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=f?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,l={ul:!0,ol:!0};a.e={R:{},childNodes:function(a){return b(a)?c(a):a.childNodes},ma:function(c){if(b(c)){c=a.e.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.Ra(c)},T:function(c,d){if(b(c)){a.e.ma(c);for(var e=c.nextSibling,
|
58 |
-
f=0,l=d.length;f<l;f++)e.parentNode.insertBefore(d[f],e)}else a.a.T(c,d)},Mb:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},Fb:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):c.appendChild(d):a.e.Mb(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||d(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&
|
59 |
-
d(a.nextSibling)?null:a.nextSibling},oc:b,Fc:function(a){return(a=(f?a.text:a.nodeValue).match(k))?a[1]:null},Kb:function(c){if(l[a.a.v(c)]){var m=c.firstChild;if(m){do if(1===m.nodeType){var f;f=m.firstChild;var h=null;if(f){do if(h)h.push(f);else if(b(f)){var k=e(f,!0);k?f=k:h=[f]}else d(f)&&(h=[f]);while(f=f.nextSibling)}if(f=h)for(h=m.nextSibling,k=0;k<f.length;k++)h?c.insertBefore(f[k],h):c.appendChild(f[k])}while(m=m.nextSibling)}}}}})();a.b("virtualElements",a.e);a.b("virtualElements.allowedBindings",
|
60 |
-
a.e.R);a.b("virtualElements.emptyNode",a.e.ma);a.b("virtualElements.insertAfter",a.e.Fb);a.b("virtualElements.prepend",a.e.Mb);a.b("virtualElements.setDomNodeChildren",a.e.T);(function(){a.L=function(){this.ec={}};a.a.extend(a.L.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind")||a.g.getComponentNameForNode(b);case 8:return a.e.oc(b);default:return!1}},getBindings:function(b,d){var c=this.getBindingsString(b,d),c=c?this.parseBindingsString(c,
|
61 |
-
d,b):null;return a.g.sb(c,b,d,!1)},getBindingAccessors:function(b,d){var c=this.getBindingsString(b,d),c=c?this.parseBindingsString(c,d,b,{valueAccessors:!0}):null;return a.g.sb(c,b,d,!0)},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.e.Fc(b);default:return null}},parseBindingsString:function(b,d,c,e){try{var f=this.ec,k=b+(e&&e.valueAccessors||""),h;if(!(h=f[k])){var l,g="with($context){with($data||{}){return{"+a.h.Ea(b,e)+"}}}";l=new Function("$context",
|
62 |
-
"$element",g);h=f[k]=l}return h(d,c)}catch(m){throw m.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+m.message,m;}}});a.L.instance=new a.L})();a.b("bindingProvider",a.L);(function(){function b(a){return function(){return a}}function d(a){return a()}function c(b){return a.a.pa(a.k.u(b),function(a,c){return function(){return b()[c]}})}function e(d,g,e){return"function"===typeof d?c(d.bind(null,g,e)):a.a.pa(d,b)}function f(a,b){return c(this.getBindings.bind(this,a,b))}function k(b,
|
63 |
-
c,d){var g,e=a.e.firstChild(c),f=a.L.instance,m=f.preprocessNode;if(m){for(;g=e;)e=a.e.nextSibling(g),m.call(f,g);e=a.e.firstChild(c)}for(;g=e;)e=a.e.nextSibling(g),h(b,g,d)}function h(b,c,d){var e=!0,f=1===c.nodeType;f&&a.e.Kb(c);if(f&&d||a.L.instance.nodeHasBindings(c))e=g(c,null,b,d).shouldBindDescendants;e&&!x[a.a.v(c)]&&k(b,c,!f)}function l(b){var c=[],d={},g=[];a.a.A(b,function I(e){if(!d[e]){var f=a.getBindingHandler(e);f&&(f.after&&(g.push(e),a.a.o(f.after,function(c){if(b[c]){if(-1!==a.a.m(g,
|
64 |
-
c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+g.join(", "));I(c)}}),g.length--),c.push({key:e,Eb:f}));d[e]=!0}});return c}function g(b,c,g,e){var m=a.a.f.get(b,q);if(!c){if(m)throw Error("You cannot apply bindings multiple times to the same element.");a.a.f.set(b,q,!0)}!m&&e&&a.Tb(b,g);var h;if(c&&"function"!==typeof c)h=c;else{var k=a.L.instance,x=k.getBindingAccessors||f,n=a.j(function(){(h=c?c(g,b):x.call(k,b,g))&&g.K&&g.K();return h},null,{q:b});
|
65 |
-
h&&n.$()||(n=null)}var u;if(h){var w=n?function(a){return function(){return d(n()[a])}}:function(a){return h[a]},y=function(){return a.a.pa(n?n():h,d)};y.get=function(a){return h[a]&&d(w(a))};y.has=function(a){return a in h};e=l(h);a.a.o(e,function(c){var d=c.Eb.init,e=c.Eb.update,f=c.key;if(8===b.nodeType&&!a.e.R[f])throw Error("The binding '"+f+"' cannot be used with virtual elements");try{"function"==typeof d&&a.k.u(function(){var a=d(b,w(f),y,g.$data,g);if(a&&a.controlsDescendantBindings){if(u!==
|
66 |
-
p)throw Error("Multiple bindings ("+u+" and "+f+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=f}}),"function"==typeof e&&a.j(function(){e(b,w(f),y,g.$data,g)},null,{q:b})}catch(m){throw m.message='Unable to process binding "'+f+": "+h[f]+'"\nMessage: '+m.message,m;}})}return{shouldBindDescendants:u===p}}function m(b){return b&&b instanceof a.N?b:new a.N(b)}a.d={};var x={script:!0,textarea:!0};a.getBindingHandler=function(b){return a.d[b]};
|
67 |
-
a.N=function(b,c,d,g){var e=this,f="function"==typeof b&&!a.F(b),m,l=a.j(function(){var m=f?b():b,h=a.a.c(m);c?(c.K&&c.K(),a.a.extend(e,c),l&&(e.K=l)):(e.$parents=[],e.$root=h,e.ko=a);e.$rawData=m;e.$data=h;d&&(e[d]=h);g&&g(e,c,h);return e.$data},null,{Pa:function(){return m&&!a.a.tb(m)},q:!0});l.$()&&(e.K=l,l.equalityComparer=null,m=[],l.Zb=function(b){m.push(b);a.a.C.fa(b,function(b){a.a.ya(m,b);m.length||(l.p(),e.K=l=p)})})};a.N.prototype.createChildContext=function(b,c,d){return new a.N(b,this,
|
68 |
-
c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.N.prototype.extend=function(b){return new a.N(this.K||this.$data,this,null,function(c,d){c.$rawData=d.$rawData;a.a.extend(c,"function"==typeof b?b():b)})};var q=a.a.f.I(),n=a.a.f.I();a.Tb=function(b,c){if(2==arguments.length)a.a.f.set(b,n,c),c.K&&c.K.Zb(b);else return a.a.f.get(b,n)};a.va=function(b,c,d){1===b.nodeType&&a.e.Kb(b);return g(b,c,m(d),!0)};a.cc=function(b,
|
69 |
-
c,d){d=m(d);return a.va(b,e(c,d,b),d)};a.Ja=function(a,b){1!==b.nodeType&&8!==b.nodeType||k(m(a),b,!0)};a.ub=function(a,b){!u&&y.jQuery&&(u=y.jQuery);if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||y.document.body;h(m(a),b,!0)};a.Oa=function(b){switch(b.nodeType){case 1:case 8:var c=a.Tb(b);if(c)return c;if(b.parentNode)return a.Oa(b.parentNode)}return p};a.gc=function(b){return(b=a.Oa(b))?
|
70 |
-
b.$data:p};a.b("bindingHandlers",a.d);a.b("applyBindings",a.ub);a.b("applyBindingsToDescendants",a.Ja);a.b("applyBindingAccessorsToNode",a.va);a.b("applyBindingsToNode",a.cc);a.b("contextFor",a.Oa);a.b("dataFor",a.gc)})();(function(b){function d(d,e){var g=f.hasOwnProperty(d)?f[d]:b,m;g?g.U(e):(g=f[d]=new a.Q,g.U(e),c(d,function(a,b){var c=!(!b||!b.synchronous);k[d]={definition:a,tc:c};delete f[d];m||c?g.notifySubscribers(a):setTimeout(function(){g.notifySubscribers(a)},0)}),m=!0)}function c(a,b){e("getConfig",
|
71 |
-
[a],function(c){c?e("loadComponent",[a,c],function(a){b(a,c)}):b(null,null)})}function e(c,d,g,f){f||(f=a.g.loaders.slice(0));var k=f.shift();if(k){var q=k[c];if(q){var n=!1;if(q.apply(k,d.concat(function(a){n?g(null):null!==a?g(a):e(c,d,g,f)}))!==b&&(n=!0,!k.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else e(c,d,g,f)}else g(null)}var f={},k={};a.g={get:function(c,e){var g=k.hasOwnProperty(c)?k[c]:
|
72 |
-
b;g?g.tc?a.k.u(function(){e(g.definition)}):setTimeout(function(){e(g.definition)},0):d(c,e)},zb:function(a){delete k[a]},ob:e};a.g.loaders=[];a.b("components",a.g);a.b("components.get",a.g.get);a.b("components.clearCachedDefinition",a.g.zb)})();(function(){function b(b,c,d,e){function k(){0===--v&&e(h)}var h={},v=2,t=d.template;d=d.viewModel;t?f(c,t,function(c){a.g.ob("loadTemplate",[b,c],function(a){h.template=a;k()})}):k();d?f(c,d,function(c){a.g.ob("loadViewModel",[b,c],function(a){h[l]=a;k()})}):
|
73 |
-
k()}function d(a,b,c){if("function"===typeof b)c(function(a){return new b(a)});else if("function"===typeof b[l])c(b[l]);else if("instance"in b){var e=b.instance;c(function(){return e})}else"viewModel"in b?d(a,b.viewModel,c):a("Unknown viewModel value: "+b)}function c(b){switch(a.a.v(b)){case "script":return a.a.ca(b.text);case "textarea":return a.a.ca(b.value);case "template":if(e(b.content))return a.a.la(b.content.childNodes)}return a.a.la(b.childNodes)}function e(a){return y.DocumentFragment?a instanceof
|
74 |
-
DocumentFragment:a&&11===a.nodeType}function f(a,b,c){"string"===typeof b.require?O||y.require?(O||y.require)([b.require],c):a("Uses require, but no AMD loader is present"):c(b)}function k(a){return function(b){throw Error("Component '"+a+"': "+b);}}var h={};a.g.register=function(b,c){if(!c)throw Error("Invalid configuration for "+b);if(a.g.Xa(b))throw Error("Component "+b+" is already registered");h[b]=c};a.g.Xa=function(a){return a in h};a.g.Ec=function(b){delete h[b];a.g.zb(b)};a.g.Ab={getConfig:function(a,
|
75 |
-
b){b(h.hasOwnProperty(a)?h[a]:null)},loadComponent:function(a,c,d){var e=k(a);f(e,c,function(c){b(a,e,c,d)})},loadTemplate:function(b,d,f){b=k(b);if("string"===typeof d)f(a.a.ca(d));else if(d instanceof Array)f(d);else if(e(d))f(a.a.O(d.childNodes));else if(d.element)if(d=d.element,y.HTMLElement?d instanceof HTMLElement:d&&d.tagName&&1===d.nodeType)f(c(d));else if("string"===typeof d){var l=w.getElementById(d);l?f(c(l)):b("Cannot find element with ID "+d)}else b("Unknown element type: "+d);else b("Unknown template value: "+
|
76 |
-
d)},loadViewModel:function(a,b,c){d(k(a),b,c)}};var l="createViewModel";a.b("components.register",a.g.register);a.b("components.isRegistered",a.g.Xa);a.b("components.unregister",a.g.Ec);a.b("components.defaultLoader",a.g.Ab);a.g.loaders.push(a.g.Ab);a.g.$b=h})();(function(){function b(b,e){var f=b.getAttribute("params");if(f){var f=d.parseBindingsString(f,e,b,{valueAccessors:!0,bindingParams:!0}),f=a.a.pa(f,function(d){return a.w(d,null,{q:b})}),k=a.a.pa(f,function(d){var e=d.B();return d.$()?a.w({read:function(){return a.a.c(d())},
|
77 |
-
write:a.Da(e)&&function(a){d()(a)},q:b}):e});k.hasOwnProperty("$raw")||(k.$raw=f);return k}return{$raw:{}}}a.g.getComponentNameForNode=function(b){b=a.a.v(b);return a.g.Xa(b)&&b};a.g.sb=function(c,d,f,k){if(1===d.nodeType){var h=a.g.getComponentNameForNode(d);if(h){c=c||{};if(c.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var l={name:h,params:b(d,f)};c.component=k?function(){return l}:l}}return c};var d=new a.L;9>a.a.M&&(a.g.register=function(a){return function(b){w.createElement(b);
|
78 |
-
return a.apply(this,arguments)}}(a.g.register),w.createDocumentFragment=function(b){return function(){var d=b(),f=a.g.$b,k;for(k in f)f.hasOwnProperty(k)&&d.createElement(k);return d}}(w.createDocumentFragment))})();(function(b){function d(b,c,d){c=c.template;if(!c)throw Error("Component '"+b+"' has no template");b=a.a.la(c);a.e.T(d,b)}function c(a,b,c,d){var e=a.createViewModel;return e?e.call(a,d,{element:b,templateNodes:c}):d}var e=0;a.d.component={init:function(f,k,h,l,g){function m(){var a=x&&
|
79 |
-
x.dispose;"function"===typeof a&&a.call(x);q=null}var x,q,n=a.a.O(a.e.childNodes(f));a.a.C.fa(f,m);a.w(function(){var l=a.a.c(k()),h,t;"string"===typeof l?h=l:(h=a.a.c(l.name),t=a.a.c(l.params));if(!h)throw Error("No component name specified");var p=q=++e;a.g.get(h,function(e){if(q===p){m();if(!e)throw Error("Unknown component '"+h+"'");d(h,e,f);var l=c(e,f,n,t);e=g.createChildContext(l,b,function(a){a.$component=l;a.$componentTemplateNodes=n});x=l;a.Ja(e,f)}})},null,{q:f});return{controlsDescendantBindings:!0}}};
|
80 |
-
a.e.R.component=!0})();var P={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,d){var c=a.a.c(d())||{};a.a.A(c,function(c,d){d=a.a.c(d);var k=!1===d||null===d||d===p;k&&b.removeAttribute(c);8>=a.a.M&&c in P?(c=P[c],k?b.removeAttribute(c):b[c]=d):k||b.setAttribute(c,d.toString());"name"===c&&a.a.Rb(b,k?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,d,c){function e(){var e=b.checked,f=x?k():e;if(!a.Z.Ca()&&(!l||e)){var h=a.k.u(d);g?m!==f?(e&&(a.a.ga(h,
|
81 |
-
f,!0),a.a.ga(h,m,!1)),m=f):a.a.ga(h,f,e):a.h.ra(h,c,"checked",f,!0)}}function f(){var c=a.a.c(d());b.checked=g?0<=a.a.m(c,k()):h?c:k()===c}var k=a.Nb(function(){return c.has("checkedValue")?a.a.c(c.get("checkedValue")):c.has("value")?a.a.c(c.get("value")):b.value}),h="checkbox"==b.type,l="radio"==b.type;if(h||l){var g=h&&a.a.c(d())instanceof Array,m=g?k():p,x=l||g;l&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.w(e,null,{q:b});a.a.n(b,"click",e);a.w(f,null,{q:b})}}};a.h.V.checked=!0;a.d.checkedValue=
|
82 |
-
{update:function(b,d){b.value=a.a.c(d())}}})();a.d.css={update:function(b,d){var c=a.a.c(d());null!==c&&"object"==typeof c?a.a.A(c,function(c,d){d=a.a.c(d);a.a.Ia(b,c,d)}):(c=String(c||""),a.a.Ia(b,b.__ko__cssValue,!1),b.__ko__cssValue=c,a.a.Ia(b,c,!0))}};a.d.enable={update:function(b,d){var c=a.a.c(d());c&&b.disabled?b.removeAttribute("disabled"):c||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,d){a.d.enable.update(b,function(){return!a.a.c(d())})}};a.d.event={init:function(b,d,c,
|
83 |
-
e,f){var k=d()||{};a.a.A(k,function(h){"string"==typeof h&&a.a.n(b,h,function(b){var g,m=d()[h];if(m){try{var k=a.a.O(arguments);e=f.$data;k.unshift(e);g=m.apply(e,k)}finally{!0!==g&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===c.get(h+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={Ib:function(b){return function(){var d=b(),c=a.a.cb(d);if(!c||"number"==typeof c.length)return{foreach:d,templateEngine:a.P.Va};a.a.c(d);return{foreach:c.data,as:c.as,
|
84 |
-
includeDestroyed:c.includeDestroyed,afterAdd:c.afterAdd,beforeRemove:c.beforeRemove,afterRender:c.afterRender,beforeMove:c.beforeMove,afterMove:c.afterMove,templateEngine:a.P.Va}}},init:function(b,d){return a.d.template.init(b,a.d.foreach.Ib(d))},update:function(b,d,c,e,f){return a.d.template.update(b,a.d.foreach.Ib(d),c,e,f)}};a.h.ka.foreach=!1;a.e.R.foreach=!0;a.d.hasfocus={init:function(b,d,c){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(m){g=
|
85 |
-
f.body}e=g===b}f=d();a.h.ra(f,c,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),k=e.bind(null,!1);a.a.n(b,"focus",f);a.a.n(b,"focusin",f);a.a.n(b,"blur",k);a.a.n(b,"focusout",k)},update:function(b,d){var c=!!a.a.c(d());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===c||(c?b.focus():b.blur(),a.k.u(a.a.qa,null,[b,c?"focusin":"focusout"]))}};a.h.V.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.h.V.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},
|
86 |
-
update:function(b,d){a.a.gb(b,d())}};K("if");K("ifnot",!1,!0);K("with",!0,!1,function(a,d){return a.createChildContext(d)});var L={};a.d.options={init:function(b){if("select"!==a.a.v(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,d,c){function e(){return a.a.xa(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function k(d,e){if(r&&
|
87 |
-
m)a.i.Y(b,a.a.c(c.get("value")),!0);else if(n.length){var g=0<=a.a.m(n,a.i.s(e[0]));a.a.Sb(e[0],g);r&&!g&&a.k.u(a.a.qa,null,[b,"change"])}}var h=b.multiple,l=0!=b.length&&h?b.scrollTop:null,g=a.a.c(d()),m=c.get("valueAllowUnset")&&c.has("value"),x=c.get("optionsIncludeDestroyed");d={};var q,n=[];m||(h?n=a.a.Ka(e(),a.i.s):0<=b.selectedIndex&&n.push(a.i.s(b.options[b.selectedIndex])));g&&("undefined"==typeof g.length&&(g=[g]),q=a.a.xa(g,function(b){return x||b===p||null===b||!a.a.c(b._destroy)}),c.has("optionsCaption")&&
|
88 |
-
(g=a.a.c(c.get("optionsCaption")),null!==g&&g!==p&&q.unshift(L)));var r=!1;d.beforeRemove=function(a){b.removeChild(a)};g=k;c.has("optionsAfterRender")&&"function"==typeof c.get("optionsAfterRender")&&(g=function(b,d){k(0,d);a.k.u(c.get("optionsAfterRender"),null,[d[0],b!==L?b:p])});a.a.fb(b,q,function(d,e,g){g.length&&(n=!m&&g[0].selected?[a.i.s(g[0])]:[],r=!0);e=b.ownerDocument.createElement("option");d===L?(a.a.Ha(e,c.get("optionsCaption")),a.i.Y(e,p)):(g=f(d,c.get("optionsValue"),d),a.i.Y(e,a.a.c(g)),
|
89 |
-
d=f(d,c.get("optionsText"),g),a.a.Ha(e,d));return[e]},d,g);a.k.u(function(){m?a.i.Y(b,a.a.c(c.get("value")),!0):(h?n.length&&e().length<n.length:n.length&&0<=b.selectedIndex?a.i.s(b.options[b.selectedIndex])!==n[0]:n.length||0<=b.selectedIndex)&&a.a.qa(b,"change")});a.a.kc(b);l&&20<Math.abs(l-b.scrollTop)&&(b.scrollTop=l)}};a.d.options.ab=a.a.f.I();a.d.selectedOptions={after:["options","foreach"],init:function(b,d,c){a.a.n(b,"change",function(){var e=d(),f=[];a.a.o(b.getElementsByTagName("option"),
|
90 |
-
function(b){b.selected&&f.push(a.i.s(b))});a.h.ra(e,c,"selectedOptions",f)})},update:function(b,d){if("select"!=a.a.v(b))throw Error("values binding applies only to SELECT elements");var c=a.a.c(d());c&&"number"==typeof c.length&&a.a.o(b.getElementsByTagName("option"),function(b){var d=0<=a.a.m(c,a.i.s(b));a.a.Sb(b,d)})}};a.h.V.selectedOptions=!0;a.d.style={update:function(b,d){var c=a.a.c(d()||{});a.a.A(c,function(c,d){d=a.a.c(d);if(null===d||d===p||!1===d)d="";b.style[c]=d})}};a.d.submit={init:function(b,
|
91 |
-
d,c,e,f){if("function"!=typeof d())throw Error("The value for a submit binding must be a function");a.a.n(b,"submit",function(a){var c,e=d();try{c=e.call(f.$data,b)}finally{!0!==c&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,d){a.a.Ha(b,d())}};a.e.R.text=!0;(function(){if(y&&y.navigator)var b=function(a){if(a)return parseFloat(a[1])},d=y.opera&&y.opera.version&&parseInt(y.opera.version()),c=y.navigator.userAgent,
|
92 |
-
e=b(c.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)),f=b(c.match(/Firefox\/([^ ]*)/));if(10>a.a.M)var k=a.a.f.I(),h=a.a.f.I(),l=function(b){var c=this.activeElement;(c=c&&a.a.f.get(c,h))&&c(b)},g=function(b,c){var d=b.ownerDocument;a.a.f.get(d,k)||(a.a.f.set(d,k,!0),a.a.n(d,"selectionchange",l));a.a.f.set(b,h,c)};a.d.textInput={init:function(b,c,l){function h(c,d){a.a.n(b,c,d)}function k(){var d=a.a.c(c());if(null===d||d===p)d="";w!==p&&d===w?setTimeout(k,4):b.value!==d&&(u=d,b.value=d)}function v(){A||
|
93 |
-
(w=b.value,A=setTimeout(t,4))}function t(){clearTimeout(A);w=A=p;var d=b.value;u!==d&&(u=d,a.h.ra(c(),l,"textInput",d))}var u=b.value,A,w;10>a.a.M?(h("propertychange",function(a){"value"===a.propertyName&&t()}),8==a.a.M&&(h("keyup",t),h("keydown",t)),8<=a.a.M&&(g(b,t),h("dragend",v))):(h("input",t),5>e&&"textarea"===a.a.v(b)?(h("keydown",v),h("paste",v),h("cut",v)):11>d?h("keydown",v):4>f&&(h("DOMAutoComplete",t),h("dragdrop",t),h("drop",t)));h("change",t);a.w(k,null,{q:b})}};a.h.V.textInput=!0;a.d.textinput=
|
94 |
-
{preprocess:function(a,b,c){c("textInput",a)}}})();a.d.uniqueName={init:function(b,d){if(d()){var c="ko_unique_"+ ++a.d.uniqueName.fc;a.a.Rb(b,c)}}};a.d.uniqueName.fc=0;a.d.value={after:["options","foreach"],init:function(b,d,c){if("input"!=b.tagName.toLowerCase()||"checkbox"!=b.type&&"radio"!=b.type){var e=["change"],f=c.get("valueUpdate"),k=!1,h=null;f&&("string"==typeof f&&(f=[f]),a.a.ia(e,f),e=a.a.wb(e));var l=function(){h=null;k=!1;var e=d(),g=a.i.s(b);a.h.ra(e,c,"value",g)};!a.a.M||"input"!=
|
95 |
-
b.tagName.toLowerCase()||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.m(e,"propertychange")||(a.a.n(b,"propertychange",function(){k=!0}),a.a.n(b,"focus",function(){k=!1}),a.a.n(b,"blur",function(){k&&l()}));a.a.o(e,function(c){var d=l;a.a.Dc(c,"after")&&(d=function(){h=a.i.s(b);setTimeout(l,0)},c=c.substring(5));a.a.n(b,c,d)});var g=function(){var e=a.a.c(d()),f=a.i.s(b);if(null!==h&&e===h)setTimeout(g,0);else if(e!==f)if("select"===a.a.v(b)){var l=c.get("valueAllowUnset"),
|
96 |
-
f=function(){a.i.Y(b,e,l)};f();l||e===a.i.s(b)?setTimeout(f,0):a.k.u(a.a.qa,null,[b,"change"])}else a.i.Y(b,e)};a.w(g,null,{q:b})}else a.va(b,{checkedValue:d})},update:function(){}};a.h.V.value=!0;a.d.visible={update:function(b,d){var c=a.a.c(d()),e="none"!=b.style.display;c&&!e?b.style.display="":!c&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(d,c,e,f,k){return a.d.event.init.call(this,d,function(){var a={};a[b]=c();return a},e,f,k)}}})("click");a.J=function(){};a.J.prototype.renderTemplateSource=
|
97 |
-
function(){throw Error("Override renderTemplateSource");};a.J.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.J.prototype.makeTemplateSource=function(b,d){if("string"==typeof b){d=d||w;var c=d.getElementById(b);if(!c)throw Error("Cannot find template with ID "+b);return new a.t.l(c)}if(1==b.nodeType||8==b.nodeType)return new a.t.ha(b);throw Error("Unknown template type: "+b);};a.J.prototype.renderTemplate=function(a,d,c,e){a=this.makeTemplateSource(a,
|
98 |
-
e);return this.renderTemplateSource(a,d,c,e)};a.J.prototype.isTemplateRewritten=function(a,d){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,d).data("isRewritten")};a.J.prototype.rewriteTemplate=function(a,d,c){a=this.makeTemplateSource(a,c);d=d(a.text());a.text(d);a.data("isRewritten",!0)};a.b("templateEngine",a.J);a.kb=function(){function b(b,c,d,h){b=a.h.bb(b);for(var l=a.h.ka,g=0;g<b.length;g++){var m=b[g].key;if(l.hasOwnProperty(m)){var x=l[m];if("function"===typeof x){if(m=
|
99 |
-
x(b[g].value))throw Error(m);}else if(!x)throw Error("This template engine does not support the '"+m+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.h.Ea(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return h.createJavaScriptEvaluatorBlock(d)+c}var d=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,c=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{lc:function(b,
|
100 |
-
c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.kb.xc(b,c)},d)},xc:function(a,f){return a.replace(d,function(a,c,d,e,m){return b(m,c,d,f)}).replace(c,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",f)})},dc:function(b,c){return a.H.$a(function(d,h){var l=d.nextSibling;l&&l.nodeName.toLowerCase()===c&&a.va(l,b,h)})}}}();a.b("__tr_ambtns",a.kb.dc);(function(){a.t={};a.t.l=function(a){this.l=a};a.t.l.prototype.text=function(){var b=a.a.v(this.l),b="script"===b?"text":
|
101 |
-
"textarea"===b?"value":"innerHTML";if(0==arguments.length)return this.l[b];var d=arguments[0];"innerHTML"===b?a.a.gb(this.l,d):this.l[b]=d};var b=a.a.f.I()+"_";a.t.l.prototype.data=function(c){if(1===arguments.length)return a.a.f.get(this.l,b+c);a.a.f.set(this.l,b+c,arguments[1])};var d=a.a.f.I();a.t.ha=function(a){this.l=a};a.t.ha.prototype=new a.t.l;a.t.ha.prototype.text=function(){if(0==arguments.length){var b=a.a.f.get(this.l,d)||{};b.lb===p&&b.Na&&(b.lb=b.Na.innerHTML);return b.lb}a.a.f.set(this.l,
|
102 |
-
d,{lb:arguments[0]})};a.t.l.prototype.nodes=function(){if(0==arguments.length)return(a.a.f.get(this.l,d)||{}).Na;a.a.f.set(this.l,d,{Na:arguments[0]})};a.b("templateSources",a.t);a.b("templateSources.domElement",a.t.l);a.b("templateSources.anonymousTemplate",a.t.ha)})();(function(){function b(b,c,d){var e;for(c=a.e.nextSibling(c);b&&(e=b)!==c;)b=a.e.nextSibling(e),d(e,b)}function d(c,d){if(c.length){var e=c[0],f=c[c.length-1],h=e.parentNode,k=a.L.instance,r=k.preprocessNode;if(r){b(e,f,function(a,
|
103 |
-
b){var c=a.previousSibling,d=r.call(k,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):(c.push(e,f),a.a.na(c,h))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.ub(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.H.Xb(b,[d])});a.a.na(c,h)}}function c(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,q){q=q||{};var n=(b&&c(b)||f||{}).ownerDocument,r=q.templateEngine||k;a.kb.lc(f,r,n);f=r.renderTemplate(f,h,q,n);if("number"!=
|
104 |
-
typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");n=!1;switch(e){case "replaceChildren":a.e.T(b,f);n=!0;break;case "replaceNode":a.a.Qb(b,f);n=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}n&&(d(f,h),q.afterRender&&a.k.u(q.afterRender,null,[f,h.$data]));return f}function f(b,c,d){return a.F(b)?b():"function"===typeof b?b(c,d):b}var k;a.hb=function(b){if(b!=p&&!(b instanceof a.J))throw Error("templateEngine must inherit from ko.templateEngine");
|
105 |
-
k=b};a.eb=function(b,d,h,x,q){h=h||{};if((h.templateEngine||k)==p)throw Error("Set a template engine before calling renderTemplate");q=q||"replaceChildren";if(x){var n=c(x);return a.j(function(){var k=d&&d instanceof a.N?d:new a.N(a.a.c(d)),p=f(b,k.$data,k),k=e(x,q,p,k,h);"replaceNode"==q&&(x=k,n=c(x))},null,{Pa:function(){return!n||!a.a.Qa(n)},q:n&&"replaceNode"==q?n.parentNode:n})}return a.H.$a(function(c){a.eb(b,d,h,c,"replaceNode")})};a.Cc=function(b,c,h,k,q){function n(a,b){d(b,v);h.afterRender&&
|
106 |
-
h.afterRender(b,a);v=null}function r(a,c){v=q.createChildContext(a,h.as,function(a){a.$index=c});var d=f(b,a,v);return e(null,"ignoreTargetNode",d,v,h)}var v;return a.j(function(){var b=a.a.c(c)||[];"undefined"==typeof b.length&&(b=[b]);b=a.a.xa(b,function(b){return h.includeDestroyed||b===p||null===b||!a.a.c(b._destroy)});a.k.u(a.a.fb,null,[k,b,r,h,n])},null,{q:k})};var h=a.a.f.I();a.d.template={init:function(b,c){var d=a.a.c(c());if("string"==typeof d||d.name)a.e.ma(b);else{if("nodes"in d){if(d=
|
107 |
-
d.nodes||[],a.F(d))throw Error('The "nodes" option must be a plain, non-observable array.');}else d=a.e.childNodes(b);d=a.a.Jb(d);(new a.t.ha(b)).nodes(d)}return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var k=c(),r;c=a.a.c(k);d=!0;e=null;"string"==typeof c?c={}:(k=c.name,"if"in c&&(d=a.a.c(c["if"])),d&&"ifnot"in c&&(d=!a.a.c(c.ifnot)),r=a.a.c(c.data));"foreach"in c?e=a.Cc(k||b,d&&c.foreach||[],c,b,f):d?(f="data"in c?f.createChildContext(r,c.as):f,e=a.eb(k||b,f,c,b)):a.e.ma(b);f=
|
108 |
-
e;(r=a.a.f.get(b,h))&&"function"==typeof r.p&&r.p();a.a.f.set(b,h,f&&f.$()?f:p)}};a.h.ka.template=function(b){b=a.h.bb(b);return 1==b.length&&b[0].unknown||a.h.vc(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.e.R.template=!0})();a.b("setTemplateEngine",a.hb);a.b("renderTemplate",a.eb);a.a.Cb=function(a,d,c){if(a.length&&d.length){var e,f,k,h,l;for(e=f=0;(!c||e<c)&&(h=a[f]);++f){for(k=0;l=d[k];++k)if(h.value===l.value){h.moved=l.index;l.moved=
|
109 |
-
h.index;d.splice(k,1);e=k=0;break}e+=k}}};a.a.Ma=function(){function b(b,c,e,f,k){var h=Math.min,l=Math.max,g=[],m,p=b.length,q,n=c.length,r=n-p||1,v=p+n+1,t,u,w;for(m=0;m<=p;m++)for(u=t,g.push(t=[]),w=h(n,m+r),q=l(0,m-1);q<=w;q++)t[q]=q?m?b[m-1]===c[q-1]?u[q-1]:h(u[q]||v,t[q-1]||v)+1:q+1:m+1;h=[];l=[];r=[];m=p;for(q=n;m||q;)n=g[m][q]-1,q&&n===g[m][q-1]?l.push(h[h.length]={status:e,value:c[--q],index:q}):m&&n===g[m-1][q]?r.push(h[h.length]={status:f,value:b[--m],index:m}):(--q,--m,k.sparse||h.push({status:"retained",
|
110 |
-
value:c[q]}));a.a.Cb(l,r,10*p);return h.reverse()}return function(a,c,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];c=c||[];return a.length<=c.length?b(a,c,"added","deleted",e):b(c,a,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.Ma);(function(){function b(b,d,f,k,h){var l=[],g=a.j(function(){var g=d(f,h,a.a.na(l,b))||[];0<l.length&&(a.a.Qb(l,g),k&&a.k.u(k,null,[f,g,h]));l.length=0;a.a.ia(l,g)},null,{q:b,Pa:function(){return!a.a.tb(l)}});return{aa:l,j:g.$()?g:p}}var d=a.a.f.I();
|
111 |
-
a.a.fb=function(c,e,f,k,h){function l(b,d){s=u[d];t!==d&&(z[b]=s);s.Ua(t++);a.a.na(s.aa,c);r.push(s);y.push(s)}function g(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.o(c[d].aa,function(a){b(a,d,c[d].wa)})}e=e||[];k=k||{};var m=a.a.f.get(c,d)===p,u=a.a.f.get(c,d)||[],q=a.a.Ka(u,function(a){return a.wa}),n=a.a.Ma(q,e,k.dontLimitMoves),r=[],v=0,t=0,w=[],y=[];e=[];for(var z=[],q=[],s,C=0,D,E;D=n[C];C++)switch(E=D.moved,D.status){case "deleted":E===p&&(s=u[v],s.j&&s.j.p(),w.push.apply(w,a.a.na(s.aa,
|
112 |
-
c)),k.beforeRemove&&(e[C]=s,y.push(s)));v++;break;case "retained":l(C,v++);break;case "added":E!==p?l(C,E):(s={wa:D.value,Ua:a.r(t++)},r.push(s),y.push(s),m||(q[C]=s))}g(k.beforeMove,z);a.a.o(w,k.beforeRemove?a.S:a.removeNode);for(var C=0,m=a.e.firstChild(c),H;s=y[C];C++){s.aa||a.a.extend(s,b(c,f,s.wa,h,s.Ua));for(v=0;n=s.aa[v];m=n.nextSibling,H=n,v++)n!==m&&a.e.Fb(c,n,H);!s.rc&&h&&(h(s.wa,s.aa,s.Ua),s.rc=!0)}g(k.beforeRemove,e);g(k.afterMove,z);g(k.afterAdd,q);a.a.f.set(c,d,r)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",
|
113 |
-
a.a.fb);a.P=function(){this.allowTemplateRewriting=!1};a.P.prototype=new a.J;a.P.prototype.renderTemplateSource=function(b,d,c,e){if(d=(9>a.a.M?0:b.nodes)?b.nodes():null)return a.a.O(d.cloneNode(!0).childNodes);b=b.text();return a.a.ca(b,e)};a.P.Va=new a.P;a.hb(a.P.Va);a.b("nativeTemplateEngine",a.P);(function(){a.Ya=function(){var a=this.uc=function(){if(!u||!u.tmpl)return 0;try{if(0<=u.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,
|
114 |
-
e,f,k){k=k||w;f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=u.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=u.extend({koBindingContext:e},f.templateOptions);e=u.tmpl(h,b,e);e.appendTo(k.createElement("div"));u.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+
|
115 |
-
a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(u.tmpl.tag.ko_code={open:"__.push($1 || '');"},u.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.Ya.prototype=new a.J;var b=new a.Ya;0<b.uc&&a.hb(b);a.b("jqueryTmplTemplateEngine",a.Ya)})()})})();})();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
js/knockout-3.5.1.1629122067.js
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Knockout JavaScript library v3.5.1
|
3 |
+
* (c) The Knockout.js team - http://knockoutjs.com/
|
4 |
+
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
5 |
+
*/
|
6 |
+
|
7 |
+
(function() {(function(n){var A=this||(0,eval)("this"),w=A.document,R=A.navigator,v=A.jQuery,H=A.JSON;v||"undefined"===typeof jQuery||(v=jQuery);(function(n){"function"===typeof define&&define.amd?define(["exports","require"],n):"object"===typeof exports&&"object"===typeof module?n(module.exports||exports):n(A.ko={})})(function(S,T){function K(a,c){return null===a||typeof a in W?a===c:!1}function X(b,c){var d;return function(){d||(d=a.a.setTimeout(function(){d=n;b()},c))}}function Y(b,c){var d;return function(){clearTimeout(d);
|
8 |
+
d=a.a.setTimeout(b,c)}}function Z(a,c){c&&"change"!==c?"beforeChange"===c?this.pc(a):this.gb(a,c):this.qc(a)}function aa(a,c){null!==c&&c.s&&c.s()}function ba(a,c){var d=this.qd,e=d[r];e.ra||(this.Qb&&this.mb[c]?(d.uc(c,a,this.mb[c]),this.mb[c]=null,--this.Qb):e.I[c]||d.uc(c,a,e.J?{da:a}:d.$c(a)),a.Ja&&a.gd())}var a="undefined"!==typeof S?S:{};a.b=function(b,c){for(var d=b.split("."),e=a,f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c};a.L=function(a,c,d){a[c]=d};a.version="3.5.1";a.b("version",
|
9 |
+
a.version);a.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1};a.a=function(){function b(a,b){for(var c in a)f.call(a,c)&&b(c,a[c])}function c(a,b){if(b)for(var c in b)f.call(b,c)&&(a[c]=b[c]);return a}function d(a,b){a.__proto__=b;return a}function e(b,c,d,e){var l=b[c].match(q)||[];a.a.D(d.match(q),function(b){a.a.Na(l,b,e)});b[c]=l.join(" ")}var f=Object.prototype.hasOwnProperty,g={__proto__:[]}instanceof Array,h="function"===typeof Symbol,m={},k={};m[R&&/Firefox\/2/i.test(R.userAgent)?
|
10 |
+
"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];m.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(m,function(a,b){if(b.length)for(var c=0,d=b.length;c<d;c++)k[b[c]]=a});var l={propertychange:!0},p=w&&function(){for(var a=3,b=w.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",c[0];);return 4<a?a:n}(),q=/\S+/g,t;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],
|
11 |
+
D:function(a,b,c){for(var d=0,e=a.length;d<e;d++)b.call(c,a[d],d,a)},A:"function"==typeof Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},Lb:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d],d,a))return a[d];return n},Pa:function(b,c){var d=a.a.A(b,c);0<d?b.splice(d,1):0===d&&b.shift()},wc:function(b){var c=[];b&&a.a.D(b,function(b){0>a.a.A(c,b)&&c.push(b)});return c},Mb:function(a,
|
12 |
+
b,c){var d=[];if(a)for(var e=0,l=a.length;e<l;e++)d.push(b.call(c,a[e],e));return d},jb:function(a,b,c){var d=[];if(a)for(var e=0,l=a.length;e<l;e++)b.call(c,a[e],e)&&d.push(a[e]);return d},Nb:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var c=0,d=b.length;c<d;c++)a.push(b[c]);return a},Na:function(b,c,d){var e=a.a.A(a.a.bc(b),c);0>e?d&&b.push(c):d||b.splice(e,1)},Ba:g,extend:c,setPrototypeOf:d,Ab:g?d:c,P:b,Ga:function(a,b,c){if(!a)return a;var d={},e;for(e in a)f.call(a,e)&&(d[e]=
|
13 |
+
b.call(c,a[e],e,a));return d},Tb:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Yb:function(b){b=a.a.la(b);for(var c=(b[0]&&b[0].ownerDocument||w).createElement("div"),d=0,e=b.length;d<e;d++)c.appendChild(a.oa(b[d]));return c},Ca:function(b,c){for(var d=0,e=b.length,l=[];d<e;d++){var k=b[d].cloneNode(!0);l.push(c?a.oa(k):k)}return l},va:function(b,c){a.a.Tb(b);if(c)for(var d=0,e=c.length;d<e;d++)b.appendChild(c[d])},Xc:function(b,c){var d=b.nodeType?[b]:b;if(0<d.length){for(var e=d[0],
|
14 |
+
l=e.parentNode,k=0,f=c.length;k<f;k++)l.insertBefore(c[k],e);k=0;for(f=d.length;k<f;k++)a.removeNode(d[k])}},Ua:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);for(;1<a.length&&a[a.length-1].parentNode!==b;)a.length--;if(1<a.length){var c=a[0],d=a[a.length-1];for(a.length=0;c!==d;)a.push(c),c=c.nextSibling;a.push(d)}}return a},Zc:function(a,b){7>p?a.setAttribute("selected",b):a.selected=b},Db:function(a){return null===a||a===n?"":a.trim?
|
15 |
+
a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},vd:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(1!==a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Sb:function(b){return a.a.vd(b,b.ownerDocument.documentElement)},kd:function(b){return!!a.a.Lb(b,a.a.Sb)},R:function(a){return a&&
|
16 |
+
a.tagName&&a.tagName.toLowerCase()},Ac:function(b){return a.onError?function(){try{return b.apply(this,arguments)}catch(c){throw a.onError&&a.onError(c),c;}}:b},setTimeout:function(b,c){return setTimeout(a.a.Ac(b),c)},Gc:function(b){setTimeout(function(){a.onError&&a.onError(b);throw b;},0)},B:function(b,c,d){var e=a.a.Ac(d);d=l[c];if(a.options.useOnlyNativeEvents||d||!v)if(d||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var k=function(a){e.call(b,a)},f="on"+c;b.attachEvent(f,
|
17 |
+
k);a.a.K.za(b,function(){b.detachEvent(f,k)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,e,!1);else t||(t="function"==typeof v(b).on?"on":"bind"),v(b)[t](c,e)},Fb:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.R(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"==d||"radio"==d):d=!1;if(a.options.useOnlyNativeEvents||!v||d)if("function"==typeof w.createEvent)if("function"==
|
18 |
+
typeof b.dispatchEvent)d=w.createEvent(k[c]||"HTMLEvents"),d.initEvent(c,!0,!0,A,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent");else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");else v(b).trigger(c)},f:function(b){return a.O(b)?b():b},bc:function(b){return a.O(b)?b.v():b},Eb:function(b,c,d){var l;c&&("object"===typeof b.classList?
|
19 |
+
(l=b.classList[d?"add":"remove"],a.a.D(c.match(q),function(a){l.call(b.classList,a)})):"string"===typeof b.className.baseVal?e(b.className,"baseVal",c,d):e(b,"className",c,d))},Bb:function(b,c){var d=a.a.f(c);if(null===d||d===n)d="";var e=a.h.firstChild(b);!e||3!=e.nodeType||a.h.nextSibling(e)?a.h.va(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Ad(b)},Yc:function(a,b){a.name=b;if(7>=p)try{var c=a.name.replace(/[&<>'"]/g,function(a){return"&#"+a.charCodeAt(0)+";"});a.mergeAttributes(w.createElement("<input name='"+
|
20 |
+
c+"'/>"),!1)}catch(d){}},Ad:function(a){9<=p&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},wd:function(a){if(p){var b=a.style.width;a.style.width=0;a.style.width=b}},Pd:function(b,c){b=a.a.f(b);c=a.a.f(c);for(var d=[],e=b;e<=c;e++)d.push(e);return d},la:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},Da:function(a){return h?Symbol(a):a},Zd:6===p,$d:7===p,W:p,Lc:function(b,c){for(var d=a.a.la(b.getElementsByTagName("input")).concat(a.a.la(b.getElementsByTagName("textarea"))),
|
21 |
+
e="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},l=[],k=d.length-1;0<=k;k--)e(d[k])&&l.push(d[k]);return l},Nd:function(b){return"string"==typeof b&&(b=a.a.Db(b))?H&&H.parse?H.parse(b):(new Function("return "+b))():null},hc:function(b,c,d){if(!H||!H.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
|
22 |
+
return H.stringify(a.a.f(b),c,d)},Od:function(c,d,e){e=e||{};var l=e.params||{},k=e.includeFields||this.Jc,f=c;if("object"==typeof c&&"form"===a.a.R(c))for(var f=c.action,h=k.length-1;0<=h;h--)for(var g=a.a.Lc(c,k[h]),m=g.length-1;0<=m;m--)l[g[m].name]=g[m].value;d=a.a.f(d);var p=w.createElement("form");p.style.display="none";p.action=f;p.method="post";for(var q in d)c=w.createElement("input"),c.type="hidden",c.name=q,c.value=a.a.hc(a.a.f(d[q])),p.appendChild(c);b(l,function(a,b){var c=w.createElement("input");
|
23 |
+
c.type="hidden";c.name=a;c.value=b;p.appendChild(c)});w.body.appendChild(p);e.submitter?e.submitter(p):p.submit();setTimeout(function(){p.parentNode.removeChild(p)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.D);a.b("utils.arrayFirst",a.a.Lb);a.b("utils.arrayFilter",a.a.jb);a.b("utils.arrayGetDistinctValues",a.a.wc);a.b("utils.arrayIndexOf",a.a.A);a.b("utils.arrayMap",a.a.Mb);a.b("utils.arrayPushAll",a.a.Nb);a.b("utils.arrayRemoveItem",a.a.Pa);a.b("utils.cloneNodes",a.a.Ca);a.b("utils.createSymbolOrString",
|
24 |
+
a.a.Da);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",a.a.Jc);a.b("utils.getFormFields",a.a.Lc);a.b("utils.objectMap",a.a.Ga);a.b("utils.peekObservable",a.a.bc);a.b("utils.postJson",a.a.Od);a.b("utils.parseJson",a.a.Nd);a.b("utils.registerEventHandler",a.a.B);a.b("utils.stringifyJson",a.a.hc);a.b("utils.range",a.a.Pd);a.b("utils.toggleDomNodeCssClass",a.a.Eb);a.b("utils.triggerEvent",a.a.Fb);a.b("utils.unwrapObservable",a.a.f);a.b("utils.objectForEach",a.a.P);a.b("utils.addOrRemoveItem",
|
25 |
+
a.a.Na);a.b("utils.setTextContent",a.a.Bb);a.b("unwrap",a.a.f);Function.prototype.bind||(Function.prototype.bind=function(a){var c=this;if(1===arguments.length)return function(){return c.apply(a,arguments)};var d=Array.prototype.slice.call(arguments,1);return function(){var e=d.slice(0);e.push.apply(e,arguments);return c.apply(a,e)}});a.a.g=new function(){var b=0,c="__ko__"+(new Date).getTime(),d={},e,f;a.a.W?(e=function(a,e){var f=a[c];if(!f||"null"===f||!d[f]){if(!e)return n;f=a[c]="ko"+b++;d[f]=
|
26 |
+
{}}return d[f]},f=function(a){var b=a[c];return b?(delete d[b],a[c]=null,!0):!1}):(e=function(a,b){var d=a[c];!d&&b&&(d=a[c]={});return d},f=function(a){return a[c]?(delete a[c],!0):!1});return{get:function(a,b){var c=e(a,!1);return c&&c[b]},set:function(a,b,c){(a=e(a,c!==n))&&(a[b]=c)},Ub:function(a,b,c){a=e(a,!0);return a[b]||(a[b]=c)},clear:f,Z:function(){return b++ +c}}};a.b("utils.domData",a.a.g);a.b("utils.domData.clear",a.a.g.clear);a.a.K=new function(){function b(b,c){var d=a.a.g.get(b,e);
|
27 |
+
d===n&&c&&(d=[],a.a.g.set(b,e,d));return d}function c(c){var e=b(c,!1);if(e)for(var e=e.slice(0),k=0;k<e.length;k++)e[k](c);a.a.g.clear(c);a.a.K.cleanExternalData(c);g[c.nodeType]&&d(c.childNodes,!0)}function d(b,d){for(var e=[],l,f=0;f<b.length;f++)if(!d||8===b[f].nodeType)if(c(e[e.length]=l=b[f]),b[f]!==l)for(;f--&&-1==a.a.A(e,b[f]););}var e=a.a.g.Z(),f={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{za:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},yb:function(c,
|
28 |
+
d){var f=b(c,!1);f&&(a.a.Pa(f,d),0==f.length&&a.a.g.set(c,e,n))},oa:function(b){a.u.G(function(){f[b.nodeType]&&(c(b),g[b.nodeType]&&d(b.getElementsByTagName("*")))});return b},removeNode:function(b){a.oa(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){v&&"function"==typeof v.cleanData&&v.cleanData([a])}}};a.oa=a.a.K.oa;a.removeNode=a.a.K.removeNode;a.b("cleanNode",a.oa);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.K);a.b("utils.domNodeDisposal.addDisposeCallback",
|
29 |
+
a.a.K.za);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.K.yb);(function(){var b=[0,"",""],c=[1,"<table>","</table>"],d=[3,"<table><tbody><tr>","</tr></tbody></table>"],e=[1,"<select multiple='multiple'>","</select>"],f={thead:c,tbody:c,tfoot:c,tr:[2,"<table><tbody>","</tbody></table>"],td:d,th:d,option:e,optgroup:e},g=8>=a.a.W;a.a.ua=function(c,d){var e;if(v)if(v.parseHTML)e=v.parseHTML(c,d)||[];else{if((e=v.clean([c],d))&&e[0]){for(var l=e[0];l.parentNode&&11!==l.parentNode.nodeType;)l=l.parentNode;
|
30 |
+
l.parentNode&&l.parentNode.removeChild(l)}}else{(e=d)||(e=w);var l=e.parentWindow||e.defaultView||A,p=a.a.Db(c).toLowerCase(),q=e.createElement("div"),t;t=(p=p.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&f[p[1]]||b;p=t[0];t="ignored<div>"+t[1]+c+t[2]+"</div>";"function"==typeof l.innerShiv?q.appendChild(l.innerShiv(t)):(g&&e.body.appendChild(q),q.innerHTML=t,g&&q.parentNode.removeChild(q));for(;p--;)q=q.lastChild;e=a.a.la(q.lastChild.childNodes)}return e};a.a.Md=function(b,c){var d=a.a.ua(b,
|
31 |
+
c);return d.length&&d[0].parentElement||a.a.Yb(d)};a.a.fc=function(b,c){a.a.Tb(b);c=a.a.f(c);if(null!==c&&c!==n)if("string"!=typeof c&&(c=c.toString()),v)v(b).html(c);else for(var d=a.a.ua(c,b.ownerDocument),e=0;e<d.length;e++)b.appendChild(d[e])}})();a.b("utils.parseHtmlFragment",a.a.ua);a.b("utils.setHtml",a.a.fc);a.aa=function(){function b(c,e){if(c)if(8==c.nodeType){var f=a.aa.Uc(c.nodeValue);null!=f&&e.push({ud:c,Kd:f})}else if(1==c.nodeType)for(var f=0,g=c.childNodes,h=g.length;f<h;f++)b(g[f],
|
32 |
+
e)}var c={};return{Xb:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},bd:function(a,b){var f=c[a];if(f===n)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return f.apply(null,b||[]),!0}finally{delete c[a]}},cd:function(c,e){var f=
|
33 |
+
[];b(c,f);for(var g=0,h=f.length;g<h;g++){var m=f[g].ud,k=[m];e&&a.a.Nb(k,e);a.aa.bd(f[g].Kd,k);m.nodeValue="";m.parentNode&&m.parentNode.removeChild(m)}},Uc:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.aa);a.b("memoization.memoize",a.aa.Xb);a.b("memoization.unmemoize",a.aa.bd);a.b("memoization.parseMemoText",a.aa.Uc);a.b("memoization.unmemoizeDomNodeAndDescendants",a.aa.cd);a.na=function(){function b(){if(f)for(var b=f,c=0,d;h<f;)if(d=e[h++]){if(h>b){if(5E3<=
|
34 |
+
++c){h=f;a.a.Gc(Error("'Too much recursion' after processing "+c+" task groups."));break}b=f}try{d()}catch(p){a.a.Gc(p)}}}function c(){b();h=f=e.length=0}var d,e=[],f=0,g=1,h=0;A.MutationObserver?d=function(a){var b=w.createElement("div");(new MutationObserver(a)).observe(b,{attributes:!0});return function(){b.classList.toggle("foo")}}(c):d=w&&"onreadystatechange"in w.createElement("script")?function(a){var b=w.createElement("script");b.onreadystatechange=function(){b.onreadystatechange=null;w.documentElement.removeChild(b);
|
35 |
+
b=null;a()};w.documentElement.appendChild(b)}:function(a){setTimeout(a,0)};return{scheduler:d,zb:function(b){f||a.na.scheduler(c);e[f++]=b;return g++},cancel:function(a){a=a-(g-f);a>=h&&a<f&&(e[a]=null)},resetForTesting:function(){var a=f-h;h=f=e.length=0;return a},Sd:b}}();a.b("tasks",a.na);a.b("tasks.schedule",a.na.zb);a.b("tasks.runEarly",a.na.Sd);a.Ta={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.$({read:b,write:function(e){clearTimeout(d);d=a.a.setTimeout(function(){b(e)},
|
36 |
+
c)}})},rateLimit:function(a,c){var d,e,f;"number"==typeof c?d=c:(d=c.timeout,e=c.method);a.Hb=!1;f="function"==typeof e?e:"notifyWhenChangesStop"==e?Y:X;a.ub(function(a){return f(a,d,c)})},deferred:function(b,c){if(!0!==c)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");b.Hb||(b.Hb=!0,b.ub(function(c){var e,f=!1;return function(){if(!f){a.na.cancel(e);e=a.na.zb(c);try{f=!0,b.notifySubscribers(n,"dirty")}finally{f=
|
37 |
+
!1}}}}))},notify:function(a,c){a.equalityComparer="always"==c?null:K}};var W={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.Ta);a.ic=function(b,c,d){this.da=b;this.lc=c;this.mc=d;this.Ib=!1;this.fb=this.Jb=null;a.L(this,"dispose",this.s);a.L(this,"disposeWhenNodeIsRemoved",this.l)};a.ic.prototype.s=function(){this.Ib||(this.fb&&a.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)};a.ic.prototype.l=function(b){this.Jb=b;a.a.K.za(b,this.fb=this.s.bind(this))};
|
38 |
+
a.T=function(){a.a.Ab(this,D);D.qb(this)};var D={qb:function(a){a.U={change:[]};a.sc=1},subscribe:function(b,c,d){var e=this;d=d||"change";var f=new a.ic(e,c?b.bind(c):b,function(){a.a.Pa(e.U[d],f);e.hb&&e.hb(d)});e.Qa&&e.Qa(d);e.U[d]||(e.U[d]=[]);e.U[d].push(f);return f},notifySubscribers:function(b,c){c=c||"change";"change"===c&&this.Gb();if(this.Wa(c)){var d="change"===c&&this.ed||this.U[c].slice(0);try{a.u.xc();for(var e=0,f;f=d[e];++e)f.Ib||f.lc(b)}finally{a.u.end()}}},ob:function(){return this.sc},
|
39 |
+
Dd:function(a){return this.ob()!==a},Gb:function(){++this.sc},ub:function(b){var c=this,d=a.O(c),e,f,g,h,m;c.gb||(c.gb=c.notifySubscribers,c.notifySubscribers=Z);var k=b(function(){c.Ja=!1;d&&h===c&&(h=c.nc?c.nc():c());var a=f||m&&c.sb(g,h);m=f=e=!1;a&&c.gb(g=h)});c.qc=function(a,b){b&&c.Ja||(m=!b);c.ed=c.U.change.slice(0);c.Ja=e=!0;h=a;k()};c.pc=function(a){e||(g=a,c.gb(a,"beforeChange"))};c.rc=function(){m=!0};c.gd=function(){c.sb(g,c.v(!0))&&(f=!0)}},Wa:function(a){return this.U[a]&&this.U[a].length},
|
40 |
+
Bd:function(b){if(b)return this.U[b]&&this.U[b].length||0;var c=0;a.a.P(this.U,function(a,b){"dirty"!==a&&(c+=b.length)});return c},sb:function(a,c){return!this.equalityComparer||!this.equalityComparer(a,c)},toString:function(){return"[object Object]"},extend:function(b){var c=this;b&&a.a.P(b,function(b,e){var f=a.Ta[b];"function"==typeof f&&(c=f(c,e)||c)});return c}};a.L(D,"init",D.qb);a.L(D,"subscribe",D.subscribe);a.L(D,"extend",D.extend);a.L(D,"getSubscriptionsCount",D.Bd);a.a.Ba&&a.a.setPrototypeOf(D,
|
41 |
+
Function.prototype);a.T.fn=D;a.Qc=function(a){return null!=a&&"function"==typeof a.subscribe&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.T);a.b("isSubscribable",a.Qc);a.S=a.u=function(){function b(a){d.push(e);e=a}function c(){e=d.pop()}var d=[],e,f=0;return{xc:b,end:c,cc:function(b){if(e){if(!a.Qc(b))throw Error("Only subscribable things can act as dependencies");e.od.call(e.pd,b,b.fd||(b.fd=++f))}},G:function(a,d,e){try{return b(),a.apply(d,e||[])}finally{c()}},qa:function(){if(e)return e.o.qa()},
|
42 |
+
Va:function(){if(e)return e.o.Va()},Ya:function(){if(e)return e.Ya},o:function(){if(e)return e.o}}}();a.b("computedContext",a.S);a.b("computedContext.getDependenciesCount",a.S.qa);a.b("computedContext.getDependencies",a.S.Va);a.b("computedContext.isInitial",a.S.Ya);a.b("computedContext.registerDependency",a.S.cc);a.b("ignoreDependencies",a.Yd=a.u.G);var I=a.a.Da("_latestValue");a.ta=function(b){function c(){if(0<arguments.length)return c.sb(c[I],arguments[0])&&(c.ya(),c[I]=arguments[0],c.xa()),this;
|
43 |
+
a.u.cc(c);return c[I]}c[I]=b;a.a.Ba||a.a.extend(c,a.T.fn);a.T.fn.qb(c);a.a.Ab(c,F);a.options.deferUpdates&&a.Ta.deferred(c,!0);return c};var F={equalityComparer:K,v:function(){return this[I]},xa:function(){this.notifySubscribers(this[I],"spectate");this.notifySubscribers(this[I])},ya:function(){this.notifySubscribers(this[I],"beforeChange")}};a.a.Ba&&a.a.setPrototypeOf(F,a.T.fn);var G=a.ta.Ma="__ko_proto__";F[G]=a.ta;a.O=function(b){if((b="function"==typeof b&&b[G])&&b!==F[G]&&b!==a.o.fn[G])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");
|
44 |
+
return!!b};a.Za=function(b){return"function"==typeof b&&(b[G]===F[G]||b[G]===a.o.fn[G]&&b.Nc)};a.b("observable",a.ta);a.b("isObservable",a.O);a.b("isWriteableObservable",a.Za);a.b("isWritableObservable",a.Za);a.b("observable.fn",F);a.L(F,"peek",F.v);a.L(F,"valueHasMutated",F.xa);a.L(F,"valueWillMutate",F.ya);a.Ha=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.ta(b);a.a.Ab(b,
|
45 |
+
a.Ha.fn);return b.extend({trackArrayChanges:!0})};a.Ha.fn={remove:function(b){for(var c=this.v(),d=[],e="function"!=typeof b||a.O(b)?function(a){return a===b}:b,f=0;f<c.length;f++){var g=c[f];if(e(g)){0===d.length&&this.ya();if(c[f]!==g)throw Error("Array modified during remove; cannot remove item");d.push(g);c.splice(f,1);f--}}d.length&&this.xa();return d},removeAll:function(b){if(b===n){var c=this.v(),d=c.slice(0);this.ya();c.splice(0,c.length);this.xa();return d}return b?this.remove(function(c){return 0<=
|
46 |
+
a.a.A(b,c)}):[]},destroy:function(b){var c=this.v(),d="function"!=typeof b||a.O(b)?function(a){return a===b}:b;this.ya();for(var e=c.length-1;0<=e;e--){var f=c[e];d(f)&&(f._destroy=!0)}this.xa()},destroyAll:function(b){return b===n?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.A(b,c)}):[]},indexOf:function(b){var c=this();return a.a.A(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.ya(),this.v()[d]=c,this.xa())},sorted:function(a){var c=this().slice(0);
|
47 |
+
return a?c.sort(a):c.sort()},reversed:function(){return this().slice(0).reverse()}};a.a.Ba&&a.a.setPrototypeOf(a.Ha.fn,a.ta.fn);a.a.D("pop push reverse shift sort splice unshift".split(" "),function(b){a.Ha.fn[b]=function(){var a=this.v();this.ya();this.zc(a,b,arguments);var d=a[b].apply(a,arguments);this.xa();return d===a?this:d}});a.a.D(["slice"],function(b){a.Ha.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.Pc=function(b){return a.O(b)&&"function"==typeof b.remove&&"function"==
|
48 |
+
typeof b.push};a.b("observableArray",a.Ha);a.b("isObservableArray",a.Pc);a.Ta.trackArrayChanges=function(b,c){function d(){function c(){if(m){var d=[].concat(b.v()||[]),e;if(b.Wa("arrayChange")){if(!f||1<m)f=a.a.Pb(k,d,b.Ob);e=f}k=d;f=null;m=0;e&&e.length&&b.notifySubscribers(e,"arrayChange")}}e?c():(e=!0,h=b.subscribe(function(){++m},null,"spectate"),k=[].concat(b.v()||[]),f=null,g=b.subscribe(c))}b.Ob={};c&&"object"==typeof c&&a.a.extend(b.Ob,c);b.Ob.sparse=!0;if(!b.zc){var e=!1,f=null,g,h,m=0,
|
49 |
+
k,l=b.Qa,p=b.hb;b.Qa=function(a){l&&l.call(b,a);"arrayChange"===a&&d()};b.hb=function(a){p&&p.call(b,a);"arrayChange"!==a||b.Wa("arrayChange")||(g&&g.s(),h&&h.s(),h=g=null,e=!1,k=n)};b.zc=function(b,c,d){function l(a,b,c){return k[k.length]={status:a,value:b,index:c}}if(e&&!m){var k=[],p=b.length,g=d.length,h=0;switch(c){case "push":h=p;case "unshift":for(c=0;c<g;c++)l("added",d[c],h+c);break;case "pop":h=p-1;case "shift":p&&l("deleted",b[h],h);break;case "splice":c=Math.min(Math.max(0,0>d[0]?p+d[0]:
|
50 |
+
d[0]),p);for(var p=1===g?p:Math.min(c+(d[1]||0),p),g=c+g-2,h=Math.max(p,g),U=[],L=[],n=2;c<h;++c,++n)c<p&&L.push(l("deleted",b[c],c)),c<g&&U.push(l("added",d[n],c));a.a.Kc(L,U);break;default:return}f=k}}}};var r=a.a.Da("_state");a.o=a.$=function(b,c,d){function e(){if(0<arguments.length){if("function"===typeof f)f.apply(g.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}g.ra||
|
51 |
+
a.u.cc(e);(g.ka||g.J&&e.Xa())&&e.ha();return g.X}"object"===typeof b?d=b:(d=d||{},b&&(d.read=b));if("function"!=typeof d.read)throw Error("Pass a function that returns the value of the ko.computed");var f=d.write,g={X:n,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:d.read,nb:c||d.owner,l:d.disposeWhenNodeIsRemoved||d.l||null,Sa:d.disposeWhen||d.Sa,Rb:null,I:{},V:0,Ic:null};e[r]=g;e.Nc="function"===typeof f;a.a.Ba||a.a.extend(e,a.T.fn);a.T.fn.qb(e);a.a.Ab(e,C);d.pure?(g.wb=!0,g.J=!0,a.a.extend(e,da)):
|
52 |
+
d.deferEvaluation&&a.a.extend(e,ea);a.options.deferUpdates&&a.Ta.deferred(e,!0);g.l&&(g.jc=!0,g.l.nodeType||(g.l=null));g.J||d.deferEvaluation||e.ha();g.l&&e.ja()&&a.a.K.za(g.l,g.Rb=function(){e.s()});return e};var C={equalityComparer:K,qa:function(){return this[r].V},Va:function(){var b=[];a.a.P(this[r].I,function(a,d){b[d.Ka]=d.da});return b},Vb:function(b){if(!this[r].V)return!1;var c=this.Va();return-1!==a.a.A(c,b)?!0:!!a.a.Lb(c,function(a){return a.Vb&&a.Vb(b)})},uc:function(a,c,d){if(this[r].wb&&
|
53 |
+
c===this)throw Error("A 'pure' computed must not be called recursively");this[r].I[a]=d;d.Ka=this[r].V++;d.La=c.ob()},Xa:function(){var a,c,d=this[r].I;for(a in d)if(Object.prototype.hasOwnProperty.call(d,a)&&(c=d[a],this.Ia&&c.da.Ja||c.da.Dd(c.La)))return!0},Jd:function(){this.Ia&&!this[r].rb&&this.Ia(!1)},ja:function(){var a=this[r];return a.ka||0<a.V},Rd:function(){this.Ja?this[r].ka&&(this[r].sa=!0):this.Hc()},$c:function(a){if(a.Hb){var c=a.subscribe(this.Jd,this,"dirty"),d=a.subscribe(this.Rd,
|
54 |
+
this);return{da:a,s:function(){c.s();d.s()}}}return a.subscribe(this.Hc,this)},Hc:function(){var b=this,c=b.throttleEvaluation;c&&0<=c?(clearTimeout(this[r].Ic),this[r].Ic=a.a.setTimeout(function(){b.ha(!0)},c)):b.Ia?b.Ia(!0):b.ha(!0)},ha:function(b){var c=this[r],d=c.Sa,e=!1;if(!c.rb&&!c.ra){if(c.l&&!a.a.Sb(c.l)||d&&d()){if(!c.jc){this.s();return}}else c.jc=!1;c.rb=!0;try{e=this.zd(b)}finally{c.rb=!1}return e}},zd:function(b){var c=this[r],d=!1,e=c.wb?n:!c.V,d={qd:this,mb:c.I,Qb:c.V};a.u.xc({pd:d,
|
55 |
+
od:ba,o:this,Ya:e});c.I={};c.V=0;var f=this.yd(c,d);c.V?d=this.sb(c.X,f):(this.s(),d=!0);d&&(c.J?this.Gb():this.notifySubscribers(c.X,"beforeChange"),c.X=f,this.notifySubscribers(c.X,"spectate"),!c.J&&b&&this.notifySubscribers(c.X),this.rc&&this.rc());e&&this.notifySubscribers(c.X,"awake");return d},yd:function(b,c){try{var d=b.Wc;return b.nb?d.call(b.nb):d()}finally{a.u.end(),c.Qb&&!b.J&&a.a.P(c.mb,aa),b.sa=b.ka=!1}},v:function(a){var c=this[r];(c.ka&&(a||!c.V)||c.J&&this.Xa())&&this.ha();return c.X},
|
56 |
+
ub:function(b){a.T.fn.ub.call(this,b);this.nc=function(){this[r].J||(this[r].sa?this.ha():this[r].ka=!1);return this[r].X};this.Ia=function(a){this.pc(this[r].X);this[r].ka=!0;a&&(this[r].sa=!0);this.qc(this,!a)}},s:function(){var b=this[r];!b.J&&b.I&&a.a.P(b.I,function(a,b){b.s&&b.s()});b.l&&b.Rb&&a.a.K.yb(b.l,b.Rb);b.I=n;b.V=0;b.ra=!0;b.sa=!1;b.ka=!1;b.J=!1;b.l=n;b.Sa=n;b.Wc=n;this.Nc||(b.nb=n)}},da={Qa:function(b){var c=this,d=c[r];if(!d.ra&&d.J&&"change"==b){d.J=!1;if(d.sa||c.Xa())d.I=null,d.V=
|
57 |
+
0,c.ha()&&c.Gb();else{var e=[];a.a.P(d.I,function(a,b){e[b.Ka]=a});a.a.D(e,function(a,b){var e=d.I[a],m=c.$c(e.da);m.Ka=b;m.La=e.La;d.I[a]=m});c.Xa()&&c.ha()&&c.Gb()}d.ra||c.notifySubscribers(d.X,"awake")}},hb:function(b){var c=this[r];c.ra||"change"!=b||this.Wa("change")||(a.a.P(c.I,function(a,b){b.s&&(c.I[a]={da:b.da,Ka:b.Ka,La:b.La},b.s())}),c.J=!0,this.notifySubscribers(n,"asleep"))},ob:function(){var b=this[r];b.J&&(b.sa||this.Xa())&&this.ha();return a.T.fn.ob.call(this)}},ea={Qa:function(a){"change"!=
|
58 |
+
a&&"beforeChange"!=a||this.v()}};a.a.Ba&&a.a.setPrototypeOf(C,a.T.fn);var N=a.ta.Ma;C[N]=a.o;a.Oc=function(a){return"function"==typeof a&&a[N]===C[N]};a.Fd=function(b){return a.Oc(b)&&b[r]&&b[r].wb};a.b("computed",a.o);a.b("dependentObservable",a.o);a.b("isComputed",a.Oc);a.b("isPureComputed",a.Fd);a.b("computed.fn",C);a.L(C,"peek",C.v);a.L(C,"dispose",C.s);a.L(C,"isActive",C.ja);a.L(C,"getDependenciesCount",C.qa);a.L(C,"getDependencies",C.Va);a.xb=function(b,c){if("function"===typeof b)return a.o(b,
|
59 |
+
c,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.o(b,c)};a.b("pureComputed",a.xb);(function(){function b(a,f,g){g=g||new d;a=f(a);if("object"!=typeof a||null===a||a===n||a instanceof RegExp||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var h=a instanceof Array?[]:{};g.save(a,h);c(a,function(c){var d=f(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":h[c]=d;break;case "object":case "undefined":var l=g.get(d);h[c]=l!==
|
60 |
+
n?l:b(d,f,g)}});return h}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=[];this.values=[]}a.ad=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.O(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.ad(b);return a.a.hc(b,c,d)};d.prototype={constructor:d,save:function(b,c){var d=a.a.A(this.keys,
|
61 |
+
b);0<=d?this.values[d]=c:(this.keys.push(b),this.values.push(c))},get:function(b){b=a.a.A(this.keys,b);return 0<=b?this.values[b]:n}}})();a.b("toJS",a.ad);a.b("toJSON",a.toJSON);a.Wd=function(b,c,d){function e(c){var e=a.xb(b,d).extend({ma:"always"}),h=e.subscribe(function(a){a&&(h.s(),c(a))});e.notifySubscribers(e.v());return h}return"function"!==typeof Promise||c?e(c.bind(d)):new Promise(e)};a.b("when",a.Wd);(function(){a.w={M:function(b){switch(a.a.R(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?
|
62 |
+
a.a.g.get(b,a.c.options.$b):7>=a.a.W?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.w.M(b.options[b.selectedIndex]):n;default:return b.value}},cb:function(b,c,d){switch(a.a.R(b)){case "option":"string"===typeof c?(a.a.g.set(b,a.c.options.$b,n),"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.g.set(b,a.c.options.$b,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===
|
63 |
+
typeof c?c:"");break;case "select":if(""===c||null===c)c=n;for(var e=-1,f=0,g=b.options.length,h;f<g;++f)if(h=a.w.M(b.options[f]),h==c||""===h&&c===n){e=f;break}if(d||0<=e||c===n&&1<b.size)b.selectedIndex=e,6===a.a.W&&a.a.setTimeout(function(){b.selectedIndex=e},0);break;default:if(null===c||c===n)c="";b.value=c}}}})();a.b("selectExtensions",a.w);a.b("selectExtensions.readValue",a.w.M);a.b("selectExtensions.writeValue",a.w.cb);a.m=function(){function b(b){b=a.a.Db(b);123===b.charCodeAt(0)&&(b=b.slice(1,
|
64 |
+
-1));b+="\n,";var c=[],d=b.match(e),p,q=[],h=0;if(1<d.length){for(var x=0,B;B=d[x];++x){var u=B.charCodeAt(0);if(44===u){if(0>=h){c.push(p&&q.length?{key:p,value:q.join("")}:{unknown:p||q.join("")});p=h=0;q=[];continue}}else if(58===u){if(!h&&!p&&1===q.length){p=q.pop();continue}}else if(47===u&&1<B.length&&(47===B.charCodeAt(1)||42===B.charCodeAt(1)))continue;else 47===u&&x&&1<B.length?(u=d[x-1].match(f))&&!g[u[0]]&&(b=b.substr(b.indexOf(B)+1),d=b.match(e),x=-1,B="/"):40===u||123===u||91===u?++h:
|
65 |
+
41===u||125===u||93===u?--h:p||q.length||34!==u&&39!==u||(B=B.slice(1,-1));q.push(B)}if(0<h)throw Error("Unbalanced parentheses, braces, or brackets");}return c}var c=["true","false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]","g"),f=/[\])"'A-Za-z0-9_$]+$/,g={"in":1,"return":1,"typeof":1},
|
66 |
+
h={};return{Ra:[],wa:h,ac:b,vb:function(e,f){function l(b,e){var f;if(!x){var k=a.getBindingHandler(b);if(k&&k.preprocess&&!(e=k.preprocess(e,b,l)))return;if(k=h[b])f=e,0<=a.a.A(c,f)?f=!1:(k=f.match(d),f=null===k?!1:k[1]?"Object("+k[1]+")"+k[2]:f),k=f;k&&q.push("'"+("string"==typeof h[b]?h[b]:b)+"':function(_z){"+f+"=_z}")}g&&(e="function(){return "+e+" }");p.push("'"+b+"':"+e)}f=f||{};var p=[],q=[],g=f.valueAccessors,x=f.bindingParams,B="string"===typeof e?b(e):e;a.a.D(B,function(a){l(a.key||a.unknown,
|
67 |
+
a.value)});q.length&&l("_ko_property_writers","{"+q.join(",")+" }");return p.join(",")},Id:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},eb:function(b,c,d,e,f){if(b&&a.O(b))!a.Za(b)||f&&b.v()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();a.b("expressionRewriting",a.m);a.b("expressionRewriting.bindingRewriteValidators",a.m.Ra);a.b("expressionRewriting.parseObjectLiteral",a.m.ac);a.b("expressionRewriting.preProcessBindings",a.m.vb);a.b("expressionRewriting._twoWayBindings",
|
68 |
+
a.m.wa);a.b("jsonExpressionRewriting",a.m);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.m.vb);(function(){function b(a){return 8==a.nodeType&&g.test(f?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&h.test(f?a.text:a.nodeValue)}function d(d,e){for(var f=d,h=1,g=[];f=f.nextSibling;){if(c(f)&&(a.a.g.set(f,k,!0),h--,0===h))return g;g.push(f);b(f)&&h++}if(!e)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}function e(a,b){var c=d(a,b);return c?
|
69 |
+
0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var f=w&&"\x3c!--test--\x3e"===w.createComment("test").text,g=f?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=f?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0},k="__ko_matchedEndComment__";a.h={ea:{},childNodes:function(a){return b(a)?d(a):a.childNodes},Ea:function(c){if(b(c)){c=a.h.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.Tb(c)},va:function(c,d){if(b(c)){a.h.Ea(c);for(var e=
|
70 |
+
c.nextSibling,f=0,k=d.length;f<k;f++)e.parentNode.insertBefore(d[f],e)}else a.a.va(c,d)},Vc:function(a,c){var d;b(a)?(d=a.nextSibling,a=a.parentNode):d=a.firstChild;d?c!==d&&a.insertBefore(c,d):a.appendChild(c)},Wb:function(c,d,e){e?(e=e.nextSibling,b(c)&&(c=c.parentNode),e?d!==e&&c.insertBefore(d,e):c.appendChild(d)):a.h.Vc(c,d)},firstChild:function(a){if(b(a))return!a.nextSibling||c(a.nextSibling)?null:a.nextSibling;if(a.firstChild&&c(a.firstChild))throw Error("Found invalid end comment, as the first child of "+
|
71 |
+
a);return a.firstChild},nextSibling:function(d){b(d)&&(d=e(d));if(d.nextSibling&&c(d.nextSibling)){var f=d.nextSibling;if(c(f)&&!a.a.g.get(f,k))throw Error("Found end comment without a matching opening comment, as child of "+d);return null}return d.nextSibling},Cd:b,Vd:function(a){return(a=(f?a.text:a.nodeValue).match(g))?a[1]:null},Sc:function(d){if(m[a.a.R(d)]){var f=d.firstChild;if(f){do if(1===f.nodeType){var k;k=f.firstChild;var h=null;if(k){do if(h)h.push(k);else if(b(k)){var g=e(k,!0);g?k=
|
72 |
+
g:h=[k]}else c(k)&&(h=[k]);while(k=k.nextSibling)}if(k=h)for(h=f.nextSibling,g=0;g<k.length;g++)h?d.insertBefore(k[g],h):d.appendChild(k[g])}while(f=f.nextSibling)}}}}})();a.b("virtualElements",a.h);a.b("virtualElements.allowedBindings",a.h.ea);a.b("virtualElements.emptyNode",a.h.Ea);a.b("virtualElements.insertAfter",a.h.Wb);a.b("virtualElements.prepend",a.h.Vc);a.b("virtualElements.setDomNodeChildren",a.h.va);(function(){a.ga=function(){this.nd={}};a.a.extend(a.ga.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=
|
73 |
+
b.getAttribute("data-bind")||a.j.getComponentNameForNode(b);case 8:return a.h.Cd(b);default:return!1}},getBindings:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b):null;return a.j.tc(d,b,c,!1)},getBindingAccessors:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b,{valueAccessors:!0}):null;return a.j.tc(d,b,c,!0)},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.h.Vd(b);default:return null}},
|
74 |
+
parseBindingsString:function(b,c,d,e){try{var f=this.nd,g=b+(e&&e.valueAccessors||""),h;if(!(h=f[g])){var m,k="with($context){with($data||{}){return{"+a.m.vb(b,e)+"}}}";m=new Function("$context","$element",k);h=f[g]=m}return h(c,d)}catch(l){throw l.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+l.message,l;}}});a.ga.instance=new a.ga})();a.b("bindingProvider",a.ga);(function(){function b(b){var c=(b=a.a.g.get(b,z))&&b.N;c&&(b.N=null,c.Tc())}function c(c,d,e){this.node=c;this.yc=
|
75 |
+
d;this.kb=[];this.H=!1;d.N||a.a.K.za(c,b);e&&e.N&&(e.N.kb.push(c),this.Kb=e)}function d(a){return function(){return a}}function e(a){return a()}function f(b){return a.a.Ga(a.u.G(b),function(a,c){return function(){return b()[c]}})}function g(b,c,e){return"function"===typeof b?f(b.bind(null,c,e)):a.a.Ga(b,d)}function h(a,b){return f(this.getBindings.bind(this,a,b))}function m(b,c){var d=a.h.firstChild(c);if(d){var e,f=a.ga.instance,l=f.preprocessNode;if(l){for(;e=d;)d=a.h.nextSibling(e),l.call(f,e);
|
76 |
+
d=a.h.firstChild(c)}for(;e=d;)d=a.h.nextSibling(e),k(b,e)}a.i.ma(c,a.i.H)}function k(b,c){var d=b,e=1===c.nodeType;e&&a.h.Sc(c);if(e||a.ga.instance.nodeHasBindings(c))d=p(c,null,b).bindingContextForDescendants;d&&!u[a.a.R(c)]&&m(d,c)}function l(b){var c=[],d={},e=[];a.a.P(b,function ca(f){if(!d[f]){var k=a.getBindingHandler(f);k&&(k.after&&(e.push(f),a.a.D(k.after,function(c){if(b[c]){if(-1!==a.a.A(e,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+e.join(", "));
|
77 |
+
ca(c)}}),e.length--),c.push({key:f,Mc:k}));d[f]=!0}});return c}function p(b,c,d){var f=a.a.g.Ub(b,z,{}),k=f.hd;if(!c){if(k)throw Error("You cannot apply bindings multiple times to the same element.");f.hd=!0}k||(f.context=d);f.Zb||(f.Zb={});var g;if(c&&"function"!==typeof c)g=c;else{var p=a.ga.instance,q=p.getBindingAccessors||h,m=a.$(function(){if(g=c?c(d,b):q.call(p,b,d)){if(d[t])d[t]();if(d[B])d[B]()}return g},null,{l:b});g&&m.ja()||(m=null)}var x=d,u;if(g){var J=function(){return a.a.Ga(m?m():
|
78 |
+
g,e)},r=m?function(a){return function(){return e(m()[a])}}:function(a){return g[a]};J.get=function(a){return g[a]&&e(r(a))};J.has=function(a){return a in g};a.i.H in g&&a.i.subscribe(b,a.i.H,function(){var c=(0,g[a.i.H])();if(c){var d=a.h.childNodes(b);d.length&&c(d,a.Ec(d[0]))}});a.i.pa in g&&(x=a.i.Cb(b,d),a.i.subscribe(b,a.i.pa,function(){var c=(0,g[a.i.pa])();c&&a.h.firstChild(b)&&c(b)}));f=l(g);a.a.D(f,function(c){var d=c.Mc.init,e=c.Mc.update,f=c.key;if(8===b.nodeType&&!a.h.ea[f])throw Error("The binding '"+
|
79 |
+
f+"' cannot be used with virtual elements");try{"function"==typeof d&&a.u.G(function(){var a=d(b,r(f),J,x.$data,x);if(a&&a.controlsDescendantBindings){if(u!==n)throw Error("Multiple bindings ("+u+" and "+f+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=f}}),"function"==typeof e&&a.$(function(){e(b,r(f),J,x.$data,x)},null,{l:b})}catch(k){throw k.message='Unable to process binding "'+f+": "+g[f]+'"\nMessage: '+k.message,
|
80 |
+
k;}})}f=u===n;return{shouldBindDescendants:f,bindingContextForDescendants:f&&x}}function q(b,c){return b&&b instanceof a.fa?b:new a.fa(b,n,n,c)}var t=a.a.Da("_subscribable"),x=a.a.Da("_ancestorBindingInfo"),B=a.a.Da("_dataDependency");a.c={};var u={script:!0,textarea:!0,template:!0};a.getBindingHandler=function(b){return a.c[b]};var J={};a.fa=function(b,c,d,e,f){function k(){var b=p?h():h,f=a.a.f(b);c?(a.a.extend(l,c),x in c&&(l[x]=c[x])):(l.$parents=[],l.$root=f,l.ko=a);l[t]=q;g?f=l.$data:(l.$rawData=
|
81 |
+
b,l.$data=f);d&&(l[d]=f);e&&e(l,c,f);if(c&&c[t]&&!a.S.o().Vb(c[t]))c[t]();m&&(l[B]=m);return l.$data}var l=this,g=b===J,h=g?n:b,p="function"==typeof h&&!a.O(h),q,m=f&&f.dataDependency;f&&f.exportDependencies?k():(q=a.xb(k),q.v(),q.ja()?q.equalityComparer=null:l[t]=n)};a.fa.prototype.createChildContext=function(b,c,d,e){!e&&c&&"object"==typeof c&&(e=c,c=e.as,d=e.extend);if(c&&e&&e.noChildContext){var f="function"==typeof b&&!a.O(b);return new a.fa(J,this,null,function(a){d&&d(a);a[c]=f?b():b},e)}return new a.fa(b,
|
82 |
+
this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)},e)};a.fa.prototype.extend=function(b,c){return new a.fa(J,this,null,function(c){a.a.extend(c,"function"==typeof b?b(c):b)},c)};var z=a.a.g.Z();c.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)};c.prototype.sd=function(b){a.a.Pa(this.kb,b);!this.kb.length&&this.H&&this.Cc()};c.prototype.Cc=function(){this.H=!0;this.yc.N&&!this.kb.length&&(this.yc.N=
|
83 |
+
null,a.a.K.yb(this.node,b),a.i.ma(this.node,a.i.pa),this.Tc())};a.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(b,c,d,e,f){var k=a.a.g.Ub(b,z,{});k.Fa||(k.Fa=new a.T);f&&f.notifyImmediately&&k.Zb[c]&&a.u.G(d,e,[b]);return k.Fa.subscribe(d,e,c)},ma:function(b,c){var d=a.a.g.get(b,z);if(d&&(d.Zb[c]=!0,d.Fa&&d.Fa.notifySubscribers(b,c),c==a.i.H))if(d.N)d.N.Cc();else if(d.N===n&&d.Fa&&d.Fa.Wa(a.i.pa))throw Error("descendantsComplete event not supported for bindings on this node");
|
84 |
+
},Cb:function(b,d){var e=a.a.g.Ub(b,z,{});e.N||(e.N=new c(b,e,d[x]));return d[x]==e?d:d.extend(function(a){a[x]=e})}};a.Td=function(b){return(b=a.a.g.get(b,z))&&b.context};a.ib=function(b,c,d){1===b.nodeType&&a.h.Sc(b);return p(b,c,q(d))};a.ld=function(b,c,d){d=q(d);return a.ib(b,g(c,d,b),d)};a.Oa=function(a,b){1!==b.nodeType&&8!==b.nodeType||m(q(a),b)};a.vc=function(a,b,c){!v&&A.jQuery&&(v=A.jQuery);if(2>arguments.length){if(b=w.body,!b)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");
|
85 |
+
}else if(!b||1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");k(q(a,c),b)};a.Dc=function(b){return!b||1!==b.nodeType&&8!==b.nodeType?n:a.Td(b)};a.Ec=function(b){return(b=a.Dc(b))?b.$data:n};a.b("bindingHandlers",a.c);a.b("bindingEvent",a.i);a.b("bindingEvent.subscribe",a.i.subscribe);a.b("bindingEvent.startPossiblyAsyncContentBinding",a.i.Cb);a.b("applyBindings",a.vc);a.b("applyBindingsToDescendants",a.Oa);
|
86 |
+
a.b("applyBindingAccessorsToNode",a.ib);a.b("applyBindingsToNode",a.ld);a.b("contextFor",a.Dc);a.b("dataFor",a.Ec)})();(function(b){function c(c,e){var k=Object.prototype.hasOwnProperty.call(f,c)?f[c]:b,l;k?k.subscribe(e):(k=f[c]=new a.T,k.subscribe(e),d(c,function(b,d){var e=!(!d||!d.synchronous);g[c]={definition:b,Gd:e};delete f[c];l||e?k.notifySubscribers(b):a.na.zb(function(){k.notifySubscribers(b)})}),l=!0)}function d(a,b){e("getConfig",[a],function(c){c?e("loadComponent",[a,c],function(a){b(a,
|
87 |
+
c)}):b(null,null)})}function e(c,d,f,l){l||(l=a.j.loaders.slice(0));var g=l.shift();if(g){var q=g[c];if(q){var t=!1;if(q.apply(g,d.concat(function(a){t?f(null):null!==a?f(a):e(c,d,f,l)}))!==b&&(t=!0,!g.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else e(c,d,f,l)}else f(null)}var f={},g={};a.j={get:function(d,e){var f=Object.prototype.hasOwnProperty.call(g,d)?g[d]:b;f?f.Gd?a.u.G(function(){e(f.definition)}):
|
88 |
+
a.na.zb(function(){e(f.definition)}):c(d,e)},Bc:function(a){delete g[a]},oc:e};a.j.loaders=[];a.b("components",a.j);a.b("components.get",a.j.get);a.b("components.clearCachedDefinition",a.j.Bc)})();(function(){function b(b,c,d,e){function g(){0===--B&&e(h)}var h={},B=2,u=d.template;d=d.viewModel;u?f(c,u,function(c){a.j.oc("loadTemplate",[b,c],function(a){h.template=a;g()})}):g();d?f(c,d,function(c){a.j.oc("loadViewModel",[b,c],function(a){h[m]=a;g()})}):g()}function c(a,b,d){if("function"===typeof b)d(function(a){return new b(a)});
|
89 |
+
else if("function"===typeof b[m])d(b[m]);else if("instance"in b){var e=b.instance;d(function(){return e})}else"viewModel"in b?c(a,b.viewModel,d):a("Unknown viewModel value: "+b)}function d(b){switch(a.a.R(b)){case "script":return a.a.ua(b.text);case "textarea":return a.a.ua(b.value);case "template":if(e(b.content))return a.a.Ca(b.content.childNodes)}return a.a.Ca(b.childNodes)}function e(a){return A.DocumentFragment?a instanceof DocumentFragment:a&&11===a.nodeType}function f(a,b,c){"string"===typeof b.require?
|
90 |
+
T||A.require?(T||A.require)([b.require],function(a){a&&"object"===typeof a&&a.Xd&&a["default"]&&(a=a["default"]);c(a)}):a("Uses require, but no AMD loader is present"):c(b)}function g(a){return function(b){throw Error("Component '"+a+"': "+b);}}var h={};a.j.register=function(b,c){if(!c)throw Error("Invalid configuration for "+b);if(a.j.tb(b))throw Error("Component "+b+" is already registered");h[b]=c};a.j.tb=function(a){return Object.prototype.hasOwnProperty.call(h,a)};a.j.unregister=function(b){delete h[b];
|
91 |
+
a.j.Bc(b)};a.j.Fc={getConfig:function(b,c){c(a.j.tb(b)?h[b]:null)},loadComponent:function(a,c,d){var e=g(a);f(e,c,function(c){b(a,e,c,d)})},loadTemplate:function(b,c,f){b=g(b);if("string"===typeof c)f(a.a.ua(c));else if(c instanceof Array)f(c);else if(e(c))f(a.a.la(c.childNodes));else if(c.element)if(c=c.element,A.HTMLElement?c instanceof HTMLElement:c&&c.tagName&&1===c.nodeType)f(d(c));else if("string"===typeof c){var h=w.getElementById(c);h?f(d(h)):b("Cannot find element with ID "+c)}else b("Unknown element type: "+
|
92 |
+
c);else b("Unknown template value: "+c)},loadViewModel:function(a,b,d){c(g(a),b,d)}};var m="createViewModel";a.b("components.register",a.j.register);a.b("components.isRegistered",a.j.tb);a.b("components.unregister",a.j.unregister);a.b("components.defaultLoader",a.j.Fc);a.j.loaders.push(a.j.Fc);a.j.dd=h})();(function(){function b(b,e){var f=b.getAttribute("params");if(f){var f=c.parseBindingsString(f,e,b,{valueAccessors:!0,bindingParams:!0}),f=a.a.Ga(f,function(c){return a.o(c,null,{l:b})}),g=a.a.Ga(f,
|
93 |
+
function(c){var e=c.v();return c.ja()?a.o({read:function(){return a.a.f(c())},write:a.Za(e)&&function(a){c()(a)},l:b}):e});Object.prototype.hasOwnProperty.call(g,"$raw")||(g.$raw=f);return g}return{$raw:{}}}a.j.getComponentNameForNode=function(b){var c=a.a.R(b);if(a.j.tb(c)&&(-1!=c.indexOf("-")||"[object HTMLUnknownElement]"==""+b||8>=a.a.W&&b.tagName===c))return c};a.j.tc=function(c,e,f,g){if(1===e.nodeType){var h=a.j.getComponentNameForNode(e);if(h){c=c||{};if(c.component)throw Error('Cannot use the "component" binding on a custom element matching a component');
|
94 |
+
var m={name:h,params:b(e,f)};c.component=g?function(){return m}:m}}return c};var c=new a.ga;9>a.a.W&&(a.j.register=function(a){return function(b){return a.apply(this,arguments)}}(a.j.register),w.createDocumentFragment=function(b){return function(){var c=b(),f=a.j.dd,g;for(g in f);return c}}(w.createDocumentFragment))})();(function(){function b(b,c,d){c=c.template;if(!c)throw Error("Component '"+b+"' has no template");b=a.a.Ca(c);a.h.va(d,b)}function c(a,b,c){var d=a.createViewModel;return d?d.call(a,
|
95 |
+
b,c):b}var d=0;a.c.component={init:function(e,f,g,h,m){function k(){var a=l&&l.dispose;"function"===typeof a&&a.call(l);q&&q.s();p=l=q=null}var l,p,q,t=a.a.la(a.h.childNodes(e));a.h.Ea(e);a.a.K.za(e,k);a.o(function(){var g=a.a.f(f()),h,u;"string"===typeof g?h=g:(h=a.a.f(g.name),u=a.a.f(g.params));if(!h)throw Error("No component name specified");var n=a.i.Cb(e,m),z=p=++d;a.j.get(h,function(d){if(p===z){k();if(!d)throw Error("Unknown component '"+h+"'");b(h,d,e);var f=c(d,u,{element:e,templateNodes:t});
|
96 |
+
d=n.createChildContext(f,{extend:function(a){a.$component=f;a.$componentTemplateNodes=t}});f&&f.koDescendantsComplete&&(q=a.i.subscribe(e,a.i.pa,f.koDescendantsComplete,f));l=f;a.Oa(d,e)}})},null,{l:e});return{controlsDescendantBindings:!0}}};a.h.ea.component=!0})();var V={"class":"className","for":"htmlFor"};a.c.attr={update:function(b,c){var d=a.a.f(c())||{};a.a.P(d,function(c,d){d=a.a.f(d);var g=c.indexOf(":"),g="lookupNamespaceURI"in b&&0<g&&b.lookupNamespaceURI(c.substr(0,g)),h=!1===d||null===
|
97 |
+
d||d===n;h?g?b.removeAttributeNS(g,c):b.removeAttribute(c):d=d.toString();8>=a.a.W&&c in V?(c=V[c],h?b.removeAttribute(c):b[c]=d):h||(g?b.setAttributeNS(g,c,d):b.setAttribute(c,d));"name"===c&&a.a.Yc(b,h?"":d)})}};(function(){a.c.checked={after:["value","attr"],init:function(b,c,d){function e(){var e=b.checked,f=g();if(!a.S.Ya()&&(e||!m&&!a.S.qa())){var k=a.u.G(c);if(l){var q=p?k.v():k,z=t;t=f;z!==f?e&&(a.a.Na(q,f,!0),a.a.Na(q,z,!1)):a.a.Na(q,f,e);p&&a.Za(k)&&k(q)}else h&&(f===n?f=e:e||(f=n)),a.m.eb(k,
|
98 |
+
d,"checked",f,!0)}}function f(){var d=a.a.f(c()),e=g();l?(b.checked=0<=a.a.A(d,e),t=e):b.checked=h&&e===n?!!d:g()===d}var g=a.xb(function(){if(d.has("checkedValue"))return a.a.f(d.get("checkedValue"));if(q)return d.has("value")?a.a.f(d.get("value")):b.value}),h="checkbox"==b.type,m="radio"==b.type;if(h||m){var k=c(),l=h&&a.a.f(k)instanceof Array,p=!(l&&k.push&&k.splice),q=m||l,t=l?g():n;m&&!b.name&&a.c.uniqueName.init(b,function(){return!0});a.o(e,null,{l:b});a.a.B(b,"click",e);a.o(f,null,{l:b});
|
99 |
+
k=n}}};a.m.wa.checked=!0;a.c.checkedValue={update:function(b,c){b.value=a.a.f(c())}}})();a.c["class"]={update:function(b,c){var d=a.a.Db(a.a.f(c()));a.a.Eb(b,b.__ko__cssValue,!1);b.__ko__cssValue=d;a.a.Eb(b,d,!0)}};a.c.css={update:function(b,c){var d=a.a.f(c());null!==d&&"object"==typeof d?a.a.P(d,function(c,d){d=a.a.f(d);a.a.Eb(b,c,d)}):a.c["class"].update(b,c)}};a.c.enable={update:function(b,c){var d=a.a.f(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}};a.c.disable=
|
100 |
+
{update:function(b,c){a.c.enable.update(b,function(){return!a.a.f(c())})}};a.c.event={init:function(b,c,d,e,f){var g=c()||{};a.a.P(g,function(g){"string"==typeof g&&a.a.B(b,g,function(b){var k,l=c()[g];if(l){try{var p=a.a.la(arguments);e=f.$data;p.unshift(e);k=l.apply(e,p)}finally{!0!==k&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(g+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.c.foreach={Rc:function(b){return function(){var c=b(),d=a.a.bc(c);
|
101 |
+
if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.ba.Ma};a.a.f(c);return{foreach:d.data,as:d.as,noChildContext:d.noChildContext,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.ba.Ma}}},init:function(b,c){return a.c.template.init(b,a.c.foreach.Rc(c))},update:function(b,c,d,e,f){return a.c.template.update(b,a.c.foreach.Rc(c),d,e,f)}};a.m.Ra.foreach=!1;a.h.ea.foreach=
|
102 |
+
!0;a.c.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(l){g=f.body}e=g===b}f=c();a.m.eb(f,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),g=e.bind(null,!1);a.a.B(b,"focus",f);a.a.B(b,"focusin",f);a.a.B(b,"blur",g);a.a.B(b,"focusout",g);b.__ko_hasfocusLastValue=!1},update:function(b,c){var d=!!a.a.f(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===
|
103 |
+
d||(d?b.focus():b.blur(),!d&&b.__ko_hasfocusLastValue&&b.ownerDocument.body.focus(),a.u.G(a.a.Fb,null,[b,d?"focusin":"focusout"]))}};a.m.wa.hasfocus=!0;a.c.hasFocus=a.c.hasfocus;a.m.wa.hasFocus="hasfocus";a.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.fc(b,c())}};(function(){function b(b,d,e){a.c[b]={init:function(b,c,h,m,k){var l,p,q={},t,x,n;if(d){m=h.get("as");var u=h.get("noChildContext");n=!(m&&u);q={as:m,noChildContext:u,exportDependencies:n}}x=(t=
|
104 |
+
"render"==h.get("completeOn"))||h.has(a.i.pa);a.o(function(){var h=a.a.f(c()),m=!e!==!h,u=!p,r;if(n||m!==l){x&&(k=a.i.Cb(b,k));if(m){if(!d||n)q.dataDependency=a.S.o();r=d?k.createChildContext("function"==typeof h?h:c,q):a.S.qa()?k.extend(null,q):k}u&&a.S.qa()&&(p=a.a.Ca(a.h.childNodes(b),!0));m?(u||a.h.va(b,a.a.Ca(p)),a.Oa(r,b)):(a.h.Ea(b),t||a.i.ma(b,a.i.H));l=m}},null,{l:b});return{controlsDescendantBindings:!0}}};a.m.Ra[b]=!1;a.h.ea[b]=!0}b("if");b("ifnot",!1,!0);b("with",!0)})();a.c.let={init:function(b,
|
105 |
+
c,d,e,f){c=f.extend(c);a.Oa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.let=!0;var Q={};a.c.options={init:function(b){if("select"!==a.a.R(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.jb(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function g(c,d){if(x&&l)a.i.ma(b,a.i.H);else if(t.length){var e=
|
106 |
+
0<=a.a.A(t,a.w.M(d[0]));a.a.Zc(d[0],e);x&&!e&&a.u.G(a.a.Fb,null,[b,"change"])}}var h=b.multiple,m=0!=b.length&&h?b.scrollTop:null,k=a.a.f(c()),l=d.get("valueAllowUnset")&&d.has("value"),p=d.get("optionsIncludeDestroyed");c={};var q,t=[];l||(h?t=a.a.Mb(e(),a.w.M):0<=b.selectedIndex&&t.push(a.w.M(b.options[b.selectedIndex])));k&&("undefined"==typeof k.length&&(k=[k]),q=a.a.jb(k,function(b){return p||b===n||null===b||!a.a.f(b._destroy)}),d.has("optionsCaption")&&(k=a.a.f(d.get("optionsCaption")),null!==
|
107 |
+
k&&k!==n&&q.unshift(Q)));var x=!1;c.beforeRemove=function(a){b.removeChild(a)};k=g;d.has("optionsAfterRender")&&"function"==typeof d.get("optionsAfterRender")&&(k=function(b,c){g(0,c);a.u.G(d.get("optionsAfterRender"),null,[c[0],b!==Q?b:n])});a.a.ec(b,q,function(c,e,g){g.length&&(t=!l&&g[0].selected?[a.w.M(g[0])]:[],x=!0);e=b.ownerDocument.createElement("option");c===Q?(a.a.Bb(e,d.get("optionsCaption")),a.w.cb(e,n)):(g=f(c,d.get("optionsValue"),c),a.w.cb(e,a.a.f(g)),c=f(c,d.get("optionsText"),g),
|
108 |
+
a.a.Bb(e,c));return[e]},c,k);if(!l){var B;h?B=t.length&&e().length<t.length:B=t.length&&0<=b.selectedIndex?a.w.M(b.options[b.selectedIndex])!==t[0]:t.length||0<=b.selectedIndex;B&&a.u.G(a.a.Fb,null,[b,"change"])}(l||a.S.Ya())&&a.i.ma(b,a.i.H);a.a.wd(b);m&&20<Math.abs(m-b.scrollTop)&&(b.scrollTop=m)}};a.c.options.$b=a.a.g.Z();a.c.selectedOptions={init:function(b,c,d){function e(){var e=c(),f=[];a.a.D(b.getElementsByTagName("option"),function(b){b.selected&&f.push(a.w.M(b))});a.m.eb(e,d,"selectedOptions",
|
109 |
+
f)}function f(){var d=a.a.f(c()),e=b.scrollTop;d&&"number"==typeof d.length&&a.a.D(b.getElementsByTagName("option"),function(b){var c=0<=a.a.A(d,a.w.M(b));b.selected!=c&&a.a.Zc(b,c)});b.scrollTop=e}if("select"!=a.a.R(b))throw Error("selectedOptions binding applies only to SELECT elements");var g;a.i.subscribe(b,a.i.H,function(){g?e():(a.a.B(b,"change",e),g=a.o(f,null,{l:b}))},null,{notifyImmediately:!0})},update:function(){}};a.m.wa.selectedOptions=!0;a.c.style={update:function(b,c){var d=a.a.f(c()||
|
110 |
+
{});a.a.P(d,function(c,d){d=a.a.f(d);if(null===d||d===n||!1===d)d="";if(v)v(b).css(c,d);else if(/^--/.test(c))b.style.setProperty(c,d);else{c=c.replace(/-(\w)/g,function(a,b){return b.toUpperCase()});var g=b.style[c];b.style[c]=d;d===g||b.style[c]!=g||isNaN(d)||(b.style[c]=d+"px")}})}};a.c.submit={init:function(b,c,d,e,f){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");a.a.B(b,"submit",function(a){var d,e=c();try{d=e.call(f.$data,b)}finally{!0!==d&&(a.preventDefault?
|
111 |
+
a.preventDefault():a.returnValue=!1)}})}};a.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Bb(b,c())}};a.h.ea.text=!0;(function(){if(A&&A.navigator){var b=function(a){if(a)return parseFloat(a[1])},c=A.navigator.userAgent,d,e,f,g,h;(d=A.opera&&A.opera.version&&parseInt(A.opera.version()))||(h=b(c.match(/Edge\/([^ ]+)$/)))||b(c.match(/Chrome\/([^ ]+)/))||(e=b(c.match(/Version\/([^ ]+) Safari/)))||(f=b(c.match(/Firefox\/([^ ]+)/)))||(g=a.a.W||b(c.match(/MSIE ([^ ]+)/)))||
|
112 |
+
(g=b(c.match(/rv:([^ )]+)/)))}if(8<=g&&10>g)var m=a.a.g.Z(),k=a.a.g.Z(),l=function(b){var c=this.activeElement;(c=c&&a.a.g.get(c,k))&&c(b)},p=function(b,c){var d=b.ownerDocument;a.a.g.get(d,m)||(a.a.g.set(d,m,!0),a.a.B(d,"selectionchange",l));a.a.g.set(b,k,c)};a.c.textInput={init:function(b,c,k){function l(c,d){a.a.B(b,c,d)}function m(){var d=a.a.f(c());if(null===d||d===n)d="";L!==n&&d===L?a.a.setTimeout(m,4):b.value!==d&&(y=!0,b.value=d,y=!1,v=b.value)}function r(){w||(L=b.value,w=a.a.setTimeout(z,
|
113 |
+
4))}function z(){clearTimeout(w);L=w=n;var d=b.value;v!==d&&(v=d,a.m.eb(c(),k,"textInput",d))}var v=b.value,w,L,A=9==a.a.W?r:z,y=!1;g&&l("keypress",z);11>g&&l("propertychange",function(a){y||"value"!==a.propertyName||A(a)});8==g&&(l("keyup",z),l("keydown",z));p&&(p(b,A),l("dragend",r));(!g||9<=g)&&l("input",A);5>e&&"textarea"===a.a.R(b)?(l("keydown",r),l("paste",r),l("cut",r)):11>d?l("keydown",r):4>f?(l("DOMAutoComplete",z),l("dragdrop",z),l("drop",z)):h&&"number"===b.type&&l("keydown",r);l("change",
|
114 |
+
z);l("blur",z);a.o(m,null,{l:b})}};a.m.wa.textInput=!0;a.c.textinput={preprocess:function(a,b,c){c("textInput",a)}}})();a.c.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.c.uniqueName.rd;a.a.Yc(b,d)}}};a.c.uniqueName.rd=0;a.c.using={init:function(b,c,d,e,f){var g;d.has("as")&&(g={as:d.get("as"),noChildContext:d.get("noChildContext")});c=f.createChildContext(c,g);a.Oa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.using=!0;a.c.value={init:function(b,c,d){var e=a.a.R(b),f="input"==
|
115 |
+
e;if(!f||"checkbox"!=b.type&&"radio"!=b.type){var g=[],h=d.get("valueUpdate"),m=!1,k=null;h&&("string"==typeof h?g=[h]:g=a.a.wc(h),a.a.Pa(g,"change"));var l=function(){k=null;m=!1;var e=c(),f=a.w.M(b);a.m.eb(e,d,"value",f)};!a.a.W||!f||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.A(g,"propertychange")||(a.a.B(b,"propertychange",function(){m=!0}),a.a.B(b,"focus",function(){m=!1}),a.a.B(b,"blur",function(){m&&l()}));a.a.D(g,function(c){var d=l;a.a.Ud(c,"after")&&
|
116 |
+
(d=function(){k=a.w.M(b);a.a.setTimeout(l,0)},c=c.substring(5));a.a.B(b,c,d)});var p;p=f&&"file"==b.type?function(){var d=a.a.f(c());null===d||d===n||""===d?b.value="":a.u.G(l)}:function(){var f=a.a.f(c()),g=a.w.M(b);if(null!==k&&f===k)a.a.setTimeout(p,0);else if(f!==g||g===n)"select"===e?(g=d.get("valueAllowUnset"),a.w.cb(b,f,g),g||f===a.w.M(b)||a.u.G(l)):a.w.cb(b,f)};if("select"===e){var q;a.i.subscribe(b,a.i.H,function(){q?d.get("valueAllowUnset")?p():l():(a.a.B(b,"change",l),q=a.o(p,null,{l:b}))},
|
117 |
+
null,{notifyImmediately:!0})}else a.a.B(b,"change",l),a.o(p,null,{l:b})}else a.ib(b,{checkedValue:c})},update:function(){}};a.m.wa.value=!0;a.c.visible={update:function(b,c){var d=a.a.f(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};a.c.hidden={update:function(b,c){a.c.visible.update(b,function(){return!a.a.f(c())})}};(function(b){a.c[b]={init:function(c,d,e,f,g){return a.c.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,g)}}})("click");
|
118 |
+
a.ca=function(){};a.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");};a.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.ca.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.C.F(d)}if(1==b.nodeType||8==b.nodeType)return new a.C.ia(b);throw Error("Unknown template type: "+b);};a.ca.prototype.renderTemplate=
|
119 |
+
function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,d,e)};a.ca.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.ca.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.ca);a.kc=function(){function b(b,c,d,h){b=a.m.ac(b);for(var m=a.m.Ra,k=0;k<b.length;k++){var l=b[k].key;if(Object.prototype.hasOwnProperty.call(m,
|
120 |
+
l)){var p=m[l];if("function"===typeof p){if(l=p(b[k].value))throw Error(l);}else if(!p)throw Error("This template engine does not support the '"+l+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.m.vb(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return h.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
|
121 |
+
d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.kc.Ld(b,c)},d)},Ld:function(a,f){return a.replace(c,function(a,c,d,e,l){return b(l,c,d,f)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",f)})},md:function(b,c){return a.aa.Xb(function(d,h){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.ib(m,b,h)})}}}();a.b("__tr_ambtns",a.kc.md);(function(){a.C={};a.C.F=function(b){if(this.F=b){var c=
|
122 |
+
a.a.R(b);this.ab="script"===c?1:"textarea"===c?2:"template"==c&&b.content&&11===b.content.nodeType?3:4}};a.C.F.prototype.text=function(){var b=1===this.ab?"text":2===this.ab?"value":"innerHTML";if(0==arguments.length)return this.F[b];var c=arguments[0];"innerHTML"===b?a.a.fc(this.F,c):this.F[b]=c};var b=a.a.g.Z()+"_";a.C.F.prototype.data=function(c){if(1===arguments.length)return a.a.g.get(this.F,b+c);a.a.g.set(this.F,b+c,arguments[1])};var c=a.a.g.Z();a.C.F.prototype.nodes=function(){var b=this.F;
|
123 |
+
if(0==arguments.length){var e=a.a.g.get(b,c)||{},f=e.lb||(3===this.ab?b.content:4===this.ab?b:n);if(!f||e.jd){var g=this.text();g&&g!==e.bb&&(f=a.a.Md(g,b.ownerDocument),a.a.g.set(b,c,{lb:f,bb:g,jd:!0}))}return f}e=arguments[0];this.ab!==n&&this.text("");a.a.g.set(b,c,{lb:e})};a.C.ia=function(a){this.F=a};a.C.ia.prototype=new a.C.F;a.C.ia.prototype.constructor=a.C.ia;a.C.ia.prototype.text=function(){if(0==arguments.length){var b=a.a.g.get(this.F,c)||{};b.bb===n&&b.lb&&(b.bb=b.lb.innerHTML);return b.bb}a.a.g.set(this.F,
|
124 |
+
c,{bb:arguments[0]})};a.b("templateSources",a.C);a.b("templateSources.domElement",a.C.F);a.b("templateSources.anonymousTemplate",a.C.ia)})();(function(){function b(b,c,d){var e;for(c=a.h.nextSibling(c);b&&(e=b)!==c;)b=a.h.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],g=e.parentNode,h=a.ga.instance,m=h.preprocessNode;if(m){b(e,f,function(a,b){var c=a.previousSibling,d=m.call(h,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):
|
125 |
+
(c.push(e,f),a.a.Ua(c,g))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.vc(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.aa.cd(b,[d])});a.a.Ua(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,m){m=m||{};var n=(b&&d(b)||f||{}).ownerDocument,B=m.templateEngine||g;a.kc.xd(f,B,n);f=B.renderTemplate(f,h,m,n);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");n=!1;switch(e){case "replaceChildren":a.h.va(b,
|
126 |
+
f);n=!0;break;case "replaceNode":a.a.Xc(b,f);n=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}n&&(c(f,h),m.afterRender&&a.u.G(m.afterRender,null,[f,h[m.as||"$data"]]),"replaceChildren"==e&&a.i.ma(b,a.i.H));return f}function f(b,c,d){return a.O(b)?b():"function"===typeof b?b(c,d):b}var g;a.gc=function(b){if(b!=n&&!(b instanceof a.ca))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.dc=function(b,c,h,m,t){h=h||{};if((h.templateEngine||g)==
|
127 |
+
n)throw Error("Set a template engine before calling renderTemplate");t=t||"replaceChildren";if(m){var x=d(m);return a.$(function(){var g=c&&c instanceof a.fa?c:new a.fa(c,null,null,null,{exportDependencies:!0}),n=f(b,g.$data,g),g=e(m,t,n,g,h);"replaceNode"==t&&(m=g,x=d(m))},null,{Sa:function(){return!x||!a.a.Sb(x)},l:x&&"replaceNode"==t?x.parentNode:x})}return a.aa.Xb(function(d){a.dc(b,c,h,d,"replaceNode")})};a.Qd=function(b,d,g,h,m){function x(b,c){a.u.G(a.a.ec,null,[h,b,u,g,r,c]);a.i.ma(h,a.i.H)}
|
128 |
+
function r(a,b){c(b,v);g.afterRender&&g.afterRender(b,a);v=null}function u(a,c){v=m.createChildContext(a,{as:z,noChildContext:g.noChildContext,extend:function(a){a.$index=c;z&&(a[z+"Index"]=c)}});var d=f(b,a,v);return e(h,"ignoreTargetNode",d,v,g)}var v,z=g.as,w=!1===g.includeDestroyed||a.options.foreachHidesDestroyed&&!g.includeDestroyed;if(w||g.beforeRemove||!a.Pc(d))return a.$(function(){var b=a.a.f(d)||[];"undefined"==typeof b.length&&(b=[b]);w&&(b=a.a.jb(b,function(b){return b===n||null===b||
|
129 |
+
!a.a.f(b._destroy)}));x(b)},null,{l:h});x(d.v());var A=d.subscribe(function(a){x(d(),a)},null,"arrayChange");A.l(h);return A};var h=a.a.g.Z(),m=a.a.g.Z();a.c.template={init:function(b,c){var d=a.a.f(c());if("string"==typeof d||"name"in d)a.h.Ea(b);else if("nodes"in d){d=d.nodes||[];if(a.O(d))throw Error('The "nodes" option must be a plain, non-observable array.');var e=d[0]&&d[0].parentNode;e&&a.a.g.get(e,m)||(e=a.a.Yb(d),a.a.g.set(e,m,!0));(new a.C.ia(b)).nodes(e)}else if(d=a.h.childNodes(b),0<d.length)e=
|
130 |
+
a.a.Yb(d),(new a.C.ia(b)).nodes(e);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var g=c();c=a.a.f(g);d=!0;e=null;"string"==typeof c?c={}:(g="name"in c?c.name:b,"if"in c&&(d=a.a.f(c["if"])),d&&"ifnot"in c&&(d=!a.a.f(c.ifnot)),d&&!g&&(d=!1));"foreach"in c?e=a.Qd(g,d&&c.foreach||[],c,b,f):d?(d=f,"data"in c&&(d=f.createChildContext(c.data,{as:c.as,noChildContext:c.noChildContext,exportDependencies:!0})),
|
131 |
+
e=a.dc(g,d,c,b)):a.h.Ea(b);f=e;(c=a.a.g.get(b,h))&&"function"==typeof c.s&&c.s();a.a.g.set(b,h,!f||f.ja&&!f.ja()?n:f)}};a.m.Ra.template=function(b){b=a.m.ac(b);return 1==b.length&&b[0].unknown||a.m.Id(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.h.ea.template=!0})();a.b("setTemplateEngine",a.gc);a.b("renderTemplate",a.dc);a.a.Kc=function(a,c,d){if(a.length&&c.length){var e,f,g,h,m;for(e=f=0;(!d||e<d)&&(h=a[f]);++f){for(g=0;m=c[g];++g)if(h.value===
|
132 |
+
m.value){h.moved=m.index;m.moved=h.index;c.splice(g,1);e=g=0;break}e+=g}}};a.a.Pb=function(){function b(b,d,e,f,g){var h=Math.min,m=Math.max,k=[],l,p=b.length,q,n=d.length,r=n-p||1,v=p+n+1,u,w,z;for(l=0;l<=p;l++)for(w=u,k.push(u=[]),z=h(n,l+r),q=m(0,l-1);q<=z;q++)u[q]=q?l?b[l-1]===d[q-1]?w[q-1]:h(w[q]||v,u[q-1]||v)+1:q+1:l+1;h=[];m=[];r=[];l=p;for(q=n;l||q;)n=k[l][q]-1,q&&n===k[l][q-1]?m.push(h[h.length]={status:e,value:d[--q],index:q}):l&&n===k[l-1][q]?r.push(h[h.length]={status:f,value:b[--l],index:l}):
|
133 |
+
(--q,--l,g.sparse||h.push({status:"retained",value:d[q]}));a.a.Kc(r,m,!g.dontLimitMoves&&10*p);return h.reverse()}return function(a,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];d=d||[];return a.length<d.length?b(a,d,"added","deleted",e):b(d,a,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.Pb);(function(){function b(b,c,d,h,m){var k=[],l=a.$(function(){var l=c(d,m,a.a.Ua(k,b))||[];0<k.length&&(a.a.Xc(k,l),h&&a.u.G(h,null,[d,l,m]));k.length=0;a.a.Nb(k,l)},null,{l:b,Sa:function(){return!a.a.kd(k)}});
|
134 |
+
return{Y:k,$:l.ja()?l:n}}var c=a.a.g.Z(),d=a.a.g.Z();a.a.ec=function(e,f,g,h,m,k){function l(b){y={Aa:b,pb:a.ta(w++)};v.push(y);r||F.push(y)}function p(b){y=t[b];w!==y.pb.v()&&D.push(y);y.pb(w++);a.a.Ua(y.Y,e);v.push(y)}function q(b,c){if(b)for(var d=0,e=c.length;d<e;d++)a.a.D(c[d].Y,function(a){b(a,d,c[d].Aa)})}f=f||[];"undefined"==typeof f.length&&(f=[f]);h=h||{};var t=a.a.g.get(e,c),r=!t,v=[],u=0,w=0,z=[],A=[],C=[],D=[],F=[],y,I=0;if(r)a.a.D(f,l);else{if(!k||t&&t._countWaitingForRemove){var E=
|
135 |
+
a.a.Mb(t,function(a){return a.Aa});k=a.a.Pb(E,f,{dontLimitMoves:h.dontLimitMoves,sparse:!0})}for(var E=0,G,H,K;G=k[E];E++)switch(H=G.moved,K=G.index,G.status){case "deleted":for(;u<K;)p(u++);H===n&&(y=t[u],y.$&&(y.$.s(),y.$=n),a.a.Ua(y.Y,e).length&&(h.beforeRemove&&(v.push(y),I++,y.Aa===d?y=null:C.push(y)),y&&z.push.apply(z,y.Y)));u++;break;case "added":for(;w<K;)p(u++);H!==n?(A.push(v.length),p(H)):l(G.value)}for(;w<f.length;)p(u++);v._countWaitingForRemove=I}a.a.g.set(e,c,v);q(h.beforeMove,D);a.a.D(z,
|
136 |
+
h.beforeRemove?a.oa:a.removeNode);var M,O,P;try{P=e.ownerDocument.activeElement}catch(N){}if(A.length)for(;(E=A.shift())!=n;){y=v[E];for(M=n;E;)if((O=v[--E].Y)&&O.length){M=O[O.length-1];break}for(f=0;u=y.Y[f];M=u,f++)a.h.Wb(e,u,M)}for(E=0;y=v[E];E++){y.Y||a.a.extend(y,b(e,g,y.Aa,m,y.pb));for(f=0;u=y.Y[f];M=u,f++)a.h.Wb(e,u,M);!y.Ed&&m&&(m(y.Aa,y.Y,y.pb),y.Ed=!0,M=y.Y[y.Y.length-1])}P&&e.ownerDocument.activeElement!=P&&P.focus();q(h.beforeRemove,C);for(E=0;E<C.length;++E)C[E].Aa=d;q(h.afterMove,D);
|
137 |
+
q(h.afterAdd,F)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.ec);a.ba=function(){this.allowTemplateRewriting=!1};a.ba.prototype=new a.ca;a.ba.prototype.constructor=a.ba;a.ba.prototype.renderTemplateSource=function(b,c,d,e){if(c=(9>a.a.W?0:b.nodes)?b.nodes():null)return a.a.la(c.cloneNode(!0).childNodes);b=b.text();return a.a.ua(b,e)};a.ba.Ma=new a.ba;a.gc(a.ba.Ma);a.b("nativeTemplateEngine",a.ba);(function(){a.$a=function(){var a=this.Hd=function(){if(!v||!v.tmpl)return 0;try{if(0<=v.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();
|
138 |
+
this.renderTemplateSource=function(b,e,f,g){g=g||w;f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=v.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=v.extend({koBindingContext:e},f.templateOptions);e=v.tmpl(h,b,e);e.appendTo(g.createElement("div"));v.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+
|
139 |
+
a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(v.tmpl.tag.ko_code={open:"__.push($1 || '');"},v.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.$a.prototype=new a.ca;a.$a.prototype.constructor=a.$a;var b=new a.$a;0<b.Hd&&a.gc(b);a.b("jqueryTmplTemplateEngine",a.$a)})()})})();})();
|
js/{wfdashboard.1623076348.js → wfdashboard.1629122067.js}
RENAMED
File without changes
|
js/{wfdropdown.1623076348.js → wfdropdown.1629122067.js}
RENAMED
File without changes
|
js/{wfglobal.1623076348.js → wfglobal.1629122067.js}
RENAMED
@@ -54,6 +54,18 @@
|
|
54 |
function(){ jQuery('.wf-admin-notice[data-notice-id="' + nid + '"]').fadeOut(); }
|
55 |
);
|
56 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
setOption: function(key, value, successCallback) {
|
58 |
var changes = {};
|
59 |
changes[key] = value;
|
54 |
function(){ jQuery('.wf-admin-notice[data-notice-id="' + nid + '"]').fadeOut(); }
|
55 |
);
|
56 |
},
|
57 |
+
hideNoticeForUser: function(id) {
|
58 |
+
this.ajax('wordfence_hideNoticeForUser',
|
59 |
+
{
|
60 |
+
id: id
|
61 |
+
},
|
62 |
+
function(res) {
|
63 |
+
$("#" + id).fadeOut();
|
64 |
+
},
|
65 |
+
function() {
|
66 |
+
}
|
67 |
+
);
|
68 |
+
},
|
69 |
setOption: function(key, value, successCallback) {
|
70 |
var changes = {};
|
71 |
changes[key] = value;
|
js/{wfi18n.1623076348.js → wfi18n.1629122067.js}
RENAMED
File without changes
|
js/{wfpopover.1623076348.js → wfpopover.1629122067.js}
RENAMED
File without changes
|
js/{wfselect2.min.1623076348.js → wfselect2.min.1629122067.js}
RENAMED
File without changes
|
languages/wordfence.po
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Wordfence Security plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Wordfence Security 7.5.
|
6 |
-
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2021-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: wordfence\n"
|
@@ -57,7 +57,7 @@ msgstr ""
|
|
57 |
#: lib/dashboard/widget_content_logins.php:7
|
58 |
#: lib/dashboard/widget_ips.php:115
|
59 |
#: lib/dashboard/widget_logins.php:96
|
60 |
-
#: lib/wordfenceClass.php:
|
61 |
#: views/reports/activity-report-email-inline.php:146
|
62 |
#: views/reports/activity-report.php:16
|
63 |
#: views/waf/option-whitelist.php:110
|
@@ -68,7 +68,7 @@ msgstr ""
|
|
68 |
|
69 |
#: lib/dashboard/widget_content_logins.php:6
|
70 |
#: lib/dashboard/widget_logins.php:95
|
71 |
-
#: lib/wordfenceClass.php:
|
72 |
#: views/reports/activity-report-email-inline.php:256
|
73 |
#: views/reports/activity-report.php:106
|
74 |
msgid "Username"
|
@@ -91,7 +91,7 @@ msgstr ""
|
|
91 |
|
92 |
#: lib/dashboard/widget_countries.php:25
|
93 |
#: lib/dashboard/widget_networkattacks.php:8
|
94 |
-
#: lib/wfDiagnostic.php:
|
95 |
msgid "Wordfence Network"
|
96 |
msgstr ""
|
97 |
|
@@ -118,7 +118,7 @@ msgid "7 Days"
|
|
118 |
msgstr ""
|
119 |
|
120 |
#: lib/dashboard/widget_ips.php:30
|
121 |
-
#: lib/dashboard/widget_networkattacks.php:
|
122 |
msgid "30 Days"
|
123 |
msgstr ""
|
124 |
|
@@ -133,7 +133,7 @@ msgstr ""
|
|
133 |
#. translators: WordPress username.
|
134 |
#: lib/dashboard/widget_ips.php:96
|
135 |
#: lib/dashboard/widget_logins.php:77
|
136 |
-
#: lib/wordfenceClass.php:
|
137 |
msgid "An error occurred"
|
138 |
msgstr ""
|
139 |
|
@@ -184,6 +184,208 @@ msgstr ""
|
|
184 |
msgid "How are these categorized?"
|
185 |
msgstr ""
|
186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
#: lib/dashboard/widget_logins.php:9
|
188 |
#: views/reports/activity-report-email-inline.php:257
|
189 |
#: views/reports/activity-report.php:107
|
@@ -214,17 +416,17 @@ msgstr ""
|
|
214 |
msgid "Blocked attack counts not available yet."
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: lib/dashboard/widget_networkattacks.php:
|
218 |
msgid "Total Attacks"
|
219 |
msgstr ""
|
220 |
|
221 |
#. translators: Time since. Example: 1 minute, 2 seconds
|
222 |
-
#: lib/dashboard/widget_networkattacks.php:
|
223 |
msgid "Last Updated: %s ago"
|
224 |
msgstr ""
|
225 |
|
226 |
#: lib/dashboard/widget_notifications.php:8
|
227 |
-
#: lib/wordfenceClass.php:
|
228 |
msgid "Notifications"
|
229 |
msgstr ""
|
230 |
|
@@ -296,16 +498,17 @@ msgstr ""
|
|
296 |
#: lib/dashboard/widget_notifications.php:134
|
297 |
#: lib/menu_scanner.php:217
|
298 |
#: lib/menu_scanner.php:228
|
299 |
-
#: lib/menu_tools_diagnostic.php:
|
300 |
#: lib/menu_tools_twoFactor.php:235
|
301 |
#: lib/menu_tools_twoFactor.php:273
|
302 |
-
#: lib/wordfenceClass.php:
|
303 |
-
#: lib/wordfenceClass.php:
|
304 |
-
#: lib/wordfenceClass.php:
|
305 |
-
#: lib/wordfenceClass.php:
|
306 |
-
#: lib/wordfenceClass.php:
|
307 |
#: views/blocking/block-list.php:501
|
308 |
#: views/blocking/blocking-create.php:212
|
|
|
309 |
#: views/dashboard/options-group-license.php:150
|
310 |
#: views/options/block-all-options-controls.php:164
|
311 |
#: views/options/block-controls.php:79
|
@@ -520,6 +723,8 @@ msgstr ""
|
|
520 |
#: lib/wfVersionCheckController.php:91
|
521 |
#: lib/wfVersionCheckController.php:167
|
522 |
#: lib/wfVersionCheckController.php:186
|
|
|
|
|
523 |
#: views/blocking/blocking-status.php:27
|
524 |
#: views/dashboard/options-group-dashboard.php:107
|
525 |
#: views/gdpr/banner.php:55
|
@@ -658,7 +863,7 @@ msgstr ""
|
|
658 |
|
659 |
#. translators: URL to WordPress admin panel.
|
660 |
#: lib/email_unsubscribeRequest.php:14
|
661 |
-
msgid "<a href=\"%s\" target=\"_blank\">Click here
|
662 |
msgstr ""
|
663 |
|
664 |
#. translators: IP address.
|
@@ -674,7 +879,7 @@ msgid "© %d to %d Wordfence — Visit <a href=\"http://wordfence.c
|
|
674 |
msgstr ""
|
675 |
|
676 |
#: lib/IPTrafList.php:13
|
677 |
-
#: lib/wfLockedOut.php:
|
678 |
msgid "Time:"
|
679 |
msgstr ""
|
680 |
|
@@ -716,8 +921,12 @@ msgstr ""
|
|
716 |
msgid "Wordfence Live Activity:"
|
717 |
msgstr ""
|
718 |
|
|
|
|
|
|
|
|
|
719 |
#: lib/menu_dashboard.php:24
|
720 |
-
#: lib/wordfenceClass.php:
|
721 |
msgid "Wordfence Dashboard"
|
722 |
msgstr ""
|
723 |
|
@@ -729,7 +938,7 @@ msgstr ""
|
|
729 |
#: lib/menu_dashboard_options.php:98
|
730 |
#: lib/menu_firewall.php:20
|
731 |
#: lib/menu_firewall.php:30
|
732 |
-
#: lib/wordfenceClass.php:
|
733 |
#: models/page/wfPage.php:105
|
734 |
msgid "Firewall"
|
735 |
msgstr ""
|
@@ -766,7 +975,7 @@ msgstr ""
|
|
766 |
#: lib/menu_dashboard_options.php:115
|
767 |
#: lib/menu_scanner.php:31
|
768 |
#: lib/menu_scanner.php:305
|
769 |
-
#: lib/wordfenceClass.php:
|
770 |
#: models/page/wfPage.php:113
|
771 |
msgid "Scan"
|
772 |
msgstr ""
|
@@ -831,7 +1040,7 @@ msgstr ""
|
|
831 |
|
832 |
#: lib/menu_dashboard.php:109
|
833 |
#: lib/menu_dashboard_options.php:153
|
834 |
-
msgid "The license you were using has been removed from your account. Please reach out to <a href=\"mailto:billing@wordfence.com\">billing@wordfence.com</a> or create a Premium support case at <a href=\"https://support.wordfence.com/support/tickets\" target=\"_blank\">https://support.wordfence.com/support/tickets</a> for more information. Our staff is happy to help."
|
835 |
msgstr ""
|
836 |
|
837 |
#: lib/menu_dashboard.php:117
|
@@ -930,7 +1139,7 @@ msgid "Wordfence Premium Enabled"
|
|
930 |
msgstr ""
|
931 |
|
932 |
#: lib/menu_dashboard.php:220
|
933 |
-
#: lib/wordfenceClass.php:
|
934 |
msgid "Tools"
|
935 |
msgstr ""
|
936 |
|
@@ -942,7 +1151,7 @@ msgstr ""
|
|
942 |
#: lib/menu_firewall_waf.php:157
|
943 |
#: lib/menu_scanner.php:139
|
944 |
#: lib/menu_support.php:19
|
945 |
-
#: lib/wordfenceClass.php:
|
946 |
msgid "Help"
|
947 |
msgstr ""
|
948 |
|
@@ -1047,7 +1256,7 @@ msgid "This update includes a number of significant interface changes. We'd like
|
|
1047 |
msgstr ""
|
1048 |
|
1049 |
#: lib/menu_dashboard.php:373
|
1050 |
-
msgid "We welcome your feedback and comments at <a href=\"mailto:feedback@wordfence.com\">feedback@wordfence.com</a>. For a deeper dive on all of the changes, <a href=\"https://www.wordfence.com/blog/2018/01/introducing-wordfence-7/\" target=\"_blank\" rel=\"noopener noreferrer\">click here</a>."
|
1051 |
msgstr ""
|
1052 |
|
1053 |
#: lib/menu_dashboard.php:388
|
@@ -1139,6 +1348,7 @@ msgstr ""
|
|
1139 |
#: lib/menu_dashboard_options.php:288
|
1140 |
#: lib/menu_options.php:405
|
1141 |
#: lib/menu_options.php:415
|
|
|
1142 |
#: lib/menu_tools_importExport.php:7
|
1143 |
#: lib/menu_tools_importExport.php:13
|
1144 |
#: models/page/wfPage.php:121
|
@@ -1160,7 +1370,7 @@ msgstr ""
|
|
1160 |
#: lib/menu_firewall.php:41
|
1161 |
#: lib/menu_firewall_blocking.php:119
|
1162 |
#: lib/menu_firewall_waf.php:142
|
1163 |
-
#: lib/wordfenceClass.php:
|
1164 |
#: models/page/wfPage.php:109
|
1165 |
msgid "Blocking"
|
1166 |
msgstr ""
|
@@ -1326,10 +1536,11 @@ msgstr ""
|
|
1326 |
|
1327 |
#: lib/menu_firewall_waf.php:69
|
1328 |
#: lib/menu_firewall_waf_options.php:175
|
1329 |
-
#: lib/menu_tools_diagnostic.php:
|
1330 |
-
#: lib/menu_tools_diagnostic.php:300
|
1331 |
#: lib/menu_tools_diagnostic.php:301
|
1332 |
-
#: lib/menu_tools_diagnostic.php:
|
|
|
|
|
1333 |
#: models/firewall/wfFirewall.php:35
|
1334 |
#: views/diagnostics/text.php:154
|
1335 |
#: views/diagnostics/text.php:159
|
@@ -1344,11 +1555,11 @@ msgstr ""
|
|
1344 |
|
1345 |
#: lib/menu_firewall_waf.php:69
|
1346 |
#: lib/menu_firewall_waf_options.php:175
|
1347 |
-
#: lib/menu_tools_diagnostic.php:
|
1348 |
-
#: lib/menu_tools_diagnostic.php:300
|
1349 |
#: lib/menu_tools_diagnostic.php:301
|
1350 |
-
#: lib/menu_tools_diagnostic.php:
|
1351 |
-
#: lib/
|
|
|
1352 |
#: models/firewall/wfFirewall.php:41
|
1353 |
#: views/diagnostics/text.php:154
|
1354 |
#: views/diagnostics/text.php:159
|
@@ -1469,7 +1680,7 @@ msgstr ""
|
|
1469 |
|
1470 |
#: lib/menu_options.php:24
|
1471 |
#: lib/menu_options.php:262
|
1472 |
-
#: lib/wordfenceClass.php:
|
1473 |
msgid "All Options"
|
1474 |
msgstr ""
|
1475 |
|
@@ -1506,7 +1717,7 @@ msgid "How does Wordfence get IPs"
|
|
1506 |
msgstr ""
|
1507 |
|
1508 |
#: lib/menu_options.php:75
|
1509 |
-
#: lib/menu_tools_diagnostic.php:
|
1510 |
#: views/dashboard/option-howgetips.php:50
|
1511 |
#: views/diagnostics/text.php:108
|
1512 |
msgid "Trusted Proxies"
|
@@ -2108,7 +2319,7 @@ msgid "Signature updates delayed by 30 days"
|
|
2108 |
msgstr ""
|
2109 |
|
2110 |
#: lib/menu_scanner.php:80
|
2111 |
-
#: lib/wordfenceClass.php:
|
2112 |
msgid "Protect More Sites"
|
2113 |
msgstr ""
|
2114 |
|
@@ -2165,7 +2376,7 @@ msgstr ""
|
|
2165 |
|
2166 |
#. translators: Support URL.
|
2167 |
#: lib/menu_scanner.php:216
|
2168 |
-
msgid "Do not delete files on your system unless you're ABSOLUTELY sure you know what you're doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files. If you'd like to learn more, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here for our help article</a>."
|
2169 |
msgstr ""
|
2170 |
|
2171 |
#: lib/menu_scanner.php:218
|
@@ -2191,20 +2402,20 @@ msgstr ""
|
|
2191 |
#: lib/menu_tools_twoFactor.php:255
|
2192 |
#: lib/menu_tools_twoFactor.php:264
|
2193 |
#: lib/menu_tools_twoFactor.php:284
|
2194 |
-
#: lib/wordfenceClass.php:
|
2195 |
-
#: lib/wordfenceClass.php:
|
2196 |
-
#: lib/wordfenceClass.php:
|
2197 |
-
#: lib/wordfenceClass.php:
|
2198 |
-
#: lib/wordfenceClass.php:
|
2199 |
-
#: lib/wordfenceClass.php:
|
2200 |
-
#: lib/wordfenceClass.php:
|
2201 |
-
#: lib/wordfenceClass.php:
|
2202 |
-
#: lib/wordfenceClass.php:
|
2203 |
-
#: lib/wordfenceClass.php:
|
2204 |
-
#: lib/wordfenceClass.php:
|
2205 |
-
#: lib/wordfenceClass.php:
|
2206 |
-
#: lib/wordfenceClass.php:
|
2207 |
-
#: lib/wordfenceClass.php:
|
2208 |
#: views/dashboard/options-group-import.php:147
|
2209 |
#: views/dashboard/options-group-import.php:157
|
2210 |
#: views/dashboard/options-group-import.php:177
|
@@ -2327,7 +2538,7 @@ msgstr ""
|
|
2327 |
|
2328 |
#. translators: URL to support page.
|
2329 |
#: lib/menu_support.php:83
|
2330 |
-
msgid "If you qualify as a data controller under the GDPR and need a data processing agreement, it can be <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">found here</a>."
|
2331 |
msgstr ""
|
2332 |
|
2333 |
#: lib/menu_support.php:92
|
@@ -2371,6 +2582,7 @@ msgid "Congratulations! Wordfence Premium is now active on your website. Please
|
|
2371 |
msgstr ""
|
2372 |
|
2373 |
#: lib/menu_support.php:269
|
|
|
2374 |
#: views/onboarding/fresh-install.php:30
|
2375 |
#: views/onboarding/modal-final-attempt.php:59
|
2376 |
#: views/onboarding/plugin-header.php:61
|
@@ -2380,6 +2592,32 @@ msgstr ""
|
|
2380 |
msgid "Continue"
|
2381 |
msgstr ""
|
2382 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2383 |
#: lib/menu_tools_diagnostic.php:24
|
2384 |
#: models/page/wfPage.php:125
|
2385 |
msgid "Diagnostics"
|
@@ -2405,37 +2643,37 @@ msgstr ""
|
|
2405 |
msgid "Ticket Number/Forum Username:"
|
2406 |
msgstr ""
|
2407 |
|
2408 |
-
#: lib/menu_tools_diagnostic.php:
|
2409 |
msgid "Additional Detail"
|
2410 |
msgstr ""
|
2411 |
|
2412 |
-
#: lib/menu_tools_diagnostic.php:
|
2413 |
msgid "View Additional Detail"
|
2414 |
msgstr ""
|
2415 |
|
2416 |
-
#: lib/menu_tools_diagnostic.php:
|
2417 |
#: views/diagnostics/text.php:60
|
2418 |
#: views/scanner/issue-checkHowGetIPs.php:8
|
2419 |
msgid "IP Detection"
|
2420 |
msgstr ""
|
2421 |
|
2422 |
-
#: lib/menu_tools_diagnostic.php:
|
2423 |
#: views/diagnostics/text.php:60
|
2424 |
msgid "Methods of detecting a visitor's IP address."
|
2425 |
msgstr ""
|
2426 |
|
2427 |
-
#: lib/menu_tools_diagnostic.php:
|
2428 |
#: views/diagnostics/text.php:69
|
2429 |
msgid "IPs"
|
2430 |
msgstr ""
|
2431 |
|
2432 |
-
#: lib/menu_tools_diagnostic.php:
|
2433 |
#: views/diagnostics/text.php:70
|
2434 |
#: views/diagnostics/text.php:189
|
2435 |
msgid "Value"
|
2436 |
msgstr ""
|
2437 |
|
2438 |
-
#: lib/menu_tools_diagnostic.php:
|
2439 |
#: views/diagnostics/text.php:71
|
2440 |
msgid "Used"
|
2441 |
msgstr ""
|
@@ -2444,23 +2682,23 @@ msgstr ""
|
|
2444 |
#. translators: WordPress theme stylesheet directory.
|
2445 |
#. translators: WordPress custom user table.
|
2446 |
#. translators: WordPress custom user meta table.
|
2447 |
-
#: lib/menu_tools_diagnostic.php:
|
2448 |
-
#: lib/menu_tools_diagnostic.php:268
|
2449 |
#: lib/menu_tools_diagnostic.php:269
|
2450 |
-
#: lib/menu_tools_diagnostic.php:
|
2451 |
#: lib/menu_tools_diagnostic.php:283
|
2452 |
-
#: lib/menu_tools_diagnostic.php:
|
2453 |
#: lib/menu_tools_diagnostic.php:297
|
2454 |
#: lib/menu_tools_diagnostic.php:298
|
2455 |
#: lib/menu_tools_diagnostic.php:299
|
2456 |
-
#: lib/menu_tools_diagnostic.php:
|
2457 |
#: lib/menu_tools_diagnostic.php:314
|
2458 |
#: lib/menu_tools_diagnostic.php:315
|
2459 |
-
#: lib/menu_tools_diagnostic.php:
|
2460 |
#: lib/menu_tools_diagnostic.php:318
|
2461 |
#: lib/menu_tools_diagnostic.php:319
|
2462 |
-
#: lib/menu_tools_diagnostic.php:
|
2463 |
-
#: lib/
|
|
|
2464 |
#: views/diagnostics/text.php:86
|
2465 |
#: views/diagnostics/text.php:127
|
2466 |
#: views/diagnostics/text.php:128
|
@@ -2480,52 +2718,52 @@ msgstr ""
|
|
2480 |
msgid "(not set)"
|
2481 |
msgstr ""
|
2482 |
|
2483 |
-
#: lib/menu_tools_diagnostic.php:
|
2484 |
#: views/diagnostics/text.php:96
|
2485 |
msgid "In use"
|
2486 |
msgstr ""
|
2487 |
|
2488 |
-
#: lib/menu_tools_diagnostic.php:
|
2489 |
#: views/diagnostics/text.php:98
|
2490 |
msgid "Configured but not valid"
|
2491 |
msgstr ""
|
2492 |
|
2493 |
-
#: lib/menu_tools_diagnostic.php:
|
2494 |
#: views/diagnostics/text.php:117
|
2495 |
msgid "WordPress Settings"
|
2496 |
msgstr ""
|
2497 |
|
2498 |
-
#: lib/menu_tools_diagnostic.php:
|
2499 |
#: views/diagnostics/text.php:117
|
2500 |
msgid "WordPress version and internal settings/constants."
|
2501 |
msgstr ""
|
2502 |
|
2503 |
-
#: lib/menu_tools_diagnostic.php:
|
2504 |
#: views/diagnostics/text.php:124
|
2505 |
msgid "Return value of is_multisite()"
|
2506 |
msgstr ""
|
2507 |
|
2508 |
#. translators: WordPress plugins directory.
|
2509 |
-
#: lib/menu_tools_diagnostic.php:
|
2510 |
-
#: lib/menu_tools_diagnostic.php:
|
2511 |
-
#: lib/menu_tools_diagnostic.php:278
|
2512 |
#: lib/menu_tools_diagnostic.php:279
|
2513 |
-
#: lib/menu_tools_diagnostic.php:
|
2514 |
-
#: lib/menu_tools_diagnostic.php:
|
2515 |
#: lib/menu_tools_diagnostic.php:306
|
2516 |
#: lib/menu_tools_diagnostic.php:307
|
2517 |
#: lib/menu_tools_diagnostic.php:308
|
2518 |
#: lib/menu_tools_diagnostic.php:309
|
2519 |
#: lib/menu_tools_diagnostic.php:310
|
2520 |
-
#: lib/menu_tools_diagnostic.php:
|
2521 |
#: lib/menu_tools_diagnostic.php:316
|
2522 |
#: lib/menu_tools_diagnostic.php:317
|
2523 |
#: lib/menu_tools_diagnostic.php:318
|
2524 |
#: lib/menu_tools_diagnostic.php:319
|
2525 |
-
#: lib/menu_tools_diagnostic.php:
|
|
|
2526 |
#: lib/menu_tools_livetraffic.php:152
|
2527 |
-
#: lib/wfDiagnostic.php:
|
2528 |
-
#: lib/wfDiagnostic.php:
|
2529 |
#: views/diagnostics/text.php:124
|
2530 |
#: views/diagnostics/text.php:135
|
2531 |
#: views/diagnostics/text.php:137
|
@@ -2551,22 +2789,22 @@ msgstr ""
|
|
2551 |
msgid "Yes"
|
2552 |
msgstr ""
|
2553 |
|
2554 |
-
#: lib/menu_tools_diagnostic.php:
|
2555 |
-
#: lib/menu_tools_diagnostic.php:
|
2556 |
-
#: lib/menu_tools_diagnostic.php:305
|
2557 |
#: lib/menu_tools_diagnostic.php:306
|
2558 |
#: lib/menu_tools_diagnostic.php:307
|
2559 |
#: lib/menu_tools_diagnostic.php:308
|
2560 |
#: lib/menu_tools_diagnostic.php:309
|
2561 |
#: lib/menu_tools_diagnostic.php:310
|
2562 |
-
#: lib/menu_tools_diagnostic.php:
|
2563 |
#: lib/menu_tools_diagnostic.php:316
|
2564 |
-
#: lib/menu_tools_diagnostic.php:
|
2565 |
#: lib/menu_tools_diagnostic.php:319
|
2566 |
-
#: lib/menu_tools_diagnostic.php:
|
|
|
2567 |
#: lib/menu_tools_livetraffic.php:153
|
2568 |
-
#: lib/wfDiagnostic.php:
|
2569 |
-
#: lib/wfDiagnostic.php:
|
2570 |
#: views/diagnostics/text.php:124
|
2571 |
#: views/diagnostics/text.php:151
|
2572 |
#: views/diagnostics/text.php:164
|
@@ -2588,20 +2826,20 @@ msgstr ""
|
|
2588 |
msgid "No"
|
2589 |
msgstr ""
|
2590 |
|
2591 |
-
#: lib/menu_tools_diagnostic.php:
|
2592 |
#: views/diagnostics/text.php:125
|
2593 |
msgid "WordPress base path"
|
2594 |
msgstr ""
|
2595 |
|
2596 |
-
#: lib/menu_tools_diagnostic.php:
|
2597 |
#: views/diagnostics/text.php:126
|
2598 |
msgid "WordPress debug mode"
|
2599 |
msgstr ""
|
2600 |
|
2601 |
-
#: lib/menu_tools_diagnostic.php:
|
2602 |
-
#: lib/menu_tools_diagnostic.php:270
|
2603 |
#: lib/menu_tools_diagnostic.php:271
|
2604 |
-
#: lib/
|
|
|
2605 |
#: views/diagnostics/text.php:126
|
2606 |
#: views/diagnostics/text.php:129
|
2607 |
#: views/diagnostics/text.php:130
|
@@ -2610,10 +2848,10 @@ msgstr ""
|
|
2610 |
msgid "On"
|
2611 |
msgstr ""
|
2612 |
|
2613 |
-
#: lib/menu_tools_diagnostic.php:
|
2614 |
-
#: lib/menu_tools_diagnostic.php:270
|
2615 |
#: lib/menu_tools_diagnostic.php:271
|
2616 |
-
#: lib/
|
|
|
2617 |
#: views/diagnostics/text.php:126
|
2618 |
#: views/diagnostics/text.php:129
|
2619 |
#: views/diagnostics/text.php:130
|
@@ -2622,47 +2860,47 @@ msgstr ""
|
|
2622 |
msgid "Off"
|
2623 |
msgstr ""
|
2624 |
|
2625 |
-
#: lib/menu_tools_diagnostic.php:
|
2626 |
#: views/diagnostics/text.php:127
|
2627 |
msgid "WordPress error logging override"
|
2628 |
msgstr ""
|
2629 |
|
2630 |
-
#: lib/menu_tools_diagnostic.php:
|
2631 |
#: views/diagnostics/text.php:128
|
2632 |
msgid "WordPress error display override"
|
2633 |
msgstr ""
|
2634 |
|
2635 |
-
#: lib/menu_tools_diagnostic.php:
|
2636 |
#: views/diagnostics/text.php:129
|
2637 |
msgid "WordPress script debug mode"
|
2638 |
msgstr ""
|
2639 |
|
2640 |
-
#: lib/menu_tools_diagnostic.php:
|
2641 |
#: views/diagnostics/text.php:130
|
2642 |
msgid "WordPress query debug mode"
|
2643 |
msgstr ""
|
2644 |
|
2645 |
-
#: lib/menu_tools_diagnostic.php:
|
2646 |
#: views/diagnostics/text.php:131
|
2647 |
msgid "Database character set"
|
2648 |
msgstr ""
|
2649 |
|
2650 |
-
#: lib/menu_tools_diagnostic.php:
|
2651 |
#: views/diagnostics/text.php:132
|
2652 |
msgid "Database collation"
|
2653 |
msgstr ""
|
2654 |
|
2655 |
-
#: lib/menu_tools_diagnostic.php:
|
2656 |
#: views/diagnostics/text.php:133
|
2657 |
msgid "Explicitly set site URL"
|
2658 |
msgstr ""
|
2659 |
|
2660 |
-
#: lib/menu_tools_diagnostic.php:
|
2661 |
#: views/diagnostics/text.php:134
|
2662 |
msgid "Explicitly set blog URL"
|
2663 |
msgstr ""
|
2664 |
|
2665 |
-
#: lib/menu_tools_diagnostic.php:
|
2666 |
#: views/diagnostics/text.php:135
|
2667 |
msgid "\"wp-content\" folder is in default location"
|
2668 |
msgstr ""
|
@@ -2670,9 +2908,9 @@ msgstr ""
|
|
2670 |
#. translators: WordPress content directory.
|
2671 |
#. translators: WordPress plugins directory.
|
2672 |
#. translators: WordPress languages directory.
|
2673 |
-
#: lib/menu_tools_diagnostic.php:
|
2674 |
-
#: lib/menu_tools_diagnostic.php:278
|
2675 |
#: lib/menu_tools_diagnostic.php:279
|
|
|
2676 |
#: views/diagnostics/text.php:135
|
2677 |
#: views/diagnostics/text.php:137
|
2678 |
#: views/diagnostics/text.php:138
|
@@ -2680,328 +2918,328 @@ msgid "No: %s"
|
|
2680 |
msgstr ""
|
2681 |
|
2682 |
#. translators: WordPress content directory.
|
2683 |
-
#: lib/menu_tools_diagnostic.php:
|
2684 |
#: views/diagnostics/text.php:136
|
2685 |
msgid "URL to the \"wp-content\" folder"
|
2686 |
msgstr ""
|
2687 |
|
2688 |
-
#: lib/menu_tools_diagnostic.php:
|
2689 |
#: views/diagnostics/text.php:137
|
2690 |
msgid "\"plugins\" folder is in default location"
|
2691 |
msgstr ""
|
2692 |
|
2693 |
#. translators: WordPress plugins directory.
|
2694 |
-
#: lib/menu_tools_diagnostic.php:
|
2695 |
#: views/diagnostics/text.php:138
|
2696 |
msgid "\"languages\" folder is in default location"
|
2697 |
msgstr ""
|
2698 |
|
2699 |
#. translators: WordPress languages directory.
|
2700 |
-
#: lib/menu_tools_diagnostic.php:
|
2701 |
#: views/diagnostics/text.php:139
|
2702 |
msgid "Language choice"
|
2703 |
msgstr ""
|
2704 |
|
2705 |
-
#: lib/menu_tools_diagnostic.php:
|
2706 |
#: views/diagnostics/text.php:140
|
2707 |
msgid "Custom upload folder location"
|
2708 |
msgstr ""
|
2709 |
|
2710 |
-
#: lib/menu_tools_diagnostic.php:
|
2711 |
#: views/diagnostics/text.php:141
|
2712 |
msgid "Theme template folder override"
|
2713 |
msgstr ""
|
2714 |
|
2715 |
#. translators: WordPress theme template directory.
|
2716 |
#. translators: WordPress theme stylesheet directory.
|
2717 |
-
#: lib/menu_tools_diagnostic.php:282
|
2718 |
#: lib/menu_tools_diagnostic.php:283
|
|
|
2719 |
#: views/diagnostics/text.php:141
|
2720 |
#: views/diagnostics/text.php:142
|
2721 |
msgid "Overridden: %s"
|
2722 |
msgstr ""
|
2723 |
|
2724 |
#. translators: WordPress theme template directory.
|
2725 |
-
#: lib/menu_tools_diagnostic.php:
|
2726 |
#: views/diagnostics/text.php:142
|
2727 |
msgid "Theme stylesheet folder override"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
#. translators: WordPress theme stylesheet directory.
|
2731 |
-
#: lib/menu_tools_diagnostic.php:
|
2732 |
#: views/diagnostics/text.php:143
|
2733 |
msgid "Post editing automatic saving interval"
|
2734 |
msgstr ""
|
2735 |
|
2736 |
-
#: lib/menu_tools_diagnostic.php:
|
2737 |
#: views/diagnostics/text.php:144
|
2738 |
msgid "Post revisions saved by WordPress"
|
2739 |
msgstr ""
|
2740 |
|
2741 |
-
#: lib/menu_tools_diagnostic.php:
|
2742 |
#: views/diagnostics/text.php:144
|
2743 |
#: views/waf/options-group-rate-limiting.php:67
|
2744 |
msgid "Unlimited"
|
2745 |
msgstr ""
|
2746 |
|
2747 |
-
#: lib/menu_tools_diagnostic.php:
|
2748 |
-
#: lib/menu_tools_diagnostic.php:
|
2749 |
-
#: lib/wfDiagnostic.php:
|
2750 |
-
#: lib/wfDiagnostic.php:
|
2751 |
-
#: lib/wfDiagnostic.php:
|
2752 |
#: views/diagnostics/text.php:144
|
2753 |
#: views/diagnostics/text.php:171
|
2754 |
#: views/scanner/issue-base.php:116
|
2755 |
msgid "None"
|
2756 |
msgstr ""
|
2757 |
|
2758 |
-
#: lib/menu_tools_diagnostic.php:
|
2759 |
#: views/diagnostics/text.php:145
|
2760 |
msgid "WordPress cookie domain"
|
2761 |
msgstr ""
|
2762 |
|
2763 |
-
#: lib/menu_tools_diagnostic.php:
|
2764 |
#: views/diagnostics/text.php:146
|
2765 |
msgid "WordPress cookie path"
|
2766 |
msgstr ""
|
2767 |
|
2768 |
-
#: lib/menu_tools_diagnostic.php:
|
2769 |
#: views/diagnostics/text.php:147
|
2770 |
msgid "WordPress site cookie path"
|
2771 |
msgstr ""
|
2772 |
|
2773 |
-
#: lib/menu_tools_diagnostic.php:
|
2774 |
#: views/diagnostics/text.php:148
|
2775 |
msgid "WordPress admin cookie path"
|
2776 |
msgstr ""
|
2777 |
|
2778 |
-
#: lib/menu_tools_diagnostic.php:
|
2779 |
#: views/diagnostics/text.php:149
|
2780 |
msgid "WordPress plugins cookie path"
|
2781 |
msgstr ""
|
2782 |
|
2783 |
-
#: lib/menu_tools_diagnostic.php:
|
2784 |
#: views/diagnostics/text.php:150
|
2785 |
msgid "URL redirected to if the visitor tries to access a nonexistent blog"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: lib/menu_tools_diagnostic.php:
|
2789 |
#: views/diagnostics/text.php:151
|
2790 |
msgid "Concatenate JavaScript files"
|
2791 |
msgstr ""
|
2792 |
|
2793 |
-
#: lib/menu_tools_diagnostic.php:
|
2794 |
#: views/diagnostics/text.php:152
|
2795 |
msgid "WordPress memory limit"
|
2796 |
msgstr ""
|
2797 |
|
2798 |
-
#: lib/menu_tools_diagnostic.php:
|
2799 |
#: views/diagnostics/text.php:153
|
2800 |
msgid "Administrative memory limit"
|
2801 |
msgstr ""
|
2802 |
|
2803 |
-
#: lib/menu_tools_diagnostic.php:
|
2804 |
#: views/diagnostics/text.php:154
|
2805 |
msgid "Built-in caching"
|
2806 |
msgstr ""
|
2807 |
|
2808 |
-
#: lib/menu_tools_diagnostic.php:
|
2809 |
#: views/diagnostics/text.php:155
|
2810 |
msgid "Custom \"users\" table"
|
2811 |
msgstr ""
|
2812 |
|
2813 |
#. translators: WordPress custom user table.
|
2814 |
#. translators: WordPress custom user meta table.
|
2815 |
-
#: lib/menu_tools_diagnostic.php:296
|
2816 |
#: lib/menu_tools_diagnostic.php:297
|
|
|
2817 |
#: views/diagnostics/text.php:155
|
2818 |
#: views/diagnostics/text.php:156
|
2819 |
msgid "Set: %s"
|
2820 |
msgstr ""
|
2821 |
|
2822 |
#. translators: WordPress custom user table.
|
2823 |
-
#: lib/menu_tools_diagnostic.php:
|
2824 |
#: views/diagnostics/text.php:156
|
2825 |
msgid "Custom \"usermeta\" table"
|
2826 |
msgstr ""
|
2827 |
|
2828 |
#. translators: WordPress custom user meta table.
|
2829 |
-
#: lib/menu_tools_diagnostic.php:
|
2830 |
#: views/diagnostics/text.php:157
|
2831 |
msgid "Overridden permissions for a new folder"
|
2832 |
msgstr ""
|
2833 |
|
2834 |
-
#: lib/menu_tools_diagnostic.php:
|
2835 |
#: views/diagnostics/text.php:158
|
2836 |
msgid "Overridden permissions for a new file"
|
2837 |
msgstr ""
|
2838 |
|
2839 |
-
#: lib/menu_tools_diagnostic.php:
|
2840 |
#: views/diagnostics/text.php:159
|
2841 |
msgid "Alternate WP cron"
|
2842 |
msgstr ""
|
2843 |
|
2844 |
-
#: lib/menu_tools_diagnostic.php:
|
2845 |
#: views/diagnostics/text.php:160
|
2846 |
msgid "WP cron status"
|
2847 |
msgstr ""
|
2848 |
|
2849 |
-
#: lib/menu_tools_diagnostic.php:
|
2850 |
#: views/diagnostics/text.php:161
|
2851 |
msgid "Cron running frequency lock"
|
2852 |
msgstr ""
|
2853 |
|
2854 |
-
#: lib/menu_tools_diagnostic.php:
|
2855 |
#: views/diagnostics/text.php:162
|
2856 |
msgid "Interval the trash is automatically emptied at in days"
|
2857 |
msgstr ""
|
2858 |
|
2859 |
-
#: lib/menu_tools_diagnostic.php:
|
2860 |
-
#: lib/wordfenceClass.php:
|
2861 |
#: views/diagnostics/text.php:162
|
2862 |
msgid "Never"
|
2863 |
msgstr ""
|
2864 |
|
2865 |
-
#: lib/menu_tools_diagnostic.php:
|
2866 |
#: views/diagnostics/text.php:163
|
2867 |
msgid "Automatic database repair"
|
2868 |
msgstr ""
|
2869 |
|
2870 |
-
#: lib/menu_tools_diagnostic.php:
|
2871 |
#: views/diagnostics/text.php:164
|
2872 |
msgid "Do not upgrade global tables"
|
2873 |
msgstr ""
|
2874 |
|
2875 |
-
#: lib/menu_tools_diagnostic.php:
|
2876 |
#: views/diagnostics/text.php:165
|
2877 |
msgid "Disallow plugin/theme editing"
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#: lib/menu_tools_diagnostic.php:
|
2881 |
#: views/diagnostics/text.php:166
|
2882 |
msgid "Disallow plugin/theme update and installation"
|
2883 |
msgstr ""
|
2884 |
|
2885 |
-
#: lib/menu_tools_diagnostic.php:
|
2886 |
#: views/diagnostics/text.php:167
|
2887 |
msgid "Overwrite image edits when restoring the original"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
-
#: lib/menu_tools_diagnostic.php:
|
2891 |
#: views/diagnostics/text.php:168
|
2892 |
msgid "Force SSL for administrative logins"
|
2893 |
msgstr ""
|
2894 |
|
2895 |
-
#: lib/menu_tools_diagnostic.php:
|
2896 |
#: views/diagnostics/text.php:169
|
2897 |
msgid "Block external URL requests"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: lib/menu_tools_diagnostic.php:
|
2901 |
#: views/diagnostics/text.php:170
|
2902 |
msgid "Allowlisted hosts"
|
2903 |
msgstr ""
|
2904 |
|
2905 |
-
#: lib/menu_tools_diagnostic.php:
|
2906 |
#: views/diagnostics/text.php:171
|
2907 |
msgid "Automatic WP Core updates"
|
2908 |
msgstr ""
|
2909 |
|
2910 |
-
#: lib/menu_tools_diagnostic.php:
|
2911 |
#: views/diagnostics/text.php:171
|
2912 |
msgid "Everything"
|
2913 |
msgstr ""
|
2914 |
|
2915 |
-
#: lib/menu_tools_diagnostic.php:
|
2916 |
#: views/diagnostics/text.php:171
|
2917 |
msgid "Default"
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#: lib/menu_tools_diagnostic.php:
|
2921 |
#: views/diagnostics/text.php:172
|
2922 |
msgid "Hostname for a proxy server"
|
2923 |
msgstr ""
|
2924 |
|
2925 |
-
#: lib/menu_tools_diagnostic.php:
|
2926 |
#: views/diagnostics/text.php:173
|
2927 |
msgid "Port for a proxy server"
|
2928 |
msgstr ""
|
2929 |
|
2930 |
-
#: lib/menu_tools_diagnostic.php:
|
2931 |
#: views/diagnostics/text.php:174
|
2932 |
msgid "Multisite enabled"
|
2933 |
msgstr ""
|
2934 |
|
2935 |
-
#: lib/menu_tools_diagnostic.php:
|
2936 |
#: views/diagnostics/text.php:175
|
2937 |
msgid "Multisite/network ability enabled"
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#: lib/menu_tools_diagnostic.php:
|
2941 |
#: views/diagnostics/text.php:176
|
2942 |
msgid "Multisite enabled, WordPress will load the /wp-content/sunrise.php file"
|
2943 |
msgstr ""
|
2944 |
|
2945 |
-
#: lib/menu_tools_diagnostic.php:
|
2946 |
#: views/diagnostics/text.php:177
|
2947 |
msgid "Multisite enabled, subdomain installation constant"
|
2948 |
msgstr ""
|
2949 |
|
2950 |
-
#: lib/menu_tools_diagnostic.php:
|
2951 |
#: views/diagnostics/text.php:178
|
2952 |
msgid "Multisite enabled, Older subdomain installation constant"
|
2953 |
msgstr ""
|
2954 |
|
2955 |
-
#: lib/menu_tools_diagnostic.php:
|
2956 |
#: views/diagnostics/text.php:179
|
2957 |
msgid "Defines the multisite domain for the current site"
|
2958 |
msgstr ""
|
2959 |
|
2960 |
-
#: lib/menu_tools_diagnostic.php:
|
2961 |
#: views/diagnostics/text.php:180
|
2962 |
msgid "Defines the multisite path for the current site"
|
2963 |
msgstr ""
|
2964 |
|
2965 |
-
#: lib/menu_tools_diagnostic.php:
|
2966 |
#: views/diagnostics/text.php:181
|
2967 |
msgid "Defines the multisite database ID for the current site"
|
2968 |
msgstr ""
|
2969 |
|
2970 |
-
#: lib/menu_tools_diagnostic.php:
|
2971 |
#: views/diagnostics/text.php:182
|
2972 |
msgid "Disable the fatal error handler"
|
2973 |
msgstr ""
|
2974 |
|
2975 |
-
#: lib/menu_tools_diagnostic.php:
|
2976 |
#: views/diagnostics/text.php:220
|
2977 |
msgid "WordPress Plugins"
|
2978 |
msgstr ""
|
2979 |
|
2980 |
-
#: lib/menu_tools_diagnostic.php:
|
2981 |
#: views/diagnostics/text.php:220
|
2982 |
msgid "Status of installed plugins."
|
2983 |
msgstr ""
|
2984 |
|
2985 |
#. translators: Plugin version.
|
2986 |
#. translators: Theme version.
|
2987 |
-
#: lib/menu_tools_diagnostic.php:
|
2988 |
-
#: lib/menu_tools_diagnostic.php:
|
2989 |
-
#: lib/menu_tools_diagnostic.php:
|
2990 |
#: views/diagnostics/text.php:238
|
2991 |
#: views/diagnostics/text.php:277
|
2992 |
#: views/diagnostics/text.php:351
|
2993 |
msgid "Version %s"
|
2994 |
msgstr ""
|
2995 |
|
2996 |
-
#: lib/menu_tools_diagnostic.php:
|
2997 |
#: views/diagnostics/text.php:242
|
2998 |
msgid "Network Activated"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
-
#: lib/menu_tools_diagnostic.php:
|
3002 |
-
#: lib/menu_tools_diagnostic.php:
|
3003 |
-
#: lib/menu_tools_diagnostic.php:
|
3004 |
-
#: lib/menu_tools_diagnostic.php:
|
3005 |
#: views/diagnostics/text.php:244
|
3006 |
#: views/diagnostics/text.php:282
|
3007 |
#: views/diagnostics/text.php:324
|
@@ -3009,132 +3247,192 @@ msgstr ""
|
|
3009 |
msgid "Active"
|
3010 |
msgstr ""
|
3011 |
|
3012 |
-
#: lib/menu_tools_diagnostic.php:
|
3013 |
-
#: lib/menu_tools_diagnostic.php:
|
3014 |
-
#: lib/menu_tools_diagnostic.php:
|
3015 |
#: views/diagnostics/text.php:246
|
3016 |
#: views/diagnostics/text.php:324
|
3017 |
#: views/diagnostics/text.php:357
|
3018 |
msgid "Inactive"
|
3019 |
msgstr ""
|
3020 |
|
3021 |
-
#: lib/menu_tools_diagnostic.php:
|
3022 |
#: views/diagnostics/text.php:258
|
3023 |
msgid "Must-Use WordPress Plugins"
|
3024 |
msgstr ""
|
3025 |
|
3026 |
-
#: lib/menu_tools_diagnostic.php:
|
3027 |
#: views/diagnostics/text.php:258
|
3028 |
msgid "WordPress \"mu-plugins\" that are always active, including those provided by hosts."
|
3029 |
msgstr ""
|
3030 |
|
3031 |
-
#: lib/menu_tools_diagnostic.php:
|
3032 |
#: views/diagnostics/text.php:287
|
3033 |
msgid "No MU-Plugins"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
-
#: lib/menu_tools_diagnostic.php:
|
3037 |
#: views/diagnostics/text.php:296
|
3038 |
msgid "Drop-In WordPress Plugins"
|
3039 |
msgstr ""
|
3040 |
|
3041 |
-
#: lib/menu_tools_diagnostic.php:
|
3042 |
#: views/diagnostics/text.php:296
|
3043 |
msgid "WordPress \"drop-in\" plugins that are active."
|
3044 |
msgstr ""
|
3045 |
|
3046 |
-
#: lib/menu_tools_diagnostic.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3047 |
#: views/diagnostics/text.php:332
|
3048 |
#: views/reports/activity-report-email-inline.php:392
|
3049 |
#: views/reports/activity-report.php:191
|
3050 |
msgid "Themes"
|
3051 |
msgstr ""
|
3052 |
|
3053 |
-
#: lib/menu_tools_diagnostic.php:
|
3054 |
#: views/diagnostics/text.php:332
|
3055 |
msgid "Status of installed themes."
|
3056 |
msgstr ""
|
3057 |
|
3058 |
-
#: lib/menu_tools_diagnostic.php:
|
3059 |
#: views/diagnostics/text.php:366
|
3060 |
msgid "No Themes"
|
3061 |
msgstr ""
|
3062 |
|
3063 |
-
#: lib/menu_tools_diagnostic.php:
|
3064 |
#: views/diagnostics/text.php:375
|
3065 |
msgid "Cron Jobs"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
-
#: lib/menu_tools_diagnostic.php:
|
3069 |
#: views/diagnostics/text.php:375
|
3070 |
msgid "List of WordPress cron jobs scheduled by WordPress, plugins, or themes."
|
3071 |
msgstr ""
|
3072 |
|
3073 |
-
#: lib/menu_tools_diagnostic.php:
|
3074 |
#: views/diagnostics/text.php:390
|
3075 |
msgid "Overdue"
|
3076 |
msgstr ""
|
3077 |
|
3078 |
-
#: lib/menu_tools_diagnostic.php:
|
3079 |
#: views/diagnostics/text.php:402
|
3080 |
msgid "Database Tables"
|
3081 |
msgstr ""
|
3082 |
|
3083 |
-
#: lib/menu_tools_diagnostic.php:
|
3084 |
#: views/diagnostics/text.php:402
|
3085 |
msgid "Database table names, sizes, timestamps, and other metadata."
|
3086 |
msgstr ""
|
3087 |
|
3088 |
-
#: lib/menu_tools_diagnostic.php:
|
3089 |
msgid "Wordfence Table Check"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
-
#: lib/menu_tools_diagnostic.php:
|
3093 |
#: views/diagnostics/text.php:420
|
3094 |
msgid "Unable to verify - table count too high"
|
3095 |
msgstr ""
|
3096 |
|
3097 |
-
#: lib/menu_tools_diagnostic.php:
|
3098 |
#: views/diagnostics/text.php:453
|
3099 |
msgid "All Tables Exist"
|
3100 |
msgstr ""
|
3101 |
|
3102 |
#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
|
3103 |
-
#: lib/menu_tools_diagnostic.php:
|
3104 |
msgid "Tables missing (prefix %1$s, %2$s): %3$s"
|
3105 |
msgstr ""
|
3106 |
|
3107 |
#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
|
3108 |
#. translators: 1. WordPress table prefix. 2. Wordfence tables.
|
3109 |
-
#: lib/menu_tools_diagnostic.php:
|
3110 |
#: views/diagnostics/text.php:455
|
3111 |
msgid "lowercase"
|
3112 |
msgstr ""
|
3113 |
|
3114 |
#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
|
3115 |
#. translators: 1. WordPress table prefix. 2. Wordfence tables.
|
3116 |
-
#: lib/menu_tools_diagnostic.php:
|
3117 |
#: views/diagnostics/text.php:455
|
3118 |
msgid "regular case"
|
3119 |
msgstr ""
|
3120 |
|
3121 |
#. translators: Row/record count.
|
3122 |
-
#: lib/menu_tools_diagnostic.php:
|
3123 |
#: views/diagnostics/text.php:489
|
3124 |
msgid "and %d more"
|
3125 |
msgstr ""
|
3126 |
|
3127 |
-
#: lib/menu_tools_diagnostic.php:
|
3128 |
#: views/diagnostics/text.php:500
|
3129 |
msgid "Log Files"
|
3130 |
msgstr ""
|
3131 |
|
3132 |
-
#: lib/menu_tools_diagnostic.php:
|
3133 |
#: views/diagnostics/text.php:500
|
3134 |
msgid "PHP error logs generated by your site, if enabled by your host."
|
3135 |
msgstr ""
|
3136 |
|
3137 |
-
#: lib/menu_tools_diagnostic.php:
|
3138 |
#: views/diagnostics/text.php:506
|
3139 |
#: views/reports/activity-report-email-inline.php:341
|
3140 |
#: views/scanner/issue-file.php:8
|
@@ -3142,133 +3440,133 @@ msgstr ""
|
|
3142 |
msgid "File"
|
3143 |
msgstr ""
|
3144 |
|
3145 |
-
#: lib/menu_tools_diagnostic.php:
|
3146 |
-
#: lib/menu_tools_diagnostic.php:
|
3147 |
-
#: lib/wordfenceClass.php:
|
3148 |
msgid "Download"
|
3149 |
msgstr ""
|
3150 |
|
3151 |
-
#: lib/menu_tools_diagnostic.php:
|
3152 |
#: views/diagnostics/text.php:513
|
3153 |
msgid "No log files found."
|
3154 |
msgstr ""
|
3155 |
|
3156 |
-
#: lib/menu_tools_diagnostic.php:
|
3157 |
#: views/diagnostics/text.php:532
|
3158 |
msgid "UTC"
|
3159 |
msgstr ""
|
3160 |
|
3161 |
-
#: lib/menu_tools_diagnostic.php:
|
3162 |
msgid "Requires downloading from the server directly"
|
3163 |
msgstr ""
|
3164 |
|
3165 |
-
#: lib/menu_tools_diagnostic.php:
|
3166 |
#: views/diagnostics/text.php:553
|
3167 |
msgid "Scan Issues"
|
3168 |
msgstr ""
|
3169 |
|
3170 |
#. translators: Number of scan issues.
|
3171 |
-
#: lib/menu_tools_diagnostic.php:
|
3172 |
#: views/diagnostics/text.php:561
|
3173 |
msgid "New Issues (%d total)"
|
3174 |
msgstr ""
|
3175 |
|
3176 |
-
#: lib/menu_tools_diagnostic.php:
|
3177 |
-
#: lib/wordfenceClass.php:
|
3178 |
#: views/diagnostics/text.php:584
|
3179 |
msgid "No New Issues"
|
3180 |
msgstr ""
|
3181 |
|
3182 |
-
#: lib/menu_tools_diagnostic.php:
|
3183 |
msgid "Other Tests"
|
3184 |
msgstr ""
|
3185 |
|
3186 |
-
#: lib/menu_tools_diagnostic.php:
|
3187 |
msgid "System configuration, memory test, send test email from this server."
|
3188 |
msgstr ""
|
3189 |
|
3190 |
-
#: lib/menu_tools_diagnostic.php:
|
3191 |
msgid "Click to view your system's configuration in a new window"
|
3192 |
msgstr ""
|
3193 |
|
3194 |
-
#: lib/menu_tools_diagnostic.php:
|
3195 |
msgid "Test your WordPress host's available memory"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
-
#: lib/menu_tools_diagnostic.php:
|
3199 |
msgid "Send a test email from this WordPress server to an email address:"
|
3200 |
msgstr ""
|
3201 |
|
3202 |
-
#: lib/menu_tools_diagnostic.php:
|
3203 |
msgid "Send Test Email"
|
3204 |
msgstr ""
|
3205 |
|
3206 |
-
#: lib/menu_tools_diagnostic.php:
|
3207 |
msgid "Send a test activity report email:"
|
3208 |
msgstr ""
|
3209 |
|
3210 |
-
#: lib/menu_tools_diagnostic.php:
|
3211 |
msgid "Send Test Activity Report"
|
3212 |
msgstr ""
|
3213 |
|
3214 |
-
#: lib/menu_tools_diagnostic.php:
|
3215 |
msgid "Clear all Wordfence Central connection data"
|
3216 |
msgstr ""
|
3217 |
|
3218 |
-
#: lib/menu_tools_diagnostic.php:
|
3219 |
msgid "Clear Connection Data"
|
3220 |
msgstr ""
|
3221 |
|
3222 |
-
#: lib/menu_tools_diagnostic.php:
|
3223 |
msgid "Debugging Options"
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
#: lib/menu_tools_diagnostic.php:
|
3227 |
msgid "Enable debugging mode (increases database load)"
|
3228 |
msgstr ""
|
3229 |
|
3230 |
-
#: lib/menu_tools_diagnostic.php:
|
3231 |
msgid "Start all scans remotely (Try this if your scans aren't starting and your site is publicly accessible)"
|
3232 |
msgstr ""
|
3233 |
|
3234 |
-
#: lib/menu_tools_diagnostic.php:
|
3235 |
msgid "Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#: lib/menu_tools_diagnostic.php:
|
3239 |
msgid "Disable reading of php://input"
|
3240 |
msgstr ""
|
3241 |
|
3242 |
-
#: lib/menu_tools_diagnostic.php:
|
3243 |
msgid "Enable beta threat defense feed"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
-
#: lib/menu_tools_diagnostic.php:
|
3247 |
-
#: lib/wordfenceClass.php:
|
3248 |
msgid "Restore Defaults"
|
3249 |
msgstr ""
|
3250 |
|
3251 |
-
#: lib/menu_tools_diagnostic.php:
|
3252 |
-
#: lib/wordfenceClass.php:
|
3253 |
msgid "Cancel Changes"
|
3254 |
msgstr ""
|
3255 |
|
3256 |
-
#: lib/menu_tools_diagnostic.php:
|
3257 |
-
#: lib/wordfenceClass.php:
|
3258 |
msgid "Save Changes"
|
3259 |
msgstr ""
|
3260 |
|
3261 |
-
#: lib/menu_tools_diagnostic.php:
|
3262 |
#: views/options/block-all-options-controls.php:162
|
3263 |
#: views/options/block-controls.php:77
|
3264 |
msgid "Confirm Restore Defaults"
|
3265 |
msgstr ""
|
3266 |
|
3267 |
-
#: lib/menu_tools_diagnostic.php:
|
3268 |
msgid "Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page."
|
3269 |
msgstr ""
|
3270 |
|
3271 |
-
#: lib/menu_tools_diagnostic.php:
|
3272 |
#: views/options/block-all-options-controls.php:165
|
3273 |
#: views/options/block-controls.php:80
|
3274 |
msgid "Restore<span class=\"wf-hidden-xs\"> Defaults</span>"
|
@@ -3276,25 +3574,16 @@ msgstr ""
|
|
3276 |
|
3277 |
#. translators: URL to support page.
|
3278 |
#: lib/menu_tools_importExport.php:16
|
3279 |
-
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about importing and exporting options</span></a>"
|
3280 |
-
msgstr ""
|
3281 |
-
|
3282 |
-
#: lib/menu_tools_importExport.php:20
|
3283 |
-
msgid "To clone one site's configuration to another, use the import/export tools below."
|
3284 |
msgstr ""
|
3285 |
|
3286 |
-
#: lib/
|
3287 |
-
|
3288 |
-
#: lib/menu_tools_livetraffic.php:571
|
3289 |
-
#: lib/menu_tools_livetraffic.php:602
|
3290 |
-
#: lib/wordfenceClass.php:6573
|
3291 |
-
#: models/page/wfPage.php:119
|
3292 |
-
msgid "Live Traffic"
|
3293 |
msgstr ""
|
3294 |
|
3295 |
#. translators: URL to support page.
|
3296 |
#: lib/menu_tools_livetraffic.php:44
|
3297 |
-
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about Live Traffic</span></a>"
|
3298 |
msgstr ""
|
3299 |
|
3300 |
#: lib/menu_tools_livetraffic.php:51
|
@@ -3316,7 +3605,7 @@ msgstr ""
|
|
3316 |
#. translators: URL to support page.
|
3317 |
#: lib/menu_tools_livetraffic.php:77
|
3318 |
#: lib/menu_tools_livetraffic.php:86
|
3319 |
-
msgid " (host setting <a href=\"%s\" class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\"></a>)"
|
3320 |
msgstr ""
|
3321 |
|
3322 |
#: lib/menu_tools_livetraffic.php:78
|
@@ -3334,14 +3623,14 @@ msgstr ""
|
|
3334 |
#: lib/menu_tools_livetraffic.php:100
|
3335 |
#: lib/menu_tools_livetraffic.php:227
|
3336 |
#: lib/menu_tools_livetraffic.php:458
|
3337 |
-
#: lib/wordfenceClass.php:
|
3338 |
msgid "Human"
|
3339 |
msgstr ""
|
3340 |
|
3341 |
#: lib/menu_tools_livetraffic.php:101
|
3342 |
#: lib/menu_tools_livetraffic.php:228
|
3343 |
#: lib/menu_tools_livetraffic.php:458
|
3344 |
-
#: lib/wordfenceClass.php:
|
3345 |
msgid "Bot"
|
3346 |
msgstr ""
|
3347 |
|
@@ -3350,8 +3639,8 @@ msgid "Warning"
|
|
3350 |
msgstr ""
|
3351 |
|
3352 |
#: lib/menu_tools_livetraffic.php:103
|
3353 |
-
#: lib/wfDiagnostic.php:
|
3354 |
-
#: lib/wordfenceClass.php:
|
3355 |
msgid "Blocked"
|
3356 |
msgstr ""
|
3357 |
|
@@ -3444,7 +3733,7 @@ msgid "%s hits"
|
|
3444 |
msgstr ""
|
3445 |
|
3446 |
#: lib/menu_tools_livetraffic.php:286
|
3447 |
-
#: lib/wordfenceClass.php:
|
3448 |
msgid "Type"
|
3449 |
msgstr ""
|
3450 |
|
@@ -3457,7 +3746,7 @@ msgid "Page Visited"
|
|
3457 |
msgstr ""
|
3458 |
|
3459 |
#: lib/menu_tools_livetraffic.php:289
|
3460 |
-
#: lib/wf503.php:
|
3461 |
#: views/reports/activity-report-email-inline.php:294
|
3462 |
msgid "Time"
|
3463 |
msgstr ""
|
@@ -3467,7 +3756,7 @@ msgid "IP Address"
|
|
3467 |
msgstr ""
|
3468 |
|
3469 |
#: lib/menu_tools_livetraffic.php:291
|
3470 |
-
#: lib/wordfenceClass.php:
|
3471 |
#: views/blocking/blocking-create.php:193
|
3472 |
msgid "Hostname"
|
3473 |
msgstr ""
|
@@ -3609,12 +3898,6 @@ msgstr ""
|
|
3609 |
msgid "Live traffic now defaults to a summary view. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch. New installations will only log security-related traffic by default, though your previous setting has been preserved."
|
3610 |
msgstr ""
|
3611 |
|
3612 |
-
#: lib/menu_tools_twoFactor.php:14
|
3613 |
-
#: lib/menu_tools_twoFactor.php:23
|
3614 |
-
#: models/page/wfPage.php:117
|
3615 |
-
msgid "Two-Factor Authentication"
|
3616 |
-
msgstr ""
|
3617 |
-
|
3618 |
#: lib/menu_tools_twoFactor.php:16
|
3619 |
msgid "Learn more<span class=\"wf-hidden-xs\"> about Two-Factor Authentication</span>"
|
3620 |
msgstr ""
|
@@ -3813,16 +4096,9 @@ msgstr ""
|
|
3813 |
msgid "Your site is now using the legacy two-factor authentication system."
|
3814 |
msgstr ""
|
3815 |
|
3816 |
-
#: lib/menu_tools_whois.php:7
|
3817 |
-
#: lib/menu_tools_whois.php:16
|
3818 |
-
#: lib/menu_tools_whois.php:75
|
3819 |
-
#: models/page/wfPage.php:123
|
3820 |
-
msgid "Whois Lookup"
|
3821 |
-
msgstr ""
|
3822 |
-
|
3823 |
#. translators: URL to support page.
|
3824 |
#: lib/menu_tools_whois.php:19
|
3825 |
-
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about Whois Lookup</span></a>"
|
3826 |
msgstr ""
|
3827 |
|
3828 |
#: lib/menu_tools_whois.php:23
|
@@ -3833,23 +4109,28 @@ msgstr ""
|
|
3833 |
msgid "How to block a network"
|
3834 |
msgstr ""
|
3835 |
|
|
|
|
|
|
|
|
|
|
|
3836 |
#: lib/menu_tools_whois.php:95
|
3837 |
-
#: lib/wordfenceClass.php:
|
3838 |
msgid "Enter a valid IP or domain"
|
3839 |
msgstr ""
|
3840 |
|
3841 |
#: lib/menu_tools_whois.php:95
|
3842 |
-
#: lib/wordfenceClass.php:
|
3843 |
msgid "Please enter a valid IP address or domain name for your whois lookup."
|
3844 |
msgstr ""
|
3845 |
|
3846 |
#: lib/menu_tools_whois.php:99
|
3847 |
-
#: lib/wordfenceClass.php:
|
3848 |
msgid "Loading..."
|
3849 |
msgstr ""
|
3850 |
|
3851 |
#: lib/menu_tools_whois.php:104
|
3852 |
-
#: lib/wordfenceClass.php:
|
3853 |
msgid "Look up IP or Domain"
|
3854 |
msgstr ""
|
3855 |
|
@@ -3879,7 +4160,7 @@ msgstr ""
|
|
3879 |
|
3880 |
#: lib/menu_wordfence_central.php:44
|
3881 |
#: lib/menu_wordfence_central.php:57
|
3882 |
-
#: lib/wordfenceClass.php:
|
3883 |
msgid "Wordfence Central"
|
3884 |
msgstr ""
|
3885 |
|
@@ -3962,20 +4243,20 @@ msgstr ""
|
|
3962 |
#. translators: Error message.
|
3963 |
#: lib/rest-api/wfRESTConfigController.php:215
|
3964 |
#: lib/rest-api/wfRESTConfigController.php:258
|
3965 |
-
#: lib/wordfenceClass.php:
|
3966 |
msgid "An error occurred while saving the configuration: %s"
|
3967 |
msgstr ""
|
3968 |
|
3969 |
#. translators: Error message.
|
3970 |
#: lib/rest-api/wfRESTConfigController.php:226
|
3971 |
#: lib/rest-api/wfRESTConfigController.php:269
|
3972 |
-
#: lib/wordfenceClass.php:
|
3973 |
msgid "Errors occurred while saving the configuration: %s"
|
3974 |
msgstr ""
|
3975 |
|
3976 |
#: lib/rest-api/wfRESTConfigController.php:231
|
3977 |
#: lib/rest-api/wfRESTConfigController.php:274
|
3978 |
-
#: lib/wordfenceClass.php:
|
3979 |
msgid "Errors occurred while saving the configuration."
|
3980 |
msgstr ""
|
3981 |
|
@@ -4026,58 +4307,57 @@ msgstr ""
|
|
4026 |
msgid "Your access to this site has been limited"
|
4027 |
msgstr ""
|
4028 |
|
4029 |
-
#: lib/wf503.php:
|
4030 |
msgid "Your access to this site has been limited by the site owner"
|
4031 |
msgstr ""
|
4032 |
|
4033 |
-
#: lib/wf503.php:
|
4034 |
msgid "Your access to this service has been limited. (HTTP response code 503)"
|
4035 |
msgstr ""
|
4036 |
|
4037 |
-
#: lib/wf503.php:
|
4038 |
-
#: lib/wfLockedOut.php:
|
4039 |
msgid "If you think you have been blocked in error, contact the owner of this site for assistance."
|
4040 |
msgstr ""
|
4041 |
|
4042 |
-
#: lib/wf503.php:
|
4043 |
-
#: lib/wfLockedOut.php:
|
4044 |
msgid "Block Technical Data"
|
4045 |
msgstr ""
|
4046 |
|
4047 |
-
#: lib/wf503.php:
|
4048 |
msgid "Block Reason"
|
4049 |
msgstr ""
|
4050 |
|
4051 |
-
#: lib/wf503.php:
|
4052 |
-
#: lib/wfLockedOut.php:
|
4053 |
msgid "About Wordfence"
|
4054 |
msgstr ""
|
4055 |
|
4056 |
-
#: lib/wf503.php:
|
4057 |
-
#: lib/wfLockedOut.php:
|
4058 |
-
msgid "Wordfence is a security plugin installed on over
|
4059 |
msgstr ""
|
4060 |
|
4061 |
-
#: lib/wf503.php:
|
4062 |
-
#: lib/wfLockedOut.php:
|
4063 |
msgid "You can also read the documentation to learn about Wordfence's blocking tools, or visit wordfence.com to learn more about Wordfence."
|
4064 |
msgstr ""
|
4065 |
|
4066 |
#. translators: Support URL.
|
4067 |
-
#: lib/wf503.php:
|
4068 |
-
|
4069 |
-
msgid "Click here to learn more: <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Documentation</a>"
|
4070 |
msgstr ""
|
4071 |
|
4072 |
#. translators: Localized date.
|
4073 |
-
#: lib/wf503.php:
|
4074 |
-
#: lib/wfLockedOut.php:
|
4075 |
msgid "Generated by Wordfence at %s"
|
4076 |
msgstr ""
|
4077 |
|
4078 |
#. translators: Localized date.
|
4079 |
-
#: lib/wf503.php:
|
4080 |
-
#: lib/wfLockedOut.php:
|
4081 |
msgid "Your computer's time:"
|
4082 |
msgstr ""
|
4083 |
|
@@ -4093,50 +4373,51 @@ msgid "Wordfence activity for %1$s on %2$s"
|
|
4093 |
msgstr ""
|
4094 |
|
4095 |
#: lib/wfActivityReport.php:584
|
4096 |
-
#: lib/wordfenceClass.php:
|
4097 |
msgid "Blocked because the IP is blocklisted"
|
4098 |
msgstr ""
|
4099 |
|
4100 |
#. translators: Reason for firewall action.
|
4101 |
#: lib/wfActivityReport.php:587
|
4102 |
-
#: lib/wordfenceClass.php:
|
4103 |
msgid "Blocked for %s"
|
4104 |
msgstr ""
|
4105 |
|
4106 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4107 |
#: lib/wfActivityReport.php:599
|
4108 |
-
#: lib/wordfenceClass.php:
|
4109 |
msgid "Blocked for %1$s in query string: %2$s = %3$s"
|
4110 |
msgstr ""
|
4111 |
|
4112 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4113 |
#: lib/wfActivityReport.php:602
|
4114 |
-
#: lib/wordfenceClass.php:
|
4115 |
msgid "Blocked for %1$s in POST body: %2$s = %3$s"
|
4116 |
msgstr ""
|
4117 |
|
4118 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4119 |
#: lib/wfActivityReport.php:605
|
4120 |
-
#: lib/wordfenceClass.php:
|
4121 |
msgid "Blocked for %1$s in cookie: %2$s = %3$s"
|
4122 |
msgstr ""
|
4123 |
|
4124 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4125 |
#: lib/wfActivityReport.php:608
|
4126 |
-
#: lib/wordfenceClass.php:
|
4127 |
msgid "Blocked for %1$s in file: %2$s = %3$s"
|
4128 |
msgstr ""
|
4129 |
|
4130 |
#: lib/wfActivityReport.php:752
|
4131 |
-
#: lib/wfDiagnostic.php:
|
4132 |
#: models/block/wfBlock.php:95
|
4133 |
msgid "Unknown"
|
4134 |
msgstr ""
|
4135 |
|
4136 |
-
#: lib/wfAdminNoticeQueue.php:
|
4137 |
-
#: lib/wordfenceClass.php:
|
4138 |
-
#: lib/wordfenceClass.php:
|
4139 |
-
#: lib/wordfenceClass.php:
|
|
|
4140 |
msgid "Dismiss"
|
4141 |
msgstr ""
|
4142 |
|
@@ -4274,6 +4555,11 @@ msgstr ""
|
|
4274 |
msgid "There was an unknown error connecting to the Wordfence scanning servers."
|
4275 |
msgstr ""
|
4276 |
|
|
|
|
|
|
|
|
|
|
|
4277 |
#: lib/wfBulkCountries.php:5
|
4278 |
msgid "Andorra"
|
4279 |
msgstr ""
|
@@ -5363,7 +5649,7 @@ msgid "Unable to remove code execution protections applied to the .htaccess file
|
|
5363 |
msgstr ""
|
5364 |
|
5365 |
#: lib/wfConfig.php:1174
|
5366 |
-
#: lib/wordfenceClass.php:
|
5367 |
msgid "The grace period end time must be in the future."
|
5368 |
msgstr ""
|
5369 |
|
@@ -5401,7 +5687,7 @@ msgid "An empty license key was entered."
|
|
5401 |
msgstr ""
|
5402 |
|
5403 |
#: lib/wfConfig.php:1300
|
5404 |
-
#: lib/wordfenceClass.php:
|
5405 |
msgid "The license key entered is not in a valid format. It must contain only numbers and the letters A-F."
|
5406 |
msgstr ""
|
5407 |
|
@@ -5568,7 +5854,7 @@ msgstr ""
|
|
5568 |
|
5569 |
#. translators: Support URL.
|
5570 |
#: lib/wfDiagnostic.php:111
|
5571 |
-
msgid "PHP version >= PHP 5.6.20<br><em> (<a href=\"https://wordpress.org/about/requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Minimum version required by WordPress</a>)</em> <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp\"></a>"
|
5572 |
msgstr ""
|
5573 |
|
5574 |
#. translators: Support URL.
|
@@ -5609,7 +5895,7 @@ msgid "cURL libz Version"
|
|
5609 |
msgstr ""
|
5610 |
|
5611 |
#: lib/wfDiagnostic.php:121
|
5612 |
-
msgid "Checking <code>display_errors</code><br><em> (<a href=\"http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors\" target=\"_blank\" rel=\"noopener noreferrer\">Should be disabled on production servers</a>)</em>"
|
5613 |
msgstr ""
|
5614 |
|
5615 |
#: lib/wfDiagnostic.php:125
|
@@ -5641,7 +5927,7 @@ msgid "Wordfence Network Time"
|
|
5641 |
msgstr ""
|
5642 |
|
5643 |
#: lib/wfDiagnostic.php:137
|
5644 |
-
#: lib/wfDiagnostic.php:
|
5645 |
msgid "Server Time"
|
5646 |
msgstr ""
|
5647 |
|
@@ -5654,109 +5940,137 @@ msgid "NTP Time Offset"
|
|
5654 |
msgstr ""
|
5655 |
|
5656 |
#: lib/wfDiagnostic.php:140
|
5657 |
-
msgid "
|
5658 |
msgstr ""
|
5659 |
|
5660 |
#: lib/wfDiagnostic.php:141
|
|
|
|
|
|
|
|
|
5661 |
msgid "WordPress Time Zone"
|
5662 |
msgstr ""
|
5663 |
|
5664 |
#. translators: Number of jobs.
|
5665 |
-
#: lib/wfDiagnostic.php:
|
5666 |
msgid "%d Job Overdue"
|
5667 |
msgid_plural "%d Jobs Overdue"
|
5668 |
msgstr[0] ""
|
5669 |
msgstr[1] ""
|
5670 |
|
5671 |
#. translators: Number of jobs.
|
5672 |
-
#: lib/wfDiagnostic.php:
|
5673 |
msgid "Normal"
|
5674 |
msgstr ""
|
5675 |
|
5676 |
-
#: lib/wfDiagnostic.php:
|
5677 |
-
#: lib/wfDiagnostic.php:
|
5678 |
msgid "No files readable"
|
5679 |
msgstr ""
|
5680 |
|
5681 |
#. translators: File name.
|
5682 |
-
#: lib/wfDiagnostic.php:
|
5683 |
-
#: lib/wfDiagnostic.php:
|
5684 |
msgid "File \"%s\" does not exist"
|
5685 |
msgstr ""
|
5686 |
|
5687 |
#. translators: File path.
|
5688 |
-
#: lib/wfDiagnostic.php:
|
5689 |
msgid "File \"%s\" is unreadable"
|
5690 |
msgstr ""
|
5691 |
|
5692 |
-
#: lib/wfDiagnostic.php:
|
5693 |
-
#: lib/wfDiagnostic.php:
|
5694 |
msgid "No files writable"
|
5695 |
msgstr ""
|
5696 |
|
5697 |
#. translators: File name.
|
5698 |
-
#: lib/wfDiagnostic.php:
|
5699 |
msgid "File \"%s\" is unwritable"
|
5700 |
msgstr ""
|
5701 |
|
5702 |
-
#: lib/wfDiagnostic.php:
|
5703 |
msgid "Basic config writing"
|
5704 |
msgstr ""
|
5705 |
|
5706 |
-
#: lib/wfDiagnostic.php:
|
5707 |
msgid "Serialized config writing"
|
5708 |
msgstr ""
|
5709 |
|
5710 |
-
#: lib/wfDiagnostic.php:
|
5711 |
msgid "(default)"
|
5712 |
msgstr ""
|
5713 |
|
|
|
|
|
|
|
|
|
5714 |
#. translators: Unix file permissions in octal (example 0777).
|
5715 |
-
#: lib/wfDiagnostic.php:
|
5716 |
msgid "%s - using constant"
|
5717 |
msgstr ""
|
5718 |
|
5719 |
#. translators: Unix file permissions in octal (example 0777).
|
5720 |
-
#: lib/wfDiagnostic.php:
|
5721 |
msgid "%s - using template"
|
5722 |
msgstr ""
|
5723 |
|
5724 |
-
#: lib/wfDiagnostic.php:
|
5725 |
msgid "0660 - using default"
|
5726 |
msgstr ""
|
5727 |
|
5728 |
-
#: lib/wfDiagnostic.php:
|
5729 |
msgid "Unavailable"
|
5730 |
msgstr ""
|
5731 |
|
5732 |
-
#: lib/wfDiagnostic.php:
|
5733 |
-
#: lib/wfDiagnostic.php:
|
5734 |
msgid "wp_remote_post() test to noc1.wordfence.com failed! Response was: "
|
5735 |
msgstr ""
|
5736 |
|
5737 |
-
#: lib/wfDiagnostic.php:
|
5738 |
msgid "This likely means that your hosting provider is blocking requests to noc1.wordfence.com or has set up a proxy that is not behaving itself."
|
5739 |
msgstr ""
|
5740 |
|
5741 |
-
#: lib/wfDiagnostic.php:
|
5742 |
-
#: lib/wfDiagnostic.php:
|
5743 |
msgid "wp_remote_post() test back to this server failed! Response was: "
|
5744 |
msgstr ""
|
5745 |
|
5746 |
-
#: lib/wfDiagnostic.php:
|
5747 |
msgid "This additional info may help you diagnose the issue. The response headers we received were:"
|
5748 |
msgstr ""
|
5749 |
|
5750 |
#. translators: PHP super global key.
|
5751 |
-
#: lib/wfDiagnostic.php:
|
5752 |
msgid "We cannot read $_SERVER[%s]"
|
5753 |
msgstr ""
|
5754 |
|
5755 |
-
#: lib/wfDiagnostic.php:
|
5756 |
msgid "Should be: "
|
5757 |
msgstr ""
|
5758 |
|
5759 |
-
#: lib/wfDiagnostic.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5760 |
msgid "NTP"
|
5761 |
msgstr ""
|
5762 |
|
@@ -5788,30 +6102,34 @@ msgstr ""
|
|
5788 |
msgid "You are temporarily locked out"
|
5789 |
msgstr ""
|
5790 |
|
5791 |
-
#: lib/wfLockedOut.php:
|
5792 |
msgid "Your access to this site has been temporarily limited by the site owner"
|
5793 |
msgstr ""
|
5794 |
|
5795 |
-
#: lib/wfLockedOut.php:
|
5796 |
msgid "Your access to this service has been temporarily limited. Please try again in a few minutes. (HTTP response code 503)"
|
5797 |
msgstr ""
|
5798 |
|
5799 |
-
#: lib/wfLockedOut.php:
|
5800 |
msgid "Return to the site home page"
|
5801 |
msgstr ""
|
5802 |
|
5803 |
-
#: lib/wfLockedOut.php:
|
5804 |
msgid "Attempt to return to the admin login page (you may still be locked out)"
|
5805 |
msgstr ""
|
5806 |
|
5807 |
-
#: lib/wfLockedOut.php:
|
5808 |
msgid "Block Reason:"
|
5809 |
msgstr ""
|
5810 |
|
5811 |
-
#: lib/wfLockedOut.php:
|
5812 |
msgid "You have been temporarily locked out of this system. This means that you will not be able to log in for a while."
|
5813 |
msgstr ""
|
5814 |
|
|
|
|
|
|
|
|
|
5815 |
#: lib/wfLog.php:217
|
5816 |
msgid "Exceeded the maximum global requests per minute for crawlers or humans."
|
5817 |
msgstr ""
|
@@ -5871,7 +6189,7 @@ msgid "Access from your area has been temporarily limited for security reasons"
|
|
5871 |
msgstr ""
|
5872 |
|
5873 |
#: lib/wfLog.php:615
|
5874 |
-
#: lib/wordfenceClass.php:
|
5875 |
#: waf/wfWAFIPBlocksController.php:97
|
5876 |
msgid "Manual block by administrator"
|
5877 |
msgstr ""
|
@@ -5933,6 +6251,11 @@ msgstr ""
|
|
5933 |
msgid "Wordfence scan script accessed directly, or WF did not receive a cronkey."
|
5934 |
msgstr ""
|
5935 |
|
|
|
|
|
|
|
|
|
|
|
5936 |
#: lib/wfScan.php:81
|
5937 |
msgid "Wordfence could not find a saved cron key to start the scan so assuming it started and exiting."
|
5938 |
msgstr ""
|
@@ -5995,6 +6318,11 @@ msgstr ""
|
|
5995 |
msgid "Contacting Wordfence to initiate scan"
|
5996 |
msgstr ""
|
5997 |
|
|
|
|
|
|
|
|
|
|
|
5998 |
#: lib/wfScan.php:202
|
5999 |
msgid "Initiating quick scan"
|
6000 |
msgstr ""
|
@@ -6007,7 +6335,7 @@ msgstr ""
|
|
6007 |
#: lib/wfScan.php:263
|
6008 |
#: lib/wfScan.php:278
|
6009 |
#: lib/wfScan.php:293
|
6010 |
-
#: lib/wfScanEngine.php:
|
6011 |
msgid "Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s"
|
6012 |
msgstr ""
|
6013 |
|
@@ -6040,7 +6368,7 @@ msgstr[1] ""
|
|
6040 |
|
6041 |
#. translators: 1. Time duration. 2. Support URL.
|
6042 |
#: lib/wfScanEngine.php:278
|
6043 |
-
msgid "The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information
|
6044 |
msgstr ""
|
6045 |
|
6046 |
#: lib/wfScanEngine.php:282
|
@@ -6053,783 +6381,780 @@ msgid "Scan interrupted. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d pos
|
|
6053 |
msgstr ""
|
6054 |
|
6055 |
#. translators: Number of scan results.
|
6056 |
-
#: lib/wfScanEngine.php:
|
6057 |
msgid "Scan interrupted. You have %d new issue to fix. See below."
|
6058 |
msgid_plural "Scan interrupted. You have %d new issues to fix. See below."
|
6059 |
msgstr[0] ""
|
6060 |
msgstr[1] ""
|
6061 |
|
6062 |
-
#: lib/wfScanEngine.php:
|
6063 |
msgid "Scan interrupted. No problems found prior to stopping."
|
6064 |
msgstr ""
|
6065 |
|
6066 |
#. translators: 1. Software version. 2. Software version.
|
6067 |
-
#: lib/wfScanEngine.php:
|
6068 |
msgid "Aborting scan because WordPress updated from version %1$s to %2$s. The scan will be reattempted later."
|
6069 |
msgstr ""
|
6070 |
|
6071 |
-
#: lib/wfScanEngine.php:
|
6072 |
msgid "Forking during hash scan to ensure continuity."
|
6073 |
msgstr ""
|
6074 |
|
6075 |
-
#: lib/wfScanEngine.php:
|
6076 |
msgid "Entered fork()"
|
6077 |
msgstr ""
|
6078 |
|
6079 |
-
#: lib/wfScanEngine.php:
|
6080 |
msgid "Calling startScan(true)"
|
6081 |
msgstr ""
|
6082 |
|
6083 |
#. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration.
|
6084 |
-
#: lib/wfScanEngine.php:
|
6085 |
msgid "Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s."
|
6086 |
msgstr ""
|
6087 |
|
6088 |
#. translators: 1. Time duration.
|
6089 |
-
#: lib/wfScanEngine.php:
|
6090 |
msgid "Quick Scan Complete. Scanned in %s."
|
6091 |
msgstr ""
|
6092 |
|
6093 |
#. translators: Number of scan results.
|
6094 |
-
#: lib/wfScanEngine.php:
|
6095 |
msgid "%d ignored issue was also detected."
|
6096 |
msgid_plural "%d ignored issues were also detected."
|
6097 |
msgstr[0] ""
|
6098 |
msgstr[1] ""
|
6099 |
|
6100 |
#. translators: Number of scan results.
|
6101 |
-
#: lib/wfScanEngine.php:
|
6102 |
msgid "Scan complete. You have %d new issue to fix."
|
6103 |
msgid_plural "Scan complete. You have %d new issues to fix."
|
6104 |
msgstr[0] ""
|
6105 |
msgstr[1] ""
|
6106 |
|
6107 |
-
#: lib/wfScanEngine.php:
|
6108 |
msgid "See below."
|
6109 |
msgstr ""
|
6110 |
|
6111 |
-
#: lib/wfScanEngine.php:
|
6112 |
msgid "Scan complete. Congratulations, no new problems found."
|
6113 |
msgstr ""
|
6114 |
|
6115 |
-
#: lib/wfScanEngine.php:
|
6116 |
msgid "Checking if your site IP is generating spam"
|
6117 |
msgstr ""
|
6118 |
|
6119 |
-
#: lib/wfScanEngine.php:
|
6120 |
msgid "Checking if your IP is generating spam is for paid members only"
|
6121 |
msgstr ""
|
6122 |
|
6123 |
-
#: lib/wfScanEngine.php:
|
6124 |
msgid "Checking if your site is on a domain blocklist"
|
6125 |
msgstr ""
|
6126 |
|
6127 |
-
#: lib/wfScanEngine.php:
|
6128 |
msgid "Checking if your site is on a domain blocklist is for paid members only"
|
6129 |
msgstr ""
|
6130 |
|
6131 |
#. translators: Error message.
|
6132 |
-
#: lib/wfScanEngine.php:
|
6133 |
msgid "Error checking domain blocklists: %s"
|
6134 |
msgstr ""
|
6135 |
|
6136 |
#. translators: WordPress site ID.
|
6137 |
-
#: lib/wfScanEngine.php:
|
6138 |
msgid "The multisite blog with ID %d is listed on Google's Safe Browsing malware list."
|
6139 |
msgstr ""
|
6140 |
|
6141 |
-
#: lib/wfScanEngine.php:
|
6142 |
msgid "Your site is listed on Google's Safe Browsing malware list."
|
6143 |
msgstr ""
|
6144 |
|
6145 |
#. translators: 1. URL. 2. URL.
|
6146 |
-
#: lib/wfScanEngine.php:
|
6147 |
-
msgid "The URL %1$s is on the malware list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page
|
6148 |
msgstr ""
|
6149 |
|
6150 |
#. translators: WordPress site ID.
|
6151 |
-
#: lib/wfScanEngine.php:
|
6152 |
msgid "The multisite blog with ID %d is listed on Google's Safe Browsing phishing list."
|
6153 |
msgstr ""
|
6154 |
|
6155 |
-
#: lib/wfScanEngine.php:
|
6156 |
msgid "Your site is listed on Google's Safe Browsing phishing list."
|
6157 |
msgstr ""
|
6158 |
|
6159 |
#. translators: 1. URL. 2. URL.
|
6160 |
-
#: lib/wfScanEngine.php:
|
6161 |
-
msgid "The URL %1$s is on the phishing list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page
|
6162 |
msgstr ""
|
6163 |
|
6164 |
#. translators: WordPress site ID.
|
6165 |
-
#: lib/wfScanEngine.php:
|
6166 |
msgid "The multisite blog with ID %d is listed on the Wordfence domain blocklist."
|
6167 |
msgstr ""
|
6168 |
|
6169 |
-
#: lib/wfScanEngine.php:
|
6170 |
msgid "Your site is listed on the Wordfence domain blocklist."
|
6171 |
msgstr ""
|
6172 |
|
6173 |
#. translators: URL.
|
6174 |
-
#: lib/wfScanEngine.php:
|
6175 |
msgid "The URL %s is on the blocklist."
|
6176 |
msgstr ""
|
6177 |
|
6178 |
#. translators: WordPress site ID.
|
6179 |
-
#: lib/wfScanEngine.php:
|
6180 |
msgid "The multisite blog with ID %d is listed on a domain blocklist."
|
6181 |
msgstr ""
|
6182 |
|
6183 |
-
#: lib/wfScanEngine.php:
|
6184 |
msgid "Your site is listed on a domain blocklist."
|
6185 |
msgstr ""
|
6186 |
|
6187 |
#. translators: URL.
|
6188 |
-
#: lib/wfScanEngine.php:
|
6189 |
msgid "The URL is: %s"
|
6190 |
msgstr ""
|
6191 |
|
6192 |
-
#: lib/wfScanEngine.php:
|
6193 |
msgid "Checking for the most secure way to get IPs"
|
6194 |
msgstr ""
|
6195 |
|
6196 |
-
#: lib/wfScanEngine.php:
|
6197 |
msgid "Unable to accurately detect IPs"
|
6198 |
msgstr ""
|
6199 |
|
6200 |
#. translators: Support URL.
|
6201 |
-
#: lib/wfScanEngine.php:
|
6202 |
-
msgid "Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information
|
6203 |
msgstr ""
|
6204 |
|
6205 |
-
#: lib/wfScanEngine.php:
|
6206 |
-
#: lib/wordfenceClass.php:
|
6207 |
msgid "For maximum security use PHP's built in REMOTE_ADDR."
|
6208 |
msgstr ""
|
6209 |
|
6210 |
-
#: lib/wfScanEngine.php:
|
6211 |
-
#: lib/wordfenceClass.php:
|
6212 |
msgid "This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs."
|
6213 |
msgstr ""
|
6214 |
|
6215 |
-
#: lib/wfScanEngine.php:
|
6216 |
-
#: lib/wordfenceClass.php:
|
6217 |
msgid "This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs."
|
6218 |
msgstr ""
|
6219 |
|
6220 |
-
#: lib/wfScanEngine.php:
|
6221 |
-
#: lib/wordfenceClass.php:
|
6222 |
msgid "This site appears to be behind Cloudflare, so using the Cloudflare \"CF-Connecting-IP\" HTTP header will resolve to the correct IPs."
|
6223 |
msgstr ""
|
6224 |
|
6225 |
-
#: lib/wfScanEngine.php:
|
6226 |
msgid "'How does Wordfence get IPs' is misconfigured"
|
6227 |
msgstr ""
|
6228 |
|
6229 |
#. translators: Support URL.
|
6230 |
-
#: lib/wfScanEngine.php:
|
6231 |
-
msgid "A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information
|
6232 |
msgstr ""
|
6233 |
|
6234 |
-
#: lib/wfScanEngine.php:
|
6235 |
msgid "Check for publicly accessible configuration files, backup files and logs"
|
6236 |
msgstr ""
|
6237 |
|
6238 |
#. translators: File path.
|
6239 |
-
#: lib/wfScanEngine.php:
|
6240 |
msgid "Publicly accessible config, backup, or log file found: %s"
|
6241 |
msgstr ""
|
6242 |
|
6243 |
#. translators: 1. URL to publicly accessible file. 2. Support URL.
|
6244 |
-
#: lib/wfScanEngine.php:
|
6245 |
-
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn more
|
6246 |
msgstr ""
|
6247 |
|
6248 |
-
#: lib/wfScanEngine.php:
|
6249 |
msgid "Checking if your server discloses the path to the document root"
|
6250 |
msgstr ""
|
6251 |
|
6252 |
-
#: lib/wfScanEngine.php:
|
6253 |
msgid "Web server exposes the document root"
|
6254 |
msgstr ""
|
6255 |
|
6256 |
-
#: lib/wfScanEngine.php:
|
6257 |
msgid "Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view."
|
6258 |
msgstr ""
|
6259 |
|
6260 |
-
#: lib/wfScanEngine.php:
|
6261 |
msgid "Directory listing is enabled"
|
6262 |
msgstr ""
|
6263 |
|
6264 |
-
#: lib/wfScanEngine.php:
|
6265 |
msgid "Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed."
|
6266 |
msgstr ""
|
6267 |
|
6268 |
-
#: lib/wfScanEngine.php:
|
6269 |
msgid "Checking if your site is being Spamvertised"
|
6270 |
msgstr ""
|
6271 |
|
6272 |
-
#: lib/wfScanEngine.php:
|
6273 |
msgid "Check if your site is being Spamvertized is for paid members only"
|
6274 |
msgstr ""
|
6275 |
|
6276 |
-
#: lib/wfScanEngine.php:
|
6277 |
msgid "Wordfence could not read the contents of your base WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory."
|
6278 |
msgstr ""
|
6279 |
|
6280 |
-
#: lib/wfScanEngine.php:
|
6281 |
msgid "Checking for paths skipped due to scan settings"
|
6282 |
msgstr ""
|
6283 |
|
6284 |
#. translators: Number of paths skipped in scan.
|
6285 |
-
#: lib/wfScanEngine.php:
|
6286 |
msgid ", and %d more."
|
6287 |
msgstr ""
|
6288 |
|
6289 |
#. translators: Number of paths skipped in scan.
|
6290 |
-
#: lib/wfScanEngine.php:
|
6291 |
msgid "%d path was skipped for the malware scan due to scan settings"
|
6292 |
msgid_plural "%d paths were skipped for the malware scan due to scan settings"
|
6293 |
msgstr[0] ""
|
6294 |
msgstr[1] ""
|
6295 |
|
6296 |
#. translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths.
|
6297 |
-
#: lib/wfScanEngine.php:
|
6298 |
-
msgid "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
6299 |
-
msgid_plural "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
6300 |
msgstr[0] ""
|
6301 |
msgstr[1] ""
|
6302 |
|
6303 |
-
#: lib/wfScanEngine.php:
|
6304 |
msgid "Including files that are outside the WordPress installation in the scan."
|
6305 |
msgstr ""
|
6306 |
|
6307 |
-
#: lib/wfScanEngine.php:
|
6308 |
msgid "Getting plugin list from WordPress"
|
6309 |
msgstr ""
|
6310 |
|
6311 |
#. translators: Number of plugins.
|
6312 |
-
#: lib/wfScanEngine.php:
|
6313 |
msgid "Found %d plugin"
|
6314 |
msgid_plural "Found %d plugins"
|
6315 |
msgstr[0] ""
|
6316 |
msgstr[1] ""
|
6317 |
|
6318 |
-
#: lib/wfScanEngine.php:
|
6319 |
msgid "Getting theme list from WordPress"
|
6320 |
msgstr ""
|
6321 |
|
6322 |
#. translators: Number of themes.
|
6323 |
-
#: lib/wfScanEngine.php:
|
6324 |
msgid "Found %d theme"
|
6325 |
msgid_plural "Found %d themes"
|
6326 |
msgstr[0] ""
|
6327 |
msgstr[1] ""
|
6328 |
|
6329 |
-
#: lib/wfScanEngine.php:
|
6330 |
msgid "Scanning file contents for infections and vulnerabilities"
|
6331 |
msgstr ""
|
6332 |
|
6333 |
-
#: lib/wfScanEngine.php:
|
6334 |
msgid "Skipping scan of file contents for infections and vulnerabilities"
|
6335 |
msgstr ""
|
6336 |
|
6337 |
-
#: lib/wfScanEngine.php:
|
6338 |
msgid "Scanning file contents for URLs on a domain blocklist"
|
6339 |
msgstr ""
|
6340 |
|
6341 |
-
#: lib/wfScanEngine.php:
|
6342 |
msgid "Skipping scan of file contents for URLs on a domain blocklist"
|
6343 |
msgstr ""
|
6344 |
|
6345 |
-
#: lib/wfScanEngine.php:
|
6346 |
msgid "Starting scan of file contents"
|
6347 |
msgstr ""
|
6348 |
|
6349 |
-
#: lib/wfScanEngine.php:
|
6350 |
msgid "Done file contents scan"
|
6351 |
msgstr ""
|
6352 |
|
6353 |
#. translators: Scan result description.
|
6354 |
-
#: lib/wfScanEngine.php:
|
6355 |
-
#: lib/wfScanEngine.php:
|
6356 |
-
#: lib/wfScanEngine.php:
|
6357 |
msgid "Adding issue: %s"
|
6358 |
msgstr ""
|
6359 |
|
6360 |
-
#: lib/wfScanEngine.php:
|
6361 |
msgid "Scanning for publicly accessible quarantined files"
|
6362 |
msgstr ""
|
6363 |
|
6364 |
#. translators: File path.
|
6365 |
-
#: lib/wfScanEngine.php:
|
6366 |
msgid "Testing accessibility of: %s"
|
6367 |
msgstr ""
|
6368 |
|
6369 |
#. translators: File path.
|
6370 |
-
#: lib/wfScanEngine.php:
|
6371 |
msgid "Publicly accessible quarantined file found: %s"
|
6372 |
msgstr ""
|
6373 |
|
6374 |
#. translators: URL to publicly accessible file.
|
6375 |
-
#: lib/wfScanEngine.php:
|
6376 |
-
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s
|
6377 |
msgstr ""
|
6378 |
|
6379 |
-
#: lib/wfScanEngine.php:
|
6380 |
msgid "Scanning posts for URLs on a domain blocklist"
|
6381 |
msgstr ""
|
6382 |
|
6383 |
#. translators: Number of posts left to scan.
|
6384 |
-
#: lib/wfScanEngine.php:
|
6385 |
msgid "Scanning posts with %d left to scan."
|
6386 |
msgstr ""
|
6387 |
|
6388 |
-
#: lib/wfScanEngine.php:
|
6389 |
msgid "Post title contains suspicious code"
|
6390 |
msgstr ""
|
6391 |
|
6392 |
-
#: lib/wfScanEngine.php:
|
6393 |
msgid "This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious."
|
6394 |
msgstr ""
|
6395 |
|
6396 |
-
#: lib/wfScanEngine.php:
|
6397 |
msgid "Examining URLs found in posts we scanned for dangerous websites"
|
6398 |
msgstr ""
|
6399 |
|
6400 |
-
#: lib/wfScanEngine.php:
|
6401 |
-
#: lib/wfScanEngine.php:
|
6402 |
msgid "Done examining URLs"
|
6403 |
msgstr ""
|
6404 |
|
6405 |
#. translators: 1. WordPress Post type. 2. URL.
|
6406 |
-
#: lib/wfScanEngine.php:
|
6407 |
-
#: lib/wfScanEngine.php:
|
6408 |
msgid "%1$s contains a suspected malware URL: %2$s"
|
6409 |
msgstr ""
|
6410 |
|
6411 |
#. translators: 1. WordPress Post type. 2. URL. 3. URL.
|
6412 |
-
|
6413 |
-
|
|
|
|
|
6414 |
msgstr ""
|
6415 |
|
6416 |
#. translators: 1. WordPress Post type. 2. URL.
|
6417 |
-
#: lib/wfScanEngine.php:
|
6418 |
msgid "%1$s contains a suspected phishing site URL: %2$s"
|
6419 |
msgstr ""
|
6420 |
|
6421 |
#. translators: 1. WordPress Post type. 2. URL.
|
6422 |
#. translators: 1. WordPress post type. 2. URL.
|
6423 |
-
#: lib/wfScanEngine.php:
|
6424 |
-
#: lib/wfScanEngine.php:
|
6425 |
msgid "This %1$s contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: %2$s"
|
6426 |
msgstr ""
|
6427 |
|
6428 |
#. translators: 1. WordPress Post type. 2. URL.
|
6429 |
#. translators: 1. WordPress post type. 2. URL.
|
6430 |
-
#: lib/wfScanEngine.php:
|
6431 |
-
#: lib/wfScanEngine.php:
|
6432 |
msgid "This %1$s contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: %2$s"
|
6433 |
msgstr ""
|
6434 |
|
6435 |
#. translators: Scan result description.
|
6436 |
-
#: lib/wfScanEngine.php:
|
6437 |
msgid "Adding issue: %1$s"
|
6438 |
msgstr ""
|
6439 |
|
6440 |
-
#: lib/wfScanEngine.php:
|
6441 |
msgid "Scanning comments for URLs on a domain blocklist"
|
6442 |
msgstr ""
|
6443 |
|
6444 |
#. translators: Number of comments left to scan.
|
6445 |
-
#: lib/wfScanEngine.php:
|
6446 |
msgid "Scanning comments with %d left to scan."
|
6447 |
msgstr ""
|
6448 |
|
6449 |
#. translators: 1. WordPress post type. 2. WordPress author username.
|
6450 |
-
#: lib/wfScanEngine.php:
|
6451 |
msgid "%1$s with author %2$s contains a suspected malware URL."
|
6452 |
msgstr ""
|
6453 |
|
6454 |
-
#. translators: 1. WordPress post type. 2. URL. 3. URL.
|
6455 |
-
#: lib/wfScanEngine.php:1418
|
6456 |
-
msgid "This %$1s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page</a>."
|
6457 |
-
msgstr ""
|
6458 |
-
|
6459 |
#. translators: WordPress post type.
|
6460 |
-
#: lib/wfScanEngine.php:
|
6461 |
msgid "%s contains a suspected phishing site URL."
|
6462 |
msgstr ""
|
6463 |
|
6464 |
#. translators: URL.
|
6465 |
-
#: lib/wfScanEngine.php:
|
6466 |
msgid "%s contains a suspected malware URL."
|
6467 |
msgstr ""
|
6468 |
|
6469 |
#. translators: WordPress username.
|
6470 |
-
#: lib/wfScanEngine.php:
|
6471 |
msgid "Author: %s"
|
6472 |
msgstr ""
|
6473 |
|
6474 |
#. translators: Email address.
|
6475 |
-
#: lib/wfScanEngine.php:
|
6476 |
msgid "Email: %s"
|
6477 |
msgstr ""
|
6478 |
|
6479 |
#. translators: IP address.
|
6480 |
-
#: lib/wfScanEngine.php:
|
6481 |
msgid "Source IP: %s"
|
6482 |
msgstr ""
|
6483 |
|
6484 |
#. translators: Comment description.
|
6485 |
-
#: lib/wfScanEngine.php:
|
6486 |
msgid "Scanning comment with %s"
|
6487 |
msgstr ""
|
6488 |
|
6489 |
#. translators: Comment description.
|
6490 |
-
#: lib/wfScanEngine.php:
|
6491 |
-
#: lib/wfScanEngine.php:
|
6492 |
msgid "Marking comment as spam for containing a malware URL. Comment has %s"
|
6493 |
msgstr ""
|
6494 |
|
6495 |
#. translators: Comment description.
|
6496 |
-
#: lib/wfScanEngine.php:
|
6497 |
msgid "Marking comment as spam for containing a phishing URL. Comment has %s"
|
6498 |
msgstr ""
|
6499 |
|
6500 |
#. translators: Comment description.
|
6501 |
-
#: lib/wfScanEngine.php:
|
6502 |
msgid "Scanned comment with %s"
|
6503 |
msgstr ""
|
6504 |
|
6505 |
-
#: lib/wfScanEngine.php:
|
6506 |
msgid "Scanning for weak passwords"
|
6507 |
msgstr ""
|
6508 |
|
6509 |
-
#: lib/wfScanEngine.php:
|
6510 |
msgid "We were unable to generate the user list for your password check."
|
6511 |
msgstr ""
|
6512 |
|
6513 |
#. translators: Number of users.
|
6514 |
-
#: lib/wfScanEngine.php:
|
6515 |
msgid "Starting password strength check on %d user."
|
6516 |
msgid_plural "Starting password strength check on %d users."
|
6517 |
msgstr[0] ""
|
6518 |
msgstr[1] ""
|
6519 |
|
6520 |
#. translators: Number of users.
|
6521 |
-
#: lib/wfScanEngine.php:
|
6522 |
msgid "Total of %d users left to process in password strength check."
|
6523 |
msgid_plural "Total of %d users left to process in password strength check."
|
6524 |
msgstr[0] ""
|
6525 |
msgstr[1] ""
|
6526 |
|
6527 |
#. translators: WordPress user ID.
|
6528 |
-
#: lib/wfScanEngine.php:
|
6529 |
msgid "Could not get username for user with ID %d when checking password strength."
|
6530 |
msgstr ""
|
6531 |
|
6532 |
#. translators: 1. WordPress username. 2. WordPress user ID.
|
6533 |
-
#: lib/wfScanEngine.php:
|
6534 |
msgid "Checking password strength of user '%1$s' with ID %2$d"
|
6535 |
msgstr ""
|
6536 |
|
6537 |
#. translators: 1. WordPress username. 2. WordPress capability.
|
6538 |
-
#: lib/wfScanEngine.php:
|
6539 |
msgid "User \"%1$s\" with \"%2$s\" access has an easy password."
|
6540 |
msgstr ""
|
6541 |
|
6542 |
#. translators: WordPress capability.
|
6543 |
-
#: lib/wfScanEngine.php:
|
6544 |
msgid "A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it."
|
6545 |
msgstr ""
|
6546 |
|
6547 |
#. translators: WordPress username.
|
6548 |
-
#: lib/wfScanEngine.php:
|
6549 |
msgid "User \"%s\" with 'subscriber' access has a very easy password."
|
6550 |
msgstr ""
|
6551 |
|
6552 |
-
#: lib/wfScanEngine.php:
|
6553 |
msgid "A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password."
|
6554 |
msgstr ""
|
6555 |
|
6556 |
#. translators: Scan result description.
|
6557 |
-
#: lib/wfScanEngine.php:
|
6558 |
msgid "Adding issue %s"
|
6559 |
msgstr ""
|
6560 |
|
6561 |
#. translators: WordPress username.
|
6562 |
-
#: lib/wfScanEngine.php:
|
6563 |
msgid "Completed checking password strength of user '%s'"
|
6564 |
msgstr ""
|
6565 |
|
6566 |
-
#: lib/wfScanEngine.php:
|
6567 |
msgid "Scanning to check available disk space"
|
6568 |
msgstr ""
|
6569 |
|
6570 |
-
#: lib/wfScanEngine.php:
|
6571 |
msgid "Unable to access available disk space information"
|
6572 |
msgstr ""
|
6573 |
|
6574 |
#. translators: 1. Number of bytes. 2. Number of bytes.
|
6575 |
-
#: lib/wfScanEngine.php:
|
6576 |
msgid "Total disk space: %1$s -- Free disk space: %2$s"
|
6577 |
msgstr ""
|
6578 |
|
6579 |
#. translators: Number of bytes.
|
6580 |
-
#: lib/wfScanEngine.php:
|
6581 |
msgid "The disk has %s MB available"
|
6582 |
msgstr ""
|
6583 |
|
6584 |
#. translators: Number of bytes.
|
6585 |
-
#: lib/wfScanEngine.php:
|
6586 |
msgid "You have %s disk space remaining"
|
6587 |
msgstr ""
|
6588 |
|
6589 |
#. translators: Number of bytes.
|
6590 |
-
#: lib/wfScanEngine.php:
|
6591 |
msgid "You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests."
|
6592 |
msgstr ""
|
6593 |
|
6594 |
-
#: lib/wfScanEngine.php:
|
6595 |
msgid "Checking Web Application Firewall status"
|
6596 |
msgstr ""
|
6597 |
|
6598 |
-
#: lib/wfScanEngine.php:
|
6599 |
msgid "Web Application Firewall is disabled"
|
6600 |
msgstr ""
|
6601 |
|
6602 |
#. translators: Support URL.
|
6603 |
-
#: lib/wfScanEngine.php:
|
6604 |
-
msgid "Wordfence's Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says \"The Wordfence Web Application Firewall cannot run,\" click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">More Details
|
6605 |
msgstr ""
|
6606 |
|
6607 |
-
#: lib/wfScanEngine.php:
|
6608 |
msgid "Scanning for old themes, plugins and core files"
|
6609 |
msgstr ""
|
6610 |
|
6611 |
-
#: lib/wfScanEngine.php:
|
6612 |
msgid "Your WordPress version is out of date"
|
6613 |
msgstr ""
|
6614 |
|
6615 |
#. translators: Software version.
|
6616 |
-
#: lib/wfScanEngine.php:
|
6617 |
msgid "WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress."
|
6618 |
msgstr ""
|
6619 |
|
6620 |
#. translators: 1. Plugin name. 2. Software version. 3. Software version.
|
6621 |
-
#: lib/wfScanEngine.php:
|
6622 |
msgid "The Plugin \"%1$s\" needs an upgrade (%2$s -> %3$s)."
|
6623 |
msgstr ""
|
6624 |
|
6625 |
#. translators: Theme name.
|
6626 |
-
#: lib/wfScanEngine.php:
|
6627 |
-
#: lib/wfScanEngine.php:
|
6628 |
msgid "You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released."
|
6629 |
msgstr ""
|
6630 |
|
6631 |
#. translators: 1. Theme name. 2. Software version. 3. Software version.
|
6632 |
-
#: lib/wfScanEngine.php:
|
6633 |
msgid "The Theme \"%1$s\" needs an upgrade (%2$s -> %3$s)."
|
6634 |
msgstr ""
|
6635 |
|
6636 |
#. translators: 1. Plugin name. 2. Software version. 3. Software version.
|
6637 |
-
#: lib/wfScanEngine.php:
|
6638 |
msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s, tested to WP %3$s)."
|
6639 |
msgstr ""
|
6640 |
|
6641 |
#. translators: 1. Plugin name. 2. Software version.
|
6642 |
-
#: lib/wfScanEngine.php:
|
6643 |
msgid "It was last updated %1$s ago and tested up to WordPress %2$s."
|
6644 |
msgstr ""
|
6645 |
|
6646 |
#. translators: 1. Plugin name. 2. Software version.
|
6647 |
-
#: lib/wfScanEngine.php:
|
6648 |
msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s)."
|
6649 |
msgstr ""
|
6650 |
|
6651 |
#. translators: Time duration.
|
6652 |
-
#: lib/wfScanEngine.php:
|
6653 |
msgid "It was last updated %s ago."
|
6654 |
msgstr ""
|
6655 |
|
6656 |
-
#: lib/wfScanEngine.php:
|
6657 |
-
#: lib/wfScanEngine.php:
|
6658 |
msgid "It has unpatched security issues and may have compatibility problems with the current version of WordPress."
|
6659 |
msgstr ""
|
6660 |
|
6661 |
-
#: lib/wfScanEngine.php:
|
6662 |
-
#: lib/wfScanEngine.php:
|
6663 |
msgid "Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin."
|
6664 |
msgstr ""
|
6665 |
|
6666 |
#. translators: Support URL.
|
6667 |
-
#: lib/wfScanEngine.php:
|
6668 |
-
#: lib/wfScanEngine.php:
|
6669 |
-
#: lib/wfScanEngine.php:
|
6670 |
-
#: lib/wfScanEngine.php:
|
6671 |
-
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information
|
6672 |
msgstr ""
|
6673 |
|
6674 |
#. translators: Plugin name.
|
6675 |
-
#: lib/wfScanEngine.php:
|
6676 |
msgid "The Plugin \"%s\" has been removed from wordpress.org."
|
6677 |
msgstr ""
|
6678 |
|
6679 |
-
#: lib/wfScanEngine.php:
|
6680 |
msgid "Scanning for admin users not created through WordPress"
|
6681 |
msgstr ""
|
6682 |
|
6683 |
#. translators: WordPress username.
|
6684 |
-
#: lib/wfScanEngine.php:
|
6685 |
msgid "An admin user with the username %s was created outside of WordPress."
|
6686 |
msgstr ""
|
6687 |
|
6688 |
#. translators: WordPress username.
|
6689 |
-
#: lib/wfScanEngine.php:
|
6690 |
msgid "An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
|
6691 |
msgstr ""
|
6692 |
|
6693 |
#. translators: WordPress username.
|
6694 |
-
#: lib/wfScanEngine.php:
|
6695 |
msgid "An admin user with a suspicious username %s was found."
|
6696 |
msgstr ""
|
6697 |
|
6698 |
#. translators: WordPress username.
|
6699 |
-
#: lib/wfScanEngine.php:
|
6700 |
msgid "An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
|
6701 |
msgstr ""
|
6702 |
|
6703 |
-
#: lib/wfScanEngine.php:
|
6704 |
msgid "Scanning for suspicious site options"
|
6705 |
msgstr ""
|
6706 |
|
6707 |
-
#: lib/wfScanEngine.php:
|
6708 |
msgid "Examining URLs found in the options we scanned for dangerous websites"
|
6709 |
msgstr ""
|
6710 |
|
6711 |
#. translators: URL.
|
6712 |
-
#: lib/wfScanEngine.php:
|
6713 |
-
#: lib/wfScanEngine.php:
|
6714 |
msgid "Option contains a suspected malware URL: %s"
|
6715 |
msgstr ""
|
6716 |
|
6717 |
#. translators: URL.
|
6718 |
-
#: lib/wfScanEngine.php:
|
6719 |
msgid "This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s"
|
6720 |
msgstr ""
|
6721 |
|
6722 |
#. translators: URL.
|
6723 |
-
#: lib/wfScanEngine.php:
|
6724 |
msgid "Option contains a suspected phishing site URL: %s"
|
6725 |
msgstr ""
|
6726 |
|
6727 |
#. translators: URL.
|
6728 |
-
#: lib/wfScanEngine.php:
|
6729 |
msgid "This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s"
|
6730 |
msgstr ""
|
6731 |
|
6732 |
#. translators: URL.
|
6733 |
-
#: lib/wfScanEngine.php:
|
6734 |
msgid "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s"
|
6735 |
msgstr ""
|
6736 |
|
6737 |
-
#: lib/wfScanEngine.php:
|
6738 |
msgid "Checking for future GeoIP support"
|
6739 |
msgstr ""
|
6740 |
|
6741 |
-
#: lib/wfScanEngine.php:
|
6742 |
msgid "PHP Update Needed for Country Blocking"
|
6743 |
msgstr ""
|
6744 |
|
6745 |
#. translators: Software version.
|
6746 |
-
#: lib/wfScanEngine.php:
|
6747 |
msgid "The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP."
|
6748 |
msgstr ""
|
6749 |
|
6750 |
-
#: lib/wfScanEngine.php:
|
6751 |
msgid "Previous scan was stopped successfully."
|
6752 |
msgstr ""
|
6753 |
|
6754 |
-
#: lib/wfScanEngine.php:
|
6755 |
msgid "Scan was stopped on administrator request."
|
6756 |
msgstr ""
|
6757 |
|
6758 |
-
#: lib/wfScanEngine.php:
|
6759 |
msgid "Entering start scan routine"
|
6760 |
msgstr ""
|
6761 |
|
6762 |
-
#: lib/wfScanEngine.php:
|
6763 |
msgid "A scan is already running. Use the stop scan button if you would like to terminate the current scan."
|
6764 |
msgstr ""
|
6765 |
|
6766 |
#. translators: Support URL.
|
6767 |
-
#: lib/wfScanEngine.php:
|
6768 |
msgid "Test result of scan start URL fetch: %s"
|
6769 |
msgstr ""
|
6770 |
|
6771 |
#. translators: WordPress admin panel URL.
|
6772 |
-
#: lib/wfScanEngine.php:
|
6773 |
msgid "Starting cron with normal ajax at URL %s"
|
6774 |
msgstr ""
|
6775 |
|
6776 |
#. translators: Error message.
|
6777 |
#. translators: WordPress admin panel URL.
|
6778 |
-
#: lib/wfScanEngine.php:
|
6779 |
-
#: lib/wfScanEngine.php:
|
6780 |
msgid "There was an error starting the scan: %s."
|
6781 |
msgstr ""
|
6782 |
|
6783 |
-
#: lib/wfScanEngine.php:
|
6784 |
-
#: lib/wfScanEngine.php:
|
6785 |
msgid "There was an unknown error starting the scan."
|
6786 |
msgstr ""
|
6787 |
|
6788 |
-
#: lib/wfScanEngine.php:
|
6789 |
-
#: lib/wfScanEngine.php:
|
6790 |
msgid "Scan process ended after forking."
|
6791 |
msgstr ""
|
6792 |
|
6793 |
#. translators: WordPress admin panel URL.
|
6794 |
-
#: lib/wfScanEngine.php:
|
6795 |
msgid "Starting cron via proxy at URL %s"
|
6796 |
msgstr ""
|
6797 |
|
6798 |
#. translators: Time in seconds.
|
6799 |
-
#: lib/wfScanEngine.php:
|
6800 |
msgid "Got value from wf config maxExecutionTime: %s"
|
6801 |
msgstr ""
|
6802 |
|
6803 |
#. translators: Time in seconds.
|
6804 |
-
#: lib/wfScanEngine.php:
|
6805 |
msgid "getMaxExecutionTime() returning config value: %s"
|
6806 |
msgstr ""
|
6807 |
|
6808 |
#. translators: PHP ini value.
|
6809 |
-
#: lib/wfScanEngine.php:
|
6810 |
msgid "Got max_execution_time value from ini: %s"
|
6811 |
msgstr ""
|
6812 |
|
6813 |
#. translators: 1. PHP ini setting. 2. Time in seconds.
|
6814 |
-
#: lib/wfScanEngine.php:
|
6815 |
msgid "ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing"
|
6816 |
msgstr ""
|
6817 |
|
6818 |
#. translators: PHP ini setting.
|
6819 |
-
#: lib/wfScanEngine.php:
|
6820 |
msgid "getMaxExecutionTime() returning half ini value: %d"
|
6821 |
msgstr ""
|
6822 |
|
6823 |
-
#: lib/wfScanEngine.php:
|
6824 |
msgid "getMaxExecutionTime() returning default of: 15"
|
6825 |
msgstr ""
|
6826 |
|
6827 |
#. translators: 1. HTTP status code.
|
6828 |
-
#: lib/wfScanEngine.php:
|
6829 |
msgid "Got error response from Wordfence servers: %s"
|
6830 |
msgstr ""
|
6831 |
|
6832 |
-
#: lib/wfScanEngine.php:
|
6833 |
msgid "Invalid response from Wordfence servers."
|
6834 |
msgstr ""
|
6835 |
|
@@ -6992,1364 +7317,1454 @@ msgstr ""
|
|
6992 |
msgid "File last modified:"
|
6993 |
msgstr ""
|
6994 |
|
6995 |
-
#: lib/wordfenceClass.php:
|
6996 |
msgid ""
|
6997 |
"To ensure uninterrupted Premium Wordfence protection on your site,\n"
|
6998 |
"please renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\n"
|
6999 |
"select the license about to expire and click the button to renew that license."
|
7000 |
msgstr ""
|
7001 |
|
7002 |
-
#: lib/wordfenceClass.php:
|
7003 |
msgid "Your Premium Wordfence License is set to auto-renew in 10 days."
|
7004 |
msgstr ""
|
7005 |
|
7006 |
-
#: lib/wordfenceClass.php:
|
7007 |
msgid "To update your license settings please visit http://www.wordfence.com/zz9/dashboard"
|
7008 |
msgstr ""
|
7009 |
|
7010 |
-
#: lib/wordfenceClass.php:
|
7011 |
msgid "Your Premium Wordfence License expires in less than 2 weeks."
|
7012 |
msgstr ""
|
7013 |
|
7014 |
-
#: lib/wordfenceClass.php:
|
7015 |
msgid "Your Premium Wordfence License expires in less than a week."
|
7016 |
msgstr ""
|
7017 |
|
7018 |
-
#: lib/wordfenceClass.php:
|
7019 |
msgid "Your Premium Wordfence License expires in 2 days."
|
7020 |
msgstr ""
|
7021 |
|
7022 |
-
#: lib/wordfenceClass.php:
|
7023 |
msgid "Your Premium Wordfence License expires in 1 day."
|
7024 |
msgstr ""
|
7025 |
|
7026 |
-
#: lib/wordfenceClass.php:
|
7027 |
msgid "Your Wordfence Premium License has Expired!"
|
7028 |
msgstr ""
|
7029 |
|
7030 |
-
#: lib/wordfenceClass.php:
|
7031 |
msgid "The Wordfence Premium License in use on this site has been removed from your account."
|
7032 |
msgstr ""
|
7033 |
|
7034 |
-
#: lib/wordfenceClass.php:
|
7035 |
msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help."
|
7036 |
msgstr ""
|
7037 |
|
7038 |
#. translators: Wordfence license key.
|
7039 |
-
#: lib/wordfenceClass.php:
|
7040 |
msgid "Could not verify Wordfence License: %s"
|
7041 |
msgstr ""
|
7042 |
|
7043 |
#. translators: WordPress version.
|
7044 |
-
#: lib/wordfenceClass.php:
|
7045 |
msgid "WordPress (v%s)"
|
7046 |
msgstr ""
|
7047 |
|
7048 |
#. translators: Number of plugins.
|
7049 |
-
#: lib/wordfenceClass.php:
|
7050 |
msgid "%d plugin"
|
7051 |
msgid_plural "%d plugins"
|
7052 |
msgstr[0] ""
|
7053 |
msgstr[1] ""
|
7054 |
|
7055 |
#. translators: Number of themes.
|
7056 |
-
#: lib/wordfenceClass.php:
|
7057 |
msgid "%d theme"
|
7058 |
msgid_plural "%d themes"
|
7059 |
msgstr[0] ""
|
7060 |
msgstr[1] ""
|
7061 |
|
7062 |
-
#: lib/wordfenceClass.php:
|
7063 |
msgid "An update is available for "
|
7064 |
msgid_plural "Updates are available for "
|
7065 |
msgstr[0] ""
|
7066 |
msgstr[1] ""
|
7067 |
|
7068 |
-
#: lib/wordfenceClass.php:
|
7069 |
msgid "and "
|
7070 |
msgstr ""
|
7071 |
|
7072 |
#. translators: Wordfence version.
|
7073 |
-
#: lib/wordfenceClass.php:
|
7074 |
msgid "`runInstall` called with previous version = %s"
|
7075 |
msgstr ""
|
7076 |
|
7077 |
-
#: lib/wordfenceClass.php:
|
7078 |
-
#: lib/wordfenceClass.php:
|
7079 |
msgid "Could not understand the response we received from the Wordfence servers when applying for a free license key."
|
7080 |
msgstr ""
|
7081 |
|
7082 |
-
#: lib/wordfenceClass.php:
|
7083 |
msgid "Automatically generated from previous country blocking settings"
|
7084 |
msgstr ""
|
7085 |
|
7086 |
-
#: lib/wordfenceClass.php:
|
7087 |
msgid "Application passwords have been disabled by Wordfence."
|
7088 |
msgstr ""
|
7089 |
|
7090 |
-
#: lib/wordfenceClass.php:
|
7091 |
-
#: lib/wordfenceClass.php:
|
7092 |
msgid "Upgrade To Premium"
|
7093 |
msgstr ""
|
7094 |
|
7095 |
-
#: lib/wordfenceClass.php:
|
7096 |
msgid "wp_mail from address is incomplete, attempting to fix"
|
7097 |
msgstr ""
|
7098 |
|
7099 |
#. translators: Email address.
|
7100 |
-
#: lib/wordfenceClass.php:
|
7101 |
msgid "Fixing wp_mail from address: %s"
|
7102 |
msgstr ""
|
7103 |
|
7104 |
-
#: lib/wordfenceClass.php:
|
7105 |
msgid "You appear to have logged out or you are not an admin. Please sign-out and sign-in again."
|
7106 |
msgstr ""
|
7107 |
|
7108 |
-
#: lib/wordfenceClass.php:
|
7109 |
msgid "Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again."
|
7110 |
msgstr ""
|
7111 |
|
7112 |
-
#: lib/wordfenceClass.php:
|
7113 |
msgid "Wordfence encountered an internal error executing that request."
|
7114 |
msgstr ""
|
7115 |
|
7116 |
#. translators: Error message.
|
7117 |
-
#: lib/wordfenceClass.php:
|
7118 |
msgid "2FA Migration Error: %s"
|
7119 |
msgstr ""
|
7120 |
|
7121 |
-
#: lib/wordfenceClass.php:
|
7122 |
msgid "Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words."
|
7123 |
msgstr ""
|
7124 |
|
7125 |
-
#: lib/wordfenceClass.php:
|
7126 |
msgid "Passwords containing a space followed by \"wf\" without quotes are not allowed."
|
7127 |
msgstr ""
|
7128 |
|
7129 |
#. translators: Support URL.
|
7130 |
-
#: lib/wordfenceClass.php:
|
7131 |
msgid "Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href=\"%s\">Learn More</a>"
|
7132 |
msgstr ""
|
7133 |
|
7134 |
-
|
7135 |
-
#: lib/wordfenceClass.php:
|
|
|
|
|
|
|
|
|
|
|
7136 |
msgid "Sorry but your browser sent an invalid security token when trying to use this form."
|
7137 |
msgstr ""
|
7138 |
|
7139 |
-
#: lib/wordfenceClass.php:
|
7140 |
msgid "Please wait 3 minutes and try again"
|
7141 |
msgstr ""
|
7142 |
|
7143 |
-
#: lib/wordfenceClass.php:
|
7144 |
msgid "You have used this form too much. Please wait 3 minutes and try again."
|
7145 |
msgstr ""
|
7146 |
|
7147 |
-
#: lib/wordfenceClass.php:
|
7148 |
msgid "Unlock email requested"
|
7149 |
msgstr ""
|
7150 |
|
7151 |
-
#: lib/wordfenceClass.php:
|
7152 |
msgid "Your request was received"
|
7153 |
msgstr ""
|
7154 |
|
7155 |
#. translators: Email address.
|
7156 |
-
#: lib/wordfenceClass.php:
|
7157 |
msgid "We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now."
|
7158 |
msgstr ""
|
7159 |
|
7160 |
-
#: lib/wordfenceClass.php:
|
7161 |
msgid "Invalid key provided for authentication."
|
7162 |
msgstr ""
|
7163 |
|
7164 |
-
#: lib/wordfenceClass.php:
|
7165 |
msgid "Request received via unlock email link to unblock all IPs."
|
7166 |
msgstr ""
|
7167 |
|
7168 |
-
#: lib/wordfenceClass.php:
|
7169 |
msgid "Request received via unlock email link to unblock all IPs via disabling firewall rules."
|
7170 |
msgstr ""
|
7171 |
|
7172 |
-
#: lib/wordfenceClass.php:
|
7173 |
msgid "Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader."
|
7174 |
msgstr ""
|
7175 |
|
7176 |
-
#: lib/wordfenceClass.php:
|
7177 |
msgid "Unsubscribe Requested"
|
7178 |
msgstr ""
|
7179 |
|
7180 |
-
#: lib/wordfenceClass.php:
|
7181 |
msgid "An error occurred while saving the license."
|
7182 |
msgstr ""
|
7183 |
|
7184 |
#. translators: Error message.
|
7185 |
-
#: lib/wordfenceClass.php:
|
7186 |
-
#: lib/wordfenceClass.php:
|
7187 |
msgid "An error occurred while saving the license: %s"
|
7188 |
msgstr ""
|
7189 |
|
7190 |
-
#: lib/wordfenceClass.php:
|
7191 |
msgid "Rescheduled missing daily cron"
|
7192 |
msgstr ""
|
7193 |
|
7194 |
-
#: lib/wordfenceClass.php:
|
7195 |
msgid "Rescheduled missing hourly cron"
|
7196 |
msgstr ""
|
7197 |
|
7198 |
-
#: lib/wordfenceClass.php:
|
7199 |
-
#: lib/wordfenceClass.php:
|
7200 |
msgid "Accessed a banned URL"
|
7201 |
msgstr ""
|
7202 |
|
7203 |
-
#: lib/wordfenceClass.php:
|
7204 |
-
#: lib/wordfenceClass.php:
|
7205 |
msgid "POST received with blank user-agent and referer"
|
7206 |
msgstr ""
|
7207 |
|
7208 |
-
#: lib/wordfenceClass.php:
|
7209 |
msgid "<strong>ERROR</strong>: You can't register using that username"
|
7210 |
msgstr ""
|
7211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7212 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
7213 |
-
#: lib/wordfenceClass.php:
|
7214 |
-
#: lib/wordfenceClass.php:
|
7215 |
-
msgid "<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7216 |
msgstr ""
|
7217 |
|
7218 |
#. translators: 1. Reset password URL. 2. Support URL.
|
7219 |
-
#: lib/wordfenceClass.php:
|
7220 |
-
#: lib/wordfenceClass.php:
|
7221 |
-
msgid "<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
7222 |
msgstr ""
|
7223 |
|
7224 |
-
#. translators:
|
7225 |
#: lib/wordfenceClass.php:3057
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7226 |
msgid "A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not."
|
7227 |
msgstr ""
|
7228 |
|
7229 |
-
|
|
|
|
|
|
|
|
|
|
|
7230 |
msgid "Blocked by Wordfence Security Network"
|
7231 |
msgstr ""
|
7232 |
|
7233 |
-
#: lib/wordfenceClass.php:
|
7234 |
msgid "Blocked by login security setting"
|
7235 |
msgstr ""
|
7236 |
|
7237 |
#. translators: WordPress username.
|
7238 |
-
#: lib/wordfenceClass.php:
|
7239 |
msgid "Used an invalid username '%s' to try to sign in"
|
7240 |
msgstr ""
|
7241 |
|
7242 |
#. translators: 1. Login attempt limit. 2. WordPress username.
|
7243 |
-
#: lib/wordfenceClass.php:
|
7244 |
msgid "Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: '%2$s'"
|
7245 |
msgstr ""
|
7246 |
|
7247 |
-
#: lib/wordfenceClass.php:
|
7248 |
msgid "An invalid type was specified to get file."
|
7249 |
msgstr ""
|
7250 |
|
7251 |
-
#: lib/wordfenceClass.php:
|
7252 |
msgid "We could not fetch a core WordPress file from the Wordfence API."
|
7253 |
msgstr ""
|
7254 |
|
7255 |
-
#: lib/wordfenceClass.php:
|
7256 |
msgid "Wordfence Test Email"
|
7257 |
msgstr ""
|
7258 |
|
7259 |
#. translators: 1. Site URL. 2. IP address.
|
7260 |
-
#: lib/wordfenceClass.php:
|
7261 |
msgid ""
|
7262 |
"This is a test email from %1$s.\n"
|
7263 |
"The IP address that requested this was: %2$s"
|
7264 |
msgstr ""
|
7265 |
|
7266 |
-
#: lib/wordfenceClass.php:
|
7267 |
-
msgid "Cellphone Sign-in is only available to paid members. <a href=\"https://www.wordfence.com/gnl1twoFac3/wordfence-signup/\" target=\"_blank\" rel=\"noopener noreferrer\">Click here to upgrade now
|
7268 |
msgstr ""
|
7269 |
|
7270 |
-
#: lib/wordfenceClass.php:
|
7271 |
msgid "The username you specified does not exist."
|
7272 |
msgstr ""
|
7273 |
|
7274 |
-
#: lib/wordfenceClass.php:
|
7275 |
msgid "The username you specified is already enabled."
|
7276 |
msgstr ""
|
7277 |
|
7278 |
-
#: lib/wordfenceClass.php:
|
7279 |
msgid "Unknown authentication mode."
|
7280 |
msgstr ""
|
7281 |
|
7282 |
-
#: lib/wordfenceClass.php:
|
7283 |
msgid "The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234"
|
7284 |
msgstr ""
|
7285 |
|
7286 |
#. translators: Error message.
|
7287 |
-
#: lib/wordfenceClass.php:
|
7288 |
-
#: lib/wordfenceClass.php:
|
7289 |
-
#: lib/wordfenceClass.php:
|
7290 |
msgid "Could not contact Wordfence servers to generate a verification code: %s"
|
7291 |
msgstr ""
|
7292 |
|
7293 |
#. translators: Error message.
|
7294 |
-
#: lib/wordfenceClass.php:
|
7295 |
-
#: lib/wordfenceClass.php:
|
7296 |
msgid "Could not generate verification code: %s"
|
7297 |
msgstr ""
|
7298 |
|
7299 |
#. translators: Error message.
|
7300 |
-
#: lib/wordfenceClass.php:
|
7301 |
-
#: lib/wordfenceClass.php:
|
7302 |
msgid "We could not generate a verification code."
|
7303 |
msgstr ""
|
7304 |
|
7305 |
-
#: lib/wordfenceClass.php:
|
7306 |
msgid "Unknown two-factor authentication mode."
|
7307 |
msgstr ""
|
7308 |
|
7309 |
-
#: lib/wordfenceClass.php:
|
7310 |
msgid "The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code."
|
7311 |
msgstr ""
|
7312 |
|
7313 |
-
#: lib/wordfenceClass.php:
|
7314 |
msgid "We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page."
|
7315 |
msgstr ""
|
7316 |
|
7317 |
-
#: lib/wordfenceClass.php:
|
7318 |
msgid "That user has already been removed from the list."
|
7319 |
msgstr ""
|
7320 |
|
7321 |
-
#: lib/wordfenceClass.php:
|
7322 |
msgid "No scan is scheduled"
|
7323 |
msgstr ""
|
7324 |
|
7325 |
-
#: lib/wordfenceClass.php:
|
7326 |
msgid "Next scan is starting now"
|
7327 |
msgstr ""
|
7328 |
|
7329 |
#. translators: 1. Time until. 2. Localized date.
|
7330 |
-
#: lib/wordfenceClass.php:
|
7331 |
msgid "Next scan in %1$s (%2$s)"
|
7332 |
msgstr ""
|
7333 |
|
7334 |
#. translators: Localized date.
|
7335 |
-
#: lib/wordfenceClass.php:
|
7336 |
msgid "Scheduled Wordfence scan starting at %s"
|
7337 |
msgstr ""
|
7338 |
|
7339 |
-
#: lib/wordfenceClass.php:
|
7340 |
msgid "Sorry but this feature is only available for paid customers."
|
7341 |
msgstr ""
|
7342 |
|
7343 |
#. translators: Site URL.
|
7344 |
-
#: lib/wordfenceClass.php:
|
7345 |
msgid "SITE: %s"
|
7346 |
msgstr ""
|
7347 |
|
7348 |
#. translators: Plugin version.
|
7349 |
-
#: lib/wordfenceClass.php:
|
7350 |
msgid "PLUGIN VERSION: %s"
|
7351 |
msgstr ""
|
7352 |
|
7353 |
#. translators: WordPress version.
|
7354 |
-
#: lib/wordfenceClass.php:
|
7355 |
msgid "WORDPRESS VERSION: %s"
|
7356 |
msgstr ""
|
7357 |
|
7358 |
#. translators: Wordfence license key.
|
7359 |
-
#: lib/wordfenceClass.php:
|
7360 |
msgid "LICENSE KEY: %s"
|
7361 |
msgstr ""
|
7362 |
|
7363 |
#. translators: Email address.
|
7364 |
-
#: lib/wordfenceClass.php:
|
7365 |
msgid "ADMIN EMAIL: %s"
|
7366 |
msgstr ""
|
7367 |
|
7368 |
#. translators: Email address.
|
7369 |
-
#: lib/wordfenceClass.php:
|
7370 |
msgid "LOG:"
|
7371 |
msgstr ""
|
7372 |
|
7373 |
-
#: lib/wordfenceClass.php:
|
7374 |
msgid "# Scan Issues"
|
7375 |
msgstr ""
|
7376 |
|
7377 |
#. translators: Number of scan results.
|
7378 |
-
#: lib/wordfenceClass.php:
|
7379 |
msgid "## New Issues (%d total)"
|
7380 |
msgstr ""
|
7381 |
|
7382 |
#. translators: Number of scan results.
|
7383 |
-
#: lib/wordfenceClass.php:
|
7384 |
msgid "## Ignored Issues (%d total)"
|
7385 |
msgstr ""
|
7386 |
|
7387 |
-
#: lib/wordfenceClass.php:
|
7388 |
msgid "No Ignored Issues"
|
7389 |
msgstr ""
|
7390 |
|
7391 |
-
#: lib/wordfenceClass.php:
|
7392 |
msgid "Wordfence Activity Log"
|
7393 |
msgstr ""
|
7394 |
|
7395 |
#. translators: Error message.
|
7396 |
-
#: lib/wordfenceClass.php:
|
7397 |
msgid "Could not fetch free license key from Wordfence: %s"
|
7398 |
msgstr ""
|
7399 |
|
7400 |
-
#: lib/wordfenceClass.php:
|
7401 |
msgid "We could not find your .htaccess file to modify it."
|
7402 |
msgstr ""
|
7403 |
|
7404 |
#. translators: Error message.
|
7405 |
-
#: lib/wordfenceClass.php:
|
7406 |
msgid "We found your .htaccess file but could not open it for writing: %s"
|
7407 |
msgstr ""
|
7408 |
|
7409 |
-
#: lib/wordfenceClass.php:
|
7410 |
msgid "All Countries"
|
7411 |
msgstr ""
|
7412 |
|
7413 |
-
#: lib/wordfenceClass.php:
|
7414 |
msgid "1 Country"
|
7415 |
msgstr ""
|
7416 |
|
7417 |
#. translators: Number of countries.
|
7418 |
-
#: lib/wordfenceClass.php:
|
7419 |
msgid "%d Countries"
|
7420 |
msgstr ""
|
7421 |
|
7422 |
-
#: lib/wordfenceClass.php:
|
7423 |
msgid "Entire Site"
|
7424 |
msgstr ""
|
7425 |
|
7426 |
-
#: lib/wordfenceClass.php:
|
7427 |
msgid "Login Only"
|
7428 |
msgstr ""
|
7429 |
|
7430 |
-
#: lib/wordfenceClass.php:
|
7431 |
msgid "Site Except Login"
|
7432 |
msgstr ""
|
7433 |
|
7434 |
-
#: lib/wordfenceClass.php:
|
7435 |
msgid "IP Range"
|
7436 |
msgstr ""
|
7437 |
|
7438 |
#. translators: 2FA backup codes.
|
7439 |
-
#: lib/wordfenceClass.php:
|
7440 |
-
#: lib/wordfenceClass.php:
|
7441 |
msgid "User Agent"
|
7442 |
msgstr ""
|
7443 |
|
7444 |
-
#: lib/wordfenceClass.php:
|
7445 |
#: views/blocking/blocking-create.php:201
|
7446 |
msgid "Referrer"
|
7447 |
msgstr ""
|
7448 |
|
7449 |
-
#: lib/wordfenceClass.php:
|
7450 |
msgid "Permanent"
|
7451 |
msgstr ""
|
7452 |
|
7453 |
-
#: lib/wordfenceClass.php:
|
7454 |
msgid "An error occurred while creating the block."
|
7455 |
msgstr ""
|
7456 |
|
7457 |
-
#: lib/wordfenceClass.php:
|
7458 |
msgid "No block parameters were provided."
|
7459 |
msgstr ""
|
7460 |
|
7461 |
-
#: lib/wordfenceClass.php:
|
7462 |
-
#: lib/wordfenceClass.php:
|
7463 |
msgid "No blocks were provided."
|
7464 |
msgstr ""
|
7465 |
|
7466 |
-
#: lib/wordfenceClass.php:
|
7467 |
msgid "The license provided is already in use on another site."
|
7468 |
msgstr ""
|
7469 |
|
7470 |
-
#: lib/wordfenceClass.php:
|
7471 |
msgid "The Wordfence activation server returned an unexpected response. Please try again."
|
7472 |
msgstr ""
|
7473 |
|
7474 |
-
#: lib/wordfenceClass.php:
|
7475 |
msgid "We received an error while trying to activate the license with the Wordfence servers: "
|
7476 |
msgstr ""
|
7477 |
|
7478 |
-
#: lib/wordfenceClass.php:
|
7479 |
msgid "No license was provided to install."
|
7480 |
msgstr ""
|
7481 |
|
7482 |
-
#: lib/wordfenceClass.php:
|
7483 |
msgid "An unknown configuration section was provided."
|
7484 |
msgstr ""
|
7485 |
|
7486 |
-
#: lib/wordfenceClass.php:
|
7487 |
msgid "No configuration section was provided."
|
7488 |
msgstr ""
|
7489 |
|
7490 |
-
#: lib/wordfenceClass.php:
|
7491 |
-
#: lib/wordfenceClass.php:
|
7492 |
msgid "An error occurred while saving the configuration."
|
7493 |
msgstr ""
|
7494 |
|
7495 |
-
#: lib/wordfenceClass.php:
|
7496 |
msgid "No configuration changes were provided to save."
|
7497 |
msgstr ""
|
7498 |
|
7499 |
-
#: lib/wordfenceClass.php:
|
7500 |
-
#: lib/wordfenceClass.php:
|
7501 |
-
#: lib/wordfenceClass.php:
|
7502 |
-
#: lib/wordfenceClass.php:
|
7503 |
-
#: lib/wordfenceClass.php:
|
7504 |
-
#: lib/wordfenceClass.php:
|
7505 |
msgid "We could not find that issue in our database."
|
7506 |
msgstr ""
|
7507 |
|
7508 |
-
#: lib/wordfenceClass.php:
|
7509 |
msgid "An error occurred while trying to hide the file."
|
7510 |
msgstr ""
|
7511 |
|
7512 |
-
#: lib/wordfenceClass.php:
|
7513 |
msgid "An invalid file was requested for hiding."
|
7514 |
msgstr ""
|
7515 |
|
7516 |
-
#: lib/wordfenceClass.php:
|
7517 |
-
#: lib/wordfenceClass.php:
|
7518 |
msgid "You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
|
7519 |
msgstr ""
|
7520 |
|
7521 |
-
#: lib/wordfenceClass.php:
|
7522 |
msgid "Manual permanent block by admin"
|
7523 |
msgstr ""
|
7524 |
|
7525 |
-
#: lib/wordfenceClass.php:
|
7526 |
msgid "Please enter a valid IP address to block."
|
7527 |
msgstr ""
|
7528 |
|
7529 |
-
#: lib/wordfenceClass.php:
|
7530 |
msgid "You can't block your own IP address."
|
7531 |
msgstr ""
|
7532 |
|
7533 |
#. translators: IP address.
|
7534 |
-
#: lib/wordfenceClass.php:
|
7535 |
msgid "The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page."
|
7536 |
msgstr ""
|
7537 |
|
7538 |
#. translators: IP address.
|
7539 |
-
#: lib/wordfenceClass.php:
|
7540 |
msgid "The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for."
|
7541 |
msgstr ""
|
7542 |
|
7543 |
-
#: lib/wordfenceClass.php:
|
7544 |
msgid "The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google."
|
7545 |
msgstr ""
|
7546 |
|
7547 |
-
#: lib/wordfenceClass.php:
|
7548 |
msgid "An invalid operation was called."
|
7549 |
msgstr ""
|
7550 |
|
7551 |
-
#: lib/wordfenceClass.php:
|
7552 |
msgid "An invalid status was specified when trying to update that issue."
|
7553 |
msgstr ""
|
7554 |
|
7555 |
-
#: lib/wordfenceClass.php:
|
7556 |
msgid "Scan stop request received."
|
7557 |
msgstr ""
|
7558 |
|
7559 |
-
#: lib/wordfenceClass.php:
|
7560 |
msgid "A request was received to stop the previous scan."
|
7561 |
msgstr ""
|
7562 |
|
7563 |
-
#: lib/wordfenceClass.php:
|
7564 |
msgid "Idle"
|
7565 |
msgstr ""
|
7566 |
|
7567 |
#. translators: Localized date.
|
7568 |
-
#: lib/wordfenceClass.php:
|
7569 |
msgid "Scan completed on %s"
|
7570 |
msgstr ""
|
7571 |
|
7572 |
-
#: lib/wordfenceClass.php:
|
7573 |
msgid "Last scan failed"
|
7574 |
msgstr ""
|
7575 |
|
7576 |
#. translators: Time until.
|
7577 |
-
#: lib/wordfenceClass.php:
|
7578 |
msgid "more than %s"
|
7579 |
msgstr ""
|
7580 |
|
7581 |
#. translators: Localized date.
|
7582 |
-
#: lib/wordfenceClass.php:
|
7583 |
msgid "The current scan looks like it has failed. Its last status update was <span id=\"wf-scan-failed-time-ago\">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably."
|
7584 |
msgstr ""
|
7585 |
|
7586 |
#. translators: Localized date.
|
7587 |
-
#: lib/wordfenceClass.php:
|
7588 |
-
#: lib/wordfenceClass.php:
|
7589 |
-
#: lib/wordfenceClass.php:
|
7590 |
-
#: lib/wordfenceClass.php:
|
7591 |
-
#: lib/wordfenceClass.php:
|
7592 |
msgid "Click here for steps you can try."
|
7593 |
msgstr ""
|
7594 |
|
7595 |
#. translators: Localized date.
|
7596 |
-
#: lib/wordfenceClass.php:
|
7597 |
msgid "Cancel Scan"
|
7598 |
msgstr ""
|
7599 |
|
7600 |
-
#: lib/wordfenceClass.php:
|
7601 |
msgid "The previous scan has failed. Some sites may need adjustments to run scans reliably."
|
7602 |
msgstr ""
|
7603 |
|
7604 |
#. translators: Time limit (number).
|
7605 |
-
#: lib/wordfenceClass.php:
|
7606 |
msgid "The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page."
|
7607 |
msgstr ""
|
7608 |
|
7609 |
-
#: lib/wordfenceClass.php:
|
7610 |
msgid "The previous scan has terminated because we detected an update occurring during the scan."
|
7611 |
msgstr ""
|
7612 |
|
7613 |
-
#: lib/wordfenceClass.php:
|
7614 |
msgid "The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself."
|
7615 |
msgstr ""
|
7616 |
|
7617 |
-
#: lib/wordfenceClass.php:
|
7618 |
msgid "Scans are not functional because SSL is unavailable."
|
7619 |
msgstr ""
|
7620 |
|
7621 |
-
#: lib/wordfenceClass.php:
|
7622 |
msgid "The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably."
|
7623 |
msgstr ""
|
7624 |
|
7625 |
-
#: lib/wordfenceClass.php:
|
7626 |
msgid "The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably."
|
7627 |
msgstr ""
|
7628 |
|
7629 |
-
#: lib/wordfenceClass.php:
|
7630 |
msgid "Invalid email address given."
|
7631 |
msgstr ""
|
7632 |
|
7633 |
-
#: lib/wordfenceClass.php:
|
7634 |
-
#: lib/wordfenceClass.php:
|
7635 |
msgid "Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted."
|
7636 |
msgstr ""
|
7637 |
|
7638 |
#. translators: 1. File path. 2. Error message.
|
7639 |
-
#: lib/wordfenceClass.php:
|
7640 |
msgid "Could not delete file %1$s. Error was: %2$s"
|
7641 |
msgstr ""
|
7642 |
|
7643 |
#. translators: File path.
|
7644 |
-
#: lib/wordfenceClass.php:
|
7645 |
msgid "We could not retrieve the original file of %s to do a repair."
|
7646 |
msgstr ""
|
7647 |
|
7648 |
#. translators: File path.
|
7649 |
-
#: lib/wordfenceClass.php:
|
7650 |
msgid "An invalid file %s was specified for repair."
|
7651 |
msgstr ""
|
7652 |
|
7653 |
#. translators: File path.
|
7654 |
-
#: lib/wordfenceClass.php:
|
7655 |
msgid "You don't have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
|
7656 |
msgstr ""
|
7657 |
|
7658 |
#. translators: 1. File path. 2. Error message.
|
7659 |
-
#: lib/wordfenceClass.php:
|
7660 |
msgid "We could not write to %1$s. The error was: %2$s"
|
7661 |
msgstr ""
|
7662 |
|
7663 |
#. translators: 1. File path. 2. Number of bytes.
|
7664 |
-
#: lib/wordfenceClass.php:
|
7665 |
msgid "We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server."
|
7666 |
msgstr ""
|
7667 |
|
7668 |
-
#: lib/wordfenceClass.php:
|
7669 |
msgid "Deleted some files with errors"
|
7670 |
msgstr ""
|
7671 |
|
7672 |
-
#: lib/wordfenceClass.php:
|
7673 |
msgid "Repaired some files with errors"
|
7674 |
msgstr ""
|
7675 |
|
7676 |
#. translators: 1. Number of files. 2. Error message.
|
7677 |
-
#: lib/wordfenceClass.php:
|
7678 |
msgid "Deleted %1$d files but we encountered the following errors with other files: %2$s"
|
7679 |
msgstr ""
|
7680 |
|
7681 |
#. translators: 1. Number of files. 2. Error message.
|
7682 |
-
#: lib/wordfenceClass.php:
|
7683 |
msgid "Repaired %1$d files but we encountered the following errors with other files: %2$s"
|
7684 |
msgstr ""
|
7685 |
|
7686 |
#. translators: Number of files.
|
7687 |
-
#: lib/wordfenceClass.php:
|
7688 |
msgid "Deleted %d files successfully"
|
7689 |
msgstr ""
|
7690 |
|
7691 |
#. translators: Number of files.
|
7692 |
-
#: lib/wordfenceClass.php:
|
7693 |
msgid "Repaired %d files successfully"
|
7694 |
msgstr ""
|
7695 |
|
7696 |
#. translators: Number of files.
|
7697 |
-
#: lib/wordfenceClass.php:
|
7698 |
msgid "Deleted %d files successfully. No errors were encountered."
|
7699 |
msgstr ""
|
7700 |
|
7701 |
#. translators: Number of files.
|
7702 |
-
#: lib/wordfenceClass.php:
|
7703 |
msgid "Repaired %d files successfully. No errors were encountered."
|
7704 |
msgstr ""
|
7705 |
|
7706 |
-
#: lib/wordfenceClass.php:
|
7707 |
msgid "Could not delete files"
|
7708 |
msgstr ""
|
7709 |
|
7710 |
-
#: lib/wordfenceClass.php:
|
7711 |
msgid "Could not repair files"
|
7712 |
msgstr ""
|
7713 |
|
7714 |
#. translators: Error message.
|
7715 |
-
#: lib/wordfenceClass.php:
|
7716 |
msgid "We could not delete any of the files you selected. We encountered the following errors: %s"
|
7717 |
msgstr ""
|
7718 |
|
7719 |
#. translators: Error message.
|
7720 |
-
#: lib/wordfenceClass.php:
|
7721 |
msgid "We could not repair any of the files you selected. We encountered the following errors: %s"
|
7722 |
msgstr ""
|
7723 |
|
7724 |
-
#: lib/wordfenceClass.php:
|
7725 |
msgid "Nothing done"
|
7726 |
msgstr ""
|
7727 |
|
7728 |
-
#: lib/wordfenceClass.php:
|
7729 |
msgid "We didn't delete anything and no errors were found."
|
7730 |
msgstr ""
|
7731 |
|
7732 |
-
#: lib/wordfenceClass.php:
|
7733 |
msgid "We didn't repair anything and no errors were found."
|
7734 |
msgstr ""
|
7735 |
|
7736 |
-
#: lib/wordfenceClass.php:
|
7737 |
msgid "Invalid bulk operation selected"
|
7738 |
msgstr ""
|
7739 |
|
7740 |
-
#: lib/wordfenceClass.php:
|
7741 |
msgid "Could not delete file because we could not find that issue."
|
7742 |
msgstr ""
|
7743 |
|
7744 |
-
#: lib/wordfenceClass.php:
|
7745 |
msgid "Could not delete file because that issue does not appear to be a file related issue."
|
7746 |
msgstr ""
|
7747 |
|
7748 |
-
#: lib/wordfenceClass.php:
|
7749 |
msgid "An invalid file was requested for deletion."
|
7750 |
msgstr ""
|
7751 |
|
7752 |
#. translators: 1. File path. 2. Error message.
|
7753 |
-
#: lib/wordfenceClass.php:
|
7754 |
msgid "Could not delete file %1$s. The error was: %2$s"
|
7755 |
msgstr ""
|
7756 |
|
7757 |
-
#: lib/wordfenceClass.php:
|
7758 |
msgid "Could not remove the option because we could not find that issue."
|
7759 |
msgstr ""
|
7760 |
|
7761 |
-
#: lib/wordfenceClass.php:
|
7762 |
msgid "Could not remove the option because that issue does not appear to be a database related issue."
|
7763 |
msgstr ""
|
7764 |
|
7765 |
#. translators: 1. WordPress option. 2. Error message.
|
7766 |
-
#: lib/wordfenceClass.php:
|
7767 |
msgid "Could not remove the option %1$s. The error was: %2$s"
|
7768 |
msgstr ""
|
7769 |
|
7770 |
-
#: lib/wordfenceClass.php:
|
7771 |
msgid "Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control."
|
7772 |
msgstr ""
|
7773 |
|
7774 |
-
#: lib/wordfenceClass.php:
|
7775 |
msgid "We could not get the original file to do a repair."
|
7776 |
msgstr ""
|
7777 |
|
7778 |
-
#: lib/wordfenceClass.php:
|
7779 |
msgid "An invalid file was specified for repair."
|
7780 |
msgstr ""
|
7781 |
|
7782 |
-
#: lib/wordfenceClass.php:
|
7783 |
msgid "We could not write to that file. You may not have permission to modify files on your WordPress server."
|
7784 |
msgstr ""
|
7785 |
|
7786 |
-
#: lib/wordfenceClass.php:
|
7787 |
msgid "Ajax request received to start scan."
|
7788 |
msgstr ""
|
7789 |
|
7790 |
#. translators: Number of URLs.
|
7791 |
-
#: lib/wordfenceClass.php:
|
7792 |
msgid "Page contains %d malware URL: "
|
7793 |
msgid_plural "Page contains %d malware URLs: "
|
7794 |
msgstr[0] ""
|
7795 |
msgstr[1] ""
|
7796 |
|
7797 |
-
#: lib/wordfenceClass.php:
|
7798 |
msgid "Run a Scan"
|
7799 |
msgstr ""
|
7800 |
|
7801 |
-
#: lib/wordfenceClass.php:
|
7802 |
msgid "Unknown dashboard data set."
|
7803 |
msgstr ""
|
7804 |
|
7805 |
-
#: lib/wordfenceClass.php:
|
7806 |
msgid "Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again."
|
7807 |
msgstr ""
|
7808 |
|
7809 |
-
#: lib/wordfenceClass.php:
|
7810 |
msgid "An invalid IP address was specified."
|
7811 |
msgstr ""
|
7812 |
|
7813 |
-
#: lib/wordfenceClass.php:
|
7814 |
-
#: lib/wordfenceClass.php:
|
7815 |
-
#: lib/wordfenceClass.php:
|
7816 |
msgid "File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)"
|
7817 |
msgstr ""
|
7818 |
|
7819 |
-
#: lib/wordfenceClass.php:
|
7820 |
-
#: lib/wordfenceClass.php:
|
7821 |
msgid "Invalid file requested. (Relative paths not allowed)"
|
7822 |
msgstr ""
|
7823 |
|
7824 |
-
#: lib/wordfenceClass.php:
|
7825 |
-
#: lib/wordfenceClass.php:
|
7826 |
-
#: lib/wordfenceClass.php:
|
7827 |
msgid "File contains illegal characters."
|
7828 |
msgstr ""
|
7829 |
|
7830 |
#. translators: Error message.
|
7831 |
-
#: lib/wordfenceClass.php:
|
7832 |
msgid "We could not open the requested file for reading. The error was: %s"
|
7833 |
msgstr ""
|
7834 |
|
7835 |
-
#: lib/wordfenceClass.php:
|
7836 |
msgid "Greater than 2 Gigs"
|
7837 |
msgstr ""
|
7838 |
|
7839 |
-
#: lib/wordfenceClass.php:
|
7840 |
msgid "Unknown file size."
|
7841 |
msgstr ""
|
7842 |
|
7843 |
-
#: lib/wordfenceClass.php:
|
7844 |
msgid "We could not get the contents of the original file to do a comparison."
|
7845 |
msgstr ""
|
7846 |
|
7847 |
-
#: lib/wordfenceClass.php:
|
7848 |
msgid "File does not exist."
|
7849 |
msgstr ""
|
7850 |
|
7851 |
-
#: lib/wordfenceClass.php:
|
7852 |
#: views/dashboard/options-group-import.php:167
|
7853 |
msgid "Reload"
|
7854 |
msgstr ""
|
7855 |
|
7856 |
-
#: lib/wordfenceClass.php:
|
7857 |
msgid "${totalIPs} addresses in this network"
|
7858 |
msgstr ""
|
7859 |
|
7860 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
7861 |
-
#: lib/wordfenceClass.php:
|
7862 |
msgid "%s in POST body: %s"
|
7863 |
msgstr ""
|
7864 |
|
7865 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
7866 |
-
#: lib/wordfenceClass.php:
|
7867 |
msgid "%s in cookie: %s"
|
7868 |
msgstr ""
|
7869 |
|
7870 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
7871 |
-
#: lib/wordfenceClass.php:
|
7872 |
msgid "%s in file: %s"
|
7873 |
msgstr ""
|
7874 |
|
7875 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
7876 |
-
#: lib/wordfenceClass.php:
|
7877 |
msgid "%s in query string: %s"
|
7878 |
msgstr ""
|
7879 |
|
7880 |
#. translators: Domain name.
|
7881 |
-
#: lib/wordfenceClass.php:
|
7882 |
msgid "%s is not valid hostname"
|
7883 |
msgstr ""
|
7884 |
|
7885 |
#. translators: Domain name.
|
7886 |
-
#: lib/wordfenceClass.php:
|
7887 |
msgid ".htaccess Updated"
|
7888 |
msgstr ""
|
7889 |
|
7890 |
-
#: lib/wordfenceClass.php:
|
7891 |
msgid ".htaccess change"
|
7892 |
msgstr ""
|
7893 |
|
7894 |
-
#: lib/wordfenceClass.php:
|
7895 |
msgid "404 Not Found"
|
7896 |
msgstr ""
|
7897 |
|
7898 |
-
#: lib/wordfenceClass.php:
|
7899 |
msgid "Activity Log Sent"
|
7900 |
msgstr ""
|
7901 |
|
7902 |
-
#: lib/wordfenceClass.php:
|
7903 |
msgid "Add action to allowlist"
|
7904 |
msgstr ""
|
7905 |
|
7906 |
-
#: lib/wordfenceClass.php:
|
7907 |
msgid "Add code to .htaccess"
|
7908 |
msgstr ""
|
7909 |
|
7910 |
-
#: lib/wordfenceClass.php:
|
7911 |
msgid "All Hits"
|
7912 |
msgstr ""
|
7913 |
|
7914 |
#. translators: WordPress username.
|
7915 |
-
#: lib/wordfenceClass.php:
|
7916 |
msgid "All capabilties of admin user %s were successfully revoked."
|
7917 |
msgstr ""
|
7918 |
|
7919 |
-
#: lib/wordfenceClass.php:
|
7920 |
msgid "An error occurred when adding the request to the allowlist."
|
7921 |
msgstr ""
|
7922 |
|
7923 |
-
#: lib/wordfenceClass.php:
|
7924 |
msgid "Are you sure you want to allowlist this action?"
|
7925 |
msgstr ""
|
7926 |
|
7927 |
-
#: lib/wordfenceClass.php:
|
7928 |
msgid "Authentication Code"
|
7929 |
msgstr ""
|
7930 |
|
7931 |
-
#: lib/wordfenceClass.php:
|
7932 |
msgid "Background Request Blocked"
|
7933 |
msgstr ""
|
7934 |
|
7935 |
-
#: lib/wordfenceClass.php:
|
7936 |
msgid "Block This Network"
|
7937 |
msgstr ""
|
7938 |
|
7939 |
-
#: lib/wordfenceClass.php:
|
7940 |
msgid "Blocked By Firewall"
|
7941 |
msgstr ""
|
7942 |
|
7943 |
-
#: lib/wordfenceClass.php:
|
7944 |
msgid "Blocked WAF"
|
7945 |
msgstr ""
|
7946 |
|
7947 |
-
#: lib/wordfenceClass.php:
|
7948 |
msgid "Blocked by Wordfence"
|
7949 |
msgstr ""
|
7950 |
|
7951 |
-
#: lib/wordfenceClass.php:
|
7952 |
msgid "Blocked by Wordfence plugin settings"
|
7953 |
msgstr ""
|
7954 |
|
7955 |
-
#: lib/wordfenceClass.php:
|
7956 |
msgid "Blocked by the Wordfence Application Firewall and plugin settings"
|
7957 |
msgstr ""
|
7958 |
|
7959 |
-
#: lib/wordfenceClass.php:
|
7960 |
msgid "Blocked by the Wordfence Security Network"
|
7961 |
msgstr ""
|
7962 |
|
7963 |
-
#: lib/wordfenceClass.php:
|
7964 |
msgid "Blocked by the Wordfence Web Application Firewall"
|
7965 |
msgstr ""
|
7966 |
|
7967 |
-
#: lib/wordfenceClass.php:
|
7968 |
msgid "Cellphone Sign-In Recovery Codes"
|
7969 |
msgstr ""
|
7970 |
|
7971 |
-
#: lib/wordfenceClass.php:
|
7972 |
msgid "Cellphone Sign-in activated for user."
|
7973 |
msgstr ""
|
7974 |
|
7975 |
-
#: lib/wordfenceClass.php:
|
7976 |
msgid "Click here to download a backup copy of this file now"
|
7977 |
msgstr ""
|
7978 |
|
7979 |
-
#: lib/wordfenceClass.php:
|
7980 |
msgid "Click here to download a backup copy of your .htaccess file now"
|
7981 |
msgstr ""
|
7982 |
|
7983 |
-
#: lib/wordfenceClass.php:
|
7984 |
msgid "Click to fix .htaccess"
|
7985 |
msgstr ""
|
7986 |
|
7987 |
-
#: lib/wordfenceClass.php:
|
7988 |
msgid "Crawlers"
|
7989 |
msgstr ""
|
7990 |
|
7991 |
-
#: lib/wordfenceClass.php:
|
7992 |
msgid "Diagnostic report has been sent successfully."
|
7993 |
msgstr ""
|
7994 |
|
7995 |
-
#: lib/wordfenceClass.php:
|
7996 |
msgid "Directory Listing Disabled"
|
7997 |
msgstr ""
|
7998 |
|
7999 |
-
#: lib/wordfenceClass.php:
|
8000 |
msgid "Directory listing has been disabled on your server."
|
8001 |
msgstr ""
|
8002 |
|
8003 |
-
#: lib/wordfenceClass.php:
|
8004 |
msgid "Don't ask again"
|
8005 |
msgstr ""
|
8006 |
|
8007 |
-
#: lib/wordfenceClass.php:
|
8008 |
msgid "Download Backup File"
|
8009 |
msgstr ""
|
8010 |
|
8011 |
-
#: lib/wordfenceClass.php:
|
8012 |
msgid "Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:"
|
8013 |
msgstr ""
|
8014 |
|
8015 |
-
#: lib/wordfenceClass.php:
|
8016 |
msgid "Email Diagnostic Report"
|
8017 |
msgstr ""
|
8018 |
|
8019 |
-
#: lib/wordfenceClass.php:
|
8020 |
msgid "Email Wordfence Activity Log"
|
8021 |
msgstr ""
|
8022 |
|
8023 |
-
#: lib/wordfenceClass.php:
|
8024 |
msgid "Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data."
|
8025 |
msgstr ""
|
8026 |
|
8027 |
-
#: lib/wordfenceClass.php:
|
8028 |
msgid "Error"
|
8029 |
msgstr ""
|
8030 |
|
8031 |
-
#: lib/wordfenceClass.php:
|
8032 |
msgid "Error Enabling All Options Page"
|
8033 |
msgstr ""
|
8034 |
|
8035 |
-
#: lib/wordfenceClass.php:
|
8036 |
msgid "Error Restoring Defaults"
|
8037 |
msgstr ""
|
8038 |
|
8039 |
-
#: lib/wordfenceClass.php:
|
8040 |
msgid "Error Saving Option"
|
8041 |
msgstr ""
|
8042 |
|
8043 |
-
#: lib/wordfenceClass.php:
|
8044 |
msgid "Error Saving Options"
|
8045 |
msgstr ""
|
8046 |
|
8047 |
-
#: lib/wordfenceClass.php:
|
8048 |
msgid "Failed Login"
|
8049 |
msgstr ""
|
8050 |
|
8051 |
-
#: lib/wordfenceClass.php:
|
8052 |
msgid "Failed Login: Invalid Username"
|
8053 |
msgstr ""
|
8054 |
|
8055 |
-
#: lib/wordfenceClass.php:
|
8056 |
msgid "Failed Login: Valid Username"
|
8057 |
msgstr ""
|
8058 |
|
8059 |
-
#: lib/wordfenceClass.php:
|
8060 |
msgid "File hidden successfully"
|
8061 |
msgstr ""
|
8062 |
|
8063 |
-
#: lib/wordfenceClass.php:
|
8064 |
msgid "File restored OK"
|
8065 |
msgstr ""
|
8066 |
|
8067 |
-
#: lib/wordfenceClass.php:
|
8068 |
msgid "Filter Traffic"
|
8069 |
msgstr ""
|
8070 |
|
8071 |
-
#: lib/wordfenceClass.php:
|
8072 |
msgid "Firewall Response"
|
8073 |
msgstr ""
|
8074 |
|
8075 |
-
#: lib/wordfenceClass.php:
|
8076 |
#: views/scanner/issue-wpscan_fullPathDiscl.php:8
|
8077 |
msgid "Full Path Disclosure"
|
8078 |
msgstr ""
|
8079 |
|
8080 |
-
#: lib/wordfenceClass.php:
|
8081 |
msgid "Google Bot"
|
8082 |
msgstr ""
|
8083 |
|
8084 |
-
#: lib/wordfenceClass.php:
|
8085 |
msgid "Google Crawlers"
|
8086 |
msgstr ""
|
8087 |
|
8088 |
-
#: lib/wordfenceClass.php:
|
8089 |
msgid "HTTP Response Code"
|
8090 |
msgstr ""
|
8091 |
|
8092 |
-
#: lib/wordfenceClass.php:
|
8093 |
msgid "Humans"
|
8094 |
msgstr ""
|
8095 |
|
8096 |
-
#: lib/wordfenceClass.php:
|
8097 |
msgid "Key:"
|
8098 |
msgstr ""
|
8099 |
|
8100 |
#. translators: Localized date.
|
8101 |
-
#: lib/wordfenceClass.php:
|
8102 |
msgid "Last Updated: %s"
|
8103 |
msgstr ""
|
8104 |
|
8105 |
#. translators: Localized date.
|
8106 |
-
#: lib/wordfenceClass.php:
|
8107 |
msgid "Learn more about repairing modified files."
|
8108 |
msgstr ""
|
8109 |
|
8110 |
-
#: lib/wordfenceClass.php:
|
8111 |
msgid "Locked Out"
|
8112 |
msgstr ""
|
8113 |
|
8114 |
-
#: lib/wordfenceClass.php:
|
8115 |
msgid "Locked out from logging in"
|
8116 |
msgstr ""
|
8117 |
|
8118 |
-
#: lib/wordfenceClass.php:
|
8119 |
msgid "Logged In"
|
8120 |
msgstr ""
|
8121 |
|
8122 |
-
#: lib/wordfenceClass.php:
|
8123 |
msgid "Logins"
|
8124 |
msgstr ""
|
8125 |
|
8126 |
-
#: lib/wordfenceClass.php:
|
8127 |
msgid "Logins and Logouts"
|
8128 |
msgstr ""
|
8129 |
|
8130 |
#. translators: Localized date.
|
8131 |
-
#: lib/wordfenceClass.php:
|
8132 |
msgid "Next Update Check: %s"
|
8133 |
msgstr ""
|
8134 |
|
8135 |
#. translators: Localized date.
|
8136 |
-
#: lib/wordfenceClass.php:
|
8137 |
msgid "No activity to report yet. Please complete your first scan."
|
8138 |
msgstr ""
|
8139 |
|
8140 |
-
#: lib/wordfenceClass.php:
|
8141 |
msgid "No issues have been ignored."
|
8142 |
msgstr ""
|
8143 |
|
8144 |
-
#: lib/wordfenceClass.php:
|
8145 |
msgid "No new issues have been found."
|
8146 |
msgstr ""
|
8147 |
|
8148 |
-
#: lib/wordfenceClass.php:
|
8149 |
msgid "No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory."
|
8150 |
msgstr ""
|
8151 |
|
8152 |
-
#: lib/wordfenceClass.php:
|
8153 |
msgid "No rules were updated. Please verify your website can reach the Wordfence servers."
|
8154 |
msgstr ""
|
8155 |
|
8156 |
-
#: lib/wordfenceClass.php:
|
8157 |
msgid "No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later."
|
8158 |
msgstr ""
|
8159 |
|
8160 |
-
#: lib/wordfenceClass.php:
|
8161 |
msgid "Note: Status will update when changes are saved"
|
8162 |
msgstr ""
|
8163 |
|
8164 |
-
#: lib/wordfenceClass.php:
|
8165 |
msgid "OK"
|
8166 |
msgstr ""
|
8167 |
|
8168 |
-
#: lib/wordfenceClass.php:
|
8169 |
msgid "Pages Not Found"
|
8170 |
msgstr ""
|
8171 |
|
8172 |
-
#: lib/wordfenceClass.php:
|
8173 |
msgid "Paid Members Only"
|
8174 |
msgstr ""
|
8175 |
|
8176 |
-
#: lib/wordfenceClass.php:
|
8177 |
msgid "Please enter a valid email address."
|
8178 |
msgstr ""
|
8179 |
|
8180 |
-
#: lib/wordfenceClass.php:
|
8181 |
msgid "Please include your support ticket number or forum username."
|
8182 |
msgstr ""
|
8183 |
|
8184 |
-
#: lib/wordfenceClass.php:
|
8185 |
msgid "Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site's root:"
|
8186 |
msgstr ""
|
8187 |
|
8188 |
-
#: lib/wordfenceClass.php:
|
8189 |
msgid "Please specify a reason"
|
8190 |
msgstr ""
|
8191 |
|
8192 |
-
#: lib/wordfenceClass.php:
|
8193 |
msgid "Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash."
|
8194 |
msgstr ""
|
8195 |
|
8196 |
-
#: lib/wordfenceClass.php:
|
8197 |
msgid "Please specify either an IP address range, Hostname or a web browser pattern to match."
|
8198 |
msgstr ""
|
8199 |
|
8200 |
-
#: lib/wordfenceClass.php:
|
8201 |
msgid "Recent Activity"
|
8202 |
msgstr ""
|
8203 |
|
8204 |
-
#: lib/wordfenceClass.php:
|
8205 |
msgid "Recovery Codes"
|
8206 |
msgstr ""
|
8207 |
|
8208 |
-
#: lib/wordfenceClass.php:
|
8209 |
msgid "Redirected"
|
8210 |
msgstr ""
|
8211 |
|
8212 |
-
#: lib/wordfenceClass.php:
|
8213 |
msgid "Redirected by Country Blocking bypass URL"
|
8214 |
msgstr ""
|
8215 |
|
8216 |
-
#: lib/wordfenceClass.php:
|
8217 |
msgid "Referer"
|
8218 |
msgstr ""
|
8219 |
|
8220 |
-
#: lib/wordfenceClass.php:
|
8221 |
msgid "Registered Users"
|
8222 |
msgstr ""
|
8223 |
|
8224 |
-
#: lib/wordfenceClass.php:
|
8225 |
msgid "Rule Update Failed"
|
8226 |
msgstr ""
|
8227 |
|
8228 |
-
#: lib/wordfenceClass.php:
|
8229 |
msgid "Rules Updated"
|
8230 |
msgstr ""
|
8231 |
|
8232 |
-
#: lib/wordfenceClass.php:
|
8233 |
msgid "Scan Complete."
|
8234 |
msgstr ""
|
8235 |
|
8236 |
-
#: lib/wordfenceClass.php:
|
8237 |
msgid "Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead."
|
8238 |
msgstr ""
|
8239 |
|
8240 |
-
#: lib/wordfenceClass.php:
|
8241 |
msgid "Security Event"
|
8242 |
msgstr ""
|
8243 |
|
8244 |
-
#: lib/wordfenceClass.php:
|
8245 |
msgid "Send"
|
8246 |
msgstr ""
|
8247 |
|
8248 |
-
#: lib/wordfenceClass.php:
|
8249 |
msgid "Sorry, but no data for that IP or domain was found."
|
8250 |
msgstr ""
|
8251 |
|
8252 |
-
#: lib/wordfenceClass.php:
|
8253 |
msgid "Specify a valid IP range"
|
8254 |
msgstr ""
|
8255 |
|
8256 |
-
#: lib/wordfenceClass.php:
|
8257 |
msgid "Specify a valid hostname"
|
8258 |
msgstr ""
|
8259 |
|
8260 |
-
#: lib/wordfenceClass.php:
|
8261 |
msgid "Specify an IP range, Hostname or Browser pattern"
|
8262 |
msgstr ""
|
8263 |
|
8264 |
-
#: lib/wordfenceClass.php:
|
8265 |
msgid "Success deleting file"
|
8266 |
msgstr ""
|
8267 |
|
8268 |
-
#: lib/wordfenceClass.php:
|
8269 |
msgid "Success removing option"
|
8270 |
msgstr ""
|
8271 |
|
8272 |
-
#: lib/wordfenceClass.php:
|
8273 |
msgid "Success restoring file"
|
8274 |
msgstr ""
|
8275 |
|
8276 |
-
#: lib/wordfenceClass.php:
|
8277 |
msgid "Success updating option"
|
8278 |
msgstr ""
|
8279 |
|
8280 |
-
#: lib/wordfenceClass.php:
|
8281 |
msgid "Successfully deleted admin"
|
8282 |
msgstr ""
|
8283 |
|
8284 |
-
#: lib/wordfenceClass.php:
|
8285 |
msgid "Successfully revoked admin"
|
8286 |
msgstr ""
|
8287 |
|
8288 |
-
#: lib/wordfenceClass.php:
|
8289 |
msgid "Test Email Sent"
|
8290 |
msgstr ""
|
8291 |
|
8292 |
-
#: lib/wordfenceClass.php:
|
8293 |
msgid "The 'How does Wordfence get IPs' option was successfully updated to the recommended value."
|
8294 |
msgstr ""
|
8295 |
|
8296 |
-
#: lib/wordfenceClass.php:
|
8297 |
msgid "The Full Path disclosure issue has been fixed"
|
8298 |
msgstr ""
|
8299 |
|
8300 |
#. translators: WordPress username.
|
8301 |
-
#: lib/wordfenceClass.php:
|
8302 |
msgid "The admin user %s was successfully deleted."
|
8303 |
msgstr ""
|
8304 |
|
8305 |
#. translators: File path.
|
8306 |
-
#: lib/wordfenceClass.php:
|
8307 |
msgid "The file %s was successfully deleted."
|
8308 |
msgstr ""
|
8309 |
|
8310 |
#. translators: File path.
|
8311 |
-
#: lib/wordfenceClass.php:
|
8312 |
msgid "The file %s was successfully hidden from public view."
|
8313 |
msgstr ""
|
8314 |
|
8315 |
#. translators: File path.
|
8316 |
-
#: lib/wordfenceClass.php:
|
8317 |
msgid "The file %s was successfully restored."
|
8318 |
msgstr ""
|
8319 |
|
8320 |
#. translators: WordPress option.
|
8321 |
-
#: lib/wordfenceClass.php:
|
8322 |
msgid "The option %s was successfully removed."
|
8323 |
msgstr ""
|
8324 |
|
8325 |
#. translators: WordPress option.
|
8326 |
-
#: lib/wordfenceClass.php:
|
8327 |
msgid "The request has been allowlisted. Please try it again."
|
8328 |
msgstr ""
|
8329 |
|
8330 |
-
#: lib/wordfenceClass.php:
|
8331 |
msgid "There was an error while sending the email."
|
8332 |
msgstr ""
|
8333 |
|
8334 |
-
#: lib/wordfenceClass.php:
|
8335 |
msgid "This will be shown only once. Keep these codes somewhere safe."
|
8336 |
msgstr ""
|
8337 |
|
8338 |
-
#: lib/wordfenceClass.php:
|
8339 |
msgid "Throttled"
|
8340 |
msgstr ""
|
8341 |
|
8342 |
-
#: lib/wordfenceClass.php:
|
8343 |
msgid "Two Factor Status"
|
8344 |
msgstr ""
|
8345 |
|
8346 |
#. translators: HTTP client type.
|
8347 |
-
#: lib/wordfenceClass.php:
|
8348 |
msgid "Type: %s"
|
8349 |
msgstr ""
|
8350 |
|
8351 |
#. translators: HTTP client type.
|
8352 |
-
#: lib/wordfenceClass.php:
|
8353 |
#: views/scanner/issue-checkGSB.php:8
|
8354 |
#: views/scanner/issue-commentBadURL.php:8
|
8355 |
#: views/scanner/issue-configReadable.php:12
|
@@ -8369,567 +8784,577 @@ msgstr ""
|
|
8369 |
msgid "URL"
|
8370 |
msgstr ""
|
8371 |
|
8372 |
-
#: lib/wordfenceClass.php:
|
8373 |
msgid "Unable to automatically hide file"
|
8374 |
msgstr ""
|
8375 |
|
8376 |
#. translators: 2FA backup codes.
|
8377 |
-
#: lib/wordfenceClass.php:
|
8378 |
msgid "Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
|
8379 |
msgstr ""
|
8380 |
|
8381 |
#. translators: 2FA backup codes.
|
8382 |
-
#: lib/wordfenceClass.php:
|
8383 |
msgid "Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
|
8384 |
msgstr ""
|
8385 |
|
8386 |
-
#: lib/wordfenceClass.php:
|
8387 |
msgid "User ID"
|
8388 |
msgstr ""
|
8389 |
|
8390 |
-
#: lib/wordfenceClass.php:
|
8391 |
msgid "WHOIS LOOKUP"
|
8392 |
msgstr ""
|
8393 |
|
8394 |
-
#: lib/wordfenceClass.php:
|
8395 |
msgid "We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding."
|
8396 |
msgstr ""
|
8397 |
|
8398 |
#. translators: Error message.
|
8399 |
-
#: lib/wordfenceClass.php:
|
8400 |
msgid "We can't modify your .htaccess file for you because: %s"
|
8401 |
msgstr ""
|
8402 |
|
8403 |
#. translators: Error message.
|
8404 |
-
#: lib/wordfenceClass.php:
|
8405 |
msgid "We encountered a problem"
|
8406 |
msgstr ""
|
8407 |
|
8408 |
#. translators: URL.
|
8409 |
-
#: lib/wordfenceClass.php:
|
8410 |
msgid "Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."
|
8411 |
msgstr ""
|
8412 |
|
8413 |
#. translators: URL.
|
8414 |
-
#: lib/wordfenceClass.php:
|
8415 |
msgid "Wordfence is working..."
|
8416 |
msgstr ""
|
8417 |
|
8418 |
-
#: lib/wordfenceClass.php:
|
8419 |
-
msgid "You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank' rel='noopener noreferrer' href='
|
8420 |
msgstr ""
|
8421 |
|
8422 |
-
#: lib/wordfenceClass.php:
|
8423 |
msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files."
|
8424 |
msgstr ""
|
8425 |
|
8426 |
-
#: lib/wordfenceClass.php:
|
8427 |
msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>"
|
8428 |
msgstr ""
|
8429 |
|
8430 |
-
#: lib/wordfenceClass.php:
|
8431 |
msgid "You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping."
|
8432 |
msgstr ""
|
8433 |
|
8434 |
-
#: lib/wordfenceClass.php:
|
8435 |
msgid "You have unsaved changes to your options. If you leave this page, those changes will be lost."
|
8436 |
msgstr ""
|
8437 |
|
8438 |
-
#: lib/wordfenceClass.php:
|
8439 |
msgid "Your .htaccess has been updated successfully. Please verify your site is functioning normally."
|
8440 |
msgstr ""
|
8441 |
|
8442 |
#. translators: Email address.
|
8443 |
-
#: lib/wordfenceClass.php:
|
8444 |
msgid "Your Wordfence activity log was sent to %s"
|
8445 |
msgstr ""
|
8446 |
|
8447 |
#. translators: Email address.
|
8448 |
-
#: lib/wordfenceClass.php:
|
8449 |
msgid "Your rules have been updated successfully."
|
8450 |
msgstr ""
|
8451 |
|
8452 |
-
#: lib/wordfenceClass.php:
|
8453 |
msgid "Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href=\"https://www.wordfence.com/wafUpdateRules1/wordfence-signup/\">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>"
|
8454 |
msgstr ""
|
8455 |
|
8456 |
#. translators: wp_mail() return value.
|
8457 |
-
#: lib/wordfenceClass.php:
|
8458 |
msgid "Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered."
|
8459 |
msgstr ""
|
8460 |
|
8461 |
#. translators: wp_mail() return value.
|
8462 |
-
#: lib/wordfenceClass.php:
|
8463 |
msgid "blocked by firewall"
|
8464 |
msgstr ""
|
8465 |
|
8466 |
#. translators: Reason for firewall action.
|
8467 |
-
#: lib/wordfenceClass.php:
|
8468 |
msgid "blocked by firewall for %s"
|
8469 |
msgstr ""
|
8470 |
|
8471 |
#. translators: Reason for firewall action.
|
8472 |
-
#: lib/wordfenceClass.php:
|
8473 |
msgid "blocked by real-time IP blocklist"
|
8474 |
msgstr ""
|
8475 |
|
8476 |
-
#: lib/wordfenceClass.php:
|
8477 |
msgid "blocked by the Wordfence Security Network"
|
8478 |
msgstr ""
|
8479 |
|
8480 |
#. translators: Reason for firewall action.
|
8481 |
-
#: lib/wordfenceClass.php:
|
8482 |
msgid "blocked for %s"
|
8483 |
msgstr ""
|
8484 |
|
8485 |
#. translators: Reason for firewall action.
|
8486 |
-
#: lib/wordfenceClass.php:
|
8487 |
msgid "locked out from logging in"
|
8488 |
msgstr ""
|
8489 |
|
8490 |
-
#: lib/wordfenceClass.php:
|
8491 |
msgid "Wordfence generated an error on activation. The output we received during activation was:"
|
8492 |
msgstr ""
|
8493 |
|
8494 |
-
#: lib/wordfenceClass.php:
|
8495 |
msgid "Wordfence could not register with the Wordfence scanning servers when it activated."
|
8496 |
msgstr ""
|
8497 |
|
8498 |
-
#: lib/wordfenceClass.php:
|
8499 |
msgid "You can try to fix this by deactivating Wordfence and then activating it again, so Wordfence will retry registering for you. If you keep seeing this error, it usually means your WordPress server can't connect to our scanning servers, or your wfConfig database table cannot be created to save the key. You can try asking your host to allow your server to connect to noc1.wordfence.com or check the wfConfig database table and database privileges."
|
8500 |
msgstr ""
|
8501 |
|
8502 |
-
#: lib/wordfenceClass.php:
|
8503 |
msgid "The Wordfence Web Application Firewall cannot run."
|
8504 |
msgstr ""
|
8505 |
|
8506 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
8507 |
-
#: lib/wordfenceClass.php:
|
8508 |
-
msgid "The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href=\"%1$s\">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"
|
8509 |
msgstr ""
|
8510 |
|
8511 |
-
#: lib/wordfenceClass.php:
|
8512 |
msgid "The WAF storage engine is currently set to mysqli, but Wordfence is unable to use the database. The WAF will fall back to using local file system storage instead."
|
8513 |
msgstr ""
|
8514 |
|
8515 |
-
#: lib/wordfenceClass.php:
|
8516 |
-
#: lib/wordfenceClass.php:
|
8517 |
msgid "The Wordfence Web Application Firewall needs a configuration update."
|
8518 |
msgstr ""
|
8519 |
|
8520 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
8521 |
-
#: lib/wordfenceClass.php:
|
8522 |
-
msgid "It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a>. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"
|
8523 |
msgstr ""
|
8524 |
|
8525 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
8526 |
-
#: lib/wordfenceClass.php:
|
8527 |
-
msgid "It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a> or use the \"Optimize the Wordfence Firewall\" button on the Firewall Options page. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"
|
8528 |
msgstr ""
|
8529 |
|
8530 |
-
#: lib/wordfenceClass.php:
|
8531 |
msgid "The Wordfence Web Application Firewall is in read-only mode."
|
8532 |
msgstr ""
|
8533 |
|
8534 |
-
#: lib/wordfenceClass.php:
|
8535 |
msgid "This site is currently using PHP's built in REMOTE_ADDR."
|
8536 |
msgstr ""
|
8537 |
|
8538 |
-
#: lib/wordfenceClass.php:
|
8539 |
msgid "This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
|
8540 |
msgstr ""
|
8541 |
|
8542 |
-
#: lib/wordfenceClass.php:
|
8543 |
msgid "This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
|
8544 |
msgstr ""
|
8545 |
|
8546 |
-
#: lib/wordfenceClass.php:
|
8547 |
msgid "This site is currently using the Cloudflare \"CF-Connecting-IP\" HTTP header, which should only be used when the site is behind Cloudflare."
|
8548 |
msgstr ""
|
8549 |
|
8550 |
-
#: lib/wordfenceClass.php:
|
8551 |
msgid "Your 'How does Wordfence get IPs' setting is misconfigured."
|
8552 |
msgstr ""
|
8553 |
|
8554 |
-
#: lib/wordfenceClass.php:
|
8555 |
msgid "Click here to use the recommended setting"
|
8556 |
msgstr ""
|
8557 |
|
8558 |
-
#: lib/wordfenceClass.php:
|
8559 |
#: views/onboarding/fresh-install.php:39
|
8560 |
msgid "or"
|
8561 |
msgstr ""
|
8562 |
|
8563 |
-
#: lib/wordfenceClass.php:
|
8564 |
msgid "visit the options page"
|
8565 |
msgstr ""
|
8566 |
|
8567 |
-
#: lib/wordfenceClass.php:
|
8568 |
msgid "to manually update it."
|
8569 |
msgstr ""
|
8570 |
|
8571 |
-
#: lib/wordfenceClass.php:
|
8572 |
msgid "Do you want Wordfence to stay up-to-date automatically?"
|
8573 |
msgstr ""
|
8574 |
|
8575 |
-
#: lib/wordfenceClass.php:
|
8576 |
msgid "Yes, enable auto-update."
|
8577 |
msgstr ""
|
8578 |
|
8579 |
-
#: lib/wordfenceClass.php:
|
8580 |
msgid "No thanks."
|
8581 |
msgstr ""
|
8582 |
|
|
|
|
|
|
|
|
|
8583 |
#. translators: Localized date.
|
8584 |
-
#: lib/wordfenceClass.php:
|
8585 |
msgid "The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then."
|
8586 |
msgstr ""
|
8587 |
|
8588 |
#. translators: 1. Localized date. 2. WordPress admin panel URL.
|
8589 |
-
#: lib/wordfenceClass.php:
|
8590 |
msgid "You may wait for the next automatic attempt at %1$s or try to <a href=\"%2$s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
8591 |
msgstr ""
|
8592 |
|
8593 |
#. translators: WordPress admin panel URL.
|
8594 |
-
#: lib/wordfenceClass.php:
|
8595 |
msgid "You may wait for the next automatic attempt or try to <a href=\"%s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
8596 |
msgstr ""
|
8597 |
|
8598 |
#. translators: WordPress admin panel URL.
|
8599 |
-
#: lib/wordfenceClass.php:
|
8600 |
msgid "You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
8601 |
msgstr ""
|
8602 |
|
8603 |
-
#: lib/wordfenceClass.php:
|
8604 |
msgid "You may wait for the next automatic attempt or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
8605 |
msgstr ""
|
8606 |
|
8607 |
-
#: lib/wordfenceClass.php:
|
8608 |
#: models/page/wfPage.php:101
|
8609 |
msgid "Dashboard"
|
8610 |
msgstr ""
|
8611 |
|
8612 |
#. translators: Number of notifications.
|
8613 |
-
#: lib/wordfenceClass.php:
|
8614 |
msgid "You have %d new Wordfence notification."
|
8615 |
msgid_plural "You have %d new Wordfence notifications."
|
8616 |
msgstr[0] ""
|
8617 |
msgstr[1] ""
|
8618 |
|
8619 |
-
#: lib/wordfenceClass.php:
|
8620 |
msgid "JavaScript Errors"
|
8621 |
msgstr ""
|
8622 |
|
8623 |
-
#: lib/wordfenceClass.php:
|
8624 |
msgid "Malware URLs"
|
8625 |
msgstr ""
|
8626 |
|
8627 |
#. translators: WordPress admin panel URL.
|
8628 |
-
#: lib/wordfenceClass.php:
|
8629 |
-
#: lib/wordfenceClass.php:
|
8630 |
msgid "<a href=\"%s\">Click here</a> to rebuild the configuration file."
|
8631 |
msgstr ""
|
8632 |
|
8633 |
#. translators: File path.
|
8634 |
-
#: lib/wordfenceClass.php:
|
8635 |
-
#: lib/wordfenceClass.php:
|
8636 |
msgid "We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it."
|
8637 |
msgstr ""
|
8638 |
|
8639 |
-
#: lib/wordfenceClass.php:
|
8640 |
-
#: lib/wordfenceClass.php:
|
8641 |
msgid "An error occured when fetching the WAF configuration from the database."
|
8642 |
msgstr ""
|
8643 |
|
8644 |
#. translators: Plugin name.
|
8645 |
-
#: lib/wordfenceClass.php:
|
8646 |
msgid "The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic."
|
8647 |
msgstr ""
|
8648 |
|
8649 |
#. translators: 1. Plugin name.
|
8650 |
-
#: lib/wordfenceClass.php:
|
8651 |
msgid "If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly."
|
8652 |
msgstr ""
|
8653 |
|
8654 |
#. translators: File path.
|
8655 |
-
#: lib/wordfenceClass.php:
|
8656 |
msgid "The file <code>%s</code> was restored successfully."
|
8657 |
msgstr ""
|
8658 |
|
8659 |
-
#: lib/wordfenceClass.php:
|
8660 |
msgid "There was an error restoring the file."
|
8661 |
msgstr ""
|
8662 |
|
8663 |
-
#: lib/wordfenceClass.php:
|
8664 |
-
#: lib/wordfenceClass.php:
|
8665 |
msgid "Return to scan results"
|
8666 |
msgstr ""
|
8667 |
|
8668 |
#. translators: File path.
|
8669 |
-
#: lib/wordfenceClass.php:
|
8670 |
msgid "The file <code>%s</code> was deleted successfully."
|
8671 |
msgstr ""
|
8672 |
|
8673 |
-
#: lib/wordfenceClass.php:
|
8674 |
msgid "There was an error deleting the file."
|
8675 |
msgstr ""
|
8676 |
|
8677 |
#. translators: IP address.
|
8678 |
-
#: lib/wordfenceClass.php:
|
8679 |
msgid ""
|
8680 |
"User IP: %s\n"
|
8681 |
""
|
8682 |
msgstr ""
|
8683 |
|
8684 |
#. translators: Domain name.
|
8685 |
-
#: lib/wordfenceClass.php:
|
8686 |
msgid ""
|
8687 |
"User hostname: %s\n"
|
8688 |
""
|
8689 |
msgstr ""
|
8690 |
|
8691 |
-
#: lib/wordfenceClass.php:
|
8692 |
msgid "User location: "
|
8693 |
msgstr ""
|
8694 |
|
8695 |
#. translators: WordPress admin panel URL.
|
8696 |
-
#: lib/wordfenceClass.php:
|
8697 |
msgid "No longer an administrator for this site? Click here to stop receiving security alerts: %s"
|
8698 |
msgstr ""
|
8699 |
|
8700 |
-
#: lib/wordfenceClass.php:
|
8701 |
msgid "The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]"
|
8702 |
msgstr ""
|
8703 |
|
8704 |
-
#: lib/wordfenceClass.php:
|
8705 |
msgid "Invalid email address provided"
|
8706 |
msgstr ""
|
8707 |
|
8708 |
-
#: lib/wordfenceClass.php:
|
8709 |
msgid "Test email sent successfully"
|
8710 |
msgstr ""
|
8711 |
|
8712 |
-
#: lib/wordfenceClass.php:
|
8713 |
msgid "Test email failed to send"
|
8714 |
msgstr ""
|
8715 |
|
8716 |
#. translators: Localized date range.
|
8717 |
-
#: lib/wordfenceClass.php:
|
8718 |
msgid "Wordfence activity in the past %s"
|
8719 |
msgstr ""
|
8720 |
|
8721 |
-
#: lib/wordfenceClass.php:
|
8722 |
-
#: lib/wordfenceClass.php:
|
8723 |
-
#: lib/wordfenceClass.php:
|
8724 |
msgid "We could not find that user in the database."
|
8725 |
msgstr ""
|
8726 |
|
8727 |
-
#: lib/wordfenceClass.php:
|
8728 |
msgid "This user's email is the network admin email. It will need to be changed before deleting this user."
|
8729 |
msgstr ""
|
8730 |
|
8731 |
-
#: lib/wordfenceClass.php:
|
8732 |
msgid "Wordfence could not find your .htaccess file."
|
8733 |
msgstr ""
|
8734 |
|
8735 |
-
#: lib/wordfenceClass.php:
|
8736 |
msgid "Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server."
|
8737 |
msgstr ""
|
8738 |
|
8739 |
-
#: lib/wordfenceClass.php:
|
8740 |
msgid "There was an error writing to your .htaccess file."
|
8741 |
msgstr ""
|
8742 |
|
8743 |
-
#: lib/wordfenceClass.php:
|
8744 |
msgid "Required parameters not sent."
|
8745 |
msgstr ""
|
8746 |
|
8747 |
-
#: lib/wordfenceClass.php:
|
8748 |
msgid "The WAF is currently in read-only mode and will not save any configuration changes."
|
8749 |
msgstr ""
|
8750 |
|
8751 |
-
#: lib/wordfenceClass.php:
|
8752 |
#: views/waf/option-whitelist.php:60
|
8753 |
msgid "Allowlisted via Firewall Options page"
|
8754 |
msgstr ""
|
8755 |
|
8756 |
-
#: lib/wordfenceClass.php:
|
8757 |
msgid "Allowlisted via Live Traffic"
|
8758 |
msgstr ""
|
8759 |
|
8760 |
-
#: lib/wordfenceClass.php:
|
8761 |
-
#: lib/wordfenceClass.php:
|
8762 |
msgid "A valid server configuration was not provided."
|
8763 |
msgstr ""
|
8764 |
|
8765 |
-
#: lib/wordfenceClass.php:
|
8766 |
-
#: lib/wordfenceClass.php:
|
8767 |
msgid "Filesystem Credentials Required"
|
8768 |
msgstr ""
|
8769 |
|
8770 |
#. translators: Support URL.
|
8771 |
-
#: lib/wordfenceClass.php:
|
8772 |
-
#: lib/wordfenceClass.php:
|
8773 |
-
#: lib/wordfenceClass.php:
|
8774 |
-
|
|
|
8775 |
msgstr ""
|
8776 |
|
8777 |
#. translators: Support URL.
|
8778 |
-
#: lib/wordfenceClass.php:
|
8779 |
msgid "Once you have entered credentials, click Continue to complete the setup."
|
8780 |
msgstr ""
|
8781 |
|
8782 |
-
#: lib/wordfenceClass.php:
|
8783 |
-
#: lib/wordfenceClass.php:
|
8784 |
msgid "Filesystem Permission Error"
|
8785 |
msgstr ""
|
8786 |
|
8787 |
-
#: lib/wordfenceClass.php:
|
8788 |
msgid "Manual Installation Instructions"
|
8789 |
msgstr ""
|
8790 |
|
8791 |
-
#: lib/wordfenceClass.php:
|
8792 |
msgid "Installation Successful"
|
8793 |
msgstr ""
|
8794 |
|
8795 |
-
#: lib/wordfenceClass.php:
|
8796 |
msgid "Installation Failed"
|
8797 |
msgstr ""
|
8798 |
|
8799 |
#. translators: Support URL.
|
8800 |
-
#: lib/wordfenceClass.php:
|
8801 |
-
#: lib/wordfenceClass.php:
|
8802 |
-
#: lib/wordfenceClass.php:
|
8803 |
-
#: lib/wordfenceClass.php:
|
8804 |
-
#: lib/wordfenceClass.php:
|
8805 |
-
|
8806 |
-
msgid "If you cannot complete the uninstall process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help</a>"
|
8807 |
msgstr ""
|
8808 |
|
8809 |
#. translators: Support URL.
|
8810 |
-
#: lib/wordfenceClass.php:
|
8811 |
msgid "Once you have entered credentials, click Continue to complete uninstallation."
|
8812 |
msgstr ""
|
8813 |
|
8814 |
-
#: lib/wordfenceClass.php:
|
8815 |
msgid "The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled."
|
8816 |
msgstr ""
|
8817 |
|
8818 |
-
#: lib/wordfenceClass.php:
|
8819 |
msgid "Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed."
|
8820 |
msgstr ""
|
8821 |
|
8822 |
#. translators: Time until.
|
8823 |
-
#: lib/wordfenceClass.php:
|
8824 |
msgid "Waiting for it to take effect. This may take up to %s."
|
8825 |
msgstr ""
|
8826 |
|
8827 |
-
#: lib/wordfenceClass.php:
|
8828 |
msgid "Waiting for Changes"
|
8829 |
msgstr ""
|
8830 |
|
8831 |
-
#: lib/wordfenceClass.php:
|
8832 |
msgid "Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP."
|
8833 |
msgstr ""
|
8834 |
|
8835 |
-
#: lib/wordfenceClass.php:
|
8836 |
msgid "Retrying Failed."
|
8837 |
msgstr ""
|
8838 |
|
8839 |
-
#: lib/wordfenceClass.php:
|
8840 |
msgid "Try Again"
|
8841 |
msgstr ""
|
8842 |
|
8843 |
-
#: lib/wordfenceClass.php:
|
8844 |
msgid "Unable to Uninstall"
|
8845 |
msgstr ""
|
8846 |
|
8847 |
-
#: lib/wordfenceClass.php:
|
8848 |
msgid "Uninstallation Complete"
|
8849 |
msgstr ""
|
8850 |
|
8851 |
-
#: lib/wordfenceClass.php:
|
8852 |
msgid "Uninstallation Failed"
|
8853 |
msgstr ""
|
8854 |
|
8855 |
#. translators: 1. Number of attacks/blocks. 2. Time since.
|
8856 |
-
#: lib/wordfenceClass.php:
|
8857 |
msgid "The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s. Below is a sample of these recent attacks:"
|
8858 |
msgstr ""
|
8859 |
|
8860 |
-
#: lib/wordfenceClass.php:
|
8861 |
msgid "To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:"
|
8862 |
msgstr ""
|
8863 |
|
8864 |
-
#: lib/wordfenceClass.php:
|
8865 |
msgid "Click here to configure"
|
8866 |
msgstr ""
|
8867 |
|
8868 |
-
|
8869 |
-
#: lib/wordfenceClass.php:8876
|
8870 |
-
msgid "If you cannot complete the setup process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help</a>."
|
8871 |
-
msgstr ""
|
8872 |
-
|
8873 |
-
#: lib/wordfenceClass.php:8882
|
8874 |
#: views/waf/waf-install-success.php:14
|
8875 |
msgid "Nice work! The firewall is now optimized."
|
8876 |
msgstr ""
|
8877 |
|
8878 |
-
#: lib/wordfenceClass.php:
|
8879 |
-
#: lib/wordfenceClass.php:
|
8880 |
#: views/waf/waf-install-success.php:16
|
8881 |
#: views/waf/waf-uninstall-success.php:19
|
8882 |
msgid "The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page."
|
8883 |
msgstr ""
|
8884 |
|
8885 |
-
#: lib/wordfenceClass.php:
|
8886 |
#: views/waf/waf-uninstall-success.php:15
|
8887 |
msgid "Uninstallation was successful!"
|
8888 |
msgstr ""
|
8889 |
|
8890 |
-
#: lib/wordfenceClass.php:
|
8891 |
#: views/waf/waf-uninstall-success.php:17
|
8892 |
msgid "Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation."
|
8893 |
msgstr ""
|
8894 |
|
8895 |
-
#: lib/wordfenceClass.php:
|
8896 |
msgid "The update was successful!"
|
8897 |
msgstr ""
|
8898 |
|
8899 |
-
#: lib/wordfenceClass.php:
|
8900 |
msgid "Auth grant is invalid."
|
8901 |
msgstr ""
|
8902 |
|
8903 |
-
|
8904 |
-
#: lib/wordfenceClass.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8905 |
msgid "Access token not found."
|
8906 |
msgstr ""
|
8907 |
|
8908 |
-
#: lib/wordfenceClass.php:
|
8909 |
-
#: lib/wordfenceClass.php:
|
8910 |
msgid "Invalid response from Wordfence Central."
|
8911 |
msgstr ""
|
8912 |
|
8913 |
-
#: lib/wordfenceClass.php:
|
8914 |
msgid "Auth grant not found."
|
8915 |
msgstr ""
|
8916 |
|
8917 |
-
#: lib/wordfenceClass.php:
|
8918 |
msgid "We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation."
|
8919 |
msgstr ""
|
8920 |
|
8921 |
-
#: lib/wordfenceClass.php:9537
|
8922 |
#: lib/wordfenceClass.php:9608
|
|
|
8923 |
msgid "We were unable to make changes to the .htaccess file. It's possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation."
|
8924 |
msgstr ""
|
8925 |
|
8926 |
#. translators: File path.
|
8927 |
-
#: lib/wordfenceClass.php:
|
8928 |
-
#: lib/wordfenceClass.php:
|
8929 |
msgid "We were unable to make changes to the %1$s file. It's possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation."
|
8930 |
msgstr ""
|
8931 |
|
8932 |
-
#: lib/wordfenceClass.php:
|
8933 |
msgid "We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal."
|
8934 |
msgstr ""
|
8935 |
|
@@ -9131,7 +9556,7 @@ msgstr ""
|
|
9131 |
|
9132 |
#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
|
9133 |
#: lib/wordfenceHash.php:533
|
9134 |
-
msgid "This file belongs to plugin \"%1$s\" version \"%2$s\" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don't manage their code correctly. <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
9135 |
msgstr ""
|
9136 |
|
9137 |
#. translators: File path.
|
@@ -9141,7 +9566,7 @@ msgstr ""
|
|
9141 |
|
9142 |
#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
|
9143 |
#: lib/wordfenceHash.php:579
|
9144 |
-
msgid "This file belongs to theme \"%1$s\" version \"%2$s\" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
9145 |
msgstr ""
|
9146 |
|
9147 |
#. translators: File path.
|
@@ -9167,7 +9592,7 @@ msgstr ""
|
|
9167 |
|
9168 |
#. translators: Support URL.
|
9169 |
#: lib/wordfenceHash.php:650
|
9170 |
-
msgid "This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
9171 |
msgstr ""
|
9172 |
|
9173 |
#. translators: 1. Number of files. 2. Data in bytes.
|
@@ -9192,7 +9617,7 @@ msgstr ""
|
|
9192 |
|
9193 |
#. translators: Number of files.
|
9194 |
#: lib/wordfenceHash.php:763
|
9195 |
-
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More
|
9196 |
msgstr ""
|
9197 |
|
9198 |
#: lib/wordfenceScanner.php:87
|
@@ -9204,7 +9629,7 @@ msgid "Wordfence received malformed attack signature patterns from the scanning
|
|
9204 |
msgstr ""
|
9205 |
|
9206 |
#: lib/wordfenceScanner.php:102
|
9207 |
-
msgid "
|
9208 |
msgstr ""
|
9209 |
|
9210 |
#. translators: PHP ini setting (number).
|
@@ -9303,7 +9728,7 @@ msgstr ""
|
|
9303 |
|
9304 |
#. translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL.
|
9305 |
#: lib/wordfenceScanner.php:526
|
9306 |
-
msgid "This file contains a suspected malware URL listed on Google's list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page</a>."
|
9307 |
msgstr ""
|
9308 |
|
9309 |
#: lib/wordfenceScanner.php:547
|
@@ -9327,34 +9752,29 @@ msgstr ""
|
|
9327 |
msgid "Scanned contents of %1$d additional files at %2$.2f per second"
|
9328 |
msgstr ""
|
9329 |
|
9330 |
-
|
9331 |
-
#: lib/wordfenceURLHoover.php:130
|
9332 |
-
msgid "Found protocol-relative URL: %s"
|
9333 |
-
msgstr ""
|
9334 |
-
|
9335 |
-
#: lib/wordfenceURLHoover.php:188
|
9336 |
msgid "Gathering host keys."
|
9337 |
msgstr ""
|
9338 |
|
9339 |
-
#: lib/wordfenceURLHoover.php:
|
9340 |
msgid "Using MySQLi directly."
|
9341 |
msgstr ""
|
9342 |
|
9343 |
#. translators: Number of domains.
|
9344 |
-
#: lib/wordfenceURLHoover.php:
|
9345 |
msgid "Checking %d host keys against Wordfence scanning servers."
|
9346 |
msgstr ""
|
9347 |
|
9348 |
-
#: lib/wordfenceURLHoover.php:
|
9349 |
msgid "Done host key check."
|
9350 |
msgstr ""
|
9351 |
|
9352 |
#. translators: 1. Number of URLs. 2. Number of files.
|
9353 |
-
#: lib/wordfenceURLHoover.php:
|
9354 |
msgid "Checking %1$d URLs from %2$d sources."
|
9355 |
msgstr ""
|
9356 |
|
9357 |
-
#: lib/wordfenceURLHoover.php:
|
9358 |
msgid "Done URL check."
|
9359 |
msgstr ""
|
9360 |
|
@@ -9396,7 +9816,7 @@ msgstr ""
|
|
9396 |
|
9397 |
#. translators: Support URL
|
9398 |
#: models/block/wfBlock.php:180
|
9399 |
-
msgid "This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More</a>"
|
9400 |
msgstr ""
|
9401 |
|
9402 |
#: models/block/wfBlock.php:183
|
@@ -9463,6 +9883,12 @@ msgstr ""
|
|
9463 |
msgid "Repair the Wordfence Firewall configuration."
|
9464 |
msgstr ""
|
9465 |
|
|
|
|
|
|
|
|
|
|
|
|
|
9466 |
#: models/firewall/wfFirewall.php:452
|
9467 |
msgid "Enable Firewall."
|
9468 |
msgstr ""
|
@@ -9542,6 +9968,12 @@ msgstr ""
|
|
9542 |
msgid "Enable Premium Reputation Checks."
|
9543 |
msgstr ""
|
9544 |
|
|
|
|
|
|
|
|
|
|
|
|
|
9545 |
#: models/scanner/wfScanner.php:820
|
9546 |
msgid "Enable scan option to check if this website is being \"Spamvertised\"."
|
9547 |
msgstr ""
|
@@ -9639,6 +10071,14 @@ msgstr ""
|
|
9639 |
msgid "Unblocking"
|
9640 |
msgstr ""
|
9641 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9642 |
#: views/blocking/blocking-create.php:13
|
9643 |
msgid "Block<span class=\"wf-hidden-xs\"> this IP Address</span>"
|
9644 |
msgstr ""
|
@@ -9689,7 +10129,7 @@ msgstr ""
|
|
9689 |
|
9690 |
#. translators: Support URL
|
9691 |
#: views/blocking/blocking-create.php:149
|
9692 |
-
msgid "If you use Google Ads, blocking countries from accessing the entire site is not recommended. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More</a>"
|
9693 |
msgstr ""
|
9694 |
|
9695 |
#: views/blocking/blocking-create.php:153
|
@@ -9754,6 +10194,18 @@ msgstr ""
|
|
9754 |
msgid "Block<span class=\"wf-hidden-xs\"> Visitors Matching this</span> Pattern"
|
9755 |
msgstr ""
|
9756 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9757 |
#: views/blocking/blocking-status.php:15
|
9758 |
msgid "Manage global blocking options."
|
9759 |
msgstr ""
|
@@ -9885,6 +10337,10 @@ msgstr ""
|
|
9885 |
msgid "Go to"
|
9886 |
msgstr ""
|
9887 |
|
|
|
|
|
|
|
|
|
9888 |
#: views/common/status-tooltip.php:19
|
9889 |
#: views/common/status-tooltip.php:30
|
9890 |
msgid "How does Wordfence determine this?"
|
@@ -9959,6 +10415,10 @@ msgstr ""
|
|
9959 |
msgid "Detected IP(s):"
|
9960 |
msgstr ""
|
9961 |
|
|
|
|
|
|
|
|
|
9962 |
#: views/dashboard/option-howgetips.php:34
|
9963 |
msgid "Edit trusted proxies"
|
9964 |
msgstr ""
|
@@ -10215,11 +10675,11 @@ msgid "Review"
|
|
10215 |
msgstr ""
|
10216 |
|
10217 |
#: views/gdpr/banner.php:50
|
10218 |
-
msgid "We have updated our Terms of Use and Privacy Policy. To continue using Wordfence, you will need to review and accept the updated <a href=\"https://www.wordfence.com/terms-of-use/\" target=\"_blank\" rel=\"noopener noreferrer\">Terms of Use</a> and <a href=\"https://www.wordfence.com/privacy-policy/\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy</a>."
|
10219 |
msgstr ""
|
10220 |
|
10221 |
#: views/gdpr/banner.php:51
|
10222 |
-
msgid "You can log in to <a href=\"https://www.wordfence.com/\" target=\"_blank\" rel=\"noopener noreferrer\">wordfence.com</a> to accept the updated terms and privacy policy for all of your premium license keys at once."
|
10223 |
msgstr ""
|
10224 |
|
10225 |
#: views/gdpr/banner.php:56
|
@@ -10276,14 +10736,14 @@ msgstr ""
|
|
10276 |
#: views/onboarding/fresh-install.php:27
|
10277 |
#: views/onboarding/modal-final-attempt.php:56
|
10278 |
#: views/onboarding/plugin-header.php:58
|
10279 |
-
msgid "By checking this box, I agree to the Wordfence <a href=\"https://www.wordfence.com/terms-of-use/\" target=\"_blank\" rel=\"noopener noreferrer\">terms</a> and <a href=\"https://www.wordfence.com/privacy-policy/\" target=\"_blank\" rel=\"noopener noreferrer\">privacy policy</a>"
|
10280 |
msgstr ""
|
10281 |
|
10282 |
#. translators: Support URL.
|
10283 |
#: views/onboarding/fresh-install.php:28
|
10284 |
#: views/onboarding/modal-final-attempt.php:57
|
10285 |
#: views/onboarding/plugin-header.php:59
|
10286 |
-
msgid "If you qualify as a data controller under the GDPR and need a data processing agreement, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here</a>."
|
10287 |
msgstr ""
|
10288 |
|
10289 |
#: views/onboarding/fresh-install.php:36
|
@@ -11570,12 +12030,12 @@ msgstr ""
|
|
11570 |
|
11571 |
#. translators: Support URL.
|
11572 |
#: views/tools/options-group-2fa.php:51
|
11573 |
-
msgid "<strong>Require Cellphone Sign-in for all Administrators<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp wf-inline-help\"></a></strong><br><em>Note:</em> This setting requires at least one administrator to have Cellphone Sign-in enabled. On multisite, this option applies only to super admins."
|
11574 |
msgstr ""
|
11575 |
|
11576 |
#. translators: Support URL.
|
11577 |
#: views/tools/options-group-2fa.php:63
|
11578 |
-
msgid "<strong>Enable Separate Prompt for Two-Factor Code<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp wf-inline-help\"></a></strong><br><em>Note:</em> This setting changes the behavior for obtaining the two-factor authentication code from using the password field to showing a separate prompt. If your theme overrides the default login page, you may not be able to use this option."
|
11579 |
msgstr ""
|
11580 |
|
11581 |
#. translators: Support URL.
|
@@ -11771,7 +12231,7 @@ msgid "You are currently running the WAF from another WordPress installation. Th
|
|
11771 |
msgstr ""
|
11772 |
|
11773 |
#: views/waf/options-group-advanced-firewall.php:54
|
11774 |
-
msgid "Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically allowlists <a href=\"http://en.wikipedia.org/wiki/Private_network\" target=\"_blank\" rel=\"noopener noreferrer\">private networks</a> because these are not routable on the public Internet."
|
11775 |
msgstr ""
|
11776 |
|
11777 |
#: views/waf/options-group-advanced-firewall.php:101
|
@@ -11791,7 +12251,7 @@ msgid "No rules currently set."
|
|
11791 |
msgstr ""
|
11792 |
|
11793 |
#: views/waf/options-group-advanced-firewall.php:153
|
11794 |
-
msgid "<a href=\"#\" onclick=\"WFAD.wafUpdateRules();return false;\">Click here</a> to pull down the latest from the Wordfence servers."
|
11795 |
msgstr ""
|
11796 |
|
11797 |
#: views/waf/options-group-advanced-firewall.php:161
|
@@ -11823,7 +12283,7 @@ msgstr ""
|
|
11823 |
|
11824 |
#. translators: Support URL.
|
11825 |
#: views/waf/options-group-basic-firewall.php:41
|
11826 |
-
msgid "When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More</a>"
|
11827 |
msgstr ""
|
11828 |
|
11829 |
#. translators: Support URL.
|
@@ -11858,7 +12318,7 @@ msgstr ""
|
|
11858 |
|
11859 |
#. translators: Support URL.
|
11860 |
#: views/waf/options-group-basic-firewall.php:168
|
11861 |
-
msgid "If you're moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">remove them manually</a>."
|
11862 |
msgstr ""
|
11863 |
|
11864 |
#. translators: Support URL.
|
@@ -12026,7 +12486,7 @@ msgstr ""
|
|
12026 |
|
12027 |
#. translators: Support URL.
|
12028 |
#: views/waf/status-tooltip-learning-mode.php:6
|
12029 |
-
msgid "The Web Application Firewall is currently in Learning Mode. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More</a>"
|
12030 |
msgstr ""
|
12031 |
|
12032 |
#: views/waf/waf-install-manual.php:10
|
@@ -12035,7 +12495,7 @@ msgstr ""
|
|
12035 |
|
12036 |
#. translators: Support URL.
|
12037 |
#: views/waf/waf-install-manual.php:12
|
12038 |
-
msgid "You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">in our documentation</a>."
|
12039 |
msgstr ""
|
12040 |
|
12041 |
#: views/waf/waf-install.php:9
|
@@ -12059,7 +12519,7 @@ msgid "To make your site as secure as possible, the Wordfence Web Application Fi
|
|
12059 |
msgstr ""
|
12060 |
|
12061 |
#: views/waf/waf-install.php:26
|
12062 |
-
msgid "If you don't recognize this file, please <a href=\"https://wordpress.org/support/plugin/wordfence\" target=\"_blank\" rel=\"noopener noreferrer\">contact us on the WordPress support forums</a> before proceeding."
|
12063 |
msgstr ""
|
12064 |
|
12065 |
#: views/waf/waf-install.php:27
|
@@ -12127,7 +12587,7 @@ msgstr ""
|
|
12127 |
|
12128 |
#. translators: 1. PHP ini setting. 2. Support URL.
|
12129 |
#: views/waf/waf-install.php:63
|
12130 |
-
msgid "Part of the Firewall configuration procedure for NGINX depends on creating a <code>%1$s</code> file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have <a href=\"%2$s\" target=\"_blank\" rel=\"noreferrer noopener\">instructions on our documentation site</a> on what directives to put in your nginx.conf to fix this."
|
12131 |
msgstr ""
|
12132 |
|
12133 |
#: views/waf/waf-install.php:65
|
@@ -12153,13 +12613,17 @@ msgstr ""
|
|
12153 |
msgid "Uninstall Wordfence Firewall"
|
12154 |
msgstr ""
|
12155 |
|
|
|
|
|
|
|
|
|
12156 |
#: views/waf/waf-uninstall.php:26
|
12157 |
msgid "Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called <code>auto_prepend_file</code> in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:"
|
12158 |
msgstr ""
|
12159 |
|
12160 |
#. translators: Support URL.
|
12161 |
#: views/waf/waf-uninstall.php:34
|
12162 |
-
msgid "Automatic uninstallation cannot be completed, but you may still be able to <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">manually uninstall extended protection</a>."
|
12163 |
msgstr ""
|
12164 |
|
12165 |
#: views/waf/waf-uninstall.php:36
|
2 |
# This file is distributed under the same license as the Wordfence Security plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Wordfence Security 7.5.5\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2021-08-16T09:45:58-04:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: wordfence\n"
|
57 |
#: lib/dashboard/widget_content_logins.php:7
|
58 |
#: lib/dashboard/widget_ips.php:115
|
59 |
#: lib/dashboard/widget_logins.php:96
|
60 |
+
#: lib/wordfenceClass.php:6122
|
61 |
#: views/reports/activity-report-email-inline.php:146
|
62 |
#: views/reports/activity-report.php:16
|
63 |
#: views/waf/option-whitelist.php:110
|
68 |
|
69 |
#: lib/dashboard/widget_content_logins.php:6
|
70 |
#: lib/dashboard/widget_logins.php:95
|
71 |
+
#: lib/wordfenceClass.php:6197
|
72 |
#: views/reports/activity-report-email-inline.php:256
|
73 |
#: views/reports/activity-report.php:106
|
74 |
msgid "Username"
|
91 |
|
92 |
#: lib/dashboard/widget_countries.php:25
|
93 |
#: lib/dashboard/widget_networkattacks.php:8
|
94 |
+
#: lib/wfDiagnostic.php:825
|
95 |
msgid "Wordfence Network"
|
96 |
msgstr ""
|
97 |
|
118 |
msgstr ""
|
119 |
|
120 |
#: lib/dashboard/widget_ips.php:30
|
121 |
+
#: lib/dashboard/widget_networkattacks.php:23
|
122 |
msgid "30 Days"
|
123 |
msgstr ""
|
124 |
|
133 |
#. translators: WordPress username.
|
134 |
#: lib/dashboard/widget_ips.php:96
|
135 |
#: lib/dashboard/widget_logins.php:77
|
136 |
+
#: lib/wordfenceClass.php:6068
|
137 |
msgid "An error occurred"
|
138 |
msgstr ""
|
139 |
|
184 |
msgid "How are these categorized?"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#. translators: URL to WordPress admin panel.
|
188 |
+
#. translators: Support URL.
|
189 |
+
#. translators: 1. Time duration. 2. Support URL.
|
190 |
+
#. translators: 1. URL. 2. URL.
|
191 |
+
#. translators: 1. URL to publicly accessible file. 2. Support URL.
|
192 |
+
#. translators: URL to publicly accessible file.
|
193 |
+
#. translators: 1. WordPress Post type. 2. URL. 3. URL.
|
194 |
+
#. translators: 1. WordPress post type. 2. URL. 3. URL.
|
195 |
+
#. translators: 1. WordPress version. 2. WordPress version.
|
196 |
+
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
197 |
+
#. translators: 1. Reset password URL. 2. Support URL.
|
198 |
+
#. translators: Localized date.
|
199 |
+
#. translators: Time limit (number).
|
200 |
+
#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
|
201 |
+
#. translators: Number of files.
|
202 |
+
#: lib/dashboard/widget_localattacks.php:70
|
203 |
+
#: lib/dashboard/widget_notifications.php:19
|
204 |
+
#: lib/dashboard/widget_notifications.php:69
|
205 |
+
#: lib/email_unsubscribeRequest.php:14
|
206 |
+
#: lib/IPTrafList.php:24
|
207 |
+
#: lib/IPTrafList.php:41
|
208 |
+
#: lib/IPTrafList.php:51
|
209 |
+
#: lib/menu_dashboard.php:118
|
210 |
+
#: lib/menu_dashboard_options.php:162
|
211 |
+
#: lib/menu_firewall_blocking.php:34
|
212 |
+
#: lib/menu_support.php:33
|
213 |
+
#: lib/menu_support.php:39
|
214 |
+
#: lib/menu_support.php:43
|
215 |
+
#: lib/menu_support.php:70
|
216 |
+
#: lib/menu_support.php:80
|
217 |
+
#: lib/menu_support.php:120
|
218 |
+
#: lib/menu_support.php:138
|
219 |
+
#: lib/menu_support.php:143
|
220 |
+
#: lib/menu_support.php:164
|
221 |
+
#: lib/menu_tools_diagnostic.php:771
|
222 |
+
#: lib/menu_tools_diagnostic.php:838
|
223 |
+
#: lib/menu_tools_diagnostic.php:839
|
224 |
+
#: lib/menu_tools_diagnostic.php:844
|
225 |
+
#: lib/menu_tools_diagnostic.php:845
|
226 |
+
#: lib/menu_tools_diagnostic.php:850
|
227 |
+
#: lib/menu_tools_diagnostic.php:857
|
228 |
+
#: lib/menu_tools_diagnostic.php:864
|
229 |
+
#: lib/menu_tools_livetraffic.php:209
|
230 |
+
#: lib/menu_tools_livetraffic.php:346
|
231 |
+
#: lib/menu_tools_livetraffic.php:353
|
232 |
+
#: lib/menu_tools_livetraffic.php:428
|
233 |
+
#: lib/menu_tools_livetraffic.php:481
|
234 |
+
#: lib/menu_tools_twoFactor.php:51
|
235 |
+
#: lib/menu_wordfence_central.php:59
|
236 |
+
#: lib/wf503.php:390
|
237 |
+
#: lib/wfScanEngine.php:278
|
238 |
+
#: lib/wfScanEngine.php:611
|
239 |
+
#: lib/wfScanEngine.php:624
|
240 |
+
#: lib/wfScanEngine.php:696
|
241 |
+
#: lib/wfScanEngine.php:719
|
242 |
+
#: lib/wfScanEngine.php:794
|
243 |
+
#: lib/wfScanEngine.php:995
|
244 |
+
#: lib/wfScanEngine.php:996
|
245 |
+
#: lib/wfScanEngine.php:1137
|
246 |
+
#: lib/wfScanEngine.php:1274
|
247 |
+
#: lib/wfScanEngine.php:1417
|
248 |
+
#: lib/wfScanEngine.php:1781
|
249 |
+
#: lib/wfScanEngine.php:2027
|
250 |
+
#: lib/wfScanEngine.php:2066
|
251 |
+
#: lib/wfScanEngine.php:2254
|
252 |
+
#: lib/wfScanEngine.php:2296
|
253 |
+
#: lib/wfVersionCheckController.php:68
|
254 |
+
#: lib/wfVersionCheckController.php:91
|
255 |
+
#: lib/wfVersionCheckController.php:167
|
256 |
+
#: lib/wfVersionCheckController.php:186
|
257 |
+
#: lib/wordfenceClass.php:1371
|
258 |
+
#: lib/wordfenceClass.php:2749
|
259 |
+
#: lib/wordfenceClass.php:2885
|
260 |
+
#: lib/wordfenceClass.php:3040
|
261 |
+
#: lib/wordfenceClass.php:3076
|
262 |
+
#: lib/wordfenceClass.php:3604
|
263 |
+
#: lib/wordfenceClass.php:4932
|
264 |
+
#: lib/wordfenceClass.php:4940
|
265 |
+
#: lib/wordfenceClass.php:4946
|
266 |
+
#: lib/wordfenceClass.php:4959
|
267 |
+
#: lib/wordfenceClass.php:4971
|
268 |
+
#: lib/wordfenceClass.php:4979
|
269 |
+
#: lib/wordfenceClass.php:6257
|
270 |
+
#: lib/wordfenceClass.php:6279
|
271 |
+
#: lib/wordfenceClass.php:6298
|
272 |
+
#: lib/wordfenceClass.php:6304
|
273 |
+
#: lib/wordfenceClass.php:6351
|
274 |
+
#: lib/wordfenceClass.php:7968
|
275 |
+
#: lib/wordfenceClass.php:7992
|
276 |
+
#: lib/wordfenceClass.php:8036
|
277 |
+
#: lib/wordfenceClass.php:8075
|
278 |
+
#: lib/wordfenceClass.php:8100
|
279 |
+
#: lib/wordfenceClass.php:8131
|
280 |
+
#: lib/wordfenceClass.php:8160
|
281 |
+
#: lib/wordfenceClass.php:8206
|
282 |
+
#: lib/wordfenceClass.php:8928
|
283 |
+
#: lib/wordfenceHash.php:533
|
284 |
+
#: lib/wordfenceHash.php:579
|
285 |
+
#: lib/wordfenceHash.php:650
|
286 |
+
#: lib/wordfenceHash.php:763
|
287 |
+
#: views/blocking/block-list.php:35
|
288 |
+
#: views/blocking/blocking-create.php:179
|
289 |
+
#: views/blocking/blocking-status.php:27
|
290 |
+
#: views/blocking/option-bypass-cookie.php:8
|
291 |
+
#: views/blocking/option-bypass-redirect.php:8
|
292 |
+
#: views/blocking/options-group-advanced-country.php:85
|
293 |
+
#: views/common/page-help.php:2
|
294 |
+
#: views/common/page-title.php:29
|
295 |
+
#: views/common/section-subtitle.php:27
|
296 |
+
#: views/common/section-title.php:27
|
297 |
+
#: views/common/status-critical.php:17
|
298 |
+
#: views/common/status-detail.php:37
|
299 |
+
#: views/common/status-tooltip.php:19
|
300 |
+
#: views/common/status-tooltip.php:30
|
301 |
+
#: views/common/status-warning.php:17
|
302 |
+
#: views/dashboard/option-howgetips.php:21
|
303 |
+
#: views/dashboard/options-group-dashboard.php:107
|
304 |
+
#: views/dashboard/options-group-general.php:36
|
305 |
+
#: views/dashboard/options-group-import.php:31
|
306 |
+
#: views/dashboard/options-group-import.php:44
|
307 |
+
#: views/dashboard/options-group-license.php:35
|
308 |
+
#: views/dashboard/options-group-license.php:62
|
309 |
+
#: views/dashboard/options-group-license.php:64
|
310 |
+
#: views/dashboard/options-group-license.php:66
|
311 |
+
#: views/dashboard/options-group-license.php:68
|
312 |
+
#: views/dashboard/options-group-license.php:70
|
313 |
+
#: views/dashboard/status-payment-expiring.php:31
|
314 |
+
#: views/dashboard/status-renewing.php:17
|
315 |
+
#: views/gdpr/banner.php:55
|
316 |
+
#: views/onboarding/fresh-install.php:43
|
317 |
+
#: views/onboarding/fresh-install.php:44
|
318 |
+
#: views/onboarding/modal-final-attempt.php:41
|
319 |
+
#: views/onboarding/modal-final-attempt.php:42
|
320 |
+
#: views/onboarding/plugin-header.php:65
|
321 |
+
#: views/onboarding/plugin-header.php:66
|
322 |
+
#: views/options/option-label.php:28
|
323 |
+
#: views/options/option-select.php:22
|
324 |
+
#: views/options/option-switch.php:34
|
325 |
+
#: views/options/option-text.php:30
|
326 |
+
#: views/options/option-textarea.php:37
|
327 |
+
#: views/options/option-toggled-boolean-switch.php:32
|
328 |
+
#: views/options/option-toggled-multiple.php:29
|
329 |
+
#: views/options/option-toggled-segmented.php:21
|
330 |
+
#: views/options/option-toggled-select.php:27
|
331 |
+
#: views/options/option-toggled-sub.php:44
|
332 |
+
#: views/options/option-toggled-sub.php:52
|
333 |
+
#: views/options/option-toggled-textarea.php:24
|
334 |
+
#: views/options/option-toggled.php:36
|
335 |
+
#: views/options/option-token.php:25
|
336 |
+
#: views/scanner/issue-configReadable.php:12
|
337 |
+
#: views/scanner/issue-configReadable.php:17
|
338 |
+
#: views/scanner/issue-coreUnknown.php:13
|
339 |
+
#: views/scanner/issue-database.php:18
|
340 |
+
#: views/scanner/issue-file.php:19
|
341 |
+
#: views/scanner/issue-file.php:20
|
342 |
+
#: views/scanner/issue-knownfile.php:19
|
343 |
+
#: views/scanner/issue-knownfile.php:20
|
344 |
+
#: views/scanner/issue-publiclyAccessible.php:12
|
345 |
+
#: views/scanner/issue-publiclyAccessible.php:17
|
346 |
+
#: views/scanner/issue-wfPluginAbandoned.php:18
|
347 |
+
#: views/scanner/issue-wfPluginAbandoned.php:19
|
348 |
+
#: views/scanner/issue-wfPluginAbandoned.php:20
|
349 |
+
#: views/scanner/issue-wfPluginRemoved.php:17
|
350 |
+
#: views/scanner/issue-wfPluginRemoved.php:18
|
351 |
+
#: views/scanner/issue-wfPluginUpgrade.php:18
|
352 |
+
#: views/scanner/issue-wfPluginUpgrade.php:19
|
353 |
+
#: views/scanner/issue-wfPluginUpgrade.php:20
|
354 |
+
#: views/scanner/issue-wfPluginVulnerable.php:17
|
355 |
+
#: views/scanner/issue-wfPluginVulnerable.php:18
|
356 |
+
#: views/scanner/issue-wfPluginVulnerable.php:19
|
357 |
+
#: views/scanner/issue-wfThemeUpgrade.php:18
|
358 |
+
#: views/scanner/issue-wfThemeUpgrade.php:19
|
359 |
+
#: views/scanner/issue-wfUpgrade.php:17
|
360 |
+
#: views/scanner/issue-wpscan_directoryList.php:12
|
361 |
+
#: views/scanner/issue-wpscan_directoryList.php:17
|
362 |
+
#: views/scanner/issue-wpscan_fullPathDiscl.php:12
|
363 |
+
#: views/scanner/issue-wpscan_fullPathDiscl.php:17
|
364 |
+
#: views/scanner/option-scan-signatures.php:22
|
365 |
+
#: views/scanner/scan-progress-detailed.php:16
|
366 |
+
#: views/scanner/scan-progress-element.php:59
|
367 |
+
#: views/scanner/scan-scheduling.php:38
|
368 |
+
#: views/scanner/scanner-status.php:26
|
369 |
+
#: views/scanner/scanner-status.php:55
|
370 |
+
#: views/scanner/site-cleaning-beta-sigs.php:16
|
371 |
+
#: views/scanner/site-cleaning-bottom.php:15
|
372 |
+
#: views/scanner/site-cleaning-bottom.php:17
|
373 |
+
#: views/scanner/site-cleaning-high-sense.php:16
|
374 |
+
#: views/scanner/site-cleaning.php:16
|
375 |
+
#: views/tools/options-group-2fa.php:40
|
376 |
+
#: views/tours/login-security.php:30
|
377 |
+
#: views/tours/login-security.php:62
|
378 |
+
#: views/waf/firewall-status.php:26
|
379 |
+
#: views/waf/firewall-status.php:58
|
380 |
+
#: views/waf/firewall-status.php:68
|
381 |
+
#: views/waf/option-rate-limit.php:27
|
382 |
+
#: views/waf/option-rules.php:5
|
383 |
+
#: views/waf/option-whitelist.php:5
|
384 |
+
#: views/waf/options-group-basic-firewall.php:467
|
385 |
+
#: views/waf/waf-install.php:13
|
386 |
+
msgid "opens in new tab"
|
387 |
+
msgstr ""
|
388 |
+
|
389 |
#: lib/dashboard/widget_logins.php:9
|
390 |
#: views/reports/activity-report-email-inline.php:257
|
391 |
#: views/reports/activity-report.php:107
|
416 |
msgid "Blocked attack counts not available yet."
|
417 |
msgstr ""
|
418 |
|
419 |
+
#: lib/dashboard/widget_networkattacks.php:32
|
420 |
msgid "Total Attacks"
|
421 |
msgstr ""
|
422 |
|
423 |
#. translators: Time since. Example: 1 minute, 2 seconds
|
424 |
+
#: lib/dashboard/widget_networkattacks.php:208
|
425 |
msgid "Last Updated: %s ago"
|
426 |
msgstr ""
|
427 |
|
428 |
#: lib/dashboard/widget_notifications.php:8
|
429 |
+
#: lib/wordfenceClass.php:6703
|
430 |
msgid "Notifications"
|
431 |
msgstr ""
|
432 |
|
498 |
#: lib/dashboard/widget_notifications.php:134
|
499 |
#: lib/menu_scanner.php:217
|
500 |
#: lib/menu_scanner.php:228
|
501 |
+
#: lib/menu_tools_diagnostic.php:982
|
502 |
#: lib/menu_tools_twoFactor.php:235
|
503 |
#: lib/menu_tools_twoFactor.php:273
|
504 |
+
#: lib/wordfenceClass.php:7993
|
505 |
+
#: lib/wordfenceClass.php:8037
|
506 |
+
#: lib/wordfenceClass.php:8101
|
507 |
+
#: lib/wordfenceClass.php:8161
|
508 |
+
#: lib/wordfenceClass.php:8207
|
509 |
#: views/blocking/block-list.php:501
|
510 |
#: views/blocking/blocking-create.php:212
|
511 |
+
#: views/blocking/blocking-create.php:529
|
512 |
#: views/dashboard/options-group-license.php:150
|
513 |
#: views/options/block-all-options-controls.php:164
|
514 |
#: views/options/block-controls.php:79
|
723 |
#: lib/wfVersionCheckController.php:91
|
724 |
#: lib/wfVersionCheckController.php:167
|
725 |
#: lib/wfVersionCheckController.php:186
|
726 |
+
#: lib/wordfenceClass.php:6384
|
727 |
+
#: views/blocking/blocking-create.php:528
|
728 |
#: views/blocking/blocking-status.php:27
|
729 |
#: views/dashboard/options-group-dashboard.php:107
|
730 |
#: views/gdpr/banner.php:55
|
863 |
|
864 |
#. translators: URL to WordPress admin panel.
|
865 |
#: lib/email_unsubscribeRequest.php:14
|
866 |
+
msgid "<a href=\"%s\" target=\"_blank\">Click here<span class=\"screen-reader-text\"> ("
|
867 |
msgstr ""
|
868 |
|
869 |
#. translators: IP address.
|
879 |
msgstr ""
|
880 |
|
881 |
#: lib/IPTrafList.php:13
|
882 |
+
#: lib/wfLockedOut.php:377
|
883 |
msgid "Time:"
|
884 |
msgstr ""
|
885 |
|
921 |
msgid "Wordfence Live Activity:"
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: lib/live_activity.php:9
|
925 |
+
msgid "Live Updates Paused — Click inside window to resume"
|
926 |
+
msgstr ""
|
927 |
+
|
928 |
#: lib/menu_dashboard.php:24
|
929 |
+
#: lib/wordfenceClass.php:6605
|
930 |
msgid "Wordfence Dashboard"
|
931 |
msgstr ""
|
932 |
|
938 |
#: lib/menu_dashboard_options.php:98
|
939 |
#: lib/menu_firewall.php:20
|
940 |
#: lib/menu_firewall.php:30
|
941 |
+
#: lib/wordfenceClass.php:6609
|
942 |
#: models/page/wfPage.php:105
|
943 |
msgid "Firewall"
|
944 |
msgstr ""
|
975 |
#: lib/menu_dashboard_options.php:115
|
976 |
#: lib/menu_scanner.php:31
|
977 |
#: lib/menu_scanner.php:305
|
978 |
+
#: lib/wordfenceClass.php:6616
|
979 |
#: models/page/wfPage.php:113
|
980 |
msgid "Scan"
|
981 |
msgstr ""
|
1040 |
|
1041 |
#: lib/menu_dashboard.php:109
|
1042 |
#: lib/menu_dashboard_options.php:153
|
1043 |
+
msgid "The license you were using has been removed from your account. Please reach out to <a href=\"mailto:billing@wordfence.com\">billing@wordfence.com</a> or create a Premium support case at <a href=\"https://support.wordfence.com/support/tickets\" target=\"_blank\">https://support.wordfence.com/support/tickets<span class=\"screen-reader-text\"> (opens in new tab)</span></a> for more information. Our staff is happy to help."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
#: lib/menu_dashboard.php:117
|
1139 |
msgstr ""
|
1140 |
|
1141 |
#: lib/menu_dashboard.php:220
|
1142 |
+
#: lib/wordfenceClass.php:6620
|
1143 |
msgid "Tools"
|
1144 |
msgstr ""
|
1145 |
|
1151 |
#: lib/menu_firewall_waf.php:157
|
1152 |
#: lib/menu_scanner.php:139
|
1153 |
#: lib/menu_support.php:19
|
1154 |
+
#: lib/wordfenceClass.php:6633
|
1155 |
msgid "Help"
|
1156 |
msgstr ""
|
1157 |
|
1256 |
msgstr ""
|
1257 |
|
1258 |
#: lib/menu_dashboard.php:373
|
1259 |
+
msgid "We welcome your feedback and comments at <a href=\"mailto:feedback@wordfence.com\">feedback@wordfence.com</a>. For a deeper dive on all of the changes, <a href=\"https://www.wordfence.com/blog/2018/01/introducing-wordfence-7/\" target=\"_blank\" rel=\"noopener noreferrer\">click here<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
1260 |
msgstr ""
|
1261 |
|
1262 |
#: lib/menu_dashboard.php:388
|
1348 |
#: lib/menu_dashboard_options.php:288
|
1349 |
#: lib/menu_options.php:405
|
1350 |
#: lib/menu_options.php:415
|
1351 |
+
#: lib/menu_tools.php:26
|
1352 |
#: lib/menu_tools_importExport.php:7
|
1353 |
#: lib/menu_tools_importExport.php:13
|
1354 |
#: models/page/wfPage.php:121
|
1370 |
#: lib/menu_firewall.php:41
|
1371 |
#: lib/menu_firewall_blocking.php:119
|
1372 |
#: lib/menu_firewall_waf.php:142
|
1373 |
+
#: lib/wordfenceClass.php:6611
|
1374 |
#: models/page/wfPage.php:109
|
1375 |
msgid "Blocking"
|
1376 |
msgstr ""
|
1536 |
|
1537 |
#: lib/menu_firewall_waf.php:69
|
1538 |
#: lib/menu_firewall_waf_options.php:175
|
1539 |
+
#: lib/menu_tools_diagnostic.php:296
|
|
|
1540 |
#: lib/menu_tools_diagnostic.php:301
|
1541 |
+
#: lib/menu_tools_diagnostic.php:302
|
1542 |
+
#: lib/menu_tools_diagnostic.php:305
|
1543 |
+
#: lib/wfDiagnostic.php:798
|
1544 |
#: models/firewall/wfFirewall.php:35
|
1545 |
#: views/diagnostics/text.php:154
|
1546 |
#: views/diagnostics/text.php:159
|
1555 |
|
1556 |
#: lib/menu_firewall_waf.php:69
|
1557 |
#: lib/menu_firewall_waf_options.php:175
|
1558 |
+
#: lib/menu_tools_diagnostic.php:296
|
|
|
1559 |
#: lib/menu_tools_diagnostic.php:301
|
1560 |
+
#: lib/menu_tools_diagnostic.php:302
|
1561 |
+
#: lib/menu_tools_diagnostic.php:305
|
1562 |
+
#: lib/wordfenceClass.php:6094
|
1563 |
#: models/firewall/wfFirewall.php:41
|
1564 |
#: views/diagnostics/text.php:154
|
1565 |
#: views/diagnostics/text.php:159
|
1680 |
|
1681 |
#: lib/menu_options.php:24
|
1682 |
#: lib/menu_options.php:262
|
1683 |
+
#: lib/wordfenceClass.php:6628
|
1684 |
msgid "All Options"
|
1685 |
msgstr ""
|
1686 |
|
1717 |
msgstr ""
|
1718 |
|
1719 |
#: lib/menu_options.php:75
|
1720 |
+
#: lib/menu_tools_diagnostic.php:236
|
1721 |
#: views/dashboard/option-howgetips.php:50
|
1722 |
#: views/diagnostics/text.php:108
|
1723 |
msgid "Trusted Proxies"
|
2319 |
msgstr ""
|
2320 |
|
2321 |
#: lib/menu_scanner.php:80
|
2322 |
+
#: lib/wordfenceClass.php:6644
|
2323 |
msgid "Protect More Sites"
|
2324 |
msgstr ""
|
2325 |
|
2376 |
|
2377 |
#. translators: Support URL.
|
2378 |
#: lib/menu_scanner.php:216
|
2379 |
+
msgid "Do not delete files on your system unless you're ABSOLUTELY sure you know what you're doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files. If you'd like to learn more, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here for our help article<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
2380 |
msgstr ""
|
2381 |
|
2382 |
#: lib/menu_scanner.php:218
|
2402 |
#: lib/menu_tools_twoFactor.php:255
|
2403 |
#: lib/menu_tools_twoFactor.php:264
|
2404 |
#: lib/menu_tools_twoFactor.php:284
|
2405 |
+
#: lib/wordfenceClass.php:4941
|
2406 |
+
#: lib/wordfenceClass.php:4947
|
2407 |
+
#: lib/wordfenceClass.php:4953
|
2408 |
+
#: lib/wordfenceClass.php:4960
|
2409 |
+
#: lib/wordfenceClass.php:4966
|
2410 |
+
#: lib/wordfenceClass.php:4973
|
2411 |
+
#: lib/wordfenceClass.php:4981
|
2412 |
+
#: lib/wordfenceClass.php:6036
|
2413 |
+
#: lib/wordfenceClass.php:6038
|
2414 |
+
#: lib/wordfenceClass.php:6089
|
2415 |
+
#: lib/wordfenceClass.php:8018
|
2416 |
+
#: lib/wordfenceClass.php:8025
|
2417 |
+
#: lib/wordfenceClass.php:8132
|
2418 |
+
#: lib/wordfenceClass.php:8196
|
2419 |
#: views/dashboard/options-group-import.php:147
|
2420 |
#: views/dashboard/options-group-import.php:157
|
2421 |
#: views/dashboard/options-group-import.php:177
|
2538 |
|
2539 |
#. translators: URL to support page.
|
2540 |
#: lib/menu_support.php:83
|
2541 |
+
msgid "If you qualify as a data controller under the GDPR and need a data processing agreement, it can be <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">found here<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
2542 |
msgstr ""
|
2543 |
|
2544 |
#: lib/menu_support.php:92
|
2582 |
msgstr ""
|
2583 |
|
2584 |
#: lib/menu_support.php:269
|
2585 |
+
#: views/blocking/blocking-create.php:530
|
2586 |
#: views/onboarding/fresh-install.php:30
|
2587 |
#: views/onboarding/modal-final-attempt.php:59
|
2588 |
#: views/onboarding/plugin-header.php:61
|
2592 |
msgid "Continue"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
+
#: lib/menu_tools.php:22
|
2596 |
+
#: lib/menu_tools_twoFactor.php:14
|
2597 |
+
#: lib/menu_tools_twoFactor.php:23
|
2598 |
+
#: models/page/wfPage.php:117
|
2599 |
+
msgid "Two-Factor Authentication"
|
2600 |
+
msgstr ""
|
2601 |
+
|
2602 |
+
#: lib/menu_tools.php:24
|
2603 |
+
#: lib/menu_tools_livetraffic.php:8
|
2604 |
+
#: lib/menu_tools_livetraffic.php:41
|
2605 |
+
#: lib/menu_tools_livetraffic.php:571
|
2606 |
+
#: lib/menu_tools_livetraffic.php:602
|
2607 |
+
#: lib/wordfenceClass.php:6622
|
2608 |
+
#: models/page/wfPage.php:119
|
2609 |
+
msgid "Live Traffic"
|
2610 |
+
msgstr ""
|
2611 |
+
|
2612 |
+
#: lib/menu_tools.php:25
|
2613 |
+
#: lib/menu_tools_whois.php:7
|
2614 |
+
#: lib/menu_tools_whois.php:16
|
2615 |
+
#: lib/menu_tools_whois.php:75
|
2616 |
+
#: models/page/wfPage.php:123
|
2617 |
+
msgid "Whois Lookup"
|
2618 |
+
msgstr ""
|
2619 |
+
|
2620 |
+
#: lib/menu_tools.php:27
|
2621 |
#: lib/menu_tools_diagnostic.php:24
|
2622 |
#: models/page/wfPage.php:125
|
2623 |
msgid "Diagnostics"
|
2643 |
msgid "Ticket Number/Forum Username:"
|
2644 |
msgstr ""
|
2645 |
|
2646 |
+
#: lib/menu_tools_diagnostic.php:123
|
2647 |
msgid "Additional Detail"
|
2648 |
msgstr ""
|
2649 |
|
2650 |
+
#: lib/menu_tools_diagnostic.php:166
|
2651 |
msgid "View Additional Detail"
|
2652 |
msgstr ""
|
2653 |
|
2654 |
+
#: lib/menu_tools_diagnostic.php:187
|
2655 |
#: views/diagnostics/text.php:60
|
2656 |
#: views/scanner/issue-checkHowGetIPs.php:8
|
2657 |
msgid "IP Detection"
|
2658 |
msgstr ""
|
2659 |
|
2660 |
+
#: lib/menu_tools_diagnostic.php:188
|
2661 |
#: views/diagnostics/text.php:60
|
2662 |
msgid "Methods of detecting a visitor's IP address."
|
2663 |
msgstr ""
|
2664 |
|
2665 |
+
#: lib/menu_tools_diagnostic.php:200
|
2666 |
#: views/diagnostics/text.php:69
|
2667 |
msgid "IPs"
|
2668 |
msgstr ""
|
2669 |
|
2670 |
+
#: lib/menu_tools_diagnostic.php:201
|
2671 |
#: views/diagnostics/text.php:70
|
2672 |
#: views/diagnostics/text.php:189
|
2673 |
msgid "Value"
|
2674 |
msgstr ""
|
2675 |
|
2676 |
+
#: lib/menu_tools_diagnostic.php:202
|
2677 |
#: views/diagnostics/text.php:71
|
2678 |
msgid "Used"
|
2679 |
msgstr ""
|
2682 |
#. translators: WordPress theme stylesheet directory.
|
2683 |
#. translators: WordPress custom user table.
|
2684 |
#. translators: WordPress custom user meta table.
|
2685 |
+
#: lib/menu_tools_diagnostic.php:218
|
|
|
2686 |
#: lib/menu_tools_diagnostic.php:269
|
2687 |
+
#: lib/menu_tools_diagnostic.php:270
|
2688 |
#: lib/menu_tools_diagnostic.php:283
|
2689 |
+
#: lib/menu_tools_diagnostic.php:284
|
2690 |
#: lib/menu_tools_diagnostic.php:297
|
2691 |
#: lib/menu_tools_diagnostic.php:298
|
2692 |
#: lib/menu_tools_diagnostic.php:299
|
2693 |
+
#: lib/menu_tools_diagnostic.php:300
|
2694 |
#: lib/menu_tools_diagnostic.php:314
|
2695 |
#: lib/menu_tools_diagnostic.php:315
|
2696 |
+
#: lib/menu_tools_diagnostic.php:316
|
2697 |
#: lib/menu_tools_diagnostic.php:318
|
2698 |
#: lib/menu_tools_diagnostic.php:319
|
2699 |
+
#: lib/menu_tools_diagnostic.php:320
|
2700 |
+
#: lib/menu_tools_diagnostic.php:330
|
2701 |
+
#: lib/wfDiagnostic.php:379
|
2702 |
#: views/diagnostics/text.php:86
|
2703 |
#: views/diagnostics/text.php:127
|
2704 |
#: views/diagnostics/text.php:128
|
2718 |
msgid "(not set)"
|
2719 |
msgstr ""
|
2720 |
|
2721 |
+
#: lib/menu_tools_diagnostic.php:227
|
2722 |
#: views/diagnostics/text.php:96
|
2723 |
msgid "In use"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
+
#: lib/menu_tools_diagnostic.php:229
|
2727 |
#: views/diagnostics/text.php:98
|
2728 |
msgid "Configured but not valid"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
#: lib/menu_tools_diagnostic.php:250
|
2732 |
#: views/diagnostics/text.php:117
|
2733 |
msgid "WordPress Settings"
|
2734 |
msgstr ""
|
2735 |
|
2736 |
+
#: lib/menu_tools_diagnostic.php:251
|
2737 |
#: views/diagnostics/text.php:117
|
2738 |
msgid "WordPress version and internal settings/constants."
|
2739 |
msgstr ""
|
2740 |
|
2741 |
+
#: lib/menu_tools_diagnostic.php:266
|
2742 |
#: views/diagnostics/text.php:124
|
2743 |
msgid "Return value of is_multisite()"
|
2744 |
msgstr ""
|
2745 |
|
2746 |
#. translators: WordPress plugins directory.
|
2747 |
+
#: lib/menu_tools_diagnostic.php:266
|
2748 |
+
#: lib/menu_tools_diagnostic.php:277
|
|
|
2749 |
#: lib/menu_tools_diagnostic.php:279
|
2750 |
+
#: lib/menu_tools_diagnostic.php:280
|
2751 |
+
#: lib/menu_tools_diagnostic.php:293
|
2752 |
#: lib/menu_tools_diagnostic.php:306
|
2753 |
#: lib/menu_tools_diagnostic.php:307
|
2754 |
#: lib/menu_tools_diagnostic.php:308
|
2755 |
#: lib/menu_tools_diagnostic.php:309
|
2756 |
#: lib/menu_tools_diagnostic.php:310
|
2757 |
+
#: lib/menu_tools_diagnostic.php:311
|
2758 |
#: lib/menu_tools_diagnostic.php:316
|
2759 |
#: lib/menu_tools_diagnostic.php:317
|
2760 |
#: lib/menu_tools_diagnostic.php:318
|
2761 |
#: lib/menu_tools_diagnostic.php:319
|
2762 |
+
#: lib/menu_tools_diagnostic.php:320
|
2763 |
+
#: lib/menu_tools_diagnostic.php:324
|
2764 |
#: lib/menu_tools_livetraffic.php:152
|
2765 |
+
#: lib/wfDiagnostic.php:359
|
2766 |
+
#: lib/wfDiagnostic.php:391
|
2767 |
#: views/diagnostics/text.php:124
|
2768 |
#: views/diagnostics/text.php:135
|
2769 |
#: views/diagnostics/text.php:137
|
2789 |
msgid "Yes"
|
2790 |
msgstr ""
|
2791 |
|
2792 |
+
#: lib/menu_tools_diagnostic.php:266
|
2793 |
+
#: lib/menu_tools_diagnostic.php:293
|
|
|
2794 |
#: lib/menu_tools_diagnostic.php:306
|
2795 |
#: lib/menu_tools_diagnostic.php:307
|
2796 |
#: lib/menu_tools_diagnostic.php:308
|
2797 |
#: lib/menu_tools_diagnostic.php:309
|
2798 |
#: lib/menu_tools_diagnostic.php:310
|
2799 |
+
#: lib/menu_tools_diagnostic.php:311
|
2800 |
#: lib/menu_tools_diagnostic.php:316
|
2801 |
+
#: lib/menu_tools_diagnostic.php:317
|
2802 |
#: lib/menu_tools_diagnostic.php:319
|
2803 |
+
#: lib/menu_tools_diagnostic.php:320
|
2804 |
+
#: lib/menu_tools_diagnostic.php:324
|
2805 |
#: lib/menu_tools_livetraffic.php:153
|
2806 |
+
#: lib/wfDiagnostic.php:359
|
2807 |
+
#: lib/wfDiagnostic.php:391
|
2808 |
#: views/diagnostics/text.php:124
|
2809 |
#: views/diagnostics/text.php:151
|
2810 |
#: views/diagnostics/text.php:164
|
2826 |
msgid "No"
|
2827 |
msgstr ""
|
2828 |
|
2829 |
+
#: lib/menu_tools_diagnostic.php:267
|
2830 |
#: views/diagnostics/text.php:125
|
2831 |
msgid "WordPress base path"
|
2832 |
msgstr ""
|
2833 |
|
2834 |
+
#: lib/menu_tools_diagnostic.php:268
|
2835 |
#: views/diagnostics/text.php:126
|
2836 |
msgid "WordPress debug mode"
|
2837 |
msgstr ""
|
2838 |
|
2839 |
+
#: lib/menu_tools_diagnostic.php:268
|
|
|
2840 |
#: lib/menu_tools_diagnostic.php:271
|
2841 |
+
#: lib/menu_tools_diagnostic.php:272
|
2842 |
+
#: lib/wfDiagnostic.php:592
|
2843 |
#: views/diagnostics/text.php:126
|
2844 |
#: views/diagnostics/text.php:129
|
2845 |
#: views/diagnostics/text.php:130
|
2848 |
msgid "On"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
+
#: lib/menu_tools_diagnostic.php:268
|
|
|
2852 |
#: lib/menu_tools_diagnostic.php:271
|
2853 |
+
#: lib/menu_tools_diagnostic.php:272
|
2854 |
+
#: lib/wfDiagnostic.php:592
|
2855 |
#: views/diagnostics/text.php:126
|
2856 |
#: views/diagnostics/text.php:129
|
2857 |
#: views/diagnostics/text.php:130
|
2860 |
msgid "Off"
|
2861 |
msgstr ""
|
2862 |
|
2863 |
+
#: lib/menu_tools_diagnostic.php:269
|
2864 |
#: views/diagnostics/text.php:127
|
2865 |
msgid "WordPress error logging override"
|
2866 |
msgstr ""
|
2867 |
|
2868 |
+
#: lib/menu_tools_diagnostic.php:270
|
2869 |
#: views/diagnostics/text.php:128
|
2870 |
msgid "WordPress error display override"
|
2871 |
msgstr ""
|
2872 |
|
2873 |
+
#: lib/menu_tools_diagnostic.php:271
|
2874 |
#: views/diagnostics/text.php:129
|
2875 |
msgid "WordPress script debug mode"
|
2876 |
msgstr ""
|
2877 |
|
2878 |
+
#: lib/menu_tools_diagnostic.php:272
|
2879 |
#: views/diagnostics/text.php:130
|
2880 |
msgid "WordPress query debug mode"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
+
#: lib/menu_tools_diagnostic.php:273
|
2884 |
#: views/diagnostics/text.php:131
|
2885 |
msgid "Database character set"
|
2886 |
msgstr ""
|
2887 |
|
2888 |
+
#: lib/menu_tools_diagnostic.php:274
|
2889 |
#: views/diagnostics/text.php:132
|
2890 |
msgid "Database collation"
|
2891 |
msgstr ""
|
2892 |
|
2893 |
+
#: lib/menu_tools_diagnostic.php:275
|
2894 |
#: views/diagnostics/text.php:133
|
2895 |
msgid "Explicitly set site URL"
|
2896 |
msgstr ""
|
2897 |
|
2898 |
+
#: lib/menu_tools_diagnostic.php:276
|
2899 |
#: views/diagnostics/text.php:134
|
2900 |
msgid "Explicitly set blog URL"
|
2901 |
msgstr ""
|
2902 |
|
2903 |
+
#: lib/menu_tools_diagnostic.php:277
|
2904 |
#: views/diagnostics/text.php:135
|
2905 |
msgid "\"wp-content\" folder is in default location"
|
2906 |
msgstr ""
|
2908 |
#. translators: WordPress content directory.
|
2909 |
#. translators: WordPress plugins directory.
|
2910 |
#. translators: WordPress languages directory.
|
2911 |
+
#: lib/menu_tools_diagnostic.php:277
|
|
|
2912 |
#: lib/menu_tools_diagnostic.php:279
|
2913 |
+
#: lib/menu_tools_diagnostic.php:280
|
2914 |
#: views/diagnostics/text.php:135
|
2915 |
#: views/diagnostics/text.php:137
|
2916 |
#: views/diagnostics/text.php:138
|
2918 |
msgstr ""
|
2919 |
|
2920 |
#. translators: WordPress content directory.
|
2921 |
+
#: lib/menu_tools_diagnostic.php:278
|
2922 |
#: views/diagnostics/text.php:136
|
2923 |
msgid "URL to the \"wp-content\" folder"
|
2924 |
msgstr ""
|
2925 |
|
2926 |
+
#: lib/menu_tools_diagnostic.php:279
|
2927 |
#: views/diagnostics/text.php:137
|
2928 |
msgid "\"plugins\" folder is in default location"
|
2929 |
msgstr ""
|
2930 |
|
2931 |
#. translators: WordPress plugins directory.
|
2932 |
+
#: lib/menu_tools_diagnostic.php:280
|
2933 |
#: views/diagnostics/text.php:138
|
2934 |
msgid "\"languages\" folder is in default location"
|
2935 |
msgstr ""
|
2936 |
|
2937 |
#. translators: WordPress languages directory.
|
2938 |
+
#: lib/menu_tools_diagnostic.php:281
|
2939 |
#: views/diagnostics/text.php:139
|
2940 |
msgid "Language choice"
|
2941 |
msgstr ""
|
2942 |
|
2943 |
+
#: lib/menu_tools_diagnostic.php:282
|
2944 |
#: views/diagnostics/text.php:140
|
2945 |
msgid "Custom upload folder location"
|
2946 |
msgstr ""
|
2947 |
|
2948 |
+
#: lib/menu_tools_diagnostic.php:283
|
2949 |
#: views/diagnostics/text.php:141
|
2950 |
msgid "Theme template folder override"
|
2951 |
msgstr ""
|
2952 |
|
2953 |
#. translators: WordPress theme template directory.
|
2954 |
#. translators: WordPress theme stylesheet directory.
|
|
|
2955 |
#: lib/menu_tools_diagnostic.php:283
|
2956 |
+
#: lib/menu_tools_diagnostic.php:284
|
2957 |
#: views/diagnostics/text.php:141
|
2958 |
#: views/diagnostics/text.php:142
|
2959 |
msgid "Overridden: %s"
|
2960 |
msgstr ""
|
2961 |
|
2962 |
#. translators: WordPress theme template directory.
|
2963 |
+
#: lib/menu_tools_diagnostic.php:284
|
2964 |
#: views/diagnostics/text.php:142
|
2965 |
msgid "Theme stylesheet folder override"
|
2966 |
msgstr ""
|
2967 |
|
2968 |
#. translators: WordPress theme stylesheet directory.
|
2969 |
+
#: lib/menu_tools_diagnostic.php:285
|
2970 |
#: views/diagnostics/text.php:143
|
2971 |
msgid "Post editing automatic saving interval"
|
2972 |
msgstr ""
|
2973 |
|
2974 |
+
#: lib/menu_tools_diagnostic.php:286
|
2975 |
#: views/diagnostics/text.php:144
|
2976 |
msgid "Post revisions saved by WordPress"
|
2977 |
msgstr ""
|
2978 |
|
2979 |
+
#: lib/menu_tools_diagnostic.php:286
|
2980 |
#: views/diagnostics/text.php:144
|
2981 |
#: views/waf/options-group-rate-limiting.php:67
|
2982 |
msgid "Unlimited"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
+
#: lib/menu_tools_diagnostic.php:286
|
2986 |
+
#: lib/menu_tools_diagnostic.php:313
|
2987 |
+
#: lib/wfDiagnostic.php:204
|
2988 |
+
#: lib/wfDiagnostic.php:366
|
2989 |
+
#: lib/wfDiagnostic.php:427
|
2990 |
#: views/diagnostics/text.php:144
|
2991 |
#: views/diagnostics/text.php:171
|
2992 |
#: views/scanner/issue-base.php:116
|
2993 |
msgid "None"
|
2994 |
msgstr ""
|
2995 |
|
2996 |
+
#: lib/menu_tools_diagnostic.php:287
|
2997 |
#: views/diagnostics/text.php:145
|
2998 |
msgid "WordPress cookie domain"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
+
#: lib/menu_tools_diagnostic.php:288
|
3002 |
#: views/diagnostics/text.php:146
|
3003 |
msgid "WordPress cookie path"
|
3004 |
msgstr ""
|
3005 |
|
3006 |
+
#: lib/menu_tools_diagnostic.php:289
|
3007 |
#: views/diagnostics/text.php:147
|
3008 |
msgid "WordPress site cookie path"
|
3009 |
msgstr ""
|
3010 |
|
3011 |
+
#: lib/menu_tools_diagnostic.php:290
|
3012 |
#: views/diagnostics/text.php:148
|
3013 |
msgid "WordPress admin cookie path"
|
3014 |
msgstr ""
|
3015 |
|
3016 |
+
#: lib/menu_tools_diagnostic.php:291
|
3017 |
#: views/diagnostics/text.php:149
|
3018 |
msgid "WordPress plugins cookie path"
|
3019 |
msgstr ""
|
3020 |
|
3021 |
+
#: lib/menu_tools_diagnostic.php:292
|
3022 |
#: views/diagnostics/text.php:150
|
3023 |
msgid "URL redirected to if the visitor tries to access a nonexistent blog"
|
3024 |
msgstr ""
|
3025 |
|
3026 |
+
#: lib/menu_tools_diagnostic.php:293
|
3027 |
#: views/diagnostics/text.php:151
|
3028 |
msgid "Concatenate JavaScript files"
|
3029 |
msgstr ""
|
3030 |
|
3031 |
+
#: lib/menu_tools_diagnostic.php:294
|
3032 |
#: views/diagnostics/text.php:152
|
3033 |
msgid "WordPress memory limit"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
+
#: lib/menu_tools_diagnostic.php:295
|
3037 |
#: views/diagnostics/text.php:153
|
3038 |
msgid "Administrative memory limit"
|
3039 |
msgstr ""
|
3040 |
|
3041 |
+
#: lib/menu_tools_diagnostic.php:296
|
3042 |
#: views/diagnostics/text.php:154
|
3043 |
msgid "Built-in caching"
|
3044 |
msgstr ""
|
3045 |
|
3046 |
+
#: lib/menu_tools_diagnostic.php:297
|
3047 |
#: views/diagnostics/text.php:155
|
3048 |
msgid "Custom \"users\" table"
|
3049 |
msgstr ""
|
3050 |
|
3051 |
#. translators: WordPress custom user table.
|
3052 |
#. translators: WordPress custom user meta table.
|
|
|
3053 |
#: lib/menu_tools_diagnostic.php:297
|
3054 |
+
#: lib/menu_tools_diagnostic.php:298
|
3055 |
#: views/diagnostics/text.php:155
|
3056 |
#: views/diagnostics/text.php:156
|
3057 |
msgid "Set: %s"
|
3058 |
msgstr ""
|
3059 |
|
3060 |
#. translators: WordPress custom user table.
|
3061 |
+
#: lib/menu_tools_diagnostic.php:298
|
3062 |
#: views/diagnostics/text.php:156
|
3063 |
msgid "Custom \"usermeta\" table"
|
3064 |
msgstr ""
|
3065 |
|
3066 |
#. translators: WordPress custom user meta table.
|
3067 |
+
#: lib/menu_tools_diagnostic.php:299
|
3068 |
#: views/diagnostics/text.php:157
|
3069 |
msgid "Overridden permissions for a new folder"
|
3070 |
msgstr ""
|
3071 |
|
3072 |
+
#: lib/menu_tools_diagnostic.php:300
|
3073 |
#: views/diagnostics/text.php:158
|
3074 |
msgid "Overridden permissions for a new file"
|
3075 |
msgstr ""
|
3076 |
|
3077 |
+
#: lib/menu_tools_diagnostic.php:301
|
3078 |
#: views/diagnostics/text.php:159
|
3079 |
msgid "Alternate WP cron"
|
3080 |
msgstr ""
|
3081 |
|
3082 |
+
#: lib/menu_tools_diagnostic.php:302
|
3083 |
#: views/diagnostics/text.php:160
|
3084 |
msgid "WP cron status"
|
3085 |
msgstr ""
|
3086 |
|
3087 |
+
#: lib/menu_tools_diagnostic.php:303
|
3088 |
#: views/diagnostics/text.php:161
|
3089 |
msgid "Cron running frequency lock"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
+
#: lib/menu_tools_diagnostic.php:304
|
3093 |
#: views/diagnostics/text.php:162
|
3094 |
msgid "Interval the trash is automatically emptied at in days"
|
3095 |
msgstr ""
|
3096 |
|
3097 |
+
#: lib/menu_tools_diagnostic.php:304
|
3098 |
+
#: lib/wordfenceClass.php:4260
|
3099 |
#: views/diagnostics/text.php:162
|
3100 |
msgid "Never"
|
3101 |
msgstr ""
|
3102 |
|
3103 |
+
#: lib/menu_tools_diagnostic.php:305
|
3104 |
#: views/diagnostics/text.php:163
|
3105 |
msgid "Automatic database repair"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
+
#: lib/menu_tools_diagnostic.php:306
|
3109 |
#: views/diagnostics/text.php:164
|
3110 |
msgid "Do not upgrade global tables"
|
3111 |
msgstr ""
|
3112 |
|
3113 |
+
#: lib/menu_tools_diagnostic.php:307
|
3114 |
#: views/diagnostics/text.php:165
|
3115 |
msgid "Disallow plugin/theme editing"
|
3116 |
msgstr ""
|
3117 |
|
3118 |
+
#: lib/menu_tools_diagnostic.php:308
|
3119 |
#: views/diagnostics/text.php:166
|
3120 |
msgid "Disallow plugin/theme update and installation"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
+
#: lib/menu_tools_diagnostic.php:309
|
3124 |
#: views/diagnostics/text.php:167
|
3125 |
msgid "Overwrite image edits when restoring the original"
|
3126 |
msgstr ""
|
3127 |
|
3128 |
+
#: lib/menu_tools_diagnostic.php:310
|
3129 |
#: views/diagnostics/text.php:168
|
3130 |
msgid "Force SSL for administrative logins"
|
3131 |
msgstr ""
|
3132 |
|
3133 |
+
#: lib/menu_tools_diagnostic.php:311
|
3134 |
#: views/diagnostics/text.php:169
|
3135 |
msgid "Block external URL requests"
|
3136 |
msgstr ""
|
3137 |
|
3138 |
+
#: lib/menu_tools_diagnostic.php:312
|
3139 |
#: views/diagnostics/text.php:170
|
3140 |
msgid "Allowlisted hosts"
|
3141 |
msgstr ""
|
3142 |
|
3143 |
+
#: lib/menu_tools_diagnostic.php:313
|
3144 |
#: views/diagnostics/text.php:171
|
3145 |
msgid "Automatic WP Core updates"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
+
#: lib/menu_tools_diagnostic.php:313
|
3149 |
#: views/diagnostics/text.php:171
|
3150 |
msgid "Everything"
|
3151 |
msgstr ""
|
3152 |
|
3153 |
+
#: lib/menu_tools_diagnostic.php:313
|
3154 |
#: views/diagnostics/text.php:171
|
3155 |
msgid "Default"
|
3156 |
msgstr ""
|
3157 |
|
3158 |
+
#: lib/menu_tools_diagnostic.php:314
|
3159 |
#: views/diagnostics/text.php:172
|
3160 |
msgid "Hostname for a proxy server"
|
3161 |
msgstr ""
|
3162 |
|
3163 |
+
#: lib/menu_tools_diagnostic.php:315
|
3164 |
#: views/diagnostics/text.php:173
|
3165 |
msgid "Port for a proxy server"
|
3166 |
msgstr ""
|
3167 |
|
3168 |
+
#: lib/menu_tools_diagnostic.php:316
|
3169 |
#: views/diagnostics/text.php:174
|
3170 |
msgid "Multisite enabled"
|
3171 |
msgstr ""
|
3172 |
|
3173 |
+
#: lib/menu_tools_diagnostic.php:317
|
3174 |
#: views/diagnostics/text.php:175
|
3175 |
msgid "Multisite/network ability enabled"
|
3176 |
msgstr ""
|
3177 |
|
3178 |
+
#: lib/menu_tools_diagnostic.php:318
|
3179 |
#: views/diagnostics/text.php:176
|
3180 |
msgid "Multisite enabled, WordPress will load the /wp-content/sunrise.php file"
|
3181 |
msgstr ""
|
3182 |
|
3183 |
+
#: lib/menu_tools_diagnostic.php:319
|
3184 |
#: views/diagnostics/text.php:177
|
3185 |
msgid "Multisite enabled, subdomain installation constant"
|
3186 |
msgstr ""
|
3187 |
|
3188 |
+
#: lib/menu_tools_diagnostic.php:320
|
3189 |
#: views/diagnostics/text.php:178
|
3190 |
msgid "Multisite enabled, Older subdomain installation constant"
|
3191 |
msgstr ""
|
3192 |
|
3193 |
+
#: lib/menu_tools_diagnostic.php:321
|
3194 |
#: views/diagnostics/text.php:179
|
3195 |
msgid "Defines the multisite domain for the current site"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
+
#: lib/menu_tools_diagnostic.php:322
|
3199 |
#: views/diagnostics/text.php:180
|
3200 |
msgid "Defines the multisite path for the current site"
|
3201 |
msgstr ""
|
3202 |
|
3203 |
+
#: lib/menu_tools_diagnostic.php:323
|
3204 |
#: views/diagnostics/text.php:181
|
3205 |
msgid "Defines the multisite database ID for the current site"
|
3206 |
msgstr ""
|
3207 |
|
3208 |
+
#: lib/menu_tools_diagnostic.php:324
|
3209 |
#: views/diagnostics/text.php:182
|
3210 |
msgid "Disable the fatal error handler"
|
3211 |
msgstr ""
|
3212 |
|
3213 |
+
#: lib/menu_tools_diagnostic.php:358
|
3214 |
#: views/diagnostics/text.php:220
|
3215 |
msgid "WordPress Plugins"
|
3216 |
msgstr ""
|
3217 |
|
3218 |
+
#: lib/menu_tools_diagnostic.php:359
|
3219 |
#: views/diagnostics/text.php:220
|
3220 |
msgid "Status of installed plugins."
|
3221 |
msgstr ""
|
3222 |
|
3223 |
#. translators: Plugin version.
|
3224 |
#. translators: Theme version.
|
3225 |
+
#: lib/menu_tools_diagnostic.php:383
|
3226 |
+
#: lib/menu_tools_diagnostic.php:429
|
3227 |
+
#: lib/menu_tools_diagnostic.php:528
|
3228 |
#: views/diagnostics/text.php:238
|
3229 |
#: views/diagnostics/text.php:277
|
3230 |
#: views/diagnostics/text.php:351
|
3231 |
msgid "Version %s"
|
3232 |
msgstr ""
|
3233 |
|
3234 |
+
#: lib/menu_tools_diagnostic.php:387
|
3235 |
#: views/diagnostics/text.php:242
|
3236 |
msgid "Network Activated"
|
3237 |
msgstr ""
|
3238 |
|
3239 |
+
#: lib/menu_tools_diagnostic.php:389
|
3240 |
+
#: lib/menu_tools_diagnostic.php:432
|
3241 |
+
#: lib/menu_tools_diagnostic.php:488
|
3242 |
+
#: lib/menu_tools_diagnostic.php:531
|
3243 |
#: views/diagnostics/text.php:244
|
3244 |
#: views/diagnostics/text.php:282
|
3245 |
#: views/diagnostics/text.php:324
|
3247 |
msgid "Active"
|
3248 |
msgstr ""
|
3249 |
|
3250 |
+
#: lib/menu_tools_diagnostic.php:391
|
3251 |
+
#: lib/menu_tools_diagnostic.php:490
|
3252 |
+
#: lib/menu_tools_diagnostic.php:533
|
3253 |
#: views/diagnostics/text.php:246
|
3254 |
#: views/diagnostics/text.php:324
|
3255 |
#: views/diagnostics/text.php:357
|
3256 |
msgid "Inactive"
|
3257 |
msgstr ""
|
3258 |
|
3259 |
+
#: lib/menu_tools_diagnostic.php:403
|
3260 |
#: views/diagnostics/text.php:258
|
3261 |
msgid "Must-Use WordPress Plugins"
|
3262 |
msgstr ""
|
3263 |
|
3264 |
+
#: lib/menu_tools_diagnostic.php:404
|
3265 |
#: views/diagnostics/text.php:258
|
3266 |
msgid "WordPress \"mu-plugins\" that are always active, including those provided by hosts."
|
3267 |
msgstr ""
|
3268 |
|
3269 |
+
#: lib/menu_tools_diagnostic.php:439
|
3270 |
#: views/diagnostics/text.php:287
|
3271 |
msgid "No MU-Plugins"
|
3272 |
msgstr ""
|
3273 |
|
3274 |
+
#: lib/menu_tools_diagnostic.php:451
|
3275 |
#: views/diagnostics/text.php:296
|
3276 |
msgid "Drop-In WordPress Plugins"
|
3277 |
msgstr ""
|
3278 |
|
3279 |
+
#: lib/menu_tools_diagnostic.php:452
|
3280 |
#: views/diagnostics/text.php:296
|
3281 |
msgid "WordPress \"drop-in\" plugins that are active."
|
3282 |
msgstr ""
|
3283 |
|
3284 |
+
#: lib/menu_tools_diagnostic.php:465
|
3285 |
+
#: views/diagnostics/text.php:302
|
3286 |
+
msgid "Advanced caching plugin"
|
3287 |
+
msgstr ""
|
3288 |
+
|
3289 |
+
#: lib/menu_tools_diagnostic.php:466
|
3290 |
+
#: views/diagnostics/text.php:303
|
3291 |
+
msgid "Custom database class"
|
3292 |
+
msgstr ""
|
3293 |
+
|
3294 |
+
#: lib/menu_tools_diagnostic.php:467
|
3295 |
+
#: views/diagnostics/text.php:304
|
3296 |
+
msgid "Custom database error message"
|
3297 |
+
msgstr ""
|
3298 |
+
|
3299 |
+
#: lib/menu_tools_diagnostic.php:468
|
3300 |
+
#: views/diagnostics/text.php:305
|
3301 |
+
msgid "Custom installation script"
|
3302 |
+
msgstr ""
|
3303 |
+
|
3304 |
+
#: lib/menu_tools_diagnostic.php:469
|
3305 |
+
#: views/diagnostics/text.php:306
|
3306 |
+
msgid "Custom maintenance message"
|
3307 |
+
msgstr ""
|
3308 |
+
|
3309 |
+
#: lib/menu_tools_diagnostic.php:470
|
3310 |
+
#: views/diagnostics/text.php:307
|
3311 |
+
msgid "External object cache"
|
3312 |
+
msgstr ""
|
3313 |
+
|
3314 |
+
#: lib/menu_tools_diagnostic.php:471
|
3315 |
+
#: views/diagnostics/text.php:308
|
3316 |
+
msgid "Custom PHP error message"
|
3317 |
+
msgstr ""
|
3318 |
+
|
3319 |
+
#: lib/menu_tools_diagnostic.php:472
|
3320 |
+
#: views/diagnostics/text.php:309
|
3321 |
+
msgid "Custom PHP fatal error handler"
|
3322 |
+
msgstr ""
|
3323 |
+
|
3324 |
+
#: lib/menu_tools_diagnostic.php:474
|
3325 |
+
#: views/diagnostics/text.php:311
|
3326 |
+
msgid "Executed before Multisite is loaded"
|
3327 |
+
msgstr ""
|
3328 |
+
|
3329 |
+
#: lib/menu_tools_diagnostic.php:475
|
3330 |
+
#: views/diagnostics/text.php:312
|
3331 |
+
msgid "Custom site deleted message"
|
3332 |
+
msgstr ""
|
3333 |
+
|
3334 |
+
#: lib/menu_tools_diagnostic.php:476
|
3335 |
+
#: views/diagnostics/text.php:313
|
3336 |
+
msgid "Custom site inactive message"
|
3337 |
+
msgstr ""
|
3338 |
+
|
3339 |
+
#: lib/menu_tools_diagnostic.php:477
|
3340 |
+
#: views/diagnostics/text.php:314
|
3341 |
+
msgid "Custom site suspended message"
|
3342 |
+
msgstr ""
|
3343 |
+
|
3344 |
+
#: lib/menu_tools_diagnostic.php:502
|
3345 |
#: views/diagnostics/text.php:332
|
3346 |
#: views/reports/activity-report-email-inline.php:392
|
3347 |
#: views/reports/activity-report.php:191
|
3348 |
msgid "Themes"
|
3349 |
msgstr ""
|
3350 |
|
3351 |
+
#: lib/menu_tools_diagnostic.php:503
|
3352 |
#: views/diagnostics/text.php:332
|
3353 |
msgid "Status of installed themes."
|
3354 |
msgstr ""
|
3355 |
|
3356 |
+
#: lib/menu_tools_diagnostic.php:541
|
3357 |
#: views/diagnostics/text.php:366
|
3358 |
msgid "No Themes"
|
3359 |
msgstr ""
|
3360 |
|
3361 |
+
#: lib/menu_tools_diagnostic.php:553
|
3362 |
#: views/diagnostics/text.php:375
|
3363 |
msgid "Cron Jobs"
|
3364 |
msgstr ""
|
3365 |
|
3366 |
+
#: lib/menu_tools_diagnostic.php:554
|
3367 |
#: views/diagnostics/text.php:375
|
3368 |
msgid "List of WordPress cron jobs scheduled by WordPress, plugins, or themes."
|
3369 |
msgstr ""
|
3370 |
|
3371 |
+
#: lib/menu_tools_diagnostic.php:574
|
3372 |
#: views/diagnostics/text.php:390
|
3373 |
msgid "Overdue"
|
3374 |
msgstr ""
|
3375 |
|
3376 |
+
#: lib/menu_tools_diagnostic.php:606
|
3377 |
#: views/diagnostics/text.php:402
|
3378 |
msgid "Database Tables"
|
3379 |
msgstr ""
|
3380 |
|
3381 |
+
#: lib/menu_tools_diagnostic.php:607
|
3382 |
#: views/diagnostics/text.php:402
|
3383 |
msgid "Database table names, sizes, timestamps, and other metadata."
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: lib/menu_tools_diagnostic.php:617
|
3387 |
msgid "Wordfence Table Check"
|
3388 |
msgstr ""
|
3389 |
|
3390 |
+
#: lib/menu_tools_diagnostic.php:620
|
3391 |
#: views/diagnostics/text.php:420
|
3392 |
msgid "Unable to verify - table count too high"
|
3393 |
msgstr ""
|
3394 |
|
3395 |
+
#: lib/menu_tools_diagnostic.php:649
|
3396 |
#: views/diagnostics/text.php:453
|
3397 |
msgid "All Tables Exist"
|
3398 |
msgstr ""
|
3399 |
|
3400 |
#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
|
3401 |
+
#: lib/menu_tools_diagnostic.php:653
|
3402 |
msgid "Tables missing (prefix %1$s, %2$s): %3$s"
|
3403 |
msgstr ""
|
3404 |
|
3405 |
#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
|
3406 |
#. translators: 1. WordPress table prefix. 2. Wordfence tables.
|
3407 |
+
#: lib/menu_tools_diagnostic.php:653
|
3408 |
#: views/diagnostics/text.php:455
|
3409 |
msgid "lowercase"
|
3410 |
msgstr ""
|
3411 |
|
3412 |
#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
|
3413 |
#. translators: 1. WordPress table prefix. 2. Wordfence tables.
|
3414 |
+
#: lib/menu_tools_diagnostic.php:653
|
3415 |
#: views/diagnostics/text.php:455
|
3416 |
msgid "regular case"
|
3417 |
msgstr ""
|
3418 |
|
3419 |
#. translators: Row/record count.
|
3420 |
+
#: lib/menu_tools_diagnostic.php:699
|
3421 |
#: views/diagnostics/text.php:489
|
3422 |
msgid "and %d more"
|
3423 |
msgstr ""
|
3424 |
|
3425 |
+
#: lib/menu_tools_diagnostic.php:718
|
3426 |
#: views/diagnostics/text.php:500
|
3427 |
msgid "Log Files"
|
3428 |
msgstr ""
|
3429 |
|
3430 |
+
#: lib/menu_tools_diagnostic.php:719
|
3431 |
#: views/diagnostics/text.php:500
|
3432 |
msgid "PHP error logs generated by your site, if enabled by your host."
|
3433 |
msgstr ""
|
3434 |
|
3435 |
+
#: lib/menu_tools_diagnostic.php:731
|
3436 |
#: views/diagnostics/text.php:506
|
3437 |
#: views/reports/activity-report-email-inline.php:341
|
3438 |
#: views/scanner/issue-file.php:8
|
3440 |
msgid "File"
|
3441 |
msgstr ""
|
3442 |
|
3443 |
+
#: lib/menu_tools_diagnostic.php:732
|
3444 |
+
#: lib/menu_tools_diagnostic.php:771
|
3445 |
+
#: lib/wordfenceClass.php:6097
|
3446 |
msgid "Download"
|
3447 |
msgstr ""
|
3448 |
|
3449 |
+
#: lib/menu_tools_diagnostic.php:740
|
3450 |
#: views/diagnostics/text.php:513
|
3451 |
msgid "No log files found."
|
3452 |
msgstr ""
|
3453 |
|
3454 |
+
#: lib/menu_tools_diagnostic.php:760
|
3455 |
#: views/diagnostics/text.php:532
|
3456 |
msgid "UTC"
|
3457 |
msgstr ""
|
3458 |
|
3459 |
+
#: lib/menu_tools_diagnostic.php:771
|
3460 |
msgid "Requires downloading from the server directly"
|
3461 |
msgstr ""
|
3462 |
|
3463 |
+
#: lib/menu_tools_diagnostic.php:785
|
3464 |
#: views/diagnostics/text.php:553
|
3465 |
msgid "Scan Issues"
|
3466 |
msgstr ""
|
3467 |
|
3468 |
#. translators: Number of scan issues.
|
3469 |
+
#: lib/menu_tools_diagnostic.php:790
|
3470 |
#: views/diagnostics/text.php:561
|
3471 |
msgid "New Issues (%d total)"
|
3472 |
msgstr ""
|
3473 |
|
3474 |
+
#: lib/menu_tools_diagnostic.php:811
|
3475 |
+
#: lib/wordfenceClass.php:3959
|
3476 |
#: views/diagnostics/text.php:584
|
3477 |
msgid "No New Issues"
|
3478 |
msgstr ""
|
3479 |
|
3480 |
+
#: lib/menu_tools_diagnostic.php:826
|
3481 |
msgid "Other Tests"
|
3482 |
msgstr ""
|
3483 |
|
3484 |
+
#: lib/menu_tools_diagnostic.php:827
|
3485 |
msgid "System configuration, memory test, send test email from this server."
|
3486 |
msgstr ""
|
3487 |
|
3488 |
+
#: lib/menu_tools_diagnostic.php:838
|
3489 |
msgid "Click to view your system's configuration in a new window"
|
3490 |
msgstr ""
|
3491 |
|
3492 |
+
#: lib/menu_tools_diagnostic.php:844
|
3493 |
msgid "Test your WordPress host's available memory"
|
3494 |
msgstr ""
|
3495 |
|
3496 |
+
#: lib/menu_tools_diagnostic.php:850
|
3497 |
msgid "Send a test email from this WordPress server to an email address:"
|
3498 |
msgstr ""
|
3499 |
|
3500 |
+
#: lib/menu_tools_diagnostic.php:852
|
3501 |
msgid "Send Test Email"
|
3502 |
msgstr ""
|
3503 |
|
3504 |
+
#: lib/menu_tools_diagnostic.php:857
|
3505 |
msgid "Send a test activity report email:"
|
3506 |
msgstr ""
|
3507 |
|
3508 |
+
#: lib/menu_tools_diagnostic.php:859
|
3509 |
msgid "Send Test Activity Report"
|
3510 |
msgstr ""
|
3511 |
|
3512 |
+
#: lib/menu_tools_diagnostic.php:864
|
3513 |
msgid "Clear all Wordfence Central connection data"
|
3514 |
msgstr ""
|
3515 |
|
3516 |
+
#: lib/menu_tools_diagnostic.php:865
|
3517 |
msgid "Clear Connection Data"
|
3518 |
msgstr ""
|
3519 |
|
3520 |
+
#: lib/menu_tools_diagnostic.php:877
|
3521 |
msgid "Debugging Options"
|
3522 |
msgstr ""
|
3523 |
|
3524 |
+
#: lib/menu_tools_diagnostic.php:894
|
3525 |
msgid "Enable debugging mode (increases database load)"
|
3526 |
msgstr ""
|
3527 |
|
3528 |
+
#: lib/menu_tools_diagnostic.php:906
|
3529 |
msgid "Start all scans remotely (Try this if your scans aren't starting and your site is publicly accessible)"
|
3530 |
msgstr ""
|
3531 |
|
3532 |
+
#: lib/menu_tools_diagnostic.php:918
|
3533 |
msgid "Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)"
|
3534 |
msgstr ""
|
3535 |
|
3536 |
+
#: lib/menu_tools_diagnostic.php:930
|
3537 |
msgid "Disable reading of php://input"
|
3538 |
msgstr ""
|
3539 |
|
3540 |
+
#: lib/menu_tools_diagnostic.php:942
|
3541 |
msgid "Enable beta threat defense feed"
|
3542 |
msgstr ""
|
3543 |
|
3544 |
+
#: lib/menu_tools_diagnostic.php:961
|
3545 |
+
#: lib/wordfenceClass.php:6158
|
3546 |
msgid "Restore Defaults"
|
3547 |
msgstr ""
|
3548 |
|
3549 |
+
#: lib/menu_tools_diagnostic.php:962
|
3550 |
+
#: lib/wordfenceClass.php:6083
|
3551 |
msgid "Cancel Changes"
|
3552 |
msgstr ""
|
3553 |
|
3554 |
+
#: lib/menu_tools_diagnostic.php:963
|
3555 |
+
#: lib/wordfenceClass.php:6161
|
3556 |
msgid "Save Changes"
|
3557 |
msgstr ""
|
3558 |
|
3559 |
+
#: lib/menu_tools_diagnostic.php:980
|
3560 |
#: views/options/block-all-options-controls.php:162
|
3561 |
#: views/options/block-controls.php:77
|
3562 |
msgid "Confirm Restore Defaults"
|
3563 |
msgstr ""
|
3564 |
|
3565 |
+
#: lib/menu_tools_diagnostic.php:981
|
3566 |
msgid "Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page."
|
3567 |
msgstr ""
|
3568 |
|
3569 |
+
#: lib/menu_tools_diagnostic.php:983
|
3570 |
#: views/options/block-all-options-controls.php:165
|
3571 |
#: views/options/block-controls.php:80
|
3572 |
msgid "Restore<span class=\"wf-hidden-xs\"> Defaults</span>"
|
3574 |
|
3575 |
#. translators: URL to support page.
|
3576 |
#: lib/menu_tools_importExport.php:16
|
3577 |
+
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about importing and exporting options</span><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
|
|
|
|
|
|
|
|
3578 |
msgstr ""
|
3579 |
|
3580 |
+
#: lib/menu_tools_importExport.php:20
|
3581 |
+
msgid "To clone one site's configuration to another, use the import/export tools below."
|
|
|
|
|
|
|
|
|
|
|
3582 |
msgstr ""
|
3583 |
|
3584 |
#. translators: URL to support page.
|
3585 |
#: lib/menu_tools_livetraffic.php:44
|
3586 |
+
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about Live Traffic</span><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
3587 |
msgstr ""
|
3588 |
|
3589 |
#: lib/menu_tools_livetraffic.php:51
|
3605 |
#. translators: URL to support page.
|
3606 |
#: lib/menu_tools_livetraffic.php:77
|
3607 |
#: lib/menu_tools_livetraffic.php:86
|
3608 |
+
msgid " (host setting <a href=\"%s\" class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a>)"
|
3609 |
msgstr ""
|
3610 |
|
3611 |
#: lib/menu_tools_livetraffic.php:78
|
3623 |
#: lib/menu_tools_livetraffic.php:100
|
3624 |
#: lib/menu_tools_livetraffic.php:227
|
3625 |
#: lib/menu_tools_livetraffic.php:458
|
3626 |
+
#: lib/wordfenceClass.php:6120
|
3627 |
msgid "Human"
|
3628 |
msgstr ""
|
3629 |
|
3630 |
#: lib/menu_tools_livetraffic.php:101
|
3631 |
#: lib/menu_tools_livetraffic.php:228
|
3632 |
#: lib/menu_tools_livetraffic.php:458
|
3633 |
+
#: lib/wordfenceClass.php:6082
|
3634 |
msgid "Bot"
|
3635 |
msgstr ""
|
3636 |
|
3639 |
msgstr ""
|
3640 |
|
3641 |
#: lib/menu_tools_livetraffic.php:103
|
3642 |
+
#: lib/wfDiagnostic.php:762
|
3643 |
+
#: lib/wordfenceClass.php:6074
|
3644 |
msgid "Blocked"
|
3645 |
msgstr ""
|
3646 |
|
3733 |
msgstr ""
|
3734 |
|
3735 |
#: lib/menu_tools_livetraffic.php:286
|
3736 |
+
#: lib/wordfenceClass.php:6189
|
3737 |
msgid "Type"
|
3738 |
msgstr ""
|
3739 |
|
3746 |
msgstr ""
|
3747 |
|
3748 |
#: lib/menu_tools_livetraffic.php:289
|
3749 |
+
#: lib/wf503.php:368
|
3750 |
#: views/reports/activity-report-email-inline.php:294
|
3751 |
msgid "Time"
|
3752 |
msgstr ""
|
3756 |
msgstr ""
|
3757 |
|
3758 |
#: lib/menu_tools_livetraffic.php:291
|
3759 |
+
#: lib/wordfenceClass.php:4242
|
3760 |
#: views/blocking/blocking-create.php:193
|
3761 |
msgid "Hostname"
|
3762 |
msgstr ""
|
3898 |
msgid "Live traffic now defaults to a summary view. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch. New installations will only log security-related traffic by default, though your previous setting has been preserved."
|
3899 |
msgstr ""
|
3900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3901 |
#: lib/menu_tools_twoFactor.php:16
|
3902 |
msgid "Learn more<span class=\"wf-hidden-xs\"> about Two-Factor Authentication</span>"
|
3903 |
msgstr ""
|
4096 |
msgid "Your site is now using the legacy two-factor authentication system."
|
4097 |
msgstr ""
|
4098 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4099 |
#. translators: URL to support page.
|
4100 |
#: lib/menu_tools_whois.php:19
|
4101 |
+
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about Whois Lookup</span><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
4102 |
msgstr ""
|
4103 |
|
4104 |
#: lib/menu_tools_whois.php:23
|
4109 |
msgid "How to block a network"
|
4110 |
msgstr ""
|
4111 |
|
4112 |
+
#. translators: Hostname or IP address.
|
4113 |
+
#: lib/menu_tools_whois.php:40
|
4114 |
+
msgid "You've chosen to block the network that <span style=\"color: #F00;\">%s</span> is part of. We've marked the networks we found that this IP address belongs to in red below. Make sure you read all the WHOIS information so that you see all networks this IP belongs to. We recommend blocking the network with the lowest number of addresses. You may find this is listed at the end as part of the 'rWHOIS' query which contacts the local WHOIS server that is run by the network administrator."
|
4115 |
+
msgstr ""
|
4116 |
+
|
4117 |
#: lib/menu_tools_whois.php:95
|
4118 |
+
#: lib/wordfenceClass.php:6102
|
4119 |
msgid "Enter a valid IP or domain"
|
4120 |
msgstr ""
|
4121 |
|
4122 |
#: lib/menu_tools_whois.php:95
|
4123 |
+
#: lib/wordfenceClass.php:6145
|
4124 |
msgid "Please enter a valid IP address or domain name for your whois lookup."
|
4125 |
msgstr ""
|
4126 |
|
4127 |
#: lib/menu_tools_whois.php:99
|
4128 |
+
#: lib/wordfenceClass.php:6126
|
4129 |
msgid "Loading..."
|
4130 |
msgstr ""
|
4131 |
|
4132 |
#: lib/menu_tools_whois.php:104
|
4133 |
+
#: lib/wordfenceClass.php:6132
|
4134 |
msgid "Look up IP or Domain"
|
4135 |
msgstr ""
|
4136 |
|
4160 |
|
4161 |
#: lib/menu_wordfence_central.php:44
|
4162 |
#: lib/menu_wordfence_central.php:57
|
4163 |
+
#: lib/wordfenceClass.php:6638
|
4164 |
msgid "Wordfence Central"
|
4165 |
msgstr ""
|
4166 |
|
4243 |
#. translators: Error message.
|
4244 |
#: lib/rest-api/wfRESTConfigController.php:215
|
4245 |
#: lib/rest-api/wfRESTConfigController.php:258
|
4246 |
+
#: lib/wordfenceClass.php:4526
|
4247 |
msgid "An error occurred while saving the configuration: %s"
|
4248 |
msgstr ""
|
4249 |
|
4250 |
#. translators: Error message.
|
4251 |
#: lib/rest-api/wfRESTConfigController.php:226
|
4252 |
#: lib/rest-api/wfRESTConfigController.php:269
|
4253 |
+
#: lib/wordfenceClass.php:4535
|
4254 |
msgid "Errors occurred while saving the configuration: %s"
|
4255 |
msgstr ""
|
4256 |
|
4257 |
#: lib/rest-api/wfRESTConfigController.php:231
|
4258 |
#: lib/rest-api/wfRESTConfigController.php:274
|
4259 |
+
#: lib/wordfenceClass.php:4540
|
4260 |
msgid "Errors occurred while saving the configuration."
|
4261 |
msgstr ""
|
4262 |
|
4307 |
msgid "Your access to this site has been limited"
|
4308 |
msgstr ""
|
4309 |
|
4310 |
+
#: lib/wf503.php:351
|
4311 |
msgid "Your access to this site has been limited by the site owner"
|
4312 |
msgstr ""
|
4313 |
|
4314 |
+
#: lib/wf503.php:352
|
4315 |
msgid "Your access to this service has been limited. (HTTP response code 503)"
|
4316 |
msgstr ""
|
4317 |
|
4318 |
+
#: lib/wf503.php:353
|
4319 |
+
#: lib/wfLockedOut.php:358
|
4320 |
msgid "If you think you have been blocked in error, contact the owner of this site for assistance."
|
4321 |
msgstr ""
|
4322 |
|
4323 |
+
#: lib/wf503.php:361
|
4324 |
+
#: lib/wfLockedOut.php:370
|
4325 |
msgid "Block Technical Data"
|
4326 |
msgstr ""
|
4327 |
|
4328 |
+
#: lib/wf503.php:364
|
4329 |
msgid "Block Reason"
|
4330 |
msgstr ""
|
4331 |
|
4332 |
+
#: lib/wf503.php:384
|
4333 |
+
#: lib/wfLockedOut.php:393
|
4334 |
msgid "About Wordfence"
|
4335 |
msgstr ""
|
4336 |
|
4337 |
+
#: lib/wf503.php:385
|
4338 |
+
#: lib/wfLockedOut.php:394
|
4339 |
+
msgid "Wordfence is a security plugin installed on over 4 million WordPress sites. The owner of this site is using Wordfence to manage access to their site."
|
4340 |
msgstr ""
|
4341 |
|
4342 |
+
#: lib/wf503.php:386
|
4343 |
+
#: lib/wfLockedOut.php:395
|
4344 |
msgid "You can also read the documentation to learn about Wordfence's blocking tools, or visit wordfence.com to learn more about Wordfence."
|
4345 |
msgstr ""
|
4346 |
|
4347 |
#. translators: Support URL.
|
4348 |
+
#: lib/wf503.php:390
|
4349 |
+
msgid "Click here to learn more: <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Documentation<span class=\"screen-reader-text\"> ("
|
|
|
4350 |
msgstr ""
|
4351 |
|
4352 |
#. translators: Localized date.
|
4353 |
+
#: lib/wf503.php:391
|
4354 |
+
#: lib/wfLockedOut.php:400
|
4355 |
msgid "Generated by Wordfence at %s"
|
4356 |
msgstr ""
|
4357 |
|
4358 |
#. translators: Localized date.
|
4359 |
+
#: lib/wf503.php:391
|
4360 |
+
#: lib/wfLockedOut.php:400
|
4361 |
msgid "Your computer's time:"
|
4362 |
msgstr ""
|
4363 |
|
4373 |
msgstr ""
|
4374 |
|
4375 |
#: lib/wfActivityReport.php:584
|
4376 |
+
#: lib/wordfenceClass.php:8371
|
4377 |
msgid "Blocked because the IP is blocklisted"
|
4378 |
msgstr ""
|
4379 |
|
4380 |
#. translators: Reason for firewall action.
|
4381 |
#: lib/wfActivityReport.php:587
|
4382 |
+
#: lib/wordfenceClass.php:8374
|
4383 |
msgid "Blocked for %s"
|
4384 |
msgstr ""
|
4385 |
|
4386 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4387 |
#: lib/wfActivityReport.php:599
|
4388 |
+
#: lib/wordfenceClass.php:8388
|
4389 |
msgid "Blocked for %1$s in query string: %2$s = %3$s"
|
4390 |
msgstr ""
|
4391 |
|
4392 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4393 |
#: lib/wfActivityReport.php:602
|
4394 |
+
#: lib/wordfenceClass.php:8393
|
4395 |
msgid "Blocked for %1$s in POST body: %2$s = %3$s"
|
4396 |
msgstr ""
|
4397 |
|
4398 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4399 |
#: lib/wfActivityReport.php:605
|
4400 |
+
#: lib/wordfenceClass.php:8398
|
4401 |
msgid "Blocked for %1$s in cookie: %2$s = %3$s"
|
4402 |
msgstr ""
|
4403 |
|
4404 |
#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
|
4405 |
#: lib/wfActivityReport.php:608
|
4406 |
+
#: lib/wordfenceClass.php:8403
|
4407 |
msgid "Blocked for %1$s in file: %2$s = %3$s"
|
4408 |
msgstr ""
|
4409 |
|
4410 |
#: lib/wfActivityReport.php:752
|
4411 |
+
#: lib/wfDiagnostic.php:494
|
4412 |
#: models/block/wfBlock.php:95
|
4413 |
msgid "Unknown"
|
4414 |
msgstr ""
|
4415 |
|
4416 |
+
#: lib/wfAdminNoticeQueue.php:193
|
4417 |
+
#: lib/wordfenceClass.php:6095
|
4418 |
+
#: lib/wordfenceClass.php:6350
|
4419 |
+
#: lib/wordfenceClass.php:6385
|
4420 |
+
#: lib/wordfenceClass.php:8926
|
4421 |
msgid "Dismiss"
|
4422 |
msgstr ""
|
4423 |
|
4555 |
msgid "There was an unknown error connecting to the Wordfence scanning servers."
|
4556 |
msgstr ""
|
4557 |
|
4558 |
+
#. translators: HTTP status code.
|
4559 |
+
#: lib/wfAPI.php:163
|
4560 |
+
msgid "The Wordfence scanning servers are currently unavailable. This may be for maintenance or a temporary outage. If this still occurs in an hour, please contact support. [%s]"
|
4561 |
+
msgstr ""
|
4562 |
+
|
4563 |
#: lib/wfBulkCountries.php:5
|
4564 |
msgid "Andorra"
|
4565 |
msgstr ""
|
5649 |
msgstr ""
|
5650 |
|
5651 |
#: lib/wfConfig.php:1174
|
5652 |
+
#: lib/wordfenceClass.php:7481
|
5653 |
msgid "The grace period end time must be in the future."
|
5654 |
msgstr ""
|
5655 |
|
5687 |
msgstr ""
|
5688 |
|
5689 |
#: lib/wfConfig.php:1300
|
5690 |
+
#: lib/wordfenceClass.php:4411
|
5691 |
msgid "The license key entered is not in a valid format. It must contain only numbers and the letters A-F."
|
5692 |
msgstr ""
|
5693 |
|
5854 |
|
5855 |
#. translators: Support URL.
|
5856 |
#: lib/wfDiagnostic.php:111
|
5857 |
+
msgid "PHP version >= PHP 5.6.20<br><em> (<a href=\"https://wordpress.org/about/requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Minimum version required by WordPress</a>)</em> <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
5858 |
msgstr ""
|
5859 |
|
5860 |
#. translators: Support URL.
|
5895 |
msgstr ""
|
5896 |
|
5897 |
#: lib/wfDiagnostic.php:121
|
5898 |
+
msgid "Checking <code>display_errors</code><br><em> (<a href=\"http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors\" target=\"_blank\" rel=\"noopener noreferrer\">Should be disabled on production servers<span class=\"screen-reader-text\"> (opens in new tab)</span></a>)</em>"
|
5899 |
msgstr ""
|
5900 |
|
5901 |
#: lib/wfDiagnostic.php:125
|
5927 |
msgstr ""
|
5928 |
|
5929 |
#: lib/wfDiagnostic.php:137
|
5930 |
+
#: lib/wfDiagnostic.php:832
|
5931 |
msgid "Server Time"
|
5932 |
msgstr ""
|
5933 |
|
5940 |
msgstr ""
|
5941 |
|
5942 |
#: lib/wfDiagnostic.php:140
|
5943 |
+
msgid "NTP Status"
|
5944 |
msgstr ""
|
5945 |
|
5946 |
#: lib/wfDiagnostic.php:141
|
5947 |
+
msgid "TOTP Time Source"
|
5948 |
+
msgstr ""
|
5949 |
+
|
5950 |
+
#: lib/wfDiagnostic.php:142
|
5951 |
msgid "WordPress Time Zone"
|
5952 |
msgstr ""
|
5953 |
|
5954 |
#. translators: Number of jobs.
|
5955 |
+
#: lib/wfDiagnostic.php:199
|
5956 |
msgid "%d Job Overdue"
|
5957 |
msgid_plural "%d Jobs Overdue"
|
5958 |
msgstr[0] ""
|
5959 |
msgstr[1] ""
|
5960 |
|
5961 |
#. translators: Number of jobs.
|
5962 |
+
#: lib/wfDiagnostic.php:199
|
5963 |
msgid "Normal"
|
5964 |
msgstr ""
|
5965 |
|
5966 |
+
#: lib/wfDiagnostic.php:218
|
5967 |
+
#: lib/wfDiagnostic.php:221
|
5968 |
msgid "No files readable"
|
5969 |
msgstr ""
|
5970 |
|
5971 |
#. translators: File name.
|
5972 |
+
#: lib/wfDiagnostic.php:233
|
5973 |
+
#: lib/wfDiagnostic.php:269
|
5974 |
msgid "File \"%s\" does not exist"
|
5975 |
msgstr ""
|
5976 |
|
5977 |
#. translators: File path.
|
5978 |
+
#: lib/wfDiagnostic.php:236
|
5979 |
msgid "File \"%s\" is unreadable"
|
5980 |
msgstr ""
|
5981 |
|
5982 |
+
#: lib/wfDiagnostic.php:254
|
5983 |
+
#: lib/wfDiagnostic.php:257
|
5984 |
msgid "No files writable"
|
5985 |
msgstr ""
|
5986 |
|
5987 |
#. translators: File name.
|
5988 |
+
#: lib/wfDiagnostic.php:272
|
5989 |
msgid "File \"%s\" is unwritable"
|
5990 |
msgstr ""
|
5991 |
|
5992 |
+
#: lib/wfDiagnostic.php:342
|
5993 |
msgid "Basic config writing"
|
5994 |
msgstr ""
|
5995 |
|
5996 |
+
#: lib/wfDiagnostic.php:354
|
5997 |
msgid "Serialized config writing"
|
5998 |
msgstr ""
|
5999 |
|
6000 |
+
#: lib/wfDiagnostic.php:362
|
6001 |
msgid "(default)"
|
6002 |
msgstr ""
|
6003 |
|
6004 |
+
#: lib/wfDiagnostic.php:372
|
6005 |
+
msgid "Unknown (mixed plugin version)"
|
6006 |
+
msgstr ""
|
6007 |
+
|
6008 |
#. translators: Unix file permissions in octal (example 0777).
|
6009 |
+
#: lib/wfDiagnostic.php:404
|
6010 |
msgid "%s - using constant"
|
6011 |
msgstr ""
|
6012 |
|
6013 |
#. translators: Unix file permissions in octal (example 0777).
|
6014 |
+
#: lib/wfDiagnostic.php:417
|
6015 |
msgid "%s - using template"
|
6016 |
msgstr ""
|
6017 |
|
6018 |
+
#: lib/wfDiagnostic.php:421
|
6019 |
msgid "0660 - using default"
|
6020 |
msgstr ""
|
6021 |
|
6022 |
+
#: lib/wfDiagnostic.php:455
|
6023 |
msgid "Unavailable"
|
6024 |
msgstr ""
|
6025 |
|
6026 |
+
#: lib/wfDiagnostic.php:623
|
6027 |
+
#: lib/wfDiagnostic.php:626
|
6028 |
msgid "wp_remote_post() test to noc1.wordfence.com failed! Response was: "
|
6029 |
msgstr ""
|
6030 |
|
6031 |
+
#: lib/wfDiagnostic.php:627
|
6032 |
msgid "This likely means that your hosting provider is blocking requests to noc1.wordfence.com or has set up a proxy that is not behaving itself."
|
6033 |
msgstr ""
|
6034 |
|
6035 |
+
#: lib/wfDiagnostic.php:660
|
6036 |
+
#: lib/wfDiagnostic.php:663
|
6037 |
msgid "wp_remote_post() test back to this server failed! Response was: "
|
6038 |
msgstr ""
|
6039 |
|
6040 |
+
#: lib/wfDiagnostic.php:664
|
6041 |
msgid "This additional info may help you diagnose the issue. The response headers we received were:"
|
6042 |
msgstr ""
|
6043 |
|
6044 |
#. translators: PHP super global key.
|
6045 |
+
#: lib/wfDiagnostic.php:693
|
6046 |
msgid "We cannot read $_SERVER[%s]"
|
6047 |
msgstr ""
|
6048 |
|
6049 |
+
#: lib/wfDiagnostic.php:705
|
6050 |
msgid "Should be: "
|
6051 |
msgstr ""
|
6052 |
|
6053 |
+
#: lib/wfDiagnostic.php:786
|
6054 |
+
msgid "Disabled "
|
6055 |
+
msgstr ""
|
6056 |
+
|
6057 |
+
#: lib/wfDiagnostic.php:788
|
6058 |
+
msgid "(WORDFENCE_LS_DISABLE_NTP)"
|
6059 |
+
msgstr ""
|
6060 |
+
|
6061 |
+
#: lib/wfDiagnostic.php:791
|
6062 |
+
msgid "(failures exceeded limit)"
|
6063 |
+
msgstr ""
|
6064 |
+
|
6065 |
+
#: lib/wfDiagnostic.php:794
|
6066 |
+
msgid "(settings)"
|
6067 |
+
msgstr ""
|
6068 |
+
|
6069 |
+
#: lib/wfDiagnostic.php:801
|
6070 |
+
msgid " (%d of %d attempts remaining)"
|
6071 |
+
msgstr ""
|
6072 |
+
|
6073 |
+
#: lib/wfDiagnostic.php:818
|
6074 |
msgid "NTP"
|
6075 |
msgstr ""
|
6076 |
|
6102 |
msgid "You are temporarily locked out"
|
6103 |
msgstr ""
|
6104 |
|
6105 |
+
#: lib/wfLockedOut.php:356
|
6106 |
msgid "Your access to this site has been temporarily limited by the site owner"
|
6107 |
msgstr ""
|
6108 |
|
6109 |
+
#: lib/wfLockedOut.php:357
|
6110 |
msgid "Your access to this service has been temporarily limited. Please try again in a few minutes. (HTTP response code 503)"
|
6111 |
msgstr ""
|
6112 |
|
6113 |
+
#: lib/wfLockedOut.php:365
|
6114 |
msgid "Return to the site home page"
|
6115 |
msgstr ""
|
6116 |
|
6117 |
+
#: lib/wfLockedOut.php:366
|
6118 |
msgid "Attempt to return to the admin login page (you may still be locked out)"
|
6119 |
msgstr ""
|
6120 |
|
6121 |
+
#: lib/wfLockedOut.php:373
|
6122 |
msgid "Block Reason:"
|
6123 |
msgstr ""
|
6124 |
|
6125 |
+
#: lib/wfLockedOut.php:374
|
6126 |
msgid "You have been temporarily locked out of this system. This means that you will not be able to log in for a while."
|
6127 |
msgstr ""
|
6128 |
|
6129 |
+
#: lib/wfLockedOut.php:399
|
6130 |
+
msgid "Click here to learn more: <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Documentation<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
6131 |
+
msgstr ""
|
6132 |
+
|
6133 |
#: lib/wfLog.php:217
|
6134 |
msgid "Exceeded the maximum global requests per minute for crawlers or humans."
|
6135 |
msgstr ""
|
6189 |
msgstr ""
|
6190 |
|
6191 |
#: lib/wfLog.php:615
|
6192 |
+
#: lib/wordfenceClass.php:6133
|
6193 |
#: waf/wfWAFIPBlocksController.php:97
|
6194 |
msgid "Manual block by administrator"
|
6195 |
msgstr ""
|
6251 |
msgid "Wordfence scan script accessed directly, or WF did not receive a cronkey."
|
6252 |
msgstr ""
|
6253 |
|
6254 |
+
#. translators: 1. Unix timestamp. 2. WordPress nonce. 3. Unix timestamp.
|
6255 |
+
#: lib/wfScan.php:77
|
6256 |
+
msgid "The key used to start a scan expired. The value is: %1$s and split is: %2$s and time is: %3$d"
|
6257 |
+
msgstr ""
|
6258 |
+
|
6259 |
#: lib/wfScan.php:81
|
6260 |
msgid "Wordfence could not find a saved cron key to start the scan so assuming it started and exiting."
|
6261 |
msgstr ""
|
6318 |
msgid "Contacting Wordfence to initiate scan"
|
6319 |
msgstr ""
|
6320 |
|
6321 |
+
#. translators: Time until.
|
6322 |
+
#: lib/wfScan.php:181
|
6323 |
+
msgid "Deferring scheduled scan by %s"
|
6324 |
+
msgstr ""
|
6325 |
+
|
6326 |
#: lib/wfScan.php:202
|
6327 |
msgid "Initiating quick scan"
|
6328 |
msgstr ""
|
6335 |
#: lib/wfScan.php:263
|
6336 |
#: lib/wfScan.php:278
|
6337 |
#: lib/wfScan.php:293
|
6338 |
+
#: lib/wfScanEngine.php:441
|
6339 |
msgid "Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s"
|
6340 |
msgstr ""
|
6341 |
|
6368 |
|
6369 |
#. translators: 1. Time duration. 2. Support URL.
|
6370 |
#: lib/wfScanEngine.php:278
|
6371 |
+
msgid "The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
|
6372 |
msgstr ""
|
6373 |
|
6374 |
#: lib/wfScanEngine.php:282
|
6381 |
msgstr ""
|
6382 |
|
6383 |
#. translators: Number of scan results.
|
6384 |
+
#: lib/wfScanEngine.php:299
|
6385 |
msgid "Scan interrupted. You have %d new issue to fix. See below."
|
6386 |
msgid_plural "Scan interrupted. You have %d new issues to fix. See below."
|
6387 |
msgstr[0] ""
|
6388 |
msgstr[1] ""
|
6389 |
|
6390 |
+
#: lib/wfScanEngine.php:308
|
6391 |
msgid "Scan interrupted. No problems found prior to stopping."
|
6392 |
msgstr ""
|
6393 |
|
6394 |
#. translators: 1. Software version. 2. Software version.
|
6395 |
+
#: lib/wfScanEngine.php:320
|
6396 |
msgid "Aborting scan because WordPress updated from version %1$s to %2$s. The scan will be reattempted later."
|
6397 |
msgstr ""
|
6398 |
|
6399 |
+
#: lib/wfScanEngine.php:350
|
6400 |
msgid "Forking during hash scan to ensure continuity."
|
6401 |
msgstr ""
|
6402 |
|
6403 |
+
#: lib/wfScanEngine.php:356
|
6404 |
msgid "Entered fork()"
|
6405 |
msgstr ""
|
6406 |
|
6407 |
+
#: lib/wfScanEngine.php:359
|
6408 |
msgid "Calling startScan(true)"
|
6409 |
msgstr ""
|
6410 |
|
6411 |
#. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration.
|
6412 |
+
#: lib/wfScanEngine.php:449
|
6413 |
msgid "Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s."
|
6414 |
msgstr ""
|
6415 |
|
6416 |
#. translators: 1. Time duration.
|
6417 |
+
#: lib/wfScanEngine.php:461
|
6418 |
msgid "Quick Scan Complete. Scanned in %s."
|
6419 |
msgstr ""
|
6420 |
|
6421 |
#. translators: Number of scan results.
|
6422 |
+
#: lib/wfScanEngine.php:470
|
6423 |
msgid "%d ignored issue was also detected."
|
6424 |
msgid_plural "%d ignored issues were also detected."
|
6425 |
msgstr[0] ""
|
6426 |
msgstr[1] ""
|
6427 |
|
6428 |
#. translators: Number of scan results.
|
6429 |
+
#: lib/wfScanEngine.php:481
|
6430 |
msgid "Scan complete. You have %d new issue to fix."
|
6431 |
msgid_plural "Scan complete. You have %d new issues to fix."
|
6432 |
msgstr[0] ""
|
6433 |
msgstr[1] ""
|
6434 |
|
6435 |
+
#: lib/wfScanEngine.php:489
|
6436 |
msgid "See below."
|
6437 |
msgstr ""
|
6438 |
|
6439 |
+
#: lib/wfScanEngine.php:492
|
6440 |
msgid "Scan complete. Congratulations, no new problems found."
|
6441 |
msgstr ""
|
6442 |
|
6443 |
+
#: lib/wfScanEngine.php:503
|
6444 |
msgid "Checking if your site IP is generating spam"
|
6445 |
msgstr ""
|
6446 |
|
6447 |
+
#: lib/wfScanEngine.php:522
|
6448 |
msgid "Checking if your IP is generating spam is for paid members only"
|
6449 |
msgstr ""
|
6450 |
|
6451 |
+
#: lib/wfScanEngine.php:529
|
6452 |
msgid "Checking if your site is on a domain blocklist"
|
6453 |
msgstr ""
|
6454 |
|
6455 |
+
#: lib/wfScanEngine.php:534
|
6456 |
msgid "Checking if your site is on a domain blocklist is for paid members only"
|
6457 |
msgstr ""
|
6458 |
|
6459 |
#. translators: Error message.
|
6460 |
+
#: lib/wfScanEngine.php:570
|
6461 |
msgid "Error checking domain blocklists: %s"
|
6462 |
msgstr ""
|
6463 |
|
6464 |
#. translators: WordPress site ID.
|
6465 |
+
#: lib/wfScanEngine.php:604
|
6466 |
msgid "The multisite blog with ID %d is listed on Google's Safe Browsing malware list."
|
6467 |
msgstr ""
|
6468 |
|
6469 |
+
#: lib/wfScanEngine.php:607
|
6470 |
msgid "Your site is listed on Google's Safe Browsing malware list."
|
6471 |
msgstr ""
|
6472 |
|
6473 |
#. translators: 1. URL. 2. URL.
|
6474 |
+
#: lib/wfScanEngine.php:611
|
6475 |
+
msgid "The URL %1$s is on the malware list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
|
6476 |
msgstr ""
|
6477 |
|
6478 |
#. translators: WordPress site ID.
|
6479 |
+
#: lib/wfScanEngine.php:617
|
6480 |
msgid "The multisite blog with ID %d is listed on Google's Safe Browsing phishing list."
|
6481 |
msgstr ""
|
6482 |
|
6483 |
+
#: lib/wfScanEngine.php:620
|
6484 |
msgid "Your site is listed on Google's Safe Browsing phishing list."
|
6485 |
msgstr ""
|
6486 |
|
6487 |
#. translators: 1. URL. 2. URL.
|
6488 |
+
#: lib/wfScanEngine.php:624
|
6489 |
+
msgid "The URL %1$s is on the phishing list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
|
6490 |
msgstr ""
|
6491 |
|
6492 |
#. translators: WordPress site ID.
|
6493 |
+
#: lib/wfScanEngine.php:630
|
6494 |
msgid "The multisite blog with ID %d is listed on the Wordfence domain blocklist."
|
6495 |
msgstr ""
|
6496 |
|
6497 |
+
#: lib/wfScanEngine.php:633
|
6498 |
msgid "Your site is listed on the Wordfence domain blocklist."
|
6499 |
msgstr ""
|
6500 |
|
6501 |
#. translators: URL.
|
6502 |
+
#: lib/wfScanEngine.php:637
|
6503 |
msgid "The URL %s is on the blocklist."
|
6504 |
msgstr ""
|
6505 |
|
6506 |
#. translators: WordPress site ID.
|
6507 |
+
#: lib/wfScanEngine.php:643
|
6508 |
msgid "The multisite blog with ID %d is listed on a domain blocklist."
|
6509 |
msgstr ""
|
6510 |
|
6511 |
+
#: lib/wfScanEngine.php:646
|
6512 |
msgid "Your site is listed on a domain blocklist."
|
6513 |
msgstr ""
|
6514 |
|
6515 |
#. translators: URL.
|
6516 |
+
#: lib/wfScanEngine.php:648
|
6517 |
msgid "The URL is: %s"
|
6518 |
msgstr ""
|
6519 |
|
6520 |
+
#: lib/wfScanEngine.php:668
|
6521 |
msgid "Checking for the most secure way to get IPs"
|
6522 |
msgstr ""
|
6523 |
|
6524 |
+
#: lib/wfScanEngine.php:695
|
6525 |
msgid "Unable to accurately detect IPs"
|
6526 |
msgstr ""
|
6527 |
|
6528 |
#. translators: Support URL.
|
6529 |
+
#: lib/wfScanEngine.php:696
|
6530 |
+
msgid "Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
|
6531 |
msgstr ""
|
6532 |
|
6533 |
+
#: lib/wfScanEngine.php:706
|
6534 |
+
#: lib/wordfenceClass.php:6327
|
6535 |
msgid "For maximum security use PHP's built in REMOTE_ADDR."
|
6536 |
msgstr ""
|
6537 |
|
6538 |
+
#: lib/wfScanEngine.php:708
|
6539 |
+
#: lib/wordfenceClass.php:6330
|
6540 |
msgid "This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs."
|
6541 |
msgstr ""
|
6542 |
|
6543 |
+
#: lib/wfScanEngine.php:710
|
6544 |
+
#: lib/wordfenceClass.php:6333
|
6545 |
msgid "This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs."
|
6546 |
msgstr ""
|
6547 |
|
6548 |
+
#: lib/wfScanEngine.php:712
|
6549 |
+
#: lib/wordfenceClass.php:6336
|
6550 |
msgid "This site appears to be behind Cloudflare, so using the Cloudflare \"CF-Connecting-IP\" HTTP header will resolve to the correct IPs."
|
6551 |
msgstr ""
|
6552 |
|
6553 |
+
#: lib/wfScanEngine.php:716
|
6554 |
msgid "'How does Wordfence get IPs' is misconfigured"
|
6555 |
msgstr ""
|
6556 |
|
6557 |
#. translators: Support URL.
|
6558 |
+
#: lib/wfScanEngine.php:719
|
6559 |
+
msgid "A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
|
6560 |
msgstr ""
|
6561 |
|
6562 |
+
#: lib/wfScanEngine.php:740
|
6563 |
msgid "Check for publicly accessible configuration files, backup files and logs"
|
6564 |
msgstr ""
|
6565 |
|
6566 |
#. translators: File path.
|
6567 |
+
#: lib/wfScanEngine.php:791
|
6568 |
msgid "Publicly accessible config, backup, or log file found: %s"
|
6569 |
msgstr ""
|
6570 |
|
6571 |
#. translators: 1. URL to publicly accessible file. 2. Support URL.
|
6572 |
+
#: lib/wfScanEngine.php:794
|
6573 |
+
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn more<span class=\"screen-reader-text\"> ("
|
6574 |
msgstr ""
|
6575 |
|
6576 |
+
#: lib/wfScanEngine.php:823
|
6577 |
msgid "Checking if your server discloses the path to the document root"
|
6578 |
msgstr ""
|
6579 |
|
6580 |
+
#: lib/wfScanEngine.php:833
|
6581 |
msgid "Web server exposes the document root"
|
6582 |
msgstr ""
|
6583 |
|
6584 |
+
#: lib/wfScanEngine.php:834
|
6585 |
msgid "Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view."
|
6586 |
msgstr ""
|
6587 |
|
6588 |
+
#: lib/wfScanEngine.php:860
|
6589 |
msgid "Directory listing is enabled"
|
6590 |
msgstr ""
|
6591 |
|
6592 |
+
#: lib/wfScanEngine.php:861
|
6593 |
msgid "Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed."
|
6594 |
msgstr ""
|
6595 |
|
6596 |
+
#: lib/wfScanEngine.php:877
|
6597 |
msgid "Checking if your site is being Spamvertised"
|
6598 |
msgstr ""
|
6599 |
|
6600 |
+
#: lib/wfScanEngine.php:896
|
6601 |
msgid "Check if your site is being Spamvertized is for paid members only"
|
6602 |
msgstr ""
|
6603 |
|
6604 |
+
#: lib/wfScanEngine.php:917
|
6605 |
msgid "Wordfence could not read the contents of your base WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory."
|
6606 |
msgstr ""
|
6607 |
|
6608 |
+
#: lib/wfScanEngine.php:954
|
6609 |
msgid "Checking for paths skipped due to scan settings"
|
6610 |
msgstr ""
|
6611 |
|
6612 |
#. translators: Number of paths skipped in scan.
|
6613 |
+
#: lib/wfScanEngine.php:967
|
6614 |
msgid ", and %d more."
|
6615 |
msgstr ""
|
6616 |
|
6617 |
#. translators: Number of paths skipped in scan.
|
6618 |
+
#: lib/wfScanEngine.php:991
|
6619 |
msgid "%d path was skipped for the malware scan due to scan settings"
|
6620 |
msgid_plural "%d paths were skipped for the malware scan due to scan settings"
|
6621 |
msgstr[0] ""
|
6622 |
msgstr[1] ""
|
6623 |
|
6624 |
#. translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths.
|
6625 |
+
#: lib/wfScanEngine.php:994
|
6626 |
+
msgid "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
6627 |
+
msgid_plural "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
6628 |
msgstr[0] ""
|
6629 |
msgstr[1] ""
|
6630 |
|
6631 |
+
#: lib/wfScanEngine.php:1022
|
6632 |
msgid "Including files that are outside the WordPress installation in the scan."
|
6633 |
msgstr ""
|
6634 |
|
6635 |
+
#: lib/wfScanEngine.php:1025
|
6636 |
msgid "Getting plugin list from WordPress"
|
6637 |
msgstr ""
|
6638 |
|
6639 |
#. translators: Number of plugins.
|
6640 |
+
#: lib/wfScanEngine.php:1027
|
6641 |
msgid "Found %d plugin"
|
6642 |
msgid_plural "Found %d plugins"
|
6643 |
msgstr[0] ""
|
6644 |
msgstr[1] ""
|
6645 |
|
6646 |
+
#: lib/wfScanEngine.php:1029
|
6647 |
msgid "Getting theme list from WordPress"
|
6648 |
msgstr ""
|
6649 |
|
6650 |
#. translators: Number of themes.
|
6651 |
+
#: lib/wfScanEngine.php:1031
|
6652 |
msgid "Found %d theme"
|
6653 |
msgid_plural "Found %d themes"
|
6654 |
msgstr[0] ""
|
6655 |
msgstr[1] ""
|
6656 |
|
6657 |
+
#: lib/wfScanEngine.php:1048
|
6658 |
msgid "Scanning file contents for infections and vulnerabilities"
|
6659 |
msgstr ""
|
6660 |
|
6661 |
+
#: lib/wfScanEngine.php:1051
|
6662 |
msgid "Skipping scan of file contents for infections and vulnerabilities"
|
6663 |
msgstr ""
|
6664 |
|
6665 |
+
#: lib/wfScanEngine.php:1055
|
6666 |
msgid "Scanning file contents for URLs on a domain blocklist"
|
6667 |
msgstr ""
|
6668 |
|
6669 |
+
#: lib/wfScanEngine.php:1058
|
6670 |
msgid "Skipping scan of file contents for URLs on a domain blocklist"
|
6671 |
msgstr ""
|
6672 |
|
6673 |
+
#: lib/wfScanEngine.php:1063
|
6674 |
msgid "Starting scan of file contents"
|
6675 |
msgstr ""
|
6676 |
|
6677 |
+
#: lib/wfScanEngine.php:1079
|
6678 |
msgid "Done file contents scan"
|
6679 |
msgstr ""
|
6680 |
|
6681 |
#. translators: Scan result description.
|
6682 |
+
#: lib/wfScanEngine.php:1087
|
6683 |
+
#: lib/wfScanEngine.php:2256
|
6684 |
+
#: lib/wfScanEngine.php:2298
|
6685 |
msgid "Adding issue: %s"
|
6686 |
msgstr ""
|
6687 |
|
6688 |
+
#: lib/wfScanEngine.php:1120
|
6689 |
msgid "Scanning for publicly accessible quarantined files"
|
6690 |
msgstr ""
|
6691 |
|
6692 |
#. translators: File path.
|
6693 |
+
#: lib/wfScanEngine.php:1125
|
6694 |
msgid "Testing accessibility of: %s"
|
6695 |
msgstr ""
|
6696 |
|
6697 |
#. translators: File path.
|
6698 |
+
#: lib/wfScanEngine.php:1134
|
6699 |
msgid "Publicly accessible quarantined file found: %s"
|
6700 |
msgstr ""
|
6701 |
|
6702 |
#. translators: URL to publicly accessible file.
|
6703 |
+
#: lib/wfScanEngine.php:1137
|
6704 |
+
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s<span class=\"screen-reader-text\"> ("
|
6705 |
msgstr ""
|
6706 |
|
6707 |
+
#: lib/wfScanEngine.php:1161
|
6708 |
msgid "Scanning posts for URLs on a domain blocklist"
|
6709 |
msgstr ""
|
6710 |
|
6711 |
#. translators: Number of posts left to scan.
|
6712 |
+
#: lib/wfScanEngine.php:1184
|
6713 |
msgid "Scanning posts with %d left to scan."
|
6714 |
msgstr ""
|
6715 |
|
6716 |
+
#: lib/wfScanEngine.php:1206
|
6717 |
msgid "Post title contains suspicious code"
|
6718 |
msgstr ""
|
6719 |
|
6720 |
+
#: lib/wfScanEngine.php:1207
|
6721 |
msgid "This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious."
|
6722 |
msgstr ""
|
6723 |
|
6724 |
+
#: lib/wfScanEngine.php:1230
|
6725 |
msgid "Examining URLs found in posts we scanned for dangerous websites"
|
6726 |
msgstr ""
|
6727 |
|
6728 |
+
#: lib/wfScanEngine.php:1232
|
6729 |
+
#: lib/wfScanEngine.php:2219
|
6730 |
msgid "Done examining URLs"
|
6731 |
msgstr ""
|
6732 |
|
6733 |
#. translators: 1. WordPress Post type. 2. URL.
|
6734 |
+
#: lib/wfScanEngine.php:1268
|
6735 |
+
#: lib/wfScanEngine.php:1288
|
6736 |
msgid "%1$s contains a suspected malware URL: %2$s"
|
6737 |
msgstr ""
|
6738 |
|
6739 |
#. translators: 1. WordPress Post type. 2. URL. 3. URL.
|
6740 |
+
#. translators: 1. WordPress post type. 2. URL. 3. URL.
|
6741 |
+
#: lib/wfScanEngine.php:1274
|
6742 |
+
#: lib/wfScanEngine.php:1417
|
6743 |
+
msgid "This %1$s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
|
6744 |
msgstr ""
|
6745 |
|
6746 |
#. translators: 1. WordPress Post type. 2. URL.
|
6747 |
+
#: lib/wfScanEngine.php:1280
|
6748 |
msgid "%1$s contains a suspected phishing site URL: %2$s"
|
6749 |
msgstr ""
|
6750 |
|
6751 |
#. translators: 1. WordPress Post type. 2. URL.
|
6752 |
#. translators: 1. WordPress post type. 2. URL.
|
6753 |
+
#: lib/wfScanEngine.php:1283
|
6754 |
+
#: lib/wfScanEngine.php:1426
|
6755 |
msgid "This %1$s contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: %2$s"
|
6756 |
msgstr ""
|
6757 |
|
6758 |
#. translators: 1. WordPress Post type. 2. URL.
|
6759 |
#. translators: 1. WordPress post type. 2. URL.
|
6760 |
+
#: lib/wfScanEngine.php:1291
|
6761 |
+
#: lib/wfScanEngine.php:1434
|
6762 |
msgid "This %1$s contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: %2$s"
|
6763 |
msgstr ""
|
6764 |
|
6765 |
#. translators: Scan result description.
|
6766 |
+
#: lib/wfScanEngine.php:1300
|
6767 |
msgid "Adding issue: %1$s"
|
6768 |
msgstr ""
|
6769 |
|
6770 |
+
#: lib/wfScanEngine.php:1336
|
6771 |
msgid "Scanning comments for URLs on a domain blocklist"
|
6772 |
msgstr ""
|
6773 |
|
6774 |
#. translators: Number of comments left to scan.
|
6775 |
+
#: lib/wfScanEngine.php:1360
|
6776 |
msgid "Scanning comments with %d left to scan."
|
6777 |
msgstr ""
|
6778 |
|
6779 |
#. translators: 1. WordPress post type. 2. WordPress author username.
|
6780 |
+
#: lib/wfScanEngine.php:1414
|
6781 |
msgid "%1$s with author %2$s contains a suspected malware URL."
|
6782 |
msgstr ""
|
6783 |
|
|
|
|
|
|
|
|
|
|
|
6784 |
#. translators: WordPress post type.
|
6785 |
+
#: lib/wfScanEngine.php:1423
|
6786 |
msgid "%s contains a suspected phishing site URL."
|
6787 |
msgstr ""
|
6788 |
|
6789 |
#. translators: URL.
|
6790 |
+
#: lib/wfScanEngine.php:1431
|
6791 |
msgid "%s contains a suspected malware URL."
|
6792 |
msgstr ""
|
6793 |
|
6794 |
#. translators: WordPress username.
|
6795 |
+
#: lib/wfScanEngine.php:1479
|
6796 |
msgid "Author: %s"
|
6797 |
msgstr ""
|
6798 |
|
6799 |
#. translators: Email address.
|
6800 |
+
#: lib/wfScanEngine.php:1482
|
6801 |
msgid "Email: %s"
|
6802 |
msgstr ""
|
6803 |
|
6804 |
#. translators: IP address.
|
6805 |
+
#: lib/wfScanEngine.php:1484
|
6806 |
msgid "Source IP: %s"
|
6807 |
msgstr ""
|
6808 |
|
6809 |
#. translators: Comment description.
|
6810 |
+
#: lib/wfScanEngine.php:1485
|
6811 |
msgid "Scanning comment with %s"
|
6812 |
msgstr ""
|
6813 |
|
6814 |
#. translators: Comment description.
|
6815 |
+
#: lib/wfScanEngine.php:1498
|
6816 |
+
#: lib/wfScanEngine.php:1504
|
6817 |
msgid "Marking comment as spam for containing a malware URL. Comment has %s"
|
6818 |
msgstr ""
|
6819 |
|
6820 |
#. translators: Comment description.
|
6821 |
+
#: lib/wfScanEngine.php:1501
|
6822 |
msgid "Marking comment as spam for containing a phishing URL. Comment has %s"
|
6823 |
msgstr ""
|
6824 |
|
6825 |
#. translators: Comment description.
|
6826 |
+
#: lib/wfScanEngine.php:1511
|
6827 |
msgid "Scanned comment with %s"
|
6828 |
msgstr ""
|
6829 |
|
6830 |
+
#: lib/wfScanEngine.php:1562
|
6831 |
msgid "Scanning for weak passwords"
|
6832 |
msgstr ""
|
6833 |
|
6834 |
+
#: lib/wfScanEngine.php:1573
|
6835 |
msgid "We were unable to generate the user list for your password check."
|
6836 |
msgstr ""
|
6837 |
|
6838 |
#. translators: Number of users.
|
6839 |
+
#: lib/wfScanEngine.php:1589
|
6840 |
msgid "Starting password strength check on %d user."
|
6841 |
msgid_plural "Starting password strength check on %d users."
|
6842 |
msgstr[0] ""
|
6843 |
msgstr[1] ""
|
6844 |
|
6845 |
#. translators: Number of users.
|
6846 |
+
#: lib/wfScanEngine.php:1598
|
6847 |
msgid "Total of %d users left to process in password strength check."
|
6848 |
msgid_plural "Total of %d users left to process in password strength check."
|
6849 |
msgstr[0] ""
|
6850 |
msgstr[1] ""
|
6851 |
|
6852 |
#. translators: WordPress user ID.
|
6853 |
+
#: lib/wfScanEngine.php:1633
|
6854 |
msgid "Could not get username for user with ID %d when checking password strength."
|
6855 |
msgstr ""
|
6856 |
|
6857 |
#. translators: 1. WordPress username. 2. WordPress user ID.
|
6858 |
+
#: lib/wfScanEngine.php:1639
|
6859 |
msgid "Checking password strength of user '%1$s' with ID %2$d"
|
6860 |
msgstr ""
|
6861 |
|
6862 |
#. translators: 1. WordPress username. 2. WordPress capability.
|
6863 |
+
#: lib/wfScanEngine.php:1647
|
6864 |
msgid "User \"%1$s\" with \"%2$s\" access has an easy password."
|
6865 |
msgstr ""
|
6866 |
|
6867 |
#. translators: WordPress capability.
|
6868 |
+
#: lib/wfScanEngine.php:1653
|
6869 |
msgid "A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it."
|
6870 |
msgstr ""
|
6871 |
|
6872 |
#. translators: WordPress username.
|
6873 |
+
#: lib/wfScanEngine.php:1661
|
6874 |
msgid "User \"%s\" with 'subscriber' access has a very easy password."
|
6875 |
msgstr ""
|
6876 |
|
6877 |
+
#: lib/wfScanEngine.php:1662
|
6878 |
msgid "A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password."
|
6879 |
msgstr ""
|
6880 |
|
6881 |
#. translators: Scan result description.
|
6882 |
+
#: lib/wfScanEngine.php:1669
|
6883 |
msgid "Adding issue %s"
|
6884 |
msgstr ""
|
6885 |
|
6886 |
#. translators: WordPress username.
|
6887 |
+
#: lib/wfScanEngine.php:1686
|
6888 |
msgid "Completed checking password strength of user '%s'"
|
6889 |
msgstr ""
|
6890 |
|
6891 |
+
#: lib/wfScanEngine.php:1719
|
6892 |
msgid "Scanning to check available disk space"
|
6893 |
msgstr ""
|
6894 |
|
6895 |
+
#: lib/wfScanEngine.php:1726
|
6896 |
msgid "Unable to access available disk space information"
|
6897 |
msgstr ""
|
6898 |
|
6899 |
#. translators: 1. Number of bytes. 2. Number of bytes.
|
6900 |
+
#: lib/wfScanEngine.php:1735
|
6901 |
msgid "Total disk space: %1$s -- Free disk space: %2$s"
|
6902 |
msgstr ""
|
6903 |
|
6904 |
#. translators: Number of bytes.
|
6905 |
+
#: lib/wfScanEngine.php:1740
|
6906 |
msgid "The disk has %s MB available"
|
6907 |
msgstr ""
|
6908 |
|
6909 |
#. translators: Number of bytes.
|
6910 |
+
#: lib/wfScanEngine.php:1755
|
6911 |
msgid "You have %s disk space remaining"
|
6912 |
msgstr ""
|
6913 |
|
6914 |
#. translators: Number of bytes.
|
6915 |
+
#: lib/wfScanEngine.php:1756
|
6916 |
msgid "You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests."
|
6917 |
msgstr ""
|
6918 |
|
6919 |
+
#: lib/wfScanEngine.php:1769
|
6920 |
msgid "Checking Web Application Firewall status"
|
6921 |
msgstr ""
|
6922 |
|
6923 |
+
#: lib/wfScanEngine.php:1780
|
6924 |
msgid "Web Application Firewall is disabled"
|
6925 |
msgstr ""
|
6926 |
|
6927 |
#. translators: Support URL.
|
6928 |
+
#: lib/wfScanEngine.php:1781
|
6929 |
+
msgid "Wordfence's Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says \"The Wordfence Web Application Firewall cannot run,\" click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">More Details<span class=\"screen-reader-text\"> ("
|
6930 |
msgstr ""
|
6931 |
|
6932 |
+
#: lib/wfScanEngine.php:1796
|
6933 |
msgid "Scanning for old themes, plugins and core files"
|
6934 |
msgstr ""
|
6935 |
|
6936 |
+
#: lib/wfScanEngine.php:1882
|
6937 |
msgid "Your WordPress version is out of date"
|
6938 |
msgstr ""
|
6939 |
|
6940 |
#. translators: Software version.
|
6941 |
+
#: lib/wfScanEngine.php:1883
|
6942 |
msgid "WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress."
|
6943 |
msgstr ""
|
6944 |
|
6945 |
#. translators: 1. Plugin name. 2. Software version. 3. Software version.
|
6946 |
+
#: lib/wfScanEngine.php:1910
|
6947 |
msgid "The Plugin \"%1$s\" needs an upgrade (%2$s -> %3$s)."
|
6948 |
msgstr ""
|
6949 |
|
6950 |
#. translators: Theme name.
|
6951 |
+
#: lib/wfScanEngine.php:1917
|
6952 |
+
#: lib/wfScanEngine.php:1951
|
6953 |
msgid "You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released."
|
6954 |
msgstr ""
|
6955 |
|
6956 |
#. translators: 1. Theme name. 2. Software version. 3. Software version.
|
6957 |
+
#: lib/wfScanEngine.php:1944
|
6958 |
msgid "The Theme \"%1$s\" needs an upgrade (%2$s -> %3$s)."
|
6959 |
msgstr ""
|
6960 |
|
6961 |
#. translators: 1. Plugin name. 2. Software version. 3. Software version.
|
6962 |
+
#: lib/wfScanEngine.php:1995
|
6963 |
msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s, tested to WP %3$s)."
|
6964 |
msgstr ""
|
6965 |
|
6966 |
#. translators: 1. Plugin name. 2. Software version.
|
6967 |
+
#: lib/wfScanEngine.php:2002
|
6968 |
msgid "It was last updated %1$s ago and tested up to WordPress %2$s."
|
6969 |
msgstr ""
|
6970 |
|
6971 |
#. translators: 1. Plugin name. 2. Software version.
|
6972 |
+
#: lib/wfScanEngine.php:2009
|
6973 |
msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s)."
|
6974 |
msgstr ""
|
6975 |
|
6976 |
#. translators: Time duration.
|
6977 |
+
#: lib/wfScanEngine.php:2015
|
6978 |
msgid "It was last updated %s ago."
|
6979 |
msgstr ""
|
6980 |
|
6981 |
+
#: lib/wfScanEngine.php:2021
|
6982 |
+
#: lib/wfScanEngine.php:2060
|
6983 |
msgid "It has unpatched security issues and may have compatibility problems with the current version of WordPress."
|
6984 |
msgstr ""
|
6985 |
|
6986 |
+
#: lib/wfScanEngine.php:2023
|
6987 |
+
#: lib/wfScanEngine.php:2062
|
6988 |
msgid "Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin."
|
6989 |
msgstr ""
|
6990 |
|
6991 |
#. translators: Support URL.
|
6992 |
+
#: lib/wfScanEngine.php:2027
|
6993 |
+
#: lib/wfScanEngine.php:2066
|
6994 |
+
#: lib/wfScanEngine.php:2254
|
6995 |
+
#: lib/wfScanEngine.php:2296
|
6996 |
+
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information.<span class=\"screen-reader-text\"> ("
|
6997 |
msgstr ""
|
6998 |
|
6999 |
#. translators: Plugin name.
|
7000 |
+
#: lib/wfScanEngine.php:2058
|
7001 |
msgid "The Plugin \"%s\" has been removed from wordpress.org."
|
7002 |
msgstr ""
|
7003 |
|
7004 |
+
#: lib/wfScanEngine.php:2111
|
7005 |
msgid "Scanning for admin users not created through WordPress"
|
7006 |
msgstr ""
|
7007 |
|
7008 |
#. translators: WordPress username.
|
7009 |
+
#: lib/wfScanEngine.php:2133
|
7010 |
msgid "An admin user with the username %s was created outside of WordPress."
|
7011 |
msgstr ""
|
7012 |
|
7013 |
#. translators: WordPress username.
|
7014 |
+
#: lib/wfScanEngine.php:2134
|
7015 |
msgid "An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
|
7016 |
msgstr ""
|
7017 |
|
7018 |
#. translators: WordPress username.
|
7019 |
+
#: lib/wfScanEngine.php:2160
|
7020 |
msgid "An admin user with a suspicious username %s was found."
|
7021 |
msgstr ""
|
7022 |
|
7023 |
#. translators: WordPress username.
|
7024 |
+
#: lib/wfScanEngine.php:2161
|
7025 |
msgid "An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
|
7026 |
msgstr ""
|
7027 |
|
7028 |
+
#: lib/wfScanEngine.php:2182
|
7029 |
msgid "Scanning for suspicious site options"
|
7030 |
msgstr ""
|
7031 |
|
7032 |
+
#: lib/wfScanEngine.php:2217
|
7033 |
msgid "Examining URLs found in the options we scanned for dangerous websites"
|
7034 |
msgstr ""
|
7035 |
|
7036 |
#. translators: URL.
|
7037 |
+
#: lib/wfScanEngine.php:2241
|
7038 |
+
#: lib/wfScanEngine.php:2247
|
7039 |
msgid "Option contains a suspected malware URL: %s"
|
7040 |
msgstr ""
|
7041 |
|
7042 |
#. translators: URL.
|
7043 |
+
#: lib/wfScanEngine.php:2242
|
7044 |
msgid "This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s"
|
7045 |
msgstr ""
|
7046 |
|
7047 |
#. translators: URL.
|
7048 |
+
#: lib/wfScanEngine.php:2244
|
7049 |
msgid "Option contains a suspected phishing site URL: %s"
|
7050 |
msgstr ""
|
7051 |
|
7052 |
#. translators: URL.
|
7053 |
+
#: lib/wfScanEngine.php:2245
|
7054 |
msgid "This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s"
|
7055 |
msgstr ""
|
7056 |
|
7057 |
#. translators: URL.
|
7058 |
+
#: lib/wfScanEngine.php:2248
|
7059 |
msgid "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s"
|
7060 |
msgstr ""
|
7061 |
|
7062 |
+
#: lib/wfScanEngine.php:2288
|
7063 |
msgid "Checking for future GeoIP support"
|
7064 |
msgstr ""
|
7065 |
|
7066 |
+
#: lib/wfScanEngine.php:2293
|
7067 |
msgid "PHP Update Needed for Country Blocking"
|
7068 |
msgstr ""
|
7069 |
|
7070 |
#. translators: Software version.
|
7071 |
+
#: lib/wfScanEngine.php:2294
|
7072 |
msgid "The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP."
|
7073 |
msgstr ""
|
7074 |
|
7075 |
+
#: lib/wfScanEngine.php:2343
|
7076 |
msgid "Previous scan was stopped successfully."
|
7077 |
msgstr ""
|
7078 |
|
7079 |
+
#: lib/wfScanEngine.php:2344
|
7080 |
msgid "Scan was stopped on administrator request."
|
7081 |
msgstr ""
|
7082 |
|
7083 |
+
#: lib/wfScanEngine.php:2360
|
7084 |
msgid "Entering start scan routine"
|
7085 |
msgstr ""
|
7086 |
|
7087 |
+
#: lib/wfScanEngine.php:2363
|
7088 |
msgid "A scan is already running. Use the stop scan button if you would like to terminate the current scan."
|
7089 |
msgstr ""
|
7090 |
|
7091 |
#. translators: Support URL.
|
7092 |
+
#: lib/wfScanEngine.php:2381
|
7093 |
msgid "Test result of scan start URL fetch: %s"
|
7094 |
msgstr ""
|
7095 |
|
7096 |
#. translators: WordPress admin panel URL.
|
7097 |
+
#: lib/wfScanEngine.php:2390
|
7098 |
msgid "Starting cron with normal ajax at URL %s"
|
7099 |
msgstr ""
|
7100 |
|
7101 |
#. translators: Error message.
|
7102 |
#. translators: WordPress admin panel URL.
|
7103 |
+
#: lib/wfScanEngine.php:2412
|
7104 |
+
#: lib/wfScanEngine.php:2447
|
7105 |
msgid "There was an error starting the scan: %s."
|
7106 |
msgstr ""
|
7107 |
|
7108 |
+
#: lib/wfScanEngine.php:2414
|
7109 |
+
#: lib/wfScanEngine.php:2449
|
7110 |
msgid "There was an unknown error starting the scan."
|
7111 |
msgstr ""
|
7112 |
|
7113 |
+
#: lib/wfScanEngine.php:2421
|
7114 |
+
#: lib/wfScanEngine.php:2455
|
7115 |
msgid "Scan process ended after forking."
|
7116 |
msgstr ""
|
7117 |
|
7118 |
#. translators: WordPress admin panel URL.
|
7119 |
+
#: lib/wfScanEngine.php:2425
|
7120 |
msgid "Starting cron via proxy at URL %s"
|
7121 |
msgstr ""
|
7122 |
|
7123 |
#. translators: Time in seconds.
|
7124 |
+
#: lib/wfScanEngine.php:2501
|
7125 |
msgid "Got value from wf config maxExecutionTime: %s"
|
7126 |
msgstr ""
|
7127 |
|
7128 |
#. translators: Time in seconds.
|
7129 |
+
#: lib/wfScanEngine.php:2505
|
7130 |
msgid "getMaxExecutionTime() returning config value: %s"
|
7131 |
msgstr ""
|
7132 |
|
7133 |
#. translators: PHP ini value.
|
7134 |
+
#: lib/wfScanEngine.php:2512
|
7135 |
msgid "Got max_execution_time value from ini: %s"
|
7136 |
msgstr ""
|
7137 |
|
7138 |
#. translators: 1. PHP ini setting. 2. Time in seconds.
|
7139 |
+
#: lib/wfScanEngine.php:2519
|
7140 |
msgid "ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing"
|
7141 |
msgstr ""
|
7142 |
|
7143 |
#. translators: PHP ini setting.
|
7144 |
+
#: lib/wfScanEngine.php:2529
|
7145 |
msgid "getMaxExecutionTime() returning half ini value: %d"
|
7146 |
msgstr ""
|
7147 |
|
7148 |
+
#: lib/wfScanEngine.php:2535
|
7149 |
msgid "getMaxExecutionTime() returning default of: 15"
|
7150 |
msgstr ""
|
7151 |
|
7152 |
#. translators: 1. HTTP status code.
|
7153 |
+
#: lib/wfScanEngine.php:2737
|
7154 |
msgid "Got error response from Wordfence servers: %s"
|
7155 |
msgstr ""
|
7156 |
|
7157 |
+
#: lib/wfScanEngine.php:2741
|
7158 |
msgid "Invalid response from Wordfence servers."
|
7159 |
msgstr ""
|
7160 |
|
7317 |
msgid "File last modified:"
|
7318 |
msgstr ""
|
7319 |
|
7320 |
+
#: lib/wordfenceClass.php:181
|
7321 |
msgid ""
|
7322 |
"To ensure uninterrupted Premium Wordfence protection on your site,\n"
|
7323 |
"please renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\n"
|
7324 |
"select the license about to expire and click the button to renew that license."
|
7325 |
msgstr ""
|
7326 |
|
7327 |
+
#: lib/wordfenceClass.php:211
|
7328 |
msgid "Your Premium Wordfence License is set to auto-renew in 10 days."
|
7329 |
msgstr ""
|
7330 |
|
7331 |
+
#: lib/wordfenceClass.php:212
|
7332 |
msgid "To update your license settings please visit http://www.wordfence.com/zz9/dashboard"
|
7333 |
msgstr ""
|
7334 |
|
7335 |
+
#: lib/wordfenceClass.php:224
|
7336 |
msgid "Your Premium Wordfence License expires in less than 2 weeks."
|
7337 |
msgstr ""
|
7338 |
|
7339 |
+
#: lib/wordfenceClass.php:227
|
7340 |
msgid "Your Premium Wordfence License expires in less than a week."
|
7341 |
msgstr ""
|
7342 |
|
7343 |
+
#: lib/wordfenceClass.php:230
|
7344 |
msgid "Your Premium Wordfence License expires in 2 days."
|
7345 |
msgstr ""
|
7346 |
|
7347 |
+
#: lib/wordfenceClass.php:233
|
7348 |
msgid "Your Premium Wordfence License expires in 1 day."
|
7349 |
msgstr ""
|
7350 |
|
7351 |
+
#: lib/wordfenceClass.php:237
|
7352 |
msgid "Your Wordfence Premium License has Expired!"
|
7353 |
msgstr ""
|
7354 |
|
7355 |
+
#: lib/wordfenceClass.php:268
|
7356 |
msgid "The Wordfence Premium License in use on this site has been removed from your account."
|
7357 |
msgstr ""
|
7358 |
|
7359 |
+
#: lib/wordfenceClass.php:268
|
7360 |
msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help."
|
7361 |
msgstr ""
|
7362 |
|
7363 |
#. translators: Wordfence license key.
|
7364 |
+
#: lib/wordfenceClass.php:274
|
7365 |
msgid "Could not verify Wordfence License: %s"
|
7366 |
msgstr ""
|
7367 |
|
7368 |
#. translators: WordPress version.
|
7369 |
+
#: lib/wordfenceClass.php:356
|
7370 |
msgid "WordPress (v%s)"
|
7371 |
msgstr ""
|
7372 |
|
7373 |
#. translators: Number of plugins.
|
7374 |
+
#: lib/wordfenceClass.php:360
|
7375 |
msgid "%d plugin"
|
7376 |
msgid_plural "%d plugins"
|
7377 |
msgstr[0] ""
|
7378 |
msgstr[1] ""
|
7379 |
|
7380 |
#. translators: Number of themes.
|
7381 |
+
#: lib/wordfenceClass.php:365
|
7382 |
msgid "%d theme"
|
7383 |
msgid_plural "%d themes"
|
7384 |
msgstr[0] ""
|
7385 |
msgstr[1] ""
|
7386 |
|
7387 |
+
#: lib/wordfenceClass.php:369
|
7388 |
msgid "An update is available for "
|
7389 |
msgid_plural "Updates are available for "
|
7390 |
msgstr[0] ""
|
7391 |
msgstr[1] ""
|
7392 |
|
7393 |
+
#: lib/wordfenceClass.php:374
|
7394 |
msgid "and "
|
7395 |
msgstr ""
|
7396 |
|
7397 |
#. translators: Wordfence version.
|
7398 |
+
#: lib/wordfenceClass.php:413
|
7399 |
msgid "`runInstall` called with previous version = %s"
|
7400 |
msgstr ""
|
7401 |
|
7402 |
+
#: lib/wordfenceClass.php:465
|
7403 |
+
#: lib/wordfenceClass.php:4033
|
7404 |
msgid "Could not understand the response we received from the Wordfence servers when applying for a free license key."
|
7405 |
msgstr ""
|
7406 |
|
7407 |
+
#: lib/wordfenceClass.php:829
|
7408 |
msgid "Automatically generated from previous country blocking settings"
|
7409 |
msgstr ""
|
7410 |
|
7411 |
+
#: lib/wordfenceClass.php:1260
|
7412 |
msgid "Application passwords have been disabled by Wordfence."
|
7413 |
msgstr ""
|
7414 |
|
7415 |
+
#: lib/wordfenceClass.php:1371
|
7416 |
+
#: lib/wordfenceClass.php:6647
|
7417 |
msgid "Upgrade To Premium"
|
7418 |
msgstr ""
|
7419 |
|
7420 |
+
#: lib/wordfenceClass.php:1390
|
7421 |
msgid "wp_mail from address is incomplete, attempting to fix"
|
7422 |
msgstr ""
|
7423 |
|
7424 |
#. translators: Email address.
|
7425 |
+
#: lib/wordfenceClass.php:1400
|
7426 |
msgid "Fixing wp_mail from address: %s"
|
7427 |
msgstr ""
|
7428 |
|
7429 |
+
#: lib/wordfenceClass.php:1493
|
7430 |
msgid "You appear to have logged out or you are not an admin. Please sign-out and sign-in again."
|
7431 |
msgstr ""
|
7432 |
|
7433 |
+
#: lib/wordfenceClass.php:1498
|
7434 |
msgid "Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again."
|
7435 |
msgstr ""
|
7436 |
|
7437 |
+
#: lib/wordfenceClass.php:1504
|
7438 |
msgid "Wordfence encountered an internal error executing that request."
|
7439 |
msgstr ""
|
7440 |
|
7441 |
#. translators: Error message.
|
7442 |
+
#: lib/wordfenceClass.php:1610
|
7443 |
msgid "2FA Migration Error: %s"
|
7444 |
msgstr ""
|
7445 |
|
7446 |
+
#: lib/wordfenceClass.php:1650
|
7447 |
msgid "Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words."
|
7448 |
msgstr ""
|
7449 |
|
7450 |
+
#: lib/wordfenceClass.php:1656
|
7451 |
msgid "Passwords containing a space followed by \"wf\" without quotes are not allowed."
|
7452 |
msgstr ""
|
7453 |
|
7454 |
#. translators: Support URL.
|
7455 |
+
#: lib/wordfenceClass.php:1671
|
7456 |
msgid "Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href=\"%s\">Learn More</a>"
|
7457 |
msgstr ""
|
7458 |
|
7459 |
+
#. translators: 1. Password reset limit (number). 2. WordPress username.
|
7460 |
+
#: lib/wordfenceClass.php:1758
|
7461 |
+
msgid "Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: '%2$s'"
|
7462 |
+
msgstr ""
|
7463 |
+
|
7464 |
+
#: lib/wordfenceClass.php:1806
|
7465 |
+
#: lib/wordfenceClass.php:1989
|
7466 |
msgid "Sorry but your browser sent an invalid security token when trying to use this form."
|
7467 |
msgstr ""
|
7468 |
|
7469 |
+
#: lib/wordfenceClass.php:1811
|
7470 |
msgid "Please wait 3 minutes and try again"
|
7471 |
msgstr ""
|
7472 |
|
7473 |
+
#: lib/wordfenceClass.php:1812
|
7474 |
msgid "You have used this form too much. Please wait 3 minutes and try again."
|
7475 |
msgstr ""
|
7476 |
|
7477 |
+
#: lib/wordfenceClass.php:1851
|
7478 |
msgid "Unlock email requested"
|
7479 |
msgstr ""
|
7480 |
|
7481 |
+
#: lib/wordfenceClass.php:1853
|
7482 |
msgid "Your request was received"
|
7483 |
msgstr ""
|
7484 |
|
7485 |
#. translators: Email address.
|
7486 |
+
#: lib/wordfenceClass.php:1854
|
7487 |
msgid "We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now."
|
7488 |
msgstr ""
|
7489 |
|
7490 |
+
#: lib/wordfenceClass.php:1860
|
7491 |
msgid "Invalid key provided for authentication."
|
7492 |
msgstr ""
|
7493 |
|
7494 |
+
#: lib/wordfenceClass.php:1871
|
7495 |
msgid "Request received via unlock email link to unblock all IPs."
|
7496 |
msgstr ""
|
7497 |
|
7498 |
+
#: lib/wordfenceClass.php:1880
|
7499 |
msgid "Request received via unlock email link to unblock all IPs via disabling firewall rules."
|
7500 |
msgstr ""
|
7501 |
|
7502 |
+
#: lib/wordfenceClass.php:1888
|
7503 |
msgid "Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader."
|
7504 |
msgstr ""
|
7505 |
|
7506 |
+
#: lib/wordfenceClass.php:1933
|
7507 |
msgid "Unsubscribe Requested"
|
7508 |
msgstr ""
|
7509 |
|
7510 |
+
#: lib/wordfenceClass.php:1995
|
7511 |
msgid "An error occurred while saving the license."
|
7512 |
msgstr ""
|
7513 |
|
7514 |
#. translators: Error message.
|
7515 |
+
#: lib/wordfenceClass.php:1997
|
7516 |
+
#: lib/wordfenceClass.php:2017
|
7517 |
msgid "An error occurred while saving the license: %s"
|
7518 |
msgstr ""
|
7519 |
|
7520 |
+
#: lib/wordfenceClass.php:2033
|
7521 |
msgid "Rescheduled missing daily cron"
|
7522 |
msgstr ""
|
7523 |
|
7524 |
+
#: lib/wordfenceClass.php:2038
|
7525 |
msgid "Rescheduled missing hourly cron"
|
7526 |
msgstr ""
|
7527 |
|
7528 |
+
#: lib/wordfenceClass.php:2392
|
7529 |
+
#: lib/wordfenceClass.php:2396
|
7530 |
msgid "Accessed a banned URL"
|
7531 |
msgstr ""
|
7532 |
|
7533 |
+
#: lib/wordfenceClass.php:2403
|
7534 |
+
#: lib/wordfenceClass.php:2407
|
7535 |
msgid "POST received with blank user-agent and referer"
|
7536 |
msgstr ""
|
7537 |
|
7538 |
+
#: lib/wordfenceClass.php:2541
|
7539 |
msgid "<strong>ERROR</strong>: You can't register using that username"
|
7540 |
msgstr ""
|
7541 |
|
7542 |
+
#: lib/wordfenceClass.php:2581
|
7543 |
+
msgid "Sorry, you are not allowed to list users."
|
7544 |
+
msgstr ""
|
7545 |
+
|
7546 |
+
#: lib/wordfenceClass.php:2588
|
7547 |
+
msgid "Invalid user ID."
|
7548 |
+
msgstr ""
|
7549 |
+
|
7550 |
+
#: lib/wordfenceClass.php:2732
|
7551 |
+
msgid "<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again."
|
7552 |
+
msgstr ""
|
7553 |
+
|
7554 |
+
#. translators: 1. WordPress username. 2. Password reset URL.
|
7555 |
+
#. translators: 1. WordPress username. 2. Reset password URL.
|
7556 |
+
#: lib/wordfenceClass.php:2739
|
7557 |
+
#: lib/wordfenceClass.php:3189
|
7558 |
+
msgid "<strong>ERROR</strong>: The username or password you entered is incorrect. <a href=\"%2$s\" title=\"Password Lost and Found\">Lost your password</a>?"
|
7559 |
+
msgstr ""
|
7560 |
+
|
7561 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
7562 |
+
#: lib/wordfenceClass.php:2749
|
7563 |
+
#: lib/wordfenceClass.php:2885
|
7564 |
+
msgid "<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
7565 |
+
msgstr ""
|
7566 |
+
|
7567 |
+
#: lib/wordfenceClass.php:2773
|
7568 |
+
msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>)."
|
7569 |
+
msgstr ""
|
7570 |
+
|
7571 |
+
#: lib/wordfenceClass.php:2777
|
7572 |
+
msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>)."
|
7573 |
+
msgstr ""
|
7574 |
+
|
7575 |
+
#: lib/wordfenceClass.php:2784
|
7576 |
+
#: lib/wordfenceClass.php:2835
|
7577 |
+
#: lib/wordfenceClass.php:2858
|
7578 |
+
msgid "<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again."
|
7579 |
+
msgstr ""
|
7580 |
+
|
7581 |
+
#: lib/wordfenceClass.php:2794
|
7582 |
+
msgid "<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456)."
|
7583 |
+
msgstr ""
|
7584 |
+
|
7585 |
+
#: lib/wordfenceClass.php:2798
|
7586 |
+
msgid "<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456)."
|
7587 |
+
msgstr ""
|
7588 |
+
|
7589 |
+
#: lib/wordfenceClass.php:2844
|
7590 |
+
msgid "<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you."
|
7591 |
+
msgstr ""
|
7592 |
+
|
7593 |
+
#: lib/wordfenceClass.php:2867
|
7594 |
+
msgid "<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with 'wf' and should be four characters (e.g., wfAB12)."
|
7595 |
+
msgstr ""
|
7596 |
+
|
7597 |
+
#: lib/wordfenceClass.php:2918
|
7598 |
+
msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in."
|
7599 |
+
msgstr ""
|
7600 |
+
|
7601 |
+
#: lib/wordfenceClass.php:2923
|
7602 |
+
msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
|
7603 |
+
msgstr ""
|
7604 |
+
|
7605 |
+
#: lib/wordfenceClass.php:2957
|
7606 |
+
#: lib/wordfenceClass.php:3014
|
7607 |
+
msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in."
|
7608 |
+
msgstr ""
|
7609 |
+
|
7610 |
+
#: lib/wordfenceClass.php:2962
|
7611 |
+
msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
|
7612 |
+
msgstr ""
|
7613 |
+
|
7614 |
+
#: lib/wordfenceClass.php:3019
|
7615 |
+
msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>)."
|
7616 |
msgstr ""
|
7617 |
|
7618 |
#. translators: 1. Reset password URL. 2. Support URL.
|
7619 |
+
#: lib/wordfenceClass.php:3040
|
7620 |
+
#: lib/wordfenceClass.php:3076
|
7621 |
+
msgid "<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
7622 |
msgstr ""
|
7623 |
|
7624 |
+
#. translators: 1. Reset password URL. 2. Support URL.
|
7625 |
#: lib/wordfenceClass.php:3057
|
7626 |
+
#: lib/wordfenceClass.php:3093
|
7627 |
+
msgid "<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">reset your password</a> to reactivate your account. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span style=\"font-size:0;\"> (opens in new tab)</span></a>"
|
7628 |
+
msgstr ""
|
7629 |
+
|
7630 |
+
#: lib/wordfenceClass.php:3065
|
7631 |
+
msgid "Admin Login Blocked"
|
7632 |
+
msgstr ""
|
7633 |
+
|
7634 |
+
#. translators: WordPress username.
|
7635 |
+
#: lib/wordfenceClass.php:3065
|
7636 |
msgid "A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not."
|
7637 |
msgstr ""
|
7638 |
|
7639 |
+
#. translators: WordPress username.
|
7640 |
+
#: lib/wordfenceClass.php:3066
|
7641 |
+
msgid "<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account."
|
7642 |
+
msgstr ""
|
7643 |
+
|
7644 |
+
#: lib/wordfenceClass.php:3106
|
7645 |
msgid "Blocked by Wordfence Security Network"
|
7646 |
msgstr ""
|
7647 |
|
7648 |
+
#: lib/wordfenceClass.php:3136
|
7649 |
msgid "Blocked by login security setting"
|
7650 |
msgstr ""
|
7651 |
|
7652 |
#. translators: WordPress username.
|
7653 |
+
#: lib/wordfenceClass.php:3146
|
7654 |
msgid "Used an invalid username '%s' to try to sign in"
|
7655 |
msgstr ""
|
7656 |
|
7657 |
#. translators: 1. Login attempt limit. 2. WordPress username.
|
7658 |
+
#: lib/wordfenceClass.php:3165
|
7659 |
msgid "Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: '%2$s'"
|
7660 |
msgstr ""
|
7661 |
|
7662 |
+
#: lib/wordfenceClass.php:3522
|
7663 |
msgid "An invalid type was specified to get file."
|
7664 |
msgstr ""
|
7665 |
|
7666 |
+
#: lib/wordfenceClass.php:3538
|
7667 |
msgid "We could not fetch a core WordPress file from the Wordfence API."
|
7668 |
msgstr ""
|
7669 |
|
7670 |
+
#: lib/wordfenceClass.php:3597
|
7671 |
msgid "Wordfence Test Email"
|
7672 |
msgstr ""
|
7673 |
|
7674 |
#. translators: 1. Site URL. 2. IP address.
|
7675 |
+
#: lib/wordfenceClass.php:3597
|
7676 |
msgid ""
|
7677 |
"This is a test email from %1$s.\n"
|
7678 |
"The IP address that requested this was: %2$s"
|
7679 |
msgstr ""
|
7680 |
|
7681 |
+
#: lib/wordfenceClass.php:3604
|
7682 |
+
msgid "Cellphone Sign-in is only available to paid members. <a href=\"https://www.wordfence.com/gnl1twoFac3/wordfence-signup/\" target=\"_blank\" rel=\"noopener noreferrer\">Click here to upgrade now.<span class=\"screen-reader-text\"> ("
|
7683 |
msgstr ""
|
7684 |
|
7685 |
+
#: lib/wordfenceClass.php:3611
|
7686 |
msgid "The username you specified does not exist."
|
7687 |
msgstr ""
|
7688 |
|
7689 |
+
#: lib/wordfenceClass.php:3620
|
7690 |
msgid "The username you specified is already enabled."
|
7691 |
msgstr ""
|
7692 |
|
7693 |
+
#: lib/wordfenceClass.php:3625
|
7694 |
msgid "Unknown authentication mode."
|
7695 |
msgstr ""
|
7696 |
|
7697 |
+
#: lib/wordfenceClass.php:3630
|
7698 |
msgid "The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234"
|
7699 |
msgstr ""
|
7700 |
|
7701 |
#. translators: Error message.
|
7702 |
+
#: lib/wordfenceClass.php:3637
|
7703 |
+
#: lib/wordfenceClass.php:3669
|
7704 |
+
#: lib/wordfenceClass.php:3732
|
7705 |
msgid "Could not contact Wordfence servers to generate a verification code: %s"
|
7706 |
msgstr ""
|
7707 |
|
7708 |
#. translators: Error message.
|
7709 |
+
#: lib/wordfenceClass.php:3649
|
7710 |
+
#: lib/wordfenceClass.php:3693
|
7711 |
msgid "Could not generate verification code: %s"
|
7712 |
msgstr ""
|
7713 |
|
7714 |
#. translators: Error message.
|
7715 |
+
#: lib/wordfenceClass.php:3650
|
7716 |
+
#: lib/wordfenceClass.php:3694
|
7717 |
msgid "We could not generate a verification code."
|
7718 |
msgstr ""
|
7719 |
|
7720 |
+
#: lib/wordfenceClass.php:3710
|
7721 |
msgid "Unknown two-factor authentication mode."
|
7722 |
msgstr ""
|
7723 |
|
7724 |
+
#: lib/wordfenceClass.php:3743
|
7725 |
msgid "The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code."
|
7726 |
msgstr ""
|
7727 |
|
7728 |
+
#: lib/wordfenceClass.php:3748
|
7729 |
msgid "We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page."
|
7730 |
msgstr ""
|
7731 |
|
7732 |
+
#: lib/wordfenceClass.php:3830
|
7733 |
msgid "That user has already been removed from the list."
|
7734 |
msgstr ""
|
7735 |
|
7736 |
+
#: lib/wordfenceClass.php:3850
|
7737 |
msgid "No scan is scheduled"
|
7738 |
msgstr ""
|
7739 |
|
7740 |
+
#: lib/wordfenceClass.php:3855
|
7741 |
msgid "Next scan is starting now"
|
7742 |
msgstr ""
|
7743 |
|
7744 |
#. translators: 1. Time until. 2. Localized date.
|
7745 |
+
#: lib/wordfenceClass.php:3858
|
7746 |
msgid "Next scan in %1$s (%2$s)"
|
7747 |
msgstr ""
|
7748 |
|
7749 |
#. translators: Localized date.
|
7750 |
+
#: lib/wordfenceClass.php:3875
|
7751 |
msgid "Scheduled Wordfence scan starting at %s"
|
7752 |
msgstr ""
|
7753 |
|
7754 |
+
#: lib/wordfenceClass.php:3898
|
7755 |
msgid "Sorry but this feature is only available for paid customers."
|
7756 |
msgstr ""
|
7757 |
|
7758 |
#. translators: Site URL.
|
7759 |
+
#: lib/wordfenceClass.php:3912
|
7760 |
msgid "SITE: %s"
|
7761 |
msgstr ""
|
7762 |
|
7763 |
#. translators: Plugin version.
|
7764 |
+
#: lib/wordfenceClass.php:3913
|
7765 |
msgid "PLUGIN VERSION: %s"
|
7766 |
msgstr ""
|
7767 |
|
7768 |
#. translators: WordPress version.
|
7769 |
+
#: lib/wordfenceClass.php:3914
|
7770 |
msgid "WORDPRESS VERSION: %s"
|
7771 |
msgstr ""
|
7772 |
|
7773 |
#. translators: Wordfence license key.
|
7774 |
+
#: lib/wordfenceClass.php:3915
|
7775 |
msgid "LICENSE KEY: %s"
|
7776 |
msgstr ""
|
7777 |
|
7778 |
#. translators: Email address.
|
7779 |
+
#: lib/wordfenceClass.php:3916
|
7780 |
msgid "ADMIN EMAIL: %s"
|
7781 |
msgstr ""
|
7782 |
|
7783 |
#. translators: Email address.
|
7784 |
+
#: lib/wordfenceClass.php:3917
|
7785 |
msgid "LOG:"
|
7786 |
msgstr ""
|
7787 |
|
7788 |
+
#: lib/wordfenceClass.php:3933
|
7789 |
msgid "# Scan Issues"
|
7790 |
msgstr ""
|
7791 |
|
7792 |
#. translators: Number of scan results.
|
7793 |
+
#: lib/wordfenceClass.php:3938
|
7794 |
msgid "## New Issues (%d total)"
|
7795 |
msgstr ""
|
7796 |
|
7797 |
#. translators: Number of scan results.
|
7798 |
+
#: lib/wordfenceClass.php:3965
|
7799 |
msgid "## Ignored Issues (%d total)"
|
7800 |
msgstr ""
|
7801 |
|
7802 |
+
#: lib/wordfenceClass.php:3986
|
7803 |
msgid "No Ignored Issues"
|
7804 |
msgstr ""
|
7805 |
|
7806 |
+
#: lib/wordfenceClass.php:4008
|
7807 |
msgid "Wordfence Activity Log"
|
7808 |
msgstr ""
|
7809 |
|
7810 |
#. translators: Error message.
|
7811 |
+
#: lib/wordfenceClass.php:4036
|
7812 |
msgid "Could not fetch free license key from Wordfence: %s"
|
7813 |
msgstr ""
|
7814 |
|
7815 |
+
#: lib/wordfenceClass.php:4127
|
7816 |
msgid "We could not find your .htaccess file to modify it."
|
7817 |
msgstr ""
|
7818 |
|
7819 |
#. translators: Error message.
|
7820 |
+
#: lib/wordfenceClass.php:4132
|
7821 |
msgid "We found your .htaccess file but could not open it for writing: %s"
|
7822 |
msgstr ""
|
7823 |
|
7824 |
+
#: lib/wordfenceClass.php:4215
|
7825 |
msgid "All Countries"
|
7826 |
msgstr ""
|
7827 |
|
7828 |
+
#: lib/wordfenceClass.php:4218
|
7829 |
msgid "1 Country"
|
7830 |
msgstr ""
|
7831 |
|
7832 |
#. translators: Number of countries.
|
7833 |
+
#: lib/wordfenceClass.php:4221
|
7834 |
msgid "%d Countries"
|
7835 |
msgstr ""
|
7836 |
|
7837 |
+
#: lib/wordfenceClass.php:4225
|
7838 |
msgid "Entire Site"
|
7839 |
msgstr ""
|
7840 |
|
7841 |
+
#: lib/wordfenceClass.php:4228
|
7842 |
msgid "Login Only"
|
7843 |
msgstr ""
|
7844 |
|
7845 |
+
#: lib/wordfenceClass.php:4231
|
7846 |
msgid "Site Except Login"
|
7847 |
msgstr ""
|
7848 |
|
7849 |
+
#: lib/wordfenceClass.php:4239
|
7850 |
msgid "IP Range"
|
7851 |
msgstr ""
|
7852 |
|
7853 |
#. translators: 2FA backup codes.
|
7854 |
+
#: lib/wordfenceClass.php:4240
|
7855 |
+
#: lib/wordfenceClass.php:6195
|
7856 |
msgid "User Agent"
|
7857 |
msgstr ""
|
7858 |
|
7859 |
+
#: lib/wordfenceClass.php:4241
|
7860 |
#: views/blocking/blocking-create.php:201
|
7861 |
msgid "Referrer"
|
7862 |
msgstr ""
|
7863 |
|
7864 |
+
#: lib/wordfenceClass.php:4256
|
7865 |
msgid "Permanent"
|
7866 |
msgstr ""
|
7867 |
|
7868 |
+
#: lib/wordfenceClass.php:4328
|
7869 |
msgid "An error occurred while creating the block."
|
7870 |
msgstr ""
|
7871 |
|
7872 |
+
#: lib/wordfenceClass.php:4334
|
7873 |
msgid "No block parameters were provided."
|
7874 |
msgstr ""
|
7875 |
|
7876 |
+
#: lib/wordfenceClass.php:4371
|
7877 |
+
#: lib/wordfenceClass.php:4403
|
7878 |
msgid "No blocks were provided."
|
7879 |
msgstr ""
|
7880 |
|
7881 |
+
#: lib/wordfenceClass.php:4435
|
7882 |
msgid "The license provided is already in use on another site."
|
7883 |
msgstr ""
|
7884 |
|
7885 |
+
#: lib/wordfenceClass.php:4440
|
7886 |
msgid "The Wordfence activation server returned an unexpected response. Please try again."
|
7887 |
msgstr ""
|
7888 |
|
7889 |
+
#: lib/wordfenceClass.php:4446
|
7890 |
msgid "We received an error while trying to activate the license with the Wordfence servers: "
|
7891 |
msgstr ""
|
7892 |
|
7893 |
+
#: lib/wordfenceClass.php:4459
|
7894 |
msgid "No license was provided to install."
|
7895 |
msgstr ""
|
7896 |
|
7897 |
+
#: lib/wordfenceClass.php:4510
|
7898 |
msgid "An unknown configuration section was provided."
|
7899 |
msgstr ""
|
7900 |
|
7901 |
+
#: lib/wordfenceClass.php:4516
|
7902 |
msgid "No configuration section was provided."
|
7903 |
msgstr ""
|
7904 |
|
7905 |
+
#: lib/wordfenceClass.php:4562
|
7906 |
+
#: lib/wordfenceClass.php:4567
|
7907 |
msgid "An error occurred while saving the configuration."
|
7908 |
msgstr ""
|
7909 |
|
7910 |
+
#: lib/wordfenceClass.php:4578
|
7911 |
msgid "No configuration changes were provided to save."
|
7912 |
msgstr ""
|
7913 |
|
7914 |
+
#: lib/wordfenceClass.php:4609
|
7915 |
+
#: lib/wordfenceClass.php:5234
|
7916 |
+
#: lib/wordfenceClass.php:5265
|
7917 |
+
#: lib/wordfenceClass.php:7279
|
7918 |
+
#: lib/wordfenceClass.php:7314
|
7919 |
+
#: lib/wordfenceClass.php:7346
|
7920 |
msgid "We could not find that issue in our database."
|
7921 |
msgstr ""
|
7922 |
|
7923 |
+
#: lib/wordfenceClass.php:4619
|
7924 |
msgid "An error occurred while trying to hide the file."
|
7925 |
msgstr ""
|
7926 |
|
7927 |
+
#: lib/wordfenceClass.php:4632
|
7928 |
msgid "An invalid file was requested for hiding."
|
7929 |
msgstr ""
|
7930 |
|
7931 |
+
#: lib/wordfenceClass.php:4659
|
7932 |
+
#: lib/wordfenceClass.php:5245
|
7933 |
msgid "You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
|
7934 |
msgstr ""
|
7935 |
|
7936 |
+
#: lib/wordfenceClass.php:4683
|
7937 |
msgid "Manual permanent block by admin"
|
7938 |
msgstr ""
|
7939 |
|
7940 |
+
#: lib/wordfenceClass.php:4719
|
7941 |
msgid "Please enter a valid IP address to block."
|
7942 |
msgstr ""
|
7943 |
|
7944 |
+
#: lib/wordfenceClass.php:4722
|
7945 |
msgid "You can't block your own IP address."
|
7946 |
msgstr ""
|
7947 |
|
7948 |
#. translators: IP address.
|
7949 |
+
#: lib/wordfenceClass.php:4726
|
7950 |
msgid "The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page."
|
7951 |
msgstr ""
|
7952 |
|
7953 |
#. translators: IP address.
|
7954 |
+
#: lib/wordfenceClass.php:4728
|
7955 |
msgid "The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for."
|
7956 |
msgstr ""
|
7957 |
|
7958 |
+
#: lib/wordfenceClass.php:4734
|
7959 |
msgid "The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google."
|
7960 |
msgstr ""
|
7961 |
|
7962 |
+
#: lib/wordfenceClass.php:4777
|
7963 |
msgid "An invalid operation was called."
|
7964 |
msgstr ""
|
7965 |
|
7966 |
+
#: lib/wordfenceClass.php:4787
|
7967 |
msgid "An invalid status was specified when trying to update that issue."
|
7968 |
msgstr ""
|
7969 |
|
7970 |
+
#: lib/wordfenceClass.php:4799
|
7971 |
msgid "Scan stop request received."
|
7972 |
msgstr ""
|
7973 |
|
7974 |
+
#: lib/wordfenceClass.php:4800
|
7975 |
msgid "A request was received to stop the previous scan."
|
7976 |
msgstr ""
|
7977 |
|
7978 |
+
#: lib/wordfenceClass.php:4849
|
7979 |
msgid "Idle"
|
7980 |
msgstr ""
|
7981 |
|
7982 |
#. translators: Localized date.
|
7983 |
+
#: lib/wordfenceClass.php:4858
|
7984 |
msgid "Scan completed on %s"
|
7985 |
msgstr ""
|
7986 |
|
7987 |
+
#: lib/wordfenceClass.php:4865
|
7988 |
msgid "Last scan failed"
|
7989 |
msgstr ""
|
7990 |
|
7991 |
#. translators: Time until.
|
7992 |
+
#: lib/wordfenceClass.php:4928
|
7993 |
msgid "more than %s"
|
7994 |
msgstr ""
|
7995 |
|
7996 |
#. translators: Localized date.
|
7997 |
+
#: lib/wordfenceClass.php:4932
|
7998 |
msgid "The current scan looks like it has failed. Its last status update was <span id=\"wf-scan-failed-time-ago\">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably."
|
7999 |
msgstr ""
|
8000 |
|
8001 |
#. translators: Localized date.
|
8002 |
+
#: lib/wordfenceClass.php:4932
|
8003 |
+
#: lib/wordfenceClass.php:4940
|
8004 |
+
#: lib/wordfenceClass.php:4959
|
8005 |
+
#: lib/wordfenceClass.php:4971
|
8006 |
+
#: lib/wordfenceClass.php:4979
|
8007 |
msgid "Click here for steps you can try."
|
8008 |
msgstr ""
|
8009 |
|
8010 |
#. translators: Localized date.
|
8011 |
+
#: lib/wordfenceClass.php:4933
|
8012 |
msgid "Cancel Scan"
|
8013 |
msgstr ""
|
8014 |
|
8015 |
+
#: lib/wordfenceClass.php:4940
|
8016 |
msgid "The previous scan has failed. Some sites may need adjustments to run scans reliably."
|
8017 |
msgstr ""
|
8018 |
|
8019 |
#. translators: Time limit (number).
|
8020 |
+
#: lib/wordfenceClass.php:4946
|
8021 |
msgid "The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page."
|
8022 |
msgstr ""
|
8023 |
|
8024 |
+
#: lib/wordfenceClass.php:4952
|
8025 |
msgid "The previous scan has terminated because we detected an update occurring during the scan."
|
8026 |
msgstr ""
|
8027 |
|
8028 |
+
#: lib/wordfenceClass.php:4959
|
8029 |
msgid "The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself."
|
8030 |
msgstr ""
|
8031 |
|
8032 |
+
#: lib/wordfenceClass.php:4965
|
8033 |
msgid "Scans are not functional because SSL is unavailable."
|
8034 |
msgstr ""
|
8035 |
|
8036 |
+
#: lib/wordfenceClass.php:4971
|
8037 |
msgid "The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably."
|
8038 |
msgstr ""
|
8039 |
|
8040 |
+
#: lib/wordfenceClass.php:4979
|
8041 |
msgid "The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably."
|
8042 |
msgstr ""
|
8043 |
|
8044 |
+
#: lib/wordfenceClass.php:5006
|
8045 |
msgid "Invalid email address given."
|
8046 |
msgstr ""
|
8047 |
|
8048 |
+
#: lib/wordfenceClass.php:5031
|
8049 |
+
#: lib/wordfenceClass.php:5156
|
8050 |
msgid "Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted."
|
8051 |
msgstr ""
|
8052 |
|
8053 |
#. translators: 1. File path. 2. Error message.
|
8054 |
+
#: lib/wordfenceClass.php:5040
|
8055 |
msgid "Could not delete file %1$s. Error was: %2$s"
|
8056 |
msgstr ""
|
8057 |
|
8058 |
#. translators: File path.
|
8059 |
+
#: lib/wordfenceClass.php:5064
|
8060 |
msgid "We could not retrieve the original file of %s to do a repair."
|
8061 |
msgstr ""
|
8062 |
|
8063 |
#. translators: File path.
|
8064 |
+
#: lib/wordfenceClass.php:5069
|
8065 |
msgid "An invalid file %s was specified for repair."
|
8066 |
msgstr ""
|
8067 |
|
8068 |
#. translators: File path.
|
8069 |
+
#: lib/wordfenceClass.php:5077
|
8070 |
msgid "You don't have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
|
8071 |
msgstr ""
|
8072 |
|
8073 |
#. translators: 1. File path. 2. Error message.
|
8074 |
+
#: lib/wordfenceClass.php:5080
|
8075 |
msgid "We could not write to %1$s. The error was: %2$s"
|
8076 |
msgstr ""
|
8077 |
|
8078 |
#. translators: 1. File path. 2. Number of bytes.
|
8079 |
+
#: lib/wordfenceClass.php:5091
|
8080 |
msgid "We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server."
|
8081 |
msgstr ""
|
8082 |
|
8083 |
+
#: lib/wordfenceClass.php:5103
|
8084 |
msgid "Deleted some files with errors"
|
8085 |
msgstr ""
|
8086 |
|
8087 |
+
#: lib/wordfenceClass.php:5103
|
8088 |
msgid "Repaired some files with errors"
|
8089 |
msgstr ""
|
8090 |
|
8091 |
#. translators: 1. Number of files. 2. Error message.
|
8092 |
+
#: lib/wordfenceClass.php:5106
|
8093 |
msgid "Deleted %1$d files but we encountered the following errors with other files: %2$s"
|
8094 |
msgstr ""
|
8095 |
|
8096 |
#. translators: 1. Number of files. 2. Error message.
|
8097 |
+
#: lib/wordfenceClass.php:5108
|
8098 |
msgid "Repaired %1$d files but we encountered the following errors with other files: %2$s"
|
8099 |
msgstr ""
|
8100 |
|
8101 |
#. translators: Number of files.
|
8102 |
+
#: lib/wordfenceClass.php:5112
|
8103 |
msgid "Deleted %d files successfully"
|
8104 |
msgstr ""
|
8105 |
|
8106 |
#. translators: Number of files.
|
8107 |
+
#: lib/wordfenceClass.php:5112
|
8108 |
msgid "Repaired %d files successfully"
|
8109 |
msgstr ""
|
8110 |
|
8111 |
#. translators: Number of files.
|
8112 |
+
#: lib/wordfenceClass.php:5113
|
8113 |
msgid "Deleted %d files successfully. No errors were encountered."
|
8114 |
msgstr ""
|
8115 |
|
8116 |
#. translators: Number of files.
|
8117 |
+
#: lib/wordfenceClass.php:5113
|
8118 |
msgid "Repaired %d files successfully. No errors were encountered."
|
8119 |
msgstr ""
|
8120 |
|
8121 |
+
#: lib/wordfenceClass.php:5116
|
8122 |
msgid "Could not delete files"
|
8123 |
msgstr ""
|
8124 |
|
8125 |
+
#: lib/wordfenceClass.php:5116
|
8126 |
msgid "Could not repair files"
|
8127 |
msgstr ""
|
8128 |
|
8129 |
#. translators: Error message.
|
8130 |
+
#: lib/wordfenceClass.php:5119
|
8131 |
msgid "We could not delete any of the files you selected. We encountered the following errors: %s"
|
8132 |
msgstr ""
|
8133 |
|
8134 |
#. translators: Error message.
|
8135 |
+
#: lib/wordfenceClass.php:5121
|
8136 |
msgid "We could not repair any of the files you selected. We encountered the following errors: %s"
|
8137 |
msgstr ""
|
8138 |
|
8139 |
+
#: lib/wordfenceClass.php:5124
|
8140 |
msgid "Nothing done"
|
8141 |
msgstr ""
|
8142 |
|
8143 |
+
#: lib/wordfenceClass.php:5125
|
8144 |
msgid "We didn't delete anything and no errors were found."
|
8145 |
msgstr ""
|
8146 |
|
8147 |
+
#: lib/wordfenceClass.php:5125
|
8148 |
msgid "We didn't repair anything and no errors were found."
|
8149 |
msgstr ""
|
8150 |
|
8151 |
+
#: lib/wordfenceClass.php:5133
|
8152 |
msgid "Invalid bulk operation selected"
|
8153 |
msgstr ""
|
8154 |
|
8155 |
+
#: lib/wordfenceClass.php:5143
|
8156 |
msgid "Could not delete file because we could not find that issue."
|
8157 |
msgstr ""
|
8158 |
|
8159 |
+
#: lib/wordfenceClass.php:5146
|
8160 |
msgid "Could not delete file because that issue does not appear to be a file related issue."
|
8161 |
msgstr ""
|
8162 |
|
8163 |
+
#: lib/wordfenceClass.php:5152
|
8164 |
msgid "An invalid file was requested for deletion."
|
8165 |
msgstr ""
|
8166 |
|
8167 |
#. translators: 1. File path. 2. Error message.
|
8168 |
+
#: lib/wordfenceClass.php:5195
|
8169 |
msgid "Could not delete file %1$s. The error was: %2$s"
|
8170 |
msgstr ""
|
8171 |
|
8172 |
+
#: lib/wordfenceClass.php:5208
|
8173 |
msgid "Could not remove the option because we could not find that issue."
|
8174 |
msgstr ""
|
8175 |
|
8176 |
+
#: lib/wordfenceClass.php:5211
|
8177 |
msgid "Could not remove the option because that issue does not appear to be a database related issue."
|
8178 |
msgstr ""
|
8179 |
|
8180 |
#. translators: 1. WordPress option. 2. Error message.
|
8181 |
+
#: lib/wordfenceClass.php:5224
|
8182 |
msgid "Could not remove the option %1$s. The error was: %2$s"
|
8183 |
msgstr ""
|
8184 |
|
8185 |
+
#: lib/wordfenceClass.php:5251
|
8186 |
msgid "Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control."
|
8187 |
msgstr ""
|
8188 |
|
8189 |
+
#: lib/wordfenceClass.php:5293
|
8190 |
msgid "We could not get the original file to do a repair."
|
8191 |
msgstr ""
|
8192 |
|
8193 |
+
#: lib/wordfenceClass.php:5297
|
8194 |
msgid "An invalid file was specified for repair."
|
8195 |
msgstr ""
|
8196 |
|
8197 |
+
#: lib/wordfenceClass.php:5312
|
8198 |
msgid "We could not write to that file. You may not have permission to modify files on your WordPress server."
|
8199 |
msgstr ""
|
8200 |
|
8201 |
+
#: lib/wordfenceClass.php:5316
|
8202 |
msgid "Ajax request received to start scan."
|
8203 |
msgstr ""
|
8204 |
|
8205 |
#. translators: Number of URLs.
|
8206 |
+
#: lib/wordfenceClass.php:5371
|
8207 |
msgid "Page contains %d malware URL: "
|
8208 |
msgid_plural "Page contains %d malware URLs: "
|
8209 |
msgstr[0] ""
|
8210 |
msgstr[1] ""
|
8211 |
|
8212 |
+
#: lib/wordfenceClass.php:5374
|
8213 |
msgid "Run a Scan"
|
8214 |
msgstr ""
|
8215 |
|
8216 |
+
#: lib/wordfenceClass.php:5422
|
8217 |
msgid "Unknown dashboard data set."
|
8218 |
msgstr ""
|
8219 |
|
8220 |
+
#: lib/wordfenceClass.php:5453
|
8221 |
msgid "Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again."
|
8222 |
msgstr ""
|
8223 |
|
8224 |
+
#: lib/wordfenceClass.php:5640
|
8225 |
msgid "An invalid IP address was specified."
|
8226 |
msgstr ""
|
8227 |
|
8228 |
+
#: lib/wordfenceClass.php:5693
|
8229 |
+
#: lib/wordfenceClass.php:5733
|
8230 |
+
#: lib/wordfenceClass.php:5771
|
8231 |
msgid "File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)"
|
8232 |
msgstr ""
|
8233 |
|
8234 |
+
#: lib/wordfenceClass.php:5698
|
8235 |
+
#: lib/wordfenceClass.php:5776
|
8236 |
msgid "Invalid file requested. (Relative paths not allowed)"
|
8237 |
msgstr ""
|
8238 |
|
8239 |
+
#: lib/wordfenceClass.php:5702
|
8240 |
+
#: lib/wordfenceClass.php:5737
|
8241 |
+
#: lib/wordfenceClass.php:5780
|
8242 |
msgid "File contains illegal characters."
|
8243 |
msgstr ""
|
8244 |
|
8245 |
#. translators: Error message.
|
8246 |
+
#: lib/wordfenceClass.php:5712
|
8247 |
msgid "We could not open the requested file for reading. The error was: %s"
|
8248 |
msgstr ""
|
8249 |
|
8250 |
+
#: lib/wordfenceClass.php:5720
|
8251 |
msgid "Greater than 2 Gigs"
|
8252 |
msgstr ""
|
8253 |
|
8254 |
+
#: lib/wordfenceClass.php:5725
|
8255 |
msgid "Unknown file size."
|
8256 |
msgstr ""
|
8257 |
|
8258 |
+
#: lib/wordfenceClass.php:5746
|
8259 |
msgid "We could not get the contents of the original file to do a comparison."
|
8260 |
msgstr ""
|
8261 |
|
8262 |
+
#: lib/wordfenceClass.php:5784
|
8263 |
msgid "File does not exist."
|
8264 |
msgstr ""
|
8265 |
|
8266 |
+
#: lib/wordfenceClass.php:6037
|
8267 |
#: views/dashboard/options-group-import.php:167
|
8268 |
msgid "Reload"
|
8269 |
msgstr ""
|
8270 |
|
8271 |
+
#: lib/wordfenceClass.php:6054
|
8272 |
msgid "${totalIPs} addresses in this network"
|
8273 |
msgstr ""
|
8274 |
|
8275 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
8276 |
+
#: lib/wordfenceClass.php:6055
|
8277 |
msgid "%s in POST body: %s"
|
8278 |
msgstr ""
|
8279 |
|
8280 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
8281 |
+
#: lib/wordfenceClass.php:6056
|
8282 |
msgid "%s in cookie: %s"
|
8283 |
msgstr ""
|
8284 |
|
8285 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
8286 |
+
#: lib/wordfenceClass.php:6057
|
8287 |
msgid "%s in file: %s"
|
8288 |
msgstr ""
|
8289 |
|
8290 |
#. translators: 1. Description of firewall action. 2. Description of input parameters.
|
8291 |
+
#: lib/wordfenceClass.php:6058
|
8292 |
msgid "%s in query string: %s"
|
8293 |
msgstr ""
|
8294 |
|
8295 |
#. translators: Domain name.
|
8296 |
+
#: lib/wordfenceClass.php:6059
|
8297 |
msgid "%s is not valid hostname"
|
8298 |
msgstr ""
|
8299 |
|
8300 |
#. translators: Domain name.
|
8301 |
+
#: lib/wordfenceClass.php:6060
|
8302 |
msgid ".htaccess Updated"
|
8303 |
msgstr ""
|
8304 |
|
8305 |
+
#: lib/wordfenceClass.php:6061
|
8306 |
msgid ".htaccess change"
|
8307 |
msgstr ""
|
8308 |
|
8309 |
+
#: lib/wordfenceClass.php:6062
|
8310 |
msgid "404 Not Found"
|
8311 |
msgstr ""
|
8312 |
|
8313 |
+
#: lib/wordfenceClass.php:6063
|
8314 |
msgid "Activity Log Sent"
|
8315 |
msgstr ""
|
8316 |
|
8317 |
+
#: lib/wordfenceClass.php:6064
|
8318 |
msgid "Add action to allowlist"
|
8319 |
msgstr ""
|
8320 |
|
8321 |
+
#: lib/wordfenceClass.php:6065
|
8322 |
msgid "Add code to .htaccess"
|
8323 |
msgstr ""
|
8324 |
|
8325 |
+
#: lib/wordfenceClass.php:6066
|
8326 |
msgid "All Hits"
|
8327 |
msgstr ""
|
8328 |
|
8329 |
#. translators: WordPress username.
|
8330 |
+
#: lib/wordfenceClass.php:6067
|
8331 |
msgid "All capabilties of admin user %s were successfully revoked."
|
8332 |
msgstr ""
|
8333 |
|
8334 |
+
#: lib/wordfenceClass.php:6069
|
8335 |
msgid "An error occurred when adding the request to the allowlist."
|
8336 |
msgstr ""
|
8337 |
|
8338 |
+
#: lib/wordfenceClass.php:6070
|
8339 |
msgid "Are you sure you want to allowlist this action?"
|
8340 |
msgstr ""
|
8341 |
|
8342 |
+
#: lib/wordfenceClass.php:6071
|
8343 |
msgid "Authentication Code"
|
8344 |
msgstr ""
|
8345 |
|
8346 |
+
#: lib/wordfenceClass.php:6072
|
8347 |
msgid "Background Request Blocked"
|
8348 |
msgstr ""
|
8349 |
|
8350 |
+
#: lib/wordfenceClass.php:6073
|
8351 |
msgid "Block This Network"
|
8352 |
msgstr ""
|
8353 |
|
8354 |
+
#: lib/wordfenceClass.php:6075
|
8355 |
msgid "Blocked By Firewall"
|
8356 |
msgstr ""
|
8357 |
|
8358 |
+
#: lib/wordfenceClass.php:6076
|
8359 |
msgid "Blocked WAF"
|
8360 |
msgstr ""
|
8361 |
|
8362 |
+
#: lib/wordfenceClass.php:6077
|
8363 |
msgid "Blocked by Wordfence"
|
8364 |
msgstr ""
|
8365 |
|
8366 |
+
#: lib/wordfenceClass.php:6078
|
8367 |
msgid "Blocked by Wordfence plugin settings"
|
8368 |
msgstr ""
|
8369 |
|
8370 |
+
#: lib/wordfenceClass.php:6079
|
8371 |
msgid "Blocked by the Wordfence Application Firewall and plugin settings"
|
8372 |
msgstr ""
|
8373 |
|
8374 |
+
#: lib/wordfenceClass.php:6080
|
8375 |
msgid "Blocked by the Wordfence Security Network"
|
8376 |
msgstr ""
|
8377 |
|
8378 |
+
#: lib/wordfenceClass.php:6081
|
8379 |
msgid "Blocked by the Wordfence Web Application Firewall"
|
8380 |
msgstr ""
|
8381 |
|
8382 |
+
#: lib/wordfenceClass.php:6084
|
8383 |
msgid "Cellphone Sign-In Recovery Codes"
|
8384 |
msgstr ""
|
8385 |
|
8386 |
+
#: lib/wordfenceClass.php:6085
|
8387 |
msgid "Cellphone Sign-in activated for user."
|
8388 |
msgstr ""
|
8389 |
|
8390 |
+
#: lib/wordfenceClass.php:6086
|
8391 |
msgid "Click here to download a backup copy of this file now"
|
8392 |
msgstr ""
|
8393 |
|
8394 |
+
#: lib/wordfenceClass.php:6087
|
8395 |
msgid "Click here to download a backup copy of your .htaccess file now"
|
8396 |
msgstr ""
|
8397 |
|
8398 |
+
#: lib/wordfenceClass.php:6088
|
8399 |
msgid "Click to fix .htaccess"
|
8400 |
msgstr ""
|
8401 |
|
8402 |
+
#: lib/wordfenceClass.php:6090
|
8403 |
msgid "Crawlers"
|
8404 |
msgstr ""
|
8405 |
|
8406 |
+
#: lib/wordfenceClass.php:6091
|
8407 |
msgid "Diagnostic report has been sent successfully."
|
8408 |
msgstr ""
|
8409 |
|
8410 |
+
#: lib/wordfenceClass.php:6092
|
8411 |
msgid "Directory Listing Disabled"
|
8412 |
msgstr ""
|
8413 |
|
8414 |
+
#: lib/wordfenceClass.php:6093
|
8415 |
msgid "Directory listing has been disabled on your server."
|
8416 |
msgstr ""
|
8417 |
|
8418 |
+
#: lib/wordfenceClass.php:6096
|
8419 |
msgid "Don't ask again"
|
8420 |
msgstr ""
|
8421 |
|
8422 |
+
#: lib/wordfenceClass.php:6098
|
8423 |
msgid "Download Backup File"
|
8424 |
msgstr ""
|
8425 |
|
8426 |
+
#: lib/wordfenceClass.php:6099
|
8427 |
msgid "Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:"
|
8428 |
msgstr ""
|
8429 |
|
8430 |
+
#: lib/wordfenceClass.php:6100
|
8431 |
msgid "Email Diagnostic Report"
|
8432 |
msgstr ""
|
8433 |
|
8434 |
+
#: lib/wordfenceClass.php:6101
|
8435 |
msgid "Email Wordfence Activity Log"
|
8436 |
msgstr ""
|
8437 |
|
8438 |
+
#: lib/wordfenceClass.php:6103
|
8439 |
msgid "Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data."
|
8440 |
msgstr ""
|
8441 |
|
8442 |
+
#: lib/wordfenceClass.php:6104
|
8443 |
msgid "Error"
|
8444 |
msgstr ""
|
8445 |
|
8446 |
+
#: lib/wordfenceClass.php:6105
|
8447 |
msgid "Error Enabling All Options Page"
|
8448 |
msgstr ""
|
8449 |
|
8450 |
+
#: lib/wordfenceClass.php:6106
|
8451 |
msgid "Error Restoring Defaults"
|
8452 |
msgstr ""
|
8453 |
|
8454 |
+
#: lib/wordfenceClass.php:6107
|
8455 |
msgid "Error Saving Option"
|
8456 |
msgstr ""
|
8457 |
|
8458 |
+
#: lib/wordfenceClass.php:6108
|
8459 |
msgid "Error Saving Options"
|
8460 |
msgstr ""
|
8461 |
|
8462 |
+
#: lib/wordfenceClass.php:6109
|
8463 |
msgid "Failed Login"
|
8464 |
msgstr ""
|
8465 |
|
8466 |
+
#: lib/wordfenceClass.php:6110
|
8467 |
msgid "Failed Login: Invalid Username"
|
8468 |
msgstr ""
|
8469 |
|
8470 |
+
#: lib/wordfenceClass.php:6111
|
8471 |
msgid "Failed Login: Valid Username"
|
8472 |
msgstr ""
|
8473 |
|
8474 |
+
#: lib/wordfenceClass.php:6112
|
8475 |
msgid "File hidden successfully"
|
8476 |
msgstr ""
|
8477 |
|
8478 |
+
#: lib/wordfenceClass.php:6113
|
8479 |
msgid "File restored OK"
|
8480 |
msgstr ""
|
8481 |
|
8482 |
+
#: lib/wordfenceClass.php:6114
|
8483 |
msgid "Filter Traffic"
|
8484 |
msgstr ""
|
8485 |
|
8486 |
+
#: lib/wordfenceClass.php:6115
|
8487 |
msgid "Firewall Response"
|
8488 |
msgstr ""
|
8489 |
|
8490 |
+
#: lib/wordfenceClass.php:6116
|
8491 |
#: views/scanner/issue-wpscan_fullPathDiscl.php:8
|
8492 |
msgid "Full Path Disclosure"
|
8493 |
msgstr ""
|
8494 |
|
8495 |
+
#: lib/wordfenceClass.php:6117
|
8496 |
msgid "Google Bot"
|
8497 |
msgstr ""
|
8498 |
|
8499 |
+
#: lib/wordfenceClass.php:6118
|
8500 |
msgid "Google Crawlers"
|
8501 |
msgstr ""
|
8502 |
|
8503 |
+
#: lib/wordfenceClass.php:6119
|
8504 |
msgid "HTTP Response Code"
|
8505 |
msgstr ""
|
8506 |
|
8507 |
+
#: lib/wordfenceClass.php:6121
|
8508 |
msgid "Humans"
|
8509 |
msgstr ""
|
8510 |
|
8511 |
+
#: lib/wordfenceClass.php:6123
|
8512 |
msgid "Key:"
|
8513 |
msgstr ""
|
8514 |
|
8515 |
#. translators: Localized date.
|
8516 |
+
#: lib/wordfenceClass.php:6124
|
8517 |
msgid "Last Updated: %s"
|
8518 |
msgstr ""
|
8519 |
|
8520 |
#. translators: Localized date.
|
8521 |
+
#: lib/wordfenceClass.php:6125
|
8522 |
msgid "Learn more about repairing modified files."
|
8523 |
msgstr ""
|
8524 |
|
8525 |
+
#: lib/wordfenceClass.php:6127
|
8526 |
msgid "Locked Out"
|
8527 |
msgstr ""
|
8528 |
|
8529 |
+
#: lib/wordfenceClass.php:6128
|
8530 |
msgid "Locked out from logging in"
|
8531 |
msgstr ""
|
8532 |
|
8533 |
+
#: lib/wordfenceClass.php:6129
|
8534 |
msgid "Logged In"
|
8535 |
msgstr ""
|
8536 |
|
8537 |
+
#: lib/wordfenceClass.php:6130
|
8538 |
msgid "Logins"
|
8539 |
msgstr ""
|
8540 |
|
8541 |
+
#: lib/wordfenceClass.php:6131
|
8542 |
msgid "Logins and Logouts"
|
8543 |
msgstr ""
|
8544 |
|
8545 |
#. translators: Localized date.
|
8546 |
+
#: lib/wordfenceClass.php:6134
|
8547 |
msgid "Next Update Check: %s"
|
8548 |
msgstr ""
|
8549 |
|
8550 |
#. translators: Localized date.
|
8551 |
+
#: lib/wordfenceClass.php:6135
|
8552 |
msgid "No activity to report yet. Please complete your first scan."
|
8553 |
msgstr ""
|
8554 |
|
8555 |
+
#: lib/wordfenceClass.php:6136
|
8556 |
msgid "No issues have been ignored."
|
8557 |
msgstr ""
|
8558 |
|
8559 |
+
#: lib/wordfenceClass.php:6137
|
8560 |
msgid "No new issues have been found."
|
8561 |
msgstr ""
|
8562 |
|
8563 |
+
#: lib/wordfenceClass.php:6138
|
8564 |
msgid "No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory."
|
8565 |
msgstr ""
|
8566 |
|
8567 |
+
#: lib/wordfenceClass.php:6139
|
8568 |
msgid "No rules were updated. Please verify your website can reach the Wordfence servers."
|
8569 |
msgstr ""
|
8570 |
|
8571 |
+
#: lib/wordfenceClass.php:6140
|
8572 |
msgid "No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later."
|
8573 |
msgstr ""
|
8574 |
|
8575 |
+
#: lib/wordfenceClass.php:6141
|
8576 |
msgid "Note: Status will update when changes are saved"
|
8577 |
msgstr ""
|
8578 |
|
8579 |
+
#: lib/wordfenceClass.php:6142
|
8580 |
msgid "OK"
|
8581 |
msgstr ""
|
8582 |
|
8583 |
+
#: lib/wordfenceClass.php:6143
|
8584 |
msgid "Pages Not Found"
|
8585 |
msgstr ""
|
8586 |
|
8587 |
+
#: lib/wordfenceClass.php:6144
|
8588 |
msgid "Paid Members Only"
|
8589 |
msgstr ""
|
8590 |
|
8591 |
+
#: lib/wordfenceClass.php:6146
|
8592 |
msgid "Please enter a valid email address."
|
8593 |
msgstr ""
|
8594 |
|
8595 |
+
#: lib/wordfenceClass.php:6147
|
8596 |
msgid "Please include your support ticket number or forum username."
|
8597 |
msgstr ""
|
8598 |
|
8599 |
+
#: lib/wordfenceClass.php:6148
|
8600 |
msgid "Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site's root:"
|
8601 |
msgstr ""
|
8602 |
|
8603 |
+
#: lib/wordfenceClass.php:6149
|
8604 |
msgid "Please specify a reason"
|
8605 |
msgstr ""
|
8606 |
|
8607 |
+
#: lib/wordfenceClass.php:6150
|
8608 |
msgid "Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash."
|
8609 |
msgstr ""
|
8610 |
|
8611 |
+
#: lib/wordfenceClass.php:6151
|
8612 |
msgid "Please specify either an IP address range, Hostname or a web browser pattern to match."
|
8613 |
msgstr ""
|
8614 |
|
8615 |
+
#: lib/wordfenceClass.php:6152
|
8616 |
msgid "Recent Activity"
|
8617 |
msgstr ""
|
8618 |
|
8619 |
+
#: lib/wordfenceClass.php:6153
|
8620 |
msgid "Recovery Codes"
|
8621 |
msgstr ""
|
8622 |
|
8623 |
+
#: lib/wordfenceClass.php:6154
|
8624 |
msgid "Redirected"
|
8625 |
msgstr ""
|
8626 |
|
8627 |
+
#: lib/wordfenceClass.php:6155
|
8628 |
msgid "Redirected by Country Blocking bypass URL"
|
8629 |
msgstr ""
|
8630 |
|
8631 |
+
#: lib/wordfenceClass.php:6156
|
8632 |
msgid "Referer"
|
8633 |
msgstr ""
|
8634 |
|
8635 |
+
#: lib/wordfenceClass.php:6157
|
8636 |
msgid "Registered Users"
|
8637 |
msgstr ""
|
8638 |
|
8639 |
+
#: lib/wordfenceClass.php:6159
|
8640 |
msgid "Rule Update Failed"
|
8641 |
msgstr ""
|
8642 |
|
8643 |
+
#: lib/wordfenceClass.php:6160
|
8644 |
msgid "Rules Updated"
|
8645 |
msgstr ""
|
8646 |
|
8647 |
+
#: lib/wordfenceClass.php:6162
|
8648 |
msgid "Scan Complete."
|
8649 |
msgstr ""
|
8650 |
|
8651 |
+
#: lib/wordfenceClass.php:6163
|
8652 |
msgid "Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead."
|
8653 |
msgstr ""
|
8654 |
|
8655 |
+
#: lib/wordfenceClass.php:6164
|
8656 |
msgid "Security Event"
|
8657 |
msgstr ""
|
8658 |
|
8659 |
+
#: lib/wordfenceClass.php:6165
|
8660 |
msgid "Send"
|
8661 |
msgstr ""
|
8662 |
|
8663 |
+
#: lib/wordfenceClass.php:6166
|
8664 |
msgid "Sorry, but no data for that IP or domain was found."
|
8665 |
msgstr ""
|
8666 |
|
8667 |
+
#: lib/wordfenceClass.php:6167
|
8668 |
msgid "Specify a valid IP range"
|
8669 |
msgstr ""
|
8670 |
|
8671 |
+
#: lib/wordfenceClass.php:6168
|
8672 |
msgid "Specify a valid hostname"
|
8673 |
msgstr ""
|
8674 |
|
8675 |
+
#: lib/wordfenceClass.php:6169
|
8676 |
msgid "Specify an IP range, Hostname or Browser pattern"
|
8677 |
msgstr ""
|
8678 |
|
8679 |
+
#: lib/wordfenceClass.php:6170
|
8680 |
msgid "Success deleting file"
|
8681 |
msgstr ""
|
8682 |
|
8683 |
+
#: lib/wordfenceClass.php:6171
|
8684 |
msgid "Success removing option"
|
8685 |
msgstr ""
|
8686 |
|
8687 |
+
#: lib/wordfenceClass.php:6172
|
8688 |
msgid "Success restoring file"
|
8689 |
msgstr ""
|
8690 |
|
8691 |
+
#: lib/wordfenceClass.php:6173
|
8692 |
msgid "Success updating option"
|
8693 |
msgstr ""
|
8694 |
|
8695 |
+
#: lib/wordfenceClass.php:6174
|
8696 |
msgid "Successfully deleted admin"
|
8697 |
msgstr ""
|
8698 |
|
8699 |
+
#: lib/wordfenceClass.php:6175
|
8700 |
msgid "Successfully revoked admin"
|
8701 |
msgstr ""
|
8702 |
|
8703 |
+
#: lib/wordfenceClass.php:6176
|
8704 |
msgid "Test Email Sent"
|
8705 |
msgstr ""
|
8706 |
|
8707 |
+
#: lib/wordfenceClass.php:6177
|
8708 |
msgid "The 'How does Wordfence get IPs' option was successfully updated to the recommended value."
|
8709 |
msgstr ""
|
8710 |
|
8711 |
+
#: lib/wordfenceClass.php:6178
|
8712 |
msgid "The Full Path disclosure issue has been fixed"
|
8713 |
msgstr ""
|
8714 |
|
8715 |
#. translators: WordPress username.
|
8716 |
+
#: lib/wordfenceClass.php:6179
|
8717 |
msgid "The admin user %s was successfully deleted."
|
8718 |
msgstr ""
|
8719 |
|
8720 |
#. translators: File path.
|
8721 |
+
#: lib/wordfenceClass.php:6180
|
8722 |
msgid "The file %s was successfully deleted."
|
8723 |
msgstr ""
|
8724 |
|
8725 |
#. translators: File path.
|
8726 |
+
#: lib/wordfenceClass.php:6181
|
8727 |
msgid "The file %s was successfully hidden from public view."
|
8728 |
msgstr ""
|
8729 |
|
8730 |
#. translators: File path.
|
8731 |
+
#: lib/wordfenceClass.php:6182
|
8732 |
msgid "The file %s was successfully restored."
|
8733 |
msgstr ""
|
8734 |
|
8735 |
#. translators: WordPress option.
|
8736 |
+
#: lib/wordfenceClass.php:6183
|
8737 |
msgid "The option %s was successfully removed."
|
8738 |
msgstr ""
|
8739 |
|
8740 |
#. translators: WordPress option.
|
8741 |
+
#: lib/wordfenceClass.php:6184
|
8742 |
msgid "The request has been allowlisted. Please try it again."
|
8743 |
msgstr ""
|
8744 |
|
8745 |
+
#: lib/wordfenceClass.php:6185
|
8746 |
msgid "There was an error while sending the email."
|
8747 |
msgstr ""
|
8748 |
|
8749 |
+
#: lib/wordfenceClass.php:6186
|
8750 |
msgid "This will be shown only once. Keep these codes somewhere safe."
|
8751 |
msgstr ""
|
8752 |
|
8753 |
+
#: lib/wordfenceClass.php:6187
|
8754 |
msgid "Throttled"
|
8755 |
msgstr ""
|
8756 |
|
8757 |
+
#: lib/wordfenceClass.php:6188
|
8758 |
msgid "Two Factor Status"
|
8759 |
msgstr ""
|
8760 |
|
8761 |
#. translators: HTTP client type.
|
8762 |
+
#: lib/wordfenceClass.php:6190
|
8763 |
msgid "Type: %s"
|
8764 |
msgstr ""
|
8765 |
|
8766 |
#. translators: HTTP client type.
|
8767 |
+
#: lib/wordfenceClass.php:6191
|
8768 |
#: views/scanner/issue-checkGSB.php:8
|
8769 |
#: views/scanner/issue-commentBadURL.php:8
|
8770 |
#: views/scanner/issue-configReadable.php:12
|
8784 |
msgid "URL"
|
8785 |
msgstr ""
|
8786 |
|
8787 |
+
#: lib/wordfenceClass.php:6192
|
8788 |
msgid "Unable to automatically hide file"
|
8789 |
msgstr ""
|
8790 |
|
8791 |
#. translators: 2FA backup codes.
|
8792 |
+
#: lib/wordfenceClass.php:6193
|
8793 |
msgid "Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
|
8794 |
msgstr ""
|
8795 |
|
8796 |
#. translators: 2FA backup codes.
|
8797 |
+
#: lib/wordfenceClass.php:6194
|
8798 |
msgid "Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
|
8799 |
msgstr ""
|
8800 |
|
8801 |
+
#: lib/wordfenceClass.php:6196
|
8802 |
msgid "User ID"
|
8803 |
msgstr ""
|
8804 |
|
8805 |
+
#: lib/wordfenceClass.php:6198
|
8806 |
msgid "WHOIS LOOKUP"
|
8807 |
msgstr ""
|
8808 |
|
8809 |
+
#: lib/wordfenceClass.php:6199
|
8810 |
msgid "We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding."
|
8811 |
msgstr ""
|
8812 |
|
8813 |
#. translators: Error message.
|
8814 |
+
#: lib/wordfenceClass.php:6200
|
8815 |
msgid "We can't modify your .htaccess file for you because: %s"
|
8816 |
msgstr ""
|
8817 |
|
8818 |
#. translators: Error message.
|
8819 |
+
#: lib/wordfenceClass.php:6201
|
8820 |
msgid "We encountered a problem"
|
8821 |
msgstr ""
|
8822 |
|
8823 |
#. translators: URL.
|
8824 |
+
#: lib/wordfenceClass.php:6202
|
8825 |
msgid "Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."
|
8826 |
msgstr ""
|
8827 |
|
8828 |
#. translators: URL.
|
8829 |
+
#: lib/wordfenceClass.php:6203
|
8830 |
msgid "Wordfence is working..."
|
8831 |
msgstr ""
|
8832 |
|
8833 |
+
#: lib/wordfenceClass.php:6204
|
8834 |
+
msgid "You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank' rel='noopener noreferrer' href='https://nginx.org/en/docs/http/ngx_http_autoindex_module.html'>Nginx docs for more info</a> on how to do this."
|
8835 |
msgstr ""
|
8836 |
|
8837 |
+
#: lib/wordfenceClass.php:6205
|
8838 |
msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files."
|
8839 |
msgstr ""
|
8840 |
|
8841 |
+
#: lib/wordfenceClass.php:6206
|
8842 |
msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>"
|
8843 |
msgstr ""
|
8844 |
|
8845 |
+
#: lib/wordfenceClass.php:6207
|
8846 |
msgid "You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping."
|
8847 |
msgstr ""
|
8848 |
|
8849 |
+
#: lib/wordfenceClass.php:6208
|
8850 |
msgid "You have unsaved changes to your options. If you leave this page, those changes will be lost."
|
8851 |
msgstr ""
|
8852 |
|
8853 |
+
#: lib/wordfenceClass.php:6209
|
8854 |
msgid "Your .htaccess has been updated successfully. Please verify your site is functioning normally."
|
8855 |
msgstr ""
|
8856 |
|
8857 |
#. translators: Email address.
|
8858 |
+
#: lib/wordfenceClass.php:6210
|
8859 |
msgid "Your Wordfence activity log was sent to %s"
|
8860 |
msgstr ""
|
8861 |
|
8862 |
#. translators: Email address.
|
8863 |
+
#: lib/wordfenceClass.php:6211
|
8864 |
msgid "Your rules have been updated successfully."
|
8865 |
msgstr ""
|
8866 |
|
8867 |
+
#: lib/wordfenceClass.php:6212
|
8868 |
msgid "Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href=\"https://www.wordfence.com/wafUpdateRules1/wordfence-signup/\">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>"
|
8869 |
msgstr ""
|
8870 |
|
8871 |
#. translators: wp_mail() return value.
|
8872 |
+
#: lib/wordfenceClass.php:6213
|
8873 |
msgid "Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered."
|
8874 |
msgstr ""
|
8875 |
|
8876 |
#. translators: wp_mail() return value.
|
8877 |
+
#: lib/wordfenceClass.php:6214
|
8878 |
msgid "blocked by firewall"
|
8879 |
msgstr ""
|
8880 |
|
8881 |
#. translators: Reason for firewall action.
|
8882 |
+
#: lib/wordfenceClass.php:6215
|
8883 |
msgid "blocked by firewall for %s"
|
8884 |
msgstr ""
|
8885 |
|
8886 |
#. translators: Reason for firewall action.
|
8887 |
+
#: lib/wordfenceClass.php:6216
|
8888 |
msgid "blocked by real-time IP blocklist"
|
8889 |
msgstr ""
|
8890 |
|
8891 |
+
#: lib/wordfenceClass.php:6217
|
8892 |
msgid "blocked by the Wordfence Security Network"
|
8893 |
msgstr ""
|
8894 |
|
8895 |
#. translators: Reason for firewall action.
|
8896 |
+
#: lib/wordfenceClass.php:6218
|
8897 |
msgid "blocked for %s"
|
8898 |
msgstr ""
|
8899 |
|
8900 |
#. translators: Reason for firewall action.
|
8901 |
+
#: lib/wordfenceClass.php:6219
|
8902 |
msgid "locked out from logging in"
|
8903 |
msgstr ""
|
8904 |
|
8905 |
+
#: lib/wordfenceClass.php:6232
|
8906 |
msgid "Wordfence generated an error on activation. The output we received during activation was:"
|
8907 |
msgstr ""
|
8908 |
|
8909 |
+
#: lib/wordfenceClass.php:6239
|
8910 |
msgid "Wordfence could not register with the Wordfence scanning servers when it activated."
|
8911 |
msgstr ""
|
8912 |
|
8913 |
+
#: lib/wordfenceClass.php:6240
|
8914 |
msgid "You can try to fix this by deactivating Wordfence and then activating it again, so Wordfence will retry registering for you. If you keep seeing this error, it usually means your WordPress server can't connect to our scanning servers, or your wfConfig database table cannot be created to save the key. You can try asking your host to allow your server to connect to noc1.wordfence.com or check the wfConfig database table and database privileges."
|
8915 |
msgstr ""
|
8916 |
|
8917 |
+
#: lib/wordfenceClass.php:6254
|
8918 |
msgid "The Wordfence Web Application Firewall cannot run."
|
8919 |
msgstr ""
|
8920 |
|
8921 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
8922 |
+
#: lib/wordfenceClass.php:6257
|
8923 |
+
msgid "The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href=\"%1$s\">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
|
8924 |
msgstr ""
|
8925 |
|
8926 |
+
#: lib/wordfenceClass.php:6263
|
8927 |
msgid "The WAF storage engine is currently set to mysqli, but Wordfence is unable to use the database. The WAF will fall back to using local file system storage instead."
|
8928 |
msgstr ""
|
8929 |
|
8930 |
+
#: lib/wordfenceClass.php:6276
|
8931 |
+
#: lib/wordfenceClass.php:6295
|
8932 |
msgid "The Wordfence Web Application Firewall needs a configuration update."
|
8933 |
msgstr ""
|
8934 |
|
8935 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
8936 |
+
#: lib/wordfenceClass.php:6279
|
8937 |
+
msgid "It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a>. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
|
8938 |
msgstr ""
|
8939 |
|
8940 |
#. translators: 1. WordPress admin panel URL. 2. Support URL.
|
8941 |
+
#: lib/wordfenceClass.php:6298
|
8942 |
+
msgid "It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a> or use the \"Optimize the Wordfence Firewall\" button on the Firewall Options page. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
|
8943 |
msgstr ""
|
8944 |
|
8945 |
+
#: lib/wordfenceClass.php:6304
|
8946 |
msgid "The Wordfence Web Application Firewall is in read-only mode."
|
8947 |
msgstr ""
|
8948 |
|
8949 |
+
#: lib/wordfenceClass.php:6313
|
8950 |
msgid "This site is currently using PHP's built in REMOTE_ADDR."
|
8951 |
msgstr ""
|
8952 |
|
8953 |
+
#: lib/wordfenceClass.php:6316
|
8954 |
msgid "This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
|
8955 |
msgstr ""
|
8956 |
|
8957 |
+
#: lib/wordfenceClass.php:6319
|
8958 |
msgid "This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
|
8959 |
msgstr ""
|
8960 |
|
8961 |
+
#: lib/wordfenceClass.php:6322
|
8962 |
msgid "This site is currently using the Cloudflare \"CF-Connecting-IP\" HTTP header, which should only be used when the site is behind Cloudflare."
|
8963 |
msgstr ""
|
8964 |
|
8965 |
+
#: lib/wordfenceClass.php:6339
|
8966 |
msgid "Your 'How does Wordfence get IPs' setting is misconfigured."
|
8967 |
msgstr ""
|
8968 |
|
8969 |
+
#: lib/wordfenceClass.php:6341
|
8970 |
msgid "Click here to use the recommended setting"
|
8971 |
msgstr ""
|
8972 |
|
8973 |
+
#: lib/wordfenceClass.php:6343
|
8974 |
#: views/onboarding/fresh-install.php:39
|
8975 |
msgid "or"
|
8976 |
msgstr ""
|
8977 |
|
8978 |
+
#: lib/wordfenceClass.php:6345
|
8979 |
msgid "visit the options page"
|
8980 |
msgstr ""
|
8981 |
|
8982 |
+
#: lib/wordfenceClass.php:6347
|
8983 |
msgid "to manually update it."
|
8984 |
msgstr ""
|
8985 |
|
8986 |
+
#: lib/wordfenceClass.php:6355
|
8987 |
msgid "Do you want Wordfence to stay up-to-date automatically?"
|
8988 |
msgstr ""
|
8989 |
|
8990 |
+
#: lib/wordfenceClass.php:6357
|
8991 |
msgid "Yes, enable auto-update."
|
8992 |
msgstr ""
|
8993 |
|
8994 |
+
#: lib/wordfenceClass.php:6359
|
8995 |
msgid "No thanks."
|
8996 |
msgstr ""
|
8997 |
|
8998 |
+
#: lib/wordfenceClass.php:6383
|
8999 |
+
msgid "Wordfence country blocking is currently set to block the United States. We recommend allowing access from the United States for Google and other benign crawlers, unless you choose to only block the login page."
|
9000 |
+
msgstr ""
|
9001 |
+
|
9002 |
#. translators: Localized date.
|
9003 |
+
#: lib/wordfenceClass.php:6476
|
9004 |
msgid "The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then."
|
9005 |
msgstr ""
|
9006 |
|
9007 |
#. translators: 1. Localized date. 2. WordPress admin panel URL.
|
9008 |
+
#: lib/wordfenceClass.php:6484
|
9009 |
msgid "You may wait for the next automatic attempt at %1$s or try to <a href=\"%2$s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
9010 |
msgstr ""
|
9011 |
|
9012 |
#. translators: WordPress admin panel URL.
|
9013 |
+
#: lib/wordfenceClass.php:6490
|
9014 |
msgid "You may wait for the next automatic attempt or try to <a href=\"%s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
9015 |
msgstr ""
|
9016 |
|
9017 |
#. translators: WordPress admin panel URL.
|
9018 |
+
#: lib/wordfenceClass.php:6495
|
9019 |
msgid "You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
9020 |
msgstr ""
|
9021 |
|
9022 |
+
#: lib/wordfenceClass.php:6498
|
9023 |
msgid "You may wait for the next automatic attempt or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
|
9024 |
msgstr ""
|
9025 |
|
9026 |
+
#: lib/wordfenceClass.php:6605
|
9027 |
#: models/page/wfPage.php:101
|
9028 |
msgid "Dashboard"
|
9029 |
msgstr ""
|
9030 |
|
9031 |
#. translators: Number of notifications.
|
9032 |
+
#: lib/wordfenceClass.php:6685
|
9033 |
msgid "You have %d new Wordfence notification."
|
9034 |
msgid_plural "You have %d new Wordfence notifications."
|
9035 |
msgstr[0] ""
|
9036 |
msgstr[1] ""
|
9037 |
|
9038 |
+
#: lib/wordfenceClass.php:6709
|
9039 |
msgid "JavaScript Errors"
|
9040 |
msgstr ""
|
9041 |
|
9042 |
+
#: lib/wordfenceClass.php:6715
|
9043 |
msgid "Malware URLs"
|
9044 |
msgstr ""
|
9045 |
|
9046 |
#. translators: WordPress admin panel URL.
|
9047 |
+
#: lib/wordfenceClass.php:6833
|
9048 |
+
#: lib/wordfenceClass.php:6896
|
9049 |
msgid "<a href=\"%s\">Click here</a> to rebuild the configuration file."
|
9050 |
msgstr ""
|
9051 |
|
9052 |
#. translators: File path.
|
9053 |
+
#: lib/wordfenceClass.php:6844
|
9054 |
+
#: lib/wordfenceClass.php:6907
|
9055 |
msgid "We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it."
|
9056 |
msgstr ""
|
9057 |
|
9058 |
+
#: lib/wordfenceClass.php:6854
|
9059 |
+
#: lib/wordfenceClass.php:6917
|
9060 |
msgid "An error occured when fetching the WAF configuration from the database."
|
9061 |
msgstr ""
|
9062 |
|
9063 |
#. translators: Plugin name.
|
9064 |
+
#: lib/wordfenceClass.php:6939
|
9065 |
msgid "The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic."
|
9066 |
msgstr ""
|
9067 |
|
9068 |
#. translators: 1. Plugin name.
|
9069 |
+
#: lib/wordfenceClass.php:6941
|
9070 |
msgid "If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly."
|
9071 |
msgstr ""
|
9072 |
|
9073 |
#. translators: File path.
|
9074 |
+
#: lib/wordfenceClass.php:7002
|
9075 |
msgid "The file <code>%s</code> was restored successfully."
|
9076 |
msgstr ""
|
9077 |
|
9078 |
+
#: lib/wordfenceClass.php:7007
|
9079 |
msgid "There was an error restoring the file."
|
9080 |
msgstr ""
|
9081 |
|
9082 |
+
#: lib/wordfenceClass.php:7017
|
9083 |
+
#: lib/wordfenceClass.php:7040
|
9084 |
msgid "Return to scan results"
|
9085 |
msgstr ""
|
9086 |
|
9087 |
#. translators: File path.
|
9088 |
+
#: lib/wordfenceClass.php:7026
|
9089 |
msgid "The file <code>%s</code> was deleted successfully."
|
9090 |
msgstr ""
|
9091 |
|
9092 |
+
#: lib/wordfenceClass.php:7030
|
9093 |
msgid "There was an error deleting the file."
|
9094 |
msgstr ""
|
9095 |
|
9096 |
#. translators: IP address.
|
9097 |
+
#: lib/wordfenceClass.php:7098
|
9098 |
msgid ""
|
9099 |
"User IP: %s\n"
|
9100 |
""
|
9101 |
msgstr ""
|
9102 |
|
9103 |
#. translators: Domain name.
|
9104 |
+
#: lib/wordfenceClass.php:7101
|
9105 |
msgid ""
|
9106 |
"User hostname: %s\n"
|
9107 |
""
|
9108 |
msgstr ""
|
9109 |
|
9110 |
+
#: lib/wordfenceClass.php:7105
|
9111 |
msgid "User location: "
|
9112 |
msgstr ""
|
9113 |
|
9114 |
#. translators: WordPress admin panel URL.
|
9115 |
+
#: lib/wordfenceClass.php:7160
|
9116 |
msgid "No longer an administrator for this site? Click here to stop receiving security alerts: %s"
|
9117 |
msgstr ""
|
9118 |
|
9119 |
+
#: lib/wordfenceClass.php:7200
|
9120 |
msgid "The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]"
|
9121 |
msgstr ""
|
9122 |
|
9123 |
+
#: lib/wordfenceClass.php:7219
|
9124 |
msgid "Invalid email address provided"
|
9125 |
msgstr ""
|
9126 |
|
9127 |
+
#: lib/wordfenceClass.php:7224
|
9128 |
msgid "Test email sent successfully"
|
9129 |
msgstr ""
|
9130 |
|
9131 |
+
#: lib/wordfenceClass.php:7225
|
9132 |
msgid "Test email failed to send"
|
9133 |
msgstr ""
|
9134 |
|
9135 |
#. translators: Localized date range.
|
9136 |
+
#: lib/wordfenceClass.php:7243
|
9137 |
msgid "Wordfence activity in the past %s"
|
9138 |
msgstr ""
|
9139 |
|
9140 |
+
#: lib/wordfenceClass.php:7283
|
9141 |
+
#: lib/wordfenceClass.php:7287
|
9142 |
+
#: lib/wordfenceClass.php:7318
|
9143 |
msgid "We could not find that user in the database."
|
9144 |
msgstr ""
|
9145 |
|
9146 |
+
#: lib/wordfenceClass.php:7291
|
9147 |
msgid "This user's email is the network admin email. It will need to be changed before deleting this user."
|
9148 |
msgstr ""
|
9149 |
|
9150 |
+
#: lib/wordfenceClass.php:7355
|
9151 |
msgid "Wordfence could not find your .htaccess file."
|
9152 |
msgstr ""
|
9153 |
|
9154 |
+
#: lib/wordfenceClass.php:7371
|
9155 |
msgid "Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server."
|
9156 |
msgstr ""
|
9157 |
|
9158 |
+
#: lib/wordfenceClass.php:7377
|
9159 |
msgid "There was an error writing to your .htaccess file."
|
9160 |
msgstr ""
|
9161 |
|
9162 |
+
#: lib/wordfenceClass.php:7456
|
9163 |
msgid "Required parameters not sent."
|
9164 |
msgstr ""
|
9165 |
|
9166 |
+
#: lib/wordfenceClass.php:7466
|
9167 |
msgid "The WAF is currently in read-only mode and will not save any configuration changes."
|
9168 |
msgstr ""
|
9169 |
|
9170 |
+
#: lib/wordfenceClass.php:7504
|
9171 |
#: views/waf/option-whitelist.php:60
|
9172 |
msgid "Allowlisted via Firewall Options page"
|
9173 |
msgstr ""
|
9174 |
|
9175 |
+
#: lib/wordfenceClass.php:7791
|
9176 |
msgid "Allowlisted via Live Traffic"
|
9177 |
msgstr ""
|
9178 |
|
9179 |
+
#: lib/wordfenceClass.php:7955
|
9180 |
+
#: lib/wordfenceClass.php:8052
|
9181 |
msgid "A valid server configuration was not provided."
|
9182 |
msgstr ""
|
9183 |
|
9184 |
+
#: lib/wordfenceClass.php:7966
|
9185 |
+
#: lib/wordfenceClass.php:8073
|
9186 |
msgid "Filesystem Credentials Required"
|
9187 |
msgstr ""
|
9188 |
|
9189 |
#. translators: Support URL.
|
9190 |
+
#: lib/wordfenceClass.php:7968
|
9191 |
+
#: lib/wordfenceClass.php:7992
|
9192 |
+
#: lib/wordfenceClass.php:8036
|
9193 |
+
#: lib/wordfenceClass.php:8928
|
9194 |
+
msgid "If you cannot complete the setup process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> ("
|
9195 |
msgstr ""
|
9196 |
|
9197 |
#. translators: Support URL.
|
9198 |
+
#: lib/wordfenceClass.php:7969
|
9199 |
msgid "Once you have entered credentials, click Continue to complete the setup."
|
9200 |
msgstr ""
|
9201 |
|
9202 |
+
#: lib/wordfenceClass.php:7990
|
9203 |
+
#: lib/wordfenceClass.php:8098
|
9204 |
msgid "Filesystem Permission Error"
|
9205 |
msgstr ""
|
9206 |
|
9207 |
+
#: lib/wordfenceClass.php:8016
|
9208 |
msgid "Manual Installation Instructions"
|
9209 |
msgstr ""
|
9210 |
|
9211 |
+
#: lib/wordfenceClass.php:8023
|
9212 |
msgid "Installation Successful"
|
9213 |
msgstr ""
|
9214 |
|
9215 |
+
#: lib/wordfenceClass.php:8034
|
9216 |
msgid "Installation Failed"
|
9217 |
msgstr ""
|
9218 |
|
9219 |
#. translators: Support URL.
|
9220 |
+
#: lib/wordfenceClass.php:8075
|
9221 |
+
#: lib/wordfenceClass.php:8100
|
9222 |
+
#: lib/wordfenceClass.php:8131
|
9223 |
+
#: lib/wordfenceClass.php:8160
|
9224 |
+
#: lib/wordfenceClass.php:8206
|
9225 |
+
msgid "If you cannot complete the uninstall process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> ("
|
|
|
9226 |
msgstr ""
|
9227 |
|
9228 |
#. translators: Support URL.
|
9229 |
+
#: lib/wordfenceClass.php:8076
|
9230 |
msgid "Once you have entered credentials, click Continue to complete uninstallation."
|
9231 |
msgstr ""
|
9232 |
|
9233 |
+
#: lib/wordfenceClass.php:8120
|
9234 |
msgid "The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled."
|
9235 |
msgstr ""
|
9236 |
|
9237 |
+
#: lib/wordfenceClass.php:8122
|
9238 |
msgid "Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed."
|
9239 |
msgstr ""
|
9240 |
|
9241 |
#. translators: Time until.
|
9242 |
+
#: lib/wordfenceClass.php:8126
|
9243 |
msgid "Waiting for it to take effect. This may take up to %s."
|
9244 |
msgstr ""
|
9245 |
|
9246 |
+
#: lib/wordfenceClass.php:8129
|
9247 |
msgid "Waiting for Changes"
|
9248 |
msgstr ""
|
9249 |
|
9250 |
+
#: lib/wordfenceClass.php:8151
|
9251 |
msgid "Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP."
|
9252 |
msgstr ""
|
9253 |
|
9254 |
+
#: lib/wordfenceClass.php:8153
|
9255 |
msgid "Retrying Failed."
|
9256 |
msgstr ""
|
9257 |
|
9258 |
+
#: lib/wordfenceClass.php:8155
|
9259 |
msgid "Try Again"
|
9260 |
msgstr ""
|
9261 |
|
9262 |
+
#: lib/wordfenceClass.php:8158
|
9263 |
msgid "Unable to Uninstall"
|
9264 |
msgstr ""
|
9265 |
|
9266 |
+
#: lib/wordfenceClass.php:8194
|
9267 |
msgid "Uninstallation Complete"
|
9268 |
msgstr ""
|
9269 |
|
9270 |
+
#: lib/wordfenceClass.php:8204
|
9271 |
msgid "Uninstallation Failed"
|
9272 |
msgstr ""
|
9273 |
|
9274 |
#. translators: 1. Number of attacks/blocks. 2. Time since.
|
9275 |
+
#: lib/wordfenceClass.php:8358
|
9276 |
msgid "The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s. Below is a sample of these recent attacks:"
|
9277 |
msgstr ""
|
9278 |
|
9279 |
+
#: lib/wordfenceClass.php:8925
|
9280 |
msgid "To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:"
|
9281 |
msgstr ""
|
9282 |
|
9283 |
+
#: lib/wordfenceClass.php:8925
|
9284 |
msgid "Click here to configure"
|
9285 |
msgstr ""
|
9286 |
|
9287 |
+
#: lib/wordfenceClass.php:8934
|
|
|
|
|
|
|
|
|
|
|
9288 |
#: views/waf/waf-install-success.php:14
|
9289 |
msgid "Nice work! The firewall is now optimized."
|
9290 |
msgstr ""
|
9291 |
|
9292 |
+
#: lib/wordfenceClass.php:8936
|
9293 |
+
#: lib/wordfenceClass.php:8948
|
9294 |
#: views/waf/waf-install-success.php:16
|
9295 |
#: views/waf/waf-uninstall-success.php:19
|
9296 |
msgid "The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page."
|
9297 |
msgstr ""
|
9298 |
|
9299 |
+
#: lib/wordfenceClass.php:8942
|
9300 |
#: views/waf/waf-uninstall-success.php:15
|
9301 |
msgid "Uninstallation was successful!"
|
9302 |
msgstr ""
|
9303 |
|
9304 |
+
#: lib/wordfenceClass.php:8945
|
9305 |
#: views/waf/waf-uninstall-success.php:17
|
9306 |
msgid "Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation."
|
9307 |
msgstr ""
|
9308 |
|
9309 |
+
#: lib/wordfenceClass.php:8953
|
9310 |
msgid "The update was successful!"
|
9311 |
msgstr ""
|
9312 |
|
9313 |
+
#: lib/wordfenceClass.php:9099
|
9314 |
msgid "Auth grant is invalid."
|
9315 |
msgstr ""
|
9316 |
|
9317 |
+
#. translators: Error message.
|
9318 |
+
#: lib/wordfenceClass.php:9114
|
9319 |
+
msgid "Invalid response from Wordfence Central: %s"
|
9320 |
+
msgstr ""
|
9321 |
+
|
9322 |
+
#. translators: JSON property.
|
9323 |
+
#: lib/wordfenceClass.php:9120
|
9324 |
+
#: lib/wordfenceClass.php:9133
|
9325 |
+
msgid "Invalid response from Wordfence Central. Parameter %s not found in response."
|
9326 |
+
msgstr ""
|
9327 |
+
|
9328 |
+
#: lib/wordfenceClass.php:9162
|
9329 |
+
#: lib/wordfenceClass.php:9299
|
9330 |
msgid "Access token not found."
|
9331 |
msgstr ""
|
9332 |
|
9333 |
+
#: lib/wordfenceClass.php:9207
|
9334 |
+
#: lib/wordfenceClass.php:9274
|
9335 |
msgid "Invalid response from Wordfence Central."
|
9336 |
msgstr ""
|
9337 |
|
9338 |
+
#: lib/wordfenceClass.php:9250
|
9339 |
msgid "Auth grant not found."
|
9340 |
msgstr ""
|
9341 |
|
9342 |
+
#: lib/wordfenceClass.php:9516
|
9343 |
msgid "We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation."
|
9344 |
msgstr ""
|
9345 |
|
|
|
9346 |
#: lib/wordfenceClass.php:9608
|
9347 |
+
#: lib/wordfenceClass.php:9679
|
9348 |
msgid "We were unable to make changes to the .htaccess file. It's possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation."
|
9349 |
msgstr ""
|
9350 |
|
9351 |
#. translators: File path.
|
9352 |
+
#: lib/wordfenceClass.php:9649
|
9353 |
+
#: lib/wordfenceClass.php:9697
|
9354 |
msgid "We were unable to make changes to the %1$s file. It's possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation."
|
9355 |
msgstr ""
|
9356 |
|
9357 |
+
#: lib/wordfenceClass.php:9713
|
9358 |
msgid "We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal."
|
9359 |
msgstr ""
|
9360 |
|
9556 |
|
9557 |
#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
|
9558 |
#: lib/wordfenceHash.php:533
|
9559 |
+
msgid "This file belongs to plugin \"%1$s\" version \"%2$s\" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don't manage their code correctly. <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
9560 |
msgstr ""
|
9561 |
|
9562 |
#. translators: File path.
|
9566 |
|
9567 |
#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
|
9568 |
#: lib/wordfenceHash.php:579
|
9569 |
+
msgid "This file belongs to theme \"%1$s\" version \"%2$s\" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
9570 |
msgstr ""
|
9571 |
|
9572 |
#. translators: File path.
|
9592 |
|
9593 |
#. translators: Support URL.
|
9594 |
#: lib/wordfenceHash.php:650
|
9595 |
+
msgid "This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
9596 |
msgstr ""
|
9597 |
|
9598 |
#. translators: 1. Number of files. 2. Data in bytes.
|
9617 |
|
9618 |
#. translators: Number of files.
|
9619 |
#: lib/wordfenceHash.php:763
|
9620 |
+
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
|
9621 |
msgstr ""
|
9622 |
|
9623 |
#: lib/wordfenceScanner.php:87
|
9629 |
msgstr ""
|
9630 |
|
9631 |
#: lib/wordfenceScanner.php:102
|
9632 |
+
msgid "Regex compilation failed for signature %d"
|
9633 |
msgstr ""
|
9634 |
|
9635 |
#. translators: PHP ini setting (number).
|
9728 |
|
9729 |
#. translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL.
|
9730 |
#: lib/wordfenceScanner.php:526
|
9731 |
+
msgid "This file contains a suspected malware URL listed on Google's list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
9732 |
msgstr ""
|
9733 |
|
9734 |
#: lib/wordfenceScanner.php:547
|
9752 |
msgid "Scanned contents of %1$d additional files at %2$.2f per second"
|
9753 |
msgstr ""
|
9754 |
|
9755 |
+
#: lib/wordfenceURLHoover.php:179
|
|
|
|
|
|
|
|
|
|
|
9756 |
msgid "Gathering host keys."
|
9757 |
msgstr ""
|
9758 |
|
9759 |
+
#: lib/wordfenceURLHoover.php:186
|
9760 |
msgid "Using MySQLi directly."
|
9761 |
msgstr ""
|
9762 |
|
9763 |
#. translators: Number of domains.
|
9764 |
+
#: lib/wordfenceURLHoover.php:224
|
9765 |
msgid "Checking %d host keys against Wordfence scanning servers."
|
9766 |
msgstr ""
|
9767 |
|
9768 |
+
#: lib/wordfenceURLHoover.php:226
|
9769 |
msgid "Done host key check."
|
9770 |
msgstr ""
|
9771 |
|
9772 |
#. translators: 1. Number of URLs. 2. Number of files.
|
9773 |
+
#: lib/wordfenceURLHoover.php:310
|
9774 |
msgid "Checking %1$d URLs from %2$d sources."
|
9775 |
msgstr ""
|
9776 |
|
9777 |
+
#: lib/wordfenceURLHoover.php:315
|
9778 |
msgid "Done URL check."
|
9779 |
msgstr ""
|
9780 |
|
9816 |
|
9817 |
#. translators: Support URL
|
9818 |
#: models/block/wfBlock.php:180
|
9819 |
+
msgid "This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
9820 |
msgstr ""
|
9821 |
|
9822 |
#: models/block/wfBlock.php:183
|
9883 |
msgid "Repair the Wordfence Firewall configuration."
|
9884 |
msgstr ""
|
9885 |
|
9886 |
+
#: models/firewall/wfFirewall.php:395
|
9887 |
+
msgid "Re-enable %d firewall rule."
|
9888 |
+
msgid_plural "Re-enable %d firewall rules."
|
9889 |
+
msgstr[0] ""
|
9890 |
+
msgstr[1] ""
|
9891 |
+
|
9892 |
#: models/firewall/wfFirewall.php:452
|
9893 |
msgid "Enable Firewall."
|
9894 |
msgstr ""
|
9968 |
msgid "Enable Premium Reputation Checks."
|
9969 |
msgstr ""
|
9970 |
|
9971 |
+
#: models/scanner/wfScanner.php:778
|
9972 |
+
msgid "Enable %d scan option."
|
9973 |
+
msgid_plural "Enable %d scan options."
|
9974 |
+
msgstr[0] ""
|
9975 |
+
msgstr[1] ""
|
9976 |
+
|
9977 |
#: models/scanner/wfScanner.php:820
|
9978 |
msgid "Enable scan option to check if this website is being \"Spamvertised\"."
|
9979 |
msgstr ""
|
10071 |
msgid "Unblocking"
|
10072 |
msgstr ""
|
10073 |
|
10074 |
+
#: views/blocking/block-list.php:500
|
10075 |
+
msgid "Are you sure you want to stop blocking the selected IP, range, or country?"
|
10076 |
+
msgstr ""
|
10077 |
+
|
10078 |
+
#: views/blocking/block-list.php:500
|
10079 |
+
msgid "Are you sure you want to stop blocking the ${count} selected IPs, ranges, and countries?"
|
10080 |
+
msgstr ""
|
10081 |
+
|
10082 |
#: views/blocking/blocking-create.php:13
|
10083 |
msgid "Block<span class=\"wf-hidden-xs\"> this IP Address</span>"
|
10084 |
msgstr ""
|
10129 |
|
10130 |
#. translators: Support URL
|
10131 |
#: views/blocking/blocking-create.php:149
|
10132 |
+
msgid "If you use Google Ads, blocking countries from accessing the entire site is not recommended. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
10133 |
msgstr ""
|
10134 |
|
10135 |
#: views/blocking/blocking-create.php:153
|
10194 |
msgid "Block<span class=\"wf-hidden-xs\"> Visitors Matching this</span> Pattern"
|
10195 |
msgstr ""
|
10196 |
|
10197 |
+
#: views/blocking/blocking-create.php:512
|
10198 |
+
msgid "Error Saving Block"
|
10199 |
+
msgstr ""
|
10200 |
+
|
10201 |
+
#: views/blocking/blocking-create.php:527
|
10202 |
+
msgid "U.S. Blocked"
|
10203 |
+
msgstr ""
|
10204 |
+
|
10205 |
+
#: views/blocking/blocking-create.php:528
|
10206 |
+
msgid "For most sites, we recommend allowing access from the United States, where Google and other benign crawlers are located. Some well-known crawlers also have locations in Europe, so be careful when blocking other countries, especially if you have not seen significant attacks from them."
|
10207 |
+
msgstr ""
|
10208 |
+
|
10209 |
#: views/blocking/blocking-status.php:15
|
10210 |
msgid "Manage global blocking options."
|
10211 |
msgstr ""
|
10337 |
msgid "Go to"
|
10338 |
msgstr ""
|
10339 |
|
10340 |
+
#: views/common/status-tooltip.php:18
|
10341 |
+
msgid "<strong>Congratulations!</strong> You've optimized configurations for this feature! If you want to learn more about how this score is determined, click the link below."
|
10342 |
+
msgstr ""
|
10343 |
+
|
10344 |
#: views/common/status-tooltip.php:19
|
10345 |
#: views/common/status-tooltip.php:30
|
10346 |
msgid "How does Wordfence determine this?"
|
10415 |
msgid "Detected IP(s):"
|
10416 |
msgstr ""
|
10417 |
|
10418 |
+
#: views/dashboard/option-howgetips.php:33
|
10419 |
+
msgid "Your IP with this setting:"
|
10420 |
+
msgstr ""
|
10421 |
+
|
10422 |
#: views/dashboard/option-howgetips.php:34
|
10423 |
msgid "Edit trusted proxies"
|
10424 |
msgstr ""
|
10675 |
msgstr ""
|
10676 |
|
10677 |
#: views/gdpr/banner.php:50
|
10678 |
+
msgid "We have updated our Terms of Use and Privacy Policy. To continue using Wordfence, you will need to review and accept the updated <a href=\"https://www.wordfence.com/terms-of-use/\" target=\"_blank\" rel=\"noopener noreferrer\">Terms of Use</a> and <a href=\"https://www.wordfence.com/privacy-policy/\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
10679 |
msgstr ""
|
10680 |
|
10681 |
#: views/gdpr/banner.php:51
|
10682 |
+
msgid "You can log in to <a href=\"https://www.wordfence.com/\" target=\"_blank\" rel=\"noopener noreferrer\">wordfence.com<span class=\"screen-reader-text\"> (opens in new tab)</span></a> to accept the updated terms and privacy policy for all of your premium license keys at once."
|
10683 |
msgstr ""
|
10684 |
|
10685 |
#: views/gdpr/banner.php:56
|
10736 |
#: views/onboarding/fresh-install.php:27
|
10737 |
#: views/onboarding/modal-final-attempt.php:56
|
10738 |
#: views/onboarding/plugin-header.php:58
|
10739 |
+
msgid "By checking this box, I agree to the Wordfence <a href=\"https://www.wordfence.com/terms-of-use/\" target=\"_blank\" rel=\"noopener noreferrer\">terms</a> and <a href=\"https://www.wordfence.com/privacy-policy/\" target=\"_blank\" rel=\"noopener noreferrer\">privacy policy<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
10740 |
msgstr ""
|
10741 |
|
10742 |
#. translators: Support URL.
|
10743 |
#: views/onboarding/fresh-install.php:28
|
10744 |
#: views/onboarding/modal-final-attempt.php:57
|
10745 |
#: views/onboarding/plugin-header.php:59
|
10746 |
+
msgid "If you qualify as a data controller under the GDPR and need a data processing agreement, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
10747 |
msgstr ""
|
10748 |
|
10749 |
#: views/onboarding/fresh-install.php:36
|
12030 |
|
12031 |
#. translators: Support URL.
|
12032 |
#: views/tools/options-group-2fa.php:51
|
12033 |
+
msgid "<strong>Require Cellphone Sign-in for all Administrators<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp wf-inline-help\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a></strong><br><em>Note:</em> This setting requires at least one administrator to have Cellphone Sign-in enabled. On multisite, this option applies only to super admins."
|
12034 |
msgstr ""
|
12035 |
|
12036 |
#. translators: Support URL.
|
12037 |
#: views/tools/options-group-2fa.php:63
|
12038 |
+
msgid "<strong>Enable Separate Prompt for Two-Factor Code<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp wf-inline-help\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a></strong><br><em>Note:</em> This setting changes the behavior for obtaining the two-factor authentication code from using the password field to showing a separate prompt. If your theme overrides the default login page, you may not be able to use this option."
|
12039 |
msgstr ""
|
12040 |
|
12041 |
#. translators: Support URL.
|
12231 |
msgstr ""
|
12232 |
|
12233 |
#: views/waf/options-group-advanced-firewall.php:54
|
12234 |
+
msgid "Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically allowlists <a href=\"http://en.wikipedia.org/wiki/Private_network\" target=\"_blank\" rel=\"noopener noreferrer\">private networks<span class=\"screen-reader-text\"> (opens in new tab)</span></a> because these are not routable on the public Internet."
|
12235 |
msgstr ""
|
12236 |
|
12237 |
#: views/waf/options-group-advanced-firewall.php:101
|
12251 |
msgstr ""
|
12252 |
|
12253 |
#: views/waf/options-group-advanced-firewall.php:153
|
12254 |
+
msgid "<a href=\"#\" onclick=\"WFAD.wafUpdateRules();return false;\" role=\"button\">Click here</a> to pull down the latest from the Wordfence servers."
|
12255 |
msgstr ""
|
12256 |
|
12257 |
#: views/waf/options-group-advanced-firewall.php:161
|
12283 |
|
12284 |
#. translators: Support URL.
|
12285 |
#: views/waf/options-group-basic-firewall.php:41
|
12286 |
+
msgid "When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
12287 |
msgstr ""
|
12288 |
|
12289 |
#. translators: Support URL.
|
12318 |
|
12319 |
#. translators: Support URL.
|
12320 |
#: views/waf/options-group-basic-firewall.php:168
|
12321 |
+
msgid "If you're moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">remove them manually<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
12322 |
msgstr ""
|
12323 |
|
12324 |
#. translators: Support URL.
|
12486 |
|
12487 |
#. translators: Support URL.
|
12488 |
#: views/waf/status-tooltip-learning-mode.php:6
|
12489 |
+
msgid "The Web Application Firewall is currently in Learning Mode. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
12490 |
msgstr ""
|
12491 |
|
12492 |
#: views/waf/waf-install-manual.php:10
|
12495 |
|
12496 |
#. translators: Support URL.
|
12497 |
#: views/waf/waf-install-manual.php:12
|
12498 |
+
msgid "You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">in our documentation<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
12499 |
msgstr ""
|
12500 |
|
12501 |
#: views/waf/waf-install.php:9
|
12519 |
msgstr ""
|
12520 |
|
12521 |
#: views/waf/waf-install.php:26
|
12522 |
+
msgid "If you don't recognize this file, please <a href=\"https://wordpress.org/support/plugin/wordfence\" target=\"_blank\" rel=\"noopener noreferrer\">contact us on the WordPress support forums<span class=\"screen-reader-text\"> (opens in new tab)</span></a> before proceeding."
|
12523 |
msgstr ""
|
12524 |
|
12525 |
#: views/waf/waf-install.php:27
|
12587 |
|
12588 |
#. translators: 1. PHP ini setting. 2. Support URL.
|
12589 |
#: views/waf/waf-install.php:63
|
12590 |
+
msgid "Part of the Firewall configuration procedure for NGINX depends on creating a <code>%1$s</code> file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have <a href=\"%2$s\" target=\"_blank\" rel=\"noreferrer noopener\">instructions on our documentation site<span class=\"screen-reader-text\"> (opens in new tab)</span></a> on what directives to put in your nginx.conf to fix this."
|
12591 |
msgstr ""
|
12592 |
|
12593 |
#: views/waf/waf-install.php:65
|
12613 |
msgid "Uninstall Wordfence Firewall"
|
12614 |
msgstr ""
|
12615 |
|
12616 |
+
#: views/waf/waf-uninstall.php:13
|
12617 |
+
msgid "If you cannot complete the uninstall process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
|
12618 |
+
msgstr ""
|
12619 |
+
|
12620 |
#: views/waf/waf-uninstall.php:26
|
12621 |
msgid "Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called <code>auto_prepend_file</code> in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:"
|
12622 |
msgstr ""
|
12623 |
|
12624 |
#. translators: Support URL.
|
12625 |
#: views/waf/waf-uninstall.php:34
|
12626 |
+
msgid "Automatic uninstallation cannot be completed, but you may still be able to <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">manually uninstall extended protection<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
|
12627 |
msgstr ""
|
12628 |
|
12629 |
#: views/waf/waf-uninstall.php:36
|
lib/GeoLite2-Country.mmdb
CHANGED
Binary file
|
lib/IPTrafList.php
CHANGED
@@ -21,7 +21,7 @@ if (!wfUtils::isAdmin()) {
|
|
21 |
<tr>
|
22 |
<th><?php esc_html_e('URL:', 'wordfence') ?></th>
|
23 |
<td>
|
24 |
-
<a href="<?php echo esc_url($v['URL']) ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($v['URL']);
|
25 |
</td>
|
26 |
</tr>
|
27 |
<tr>
|
@@ -38,7 +38,7 @@ if (!wfUtils::isAdmin()) {
|
|
38 |
<tr>
|
39 |
<th><?php esc_html_e('Referrer:', 'wordfence') ?></th>
|
40 |
<td>
|
41 |
-
<a href="<?php echo esc_url($v['referer']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($v['referer']);
|
42 |
</td></tr><?php } ?>
|
43 |
<tr>
|
44 |
<th><?php esc_html_e('Full Browser ID:', 'wordfence') ?></th>
|
@@ -48,7 +48,7 @@ if (!wfUtils::isAdmin()) {
|
|
48 |
<tr>
|
49 |
<th><?php esc_html_e('User:', 'wordfence') ?></th>
|
50 |
<td>
|
51 |
-
<a href="<?php echo esc_url($v['user']['editLink']); ?>" target="_blank" rel="noopener noreferrer"><span data-userid="<?php echo esc_attr($v['user']['ID']); ?>" class="wfAvatar"></span><?php echo esc_html($v['user']['display_name']);
|
52 |
</td>
|
53 |
</tr>
|
54 |
<?php } ?>
|
21 |
<tr>
|
22 |
<th><?php esc_html_e('URL:', 'wordfence') ?></th>
|
23 |
<td>
|
24 |
+
<a href="<?php echo esc_url($v['URL']) ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($v['URL']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
25 |
</td>
|
26 |
</tr>
|
27 |
<tr>
|
38 |
<tr>
|
39 |
<th><?php esc_html_e('Referrer:', 'wordfence') ?></th>
|
40 |
<td>
|
41 |
+
<a href="<?php echo esc_url($v['referer']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($v['referer']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
42 |
</td></tr><?php } ?>
|
43 |
<tr>
|
44 |
<th><?php esc_html_e('Full Browser ID:', 'wordfence') ?></th>
|
48 |
<tr>
|
49 |
<th><?php esc_html_e('User:', 'wordfence') ?></th>
|
50 |
<td>
|
51 |
+
<a href="<?php echo esc_url($v['user']['editLink']); ?>" target="_blank" rel="noopener noreferrer"><span data-userid="<?php echo esc_attr($v['user']['ID']); ?>" class="wfAvatar"></span><?php echo esc_html($v['user']['display_name']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
52 |
</td>
|
53 |
</tr>
|
54 |
<?php } ?>
|
lib/dashboard/widget_countries.php
CHANGED
@@ -21,8 +21,8 @@
|
|
21 |
<?php if (isset($d->countriesNetwork) && count($d->countriesNetwork) > 0): ?>
|
22 |
<div class="wf-dashboard-toggle-btns">
|
23 |
<ul class="wf-pagination wf-pagination-sm">
|
24 |
-
<li class="wf-active"><a href="#" class="wf-dashboard-countries" data-grouping="local">Local Site</a></li>
|
25 |
-
<li><a href="#" class="wf-dashboard-countries" data-grouping="network"><?php esc_html_e('Wordfence Network', 'wordfence') ?></a></li>
|
26 |
</ul>
|
27 |
</div>
|
28 |
<?php endif; ?>
|
21 |
<?php if (isset($d->countriesNetwork) && count($d->countriesNetwork) > 0): ?>
|
22 |
<div class="wf-dashboard-toggle-btns">
|
23 |
<ul class="wf-pagination wf-pagination-sm">
|
24 |
+
<li class="wf-active"><a href="#" class="wf-dashboard-countries" data-grouping="local" role="button">Local Site</a></li>
|
25 |
+
<li><a href="#" class="wf-dashboard-countries" data-grouping="network" role="button"><?php esc_html_e('Wordfence Network', 'wordfence') ?></a></li>
|
26 |
</ul>
|
27 |
</div>
|
28 |
<?php endif; ?>
|
lib/dashboard/widget_ips.php
CHANGED
@@ -25,9 +25,9 @@ if (!isset($limit)) { $limit = 10; $initial = true; }
|
|
25 |
<div>
|
26 |
<div class="wf-dashboard-toggle-btns">
|
27 |
<ul class="wf-pagination wf-pagination-sm">
|
28 |
-
<li class="wf-active"><a href="#" class="wf-dashboard-ips" data-grouping="24h"><?php esc_html_e('24 Hours', 'wordfence') ?></a></li>
|
29 |
-
<li><a href="#" class="wf-dashboard-ips" data-grouping="7d"><?php esc_html_e('7 Days', 'wordfence') ?></a></li>
|
30 |
-
<li><a href="#" class="wf-dashboard-ips" data-grouping="30d"><?php esc_html_e('30 Days', 'wordfence') ?></a></li>
|
31 |
</ul>
|
32 |
</div>
|
33 |
<div class="wf-ips wf-ips-24h">
|
@@ -36,7 +36,7 @@ if (!isset($limit)) { $limit = 10; $initial = true; }
|
|
36 |
<?php else: ?>
|
37 |
<?php $data = array_slice($d->ips24h, 0, min($limit, count($d->ips24h)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
|
38 |
<?php if (count($d->ips24h) > $limit && $initial): ?>
|
39 |
-
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="24h"><a href="#"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
40 |
<?php endif; ?>
|
41 |
<?php endif; ?>
|
42 |
</div>
|
@@ -46,7 +46,7 @@ if (!isset($limit)) { $limit = 10; $initial = true; }
|
|
46 |
<?php else: ?>
|
47 |
<?php $data = array_slice($d->ips7d, 0, min($limit, count($d->ips7d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
|
48 |
<?php if (count($d->ips7d) > $limit && $initial): ?>
|
49 |
-
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="7d"><a href="#"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
50 |
<?php endif; ?>
|
51 |
<?php endif; ?>
|
52 |
</div>
|
@@ -56,7 +56,7 @@ if (!isset($limit)) { $limit = 10; $initial = true; }
|
|
56 |
<?php else: ?>
|
57 |
<?php $data = array_slice($d->ips30d, 0, min($limit, count($d->ips30d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
|
58 |
<?php if (count($d->ips30d) > $limit && $initial): ?>
|
59 |
-
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="30d"><a href="#"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
60 |
<?php endif; ?>
|
61 |
<?php endif; ?>
|
62 |
</div>
|
25 |
<div>
|
26 |
<div class="wf-dashboard-toggle-btns">
|
27 |
<ul class="wf-pagination wf-pagination-sm">
|
28 |
+
<li class="wf-active"><a href="#" class="wf-dashboard-ips" data-grouping="24h" role="button"><?php esc_html_e('24 Hours', 'wordfence') ?></a></li>
|
29 |
+
<li><a href="#" class="wf-dashboard-ips" data-grouping="7d" role="button"><?php esc_html_e('7 Days', 'wordfence') ?></a></li>
|
30 |
+
<li><a href="#" class="wf-dashboard-ips" data-grouping="30d" role="button"><?php esc_html_e('30 Days', 'wordfence') ?></a></li>
|
31 |
</ul>
|
32 |
</div>
|
33 |
<div class="wf-ips wf-ips-24h">
|
36 |
<?php else: ?>
|
37 |
<?php $data = array_slice($d->ips24h, 0, min($limit, count($d->ips24h)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
|
38 |
<?php if (count($d->ips24h) > $limit && $initial): ?>
|
39 |
+
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="24h"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
40 |
<?php endif; ?>
|
41 |
<?php endif; ?>
|
42 |
</div>
|
46 |
<?php else: ?>
|
47 |
<?php $data = array_slice($d->ips7d, 0, min($limit, count($d->ips7d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
|
48 |
<?php if (count($d->ips7d) > $limit && $initial): ?>
|
49 |
+
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="7d"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
50 |
<?php endif; ?>
|
51 |
<?php endif; ?>
|
52 |
</div>
|
56 |
<?php else: ?>
|
57 |
<?php $data = array_slice($d->ips30d, 0, min($limit, count($d->ips30d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
|
58 |
<?php if (count($d->ips30d) > $limit && $initial): ?>
|
59 |
+
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="30d"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
60 |
<?php endif; ?>
|
61 |
<?php endif; ?>
|
62 |
</div>
|
lib/dashboard/widget_localattacks.php
CHANGED
@@ -67,7 +67,7 @@
|
|
67 |
</tr>
|
68 |
</tfoot>
|
69 |
</table>
|
70 |
-
<p class="wf-right wf-no-top"><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_WIDGET_LOCAL_ATTACKS); ?>" target="_blank" rel="noopener noreferrer"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i> <?php esc_html_e('How are these categorized?', 'wordfence');
|
71 |
<?php endif; ?>
|
72 |
</li>
|
73 |
</ul>
|
67 |
</tr>
|
68 |
</tfoot>
|
69 |
</table>
|
70 |
+
<p class="wf-right wf-no-top"><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_WIDGET_LOCAL_ATTACKS); ?>" target="_blank" rel="noopener noreferrer"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i> <?php esc_html_e('How are these categorized?', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
71 |
<?php endif; ?>
|
72 |
</li>
|
73 |
</ul>
|
lib/dashboard/widget_logins.php
CHANGED
@@ -17,8 +17,8 @@
|
|
17 |
<div>
|
18 |
<div class="wf-dashboard-toggle-btns">
|
19 |
<ul class="wf-pagination wf-pagination-sm">
|
20 |
-
<li class="wf-active"><a href="#" class="wf-dashboard-login-attempts" data-grouping="success"><?php esc_html_e('Successful', 'wordfence') ?></a></li>
|
21 |
-
<li><a href="#" class="wf-dashboard-login-attempts" data-grouping="fail"><?php esc_html_e('Failed', 'wordfence') ?></a></li>
|
22 |
</ul>
|
23 |
</div>
|
24 |
<div class="wf-recent-logins wf-recent-logins-success">
|
@@ -27,7 +27,7 @@
|
|
27 |
<?php else: ?>
|
28 |
<?php $data = array_slice($d->loginsSuccess, 0, min(10, count($d->loginsSuccess)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?>
|
29 |
<?php if (count($d->loginsSuccess) > 10): ?>
|
30 |
-
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="logins" data-period="success"><a href="#"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
31 |
<?php endif; ?>
|
32 |
<?php endif; ?>
|
33 |
</div>
|
@@ -37,7 +37,7 @@
|
|
37 |
<?php else: ?>
|
38 |
<?php $data = array_slice($d->loginsFail, 0, min(10, count($d->loginsFail)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?>
|
39 |
<?php if (count($d->loginsFail) > 10): ?>
|
40 |
-
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="logins" data-period="fail"><a href="#"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
41 |
<?php endif; ?>
|
42 |
<?php endif; ?>
|
43 |
</div>
|
17 |
<div>
|
18 |
<div class="wf-dashboard-toggle-btns">
|
19 |
<ul class="wf-pagination wf-pagination-sm">
|
20 |
+
<li class="wf-active"><a href="#" class="wf-dashboard-login-attempts" data-grouping="success" role="button"><?php esc_html_e('Successful', 'wordfence') ?></a></li>
|
21 |
+
<li><a href="#" class="wf-dashboard-login-attempts" data-grouping="fail" role="button"><?php esc_html_e('Failed', 'wordfence') ?></a></li>
|
22 |
</ul>
|
23 |
</div>
|
24 |
<div class="wf-recent-logins wf-recent-logins-success">
|
27 |
<?php else: ?>
|
28 |
<?php $data = array_slice($d->loginsSuccess, 0, min(10, count($d->loginsSuccess)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?>
|
29 |
<?php if (count($d->loginsSuccess) > 10): ?>
|
30 |
+
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="logins" data-period="success"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
31 |
<?php endif; ?>
|
32 |
<?php endif; ?>
|
33 |
</div>
|
37 |
<?php else: ?>
|
38 |
<?php $data = array_slice($d->loginsFail, 0, min(10, count($d->loginsFail)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?>
|
39 |
<?php if (count($d->loginsFail) > 10): ?>
|
40 |
+
<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="logins" data-period="fail"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
|
41 |
<?php endif; ?>
|
42 |
<?php endif; ?>
|
43 |
</div>
|
lib/dashboard/widget_networkattacks.php
CHANGED
@@ -19,9 +19,8 @@
|
|
19 |
<div class="wf-dashboard-graph-wrapper">
|
20 |
<div class="wf-dashboard-toggle-btns">
|
21 |
<ul class="wf-pagination wf-pagination-sm">
|
22 |
-
<li class="wf-active"><a href="#" class="wf-dashboard-graph-attacks" data-grouping="24h"><?php esc_html_e('24 Hours', 'wordfence'); ?></a></li>
|
23 |
-
|
24 |
-
<li><a href="#" class="wf-dashboard-graph-attacks" data-grouping="30d"><?php esc_html_e('30 Days', 'wordfence'); ?></a></li>
|
25 |
</ul>
|
26 |
</div>
|
27 |
<div class="wf-dashboard-network-blocks"><canvas id="wf-dashboard-network-blocks-24h"></canvas></div>
|
19 |
<div class="wf-dashboard-graph-wrapper">
|
20 |
<div class="wf-dashboard-toggle-btns">
|
21 |
<ul class="wf-pagination wf-pagination-sm">
|
22 |
+
<li class="wf-active"><a href="#" class="wf-dashboard-graph-attacks" data-grouping="24h" role="button"><?php esc_html_e('24 Hours', 'wordfence'); ?></a></li>
|
23 |
+
<li><a href="#" class="wf-dashboard-graph-attacks" data-grouping="30d" role="button"><?php esc_html_e('30 Days', 'wordfence'); ?></a></li>
|
|
|
24 |
</ul>
|
25 |
</div>
|
26 |
<div class="wf-dashboard-network-blocks"><canvas id="wf-dashboard-network-blocks-24h"></canvas></div>
|
lib/dashboard/widget_notifications.php
CHANGED
@@ -16,9 +16,9 @@
|
|
16 |
<li class="wf-notification<?php if ($n->priority % 10 == 1) { echo ' wf-notification-critical'; } else if ($n->priority % 10 == 2) { echo ' wf-notification-warning'; } ?>" data-notification="<?php echo esc_html($n->id); ?>">
|
17 |
<div class="wf-dashboard-item-list-title"><?php echo $n->html; ?></div>
|
18 |
<?php foreach ($n->links as $l): ?>
|
19 |
-
<div class="wf-dashboard-item-list-action"><a href="<?php echo esc_html($l['link']); ?>"<?php if (preg_match('/^https?:\/\//i', $l['link'])) { echo ' target="_blank" rel="noopener noreferrer"'; } ?>><?php echo esc_html($l['label']);
|
20 |
<?php endforeach; ?>
|
21 |
-
<div class="wf-dashboard-item-list-dismiss"><a href="#" class="wf-dismiss-notification"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
22 |
</li>
|
23 |
<?php endforeach; ?>
|
24 |
<?php if (count($d->notifications) == 0): ?>
|
@@ -56,17 +56,17 @@
|
|
56 |
<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>/sites/connection-issues?complete-setup=<?php echo esc_attr(wfConfig::get('wordfenceCentralSiteID')) ?>"
|
57 |
class="wf-central-resume wf-btn wf-btn-sm wf-btn-primary"
|
58 |
><?php esc_html_e('Resume Installation', 'wordfence') ?></a>
|
59 |
-
<a href="#" class="wf-central-disconnect wf-btn wf-btn-sm wf-btn-default"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a>
|
60 |
</p>
|
61 |
<?php else: ?>
|
62 |
<p class="wf-flex-row-1">
|
63 |
<?php if ($d->wordfenceCentralConnected): ?>
|
64 |
-
<a href="#" class="wf-central-disconnect"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a>
|
65 |
<?php else: ?>
|
66 |
<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>?newsite=<?php echo esc_attr(home_url()) ?>"><strong><?php $d->wordfenceCentralDisconnected ? esc_html_e('Reconnect This Site', 'wordfence') : esc_html_e('Connect This Site', 'wordfence') ?></strong></a>
|
67 |
<?php endif; ?>
|
68 |
</p>
|
69 |
-
<p class="wf-flex-row-1 wf-right wf-nowrap"><a href="<?php echo esc_url(WORDFENCE_CENTRAL_URL_SEC) ?>" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong></a></p>
|
70 |
<?php endif ?>
|
71 |
|
72 |
</div>
|
16 |
<li class="wf-notification<?php if ($n->priority % 10 == 1) { echo ' wf-notification-critical'; } else if ($n->priority % 10 == 2) { echo ' wf-notification-warning'; } ?>" data-notification="<?php echo esc_html($n->id); ?>">
|
17 |
<div class="wf-dashboard-item-list-title"><?php echo $n->html; ?></div>
|
18 |
<?php foreach ($n->links as $l): ?>
|
19 |
+
<div class="wf-dashboard-item-list-action"><a href="<?php echo esc_html($l['link']); ?>"<?php if (preg_match('/^https?:\/\//i', $l['link'])) { echo ' target="_blank" rel="noopener noreferrer"'; } ?>><?php echo esc_html($l['label']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></div>
|
20 |
<?php endforeach; ?>
|
21 |
+
<div class="wf-dashboard-item-list-dismiss"><a href="#" class="wf-dismiss-notification" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
22 |
</li>
|
23 |
<?php endforeach; ?>
|
24 |
<?php if (count($d->notifications) == 0): ?>
|
56 |
<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>/sites/connection-issues?complete-setup=<?php echo esc_attr(wfConfig::get('wordfenceCentralSiteID')) ?>"
|
57 |
class="wf-central-resume wf-btn wf-btn-sm wf-btn-primary"
|
58 |
><?php esc_html_e('Resume Installation', 'wordfence') ?></a>
|
59 |
+
<a href="#" class="wf-central-disconnect wf-btn wf-btn-sm wf-btn-default" role="button"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a>
|
60 |
</p>
|
61 |
<?php else: ?>
|
62 |
<p class="wf-flex-row-1">
|
63 |
<?php if ($d->wordfenceCentralConnected): ?>
|
64 |
+
<a href="#" class="wf-central-disconnect" role="button"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a>
|
65 |
<?php else: ?>
|
66 |
<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>?newsite=<?php echo esc_attr(home_url()) ?>"><strong><?php $d->wordfenceCentralDisconnected ? esc_html_e('Reconnect This Site', 'wordfence') : esc_html_e('Connect This Site', 'wordfence') ?></strong></a>
|
67 |
<?php endif; ?>
|
68 |
</p>
|
69 |
+
<p class="wf-flex-row-1 wf-right wf-nowrap"><a href="<?php echo esc_url(WORDFENCE_CENTRAL_URL_SEC) ?>" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
70 |
<?php endif ?>
|
71 |
|
72 |
</div>
|
lib/email_unsubscribeRequest.php
CHANGED
@@ -11,4 +11,4 @@
|
|
11 |
<br><br>
|
12 |
<?php echo wp_kses(sprintf(
|
13 |
/* translators: URL to WordPress admin panel. */
|
14 |
-
__('<a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt), array('a'=>array('href'=>array(), 'target'=>array()))); ?>
|
11 |
<br><br>
|
12 |
<?php echo wp_kses(sprintf(
|
13 |
/* translators: URL to WordPress admin panel. */
|
14 |
+
__('<a href="%s" target="_blank">Click here<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt), array('a'=>array('href'=>array(), 'target'=>array()))); ?>
|
lib/live_activity.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
<div class="wf-live-activity-message"></div>
|
7 |
</div>
|
8 |
<?php if (wfConfig::get('liveActivityPauseEnabled')): ?>
|
9 |
-
<div class="wf-live-activity-state"><p><?php esc_html_e('Live Updates Paused — Click inside window to resume') ?></p></div>
|
10 |
<?php endif; ?>
|
11 |
</div>
|
12 |
</div>
|
6 |
<div class="wf-live-activity-message"></div>
|
7 |
</div>
|
8 |
<?php if (wfConfig::get('liveActivityPauseEnabled')): ?>
|
9 |
+
<div class="wf-live-activity-state"><p><?php esc_html_e('Live Updates Paused — Click inside window to resume', 'wordfence') ?></p></div>
|
10 |
<?php endif; ?>
|
11 |
</div>
|
12 |
</div>
|
lib/menu_dashboard.php
CHANGED
@@ -106,7 +106,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
106 |
echo wfView::create('common/status-critical', array(
|
107 |
'id' => 'wf-premium-alert',
|
108 |
'title' => __('Premium Protection Disabled', 'wordfence'),
|
109 |
-
'subtitleHtml' => wp_kses(__('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets</a> for more information. Our staff is happy to help.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()))),
|
110 |
'link' => null,
|
111 |
'linkLabel' => null
|
112 |
))->render();
|
@@ -115,7 +115,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
115 |
<div>
|
116 |
<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
|
117 |
<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
|
118 |
-
<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a> <a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence');
|
119 |
</div>
|
120 |
<?php elseif (wfConfig::get('keyExpDays') < 30 && (wfConfig::get('premiumAutoRenew', null) === '0' || wfConfig::get('premiumAutoRenew', null) === 0)): ?>
|
121 |
<?php
|
@@ -299,9 +299,9 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
299 |
<li>•</li>
|
300 |
<li>•</li>
|
301 |
</ul>
|
302 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
303 |
</div>
|
304 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
305 |
</div>
|
306 |
</script>
|
307 |
<script type="text/x-jquery-template" id="wfNewTour2">
|
@@ -314,10 +314,10 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
314 |
<li class="wf-active">•</li>
|
315 |
<li>•</li>
|
316 |
</ul>
|
317 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
318 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
319 |
</div>
|
320 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
321 |
</div>
|
322 |
</script>
|
323 |
<script type="text/x-jquery-template" id="wfNewTour3">
|
@@ -331,10 +331,10 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
331 |
<li>•</li>
|
332 |
<li class="wf-active">•</li>
|
333 |
</ul>
|
334 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
335 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
336 |
</div>
|
337 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
338 |
</div>
|
339 |
</script>
|
340 |
<?php endif; ?>
|
@@ -370,7 +370,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
370 |
/* translators: Wordfence version. */
|
371 |
esc_html__('You have successfully updated to Wordfence %s', 'wordfence'), WORDFENCE_VERSION); ?></h3>
|
372 |
<p><?php esc_html_e('This update includes a number of significant interface changes. We\'d like to walk you through some of them, but you can bypass the tour for a section at any time by closing the dialogs.', 'wordfence'); ?></p>
|
373 |
-
<p><?php echo wp_kses(__('We welcome your feedback and comments at <a href="mailto:feedback@wordfence.com">feedback@wordfence.com</a>. For a deeper dive on all of the changes, <a href="https://www.wordfence.com/blog/2018/01/introducing-wordfence-7/" target="_blank" rel="noopener noreferrer">click here</a>.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()))); ?></p>
|
374 |
<div class="wf-pointer-footer">
|
375 |
<ul class="wf-tour-pagination">
|
376 |
<li class="wf-active">•</li>
|
@@ -378,9 +378,9 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
378 |
<li>•</li>
|
379 |
<li>•</li>
|
380 |
</ul>
|
381 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
382 |
</div>
|
383 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
384 |
</div>
|
385 |
</script>
|
386 |
<script type="text/x-jquery-template" id="wfUpgradeTour2">
|
@@ -394,10 +394,10 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
394 |
<li>•</li>
|
395 |
<li>•</li>
|
396 |
</ul>
|
397 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
398 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
399 |
</div>
|
400 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
401 |
</div>
|
402 |
</script>
|
403 |
<script type="text/x-jquery-template" id="wfUpgradeTour3">
|
@@ -412,10 +412,10 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
412 |
<li class="wf-active">•</li>
|
413 |
<li>•</li>
|
414 |
</ul>
|
415 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
416 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
417 |
</div>
|
418 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
419 |
</div>
|
420 |
</script>
|
421 |
<script type="text/x-jquery-template" id="wfUpgradeTour4">
|
@@ -429,10 +429,10 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
429 |
<li>•</li>
|
430 |
<li class="wf-active">•</li>
|
431 |
</ul>
|
432 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
433 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
434 |
</div>
|
435 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
436 |
</div>
|
437 |
</script>
|
438 |
<?php endif; ?>
|
106 |
echo wfView::create('common/status-critical', array(
|
107 |
'id' => 'wf-premium-alert',
|
108 |
'title' => __('Premium Protection Disabled', 'wordfence'),
|
109 |
+
'subtitleHtml' => wp_kses(__('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets<span class="screen-reader-text"> (opens in new tab)</span></a> for more information. Our staff is happy to help.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()), 'span'=>array('class'=>array()))),
|
110 |
'link' => null,
|
111 |
'linkLabel' => null
|
112 |
))->render();
|
115 |
<div>
|
116 |
<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
|
117 |
<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
|
118 |
+
<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a> <a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
119 |
</div>
|
120 |
<?php elseif (wfConfig::get('keyExpDays') < 30 && (wfConfig::get('premiumAutoRenew', null) === '0' || wfConfig::get('premiumAutoRenew', null) === 0)): ?>
|
121 |
<?php
|
299 |
<li>•</li>
|
300 |
<li>•</li>
|
301 |
</ul>
|
302 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
303 |
</div>
|
304 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
305 |
</div>
|
306 |
</script>
|
307 |
<script type="text/x-jquery-template" id="wfNewTour2">
|
314 |
<li class="wf-active">•</li>
|
315 |
<li>•</li>
|
316 |
</ul>
|
317 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
318 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
319 |
</div>
|
320 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
321 |
</div>
|
322 |
</script>
|
323 |
<script type="text/x-jquery-template" id="wfNewTour3">
|
331 |
<li>•</li>
|
332 |
<li class="wf-active">•</li>
|
333 |
</ul>
|
334 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
335 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
336 |
</div>
|
337 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
338 |
</div>
|
339 |
</script>
|
340 |
<?php endif; ?>
|
370 |
/* translators: Wordfence version. */
|
371 |
esc_html__('You have successfully updated to Wordfence %s', 'wordfence'), WORDFENCE_VERSION); ?></h3>
|
372 |
<p><?php esc_html_e('This update includes a number of significant interface changes. We\'d like to walk you through some of them, but you can bypass the tour for a section at any time by closing the dialogs.', 'wordfence'); ?></p>
|
373 |
+
<p><?php echo wp_kses(__('We welcome your feedback and comments at <a href="mailto:feedback@wordfence.com">feedback@wordfence.com</a>. For a deeper dive on all of the changes, <a href="https://www.wordfence.com/blog/2018/01/introducing-wordfence-7/" target="_blank" rel="noopener noreferrer">click here<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()), 'span'=>array('class'=>array()))); ?></p>
|
374 |
<div class="wf-pointer-footer">
|
375 |
<ul class="wf-tour-pagination">
|
376 |
<li class="wf-active">•</li>
|
378 |
<li>•</li>
|
379 |
<li>•</li>
|
380 |
</ul>
|
381 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
382 |
</div>
|
383 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
384 |
</div>
|
385 |
</script>
|
386 |
<script type="text/x-jquery-template" id="wfUpgradeTour2">
|
394 |
<li>•</li>
|
395 |
<li>•</li>
|
396 |
</ul>
|
397 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
398 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
399 |
</div>
|
400 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
401 |
</div>
|
402 |
</script>
|
403 |
<script type="text/x-jquery-template" id="wfUpgradeTour3">
|
412 |
<li class="wf-active">•</li>
|
413 |
<li>•</li>
|
414 |
</ul>
|
415 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
416 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
417 |
</div>
|
418 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
419 |
</div>
|
420 |
</script>
|
421 |
<script type="text/x-jquery-template" id="wfUpgradeTour4">
|
429 |
<li>•</li>
|
430 |
<li class="wf-active">•</li>
|
431 |
</ul>
|
432 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
433 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
434 |
</div>
|
435 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
436 |
</div>
|
437 |
</script>
|
438 |
<?php endif; ?>
|
lib/menu_dashboard_options.php
CHANGED
@@ -150,7 +150,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
150 |
echo wfView::create('common/status-critical', array(
|
151 |
'id' => 'wf-premium-alert',
|
152 |
'title' => __('Premium Protection Disabled', 'wordfence'),
|
153 |
-
'subtitleHtml' => __('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets</a> for more information. Our staff is happy to help.', 'wordfence'),
|
154 |
'link' => null,
|
155 |
'linkLabel' => null
|
156 |
))->render();
|
@@ -159,7 +159,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
159 |
<div>
|
160 |
<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
|
161 |
<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
|
162 |
-
<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a> <a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence');
|
163 |
</div>
|
164 |
<?php elseif (wfConfig::get('keyExpDays') < 30 && (wfConfig::get('premiumAutoRenew', null) === '0' || wfConfig::get('premiumAutoRenew', null) === 0)): ?>
|
165 |
<?php
|
150 |
echo wfView::create('common/status-critical', array(
|
151 |
'id' => 'wf-premium-alert',
|
152 |
'title' => __('Premium Protection Disabled', 'wordfence'),
|
153 |
+
'subtitleHtml' => wp_kses(__('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets<span class="screen-reader-text"> (opens in new tab)</span></a> for more information. Our staff is happy to help.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()), 'span'=>array('class'=>array()))),
|
154 |
'link' => null,
|
155 |
'linkLabel' => null
|
156 |
))->render();
|
159 |
<div>
|
160 |
<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
|
161 |
<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
|
162 |
+
<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a> <a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
163 |
</div>
|
164 |
<?php elseif (wfConfig::get('keyExpDays') < 30 && (wfConfig::get('premiumAutoRenew', null) === '0' || wfConfig::get('premiumAutoRenew', null) === 0)): ?>
|
165 |
<?php
|
lib/menu_firewall_blocking.php
CHANGED
@@ -23,7 +23,7 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
|
|
23 |
<?php if (!wfConfig::get('firewallEnabled')): ?>
|
24 |
<ul class="wf-block-banner">
|
25 |
<li><?php echo wp_kses(__('<strong>Note:</strong> Blocking is disabled when the option "Enable Rate Limiting and Advanced Blocking" is off.', 'wordfence'), array('strong'=>array())); ?></li>
|
26 |
-
<li><a href="#" class="wf-btn wf-btn-default" id="wf-blocking-enable"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li>
|
27 |
</ul>
|
28 |
<?php endif; ?>
|
29 |
<?php if (version_compare(phpversion(), '5.4') < 0 && wfConfig::get('isPaid') && wfBlock::hasCountryBlock()): ?>
|
@@ -31,7 +31,7 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
|
|
31 |
<li><?php echo esc_html(sprintf(
|
32 |
/* translators: PHP version. */
|
33 |
__('<strong>Note:</strong> The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion())); ?></li>
|
34 |
-
<li><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE); ?>" class="wf-btn wf-btn-default" target="_blank" rel="noopener noreferrer"><?php esc_html_e('More Information', 'wordfence');
|
35 |
</ul>
|
36 |
<?php endif; ?>
|
37 |
<div class="wf-block-header">
|
@@ -124,9 +124,9 @@ echo wfView::create('blocking/block-list', array(
|
|
124 |
<li>•</li>
|
125 |
<li>•</li>
|
126 |
</ul>
|
127 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
128 |
</div>
|
129 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
130 |
</div>
|
131 |
</script>
|
132 |
<script type="text/x-jquery-template" id="wfBlockingNewTour2">
|
@@ -139,10 +139,10 @@ echo wfView::create('blocking/block-list', array(
|
|
139 |
<li class="wf-active">•</li>
|
140 |
<li>•</li>
|
141 |
</ul>
|
142 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
143 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
144 |
</div>
|
145 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
146 |
</div>
|
147 |
</script>
|
148 |
<script type="text/x-jquery-template" id="wfBlockingNewTour3">
|
@@ -155,10 +155,10 @@ echo wfView::create('blocking/block-list', array(
|
|
155 |
<li>•</li>
|
156 |
<li class="wf-active">•</li>
|
157 |
</ul>
|
158 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
159 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
160 |
</div>
|
161 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
162 |
</div>
|
163 |
</script>
|
164 |
<?php endif; ?>
|
@@ -208,9 +208,9 @@ echo wfView::create('blocking/block-list', array(
|
|
208 |
<li class="wf-active">•</li>
|
209 |
<li>•</li>
|
210 |
</ul>
|
211 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
212 |
</div>
|
213 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
214 |
</div>
|
215 |
</script>
|
216 |
<script type="text/x-jquery-template" id="wfBlockingUpgradeTour2">
|
@@ -222,10 +222,10 @@ echo wfView::create('blocking/block-list', array(
|
|
222 |
<li>•</li>
|
223 |
<li class="wf-active">•</li>
|
224 |
</ul>
|
225 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
226 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
227 |
</div>
|
228 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
229 |
</div>
|
230 |
</script>
|
231 |
<?php endif; ?>
|
23 |
<?php if (!wfConfig::get('firewallEnabled')): ?>
|
24 |
<ul class="wf-block-banner">
|
25 |
<li><?php echo wp_kses(__('<strong>Note:</strong> Blocking is disabled when the option "Enable Rate Limiting and Advanced Blocking" is off.', 'wordfence'), array('strong'=>array())); ?></li>
|
26 |
+
<li><a href="#" class="wf-btn wf-btn-default" id="wf-blocking-enable" role="button"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li>
|
27 |
</ul>
|
28 |
<?php endif; ?>
|
29 |
<?php if (version_compare(phpversion(), '5.4') < 0 && wfConfig::get('isPaid') && wfBlock::hasCountryBlock()): ?>
|
31 |
<li><?php echo esc_html(sprintf(
|
32 |
/* translators: PHP version. */
|
33 |
__('<strong>Note:</strong> The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion())); ?></li>
|
34 |
+
<li><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE); ?>" class="wf-btn wf-btn-default" target="_blank" rel="noopener noreferrer"><?php esc_html_e('More Information', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
|
35 |
</ul>
|
36 |
<?php endif; ?>
|
37 |
<div class="wf-block-header">
|
124 |
<li>•</li>
|
125 |
<li>•</li>
|
126 |
</ul>
|
127 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
128 |
</div>
|
129 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
130 |
</div>
|
131 |
</script>
|
132 |
<script type="text/x-jquery-template" id="wfBlockingNewTour2">
|
139 |
<li class="wf-active">•</li>
|
140 |
<li>•</li>
|
141 |
</ul>
|
142 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
143 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
144 |
</div>
|
145 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
146 |
</div>
|
147 |
</script>
|
148 |
<script type="text/x-jquery-template" id="wfBlockingNewTour3">
|
155 |
<li>•</li>
|
156 |
<li class="wf-active">•</li>
|
157 |
</ul>
|
158 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
159 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
160 |
</div>
|
161 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
162 |
</div>
|
163 |
</script>
|
164 |
<?php endif; ?>
|
208 |
<li class="wf-active">•</li>
|
209 |
<li>•</li>
|
210 |
</ul>
|
211 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
212 |
</div>
|
213 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
214 |
</div>
|
215 |
</script>
|
216 |
<script type="text/x-jquery-template" id="wfBlockingUpgradeTour2">
|
222 |
<li>•</li>
|
223 |
<li class="wf-active">•</li>
|
224 |
</ul>
|
225 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
226 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
227 |
</div>
|
228 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
229 |
</div>
|
230 |
</script>
|
231 |
<?php endif; ?>
|
lib/menu_firewall_waf.php
CHANGED
@@ -252,9 +252,9 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
|
|
252 |
<li>•</li>
|
253 |
<li>•</li>
|
254 |
</ul>
|
255 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
256 |
</div>
|
257 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
258 |
</div>
|
259 |
</script>
|
260 |
<script type="text/x-jquery-template" id="wfWAFNewTour2">
|
@@ -268,10 +268,10 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
|
|
268 |
<li>•</li>
|
269 |
<li>•</li>
|
270 |
</ul>
|
271 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
272 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
273 |
</div>
|
274 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
275 |
</div>
|
276 |
</script>
|
277 |
<script type="text/x-jquery-template" id="wfWAFNewTour3">
|
@@ -285,10 +285,10 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
|
|
285 |
<li class="wf-active">•</li>
|
286 |
<li>•</li>
|
287 |
</ul>
|
288 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
289 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
290 |
</div>
|
291 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
292 |
</div>
|
293 |
</script>
|
294 |
<script type="text/x-jquery-template" id="wfWAFNewTour4">
|
@@ -303,10 +303,10 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
|
|
303 |
<li>•</li>
|
304 |
<li class="wf-active">•</li>
|
305 |
</ul>
|
306 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
307 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
308 |
</div>
|
309 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
310 |
</div>
|
311 |
</script>
|
312 |
<?php endif; ?>
|
@@ -351,9 +351,9 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
|
|
351 |
<ul class="wf-tour-pagination">
|
352 |
<li class="wf-active">•</li>
|
353 |
</ul>
|
354 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
355 |
</div>
|
356 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
357 |
</div>
|
358 |
</script>
|
359 |
-
<?php endif; ?>
|
252 |
<li>•</li>
|
253 |
<li>•</li>
|
254 |
</ul>
|
255 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
256 |
</div>
|
257 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
258 |
</div>
|
259 |
</script>
|
260 |
<script type="text/x-jquery-template" id="wfWAFNewTour2">
|
268 |
<li>•</li>
|
269 |
<li>•</li>
|
270 |
</ul>
|
271 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
272 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
273 |
</div>
|
274 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
275 |
</div>
|
276 |
</script>
|
277 |
<script type="text/x-jquery-template" id="wfWAFNewTour3">
|
285 |
<li class="wf-active">•</li>
|
286 |
<li>•</li>
|
287 |
</ul>
|
288 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
289 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
290 |
</div>
|
291 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
292 |
</div>
|
293 |
</script>
|
294 |
<script type="text/x-jquery-template" id="wfWAFNewTour4">
|
303 |
<li>•</li>
|
304 |
<li class="wf-active">•</li>
|
305 |
</ul>
|
306 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
307 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
308 |
</div>
|
309 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
310 |
</div>
|
311 |
</script>
|
312 |
<?php endif; ?>
|
351 |
<ul class="wf-tour-pagination">
|
352 |
<li class="wf-active">•</li>
|
353 |
</ul>
|
354 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
355 |
</div>
|
356 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
357 |
</div>
|
358 |
</script>
|
359 |
+
<?php endif; ?>
|
lib/menu_scanner.php
CHANGED
@@ -117,7 +117,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
117 |
<?php if (wfConfig::get('betaThreatDefenseFeed')): ?>
|
118 |
<ul class="wf-block-banner">
|
119 |
<li><?php esc_html_e('Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites.', 'wordfence'); ?></li>
|
120 |
-
<li><a href="#" class="wf-btn wf-btn-default" id="wf-beta-disable"><?php esc_html_e('Turn Off Beta Signatures', 'wordfence'); ?></a></li>
|
121 |
</ul>
|
122 |
<?php endif; ?>
|
123 |
<div class="wf-block-content">
|
@@ -213,7 +213,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
213 |
'messageHTML' => '<p class="wf-callout-warning"><i class="wf-fa wf-fa-exclamation-triangle" aria-hidden="true"></i> ' . wp_kses(__('<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup.', 'wordfence'), array('strong'=>array())) . '</p>' .
|
214 |
'<p>' . wp_kses(sprintf(
|
215 |
/* translators: Support URL. */
|
216 |
-
__('Do not delete files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files. If you\'d like to learn more, <a href="%s" target="_blank" rel="noopener noreferrer">click here for our help article</a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_BULK_DELETE_WARNING)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . '</p>',
|
217 |
'primaryButton' => array('id' => 'wf-scanner-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-default'),
|
218 |
'secondaryButtons' => array(array('id' => 'wf-scanner-prompt-confirm', 'label' => __('Delete Files', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-danger')),
|
219 |
))->render();
|
@@ -310,9 +310,9 @@ if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)):
|
|
310 |
<li>•</li>
|
311 |
<li>•</li>
|
312 |
</ul>
|
313 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
314 |
</div>
|
315 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
316 |
</div>
|
317 |
</script>
|
318 |
<script type="text/x-jquery-template" id="wfNewTour2">
|
@@ -326,10 +326,10 @@ if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)):
|
|
326 |
<li class="wf-active">•</li>
|
327 |
<li>•</li>
|
328 |
</ul>
|
329 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
330 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
331 |
</div>
|
332 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
333 |
</div>
|
334 |
</script>
|
335 |
<script type="text/x-jquery-template" id="wfNewTour3">
|
@@ -342,10 +342,10 @@ if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)):
|
|
342 |
<li>•</li>
|
343 |
<li class="wf-active">•</li>
|
344 |
</ul>
|
345 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
346 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
347 |
</div>
|
348 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
349 |
</div>
|
350 |
</script>
|
351 |
<?php endif; ?>
|
@@ -379,9 +379,9 @@ if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)):
|
|
379 |
<li class="wf-active">•</li>
|
380 |
<li>•</li>
|
381 |
</ul>
|
382 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
383 |
</div>
|
384 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
385 |
</div>
|
386 |
</script>
|
387 |
<script type="text/x-jquery-template" id="wfUpgradeTour2">
|
@@ -393,10 +393,10 @@ if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)):
|
|
393 |
<li>•</li>
|
394 |
<li class="wf-active">•</li>
|
395 |
</ul>
|
396 |
-
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
397 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
398 |
</div>
|
399 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
400 |
</div>
|
401 |
</script>
|
402 |
<?php endif; ?>
|
117 |
<?php if (wfConfig::get('betaThreatDefenseFeed')): ?>
|
118 |
<ul class="wf-block-banner">
|
119 |
<li><?php esc_html_e('Beta scan signatures are currently enabled. These signatures have not been fully tested yet and may cause false positives or scan stability issues on some sites.', 'wordfence'); ?></li>
|
120 |
+
<li><a href="#" class="wf-btn wf-btn-default" id="wf-beta-disable" role="button"><?php esc_html_e('Turn Off Beta Signatures', 'wordfence'); ?></a></li>
|
121 |
</ul>
|
122 |
<?php endif; ?>
|
123 |
<div class="wf-block-content">
|
213 |
'messageHTML' => '<p class="wf-callout-warning"><i class="wf-fa wf-fa-exclamation-triangle" aria-hidden="true"></i> ' . wp_kses(__('<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup.', 'wordfence'), array('strong'=>array())) . '</p>' .
|
214 |
'<p>' . wp_kses(sprintf(
|
215 |
/* translators: Support URL. */
|
216 |
+
__('Do not delete files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files. If you\'d like to learn more, <a href="%s" target="_blank" rel="noopener noreferrer">click here for our help article<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_BULK_DELETE_WARNING)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))) . '</p>',
|
217 |
'primaryButton' => array('id' => 'wf-scanner-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-default'),
|
218 |
'secondaryButtons' => array(array('id' => 'wf-scanner-prompt-confirm', 'label' => __('Delete Files', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-danger')),
|
219 |
))->render();
|
310 |
<li>•</li>
|
311 |
<li>•</li>
|
312 |
</ul>
|
313 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
314 |
</div>
|
315 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
316 |
</div>
|
317 |
</script>
|
318 |
<script type="text/x-jquery-template" id="wfNewTour2">
|
326 |
<li class="wf-active">•</li>
|
327 |
<li>•</li>
|
328 |
</ul>
|
329 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
330 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
331 |
</div>
|
332 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
333 |
</div>
|
334 |
</script>
|
335 |
<script type="text/x-jquery-template" id="wfNewTour3">
|
342 |
<li>•</li>
|
343 |
<li class="wf-active">•</li>
|
344 |
</ul>
|
345 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
346 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
347 |
</div>
|
348 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
349 |
</div>
|
350 |
</script>
|
351 |
<?php endif; ?>
|
379 |
<li class="wf-active">•</li>
|
380 |
<li>•</li>
|
381 |
</ul>
|
382 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
|
383 |
</div>
|
384 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
385 |
</div>
|
386 |
</script>
|
387 |
<script type="text/x-jquery-template" id="wfUpgradeTour2">
|
393 |
<li>•</li>
|
394 |
<li class="wf-active">•</li>
|
395 |
</ul>
|
396 |
+
<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
|
397 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
398 |
</div>
|
399 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
400 |
</div>
|
401 |
</script>
|
402 |
<?php endif; ?>
|
lib/menu_support.php
CHANGED
@@ -30,17 +30,17 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
30 |
<li class="wf-flex-vertical">
|
31 |
<h3><?php esc_html_e('Free Support', 'wordfence'); ?></h3>
|
32 |
<p class="wf-center"><?php echo wp_kses(__('Support for free customers is available via our forums page on wordpress.org. The majority of requests <strong>receive an answer within a few days.</strong>', 'wordfence'), array('strong'=>array())); ?></p>
|
33 |
-
<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FREE); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-default wf-btn-callout-subtle"><?php esc_html_e('Go to Support Forums', 'wordfence');
|
34 |
</li>
|
35 |
<li class="wf-flex-vertical">
|
36 |
<?php if (wfConfig::get('isPaid')): ?>
|
37 |
<h3><?php esc_html_e('Premium Support', 'wordfence'); ?></h3>
|
38 |
<p class="wf-center"><?php echo wp_kses(__('Our senior support engineers <strong>respond to Premium tickets within a few hours</strong> on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?></p>
|
39 |
-
<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_PREMIUM); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Go to Premium Support', 'wordfence');
|
40 |
<?php else: ?>
|
41 |
<h3><?php esc_html_e('Upgrade Now to Access Premium Support', 'wordfence'); ?></h3>
|
42 |
<p class="wf-center"><?php echo wp_kses(__('Our senior support engineers <strong>respond to Premium tickets within a few hours</strong> on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?></p>
|
43 |
-
<p><a href="https://www.wordfence.com/gnl1supportUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Upgrade to Premium', 'wordfence');
|
44 |
<?php endif; ?>
|
45 |
</li>
|
46 |
</ul>
|
@@ -67,7 +67,7 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
67 |
<ul class="wf-option wf-option-static">
|
68 |
<li class="wf-option-title">
|
69 |
<ul class="wf-flex-vertical wf-flex-align-left">
|
70 |
-
<li><?php esc_html_e('General Data Protection Regulation', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i></a></li>
|
71 |
<li class="wf-option-subtitle"><?php esc_html_e('The GDPR is a set of rules that provides more control over EU personal data. Defiant has updated its terms of use, privacy policies, and software, as well as made available a data processing agreement to meet GDPR compliance.', 'wordfence'); ?></li>
|
72 |
</ul>
|
73 |
</li>
|
@@ -77,10 +77,10 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
77 |
<ul class="wf-option wf-option-static">
|
78 |
<li class="wf-option-title">
|
79 |
<ul class="wf-flex-vertical wf-flex-align-left">
|
80 |
-
<li><?php esc_html_e('Data Processing Agreement', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR_DPA); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i></a></li>
|
81 |
<li class="wf-option-subtitle"><?php echo wp_kses(sprintf(
|
82 |
/* translators: URL to support page. */
|
83 |
-
__('If you qualify as a data controller under the GDPR and need a data processing agreement, it can be <a href="%s" target="_blank" rel="noopener noreferrer">found here</a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR_DPA)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?></li>
|
84 |
</ul>
|
85 |
</li>
|
86 |
</ul>
|
@@ -117,7 +117,7 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
117 |
if (isset($support['top'])):
|
118 |
foreach ($support['top'] as $entry):
|
119 |
?>
|
120 |
-
<li><a href="<?php echo esc_url($entry['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($entry['title']);
|
121 |
<?php
|
122 |
endforeach;
|
123 |
endif;
|
@@ -135,12 +135,12 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
135 |
<div class="wf-block wf-active wf-add-bottom">
|
136 |
<div class="wf-block-content">
|
137 |
<div class="wf-support-block">
|
138 |
-
<h4><a href="<?php echo esc_url($entry['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($entry['title']);
|
139 |
<p><?php echo esc_html($entry['excerpt']); ?></p>
|
140 |
<?php if (isset($entry['children'])): ?>
|
141 |
<ul>
|
142 |
<?php foreach ($entry['children'] as $child): ?>
|
143 |
-
<li><a href="<?php echo esc_url($child['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($child['title']);
|
144 |
<?php endforeach; ?>
|
145 |
</ul>
|
146 |
<?php endif; ?>
|
@@ -161,7 +161,7 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
161 |
<div class="wf-support-missing-block">
|
162 |
<h4><?php esc_html_e('Documentation', 'wordfence'); ?></h4>
|
163 |
<p><?php echo wp_kses(__('Documentation about Wordfence may be found on our website by clicking the button below or by clicking the <i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i> links on any of the plugin\'s pages.', 'wordfence'), array('i'=>array('class'=>array(), 'aria-hidden'=>array()))); ?></p>
|
164 |
-
<p class="wf-no-bottom"><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_INDEX); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-default wf-btn-callout-subtle"><?php esc_html_e('View Documentation', 'wordfence');
|
165 |
</div>
|
166 |
</div>
|
167 |
</div>
|
@@ -275,7 +275,7 @@ $support = @json_decode(wfConfig::get('supportContent'), true);
|
|
275 |
className: 'wf-modal'
|
276 |
});
|
277 |
<?php
|
278 |
-
//Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default. Read this brief article to learn more about <a href="#todo" target="_blank" rel="noopener noreferrer">getting the most out of Wordfence Premium</a>.
|
279 |
?>
|
280 |
}
|
281 |
else { //Unlikely to happen but possible
|
30 |
<li class="wf-flex-vertical">
|
31 |
<h3><?php esc_html_e('Free Support', 'wordfence'); ?></h3>
|
32 |
<p class="wf-center"><?php echo wp_kses(__('Support for free customers is available via our forums page on wordpress.org. The majority of requests <strong>receive an answer within a few days.</strong>', 'wordfence'), array('strong'=>array())); ?></p>
|
33 |
+
<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FREE); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-default wf-btn-callout-subtle"><?php esc_html_e('Go to Support Forums', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
34 |
</li>
|
35 |
<li class="wf-flex-vertical">
|
36 |
<?php if (wfConfig::get('isPaid')): ?>
|
37 |
<h3><?php esc_html_e('Premium Support', 'wordfence'); ?></h3>
|
38 |
<p class="wf-center"><?php echo wp_kses(__('Our senior support engineers <strong>respond to Premium tickets within a few hours</strong> on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?></p>
|
39 |
+
<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_PREMIUM); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Go to Premium Support', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
40 |
<?php else: ?>
|
41 |
<h3><?php esc_html_e('Upgrade Now to Access Premium Support', 'wordfence'); ?></h3>
|
42 |
<p class="wf-center"><?php echo wp_kses(__('Our senior support engineers <strong>respond to Premium tickets within a few hours</strong> on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?></p>
|
43 |
+
<p><a href="https://www.wordfence.com/gnl1supportUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
44 |
<?php endif; ?>
|
45 |
</li>
|
46 |
</ul>
|
67 |
<ul class="wf-option wf-option-static">
|
68 |
<li class="wf-option-title">
|
69 |
<ul class="wf-flex-vertical wf-flex-align-left">
|
70 |
+
<li><?php esc_html_e('General Data Protection Regulation', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
|
71 |
<li class="wf-option-subtitle"><?php esc_html_e('The GDPR is a set of rules that provides more control over EU personal data. Defiant has updated its terms of use, privacy policies, and software, as well as made available a data processing agreement to meet GDPR compliance.', 'wordfence'); ?></li>
|
72 |
</ul>
|
73 |
</li>
|
77 |
<ul class="wf-option wf-option-static">
|
78 |
<li class="wf-option-title">
|
79 |
<ul class="wf-flex-vertical wf-flex-align-left">
|
80 |
+
<li><?php esc_html_e('Data Processing Agreement', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR_DPA); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
|
81 |
<li class="wf-option-subtitle"><?php echo wp_kses(sprintf(
|
82 |
/* translators: URL to support page. */
|
83 |
+
__('If you qualify as a data controller under the GDPR and need a data processing agreement, it can be <a href="%s" target="_blank" rel="noopener noreferrer">found here<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR_DPA)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></li>
|
84 |
</ul>
|
85 |
</li>
|
86 |
</ul>
|
117 |
if (isset($support['top'])):
|
118 |
foreach ($support['top'] as $entry):
|
119 |
?>
|
120 |
+
<li><a href="<?php echo esc_url($entry['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($entry['title']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
|
121 |
<?php
|
122 |
endforeach;
|
123 |
endif;
|
135 |
<div class="wf-block wf-active wf-add-bottom">
|
136 |
<div class="wf-block-content">
|
137 |
<div class="wf-support-block">
|
138 |
+
<h4><a href="<?php echo esc_url($entry['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($entry['title']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></h4>
|
139 |
<p><?php echo esc_html($entry['excerpt']); ?></p>
|
140 |
<?php if (isset($entry['children'])): ?>
|
141 |
<ul>
|
142 |
<?php foreach ($entry['children'] as $child): ?>
|
143 |
+
<li><a href="<?php echo esc_url($child['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($child['title']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
|
144 |
<?php endforeach; ?>
|
145 |
</ul>
|
146 |
<?php endif; ?>
|
161 |
<div class="wf-support-missing-block">
|
162 |
<h4><?php esc_html_e('Documentation', 'wordfence'); ?></h4>
|
163 |
<p><?php echo wp_kses(__('Documentation about Wordfence may be found on our website by clicking the button below or by clicking the <i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i> links on any of the plugin\'s pages.', 'wordfence'), array('i'=>array('class'=>array(), 'aria-hidden'=>array()))); ?></p>
|
164 |
+
<p class="wf-no-bottom"><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_INDEX); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-default wf-btn-callout-subtle"><?php esc_html_e('View Documentation', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
165 |
</div>
|
166 |
</div>
|
167 |
</div>
|
275 |
className: 'wf-modal'
|
276 |
});
|
277 |
<?php
|
278 |
+
//Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default. Read this brief article to learn more about <a href="#todo" target="_blank" rel="noopener noreferrer">getting the most out of Wordfence Premium</a>.
|
279 |
?>
|
280 |
}
|
281 |
else { //Unlikely to happen but possible
|
lib/menu_tools.php
CHANGED
@@ -19,12 +19,12 @@ else if (wfConfig::get('touppPromptNeeded')) {
|
|
19 |
<?php
|
20 |
$tabsArray = array();
|
21 |
if (wfCredentialsController::allowLegacy2FA()) {
|
22 |
-
$tabsArray[] = array('twofactor', __('Two-Factor Authentication'));
|
23 |
}
|
24 |
-
$tabsArray[] = array('livetraffic', __('Live Traffic'));
|
25 |
-
$tabsArray[] = array('whois', __('Whois Lookup'));
|
26 |
-
$tabsArray[] = array('importexport', __('Import/Export Options'));
|
27 |
-
$tabsArray[] = array('diagnostics', __('Diagnostics'));
|
28 |
|
29 |
$tabs = array();
|
30 |
foreach ($tabsArray as $tab) {
|
19 |
<?php
|
20 |
$tabsArray = array();
|
21 |
if (wfCredentialsController::allowLegacy2FA()) {
|
22 |
+
$tabsArray[] = array('twofactor', __('Two-Factor Authentication', 'wordfence'));
|
23 |
}
|
24 |
+
$tabsArray[] = array('livetraffic', __('Live Traffic', 'wordfence'));
|
25 |
+
$tabsArray[] = array('whois', __('Whois Lookup', 'wordfence'));
|
26 |
+
$tabsArray[] = array('importexport', __('Import/Export Options', 'wordfence'));
|
27 |
+
$tabsArray[] = array('diagnostics', __('Diagnostics', 'wordfence'));
|
28 |
|
29 |
$tabs = array();
|
30 |
foreach ($tabsArray as $tab) {
|
lib/menu_tools_diagnostic.php
CHANGED
@@ -109,6 +109,7 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
109 |
'strong' => array(),
|
110 |
'em' => array(),
|
111 |
'a' => array('href' => true),
|
|
|
112 |
))) ?></td>
|
113 |
<td>
|
114 |
<?php if ($infoOnly): ?>
|
@@ -162,7 +163,7 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
162 |
<div class="wf-result-error"><?php echo nl2br(esc_html($result['message'])); ?></div>
|
163 |
<?php endif ?>
|
164 |
<?php if (isset($result['detail']) && !empty($result['detail'])): ?>
|
165 |
-
<p><a href="#" onclick="jQuery('#wf-diagnostics-detail-<?php echo esc_attr($key); ?>').show(); jQuery(this).hide(); return false;"><?php esc_html_e('View Additional Detail', 'wordfence'); ?></a></p>
|
166 |
<pre class="wf-pre wf-split-word" id="wf-diagnostics-detail-<?php echo esc_attr($key); ?>" style="max-width: 600px; display: none;"><?php echo esc_html($result['detail']); ?></pre>
|
167 |
<?php endif; ?>
|
168 |
</div>
|
@@ -461,19 +462,19 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
461 |
<?php
|
462 |
//Taken from plugin.php and modified to always show multisite drop-ins
|
463 |
$dropins = array(
|
464 |
-
'advanced-cache.php' => array( __( 'Advanced caching plugin'
|
465 |
-
'db.php' => array( __( 'Custom database class'
|
466 |
-
'db-error.php' => array( __( 'Custom database error message' ), true ), // auto on error
|
467 |
-
'install.php' => array( __( 'Custom installation script'
|
468 |
-
'maintenance.php' => array( __( 'Custom maintenance message'
|
469 |
-
'object-cache.php' => array( __( 'External object cache'
|
470 |
-
'php-error.php' => array( __( 'Custom PHP error message'
|
471 |
-
'fatal-error-handler.php'=> array( __( 'Custom PHP fatal error handler' ), true ), // auto on error
|
472 |
);
|
473 |
-
$dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded' ), is_multisite() && 'SUNRISE' ); // SUNRISE
|
474 |
-
$dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message'
|
475 |
-
$dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message'
|
476 |
-
$dropins['blog-suspended.php'] = array( __( 'Custom site suspended message' ), is_multisite() ); // auto on archived or spammed blog
|
477 |
?>
|
478 |
<?php foreach ($dropins as $file => $data): ?>
|
479 |
<?php
|
@@ -767,7 +768,7 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
767 |
?>
|
768 |
<tr>
|
769 |
<td style="width: 100%"><?php echo esc_html($shortLog); if (!empty($metadata)) { echo ' (' . esc_html(implode(', ', $metadata)) . ')'; } ?></td>
|
770 |
-
<td style="white-space: nowrap; text-align: right;"><?php echo($readable ? '<a href="#" data-logfile="' . esc_attr($log) . '" class="downloadLogFile" target="_blank" rel="noopener noreferrer">' . esc_html__('Download', 'wordfence') . '</a>' : '<em>' . esc_html__('Requires downloading from the server directly', 'wordfence') . '</em>'); ?></td>
|
771 |
</tr>
|
772 |
<?php endforeach;
|
773 |
endif; ?>
|
@@ -834,33 +835,33 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
834 |
<ul class="wf-block-list">
|
835 |
<li>
|
836 |
<span>
|
837 |
-
<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=sysinfo&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Click to view your system\'s configuration in a new window', 'wordfence');
|
838 |
-
<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a>
|
839 |
</span>
|
840 |
</li>
|
841 |
<li>
|
842 |
<span>
|
843 |
-
<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=testmem&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Test your WordPress host\'s available memory', 'wordfence');
|
844 |
-
<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_MEMORY); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a>
|
845 |
</span>
|
846 |
</li>
|
847 |
<li>
|
848 |
<span>
|
849 |
-
<?php esc_html_e('Send a test email from this WordPress server to an email address:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_EMAIL); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a>
|
850 |
<input type="text" id="testEmailDest" value="" size="20" maxlength="255" class="wfConfigElem"/>
|
851 |
<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Email', 'wordfence'); ?>" onclick="WFAD.sendTestEmail(jQuery('#testEmailDest').val());"/>
|
852 |
</span>
|
853 |
</li>
|
854 |
<li>
|
855 |
<span>
|
856 |
-
<?php esc_html_e('Send a test activity report email:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_ACTIVITY_REPORT); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a>
|
857 |
<input type="email" id="email_summary_email_address_debug" value="" size="20" maxlength="255" class="wfConfigElem"/>
|
858 |
<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Activity Report', 'wordfence'); ?>" onclick="WFAD.sendTestActivityReport(jQuery('#email_summary_email_address_debug').val());"/>
|
859 |
</span>
|
860 |
</li>
|
861 |
<li>
|
862 |
<span>
|
863 |
-
<?php esc_html_e('Clear all Wordfence Central connection data', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"></a>
|
864 |
<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Clear Connection Data', 'wordfence'); ?>" onclick="WFAD.ajax('wordfence_wfcentral_disconnect', {}, function() { WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), 'Successfully removed data', 'All associated Wordfence Central data has been removed from the database.'); });"/>
|
865 |
</span>
|
866 |
</li>
|
@@ -957,9 +958,9 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
957 |
</li>
|
958 |
<li>
|
959 |
<p>
|
960 |
-
<a id="wf-restore-defaults" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" data-restore-defaults-section="<?php echo esc_attr(wfConfig::OPTIONS_TYPE_DIAGNOSTICS); ?>"><?php esc_html_e('Restore Defaults', 'wordfence'); ?></a>
|
961 |
-
<a id="wf-cancel-changes" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-disabled" href="#"><?php esc_html_e('Cancel Changes', 'wordfence'); ?></a>
|
962 |
-
<a id="wf-save-changes" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#"><?php esc_html_e('Save Changes', 'wordfence'); ?></a>
|
963 |
</p>
|
964 |
</li>
|
965 |
</ul>
|
109 |
'strong' => array(),
|
110 |
'em' => array(),
|
111 |
'a' => array('href' => true),
|
112 |
+
'span' => array('class' => true)
|
113 |
))) ?></td>
|
114 |
<td>
|
115 |
<?php if ($infoOnly): ?>
|
163 |
<div class="wf-result-error"><?php echo nl2br(esc_html($result['message'])); ?></div>
|
164 |
<?php endif ?>
|
165 |
<?php if (isset($result['detail']) && !empty($result['detail'])): ?>
|
166 |
+
<p><a href="#" onclick="jQuery('#wf-diagnostics-detail-<?php echo esc_attr($key); ?>').show(); jQuery(this).hide(); return false;" role="button"><?php esc_html_e('View Additional Detail', 'wordfence'); ?></a></p>
|
167 |
<pre class="wf-pre wf-split-word" id="wf-diagnostics-detail-<?php echo esc_attr($key); ?>" style="max-width: 600px; display: none;"><?php echo esc_html($result['detail']); ?></pre>
|
168 |
<?php endif; ?>
|
169 |
</div>
|
462 |
<?php
|
463 |
//Taken from plugin.php and modified to always show multisite drop-ins
|
464 |
$dropins = array(
|
465 |
+
'advanced-cache.php' => array( __( 'Advanced caching plugin', 'wordfence' ), 'WP_CACHE' ), // WP_CACHE
|
466 |
+
'db.php' => array( __( 'Custom database class', 'wordfence' ), true ), // auto on load
|
467 |
+
'db-error.php' => array( __( 'Custom database error message', 'wordfence' ), true ), // auto on error
|
468 |
+
'install.php' => array( __( 'Custom installation script', 'wordfence' ), true ), // auto on installation
|
469 |
+
'maintenance.php' => array( __( 'Custom maintenance message', 'wordfence' ), true ), // auto on maintenance
|
470 |
+
'object-cache.php' => array( __( 'External object cache', 'wordfence' ), true ), // auto on load
|
471 |
+
'php-error.php' => array( __( 'Custom PHP error message', 'wordfence' ), true ), // auto on error
|
472 |
+
'fatal-error-handler.php'=> array( __( 'Custom PHP fatal error handler', 'wordfence' ), true ), // auto on error
|
473 |
);
|
474 |
+
$dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded', 'wordfence' ), is_multisite() && 'SUNRISE' ); // SUNRISE
|
475 |
+
$dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message', 'wordfence' ), is_multisite() ); // auto on deleted blog
|
476 |
+
$dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message', 'wordfence' ), is_multisite() ); // auto on inactive blog
|
477 |
+
$dropins['blog-suspended.php'] = array( __( 'Custom site suspended message', 'wordfence' ), is_multisite() ); // auto on archived or spammed blog
|
478 |
?>
|
479 |
<?php foreach ($dropins as $file => $data): ?>
|
480 |
<?php
|
768 |
?>
|
769 |
<tr>
|
770 |
<td style="width: 100%"><?php echo esc_html($shortLog); if (!empty($metadata)) { echo ' (' . esc_html(implode(', ', $metadata)) . ')'; } ?></td>
|
771 |
+
<td style="white-space: nowrap; text-align: right;"><?php echo($readable ? '<a href="#" data-logfile="' . esc_attr($log) . '" class="downloadLogFile" target="_blank" rel="noopener noreferrer" role="button">' . esc_html__('Download', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>' : '<em>' . esc_html__('Requires downloading from the server directly', 'wordfence') . '</em>'); ?></td>
|
772 |
</tr>
|
773 |
<?php endforeach;
|
774 |
endif; ?>
|
835 |
<ul class="wf-block-list">
|
836 |
<li>
|
837 |
<span>
|
838 |
+
<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=sysinfo&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Click to view your system\'s configuration in a new window', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
839 |
+
<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
840 |
</span>
|
841 |
</li>
|
842 |
<li>
|
843 |
<span>
|
844 |
+
<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=testmem&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Test your WordPress host\'s available memory', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
845 |
+
<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_MEMORY); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
846 |
</span>
|
847 |
</li>
|
848 |
<li>
|
849 |
<span>
|
850 |
+
<?php esc_html_e('Send a test email from this WordPress server to an email address:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_EMAIL); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
851 |
<input type="text" id="testEmailDest" value="" size="20" maxlength="255" class="wfConfigElem"/>
|
852 |
<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Email', 'wordfence'); ?>" onclick="WFAD.sendTestEmail(jQuery('#testEmailDest').val());"/>
|
853 |
</span>
|
854 |
</li>
|
855 |
<li>
|
856 |
<span>
|
857 |
+
<?php esc_html_e('Send a test activity report email:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_ACTIVITY_REPORT); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
858 |
<input type="email" id="email_summary_email_address_debug" value="" size="20" maxlength="255" class="wfConfigElem"/>
|
859 |
<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Activity Report', 'wordfence'); ?>" onclick="WFAD.sendTestActivityReport(jQuery('#email_summary_email_address_debug').val());"/>
|
860 |
</span>
|
861 |
</li>
|
862 |
<li>
|
863 |
<span>
|
864 |
+
<?php esc_html_e('Clear all Wordfence Central connection data', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
865 |
<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Clear Connection Data', 'wordfence'); ?>" onclick="WFAD.ajax('wordfence_wfcentral_disconnect', {}, function() { WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), 'Successfully removed data', 'All associated Wordfence Central data has been removed from the database.'); });"/>
|
866 |
</span>
|
867 |
</li>
|
958 |
</li>
|
959 |
<li>
|
960 |
<p>
|
961 |
+
<a id="wf-restore-defaults" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" data-restore-defaults-section="<?php echo esc_attr(wfConfig::OPTIONS_TYPE_DIAGNOSTICS); ?>" role="button"><?php esc_html_e('Restore Defaults', 'wordfence'); ?></a>
|
962 |
+
<a id="wf-cancel-changes" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php esc_html_e('Cancel Changes', 'wordfence'); ?></a>
|
963 |
+
<a id="wf-save-changes" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php esc_html_e('Save Changes', 'wordfence'); ?></a>
|
964 |
</p>
|
965 |
</li>
|
966 |
</ul>
|
lib/menu_tools_importExport.php
CHANGED
@@ -13,7 +13,7 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
|
|
13 |
<h2><?php esc_html_e('Import/Export Options', 'wordfence') ?></h2>
|
14 |
<span><?php echo wp_kses(sprintf(
|
15 |
/* translators: URL to support page. */
|
16 |
-
__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about importing and exporting options</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_IMPORT_EXPORT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
|
17 |
<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
|
18 |
</div>
|
19 |
|
13 |
<h2><?php esc_html_e('Import/Export Options', 'wordfence') ?></h2>
|
14 |
<span><?php echo wp_kses(sprintf(
|
15 |
/* translators: URL to support page. */
|
16 |
+
__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about importing and exporting options</span><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_IMPORT_EXPORT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
|
17 |
<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
|
18 |
</div>
|
19 |
|
lib/menu_tools_livetraffic.php
CHANGED
@@ -41,7 +41,7 @@ $w = new wfConfig();
|
|
41 |
<h2><?php esc_html_e('Live Traffic', 'wordfence') ?></h2>
|
42 |
<span><?php echo wp_kses(sprintf(
|
43 |
/* translators: URL to support page. */
|
44 |
-
__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Live Traffic</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()))); ?>
|
45 |
<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
|
46 |
</div>
|
47 |
|
@@ -74,7 +74,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
74 |
if ($overridden) {
|
75 |
echo wp_kses(sprintf(
|
76 |
/* translators: URL to support page. */
|
77 |
-
__(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array())));
|
78 |
} ?>.</strong> <?php esc_html_e('Login and firewall activity will appear below.', 'wordfence') ?></p>
|
79 |
</div>
|
80 |
<?php else: ?>
|
@@ -83,7 +83,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
83 |
if ($overridden) {
|
84 |
echo wp_kses(sprintf(
|
85 |
/* translators: URL to support page. */
|
86 |
-
__(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array())));
|
87 |
} ?>.</strong> <?php esc_html_e('Regular traffic and security-related traffic will appear below.', 'wordfence') ?></p>
|
88 |
</div>
|
89 |
<?php endif; ?>
|
@@ -156,7 +156,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
156 |
</div>
|
157 |
<div>
|
158 |
<!--<button data-bind="click: $root.removeFilter" type="button" class="wf-btn wf-btn-default">Remove</button> -->
|
159 |
-
<a href="#" data-bind="click: $root.removeFilter" class="wf-live-traffic-filter-remove"><i class="wf-ion-trash-a"></i></a>
|
160 |
</div>
|
161 |
</div>
|
162 |
</div>
|
@@ -206,7 +206,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
206 |
<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
|
207 |
<a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName,
|
208 |
attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }"
|
209 |
-
target="_blank" rel="noopener noreferrer"></a>
|
210 |
</div>
|
211 |
<div data-bind="if: !loc()">
|
212 |
<?php esc_html_e('An unknown location at IP', 'wordfence') ?>
|
@@ -343,37 +343,37 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
343 |
<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()">
|
344 |
<span data-bind="attr: {'data-userid': user().ID}" class="wfAvatar"></span>
|
345 |
<a data-bind="attr: { href: user().editLink }, text: user().display_name"
|
346 |
-
target="_blank" rel="noopener noreferrer"></a>
|
347 |
</span>
|
348 |
<span data-bind="if: loc()">
|
349 |
<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()"> in</span>
|
350 |
<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
|
351 |
<a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName,
|
352 |
attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }"
|
353 |
-
target="_blank" rel="noopener noreferrer"></a>
|
354 |
</span>
|
355 |
<span data-bind="if: !loc()">
|
356 |
<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()">
|
357 |
<?php echo wp_kses(sprintf(
|
358 |
/* translators: 1. User agent. 2. IP address */
|
359 |
-
__('%1$s at an unknown location at IP %2$s', 'wordfence'), '', '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()))) ?>
|
360 |
</span>
|
361 |
<span data-bind="if: !(action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user())">
|
362 |
<?php echo wp_kses(sprintf(
|
363 |
/* translators: IP address */
|
364 |
-
__('An unknown location at IP %s', 'wordfence'), '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()))) ?>
|
365 |
</span>
|
366 |
</span>
|
367 |
<span data-bind="if: referer()">
|
368 |
<span data-bind="if: extReferer()">
|
369 |
<?php echo wp_kses(sprintf(
|
370 |
/* translators: 1. User agent. 2. HTTP referer. 3. Server response. */
|
371 |
-
__('%1$s arrived from %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()))) ?>
|
372 |
</span>
|
373 |
<span data-bind="if: !extReferer()">
|
374 |
<?php echo wp_kses(sprintf(
|
375 |
/* translators: 1. User agent. 2. HTTP referer. 3. Server response. */
|
376 |
-
__('%1$s left %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()))) ?>
|
377 |
</span>
|
378 |
</span>
|
379 |
<span data-bind="if: statusCode() == 404">
|
@@ -425,7 +425,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
425 |
</span>
|
426 |
<a class="wf-lt-url wf-split-word-xs"
|
427 |
data-bind="text: displayURL, attr: { href: URL, title: URL }"
|
428 |
-
target="_blank" rel="noopener noreferrer"></a>
|
429 |
</div>
|
430 |
<div>
|
431 |
<span data-bind="text: timeAgo, attr: { 'data-timestamp': ctime }"
|
@@ -478,7 +478,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
478 |
</a>
|
479 |
</span>
|
480 |
<a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: showWhoisOverlay"
|
481 |
-
target="_blank" rel="noopener noreferrer"><?php esc_html_e('Run Whois', 'wordfence')
|
482 |
<a class="wf-btn wf-btn-default wf-btn-sm"
|
483 |
data-bind="click: showRecentTraffic" target="_blank" rel="noopener noreferrer">
|
484 |
<span class="wf-hidden-xs"><?php esc_html_e('See recent traffic', 'wordfence'); ?></span><span class="wf-visible-xs"><?php esc_html_e('Recent', 'wordfence'); ?></span>
|
@@ -574,9 +574,9 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
574 |
<ul class="wf-tour-pagination">
|
575 |
<li class="wf-active">•</li>
|
576 |
</ul>
|
577 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
578 |
</div>
|
579 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
580 |
</div>
|
581 |
</script>
|
582 |
<?php endif; ?>
|
@@ -605,9 +605,9 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
|
|
605 |
<ul class="wf-tour-pagination">
|
606 |
<li class="wf-active">•</li>
|
607 |
</ul>
|
608 |
-
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
609 |
</div>
|
610 |
-
<div id="wf-tour-close"><a href="#"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
611 |
</div>
|
612 |
</script>
|
613 |
<?php endif; ?>
|
41 |
<h2><?php esc_html_e('Live Traffic', 'wordfence') ?></h2>
|
42 |
<span><?php echo wp_kses(sprintf(
|
43 |
/* translators: URL to support page. */
|
44 |
+
__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Live Traffic</span><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
|
45 |
<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
|
46 |
</div>
|
47 |
|
74 |
if ($overridden) {
|
75 |
echo wp_kses(sprintf(
|
76 |
/* translators: URL to support page. */
|
77 |
+
__(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())));
|
78 |
} ?>.</strong> <?php esc_html_e('Login and firewall activity will appear below.', 'wordfence') ?></p>
|
79 |
</div>
|
80 |
<?php else: ?>
|
83 |
if ($overridden) {
|
84 |
echo wp_kses(sprintf(
|
85 |
/* translators: URL to support page. */
|
86 |
+
__(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())));
|
87 |
} ?>.</strong> <?php esc_html_e('Regular traffic and security-related traffic will appear below.', 'wordfence') ?></p>
|
88 |
</div>
|
89 |
<?php endif; ?>
|
156 |
</div>
|
157 |
<div>
|
158 |
<!--<button data-bind="click: $root.removeFilter" type="button" class="wf-btn wf-btn-default">Remove</button> -->
|
159 |
+
<a href="#" data-bind="click: $root.removeFilter" class="wf-live-traffic-filter-remove" role="button"><i class="wf-ion-trash-a"></i></a>
|
160 |
</div>
|
161 |
</div>
|
162 |
</div>
|
206 |
<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
|
207 |
<a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName,
|
208 |
attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }"
|
209 |
+
target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
210 |
</div>
|
211 |
<div data-bind="if: !loc()">
|
212 |
<?php esc_html_e('An unknown location at IP', 'wordfence') ?>
|
343 |
<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()">
|
344 |
<span data-bind="attr: {'data-userid': user().ID}" class="wfAvatar"></span>
|
345 |
<a data-bind="attr: { href: user().editLink }, text: user().display_name"
|
346 |
+
target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
347 |
</span>
|
348 |
<span data-bind="if: loc()">
|
349 |
<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()"> in</span>
|
350 |
<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
|
351 |
<a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName,
|
352 |
attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }"
|
353 |
+
target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
354 |
</span>
|
355 |
<span data-bind="if: !loc()">
|
356 |
<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()">
|
357 |
<?php echo wp_kses(sprintf(
|
358 |
/* translators: 1. User agent. 2. IP address */
|
359 |
+
__('%1$s at an unknown location at IP %2$s', 'wordfence'), '', '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
|
360 |
</span>
|
361 |
<span data-bind="if: !(action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user())">
|
362 |
<?php echo wp_kses(sprintf(
|
363 |
/* translators: IP address */
|
364 |
+
__('An unknown location at IP %s', 'wordfence'), '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
|
365 |
</span>
|
366 |
</span>
|
367 |
<span data-bind="if: referer()">
|
368 |
<span data-bind="if: extReferer()">
|
369 |
<?php echo wp_kses(sprintf(
|
370 |
/* translators: 1. User agent. 2. HTTP referer. 3. Server response. */
|
371 |
+
__('%1$s arrived from %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"><span class="screen-reader-text"> (opens in new tab)</span></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
|
372 |
</span>
|
373 |
<span data-bind="if: !extReferer()">
|
374 |
<?php echo wp_kses(sprintf(
|
375 |
/* translators: 1. User agent. 2. HTTP referer. 3. Server response. */
|
376 |
+
__('%1$s left %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"><span class="screen-reader-text"> (opens in new tab)</span></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
|
377 |
</span>
|
378 |
</span>
|
379 |
<span data-bind="if: statusCode() == 404">
|
425 |
</span>
|
426 |
<a class="wf-lt-url wf-split-word-xs"
|
427 |
data-bind="text: displayURL, attr: { href: URL, title: URL }"
|
428 |
+
target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
429 |
</div>
|
430 |
<div>
|
431 |
<span data-bind="text: timeAgo, attr: { 'data-timestamp': ctime }"
|
478 |
</a>
|
479 |
</span>
|
480 |
<a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: showWhoisOverlay"
|
481 |
+
target="_blank" rel="noopener noreferrer"><?php esc_html_e('Run Whois', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
482 |
<a class="wf-btn wf-btn-default wf-btn-sm"
|
483 |
data-bind="click: showRecentTraffic" target="_blank" rel="noopener noreferrer">
|
484 |
<span class="wf-hidden-xs"><?php esc_html_e('See recent traffic', 'wordfence'); ?></span><span class="wf-visible-xs"><?php esc_html_e('Recent', 'wordfence'); ?></span>
|
574 |
<ul class="wf-tour-pagination">
|
575 |
<li class="wf-active">•</li>
|
576 |
</ul>
|
577 |
+
<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
578 |
</div>
|
579 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
580 |
</div>
|
581 |
</script>
|
582 |
<?php endif; ?>
|
605 |
<ul class="wf-tour-pagination">
|
606 |
<li class="wf-active">•</li>
|
607 |
</ul>
|
608 |
+
<div id="wf-tour-continue"><a href="#" role="button" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
|
609 |
</div>
|
610 |
+
<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
|
611 |
</div>
|
612 |
</script>
|
613 |
<?php endif; ?>
|
lib/menu_tools_twoFactor.php
CHANGED
@@ -33,7 +33,7 @@ echo wfView::create('common/section-title', array(
|
|
33 |
<div class="wf-col-xs-12">
|
34 |
<div id="wordfenceTwoFactorLegacy">
|
35 |
<p><strong><?php esc_html_e('2FA Mode: Legacy', 'wordfence') ?>.</strong> <?php esc_html_e('Two-factor authentication is using legacy support, which enables SMS-based codes but is less compatible. An improved interface and use by non-administrators is available by activating the new login security module.', 'wordfence'); ?></p>
|
36 |
-
<p><a id="wf-migrate2fanew-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#"><?php esc_html_e('Switch to New 2FA', 'wordfence'); ?></a></p>
|
37 |
</div>
|
38 |
</div>
|
39 |
</div>
|
@@ -48,7 +48,7 @@ echo wfView::create('common/section-title', array(
|
|
48 |
</p>
|
49 |
|
50 |
<p class="center">
|
51 |
-
<a class="wf-btn wf-btn-primary wf-btn-callout" href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence')
|
52 |
</p>
|
53 |
</div>
|
54 |
|
@@ -76,7 +76,7 @@ echo wfView::create('common/section-title', array(
|
|
76 |
<?php if (!wfConfig::get('loginSecurityEnabled')): ?>
|
77 |
<ul class="wf-block-banner">
|
78 |
<li><?php echo wp_kses(__('<strong>Note:</strong> Two-Factor Authentication is disabled when the option "Enable Brute Force Protection" is off.', 'wordfence'), array('strong'=>array())); ?></li>
|
79 |
-
<li><a href="#" class="wf-btn wf-btn-default" id="wf-2fa-enable"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li>
|
80 |
</ul>
|
81 |
<?php endif; ?>
|
82 |
<div class="wf-block-header">
|
@@ -201,7 +201,7 @@ echo wfView::create('common/section-title', array(
|
|
201 |
{{/if}}
|
202 |
</td>
|
203 |
<td style="white-space: nowrap; text-align: center;" class="wf-twofactor-delete">
|
204 |
-
<a href="#" onclick="WFAD.delTwoFac('${user.userID}'); return false;"><i class="wf-ion-ios-trash-outline"></i></a>
|
205 |
</td>
|
206 |
</tr>
|
207 |
{{/each}}
|
@@ -220,7 +220,7 @@ echo wfView::create('common/section-title', array(
|
|
220 |
<div id="wordfenceTwoFactorModern">
|
221 |
<p><strong><?php esc_html_e('2FA Mode: Normal', 'wordfence') ?>.</strong> <?php esc_html_e('Legacy support for SMS-based two-factor authentication is being phased out, as it is less secure than using a modern authenticator app.', 'wordfence') ?></p>
|
222 |
<p><?php esc_html_e('If you have a conflict with the new 2FA method, you can temporarily switch back to the Legacy version.', 'wordfence'); ?></p>
|
223 |
-
<p><a id="wf-migrate2faold-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#"><?php esc_html_e('Revert to Legacy 2FA', 'wordfence'); ?></a></p>
|
224 |
</div>
|
225 |
</div>
|
226 |
</div>
|
33 |
<div class="wf-col-xs-12">
|
34 |
<div id="wordfenceTwoFactorLegacy">
|
35 |
<p><strong><?php esc_html_e('2FA Mode: Legacy', 'wordfence') ?>.</strong> <?php esc_html_e('Two-factor authentication is using legacy support, which enables SMS-based codes but is less compatible. An improved interface and use by non-administrators is available by activating the new login security module.', 'wordfence'); ?></p>
|
36 |
+
<p><a id="wf-migrate2fanew-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" role="button"><?php esc_html_e('Switch to New 2FA', 'wordfence'); ?></a></p>
|
37 |
</div>
|
38 |
</div>
|
39 |
</div>
|
48 |
</p>
|
49 |
|
50 |
<p class="center">
|
51 |
+
<a class="wf-btn wf-btn-primary wf-btn-callout" href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
|
52 |
</p>
|
53 |
</div>
|
54 |
|
76 |
<?php if (!wfConfig::get('loginSecurityEnabled')): ?>
|
77 |
<ul class="wf-block-banner">
|
78 |
<li><?php echo wp_kses(__('<strong>Note:</strong> Two-Factor Authentication is disabled when the option "Enable Brute Force Protection" is off.', 'wordfence'), array('strong'=>array())); ?></li>
|
79 |
+
<li><a href="#" class="wf-btn wf-btn-default" id="wf-2fa-enable" role="button"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li>
|
80 |
</ul>
|
81 |
<?php endif; ?>
|
82 |
<div class="wf-block-header">
|
201 |
{{/if}}
|
202 |
</td>
|
203 |
<td style="white-space: nowrap; text-align: center;" class="wf-twofactor-delete">
|
204 |
+
<a href="#" onclick="WFAD.delTwoFac('${user.userID}'); return false;" role="button"><i class="wf-ion-ios-trash-outline"></i></a>
|
205 |
</td>
|
206 |
</tr>
|
207 |
{{/each}}
|
220 |
<div id="wordfenceTwoFactorModern">
|
221 |
<p><strong><?php esc_html_e('2FA Mode: Normal', 'wordfence') ?>.</strong> <?php esc_html_e('Legacy support for SMS-based two-factor authentication is being phased out, as it is less secure than using a modern authenticator app.', 'wordfence') ?></p>
|
222 |
<p><?php esc_html_e('If you have a conflict with the new 2FA method, you can temporarily switch back to the Legacy version.', 'wordfence'); ?></p>
|
223 |
+
<p><a id="wf-migrate2faold-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" role="button"><?php esc_html_e('Revert to Legacy 2FA', 'wordfence'); ?></a></p>
|
224 |
</div>
|
225 |
</div>
|
226 |
</div>
|
lib/menu_tools_whois.php
CHANGED
@@ -16,7 +16,7 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
|
|
16 |
<h2><?php esc_html_e('Whois Lookup', 'wordfence') ?></h2>
|
17 |
<span><?php echo wp_kses(sprintf(
|
18 |
/* translators: URL to support page. */
|
19 |
-
__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Whois Lookup</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_WHOIS_LOOKUP)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
|
20 |
<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
|
21 |
</div>
|
22 |
|
@@ -37,7 +37,7 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
|
|
37 |
<p style="width: 600px;">
|
38 |
<?php echo wp_kses(sprintf(
|
39 |
/* translators: Hostname or IP address. */
|
40 |
-
__("You've chosen to block the network that <span style=\"color: #F00;\">%s</span> is part of. We've marked the networks we found that this IP address belongs to in red below. Make sure you read all the WHOIS information so that you see all networks this IP belongs to. We recommend blocking the network with the lowest number of addresses. You may find this is listed at the end as part of the 'rWHOIS' query which contacts the local WHOIS server that is run by the network administrator."), esc_html($_GET['whoisval'])), array('span'=>array('style'=>array()))); ?>
|
41 |
</p>
|
42 |
<?php } ?>
|
43 |
<div id="wfrawhtml" class="wf-padding-add-top"></div>
|
16 |
<h2><?php esc_html_e('Whois Lookup', 'wordfence') ?></h2>
|
17 |
<span><?php echo wp_kses(sprintf(
|
18 |
/* translators: URL to support page. */
|
19 |
+
__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Whois Lookup</span><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_WHOIS_LOOKUP)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
|
20 |
<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
|
21 |
</div>
|
22 |
|
37 |
<p style="width: 600px;">
|
38 |
<?php echo wp_kses(sprintf(
|
39 |
/* translators: Hostname or IP address. */
|
40 |
+
__("You've chosen to block the network that <span style=\"color: #F00;\">%s</span> is part of. We've marked the networks we found that this IP address belongs to in red below. Make sure you read all the WHOIS information so that you see all networks this IP belongs to. We recommend blocking the network with the lowest number of addresses. You may find this is listed at the end as part of the 'rWHOIS' query which contacts the local WHOIS server that is run by the network administrator.", 'wordfence'), esc_html($_GET['whoisval'])), array('span'=>array('style'=>array()))); ?>
|
41 |
</p>
|
42 |
<?php } ?>
|
43 |
<div id="wfrawhtml" class="wf-padding-add-top"></div>
|
lib/menu_wordfence_central.php
CHANGED
@@ -56,7 +56,7 @@ else {
|
|
56 |
<div class="wf-central-dashboard-copy">
|
57 |
<p><strong><?php esc_html_e('Wordfence Central', 'wordfence') ?></strong></p>
|
58 |
<p><?php esc_html_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence') ?></p>
|
59 |
-
<p class="wf-right-lg"><a href="https://www.wordfence.com/central" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong></a></p>
|
60 |
</div>
|
61 |
</div>
|
62 |
</div>
|
@@ -64,7 +64,7 @@ else {
|
|
64 |
<p><strong><?php esc_html_e('Wordfence Central Status', 'wordfence') ?></strong></p>
|
65 |
<p><?php echo esc_html(sprintf(
|
66 |
/* translators: 1. Email address. 2. Localized date. */
|
67 |
-
__('Activated - connected by %1$s on %2$s', 'wordfence'), wfConfig::get('wordfenceCentralConnectEmail')
|
68 |
<p class="wf-right-lg"><a href="<?php echo esc_url($wordfenceURL); ?>"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a></p>
|
69 |
</div>
|
70 |
</div>
|
56 |
<div class="wf-central-dashboard-copy">
|
57 |
<p><strong><?php esc_html_e('Wordfence Central', 'wordfence') ?></strong></p>
|
58 |
<p><?php esc_html_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence') ?></p>
|
59 |
+
<p class="wf-right-lg"><a href="https://www.wordfence.com/central" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
|
60 |
</div>
|
61 |
</div>
|
62 |
</div>
|
64 |
<p><strong><?php esc_html_e('Wordfence Central Status', 'wordfence') ?></strong></p>
|
65 |
<p><?php echo esc_html(sprintf(
|
66 |
/* translators: 1. Email address. 2. Localized date. */
|
67 |
+
__('Activated - connected by %1$s on %2$s', 'wordfence'), wfConfig::get('wordfenceCentralConnectEmail'), date_i18n('F j, Y', (int) wfConfig::get('wordfenceCentralConnectTime')))) ?></p>
|
68 |
<p class="wf-right-lg"><a href="<?php echo esc_url($wordfenceURL); ?>"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a></p>
|
69 |
</div>
|
70 |
</div>
|
lib/wf503.php
CHANGED
@@ -313,6 +313,36 @@
|
|
313 |
color: #999999;
|
314 |
margin-top: 2rem;
|
315 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
</style>
|
317 |
</head>
|
318 |
<body>
|
@@ -352,12 +382,12 @@
|
|
352 |
</div>
|
353 |
<div class="about-text">
|
354 |
<h3 class="h4"><?php esc_html_e('About Wordfence', 'wordfence'); ?></h3>
|
355 |
-
<p><?php esc_html_e('Wordfence is a security plugin installed on over
|
356 |
<p><?php esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.', 'wordfence'); ?></p>
|
357 |
</div>
|
358 |
</div>
|
359 |
|
360 |
-
<p class="documentation small"><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('Click here to learn more: <a href="%s" target="_blank" rel="noopener noreferrer">Documentation</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?></p>
|
361 |
<p class="generated small"><em><?php echo wp_kses(sprintf(/* translators: Localized date. */ __('Generated by Wordfence at %s', 'wordfence'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>.<br><?php esc_html_e('Your computer\'s time:', 'wordfence'); ?> <script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
|
362 |
</div>
|
363 |
</body>
|
313 |
color: #999999;
|
314 |
margin-top: 2rem;
|
315 |
}
|
316 |
+
|
317 |
+
/* Text meant only for screen readers. */
|
318 |
+
.screen-reader-text {
|
319 |
+
border: 0;
|
320 |
+
clip: rect(1px, 1px, 1px, 1px);
|
321 |
+
clip-path: inset(50%);
|
322 |
+
height: 1px;
|
323 |
+
margin: -1px;
|
324 |
+
overflow: hidden;
|
325 |
+
padding: 0;
|
326 |
+
position: absolute;
|
327 |
+
width: 1px;
|
328 |
+
word-wrap: normal !important;
|
329 |
+
}
|
330 |
+
.screen-reader-text:focus {
|
331 |
+
background-color: #eee;
|
332 |
+
clip: auto !important;
|
333 |
+
clip-path: none;
|
334 |
+
color: #444;
|
335 |
+
display: block;
|
336 |
+
font-size: 1em;
|
337 |
+
height: auto;
|
338 |
+
left: 5px;
|
339 |
+
line-height: normal;
|
340 |
+
padding: 15px 23px 14px;
|
341 |
+
text-decoration: none;
|
342 |
+
top: 5px;
|
343 |
+
width: auto;
|
344 |
+
z-index: 100000; /* Above WP toolbar. */
|
345 |
+
}
|
346 |
</style>
|
347 |
</head>
|
348 |
<body>
|
382 |
</div>
|
383 |
<div class="about-text">
|
384 |
<h3 class="h4"><?php esc_html_e('About Wordfence', 'wordfence'); ?></h3>
|
385 |
+
<p><?php esc_html_e('Wordfence is a security plugin installed on over 4 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.', 'wordfence'); ?></p>
|
386 |
<p><?php esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.', 'wordfence'); ?></p>
|
387 |
</div>
|
388 |
</div>
|
389 |
|
390 |
+
<p class="documentation small"><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('Click here to learn more: <a href="%s" target="_blank" rel="noopener noreferrer">Documentation<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
|
391 |
<p class="generated small"><em><?php echo wp_kses(sprintf(/* translators: Localized date. */ __('Generated by Wordfence at %s', 'wordfence'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>.<br><?php esc_html_e('Your computer\'s time:', 'wordfence'); ?> <script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
|
392 |
</div>
|
393 |
</body>
|
lib/wfAPI.php
CHANGED
@@ -160,7 +160,7 @@ class wfAPI {
|
|
160 |
}
|
161 |
|
162 |
if (200 != $this->lastHTTPStatus) {
|
163 |
-
throw new wfAPICallFailedException(sprintf(/* translators: HTTP status code. */__("The Wordfence scanning servers are currently unavailable. This may be for maintenance or a temporary outage. If this still occurs in an hour, please contact support. [%s]"), $this->lastHTTPStatus));
|
164 |
}
|
165 |
|
166 |
$content = wp_remote_retrieve_body($response);
|
160 |
}
|
161 |
|
162 |
if (200 != $this->lastHTTPStatus) {
|
163 |
+
throw new wfAPICallFailedException(sprintf(/* translators: HTTP status code. */__("The Wordfence scanning servers are currently unavailable. This may be for maintenance or a temporary outage. If this still occurs in an hour, please contact support. [%s]", 'wordfence'), $this->lastHTTPStatus));
|
164 |
}
|
165 |
|
166 |
$content = wp_remote_retrieve_body($response);
|
lib/wfActivityReport.php
CHANGED
@@ -504,7 +504,7 @@ SQL
|
|
504 |
$success = true;
|
505 |
if (is_string($email_addresses)) { $email_addresses = explode(',', $email_addresses); }
|
506 |
foreach ($email_addresses as $email) {
|
507 |
-
$uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', sprintf(/* translators: URL to the WordPress admin panel. */ __('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), $content);
|
508 |
if (!wp_mail($email, sprintf(/* translators: 1. Site URL. 2. Localized date. */ __('Wordfence activity for %1$s on %2$s', 'wordfence'), date_i18n(get_option('date_format')), $shortSiteURL), $uniqueContent, 'Content-Type: text/html')) {
|
509 |
$success = false;
|
510 |
}
|
504 |
$success = true;
|
505 |
if (is_string($email_addresses)) { $email_addresses = explode(',', $email_addresses); }
|
506 |
foreach ($email_addresses as $email) {
|
507 |
+
$uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', wp_kses(sprintf(/* translators: URL to the WordPress admin panel. */ __('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), array('a'=>array('href'=>array(), 'target'=>array()))), $content);
|
508 |
if (!wp_mail($email, sprintf(/* translators: 1. Site URL. 2. Localized date. */ __('Wordfence activity for %1$s on %2$s', 'wordfence'), date_i18n(get_option('date_format')), $shortSiteURL), $uniqueContent, 'Content-Type: text/html')) {
|
509 |
$success = false;
|
510 |
}
|
lib/wfAdminNoticeQueue.php
CHANGED
@@ -2,7 +2,20 @@
|
|
2 |
|
3 |
class wfAdminNoticeQueue {
|
4 |
protected static function _notices() {
|
5 |
-
return wfConfig::get_ser('adminNoticeQueue', array());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
}
|
7 |
|
8 |
protected static function _setNotices($notices) {
|
@@ -74,7 +87,7 @@ class wfAdminNoticeQueue {
|
|
74 |
$category = false;
|
75 |
$users = false;
|
76 |
}
|
77 |
-
|
78 |
$notices = self::_notices();
|
79 |
$found = false;
|
80 |
foreach ($notices as $nid => $n) {
|
@@ -177,6 +190,6 @@ class wfAdminNotice {
|
|
177 |
$severityClass = 'notice-warning';
|
178 |
}
|
179 |
|
180 |
-
echo '<div class="wf-admin-notice notice ' . $severityClass . '" data-notice-id="' . esc_attr($this->_id) . '"><p>' . $this->_messageHTML . '</p><p><a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.dismissAdminNotice(\'' . esc_attr($this->_id) . '\'); return false;">' . esc_html__('Dismiss', 'wordfence') . '</a></p></div>';
|
181 |
}
|
182 |
}
|
2 |
|
3 |
class wfAdminNoticeQueue {
|
4 |
protected static function _notices() {
|
5 |
+
return self::_purgeObsoleteNotices(wfConfig::get_ser('adminNoticeQueue', array()));
|
6 |
+
}
|
7 |
+
|
8 |
+
private static function _purgeObsoleteNotices($notices) {
|
9 |
+
$altered = false;
|
10 |
+
foreach ($notices as $id => $notice) {
|
11 |
+
if ($notice['category'] === 'php8') {
|
12 |
+
unset($notices[$id]);
|
13 |
+
$altered = true;
|
14 |
+
}
|
15 |
+
}
|
16 |
+
if ($altered)
|
17 |
+
self::_setNotices($notices);
|
18 |
+
return $notices;
|
19 |
}
|
20 |
|
21 |
protected static function _setNotices($notices) {
|
87 |
$category = false;
|
88 |
$users = false;
|
89 |
}
|
90 |
+
|
91 |
$notices = self::_notices();
|
92 |
$found = false;
|
93 |
foreach ($notices as $nid => $n) {
|
190 |
$severityClass = 'notice-warning';
|
191 |
}
|
192 |
|
193 |
+
echo '<div class="wf-admin-notice notice ' . $severityClass . '" data-notice-id="' . esc_attr($this->_id) . '"><p>' . $this->_messageHTML . '</p><p><a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.dismissAdminNotice(\'' . esc_attr($this->_id) . '\'); return false;" role="button">' . esc_html__('Dismiss', 'wordfence') . '</a></p></div>';
|
194 |
}
|
195 |
}
|
lib/wfDiagnostic.php
CHANGED
@@ -108,7 +108,7 @@ class wfDiagnostic
|
|
108 |
'PHP Environment' => array(
|
109 |
'description' => __('PHP version, important PHP extensions.', 'wordfence'),
|
110 |
'tests' => array(
|
111 |
-
'phpVersion' => array('raw' => true, 'value' => sprintf(/* translators: Support URL. */ __('PHP version >= PHP 5.6.20<br><em> (<a href="https://wordpress.org/about/requirements/" target="_blank" rel="noopener noreferrer">Minimum version required by WordPress</a>)</em> <a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp"></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP))),
|
112 |
'processOwner' => __('Process Owner', 'wordfence'),
|
113 |
'hasOpenSSL' => __('Checking for OpenSSL support', 'wordfence'),
|
114 |
'openSSLVersion' => __('Checking OpenSSL version', 'wordfence'),
|
@@ -118,7 +118,7 @@ class wfDiagnostic
|
|
118 |
'curlProtocols' => __('cURL Support Protocols', 'wordfence'),
|
119 |
'curlSSLVersion' => __('cURL SSL Version', 'wordfence'),
|
120 |
'curlLibZVersion' => __('cURL libz Version', 'wordfence'),
|
121 |
-
'displayErrors' => __('Checking <code>display_errors</code><br><em> (<a href="http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors" target="_blank" rel="noopener noreferrer">Should be disabled on production servers</a>)</em>', 'wordfence'),
|
122 |
)
|
123 |
),
|
124 |
'Connectivity' => array(
|
@@ -137,6 +137,7 @@ class wfDiagnostic
|
|
137 |
'serverTime' => __('Server Time', 'wordfence'),
|
138 |
'wfTimeOffset' => __('Wordfence Network Time Offset', 'wordfence'),
|
139 |
'ntpTimeOffset' => __('NTP Time Offset', 'wordfence'),
|
|
|
140 |
'timeSourceInUse' => __('TOTP Time Source', 'wordfence'),
|
141 |
'wpTimeZone' => __('WordPress Time Zone', 'wordfence'),
|
142 |
),
|
@@ -776,6 +777,36 @@ class wfDiagnostic
|
|
776 |
'message' => '-',
|
777 |
);
|
778 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
779 |
|
780 |
public function timeSourceInUse() {
|
781 |
if (class_exists('WFLSPHP52Compatability')) {
|
@@ -822,5 +853,4 @@ class wfDiagnostic
|
|
822 |
'message' => $tz,
|
823 |
);
|
824 |
}
|
825 |
-
}
|
826 |
-
|
108 |
'PHP Environment' => array(
|
109 |
'description' => __('PHP version, important PHP extensions.', 'wordfence'),
|
110 |
'tests' => array(
|
111 |
+
'phpVersion' => array('raw' => true, 'value' => wp_kses(sprintf(/* translators: Support URL. */ __('PHP version >= PHP 5.6.20<br><em> (<a href="https://wordpress.org/about/requirements/" target="_blank" rel="noopener noreferrer">Minimum version required by WordPress</a>)</em> <a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp"><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())))),
|
112 |
'processOwner' => __('Process Owner', 'wordfence'),
|
113 |
'hasOpenSSL' => __('Checking for OpenSSL support', 'wordfence'),
|
114 |
'openSSLVersion' => __('Checking OpenSSL version', 'wordfence'),
|
118 |
'curlProtocols' => __('cURL Support Protocols', 'wordfence'),
|
119 |
'curlSSLVersion' => __('cURL SSL Version', 'wordfence'),
|
120 |
'curlLibZVersion' => __('cURL libz Version', 'wordfence'),
|
121 |
+
'displayErrors' => array('raw' => true, 'value' => wp_kses(__('Checking <code>display_errors</code><br><em> (<a href="http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors" target="_blank" rel="noopener noreferrer">Should be disabled on production servers<span class="screen-reader-text"> (opens in new tab)</span></a>)</em>', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()), 'em'=>array(), 'code'=>array(), 'br'=>array()))),
|
122 |
)
|
123 |
),
|
124 |
'Connectivity' => array(
|
137 |
'serverTime' => __('Server Time', 'wordfence'),
|
138 |
'wfTimeOffset' => __('Wordfence Network Time Offset', 'wordfence'),
|
139 |
'ntpTimeOffset' => __('NTP Time Offset', 'wordfence'),
|
140 |
+
'ntpStatus' => __('NTP Status', 'wordfence'),
|
141 |
'timeSourceInUse' => __('TOTP Time Source', 'wordfence'),
|
142 |
'wpTimeZone' => __('WordPress Time Zone', 'wordfence'),
|
143 |
),
|
777 |
'message' => '-',
|
778 |
);
|
779 |
}
|
780 |
+
|
781 |
+
public function ntpStatus() {
|
782 |
+
$maxFailures = \WordfenceLS\Controller_Time::FAILURE_LIMIT;
|
783 |
+
$cronDisabled = \WordfenceLS\Controller_Settings::shared()->is_ntp_cron_disabled($failureCount);
|
784 |
+
if ($cronDisabled) {
|
785 |
+
$constant = \WordfenceLS\Controller_Settings::shared()->is_ntp_disabled_via_constant();
|
786 |
+
$status = __('Disabled ', 'wordfence');
|
787 |
+
if ($constant) {
|
788 |
+
$status .= __('(WORDFENCE_LS_DISABLE_NTP)', 'wordfence');
|
789 |
+
}
|
790 |
+
else if ($failureCount > 0) {
|
791 |
+
$status .= __('(failures exceeded limit)', 'wordfence');
|
792 |
+
}
|
793 |
+
else {
|
794 |
+
$status .= __('(settings)', 'wordfence');
|
795 |
+
}
|
796 |
+
}
|
797 |
+
else {
|
798 |
+
$status = __('Enabled', 'wordfence');
|
799 |
+
if ($failureCount > 0) {
|
800 |
+
$remainingAttempts = $maxFailures - $failureCount;
|
801 |
+
$status .= sprintf(__(' (%d of %d attempts remaining)', 'wordfence'), $remainingAttempts, $maxFailures);
|
802 |
+
}
|
803 |
+
}
|
804 |
+
return array(
|
805 |
+
'test' => true,
|
806 |
+
'infoOnly' => true,
|
807 |
+
'message' => $status
|
808 |
+
);
|
809 |
+
}
|
810 |
|
811 |
public function timeSourceInUse() {
|
812 |
if (class_exists('WFLSPHP52Compatability')) {
|
853 |
'message' => $tz,
|
854 |
);
|
855 |
}
|
856 |
+
}
|
|
lib/wfIssues.php
CHANGED
@@ -484,7 +484,7 @@ class wfIssues {
|
|
484 |
));
|
485 |
|
486 |
foreach ($emails as $email) {
|
487 |
-
$uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', sprintf(__('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), $content);
|
488 |
wp_mail($email, $subject, $uniqueContent, 'Content-type: text/html');
|
489 |
}
|
490 |
}
|
@@ -747,4 +747,4 @@ class wfIssues {
|
|
747 |
public function getIssuesTable() {
|
748 |
return $this->issuesTable;
|
749 |
}
|
750 |
-
}
|
484 |
));
|
485 |
|
486 |
foreach ($emails as $email) {
|
487 |
+
$uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', wp_kses(sprintf(__('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), array('a'=>array('href'=>array(), 'target'=>array()))), $content);
|
488 |
wp_mail($email, $subject, $uniqueContent, 'Content-type: text/html');
|
489 |
}
|
490 |
}
|
747 |
public function getIssuesTable() {
|
748 |
return $this->issuesTable;
|
749 |
}
|
750 |
+
}
|
lib/wfLockedOut.php
CHANGED
@@ -318,6 +318,36 @@ header('Status: 503 Service Temporarily Unavailable');
|
|
318 |
color: #999999;
|
319 |
margin-top: 2rem;
|
320 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
</style>
|
322 |
</head>
|
323 |
<body>
|
@@ -361,12 +391,12 @@ header('Status: 503 Service Temporarily Unavailable');
|
|
361 |
</div>
|
362 |
<div class="about-text">
|
363 |
<h3 class="h4"><?php esc_html_e('About Wordfence', 'wordfence'); ?></h3>
|
364 |
-
<p><?php esc_html_e('Wordfence is a security plugin installed on over
|
365 |
<p><?php esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.', 'wordfence'); ?></p>
|
366 |
</div>
|
367 |
</div>
|
368 |
|
369 |
-
<p class="documentation small"><?php echo wp_kses(sprintf(__('Click here to learn more: <a href="%s" target="_blank" rel="noopener noreferrer">Documentation</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?></p>
|
370 |
<p class="generated small"><em><?php esc_html(printf(__('Generated by Wordfence at %s', 'wordfence'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime()))); ?>.<br><?php esc_html_e('Your computer\'s time:', 'wordfence'); ?> <script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
|
371 |
</div>
|
372 |
</body>
|
318 |
color: #999999;
|
319 |
margin-top: 2rem;
|
320 |
}
|
321 |
+
|
322 |
+
/* Text meant only for screen readers. */
|
323 |
+
.screen-reader-text {
|
324 |
+
border: 0;
|
325 |
+
clip: rect(1px, 1px, 1px, 1px);
|
326 |
+
clip-path: inset(50%);
|
327 |
+
height: 1px;
|
328 |
+
margin: -1px;
|
329 |
+
overflow: hidden;
|
330 |
+
padding: 0;
|
331 |
+
position: absolute;
|
332 |
+
width: 1px;
|
333 |
+
word-wrap: normal !important;
|
334 |
+
}
|
335 |
+
.screen-reader-text:focus {
|
336 |
+
background-color: #eee;
|
337 |
+
clip: auto !important;
|
338 |
+
clip-path: none;
|
339 |
+
color: #444;
|
340 |
+
display: block;
|
341 |
+
font-size: 1em;
|
342 |
+
height: auto;
|
343 |
+
left: 5px;
|
344 |
+
line-height: normal;
|
345 |
+
padding: 15px 23px 14px;
|
346 |
+
text-decoration: none;
|
347 |
+
top: 5px;
|
348 |
+
width: auto;
|
349 |
+
z-index: 100000; /* Above WP toolbar. */
|
350 |
+
}
|
351 |
</style>
|
352 |
</head>
|
353 |
<body>
|
391 |
</div>
|
392 |
<div class="about-text">
|
393 |
<h3 class="h4"><?php esc_html_e('About Wordfence', 'wordfence'); ?></h3>
|
394 |
+
<p><?php esc_html_e('Wordfence is a security plugin installed on over 4 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.', 'wordfence'); ?></p>
|
395 |
<p><?php esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.', 'wordfence'); ?></p>
|
396 |
</div>
|
397 |
</div>
|
398 |
|
399 |
+
<p class="documentation small"><?php echo wp_kses(sprintf(__('Click here to learn more: <a href="%s" target="_blank" rel="noopener noreferrer">Documentation<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
|
400 |
<p class="generated small"><em><?php esc_html(printf(__('Generated by Wordfence at %s', 'wordfence'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime()))); ?>.<br><?php esc_html_e('Your computer\'s time:', 'wordfence'); ?> <script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
|
401 |
</div>
|
402 |
</body>
|
lib/wfScan.php
CHANGED
@@ -74,7 +74,7 @@ class wfScan {
|
|
74 |
if ($expired) {
|
75 |
self::errorExit(sprintf(
|
76 |
/* translators: 1. Unix timestamp. 2. WordPress nonce. 3. Unix timestamp. */
|
77 |
-
__('The key used to start a scan expired. The value is: %1$s and split is: %2$s and time is: %3$d'), $expired, $storedCronKey, time()));
|
78 |
} //keys only last 60 seconds and are used within milliseconds of creation
|
79 |
|
80 |
if (!$storedCronKey) {
|
@@ -178,7 +178,7 @@ class wfScan {
|
|
178 |
if ($scanController->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC && $isScheduled) {
|
179 |
if (isset($response['defer'])) {
|
180 |
$defer = (int) $response['defer'];
|
181 |
-
wordfence::status(2, 'info', sprintf(/* translators: Time until. */ __("Deferring scheduled scan by %s"), wfUtils::makeDuration($defer)));
|
182 |
wfConfig::set('lastScheduledScanStart', 0);
|
183 |
wfConfig::set('lastScanCompleted', 'ok');
|
184 |
wfConfig::set('lastScanFailureType', false);
|
@@ -355,4 +355,4 @@ MSG
|
|
355 |
private static function status($level, $type, $msg){
|
356 |
wordfence::status($level, $type, $msg);
|
357 |
}
|
358 |
-
}
|
74 |
if ($expired) {
|
75 |
self::errorExit(sprintf(
|
76 |
/* translators: 1. Unix timestamp. 2. WordPress nonce. 3. Unix timestamp. */
|
77 |
+
__('The key used to start a scan expired. The value is: %1$s and split is: %2$s and time is: %3$d', 'wordfence'), $expired, $storedCronKey, time()));
|
78 |
} //keys only last 60 seconds and are used within milliseconds of creation
|
79 |
|
80 |
if (!$storedCronKey) {
|
178 |
if ($scanController->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC && $isScheduled) {
|
179 |
if (isset($response['defer'])) {
|
180 |
$defer = (int) $response['defer'];
|
181 |
+
wordfence::status(2, 'info', sprintf(/* translators: Time until. */ __("Deferring scheduled scan by %s", 'wordfence'), wfUtils::makeDuration($defer)));
|
182 |
wfConfig::set('lastScheduledScanStart', 0);
|
183 |
wfConfig::set('lastScanCompleted', 'ok');
|
184 |
wfConfig::set('lastScanFailureType', false);
|
355 |
private static function status($level, $type, $msg){
|
356 |
wordfence::status($level, $type, $msg);
|
357 |
}
|
358 |
+
}
|
lib/wfScanEngine.php
CHANGED
@@ -275,7 +275,7 @@ class wfScanEngine {
|
|
275 |
if ((time() - $this->startTime) > $timeLimit) {
|
276 |
$error = sprintf(
|
277 |
/* translators: 1. Time duration. 2. Support URL. */
|
278 |
-
__('The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href="%2$s" target="_blank" rel="noopener noreferrer">Get More Information</a>', 'wordfence'),
|
279 |
wfUtils::makeDuration($timeLimit),
|
280 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT)
|
281 |
);
|
@@ -294,7 +294,6 @@ class wfScanEngine {
|
|
294 |
wfUtils::makeDuration(time() - $this->startTime, true)
|
295 |
));
|
296 |
if ($this->i->totalIssues > 0) {
|
297 |
-
$this->status(10, 'info', "SUM_FINAL:" . __("Scan interrupted. You have " . $this->i->totalIssues . " new issue" . ($this->i->totalIssues == 1 ? "" : "s") . " to fix. See below."));
|
298 |
$this->status(10, 'info', "SUM_FINAL:" . sprintf(
|
299 |
/* translators: Number of scan results. */
|
300 |
_n(
|
@@ -609,7 +608,7 @@ class wfScanEngine {
|
|
609 |
}
|
610 |
$longMsg = sprintf(
|
611 |
/* translators: 1. URL. 2. URL. */
|
612 |
-
__('The URL %1$s is on the malware list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'), esc_html($url), urlencode($url));
|
613 |
$data['gsb'] = $badList;
|
614 |
} else if ($badList == 'googpub-phish-shavar') {
|
615 |
if (is_multisite()) {
|
@@ -622,7 +621,7 @@ class wfScanEngine {
|
|
622 |
}
|
623 |
$longMsg = sprintf(
|
624 |
/* translators: 1. URL. 2. URL. */
|
625 |
-
__('The URL %1$s is on the phishing list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'), esc_html($url), urlencode($url));
|
626 |
$data['gsb'] = $badList;
|
627 |
} else if ($badList == 'wordfence-dbl') {
|
628 |
if (is_multisite()) {
|
@@ -694,7 +693,7 @@ class wfScanEngine {
|
|
694 |
} else if ($recommendation == 'UNKNOWN') {
|
695 |
$added = $this->addIssue('checkHowGetIPs', wfIssues::SEVERITY_HIGH, 'checkHowGetIPs', 'checkHowGetIPs' . $recommendation . WORDFENCE_VERSION,
|
696 |
__("Unable to accurately detect IPs", 'wordfence'),
|
697 |
-
sprintf(/* translators: Support URL. */ __('Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS))
|
698 |
, array());
|
699 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
|
700 |
$haveIssues = wfIssues::STATUS_PROBLEM;
|
@@ -717,7 +716,7 @@ class wfScanEngine {
|
|
717 |
__("'How does Wordfence get IPs' is misconfigured", 'wordfence'),
|
718 |
sprintf(
|
719 |
/* translators: Support URL. */
|
720 |
-
__('A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information</a>', 'wordfence'),
|
721 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS)
|
722 |
) . $extraMsg,
|
723 |
array('recommendation' => $recommendation));
|
@@ -792,7 +791,7 @@ class wfScanEngine {
|
|
792 |
__('Publicly accessible config, backup, or log file found: %s', 'wordfence'), esc_html($pathFromRoot)),
|
793 |
sprintf(
|
794 |
/* translators: 1. URL to publicly accessible file. 2. Support URL. */
|
795 |
-
__('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn more</a>', 'wordfence'),
|
796 |
$test->getUrl(),
|
797 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PUBLIC_CONFIG)
|
798 |
),
|
@@ -993,8 +992,8 @@ class wfScanEngine {
|
|
993 |
sprintf(
|
994 |
/* translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths. */
|
995 |
_n(
|
996 |
-
'The option "Scan files outside your WordPress installation" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a><br><br>The path skipped is %3$s',
|
997 |
-
'The option "Scan files outside your WordPress installation" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a><br><br>The paths skipped are %3$s',
|
998 |
$c,
|
999 |
'wordfence'
|
1000 |
),
|
@@ -1135,7 +1134,7 @@ class wfScanEngine {
|
|
1135 |
sprintf(/* translators: File path. */ __('Publicly accessible quarantined file found: %s', 'wordfence'), esc_html($file)),
|
1136 |
sprintf(
|
1137 |
/* translators: URL to publicly accessible file. */
|
1138 |
-
__('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be removed or made inaccessible.', 'wordfence'),
|
1139 |
$test->getUrl()
|
1140 |
),
|
1141 |
array(
|
@@ -1272,7 +1271,7 @@ class wfScanEngine {
|
|
1272 |
);
|
1273 |
$longMsg = sprintf(
|
1274 |
/* translators: 1. WordPress Post type. 2. URL. 3. URL. */
|
1275 |
-
__('This %1$s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'),
|
1276 |
esc_html($type),
|
1277 |
esc_html($result['URL']),
|
1278 |
urlencode($result['URL'])
|
@@ -1415,7 +1414,7 @@ class wfScanEngine {
|
|
1415 |
__('%1$s with author %2$s contains a suspected malware URL.', 'wordfence'), $uctype, esc_html($author));
|
1416 |
$longMsg = sprintf(
|
1417 |
/* translators: 1. WordPress post type. 2. URL. 3. URL. */
|
1418 |
-
__('This
|
1419 |
esc_html($type),
|
1420 |
esc_html($result['URL']),
|
1421 |
urlencode($result['URL'])
|
@@ -1779,7 +1778,7 @@ class wfScanEngine {
|
|
1779 |
'wafStatus',
|
1780 |
'wafStatus' . $firewall->firewallMode(),
|
1781 |
__('Web Application Firewall is disabled', 'wordfence'),
|
1782 |
-
sprintf(/* translators: Support URL. */ __('Wordfence\'s Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says "The Wordfence Web Application Firewall cannot run," click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href="%s" target="_blank" rel="noopener noreferrer">More Details</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_WAF_DISABLED)),
|
1783 |
array('wafStatus' => $firewall->firewallMode(), 'wafStatusDisplay' => $firewall->displayText())
|
1784 |
);
|
1785 |
}
|
@@ -2025,7 +2024,7 @@ class wfScanEngine {
|
|
2025 |
}
|
2026 |
$longMsg .= ' ' . sprintf(
|
2027 |
/* translators: Support URL. */
|
2028 |
-
__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information
|
2029 |
$added = $this->addIssue('wfPluginAbandoned', $severity, $key, $key, $shortMsg, $longMsg, $statusArray);
|
2030 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
|
2031 |
$haveIssues = wfIssues::STATUS_PROBLEM;
|
@@ -2064,7 +2063,7 @@ class wfScanEngine {
|
|
2064 |
}
|
2065 |
$longMsg .= ' ' . sprintf(
|
2066 |
/* translators: Support URL. */
|
2067 |
-
__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information
|
2068 |
$added = $this->addIssue('wfPluginRemoved', wfIssues::SEVERITY_CRITICAL, $key, $key, $shortMsg, $longMsg, $pluginData);
|
2069 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
|
2070 |
$haveIssues = wfIssues::STATUS_PROBLEM;
|
@@ -2089,7 +2088,7 @@ class wfScanEngine {
|
|
2089 |
|
2090 |
$key = 'wfPluginVulnerable' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['Version'];
|
2091 |
$shortMsg = "The Plugin \"" . $plugin['Name'] . "\" has an unpatched security vulnerability.";
|
2092 |
-
$longMsg = 'To protect your site from this vulnerability, the safest option is to deactivate and completely remove ' . esc_html($plugin['Name']) . ' until the developer releases a security fix. <a href="https://docs.wordfence.com/en/Understanding_scan_results#Plugin_has_an_unpatched_security_vulnerability" target="_blank" rel="noopener noreferrer">Get more information
|
2093 |
$added = $this->addIssue('wfPluginVulnerable', 1, $key, $key, $shortMsg, $longMsg, $plugin);
|
2094 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
2095 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
@@ -2252,7 +2251,7 @@ class wfScanEngine {
|
|
2252 |
continue;
|
2253 |
}
|
2254 |
|
2255 |
-
$longMsg .= ' - ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information
|
2256 |
|
2257 |
$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg));
|
2258 |
|
@@ -2294,7 +2293,7 @@ class wfScanEngine {
|
|
2294 |
$shortMsg = __('PHP Update Needed for Country Blocking', 'wordfence');
|
2295 |
$longMsg = sprintf(/* translators: Software version. */ __('The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion());
|
2296 |
|
2297 |
-
$longMsg .= ' ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information
|
2298 |
|
2299 |
$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg));
|
2300 |
|
@@ -2973,4 +2972,4 @@ class wfScanEngineCoreVersionChangeException extends Exception {
|
|
2973 |
}
|
2974 |
|
2975 |
class wfScanEngineTestCallbackFailedException extends Exception {
|
2976 |
-
}
|
275 |
if ((time() - $this->startTime) > $timeLimit) {
|
276 |
$error = sprintf(
|
277 |
/* translators: 1. Time duration. 2. Support URL. */
|
278 |
+
__('The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href="%2$s" target="_blank" rel="noopener noreferrer">Get More Information<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
279 |
wfUtils::makeDuration($timeLimit),
|
280 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT)
|
281 |
);
|
294 |
wfUtils::makeDuration(time() - $this->startTime, true)
|
295 |
));
|
296 |
if ($this->i->totalIssues > 0) {
|
|
|
297 |
$this->status(10, 'info', "SUM_FINAL:" . sprintf(
|
298 |
/* translators: Number of scan results. */
|
299 |
_n(
|
608 |
}
|
609 |
$longMsg = sprintf(
|
610 |
/* translators: 1. URL. 2. URL. */
|
611 |
+
__('The URL %1$s is on the malware list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'), esc_html($url), urlencode($url));
|
612 |
$data['gsb'] = $badList;
|
613 |
} else if ($badList == 'googpub-phish-shavar') {
|
614 |
if (is_multisite()) {
|
621 |
}
|
622 |
$longMsg = sprintf(
|
623 |
/* translators: 1. URL. 2. URL. */
|
624 |
+
__('The URL %1$s is on the phishing list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'), esc_html($url), urlencode($url));
|
625 |
$data['gsb'] = $badList;
|
626 |
} else if ($badList == 'wordfence-dbl') {
|
627 |
if (is_multisite()) {
|
693 |
} else if ($recommendation == 'UNKNOWN') {
|
694 |
$added = $this->addIssue('checkHowGetIPs', wfIssues::SEVERITY_HIGH, 'checkHowGetIPs', 'checkHowGetIPs' . $recommendation . WORDFENCE_VERSION,
|
695 |
__("Unable to accurately detect IPs", 'wordfence'),
|
696 |
+
sprintf(/* translators: Support URL. */ __('Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS))
|
697 |
, array());
|
698 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
|
699 |
$haveIssues = wfIssues::STATUS_PROBLEM;
|
716 |
__("'How does Wordfence get IPs' is misconfigured", 'wordfence'),
|
717 |
sprintf(
|
718 |
/* translators: Support URL. */
|
719 |
+
__('A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
720 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS)
|
721 |
) . $extraMsg,
|
722 |
array('recommendation' => $recommendation));
|
791 |
__('Publicly accessible config, backup, or log file found: %s', 'wordfence'), esc_html($pathFromRoot)),
|
792 |
sprintf(
|
793 |
/* translators: 1. URL to publicly accessible file. 2. Support URL. */
|
794 |
+
__('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn more<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
795 |
$test->getUrl(),
|
796 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PUBLIC_CONFIG)
|
797 |
),
|
992 |
sprintf(
|
993 |
/* translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths. */
|
994 |
_n(
|
995 |
+
'The option "Scan files outside your WordPress installation" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a><br><br>The path skipped is %3$s',
|
996 |
+
'The option "Scan files outside your WordPress installation" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a><br><br>The paths skipped are %3$s',
|
997 |
$c,
|
998 |
'wordfence'
|
999 |
),
|
1134 |
sprintf(/* translators: File path. */ __('Publicly accessible quarantined file found: %s', 'wordfence'), esc_html($file)),
|
1135 |
sprintf(
|
1136 |
/* translators: URL to publicly accessible file. */
|
1137 |
+
__('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be removed or made inaccessible.', 'wordfence'),
|
1138 |
$test->getUrl()
|
1139 |
),
|
1140 |
array(
|
1271 |
);
|
1272 |
$longMsg = sprintf(
|
1273 |
/* translators: 1. WordPress Post type. 2. URL. 3. URL. */
|
1274 |
+
__('This %1$s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'),
|
1275 |
esc_html($type),
|
1276 |
esc_html($result['URL']),
|
1277 |
urlencode($result['URL'])
|
1414 |
__('%1$s with author %2$s contains a suspected malware URL.', 'wordfence'), $uctype, esc_html($author));
|
1415 |
$longMsg = sprintf(
|
1416 |
/* translators: 1. WordPress post type. 2. URL. 3. URL. */
|
1417 |
+
__('This %1$s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'),
|
1418 |
esc_html($type),
|
1419 |
esc_html($result['URL']),
|
1420 |
urlencode($result['URL'])
|
1778 |
'wafStatus',
|
1779 |
'wafStatus' . $firewall->firewallMode(),
|
1780 |
__('Web Application Firewall is disabled', 'wordfence'),
|
1781 |
+
sprintf(/* translators: Support URL. */ __('Wordfence\'s Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says "The Wordfence Web Application Firewall cannot run," click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href="%s" target="_blank" rel="noopener noreferrer">More Details<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_WAF_DISABLED)),
|
1782 |
array('wafStatus' => $firewall->firewallMode(), 'wafStatusDisplay' => $firewall->displayText())
|
1783 |
);
|
1784 |
}
|
2024 |
}
|
2025 |
$longMsg .= ' ' . sprintf(
|
2026 |
/* translators: Support URL. */
|
2027 |
+
__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_ABANDONED));
|
2028 |
$added = $this->addIssue('wfPluginAbandoned', $severity, $key, $key, $shortMsg, $longMsg, $statusArray);
|
2029 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
|
2030 |
$haveIssues = wfIssues::STATUS_PROBLEM;
|
2063 |
}
|
2064 |
$longMsg .= ' ' . sprintf(
|
2065 |
/* translators: Support URL. */
|
2066 |
+
__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_REMOVED));
|
2067 |
$added = $this->addIssue('wfPluginRemoved', wfIssues::SEVERITY_CRITICAL, $key, $key, $shortMsg, $longMsg, $pluginData);
|
2068 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
|
2069 |
$haveIssues = wfIssues::STATUS_PROBLEM;
|
2088 |
|
2089 |
$key = 'wfPluginVulnerable' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['Version'];
|
2090 |
$shortMsg = "The Plugin \"" . $plugin['Name'] . "\" has an unpatched security vulnerability.";
|
2091 |
+
$longMsg = 'To protect your site from this vulnerability, the safest option is to deactivate and completely remove ' . esc_html($plugin['Name']) . ' until the developer releases a security fix. <a href="https://docs.wordfence.com/en/Understanding_scan_results#Plugin_has_an_unpatched_security_vulnerability" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>';
|
2092 |
$added = $this->addIssue('wfPluginVulnerable', 1, $key, $key, $shortMsg, $longMsg, $plugin);
|
2093 |
if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
|
2094 |
else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
|
2251 |
continue;
|
2252 |
}
|
2253 |
|
2254 |
+
$longMsg .= ' - ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_OPTION_MALWARE_URL));
|
2255 |
|
2256 |
$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg));
|
2257 |
|
2293 |
$shortMsg = __('PHP Update Needed for Country Blocking', 'wordfence');
|
2294 |
$longMsg = sprintf(/* translators: Software version. */ __('The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion());
|
2295 |
|
2296 |
+
$longMsg .= ' ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE));
|
2297 |
|
2298 |
$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg));
|
2299 |
|
2972 |
}
|
2973 |
|
2974 |
class wfScanEngineTestCallbackFailedException extends Exception {
|
2975 |
+
}
|
lib/wfVersionCheckController.php
CHANGED
@@ -11,7 +11,7 @@ class wfVersionCheckController {
|
|
11 |
const OPENSSL_DEPRECATING = '1.0.1';
|
12 |
const OPENSSL_MINIMUM = '1.0.1';
|
13 |
|
14 |
-
const WORDPRESS_DEPRECATING = '
|
15 |
const WORDPRESS_MINIMUM = '3.9.0';
|
16 |
|
17 |
const OPENSSL_DEV = 0;
|
@@ -65,7 +65,7 @@ class wfVersionCheckController {
|
|
65 |
__('<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
|
66 |
phpversion(),
|
67 |
self::PHP_DEPRECATING
|
68 |
-
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '</a>'
|
69 |
);
|
70 |
}
|
71 |
else if ($php == self::VERSION_UNSUPPORTED) {
|
@@ -88,7 +88,7 @@ class wfVersionCheckController {
|
|
88 |
__('<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
|
89 |
phpversion(),
|
90 |
self::PHP_DEPRECATING
|
91 |
-
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '</a>'
|
92 |
);
|
93 |
}
|
94 |
else {
|
@@ -112,7 +112,7 @@ class wfVersionCheckController {
|
|
112 |
$this->_adminNotice(
|
113 |
'opensslVersionCheckDeprecationNotice_' . self::OPENSSL_DEPRECATING,
|
114 |
'opensslVersionCheck',
|
115 |
-
sprintf(__('<strong>WARNING: </strong> Your site is using an OpenSSL version (%s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL) . '" target="_blank" rel="noopener noreferrer">' . __('Learn More', 'wordfence') . '</a>'
|
116 |
);
|
117 |
|
118 |
return false;
|
@@ -127,7 +127,7 @@ class wfVersionCheckController {
|
|
127 |
$this->_adminNotice(
|
128 |
'opensslVersionCheckUnsupportedNotice_' . self::OPENSSL_MINIMUM,
|
129 |
'opensslVersionCheck',
|
130 |
-
sprintf(__('<strong>WARNING: </strong> Your site is using an OpenSSL version (%s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL) . '" target="_blank" rel="noopener noreferrer">' . __('Learn More', 'wordfence') . '</a>'
|
131 |
);
|
132 |
|
133 |
return false;
|
@@ -164,7 +164,7 @@ class wfVersionCheckController {
|
|
164 |
__('<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
|
165 |
$wp_version,
|
166 |
self::WORDPRESS_DEPRECATING
|
167 |
-
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '</a>'
|
168 |
);
|
169 |
}
|
170 |
else if ($wordpress == self::VERSION_UNSUPPORTED) {
|
@@ -183,7 +183,7 @@ class wfVersionCheckController {
|
|
183 |
'wordpressVersionCheck',
|
184 |
wp_kses(sprintf(
|
185 |
/* translators: 1. WordPress version. 2. WordPress version. */
|
186 |
-
__('<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, self::WORDPRESS_DEPRECATING), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '</a>'
|
187 |
);
|
188 |
}
|
189 |
else {
|
11 |
const OPENSSL_DEPRECATING = '1.0.1';
|
12 |
const OPENSSL_MINIMUM = '1.0.1';
|
13 |
|
14 |
+
const WORDPRESS_DEPRECATING = '4.4.0';
|
15 |
const WORDPRESS_MINIMUM = '3.9.0';
|
16 |
|
17 |
const OPENSSL_DEV = 0;
|
65 |
__('<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
|
66 |
phpversion(),
|
67 |
self::PHP_DEPRECATING
|
68 |
+
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
|
69 |
);
|
70 |
}
|
71 |
else if ($php == self::VERSION_UNSUPPORTED) {
|
88 |
__('<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
|
89 |
phpversion(),
|
90 |
self::PHP_DEPRECATING
|
91 |
+
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
|
92 |
);
|
93 |
}
|
94 |
else {
|
112 |
$this->_adminNotice(
|
113 |
'opensslVersionCheckDeprecationNotice_' . self::OPENSSL_DEPRECATING,
|
114 |
'opensslVersionCheck',
|
115 |
+
sprintf(__('<strong>WARNING: </strong> Your site is using an OpenSSL version (%s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL) . '" target="_blank" rel="noopener noreferrer">' . __('Learn More', 'wordfence') . '<span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>'
|
116 |
);
|
117 |
|
118 |
return false;
|
127 |
$this->_adminNotice(
|
128 |
'opensslVersionCheckUnsupportedNotice_' . self::OPENSSL_MINIMUM,
|
129 |
'opensslVersionCheck',
|
130 |
+
sprintf(__('<strong>WARNING: </strong> Your site is using an OpenSSL version (%s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), self::OPENSSL_DEPRECATING) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL) . '" target="_blank" rel="noopener noreferrer">' . __('Learn More', 'wordfence') . '<span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>'
|
131 |
);
|
132 |
|
133 |
return false;
|
164 |
__('<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
|
165 |
$wp_version,
|
166 |
self::WORDPRESS_DEPRECATING
|
167 |
+
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
|
168 |
);
|
169 |
}
|
170 |
else if ($wordpress == self::VERSION_UNSUPPORTED) {
|
183 |
'wordpressVersionCheck',
|
184 |
wp_kses(sprintf(
|
185 |
/* translators: 1. WordPress version. 2. WordPress version. */
|
186 |
+
__('<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, self::WORDPRESS_DEPRECATING), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
|
187 |
);
|
188 |
}
|
189 |
else {
|
lib/wordfenceClass.php
CHANGED
@@ -1202,7 +1202,7 @@ SQL
|
|
1202 |
add_action('login_init','wordfence::loginInitAction');
|
1203 |
add_action('wp_login','wordfence::loginAction');
|
1204 |
add_action('wp_logout','wordfence::logoutAction');
|
1205 |
-
add_action('lostpassword_post', 'wordfence::lostPasswordPost',
|
1206 |
|
1207 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
1208 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
@@ -1211,7 +1211,7 @@ SQL
|
|
1211 |
|
1212 |
if(wfUtils::hasLoginCookie()){
|
1213 |
add_action('user_profile_update_errors', 'wordfence::validateProfileUpdate', 0, 3 );
|
1214 |
-
add_action('profile_update', 'wordfence::profileUpdateAction',
|
1215 |
}
|
1216 |
|
1217 |
add_action('validate_password_reset', 'wordfence::validatePassword', 10, 2);
|
@@ -1368,7 +1368,7 @@ SQL
|
|
1368 |
}
|
1369 |
public static function _pluginPageActionLinks($links) {
|
1370 |
if (!wfConfig::get('isPaid')) {
|
1371 |
-
$links = array_merge(array('aWordfencePluginCallout' => '<a href="https://www.wordfence.com/zz12/wordfence-signup/" target="_blank" rel="noopener noreferrer"><strong style="color: #11967A; display: inline;">' . esc_html__('Upgrade To Premium', 'wordfence') . '</strong></a>'), $links);
|
1372 |
}
|
1373 |
return $links;
|
1374 |
}
|
@@ -1703,7 +1703,7 @@ SQL
|
|
1703 |
return true;
|
1704 |
}
|
1705 |
}
|
1706 |
-
public static function lostPasswordPost() {
|
1707 |
$IP = wfUtils::getIP();
|
1708 |
if ($request = self::getLog()->getCurrentRequest()) {
|
1709 |
$request->action = 'lostPassword';
|
@@ -1712,21 +1712,28 @@ SQL
|
|
1712 |
if (wfBlock::isWhitelisted($IP)) {
|
1713 |
return;
|
1714 |
}
|
1715 |
-
|
1716 |
$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
|
1717 |
if ($lockout !== false) {
|
1718 |
$lockout->recordBlock();
|
1719 |
$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
|
1720 |
require(dirname(__FILE__) . '/wfLockedOut.php');
|
1721 |
}
|
1722 |
-
|
1723 |
-
if (
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1730 |
}
|
1731 |
|
1732 |
if($user){
|
@@ -1748,7 +1755,7 @@ SQL
|
|
1748 |
if($forgotAttempts >= wfConfig::get('loginSec_maxForgotPasswd')){
|
1749 |
self::lockOutIP($IP, sprintf(
|
1750 |
/* translators: 1. Password reset limit (number). 2. WordPress username. */
|
1751 |
-
__('Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: \'%2$s\''),
|
1752 |
wfConfig::get('loginSec_maxForgotPasswd'),
|
1753 |
$_POST['user_login']
|
1754 |
));
|
@@ -2571,14 +2578,14 @@ SQL
|
|
2571 |
if (!current_user_can('edit_others_posts')) {
|
2572 |
$urlBase = wfWP_REST_Users_Controller::wfGetURLBase();
|
2573 |
if (preg_match('~' . preg_quote($urlBase, '~') . '/*$~i', $route)) {
|
2574 |
-
$error = new WP_Error('rest_user_cannot_view', __('Sorry, you are not allowed to list users.'), array('status' => rest_authorization_required_code()));
|
2575 |
$response = rest_ensure_response($error);
|
2576 |
if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); }
|
2577 |
}
|
2578 |
else if (preg_match('~' . preg_quote($urlBase, '~') . '/+(\d+)/*$~i', $route, $matches)) {
|
2579 |
$id = (int) $matches[1];
|
2580 |
if (get_current_user_id() !== $id) {
|
2581 |
-
$error = new WP_Error('rest_user_invalid_id', __('Invalid user ID.'), array('status' => 404));
|
2582 |
$response = rest_ensure_response($error);
|
2583 |
if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); }
|
2584 |
}
|
@@ -2722,14 +2729,14 @@ SQL
|
|
2722 |
$twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']);
|
2723 |
if (!self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) {
|
2724 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2725 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again.'));
|
2726 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
2727 |
}
|
2728 |
}
|
2729 |
else { //Code path for old method, invalid password the second time
|
2730 |
self::$authError = $authUser;
|
2731 |
if (is_wp_error(self::$authError) && (self::$authError->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || self::$authError->get_error_code() == 'incorrect_password' || $authUser->get_error_code() == 'authentication_failed') && wfConfig::get('loginSec_maskLoginErrors')) {
|
2732 |
-
self::$authError = new WP_Error('incorrect_password', sprintf(/* translators: 1. WordPress username. 2. Password reset URL. */ __('<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?'), $username, wp_lostpassword_url()));
|
2733 |
}
|
2734 |
|
2735 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
@@ -2739,7 +2746,7 @@ SQL
|
|
2739 |
wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($userID));
|
2740 |
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(
|
2741 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
2742 |
-
__('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'),
|
2743 |
self_admin_url('profile.php'),
|
2744 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)
|
2745 |
), '2faBreachPassword', array($authUser->ID));
|
@@ -2763,18 +2770,18 @@ SQL
|
|
2763 |
if (is_object($authUser) && get_class($authUser) == 'WP_User' && $authUser->ID == $userID) { //Using the old method of appending the code to the password
|
2764 |
if ($mode == 'authenticator') {
|
2765 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2766 |
-
self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>).'));
|
2767 |
}
|
2768 |
else {
|
2769 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2770 |
-
self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>).'));
|
2771 |
}
|
2772 |
}
|
2773 |
else {
|
2774 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2775 |
if ($loginNonce === false) { //Should never happen but is technically possible
|
2776 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2777 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.'));
|
2778 |
return self::$authError;
|
2779 |
}
|
2780 |
|
@@ -2784,11 +2791,11 @@ SQL
|
|
2784 |
|
2785 |
if ($mode == 'authenticator') {
|
2786 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2787 |
-
self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456).') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2788 |
}
|
2789 |
else {
|
2790 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2791 |
-
self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456).') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2792 |
}
|
2793 |
}
|
2794 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
@@ -2825,7 +2832,7 @@ SQL
|
|
2825 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2826 |
if ($loginNonce === false) { //Should never happen but is technically possible
|
2827 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2828 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.'));
|
2829 |
return self::$authError;
|
2830 |
}
|
2831 |
|
@@ -2834,7 +2841,7 @@ SQL
|
|
2834 |
update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
|
2835 |
|
2836 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2837 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2838 |
return self::$authError;
|
2839 |
}
|
2840 |
|
@@ -2848,7 +2855,7 @@ SQL
|
|
2848 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2849 |
if ($loginNonce === false) { //Should never happen but is technically possible
|
2850 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2851 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.'));
|
2852 |
return self::$authError;
|
2853 |
}
|
2854 |
|
@@ -2857,7 +2864,7 @@ SQL
|
|
2857 |
update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
|
2858 |
|
2859 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2860 |
-
self::$authError = new WP_Error('twofactor_invalid', __('<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with \'wf\' and should be four characters (e.g., wfAB12).') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2861 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
2862 |
}
|
2863 |
}
|
@@ -2875,7 +2882,7 @@ SQL
|
|
2875 |
wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($authUser->ID));
|
2876 |
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(
|
2877 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
2878 |
-
__('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), '2faBreachPassword', array($authUser->ID));
|
2879 |
}
|
2880 |
|
2881 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
@@ -2908,12 +2915,12 @@ SQL
|
|
2908 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
2909 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
2910 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2911 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2912 |
return self::$authError;
|
2913 |
}
|
2914 |
else {
|
2915 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2916 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).'));
|
2917 |
return self::$authError;
|
2918 |
}
|
2919 |
}
|
@@ -2947,12 +2954,12 @@ SQL
|
|
2947 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
2948 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
2949 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2950 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2951 |
return self::$authError;
|
2952 |
}
|
2953 |
else {
|
2954 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2955 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).'));
|
2956 |
return self::$authError;
|
2957 |
}
|
2958 |
}
|
@@ -3004,12 +3011,12 @@ SQL
|
|
3004 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
3005 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
3006 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3007 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.') . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
3008 |
return self::$authError;
|
3009 |
}
|
3010 |
else {
|
3011 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3012 |
-
self::$authError = new WP_Error('twofactor_required', __('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>).'));
|
3013 |
return self::$authError;
|
3014 |
}
|
3015 |
}
|
@@ -3030,7 +3037,7 @@ SQL
|
|
3030 |
else if ($usingBreachedPassword) {
|
3031 |
if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) {
|
3032 |
wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID));
|
3033 |
-
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(__('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID));
|
3034 |
}
|
3035 |
else {
|
3036 |
$username = $authUser->user_login;
|
@@ -3047,7 +3054,7 @@ SQL
|
|
3047 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3048 |
self::$authError = new WP_Error('breached_password', sprintf(
|
3049 |
/* translators: 1. Reset password URL. 2. Support URL. */
|
3050 |
-
__('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>'), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
|
3051 |
return self::$authError;
|
3052 |
}
|
3053 |
}
|
@@ -3055,8 +3062,8 @@ SQL
|
|
3055 |
if ($requireAdminTwoFactor && wfUtils::isAdmin($authUser)) {
|
3056 |
$username = $authUser->user_login;
|
3057 |
self::getLog()->logLogin('loginFailValidUsername', 1, $username);
|
3058 |
-
wordfence::alert(__("Admin Login Blocked"), sprintf(/* translators: WordPress username. */__("A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not.", 'wordfence'), $username), wfUtils::getIP());
|
3059 |
-
self::$authError = new WP_Error('twofactor_disabled_required', __('<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account.'));
|
3060 |
return self::$authError;
|
3061 |
}
|
3062 |
|
@@ -3066,7 +3073,7 @@ SQL
|
|
3066 |
else if ($usingBreachedPassword) {
|
3067 |
if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) {
|
3068 |
wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID));
|
3069 |
-
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(/* translators: 1. Reset password URL. 2. Support URL. */ __('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID));
|
3070 |
}
|
3071 |
else {
|
3072 |
$username = $authUser->user_login;
|
@@ -3083,7 +3090,7 @@ SQL
|
|
3083 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3084 |
self::$authError = new WP_Error('breached_password', sprintf(
|
3085 |
/* translators: 1. Reset password URL. 2. Support URL. */
|
3086 |
-
__('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More</a>'), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
|
3087 |
return self::$authError;
|
3088 |
}
|
3089 |
}
|
@@ -3179,7 +3186,7 @@ SQL
|
|
3179 |
if(is_wp_error($authUser) && ($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || $authUser->get_error_code() == 'incorrect_password') && wfConfig::get('loginSec_maskLoginErrors')){
|
3180 |
return new WP_Error( 'incorrect_password', sprintf(
|
3181 |
/* translators: 1. WordPress username. 2. Reset password URL. */
|
3182 |
-
__( '<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?' ), $username, wp_lostpassword_url() ) );
|
3183 |
}
|
3184 |
|
3185 |
return $authUser;
|
@@ -3537,7 +3544,7 @@ SQL
|
|
3537 |
public static function ajax_sendDiagnostic_callback(){
|
3538 |
add_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0, 3);
|
3539 |
$inEmail = true;
|
3540 |
-
$body = "This email is the diagnostic from " . site_url() . ".\nThe IP address that requested this was: " . wfUtils::getIP() . "\nTicket Number/Forum Username: " . $_POST['ticket'];
|
3541 |
$sendingDiagnosticEmail = true;
|
3542 |
ob_start();
|
3543 |
require(dirname(__FILE__) . '/menu_tools_diagnostic.php');
|
@@ -3594,7 +3601,7 @@ SQL
|
|
3594 |
}
|
3595 |
public static function ajax_addTwoFactor_callback(){
|
3596 |
if(! wfConfig::get('isPaid')){
|
3597 |
-
return array('errorMsg' => __('Cellphone Sign-in is only available to paid members. <a href="https://www.wordfence.com/gnl1twoFac3/wordfence-signup/" target="_blank" rel="noopener noreferrer">Click here to upgrade now
|
3598 |
}
|
3599 |
$username = sanitize_text_field($_POST['username']);
|
3600 |
$phone = sanitize_text_field($_POST['phone']);
|
@@ -4091,6 +4098,12 @@ SQL
|
|
4091 |
}
|
4092 |
return array('ok' => 1);
|
4093 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
4094 |
public static function ajax_updateConfig_callback(){
|
4095 |
$key = $_POST['key'];
|
4096 |
$val = $_POST['val'];
|
@@ -4916,7 +4929,7 @@ HTACCESS;
|
|
4916 |
}
|
4917 |
|
4918 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4919 |
-
'messageHTML' => sprintf(/* translators: Localized date. */ __('The current scan looks like it has failed. Its last status update was <span id="wf-scan-failed-time-ago">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably.', 'wordfence'), $scanFailedTiming) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>',
|
4920 |
'buttonTitle' => __('Cancel Scan', 'wordfence'),
|
4921 |
))->render();
|
4922 |
|
@@ -4924,13 +4937,13 @@ HTACCESS;
|
|
4924 |
case wfIssues::SCAN_FAILED_FORK_FAILED:
|
4925 |
case wfIssues::SCAN_FAILED_GENERAL:
|
4926 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4927 |
-
'messageHTML' => __('The previous scan has failed. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>',
|
4928 |
'buttonTitle' => __('Close', 'wordfence'),
|
4929 |
))->render();
|
4930 |
break;
|
4931 |
case wfIssues::SCAN_FAILED_DURATION_REACHED:
|
4932 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4933 |
-
'messageHTML' => sprintf(/* translators: Time limit (number). */ __('The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page.', 'wordfence'), wfUtils::makeDuration($timeLimit)) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT) . '" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i></a>',
|
4934 |
'buttonTitle' => __('Close', 'wordfence'),
|
4935 |
))->render();
|
4936 |
break;
|
@@ -4943,7 +4956,7 @@ HTACCESS;
|
|
4943 |
case wfIssues::SCAN_FAILED_START_TIMEOUT:
|
4944 |
case wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED:
|
4945 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4946 |
-
'messageHTML' => __('The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILED_START) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>',
|
4947 |
'buttonTitle' => __('Close', 'wordfence'),
|
4948 |
))->render();
|
4949 |
break;
|
@@ -4955,7 +4968,7 @@ HTACCESS;
|
|
4955 |
break;
|
4956 |
case wfIssues::SCAN_FAILED_API_CALL_FAILED:
|
4957 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4958 |
-
'messageHTML' => __('The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>',
|
4959 |
'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted', '')),
|
4960 |
'buttonTitle' => __('Close', 'wordfence'),
|
4961 |
))->render();
|
@@ -4963,7 +4976,7 @@ HTACCESS;
|
|
4963 |
case wfIssues::SCAN_FAILED_API_INVALID_RESPONSE:
|
4964 |
case wfIssues::SCAN_FAILED_API_ERROR_RESPONSE:
|
4965 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4966 |
-
'messageHTML' => __('The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '</a>',
|
4967 |
'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted'), ''),
|
4968 |
'buttonTitle' => __('Close', 'wordfence'),
|
4969 |
))->render();
|
@@ -5921,6 +5934,7 @@ HTML;
|
|
5921 |
'switchTo2FANew', 'switchTo2FAOld',
|
5922 |
'wfcentral_step1', 'wfcentral_step2', 'wfcentral_step3', 'wfcentral_step4', 'wfcentral_step5', 'wfcentral_step6', 'wfcentral_disconnect',
|
5923 |
'exportDiagnostics',
|
|
|
5924 |
) as $func){
|
5925 |
add_action('wp_ajax_wordfence_' . $func, 'wordfence::ajaxReceiver');
|
5926 |
}
|
@@ -6187,7 +6201,7 @@ HTML;
|
|
6187 |
'We encountered a problem' => __('We encountered a problem', 'wordfence'),
|
6188 |
'Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.' => /* translators: URL. */ __('Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.', 'wordfence'),
|
6189 |
'Wordfence is working...' => __('Wordfence is working...', 'wordfence'),
|
6190 |
-
'You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\' rel=\'noopener noreferrer\' href=\'
|
6191 |
'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.', 'wordfence'),
|
6192 |
'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>', 'wordfence'),
|
6193 |
'You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.' => __('You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.', 'wordfence'),
|
@@ -6240,7 +6254,7 @@ HTML;
|
|
6240 |
echo '<div id="wafConfigInaccessibleNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall cannot run.', 'wordfence') . '</strong> ' .
|
6241 |
sprintf(
|
6242 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
6243 |
-
__('The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href="%1$s">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"></a>', 'wordfence'),
|
6244 |
$wafMenuURL,
|
6245 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_INACCESSIBLE_CONFIG)
|
6246 |
) . '</p></div>';
|
@@ -6262,7 +6276,7 @@ HTML;
|
|
6262 |
echo '<div id="wafConfigNeedsUpdateNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' .
|
6263 |
sprintf(
|
6264 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
6265 |
-
__('It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a>. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"></a>', 'wordfence'),
|
6266 |
$wafMenuURL,
|
6267 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX)
|
6268 |
) . '</p></div>';
|
@@ -6281,13 +6295,13 @@ HTML;
|
|
6281 |
echo '<div id="wafConfigNeedsFixedNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' .
|
6282 |
sprintf(
|
6283 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
6284 |
-
__('It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a> or use the "Optimize the Wordfence Firewall" button on the Firewall Options page. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"></a>', 'wordfence'),
|
6285 |
$wafMenuURL,
|
6286 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX)
|
6287 |
) . '</p></div>';
|
6288 |
}
|
6289 |
public static function wafReadOnlyNotice() {
|
6290 |
-
echo '<div id="wordfenceWAFReadOnlyNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall is in read-only mode.', 'wordfence') . '</strong> ' . sprintf('PHP is currently running as a command line user and to avoid file permission issues, the WAF is running in read-only mode. It will automatically resume normal operation when run normally by a web server. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%s"></a>', wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_READ_ONLY_WARNING)) . '</p></div>';
|
6291 |
}
|
6292 |
public static function misconfiguredHowGetIPsNotice() {
|
6293 |
$url = network_admin_url('admin.php?page=Wordfence&subpage=global_options');
|
@@ -6323,7 +6337,7 @@ HTML;
|
|
6323 |
}
|
6324 |
echo '<div id="wordfenceMisconfiguredHowGetIPsNotice" class="fade error"><p><strong>' .
|
6325 |
__('Your \'How does Wordfence get IPs\' setting is misconfigured.', 'wordfence')
|
6326 |
-
. '</strong> ' . $existingMsg . ' ' . $recommendationMsg . ' <a href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'yes\'); return false;">' .
|
6327 |
__('Click here to use the recommended setting', 'wordfence')
|
6328 |
. '</a> ' .
|
6329 |
__('or', 'wordfence')
|
@@ -6332,19 +6346,47 @@ HTML;
|
|
6332 |
. '</a> ' .
|
6333 |
__('to manually update it.', 'wordfence')
|
6334 |
. '</p><p>
|
6335 |
-
<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'no\'); return false;">' .
|
6336 |
__('Dismiss', 'wordfence')
|
6337 |
-
. '</a> <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS) . '"></a></p></div>';
|
6338 |
}
|
6339 |
public static function autoUpdateNotice(){
|
6340 |
echo '<div id="wordfenceAutoUpdateChoice" class="fade error"><p><strong>' .
|
6341 |
__('Do you want Wordfence to stay up-to-date automatically?', 'wordfence')
|
6342 |
-
. '</strong> <a href="#" onclick="wordfenceExt.autoUpdateChoice(\'yes\'); return false;">'.
|
6343 |
__('Yes, enable auto-update.', 'wordfence')
|
6344 |
-
. '</a> | <a href="#" onclick="wordfenceExt.autoUpdateChoice(\'no\'); return false;">' .
|
6345 |
__('No thanks.', 'wordfence')
|
6346 |
. '</a></p></div>';
|
6347 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6348 |
public static function admin_menus(){
|
6349 |
if(! wfUtils::isAdmin()){ return; }
|
6350 |
$warningAdded = false;
|
@@ -6536,13 +6578,17 @@ HTML;
|
|
6536 |
exit;
|
6537 |
}
|
6538 |
|
6539 |
-
if (
|
6540 |
-
|
6541 |
-
|
6542 |
-
|
6543 |
-
|
6544 |
-
|
6545 |
-
|
|
|
|
|
|
|
|
|
6546 |
}
|
6547 |
|
6548 |
$notificationCount = count(wfNotification::notifications());
|
@@ -6714,7 +6760,7 @@ JQUERY;
|
|
6714 |
wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION);
|
6715 |
|
6716 |
wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION);
|
6717 |
-
wp_enqueue_script('wordfence-knockout-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/knockout-3.
|
6718 |
wp_enqueue_script('wordfence-live-traffic-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.liveTraffic.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);
|
6719 |
|
6720 |
ob_start();
|
@@ -7214,7 +7260,7 @@ SQL
|
|
7214 |
*/
|
7215 |
public static function fixGDLimitLoginsErrors($content) {
|
7216 |
if (self::$authError) {
|
7217 |
-
$content = str_replace(__('<strong>ERROR</strong>: Incorrect username or password.', 'limit-login-attempts') . "<br />\n", '', $content);
|
7218 |
$content .= '<br />' . self::$authError->get_error_message();
|
7219 |
}
|
7220 |
return $content;
|
@@ -7919,7 +7965,7 @@ SQL
|
|
7919 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
7920 |
'title' => __('Filesystem Credentials Required', 'wordfence'),
|
7921 |
'html' => $credentialsContent,
|
7922 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)),
|
7923 |
'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete the setup.', 'wordfence'),
|
7924 |
))->render();
|
7925 |
return array('needsCredentials' => 1, 'html' => $html);
|
@@ -7943,7 +7989,7 @@ SQL
|
|
7943 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
7944 |
'title' => __('Filesystem Permission Error', 'wordfence'),
|
7945 |
'html' => $credentialsError,
|
7946 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)),
|
7947 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
7948 |
))->render();
|
7949 |
return array('credentialsFailed' => 1, 'html' => $html);
|
@@ -7987,7 +8033,7 @@ SQL
|
|
7987 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
7988 |
'title' => __('Installation Failed', 'wordfence'),
|
7989 |
'html' => $installError,
|
7990 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)),
|
7991 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
7992 |
))->render();
|
7993 |
return array('installationFailed' => 1, 'html' => $html);
|
@@ -8026,7 +8072,7 @@ SQL
|
|
8026 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8027 |
'title' => __('Filesystem Credentials Required', 'wordfence'),
|
8028 |
'html' => $credentialsContent,
|
8029 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8030 |
'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete uninstallation.', 'wordfence'),
|
8031 |
))->render();
|
8032 |
return array('needsCredentials' => 1, 'html' => $html);
|
@@ -8051,7 +8097,7 @@ SQL
|
|
8051 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8052 |
'title' => __('Filesystem Permission Error', 'wordfence'),
|
8053 |
'html' => $credentialsError,
|
8054 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8055 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8056 |
))->render();
|
8057 |
return array('credentialsFailed' => 1, 'html' => $html);
|
@@ -8082,7 +8128,7 @@ SQL
|
|
8082 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8083 |
'title' => __('Waiting for Changes', 'wordfence'),
|
8084 |
'html' => $waitingResponse,
|
8085 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8086 |
'footerButtonTitle' => __('Close', 'wordfence'),
|
8087 |
'noX' => true,
|
8088 |
))->render();
|
@@ -8106,12 +8152,12 @@ SQL
|
|
8106 |
if ($retryAttempted) {
|
8107 |
$userIniError .= ' <strong>' . __('Retrying Failed.', 'wordfence') . '</strong>';
|
8108 |
}
|
8109 |
-
$userIniError .= ' <a href="#" class="wf-waf-uninstall-try-again">' . __('Try Again', 'wordfence') . '</a>';
|
8110 |
$userIniError .= '</p>';
|
8111 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8112 |
'title' => __('Unable to Uninstall', 'wordfence'),
|
8113 |
'html' => $userIniError,
|
8114 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8115 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8116 |
))->render();
|
8117 |
|
@@ -8157,7 +8203,7 @@ SQL
|
|
8157 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8158 |
'title' => __('Uninstallation Failed', 'wordfence'),
|
8159 |
'html' => $installError,
|
8160 |
-
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8161 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8162 |
))->render();
|
8163 |
return array('uninstallationFailed' => 1, 'html' => $html);
|
@@ -8877,9 +8923,9 @@ SQL
|
|
8877 |
public static function wafAutoPrependNotice() {
|
8878 |
$url = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend');
|
8879 |
echo '<div class="update-nag" id="wf-extended-protection-notice">' . __('To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:', 'wordfence') . ' <a class="wf-btn wf-btn-default wf-btn-sm" href="' . esc_url($url) . '">' . __('Click here to configure', 'wordfence') . '</a>
|
8880 |
-
<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.setOption(\'dismissAutoPrependNotice\', 1); jQuery(\'#wf-extended-protection-notice\').fadeOut(); return false;">' . __('Dismiss', 'wordfence') . '</a>
|
8881 |
<br>
|
8882 |
-
<em style="font-size: 85%;">' . sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help</a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)) . '</em>
|
8883 |
</div>';
|
8884 |
}
|
8885 |
|
@@ -9065,13 +9111,13 @@ if (file_exists(__DIR__.%1$s)) {
|
|
9065 |
if (!is_array($body) || !isset($body['data']['attributes'])) {
|
9066 |
return array(
|
9067 |
'err' => 1,
|
9068 |
-
'errorMsg' => sprintf(/* translators: Error message. */ __("Invalid response from Wordfence Central: %s"), $response->getBody()),
|
9069 |
);
|
9070 |
}
|
9071 |
if (!array_key_exists('id', $body['data'])) {
|
9072 |
return array(
|
9073 |
'err' => 1,
|
9074 |
-
'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response."), 'id'),
|
9075 |
);
|
9076 |
}
|
9077 |
|
@@ -9084,7 +9130,7 @@ if (file_exists(__DIR__.%1$s)) {
|
|
9084 |
if (!array_key_exists($key, $data)) {
|
9085 |
return array(
|
9086 |
'err' => 1,
|
9087 |
-
'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response."), $key),
|
9088 |
);
|
9089 |
}
|
9090 |
}
|
1202 |
add_action('login_init','wordfence::loginInitAction');
|
1203 |
add_action('wp_login','wordfence::loginAction');
|
1204 |
add_action('wp_logout','wordfence::logoutAction');
|
1205 |
+
add_action('lostpassword_post', 'wordfence::lostPasswordPost', 1, 2);
|
1206 |
|
1207 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
1208 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
1211 |
|
1212 |
if(wfUtils::hasLoginCookie()){
|
1213 |
add_action('user_profile_update_errors', 'wordfence::validateProfileUpdate', 0, 3 );
|
1214 |
+
add_action('profile_update', 'wordfence::profileUpdateAction', 99, 2);
|
1215 |
}
|
1216 |
|
1217 |
add_action('validate_password_reset', 'wordfence::validatePassword', 10, 2);
|
1368 |
}
|
1369 |
public static function _pluginPageActionLinks($links) {
|
1370 |
if (!wfConfig::get('isPaid')) {
|
1371 |
+
$links = array_merge(array('aWordfencePluginCallout' => '<a href="https://www.wordfence.com/zz12/wordfence-signup/" target="_blank" rel="noopener noreferrer"><strong style="color: #11967A; display: inline;">' . esc_html__('Upgrade To Premium', 'wordfence') . '</strong><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'), $links);
|
1372 |
}
|
1373 |
return $links;
|
1374 |
}
|
1703 |
return true;
|
1704 |
}
|
1705 |
}
|
1706 |
+
public static function lostPasswordPost($errors = null, $user = null) {
|
1707 |
$IP = wfUtils::getIP();
|
1708 |
if ($request = self::getLog()->getCurrentRequest()) {
|
1709 |
$request->action = 'lostPassword';
|
1712 |
if (wfBlock::isWhitelisted($IP)) {
|
1713 |
return;
|
1714 |
}
|
1715 |
+
|
1716 |
$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
|
1717 |
if ($lockout !== false) {
|
1718 |
$lockout->recordBlock();
|
1719 |
$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
|
1720 |
require(dirname(__FILE__) . '/wfLockedOut.php');
|
1721 |
}
|
1722 |
+
|
1723 |
+
if ($user === null) {
|
1724 |
+
if (empty($_POST['user_login'])) { return; }
|
1725 |
+
$user_login = $_POST['user_login'];
|
1726 |
+
if (is_array($user_login)) { $user_login = wfUtils::array_first($user_login); }
|
1727 |
+
$user_login = trim($user_login);
|
1728 |
+
$user = get_user_by('login', $user_login);
|
1729 |
+
if (!$user) {
|
1730 |
+
$user = get_user_by('email', $user_login);
|
1731 |
+
}
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
if ($user === false && wfConfig::get('loginSec_maskLoginErrors')) {
|
1735 |
+
wp_safe_redirect(!empty($_REQUEST['redirect_to'])?$_REQUEST['redirect_to']:'wp-login.php?checkemail=confirm');
|
1736 |
+
exit;
|
1737 |
}
|
1738 |
|
1739 |
if($user){
|
1755 |
if($forgotAttempts >= wfConfig::get('loginSec_maxForgotPasswd')){
|
1756 |
self::lockOutIP($IP, sprintf(
|
1757 |
/* translators: 1. Password reset limit (number). 2. WordPress username. */
|
1758 |
+
__('Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: \'%2$s\'', 'wordfence'),
|
1759 |
wfConfig::get('loginSec_maxForgotPasswd'),
|
1760 |
$_POST['user_login']
|
1761 |
));
|
2578 |
if (!current_user_can('edit_others_posts')) {
|
2579 |
$urlBase = wfWP_REST_Users_Controller::wfGetURLBase();
|
2580 |
if (preg_match('~' . preg_quote($urlBase, '~') . '/*$~i', $route)) {
|
2581 |
+
$error = new WP_Error('rest_user_cannot_view', __('Sorry, you are not allowed to list users.', 'wordfence'), array('status' => rest_authorization_required_code()));
|
2582 |
$response = rest_ensure_response($error);
|
2583 |
if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); }
|
2584 |
}
|
2585 |
else if (preg_match('~' . preg_quote($urlBase, '~') . '/+(\d+)/*$~i', $route, $matches)) {
|
2586 |
$id = (int) $matches[1];
|
2587 |
if (get_current_user_id() !== $id) {
|
2588 |
+
$error = new WP_Error('rest_user_invalid_id', __('Invalid user ID.', 'wordfence'), array('status' => 404));
|
2589 |
$response = rest_ensure_response($error);
|
2590 |
if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); }
|
2591 |
}
|
2729 |
$twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']);
|
2730 |
if (!self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) {
|
2731 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2732 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again.', 'wordfence'), array('strong'=>array())));
|
2733 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
2734 |
}
|
2735 |
}
|
2736 |
else { //Code path for old method, invalid password the second time
|
2737 |
self::$authError = $authUser;
|
2738 |
if (is_wp_error(self::$authError) && (self::$authError->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || self::$authError->get_error_code() == 'incorrect_password' || $authUser->get_error_code() == 'authentication_failed') && wfConfig::get('loginSec_maskLoginErrors')) {
|
2739 |
+
self::$authError = new WP_Error('incorrect_password', sprintf(/* translators: 1. WordPress username. 2. Password reset URL. */ wp_kses(__('<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?', 'wordfence'), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array()))), $username, wp_lostpassword_url()));
|
2740 |
}
|
2741 |
|
2742 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
2746 |
wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($userID));
|
2747 |
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(
|
2748 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
2749 |
+
__('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
2750 |
self_admin_url('profile.php'),
|
2751 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)
|
2752 |
), '2faBreachPassword', array($authUser->ID));
|
2770 |
if (is_object($authUser) && get_class($authUser) == 'WP_User' && $authUser->ID == $userID) { //Using the old method of appending the code to the password
|
2771 |
if ($mode == 'authenticator') {
|
2772 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2773 |
+
self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
|
2774 |
}
|
2775 |
else {
|
2776 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2777 |
+
self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
|
2778 |
}
|
2779 |
}
|
2780 |
else {
|
2781 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2782 |
if ($loginNonce === false) { //Should never happen but is technically possible
|
2783 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2784 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.', 'wordfence'), array('strong'=>array())));
|
2785 |
return self::$authError;
|
2786 |
}
|
2787 |
|
2791 |
|
2792 |
if ($mode == 'authenticator') {
|
2793 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2794 |
+
self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456).', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2795 |
}
|
2796 |
else {
|
2797 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2798 |
+
self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456).', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2799 |
}
|
2800 |
}
|
2801 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
2832 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2833 |
if ($loginNonce === false) { //Should never happen but is technically possible
|
2834 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2835 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.', 'wordfence'), array('strong'=>array())));
|
2836 |
return self::$authError;
|
2837 |
}
|
2838 |
|
2841 |
update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
|
2842 |
|
2843 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2844 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2845 |
return self::$authError;
|
2846 |
}
|
2847 |
|
2855 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2856 |
if ($loginNonce === false) { //Should never happen but is technically possible
|
2857 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2858 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.', 'wordfence'), array('strong'=>array())));
|
2859 |
return self::$authError;
|
2860 |
}
|
2861 |
|
2864 |
update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
|
2865 |
|
2866 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2867 |
+
self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with \'wf\' and should be four characters (e.g., wfAB12).', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2868 |
return self::processBruteForceAttempt(self::$authError, $username, $passwd);
|
2869 |
}
|
2870 |
}
|
2882 |
wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($authUser->ID));
|
2883 |
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(
|
2884 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
2885 |
+
__('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), '2faBreachPassword', array($authUser->ID));
|
2886 |
}
|
2887 |
|
2888 |
$loginNonce = wfWAFUtils::random_bytes(20);
|
2915 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
2916 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
2917 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2918 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2919 |
return self::$authError;
|
2920 |
}
|
2921 |
else {
|
2922 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2923 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
|
2924 |
return self::$authError;
|
2925 |
}
|
2926 |
}
|
2954 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
2955 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
2956 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2957 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
2958 |
return self::$authError;
|
2959 |
}
|
2960 |
else {
|
2961 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
2962 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
|
2963 |
return self::$authError;
|
2964 |
}
|
2965 |
}
|
3011 |
$allowSeparatePrompt = ini_get('output_buffering') > 0;
|
3012 |
if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
|
3013 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3014 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
|
3015 |
return self::$authError;
|
3016 |
}
|
3017 |
else {
|
3018 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3019 |
+
self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
|
3020 |
return self::$authError;
|
3021 |
}
|
3022 |
}
|
3037 |
else if ($usingBreachedPassword) {
|
3038 |
if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) {
|
3039 |
wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID));
|
3040 |
+
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(__('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID));
|
3041 |
}
|
3042 |
else {
|
3043 |
$username = $authUser->user_login;
|
3054 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3055 |
self::$authError = new WP_Error('breached_password', sprintf(
|
3056 |
/* translators: 1. Reset password URL. 2. Support URL. */
|
3057 |
+
wp_kses(__('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span style="font-size:0;"> (opens in new tab)</span></a>', 'wordfence'), array('strong'=>array(), 'a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('style'=>array()))), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
|
3058 |
return self::$authError;
|
3059 |
}
|
3060 |
}
|
3062 |
if ($requireAdminTwoFactor && wfUtils::isAdmin($authUser)) {
|
3063 |
$username = $authUser->user_login;
|
3064 |
self::getLog()->logLogin('loginFailValidUsername', 1, $username);
|
3065 |
+
wordfence::alert(__("Admin Login Blocked", 'wordfence'), sprintf(/* translators: WordPress username. */__("A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not.", 'wordfence'), $username), wfUtils::getIP());
|
3066 |
+
self::$authError = new WP_Error('twofactor_disabled_required', wp_kses(__('<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account.', 'wordfence'), array('strong'=>array())));
|
3067 |
return self::$authError;
|
3068 |
}
|
3069 |
|
3073 |
else if ($usingBreachedPassword) {
|
3074 |
if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) {
|
3075 |
wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID));
|
3076 |
+
wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(/* translators: 1. Reset password URL. 2. Support URL. */ __('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID));
|
3077 |
}
|
3078 |
else {
|
3079 |
$username = $authUser->user_login;
|
3090 |
remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
|
3091 |
self::$authError = new WP_Error('breached_password', sprintf(
|
3092 |
/* translators: 1. Reset password URL. 2. Support URL. */
|
3093 |
+
wp_kses(__('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span style="font-size:0;"> (opens in new tab)</span></a>', 'wordfence'), array('strong'=>array(), 'a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('style'=>array()))), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
|
3094 |
return self::$authError;
|
3095 |
}
|
3096 |
}
|
3186 |
if(is_wp_error($authUser) && ($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || $authUser->get_error_code() == 'incorrect_password') && wfConfig::get('loginSec_maskLoginErrors')){
|
3187 |
return new WP_Error( 'incorrect_password', sprintf(
|
3188 |
/* translators: 1. WordPress username. 2. Reset password URL. */
|
3189 |
+
wp_kses(__( '<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?', 'wordfence' ), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array()))), $username, wp_lostpassword_url() ) );
|
3190 |
}
|
3191 |
|
3192 |
return $authUser;
|
3544 |
public static function ajax_sendDiagnostic_callback(){
|
3545 |
add_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0, 3);
|
3546 |
$inEmail = true;
|
3547 |
+
$body = "<style>.screen-reader-text{ display: none !important; }</style>This email is the diagnostic from " . site_url() . ".\nThe IP address that requested this was: " . wfUtils::getIP() . "\nTicket Number/Forum Username: " . $_POST['ticket'];
|
3548 |
$sendingDiagnosticEmail = true;
|
3549 |
ob_start();
|
3550 |
require(dirname(__FILE__) . '/menu_tools_diagnostic.php');
|
3601 |
}
|
3602 |
public static function ajax_addTwoFactor_callback(){
|
3603 |
if(! wfConfig::get('isPaid')){
|
3604 |
+
return array('errorMsg' => __('Cellphone Sign-in is only available to paid members. <a href="https://www.wordfence.com/gnl1twoFac3/wordfence-signup/" target="_blank" rel="noopener noreferrer">Click here to upgrade now.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'));
|
3605 |
}
|
3606 |
$username = sanitize_text_field($_POST['username']);
|
3607 |
$phone = sanitize_text_field($_POST['phone']);
|
4098 |
}
|
4099 |
return array('ok' => 1);
|
4100 |
}
|
4101 |
+
public static function ajax_hideNoticeForUser_callback() {
|
4102 |
+
if (isset($_POST['id'])) {
|
4103 |
+
self::hideNoticeForUser($_POST['id']);
|
4104 |
+
}
|
4105 |
+
return array('ok' => 1);
|
4106 |
+
}
|
4107 |
public static function ajax_updateConfig_callback(){
|
4108 |
$key = $_POST['key'];
|
4109 |
$val = $_POST['val'];
|
4929 |
}
|
4930 |
|
4931 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4932 |
+
'messageHTML' => sprintf(/* translators: Localized date. */ __('The current scan looks like it has failed. Its last status update was <span id="wf-scan-failed-time-ago">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably.', 'wordfence'), $scanFailedTiming) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
|
4933 |
'buttonTitle' => __('Cancel Scan', 'wordfence'),
|
4934 |
))->render();
|
4935 |
|
4937 |
case wfIssues::SCAN_FAILED_FORK_FAILED:
|
4938 |
case wfIssues::SCAN_FAILED_GENERAL:
|
4939 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4940 |
+
'messageHTML' => __('The previous scan has failed. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
|
4941 |
'buttonTitle' => __('Close', 'wordfence'),
|
4942 |
))->render();
|
4943 |
break;
|
4944 |
case wfIssues::SCAN_FAILED_DURATION_REACHED:
|
4945 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4946 |
+
'messageHTML' => sprintf(/* translators: Time limit (number). */ __('The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page.', 'wordfence'), wfUtils::makeDuration($timeLimit)) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT) . '" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
|
4947 |
'buttonTitle' => __('Close', 'wordfence'),
|
4948 |
))->render();
|
4949 |
break;
|
4956 |
case wfIssues::SCAN_FAILED_START_TIMEOUT:
|
4957 |
case wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED:
|
4958 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4959 |
+
'messageHTML' => __('The scan has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILED_START) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
|
4960 |
'buttonTitle' => __('Close', 'wordfence'),
|
4961 |
))->render();
|
4962 |
break;
|
4968 |
break;
|
4969 |
case wfIssues::SCAN_FAILED_API_CALL_FAILED:
|
4970 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4971 |
+
'messageHTML' => __('The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
|
4972 |
'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted', '')),
|
4973 |
'buttonTitle' => __('Close', 'wordfence'),
|
4974 |
))->render();
|
4976 |
case wfIssues::SCAN_FAILED_API_INVALID_RESPONSE:
|
4977 |
case wfIssues::SCAN_FAILED_API_ERROR_RESPONSE:
|
4978 |
$scanFailedHTML = wfView::create('scanner/scan-failed', array(
|
4979 |
+
'messageHTML' => __('The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
|
4980 |
'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted'), ''),
|
4981 |
'buttonTitle' => __('Close', 'wordfence'),
|
4982 |
))->render();
|
5934 |
'switchTo2FANew', 'switchTo2FAOld',
|
5935 |
'wfcentral_step1', 'wfcentral_step2', 'wfcentral_step3', 'wfcentral_step4', 'wfcentral_step5', 'wfcentral_step6', 'wfcentral_disconnect',
|
5936 |
'exportDiagnostics',
|
5937 |
+
'hideNoticeForUser'
|
5938 |
) as $func){
|
5939 |
add_action('wp_ajax_wordfence_' . $func, 'wordfence::ajaxReceiver');
|
5940 |
}
|
6201 |
'We encountered a problem' => __('We encountered a problem', 'wordfence'),
|
6202 |
'Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.' => /* translators: URL. */ __('Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.', 'wordfence'),
|
6203 |
'Wordfence is working...' => __('Wordfence is working...', 'wordfence'),
|
6204 |
+
'You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\' rel=\'noopener noreferrer\' href=\'https://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.' => __('You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\' rel=\'noopener noreferrer\' href=\'https://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.', 'wordfence'),
|
6205 |
'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.', 'wordfence'),
|
6206 |
'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>', 'wordfence'),
|
6207 |
'You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.' => __('You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.', 'wordfence'),
|
6254 |
echo '<div id="wafConfigInaccessibleNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall cannot run.', 'wordfence') . '</strong> ' .
|
6255 |
sprintf(
|
6256 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
6257 |
+
__('The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href="%1$s">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
6258 |
$wafMenuURL,
|
6259 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_INACCESSIBLE_CONFIG)
|
6260 |
) . '</p></div>';
|
6276 |
echo '<div id="wafConfigNeedsUpdateNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' .
|
6277 |
sprintf(
|
6278 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
6279 |
+
__('It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a>. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
6280 |
$wafMenuURL,
|
6281 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX)
|
6282 |
) . '</p></div>';
|
6295 |
echo '<div id="wafConfigNeedsFixedNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' .
|
6296 |
sprintf(
|
6297 |
/* translators: 1. WordPress admin panel URL. 2. Support URL. */
|
6298 |
+
__('It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a> or use the "Optimize the Wordfence Firewall" button on the Firewall Options page. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
6299 |
$wafMenuURL,
|
6300 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX)
|
6301 |
) . '</p></div>';
|
6302 |
}
|
6303 |
public static function wafReadOnlyNotice() {
|
6304 |
+
echo '<div id="wordfenceWAFReadOnlyNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall is in read-only mode.', 'wordfence') . '</strong> ' . sprintf('PHP is currently running as a command line user and to avoid file permission issues, the WAF is running in read-only mode. It will automatically resume normal operation when run normally by a web server. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_READ_ONLY_WARNING)) . '</p></div>';
|
6305 |
}
|
6306 |
public static function misconfiguredHowGetIPsNotice() {
|
6307 |
$url = network_admin_url('admin.php?page=Wordfence&subpage=global_options');
|
6337 |
}
|
6338 |
echo '<div id="wordfenceMisconfiguredHowGetIPsNotice" class="fade error"><p><strong>' .
|
6339 |
__('Your \'How does Wordfence get IPs\' setting is misconfigured.', 'wordfence')
|
6340 |
+
. '</strong> ' . $existingMsg . ' ' . $recommendationMsg . ' <a href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'yes\'); return false;" role="button">' .
|
6341 |
__('Click here to use the recommended setting', 'wordfence')
|
6342 |
. '</a> ' .
|
6343 |
__('or', 'wordfence')
|
6346 |
. '</a> ' .
|
6347 |
__('to manually update it.', 'wordfence')
|
6348 |
. '</p><p>
|
6349 |
+
<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'no\'); return false;" role="button">' .
|
6350 |
__('Dismiss', 'wordfence')
|
6351 |
+
. '</a> <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS) . '"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a></p></div>';
|
6352 |
}
|
6353 |
public static function autoUpdateNotice(){
|
6354 |
echo '<div id="wordfenceAutoUpdateChoice" class="fade error"><p><strong>' .
|
6355 |
__('Do you want Wordfence to stay up-to-date automatically?', 'wordfence')
|
6356 |
+
. '</strong> <a href="#" onclick="wordfenceExt.autoUpdateChoice(\'yes\'); return false;" role="button">'.
|
6357 |
__('Yes, enable auto-update.', 'wordfence')
|
6358 |
+
. '</a> | <a href="#" onclick="wordfenceExt.autoUpdateChoice(\'no\'); return false;" role="button">' .
|
6359 |
__('No thanks.', 'wordfence')
|
6360 |
. '</a></p></div>';
|
6361 |
}
|
6362 |
+
private static function getNoticeHideKey($id) {
|
6363 |
+
return "wordfence_dismiss_$id";
|
6364 |
+
}
|
6365 |
+
private static function hideNoticeForUser($id) {
|
6366 |
+
$user = get_current_user_id();
|
6367 |
+
if ($user !== 0)
|
6368 |
+
update_user_meta($user, self::getNoticeHideKey($id), true);
|
6369 |
+
}
|
6370 |
+
private static function hasHiddenNotice($id) {
|
6371 |
+
$user = get_current_user_id();
|
6372 |
+
if ($user !== 0)
|
6373 |
+
return get_user_meta($user, self::getNoticeHideKey($id), true);
|
6374 |
+
return false;
|
6375 |
+
}
|
6376 |
+
public static function showUnitedStatesBlockedNotice() {
|
6377 |
+
$id = "wordfenceUnitedStatesBlocked";
|
6378 |
+
if (self::hasHiddenNotice($id))
|
6379 |
+
return;
|
6380 |
+
?>
|
6381 |
+
<div id="<?php echo esc_attr($id) ?>" class="notice notice-warning">
|
6382 |
+
<p>
|
6383 |
+
<?php esc_html_e('Wordfence country blocking is currently set to block the United States. We recommend allowing access from the United States for Google and other benign crawlers, unless you choose to only block the login page.', 'wordfence') ?>
|
6384 |
+
<a target="_blank" rel="noopener noreferrer" href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_FULL_SITE) ?>"><?php esc_html_e('Learn More', 'wordfence') ?></a>
|
6385 |
+
<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="<?php echo esc_attr('wordfenceExt.hideNoticeForUser(' . json_encode($id) . '); return false;') ?>"><?php esc_html_e('Dismiss', 'wordfence') ?></a>
|
6386 |
+
</p>
|
6387 |
+
</div>
|
6388 |
+
<?php
|
6389 |
+
}
|
6390 |
public static function admin_menus(){
|
6391 |
if(! wfUtils::isAdmin()){ return; }
|
6392 |
$warningAdded = false;
|
6578 |
exit;
|
6579 |
}
|
6580 |
|
6581 |
+
if (!$warningAdded) {
|
6582 |
+
foreach (wfBlock::countryBlocks() as $block) {
|
6583 |
+
if ($block->parameters['blockSite']) {
|
6584 |
+
foreach ($block->parameters['countries'] as $country) {
|
6585 |
+
if (strtoupper($country) === 'US') {
|
6586 |
+
add_action(wfUtils::isAdminPageMU() ? 'network_admin_notices' : 'admin_notices', 'wordfence::showUnitedStatesBlockedNotice');
|
6587 |
+
break 2;
|
6588 |
+
}
|
6589 |
+
}
|
6590 |
+
}
|
6591 |
+
}
|
6592 |
}
|
6593 |
|
6594 |
$notificationCount = count(wfNotification::notifications());
|
6760 |
wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION);
|
6761 |
|
6762 |
wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION);
|
6763 |
+
wp_enqueue_script('wordfence-knockout-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/knockout-3.5.1.js'), array(), WORDFENCE_VERSION);
|
6764 |
wp_enqueue_script('wordfence-live-traffic-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.liveTraffic.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);
|
6765 |
|
6766 |
ob_start();
|
7260 |
*/
|
7261 |
public static function fixGDLimitLoginsErrors($content) {
|
7262 |
if (self::$authError) {
|
7263 |
+
$content = str_replace(wp_kses(__('<strong>ERROR</strong>: Incorrect username or password.', 'limit-login-attempts'), array('strong'=>array())) . "<br />\n", '', $content);
|
7264 |
$content .= '<br />' . self::$authError->get_error_message();
|
7265 |
}
|
7266 |
return $content;
|
7965 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
7966 |
'title' => __('Filesystem Credentials Required', 'wordfence'),
|
7967 |
'html' => $credentialsContent,
|
7968 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)),
|
7969 |
'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete the setup.', 'wordfence'),
|
7970 |
))->render();
|
7971 |
return array('needsCredentials' => 1, 'html' => $html);
|
7989 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
7990 |
'title' => __('Filesystem Permission Error', 'wordfence'),
|
7991 |
'html' => $credentialsError,
|
7992 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)),
|
7993 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
7994 |
))->render();
|
7995 |
return array('credentialsFailed' => 1, 'html' => $html);
|
8033 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8034 |
'title' => __('Installation Failed', 'wordfence'),
|
8035 |
'html' => $installError,
|
8036 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)),
|
8037 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8038 |
))->render();
|
8039 |
return array('installationFailed' => 1, 'html' => $html);
|
8072 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8073 |
'title' => __('Filesystem Credentials Required', 'wordfence'),
|
8074 |
'html' => $credentialsContent,
|
8075 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8076 |
'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete uninstallation.', 'wordfence'),
|
8077 |
))->render();
|
8078 |
return array('needsCredentials' => 1, 'html' => $html);
|
8097 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8098 |
'title' => __('Filesystem Permission Error', 'wordfence'),
|
8099 |
'html' => $credentialsError,
|
8100 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8101 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8102 |
))->render();
|
8103 |
return array('credentialsFailed' => 1, 'html' => $html);
|
8128 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8129 |
'title' => __('Waiting for Changes', 'wordfence'),
|
8130 |
'html' => $waitingResponse,
|
8131 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8132 |
'footerButtonTitle' => __('Close', 'wordfence'),
|
8133 |
'noX' => true,
|
8134 |
))->render();
|
8152 |
if ($retryAttempted) {
|
8153 |
$userIniError .= ' <strong>' . __('Retrying Failed.', 'wordfence') . '</strong>';
|
8154 |
}
|
8155 |
+
$userIniError .= ' <a href="#" class="wf-waf-uninstall-try-again" role="button">' . __('Try Again', 'wordfence') . '</a>';
|
8156 |
$userIniError .= '</p>';
|
8157 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8158 |
'title' => __('Unable to Uninstall', 'wordfence'),
|
8159 |
'html' => $userIniError,
|
8160 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8161 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8162 |
))->render();
|
8163 |
|
8203 |
$html = wfView::create('waf/waf-modal-wrapper', array(
|
8204 |
'title' => __('Uninstallation Failed', 'wordfence'),
|
8205 |
'html' => $installError,
|
8206 |
+
'helpHTML' => sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)),
|
8207 |
'footerButtonTitle' => __('Cancel', 'wordfence'),
|
8208 |
))->render();
|
8209 |
return array('uninstallationFailed' => 1, 'html' => $html);
|
8923 |
public static function wafAutoPrependNotice() {
|
8924 |
$url = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend');
|
8925 |
echo '<div class="update-nag" id="wf-extended-protection-notice">' . __('To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:', 'wordfence') . ' <a class="wf-btn wf-btn-default wf-btn-sm" href="' . esc_url($url) . '">' . __('Click here to configure', 'wordfence') . '</a>
|
8926 |
+
<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.setOption(\'dismissAutoPrependNotice\', 1); jQuery(\'#wf-extended-protection-notice\').fadeOut(); return false;" role="button">' . __('Dismiss', 'wordfence') . '</a>
|
8927 |
<br>
|
8928 |
+
<em style="font-size: 85%;">' . sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)) . '</em>
|
8929 |
</div>';
|
8930 |
}
|
8931 |
|
9111 |
if (!is_array($body) || !isset($body['data']['attributes'])) {
|
9112 |
return array(
|
9113 |
'err' => 1,
|
9114 |
+
'errorMsg' => sprintf(/* translators: Error message. */ __("Invalid response from Wordfence Central: %s", 'wordfence'), $response->getBody()),
|
9115 |
);
|
9116 |
}
|
9117 |
if (!array_key_exists('id', $body['data'])) {
|
9118 |
return array(
|
9119 |
'err' => 1,
|
9120 |
+
'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response.", 'wordfence'), 'id'),
|
9121 |
);
|
9122 |
}
|
9123 |
|
9130 |
if (!array_key_exists($key, $data)) {
|
9131 |
return array(
|
9132 |
'err' => 1,
|
9133 |
+
'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response.", 'wordfence'), $key),
|
9134 |
);
|
9135 |
}
|
9136 |
}
|
lib/wordfenceHash.php
CHANGED
@@ -530,7 +530,7 @@ class wordfenceHash {
|
|
530 |
sprintf(/* translators: File path. */ __('Modified plugin file: %s', 'wordfence'), $file),
|
531 |
sprintf(
|
532 |
/* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */
|
533 |
-
__('This file belongs to plugin "%1$s" version "%2$s" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don\'t manage their code correctly. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'),
|
534 |
$itemName,
|
535 |
$itemVersion,
|
536 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_PLUGIN)
|
@@ -576,7 +576,7 @@ class wordfenceHash {
|
|
576 |
sprintf(/* translators: File path. */ __('Modified theme file: %s', 'wordfence'), $file),
|
577 |
sprintf(
|
578 |
/* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */
|
579 |
-
__('This file belongs to theme "%1$s" version "%2$s" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'),
|
580 |
$itemName,
|
581 |
$itemVersion,
|
582 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_THEME)
|
@@ -647,7 +647,7 @@ class wordfenceHash {
|
|
647 |
'coreUnknown' . $file,
|
648 |
'coreUnknown' . $file . $md5,
|
649 |
sprintf(/* translators: File path. */ __('Unknown file in WordPress core: %s', 'wordfence'), $file),
|
650 |
-
sprintf(/* translators: Support URL. */ __('This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE)),
|
651 |
array(
|
652 |
'file' => $file,
|
653 |
'cType' => 'core',
|
@@ -760,7 +760,7 @@ class wordfenceHash {
|
|
760 |
$i['ignoreP'],
|
761 |
$i['ignoreC'],
|
762 |
$i['shortMsg'] . ($count > 1 ? ' ' . sprintf(/* translators: Number of scan results. */ __('(+ %d more)', 'wordfence'), $count - 1) : ''),
|
763 |
-
$i['longMsg'] . ($count > 1 ? ' ' . ($count > 2 ? sprintf(/* translators: Number of files. */ __('%d more similar files were found.', 'wordfence'), $count - 1) : __('1 more similar file was found.', 'wordfence')) : '') . (isset($i['data']['learnMore']) ? ' ' . sprintf(__('<a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), esc_attr($i['data']['learnMore'])) : ''),
|
764 |
$i['data'],
|
765 |
true //Prevent ignoreP and ignoreC from being hashed again
|
766 |
);
|
@@ -926,4 +926,4 @@ class wordfenceHash {
|
|
926 |
}
|
927 |
return false;
|
928 |
}
|
929 |
-
}
|
530 |
sprintf(/* translators: File path. */ __('Modified plugin file: %s', 'wordfence'), $file),
|
531 |
sprintf(
|
532 |
/* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */
|
533 |
+
__('This file belongs to plugin "%1$s" version "%2$s" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don\'t manage their code correctly. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
534 |
$itemName,
|
535 |
$itemVersion,
|
536 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_PLUGIN)
|
576 |
sprintf(/* translators: File path. */ __('Modified theme file: %s', 'wordfence'), $file),
|
577 |
sprintf(
|
578 |
/* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */
|
579 |
+
__('This file belongs to theme "%1$s" version "%2$s" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
|
580 |
$itemName,
|
581 |
$itemVersion,
|
582 |
wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_THEME)
|
647 |
'coreUnknown' . $file,
|
648 |
'coreUnknown' . $file . $md5,
|
649 |
sprintf(/* translators: File path. */ __('Unknown file in WordPress core: %s', 'wordfence'), $file),
|
650 |
+
sprintf(/* translators: Support URL. */ __('This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE)),
|
651 |
array(
|
652 |
'file' => $file,
|
653 |
'cType' => 'core',
|
760 |
$i['ignoreP'],
|
761 |
$i['ignoreC'],
|
762 |
$i['shortMsg'] . ($count > 1 ? ' ' . sprintf(/* translators: Number of scan results. */ __('(+ %d more)', 'wordfence'), $count - 1) : ''),
|
763 |
+
$i['longMsg'] . ($count > 1 ? ' ' . ($count > 2 ? sprintf(/* translators: Number of files. */ __('%d more similar files were found.', 'wordfence'), $count - 1) : __('1 more similar file was found.', 'wordfence')) : '') . (isset($i['data']['learnMore']) ? ' ' . sprintf(__('<a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), esc_attr($i['data']['learnMore'])) : ''),
|
764 |
$i['data'],
|
765 |
true //Prevent ignoreP and ignoreC from being hashed again
|
766 |
);
|
926 |
}
|
927 |
return false;
|
928 |
}
|
929 |
+
}
|
lib/wordfenceScanner.php
CHANGED
@@ -91,7 +91,7 @@ class wordfenceScanner {
|
|
91 |
$wafPatterns = array();
|
92 |
$wafCommonStringIndexes = array();
|
93 |
foreach ($sigData['rules'] as $key => $signatureRow) {
|
94 |
-
list(, , $pattern) = $signatureRow;
|
95 |
if (empty($pattern)) {
|
96 |
throw new Exception(__('Wordfence received malformed attack signature patterns from the scanning server.', 'wordfence'));
|
97 |
}
|
@@ -99,7 +99,7 @@ class wordfenceScanner {
|
|
99 |
$logOnly = (isset($signatureRow[5]) && !empty($signatureRow[5])) ? $signatureRow[5] : false;
|
100 |
$commonStringIndexes = (isset($signatureRow[8]) && is_array($signatureRow[8])) ? $signatureRow[8] : array();
|
101 |
if (@preg_match('/' . $pattern . '/iS', null) === false) {
|
102 |
-
wordfence::status(1, 'error', __('
|
103 |
unset($sigData['rules'][$key]);
|
104 |
}
|
105 |
else if (!$logOnly) {
|
@@ -521,13 +521,13 @@ class wordfenceScanner {
|
|
521 |
'ignoreP' => $this->path . $file,
|
522 |
'ignoreC' => md5_file($this->path . $file),
|
523 |
'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($file),
|
524 |
-
'longMsg' => sprintf(
|
525 |
/* translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL. */
|
526 |
-
__('This file contains a suspected malware URL listed on Google\'s list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page</a>.', 'wordfence'),
|
527 |
esc_html($this->patterns['word3']),
|
528 |
esc_html($result['URL']),
|
529 |
urlencode($result['URL'])
|
530 |
-
),
|
531 |
'data' => array_merge(array(
|
532 |
'file' => $file,
|
533 |
'shac' => $record->SHAC,
|
@@ -819,4 +819,4 @@ class wordfenceMalwareScanFile {
|
|
819 |
$db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET isSafeFile = '0' WHERE filenameMD5 = '%s'", $this->filenameMD5);
|
820 |
$this->isSafeFile = '0';
|
821 |
}
|
822 |
-
}
|
91 |
$wafPatterns = array();
|
92 |
$wafCommonStringIndexes = array();
|
93 |
foreach ($sigData['rules'] as $key => $signatureRow) {
|
94 |
+
list($id, , $pattern) = $signatureRow;
|
95 |
if (empty($pattern)) {
|
96 |
throw new Exception(__('Wordfence received malformed attack signature patterns from the scanning server.', 'wordfence'));
|
97 |
}
|
99 |
$logOnly = (isset($signatureRow[5]) && !empty($signatureRow[5])) ? $signatureRow[5] : false;
|
100 |
$commonStringIndexes = (isset($signatureRow[8]) && is_array($signatureRow[8])) ? $signatureRow[8] : array();
|
101 |
if (@preg_match('/' . $pattern . '/iS', null) === false) {
|
102 |
+
wordfence::status(1, 'error', sprintf(__('Regex compilation failed for signature %d', 'wordfence'), (int) $id));
|
103 |
unset($sigData['rules'][$key]);
|
104 |
}
|
105 |
else if (!$logOnly) {
|
521 |
'ignoreP' => $this->path . $file,
|
522 |
'ignoreC' => md5_file($this->path . $file),
|
523 |
'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($file),
|
524 |
+
'longMsg' => wp_kses(sprintf(
|
525 |
/* translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL. */
|
526 |
+
__('This file contains a suspected malware URL listed on Google\'s list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'),
|
527 |
esc_html($this->patterns['word3']),
|
528 |
esc_html($result['URL']),
|
529 |
urlencode($result['URL'])
|
530 |
+
), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'))),
|
531 |
'data' => array_merge(array(
|
532 |
'file' => $file,
|
533 |
'shac' => $record->SHAC,
|
819 |
$db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET isSafeFile = '0' WHERE filenameMD5 = '%s'", $this->filenameMD5);
|
820 |
$this->isSafeFile = '0';
|
821 |
}
|
822 |
+
}
|
lib/wordfenceURLHoover.php
CHANGED
@@ -98,7 +98,7 @@ class wordfenceURLHoover {
|
|
98 |
$this->currentHooverID = $id;
|
99 |
$this->_foundSome = 0;
|
100 |
$this->_excludedHosts = $excludedHosts;
|
101 |
-
@preg_replace_callback('_((?:(
|
102 |
$this->writeHosts();
|
103 |
return $this->_foundSome;
|
104 |
}
|
@@ -109,25 +109,16 @@ class wordfenceURLHoover {
|
|
109 |
|
110 |
public function captureURL($matches) {
|
111 |
$id = $this->currentHooverID;
|
112 |
-
$url = $matches[0];
|
113 |
$components = parse_url($url);
|
114 |
-
if (
|
115 |
-
|
|
|
116 |
return;
|
117 |
}
|
118 |
}
|
119 |
else {
|
120 |
-
|
121 |
-
if (preg_match('/\.([a-z0-9]+)$/i', $components['host'], $tld)) {
|
122 |
-
$tld = strtolower($tld[1]);
|
123 |
-
if (strpos(wfConfig::get('tldlist', ''), '|' . $tld . '|') === false) {
|
124 |
-
return;
|
125 |
-
}
|
126 |
-
}
|
127 |
-
else {
|
128 |
-
return;
|
129 |
-
}
|
130 |
-
wordfence::status(4, 'info', sprintf(/* translators: URL */ __('Found protocol-relative URL: %s', 'wordfence'), $url));
|
131 |
}
|
132 |
|
133 |
foreach ($this->_excludedHosts as $h) {
|
@@ -618,4 +609,4 @@ class wordfenceURLHoover {
|
|
618 |
|
619 |
return $array[count($array) - 1];
|
620 |
}
|
621 |
-
}
|
98 |
$this->currentHooverID = $id;
|
99 |
$this->_foundSome = 0;
|
100 |
$this->_excludedHosts = $excludedHosts;
|
101 |
+
@preg_replace_callback('_((?:(?://)(?:\S+(?::\S*)?@)?(?:(?:(?:[a-z\xa1-\xff0-9.-]+)(?:\.(?:(?:xn--[a-z\xa1-\xff0-9-]+)|[a-z\xa1-\xff]{2,}))))(?::\d{2,5})?)(?:/[a-z0-9\-\_\.~\!\*\(\);\:@&\=\+\$,\?#\[\]%]*)*)_iS', array($this, 'captureURL'), $data);
|
102 |
$this->writeHosts();
|
103 |
return $this->_foundSome;
|
104 |
}
|
109 |
|
110 |
public function captureURL($matches) {
|
111 |
$id = $this->currentHooverID;
|
112 |
+
$url = 'http:' . $matches[0];
|
113 |
$components = parse_url($url);
|
114 |
+
if (preg_match('/\.(xn--(?:[a-z0-9-]*)[a-z0-9]+|[a-z\xa1-\xff0-9]{2,})$/i', $components['host'], $tld)) {
|
115 |
+
$tld = strtolower($tld[1]);
|
116 |
+
if (strpos(wfConfig::get('tldlist', ''), '|' . $tld . '|') === false) {
|
117 |
return;
|
118 |
}
|
119 |
}
|
120 |
else {
|
121 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
}
|
123 |
|
124 |
foreach ($this->_excludedHosts as $h) {
|
609 |
|
610 |
return $array[count($array) - 1];
|
611 |
}
|
612 |
+
}
|
models/block/wfBlock.php
CHANGED
@@ -177,7 +177,7 @@ class wfBlock {
|
|
177 |
|
178 |
if ($payload['type'] == 'ip-address') {
|
179 |
if (!isset($payload['ip']) || !filter_var(trim($payload['ip']), FILTER_VALIDATE_IP) || @wfUtils::inet_pton(trim($payload['ip'])) === false) { return __('Invalid IP address.', 'wordfence'); }
|
180 |
-
if (self::isWhitelisted(trim($payload['ip']))) { return sprintf(/* translators: Support URL */ __('This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES)); }
|
181 |
}
|
182 |
else if ($payload['type'] == 'country') {
|
183 |
if (!isset($payload['blockLogin']) || !isset($payload['blockSite'])) { return __('Nothing selected to block.', 'wordfence'); }
|
@@ -1478,4 +1478,4 @@ END AS `detailSort`
|
|
1478 |
|
1479 |
return array();
|
1480 |
}
|
1481 |
-
}
|
177 |
|
178 |
if ($payload['type'] == 'ip-address') {
|
179 |
if (!isset($payload['ip']) || !filter_var(trim($payload['ip']), FILTER_VALIDATE_IP) || @wfUtils::inet_pton(trim($payload['ip'])) === false) { return __('Invalid IP address.', 'wordfence'); }
|
180 |
+
if (self::isWhitelisted(trim($payload['ip']))) { return wp_kses(sprintf(/* translators: Support URL */ __('This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); }
|
181 |
}
|
182 |
else if ($payload['type'] == 'country') {
|
183 |
if (!isset($payload['blockLogin']) || !isset($payload['blockSite'])) { return __('Nothing selected to block.', 'wordfence'); }
|
1478 |
|
1479 |
return array();
|
1480 |
}
|
1481 |
+
}
|
models/firewall/wfFirewall.php
CHANGED
@@ -392,7 +392,7 @@ class wfFirewall
|
|
392 |
$reenbleCount = count($rules) - $enabledCount;
|
393 |
return array(
|
394 |
'percentage' => ($round ? round($percentEnabled, 2) : $percentEnabled),
|
395 |
-
'title' => sprintf(
|
396 |
);
|
397 |
}
|
398 |
catch (Exception $e) {
|
392 |
$reenbleCount = count($rules) - $enabledCount;
|
393 |
return array(
|
394 |
'percentage' => ($round ? round($percentEnabled, 2) : $percentEnabled),
|
395 |
+
'title' => sprintf(_n('Re-enable %d firewall rule.', 'Re-enable %d firewall rules.', $reenbleCount, 'wordfence'), number_format_i18n($reenbleCount)),
|
396 |
);
|
397 |
}
|
398 |
catch (Exception $e) {
|
models/scanner/wfScanner.php
CHANGED
@@ -775,7 +775,7 @@ class wfScanner {
|
|
775 |
$subtraction = min($this->_normalizedPercentageToDisplay($percentage), $remainingPercentage);
|
776 |
$statusList[] = array(
|
777 |
'percentage' => $subtraction,
|
778 |
-
'title' => sprintf(
|
779 |
);
|
780 |
}
|
781 |
|
775 |
$subtraction = min($this->_normalizedPercentageToDisplay($percentage), $remainingPercentage);
|
776 |
$statusList[] = array(
|
777 |
'percentage' => $subtraction,
|
778 |
+
'title' => sprintf(_n('Enable %d scan option.', 'Enable %d scan options.', $disabledOptionCount,'wordfence'), number_format_i18n($disabledOptionCount)),
|
779 |
);
|
780 |
}
|
781 |
|
modules/login-security/classes/controller/ajax.php
CHANGED
@@ -6,6 +6,9 @@ use WordfenceLS\Crypto\Model_JWT;
|
|
6 |
use WordfenceLS\Crypto\Model_Symmetric;
|
7 |
|
8 |
class Controller_AJAX {
|
|
|
|
|
|
|
9 |
protected $_actions = null; //Populated on init
|
10 |
|
11 |
/**
|
@@ -35,7 +38,7 @@ class Controller_AJAX {
|
|
35 |
'nopriv' => true,
|
36 |
'nonce' => false,
|
37 |
'permissions' => array(),
|
38 |
-
'required_parameters' => array('
|
39 |
),
|
40 |
'activate' => array(
|
41 |
'handler' => array($this, '_ajax_activate_callback'),
|
@@ -77,6 +80,31 @@ class Controller_AJAX {
|
|
77 |
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to reset reCAPTCHA statistics.', 'wordfence-2fa')),
|
78 |
'required_parameters' => array('nonce'),
|
79 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
);
|
81 |
|
82 |
$this->_init_actions();
|
@@ -105,7 +133,7 @@ class Controller_AJAX {
|
|
105 |
|
106 |
public function _ajax_handler() {
|
107 |
$action = (isset($_POST['action']) && is_string($_POST['action']) && $_POST['action']) ? $_POST['action'] : $_GET['action'];
|
108 |
-
if (preg_match('~wordfence_ls_([a-zA-
|
109 |
$action = $matches[1];
|
110 |
if (!isset($this->_actions[$action])) {
|
111 |
self::send_json(array('error' => esc_html__('An unknown action was provided.', 'wordfence-2fa')));
|
@@ -141,7 +169,20 @@ class Controller_AJAX {
|
|
141 |
}
|
142 |
|
143 |
public function _ajax_authenticate_callback() {
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: A username and password must be provided. <a href="%s" title="Password Lost and Found">Lost your password</a>?'), wp_lostpassword_url()), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array())))));
|
146 |
}
|
147 |
|
@@ -150,8 +191,6 @@ class Controller_AJAX {
|
|
150 |
self::send_json(array('login' => 1));
|
151 |
}
|
152 |
|
153 |
-
$username = $_POST['log'];
|
154 |
-
$password = $_POST['pwd'];
|
155 |
do_action_ref_array('wp_authenticate', array(&$username, &$password));
|
156 |
|
157 |
define('WORDFENCE_LS_AUTHENTICATION_CHECK', true); //Prevents our auth filter from recursing
|
@@ -228,19 +267,28 @@ class Controller_AJAX {
|
|
228 |
}
|
229 |
|
230 |
public function _ajax_register_support_callback() {
|
231 |
-
|
232 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
!isset($_POST['wfls-message']) || !is_string($_POST['wfls-message']) ||
|
234 |
!isset($_POST['wfls-message-nonce']) || !is_string($_POST['wfls-message-nonce'])) {
|
235 |
self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.')), array('strong'=>array()))));
|
236 |
}
|
237 |
|
238 |
-
$
|
239 |
-
$
|
|
|
|
|
240 |
$message = strip_tags($_POST['wfls-message']);
|
241 |
$nonce = $_POST['wfls-message-nonce'];
|
242 |
-
|
243 |
-
if (empty($login) || empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($message)) {
|
244 |
self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.')), array('strong'=>array()))));
|
245 |
}
|
246 |
|
@@ -402,42 +450,39 @@ class Controller_AJAX {
|
|
402 |
}
|
403 |
|
404 |
public function _ajax_send_grace_period_notification_callback() {
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
self::send_json(array('error' => esc_html__('A valid grace period is not configured to allow administrators time to activate two-factor authentication.', 'wordfence-2fa')));
|
411 |
-
}
|
412 |
-
|
413 |
-
$subject = sprintf(__('2FA will soon be required on %s', 'wordfence-2fa'), home_url());
|
414 |
-
$requiredDate = Controller_Time::format_local_time('F j, Y', Controller_Settings::shared()->get_int(Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD));
|
415 |
-
|
416 |
-
$admins = Controller_Users::shared()->admin_users();
|
417 |
$sent = 0;
|
418 |
-
foreach ($
|
419 |
-
|
420 |
-
if (Controller_Users::shared()->has_2fa_active($
|
421 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
}
|
|
|
423 |
|
424 |
-
|
425 |
-
|
426 |
-
$requiredDate,
|
427 |
-
(is_multisite() && is_super_admin($a->ID)) ? network_admin_url('admin.php?page=WFLS') : admin_url('admin.php?page=WFLS')
|
428 |
-
);
|
429 |
-
|
430 |
-
wp_mail($a->user_email, $subject, $message);
|
431 |
-
$sent++;
|
432 |
}
|
433 |
-
|
434 |
-
|
435 |
-
self::send_json(array('confirmation' => esc_html__('All administrators already have two-factor authenication activated.', 'wordfence-2fa')));
|
436 |
}
|
437 |
else if ($sent == 1) {
|
438 |
-
self::send_json(array('confirmation' => esc_html(sprintf(__('A reminder to activate two-factor authentication was sent to %d
|
439 |
}
|
440 |
-
self::send_json(array('confirmation' => esc_html(sprintf(__('A reminder to activate two-factor authentication was sent to %d
|
441 |
}
|
442 |
|
443 |
public function _ajax_update_ip_preview_callback() {
|
@@ -476,4 +521,46 @@ class Controller_AJAX {
|
|
476 |
$response = array('success' => true);
|
477 |
self::send_json($response);
|
478 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
479 |
}
|
6 |
use WordfenceLS\Crypto\Model_Symmetric;
|
7 |
|
8 |
class Controller_AJAX {
|
9 |
+
|
10 |
+
const MAX_USERS_TO_NOTIFY = 100;
|
11 |
+
|
12 |
protected $_actions = null; //Populated on init
|
13 |
|
14 |
/**
|
38 |
'nopriv' => true,
|
39 |
'nonce' => false,
|
40 |
'permissions' => array(),
|
41 |
+
'required_parameters' => array('wfls-message-nonce', 'wfls-message'),
|
42 |
),
|
43 |
'activate' => array(
|
44 |
'handler' => array($this, '_ajax_activate_callback'),
|
80 |
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to reset reCAPTCHA statistics.', 'wordfence-2fa')),
|
81 |
'required_parameters' => array('nonce'),
|
82 |
),
|
83 |
+
'reset_2fa_grace_period' => array (
|
84 |
+
'handler' => array($this, '_ajax_reset_2fa_grace_period_callback'),
|
85 |
+
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to reset the 2FA grace period.', 'wordfence-2fa')),
|
86 |
+
'required_parameters' => array('nonce', 'user_id')
|
87 |
+
),
|
88 |
+
'revoke_2fa_grace_period' => array (
|
89 |
+
'handler' => array($this, '_ajax_revoke_2fa_grace_period_callback'),
|
90 |
+
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to revoke the 2FA grace period.', 'wordfence-2fa')),
|
91 |
+
'required_parameters' => array('nonce', 'user_id')
|
92 |
+
),
|
93 |
+
'reset_ntp_failure_count' => array(
|
94 |
+
'handler' => array($this, '_ajax_reset_ntp_failure_count_callback'),
|
95 |
+
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to reset the NTP failure count.', 'wordfence-2fa')),
|
96 |
+
'required_parameters' => array(),
|
97 |
+
),
|
98 |
+
'disable_ntp' => array(
|
99 |
+
'handler' => array($this, '_ajax_disable_ntp_callback'),
|
100 |
+
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to disable NTP.', 'wordfence-2fa')),
|
101 |
+
'required_parameters' => array(),
|
102 |
+
),
|
103 |
+
'dismiss_persistent_notice' => array(
|
104 |
+
'handler' => array($this, '_ajax_dismiss_persistent_notice_callback'),
|
105 |
+
'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to dismiss this notice.', 'wordfence-2fa')),
|
106 |
+
'required_parameters' => array('nonce', 'notice_id')
|
107 |
+
)
|
108 |
);
|
109 |
|
110 |
$this->_init_actions();
|
133 |
|
134 |
public function _ajax_handler() {
|
135 |
$action = (isset($_POST['action']) && is_string($_POST['action']) && $_POST['action']) ? $_POST['action'] : $_GET['action'];
|
136 |
+
if (preg_match('~wordfence_ls_([a-zA-Z_0-9]+)$~', $action, $matches)) {
|
137 |
$action = $matches[1];
|
138 |
if (!isset($this->_actions[$action])) {
|
139 |
self::send_json(array('error' => esc_html__('An unknown action was provided.', 'wordfence-2fa')));
|
169 |
}
|
170 |
|
171 |
public function _ajax_authenticate_callback() {
|
172 |
+
$credentialKeys = array(
|
173 |
+
'log' => 'pwd',
|
174 |
+
'username' => 'password'
|
175 |
+
);
|
176 |
+
$username = null;
|
177 |
+
$password = null;
|
178 |
+
foreach ($credentialKeys as $usernameKey => $passwordKey) {
|
179 |
+
if (array_key_exists($usernameKey, $_POST) && array_key_exists($passwordKey, $_POST) && is_string($_POST[$usernameKey]) && is_string($_POST[$passwordKey])) {
|
180 |
+
$username = $_POST[$usernameKey];
|
181 |
+
$password = $_POST[$passwordKey];
|
182 |
+
break;
|
183 |
+
}
|
184 |
+
}
|
185 |
+
if (empty($username) || empty($password)) {
|
186 |
self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: A username and password must be provided. <a href="%s" title="Password Lost and Found">Lost your password</a>?'), wp_lostpassword_url()), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array())))));
|
187 |
}
|
188 |
|
191 |
self::send_json(array('login' => 1));
|
192 |
}
|
193 |
|
|
|
|
|
194 |
do_action_ref_array('wp_authenticate', array(&$username, &$password));
|
195 |
|
196 |
define('WORDFENCE_LS_AUTHENTICATION_CHECK', true); //Prevents our auth filter from recursing
|
267 |
}
|
268 |
|
269 |
public function _ajax_register_support_callback() {
|
270 |
+
$email = null;
|
271 |
+
if (array_key_exists('email', $_POST) && is_string($_POST['email'])) {
|
272 |
+
$email = $_POST['email'];
|
273 |
+
}
|
274 |
+
else if (array_key_exists('user_email', $_POST) && is_string($_POST['user_email'])) {
|
275 |
+
$email = $_POST['user_email'];
|
276 |
+
}
|
277 |
+
if (
|
278 |
+
$email === null ||
|
279 |
!isset($_POST['wfls-message']) || !is_string($_POST['wfls-message']) ||
|
280 |
!isset($_POST['wfls-message-nonce']) || !is_string($_POST['wfls-message-nonce'])) {
|
281 |
self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.')), array('strong'=>array()))));
|
282 |
}
|
283 |
|
284 |
+
$email = sanitize_email($email);
|
285 |
+
$login = '';
|
286 |
+
if (array_key_exists('user_login', $_POST) && is_string($_POST['user_login']))
|
287 |
+
$login = sanitize_user($_POST['user_login']);
|
288 |
$message = strip_tags($_POST['wfls-message']);
|
289 |
$nonce = $_POST['wfls-message-nonce'];
|
290 |
+
|
291 |
+
if ((isset($_POST['user_login']) && empty($login)) || empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($message)) {
|
292 |
self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.')), array('strong'=>array()))));
|
293 |
}
|
294 |
|
450 |
}
|
451 |
|
452 |
public function _ajax_send_grace_period_notification_callback() {
|
453 |
+
$notifyAll = isset($_POST['notify_all']);
|
454 |
+
$users = Controller_Users::shared()->get_users_by_role($_POST['role'], $notifyAll ? null: self::MAX_USERS_TO_NOTIFY + 1);
|
455 |
+
$userCount = count($users);
|
456 |
+
if (!$notifyAll && $userCount > self::MAX_USERS_TO_NOTIFY)
|
457 |
+
self::send_json(array('error' => esc_html(sprintf(__('More than %d users exist for the selected role. This notification is not designed to handle large groups of users. In such instances, using a different solution for notifying users of upcoming 2FA requirements is recommended.', 'wordfence-2fa'), self::MAX_USERS_TO_NOTIFY)), 'limit_exceeded' => true));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
$sent = 0;
|
459 |
+
foreach ($users as $user) {
|
460 |
+
Controller_Users::shared()->requires_2fa($user, $inGracePeriod, $requiredAt);
|
461 |
+
if ($inGracePeriod && !Controller_Users::shared()->has_2fa_active($user)) {
|
462 |
+
$subject = sprintf(__('2FA will soon be required on %s', 'wordfence-2fa'), home_url());
|
463 |
+
$requiredDate = Controller_Time::format_local_time('F j, Y g:i A', $requiredAt);
|
464 |
+
|
465 |
+
$message = sprintf(
|
466 |
+
__("You do not currently have two-factor authentication active on your account, which will be required beginning %s.\n\nConfigure 2FA: %s", 'wordfence-2fa'),
|
467 |
+
$requiredDate,
|
468 |
+
(is_multisite() && is_super_admin($user->ID)) ? network_admin_url('admin.php?page=WFLS') : admin_url('admin.php?page=WFLS')
|
469 |
+
);
|
470 |
+
|
471 |
+
wp_mail($user->user_email, $subject, $message);
|
472 |
+
$sent++;
|
473 |
}
|
474 |
+
}
|
475 |
|
476 |
+
if ($userCount == 0) {
|
477 |
+
self::send_json(array('error' => esc_html__('No users currently exist with the selected role.', 'wordfence-2fa')));
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
}
|
479 |
+
else if ($sent == 0) {
|
480 |
+
self::send_json(array('confirmation' => esc_html__('All users with the selected role already have two-factor authentication activated or have been locked out.', 'wordfence-2fa')));
|
|
|
481 |
}
|
482 |
else if ($sent == 1) {
|
483 |
+
self::send_json(array('confirmation' => esc_html(sprintf(__('A reminder to activate two-factor authentication was sent to %d user.', 'wordfence-2fa'), $sent))));
|
484 |
}
|
485 |
+
self::send_json(array('confirmation' => esc_html(sprintf(__('A reminder to activate two-factor authentication was sent to %d users.', 'wordfence-2fa'), $sent))));
|
486 |
}
|
487 |
|
488 |
public function _ajax_update_ip_preview_callback() {
|
521 |
$response = array('success' => true);
|
522 |
self::send_json($response);
|
523 |
}
|
524 |
+
|
525 |
+
public function _ajax_reset_2fa_grace_period_callback() {
|
526 |
+
$userId = (int) $_POST['user_id'];
|
527 |
+
$gracePeriodOverride = array_key_exists('grace_period_override', $_POST) ? (int) $_POST['grace_period_override'] : null;
|
528 |
+
$user = get_userdata($userId);
|
529 |
+
if ($user === false)
|
530 |
+
self::send_json(array('error' => esc_html__('Invalid user specified', 'wordfence-2fa')));
|
531 |
+
if ($gracePeriodOverride < 0 || $gracePeriodOverride > Controller_Settings::MAX_REQUIRE_2FA_USER_GRACE_PERIOD)
|
532 |
+
self::send_json(array('error' => esc_html__('Invalid grace period override', 'wordfence-2fa')));
|
533 |
+
$gracePeriodAllowed = Controller_Users::shared()->get_grace_period_allowed_flag($userId);
|
534 |
+
if (!$gracePeriodAllowed)
|
535 |
+
Controller_Users::shared()->allow_grace_period($userId);
|
536 |
+
if (!Controller_Users::shared()->reset_2fa_grace_period($user, $gracePeriodOverride))
|
537 |
+
self::send_json(array('error' => esc_html__('Failed to reset grace period', 'wordfence-2fa')));
|
538 |
+
self::send_json(array('success' => true));
|
539 |
+
}
|
540 |
+
|
541 |
+
public function _ajax_revoke_2fa_grace_period_callback() {
|
542 |
+
$user = get_userdata((int) $_POST['user_id']);
|
543 |
+
if ($user === false)
|
544 |
+
self::send_json(array('error' => esc_html__('Invalid user specified', 'wordfence-2fa')));
|
545 |
+
Controller_Users::shared()->revoke_grace_period($user);
|
546 |
+
self::send_json(array('success' => true));
|
547 |
+
}
|
548 |
+
|
549 |
+
public function _ajax_reset_ntp_failure_count_callback() {
|
550 |
+
Controller_Settings::shared()->reset_ntp_failure_count();
|
551 |
+
}
|
552 |
+
|
553 |
+
public function _ajax_disable_ntp_callback() {
|
554 |
+
Controller_Settings::shared()->disable_ntp_cron();
|
555 |
+
}
|
556 |
+
|
557 |
+
public function _ajax_dismiss_persistent_notice_callback() {
|
558 |
+
$userId = get_current_user_id();
|
559 |
+
$noticeId = $_POST['notice_id'];
|
560 |
+
if ($userId !== 0 && Controller_Notices::shared()->dismiss_persistent_notice($userId, $noticeId))
|
561 |
+
self::send_json(array('success' => true));
|
562 |
+
self::send_json(array(
|
563 |
+
'error' => esc_html__('Unable to dismiss notice', 'wordfence')
|
564 |
+
));
|
565 |
+
}
|
566 |
}
|
modules/login-security/classes/controller/captcha.php
CHANGED
@@ -127,4 +127,30 @@ class Controller_CAPTCHA {
|
|
127 |
$threshold = $this->threshold();
|
128 |
return ($score >= $threshold || abs($score - $threshold) < 0.0001);
|
129 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
}
|
127 |
$threshold = $this->threshold();
|
128 |
return ($score >= $threshold || abs($score - $threshold) < 0.0001);
|
129 |
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Check if the current request is an XML RPC request
|
133 |
+
* @return bool
|
134 |
+
*/
|
135 |
+
private static function is_xml_rpc() {
|
136 |
+
return defined('XMLRPC_REQUEST') && XMLRPC_REQUEST;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Check if captcha is required for the current request
|
141 |
+
* @return bool
|
142 |
+
*/
|
143 |
+
public function is_captcha_required() {
|
144 |
+
$required = $this->enabled() && !self::is_xml_rpc();
|
145 |
+
return apply_filters('wordfence_ls_require_captcha', $required);
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Get the captcha token provided with the current request
|
150 |
+
* @param string $key if specified, override the default token parameter
|
151 |
+
* @return string|null the captcha token, if present, null otherwise
|
152 |
+
*/
|
153 |
+
public function get_token($key = 'wfls-captcha-token') {
|
154 |
+
return (isset($_POST[$key]) && is_string($_POST[$key]) && !empty($_POST[$key]) ? $_POST[$key] : null);
|
155 |
+
}
|
156 |
}
|
modules/login-security/classes/controller/notices.php
CHANGED
@@ -6,6 +6,8 @@ use WordfenceLS\Text\Model_HTML;
|
|
6 |
|
7 |
class Controller_Notices {
|
8 |
const USER_META_KEY = 'wfls_notices';
|
|
|
|
|
9 |
|
10 |
/**
|
11 |
* Returns the singleton Controller_Notices.
|
@@ -19,6 +21,8 @@ class Controller_Notices {
|
|
19 |
}
|
20 |
return $_shared;
|
21 |
}
|
|
|
|
|
22 |
|
23 |
/**
|
24 |
* Adds an admin notice to the display queue. If $user is provided, it will show only for that user, otherwise it
|
@@ -93,7 +97,7 @@ class Controller_Notices {
|
|
93 |
*/
|
94 |
public function has_notice($user) {
|
95 |
$notices = $this->_notices($user);
|
96 |
-
return !!count($notices);
|
97 |
}
|
98 |
|
99 |
/**
|
@@ -163,4 +167,33 @@ class Controller_Notices {
|
|
163 |
}
|
164 |
Controller_Settings::shared()->set_array(Controller_Settings::OPTION_GLOBAL_NOTICES, $notices, true);
|
165 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
}
|
6 |
|
7 |
class Controller_Notices {
|
8 |
const USER_META_KEY = 'wfls_notices';
|
9 |
+
const PERSISTENT_NOTICE_DISMISS_PREFIX = 'wfls-dismiss-';
|
10 |
+
const PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION = 'wfls-woocommerce-integration-notice';
|
11 |
|
12 |
/**
|
13 |
* Returns the singleton Controller_Notices.
|
21 |
}
|
22 |
return $_shared;
|
23 |
}
|
24 |
+
|
25 |
+
private $persistentNotices = array();
|
26 |
|
27 |
/**
|
28 |
* Adds an admin notice to the display queue. If $user is provided, it will show only for that user, otherwise it
|
97 |
*/
|
98 |
public function has_notice($user) {
|
99 |
$notices = $this->_notices($user);
|
100 |
+
return !!count($notices) || $this->has_persistent_notices();
|
101 |
}
|
102 |
|
103 |
/**
|
167 |
}
|
168 |
Controller_Settings::shared()->set_array(Controller_Settings::OPTION_GLOBAL_NOTICES, $notices, true);
|
169 |
}
|
170 |
+
|
171 |
+
public function get_persistent_notice_ids() {
|
172 |
+
return array(
|
173 |
+
self::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION
|
174 |
+
);
|
175 |
+
}
|
176 |
+
|
177 |
+
private static function get_persistent_notice_dismiss_key($noticeId) {
|
178 |
+
return self::PERSISTENT_NOTICE_DISMISS_PREFIX . $noticeId;
|
179 |
+
}
|
180 |
+
|
181 |
+
public function register_persistent_notice($noticeId) {
|
182 |
+
$this->persistentNotices[] = $noticeId;
|
183 |
+
}
|
184 |
+
|
185 |
+
public function has_persistent_notices() {
|
186 |
+
return count($this->persistentNotices) > 0;
|
187 |
+
}
|
188 |
+
|
189 |
+
public function dismiss_persistent_notice($userId, $noticeId) {
|
190 |
+
if (!in_array($noticeId, $this->get_persistent_notice_ids(), true))
|
191 |
+
return false;
|
192 |
+
update_user_option($userId, self::get_persistent_notice_dismiss_key($noticeId), true, true);
|
193 |
+
return true;
|
194 |
+
}
|
195 |
+
|
196 |
+
public function is_persistent_notice_dismissed($userId, $noticeId) {
|
197 |
+
return (bool) get_user_option(self::get_persistent_notice_dismiss_key($noticeId), $userId);
|
198 |
+
}
|
199 |
}
|
modules/login-security/classes/controller/permissions.php
CHANGED
@@ -164,23 +164,23 @@ class Controller_Permissions {
|
|
164 |
public function allow_2fa_self($role_name) {
|
165 |
$this->on_role_change();
|
166 |
if (is_multisite()) {
|
167 |
-
$this->_add_cap_multisite($role_name, self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
|
168 |
}
|
169 |
else {
|
170 |
-
$this->_add_cap($role_name, self::CAP_ACTIVATE_2FA_SELF);
|
171 |
}
|
172 |
}
|
173 |
|
174 |
public function disallow_2fa_self($role_name) {
|
175 |
$this->on_role_change();
|
176 |
if (is_multisite()) {
|
177 |
-
$this->_remove_cap_multisite($role_name, self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
|
178 |
}
|
179 |
else {
|
180 |
if ($role_name == 'administrator') {
|
181 |
-
return;
|
182 |
}
|
183 |
-
$this->_remove_cap($role_name, self::CAP_ACTIVATE_2FA_SELF);
|
184 |
}
|
185 |
}
|
186 |
|
@@ -194,6 +194,15 @@ class Controller_Permissions {
|
|
194 |
}
|
195 |
return $user->has_cap(self::CAP_MANAGE_SETTINGS);
|
196 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
|
198 |
private function _wp_roles($site_id = null) {
|
199 |
require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
|
@@ -213,14 +222,18 @@ class Controller_Permissions {
|
|
213 |
}
|
214 |
|
215 |
private function _add_cap_multisite($role_name, $cap, $blog_ids=null) {
|
|
|
|
|
216 |
global $wpdb;
|
217 |
$blogs = $blog_ids===null?$wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0"):$blog_ids;
|
|
|
218 |
foreach ($blogs as $id) {
|
219 |
$wp_roles = $this->_wp_roles($id);
|
220 |
switch_to_blog($id);
|
221 |
-
$this->_add_cap($role_name, $cap, $wp_roles);
|
222 |
restore_current_blog();
|
223 |
}
|
|
|
224 |
}
|
225 |
|
226 |
private function _add_cap($role_name, $cap, $wp_roles = null) {
|
@@ -235,14 +248,18 @@ class Controller_Permissions {
|
|
235 |
}
|
236 |
|
237 |
private function _remove_cap_multisite($role_name, $cap, $blog_ids=null) {
|
|
|
|
|
238 |
global $wpdb;
|
239 |
$blogs = $blog_ids===null?$wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0"):$blog_ids;
|
|
|
240 |
foreach ($blogs as $id) {
|
241 |
$wp_roles = $this->_wp_roles($id);
|
242 |
switch_to_blog($id);
|
243 |
-
$this->_remove_cap($role_name, $cap, $wp_roles);
|
244 |
restore_current_blog();
|
245 |
}
|
|
|
246 |
}
|
247 |
|
248 |
private function _remove_cap($role_name, $cap, $wp_roles = null) {
|
@@ -255,4 +272,22 @@ class Controller_Permissions {
|
|
255 |
$wp_roles->remove_cap($role_name, $cap);
|
256 |
return true;
|
257 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
}
|
164 |
public function allow_2fa_self($role_name) {
|
165 |
$this->on_role_change();
|
166 |
if (is_multisite()) {
|
167 |
+
return $this->_add_cap_multisite($role_name, self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
|
168 |
}
|
169 |
else {
|
170 |
+
return $this->_add_cap($role_name, self::CAP_ACTIVATE_2FA_SELF);
|
171 |
}
|
172 |
}
|
173 |
|
174 |
public function disallow_2fa_self($role_name) {
|
175 |
$this->on_role_change();
|
176 |
if (is_multisite()) {
|
177 |
+
return $this->_remove_cap_multisite($role_name, self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
|
178 |
}
|
179 |
else {
|
180 |
if ($role_name == 'administrator') {
|
181 |
+
return true;
|
182 |
}
|
183 |
+
return $this->_remove_cap($role_name, self::CAP_ACTIVATE_2FA_SELF);
|
184 |
}
|
185 |
}
|
186 |
|
194 |
}
|
195 |
return $user->has_cap(self::CAP_MANAGE_SETTINGS);
|
196 |
}
|
197 |
+
|
198 |
+
public function can_role_manage_settings($role) {
|
199 |
+
if (is_string($role)) {
|
200 |
+
$role = get_role($role);
|
201 |
+
}
|
202 |
+
if ($role)
|
203 |
+
return $role->has_cap(self::CAP_MANAGE_SETTINGS);
|
204 |
+
return false;
|
205 |
+
}
|
206 |
|
207 |
private function _wp_roles($site_id = null) {
|
208 |
require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
|
222 |
}
|
223 |
|
224 |
private function _add_cap_multisite($role_name, $cap, $blog_ids=null) {
|
225 |
+
if ($role_name === 'super-admin')
|
226 |
+
return true;
|
227 |
global $wpdb;
|
228 |
$blogs = $blog_ids===null?$wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0"):$blog_ids;
|
229 |
+
$added = false;
|
230 |
foreach ($blogs as $id) {
|
231 |
$wp_roles = $this->_wp_roles($id);
|
232 |
switch_to_blog($id);
|
233 |
+
$added = $this->_add_cap($role_name, $cap, $wp_roles) || $added;
|
234 |
restore_current_blog();
|
235 |
}
|
236 |
+
return $added;
|
237 |
}
|
238 |
|
239 |
private function _add_cap($role_name, $cap, $wp_roles = null) {
|
248 |
}
|
249 |
|
250 |
private function _remove_cap_multisite($role_name, $cap, $blog_ids=null) {
|
251 |
+
if ($role_name === 'super-admin')
|
252 |
+
return false;
|
253 |
global $wpdb;
|
254 |
$blogs = $blog_ids===null?$wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0"):$blog_ids;
|
255 |
+
$removed = false;
|
256 |
foreach ($blogs as $id) {
|
257 |
$wp_roles = $this->_wp_roles($id);
|
258 |
switch_to_blog($id);
|
259 |
+
$removed = $this->_remove_cap($role_name, $cap, $wp_roles) || $removed;
|
260 |
restore_current_blog();
|
261 |
}
|
262 |
+
return $removed;
|
263 |
}
|
264 |
|
265 |
private function _remove_cap($role_name, $cap, $wp_roles = null) {
|
272 |
$wp_roles->remove_cap($role_name, $cap);
|
273 |
return true;
|
274 |
}
|
275 |
+
|
276 |
+
public function get_all_roles($user) {
|
277 |
+
if (is_multisite()) {
|
278 |
+
$roles = array();
|
279 |
+
if (is_super_admin($user->ID))
|
280 |
+
$roles[] = 'super-admin';
|
281 |
+
foreach (get_blogs_of_user($user->ID) as $id => $blog) {
|
282 |
+
switch_to_blog($id);
|
283 |
+
$blogUser = new \WP_User($user->ID);
|
284 |
+
$roles = array_merge($roles, $blogUser->roles);
|
285 |
+
restore_current_blog();
|
286 |
+
}
|
287 |
+
return array_unique($roles);
|
288 |
+
}
|
289 |
+
else {
|
290 |
+
return $user->roles;
|
291 |
+
}
|
292 |
+
}
|
293 |
}
|
modules/login-security/classes/controller/settings.php
CHANGED
@@ -14,6 +14,7 @@ class Controller_Settings {
|
|
14 |
const OPTION_REQUIRE_2FA_ADMIN = 'require-2fa.administrator';
|
15 |
const OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED = 'require-2fa-grace-period-enabled';
|
16 |
const OPTION_REQUIRE_2FA_GRACE_PERIOD = 'require-2fa-grace-period';
|
|
|
17 |
const OPTION_REMEMBER_DEVICE_ENABLED = 'remember-device';
|
18 |
const OPTION_REMEMBER_DEVICE_DURATION = 'remember-device-duration';
|
19 |
const OPTION_ALLOW_XML_RPC = 'allow-xml-rpc';
|
@@ -23,16 +24,27 @@ class Controller_Settings {
|
|
23 |
const OPTION_RECAPTCHA_SECRET = 'recaptcha-secret';
|
24 |
const OPTION_RECAPTCHA_THRESHOLD = 'recaptcha-threshold';
|
25 |
const OPTION_DELETE_ON_DEACTIVATION = 'delete-deactivation';
|
|
|
|
|
26 |
|
27 |
//Internal
|
28 |
const OPTION_GLOBAL_NOTICES = 'global-notices';
|
29 |
const OPTION_LAST_SECRET_REFRESH = 'last-secret-refresh';
|
30 |
const OPTION_USE_NTP = 'use-ntp';
|
|
|
|
|
31 |
const OPTION_NTP_OFFSET = 'ntp-offset';
|
32 |
const OPTION_SHARED_HASH_SECRET_KEY = 'shared-hash-secret';
|
33 |
const OPTION_SHARED_SYMMETRIC_SECRET_KEY = 'shared-symmetric-secret';
|
34 |
const OPTION_DISMISSED_FRESH_INSTALL_MODAL = 'dismissed-fresh-install-modal';
|
35 |
const OPTION_CAPTCHA_STATS = 'captcha-stats';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
protected $_settingsStorage;
|
38 |
|
@@ -54,6 +66,7 @@ class Controller_Settings {
|
|
54 |
$settingsStorage = new Model_DB();
|
55 |
}
|
56 |
$this->_settingsStorage = $settingsStorage;
|
|
|
57 |
}
|
58 |
|
59 |
public function set_defaults() {
|
@@ -64,6 +77,7 @@ class Controller_Settings {
|
|
64 |
self::OPTION_IP_TRUSTED_PROXIES => array('value' => '', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
65 |
self::OPTION_REQUIRE_2FA_ADMIN => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
66 |
self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
|
|
67 |
self::OPTION_GLOBAL_NOTICES => array('value' => '[]', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
68 |
self::OPTION_REMEMBER_DEVICE_ENABLED => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
69 |
self::OPTION_REMEMBER_DEVICE_DURATION => array('value' => (30 * 86400), 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
@@ -73,6 +87,7 @@ class Controller_Settings {
|
|
73 |
self::OPTION_RECAPTCHA_THRESHOLD => array('value' => 0.5, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
74 |
self::OPTION_LAST_SECRET_REFRESH => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
75 |
self::OPTION_DELETE_ON_DEACTIVATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
|
|
76 |
));
|
77 |
}
|
78 |
|
@@ -193,6 +208,8 @@ class Controller_Settings {
|
|
193 |
return true;
|
194 |
}
|
195 |
return sprintf(__('An error was encountered while validating the reCAPTCHA site key: %s', 'wordfence-2fa'), $response->get_error_message());
|
|
|
|
|
196 |
}
|
197 |
return true;
|
198 |
}
|
@@ -237,6 +254,7 @@ class Controller_Settings {
|
|
237 |
//Int
|
238 |
case self::OPTION_REMEMBER_DEVICE_DURATION:
|
239 |
case self::OPTION_LAST_SECRET_REFRESH:
|
|
|
240 |
return (int) $value;
|
241 |
|
242 |
//Float
|
@@ -269,24 +287,45 @@ class Controller_Settings {
|
|
269 |
}
|
270 |
return $cleaned;
|
271 |
}
|
272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
/**
|
274 |
* Preprocesses the value, returning true if it was saved here (e.g., saved 2fa enabled by assigning a role
|
275 |
* capability) or false if it is to be saved by the backing storage.
|
276 |
*
|
277 |
* @param string $key
|
278 |
* @param mixed $value
|
|
|
279 |
* @return bool
|
280 |
*/
|
281 |
-
public function preprocess($key, $value) {
|
282 |
if (preg_match('/^enabled-roles\.(.+)$/', $key, $matches)) { //Enabled roles are stored as capabilities rather than in the settings storage
|
283 |
$role = $matches[1];
|
284 |
-
if ($
|
285 |
-
|
|
|
|
|
|
|
286 |
}
|
287 |
else {
|
288 |
-
Controller_Permissions::shared()->disallow_2fa_self($role);
|
289 |
}
|
|
|
|
|
290 |
return true;
|
291 |
}
|
292 |
return false;
|
@@ -295,7 +334,7 @@ class Controller_Settings {
|
|
295 |
public function preprocess_multiple($changes) {
|
296 |
$remaining = array();
|
297 |
foreach ($changes as $key => $value) {
|
298 |
-
if (!$this->preprocess($key, $value)) {
|
299 |
$remaining[$key] = $value;
|
300 |
}
|
301 |
}
|
@@ -323,6 +362,60 @@ class Controller_Settings {
|
|
323 |
public function trusted_proxies() {
|
324 |
return array_filter(array_map(function($s) { return trim($s); }, preg_split('/[\r\n]/', $this->get(self::OPTION_IP_TRUSTED_PROXIES, ''))));
|
325 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
|
327 |
/**
|
328 |
* Utility
|
@@ -407,4 +500,31 @@ class Controller_Settings {
|
|
407 |
|
408 |
return $range;
|
409 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
}
|
14 |
const OPTION_REQUIRE_2FA_ADMIN = 'require-2fa.administrator';
|
15 |
const OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED = 'require-2fa-grace-period-enabled';
|
16 |
const OPTION_REQUIRE_2FA_GRACE_PERIOD = 'require-2fa-grace-period';
|
17 |
+
const OPTION_REQUIRE_2FA_USER_GRACE_PERIOD = '2fa-user-grace-period';
|
18 |
const OPTION_REMEMBER_DEVICE_ENABLED = 'remember-device';
|
19 |
const OPTION_REMEMBER_DEVICE_DURATION = 'remember-device-duration';
|
20 |
const OPTION_ALLOW_XML_RPC = 'allow-xml-rpc';
|
24 |
const OPTION_RECAPTCHA_SECRET = 'recaptcha-secret';
|
25 |
const OPTION_RECAPTCHA_THRESHOLD = 'recaptcha-threshold';
|
26 |
const OPTION_DELETE_ON_DEACTIVATION = 'delete-deactivation';
|
27 |
+
const OPTION_PREFIX_REQUIRED_2FA_ROLE = 'required-2fa-role';
|
28 |
+
const OPTION_ENABLE_WOOCOMMERCE_INTEGRATION = 'enable-woocommerce-integration';
|
29 |
|
30 |
//Internal
|
31 |
const OPTION_GLOBAL_NOTICES = 'global-notices';
|
32 |
const OPTION_LAST_SECRET_REFRESH = 'last-secret-refresh';
|
33 |
const OPTION_USE_NTP = 'use-ntp';
|
34 |
+
const OPTION_ALLOW_DISABLING_NTP = 'allow-disabling-ntp';
|
35 |
+
const OPTION_NTP_FAILURE_COUNT = 'ntp-failure-count';
|
36 |
const OPTION_NTP_OFFSET = 'ntp-offset';
|
37 |
const OPTION_SHARED_HASH_SECRET_KEY = 'shared-hash-secret';
|
38 |
const OPTION_SHARED_SYMMETRIC_SECRET_KEY = 'shared-symmetric-secret';
|
39 |
const OPTION_DISMISSED_FRESH_INSTALL_MODAL = 'dismissed-fresh-install-modal';
|
40 |
const OPTION_CAPTCHA_STATS = 'captcha-stats';
|
41 |
+
|
42 |
+
const DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD = 10;
|
43 |
+
const MAX_REQUIRE_2FA_USER_GRACE_PERIOD = 99;
|
44 |
+
|
45 |
+
const STATE_2FA_DISABLED = 'disabled';
|
46 |
+
const STATE_2FA_OPTIONAL = 'optional';
|
47 |
+
const STATE_2FA_REQUIRED = 'required';
|
48 |
|
49 |
protected $_settingsStorage;
|
50 |
|
66 |
$settingsStorage = new Model_DB();
|
67 |
}
|
68 |
$this->_settingsStorage = $settingsStorage;
|
69 |
+
$this->_migrate_admin_2fa_requirements_to_roles();
|
70 |
}
|
71 |
|
72 |
public function set_defaults() {
|
77 |
self::OPTION_IP_TRUSTED_PROXIES => array('value' => '', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
78 |
self::OPTION_REQUIRE_2FA_ADMIN => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
79 |
self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
80 |
+
self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD => array('value' => self::DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
81 |
self::OPTION_GLOBAL_NOTICES => array('value' => '[]', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
82 |
self::OPTION_REMEMBER_DEVICE_ENABLED => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
83 |
self::OPTION_REMEMBER_DEVICE_DURATION => array('value' => (30 * 86400), 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
87 |
self::OPTION_RECAPTCHA_THRESHOLD => array('value' => 0.5, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
88 |
self::OPTION_LAST_SECRET_REFRESH => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
89 |
self::OPTION_DELETE_ON_DEACTIVATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
|
90 |
+
self::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false)
|
91 |
));
|
92 |
}
|
93 |
|
208 |
return true;
|
209 |
}
|
210 |
return sprintf(__('An error was encountered while validating the reCAPTCHA site key: %s', 'wordfence-2fa'), $response->get_error_message());
|
211 |
+
case self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD:
|
212 |
+
return is_numeric($value) && $value >= 0 && $value <= self::MAX_REQUIRE_2FA_USER_GRACE_PERIOD;
|
213 |
}
|
214 |
return true;
|
215 |
}
|
254 |
//Int
|
255 |
case self::OPTION_REMEMBER_DEVICE_DURATION:
|
256 |
case self::OPTION_LAST_SECRET_REFRESH:
|
257 |
+
case self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD:
|
258 |
return (int) $value;
|
259 |
|
260 |
//Float
|
287 |
}
|
288 |
return $cleaned;
|
289 |
}
|
290 |
+
|
291 |
+
private function get_required_2fa_role_key($role) {
|
292 |
+
return implode('.', array(self::OPTION_PREFIX_REQUIRED_2FA_ROLE, $role));
|
293 |
+
}
|
294 |
+
|
295 |
+
public function get_required_2fa_role_activation_time($role) {
|
296 |
+
$time = $this->get_int($this->get_required_2fa_role_key($role), -1);
|
297 |
+
if ($time < 0)
|
298 |
+
return false;
|
299 |
+
return $time;
|
300 |
+
}
|
301 |
+
|
302 |
+
public function get_user_2fa_grace_period() {
|
303 |
+
return $this->get_int(self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD, self::DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD);
|
304 |
+
}
|
305 |
+
|
306 |
/**
|
307 |
* Preprocesses the value, returning true if it was saved here (e.g., saved 2fa enabled by assigning a role
|
308 |
* capability) or false if it is to be saved by the backing storage.
|
309 |
*
|
310 |
* @param string $key
|
311 |
* @param mixed $value
|
312 |
+
* @param array &$settings the array of settings to process, this function may append additional values from preprocessing
|
313 |
* @return bool
|
314 |
*/
|
315 |
+
public function preprocess($key, $value, &$settings) {
|
316 |
if (preg_match('/^enabled-roles\.(.+)$/', $key, $matches)) { //Enabled roles are stored as capabilities rather than in the settings storage
|
317 |
$role = $matches[1];
|
318 |
+
if ($role === 'super-admin') {
|
319 |
+
$roleValid = true;
|
320 |
+
}
|
321 |
+
elseif (in_array($value, array(self::STATE_2FA_OPTIONAL, self::STATE_2FA_REQUIRED))) {
|
322 |
+
$roleValid = Controller_Permissions::shared()->allow_2fa_self($role);
|
323 |
}
|
324 |
else {
|
325 |
+
$roleValid = Controller_Permissions::shared()->disallow_2fa_self($role);
|
326 |
}
|
327 |
+
if ($roleValid)
|
328 |
+
$settings[$this->get_required_2fa_role_key($role)] = ($value === self::STATE_2FA_REQUIRED ? time() : -1);
|
329 |
return true;
|
330 |
}
|
331 |
return false;
|
334 |
public function preprocess_multiple($changes) {
|
335 |
$remaining = array();
|
336 |
foreach ($changes as $key => $value) {
|
337 |
+
if (!$this->preprocess($key, $value, $remaining)) {
|
338 |
$remaining[$key] = $value;
|
339 |
}
|
340 |
}
|
362 |
public function trusted_proxies() {
|
363 |
return array_filter(array_map(function($s) { return trim($s); }, preg_split('/[\r\n]/', $this->get(self::OPTION_IP_TRUSTED_PROXIES, ''))));
|
364 |
}
|
365 |
+
|
366 |
+
public function get_ntp_failure_count() {
|
367 |
+
return $this->get_int(self::OPTION_NTP_FAILURE_COUNT, 0);
|
368 |
+
}
|
369 |
+
|
370 |
+
public function reset_ntp_failure_count() {
|
371 |
+
$this->set(self::OPTION_NTP_FAILURE_COUNT, 0);
|
372 |
+
}
|
373 |
+
|
374 |
+
public function increment_ntp_failure_count() {
|
375 |
+
$count = $this->get_ntp_failure_count();
|
376 |
+
if ($count < 0)
|
377 |
+
return false;
|
378 |
+
$count++;
|
379 |
+
$this->set(self::OPTION_NTP_FAILURE_COUNT, $count);
|
380 |
+
return $count;
|
381 |
+
}
|
382 |
+
|
383 |
+
public function is_ntp_disabled_via_constant() {
|
384 |
+
return defined('WORDFENCE_LS_DISABLE_NTP') && WORDFENCE_LS_DISABLE_NTP;
|
385 |
+
}
|
386 |
+
|
387 |
+
public function is_ntp_enabled($requireOffset = true) {
|
388 |
+
if ($this->is_ntp_cron_disabled())
|
389 |
+
return false;
|
390 |
+
if ($this->get_bool(self::OPTION_USE_NTP, true)) {
|
391 |
+
if ($requireOffset) {
|
392 |
+
$offset = $this->get(self::OPTION_NTP_OFFSET, null);
|
393 |
+
return $offset !== null && abs((int)$offset) <= Controller_TOTP::TIME_WINDOW_LENGTH;
|
394 |
+
}
|
395 |
+
else {
|
396 |
+
return true;
|
397 |
+
}
|
398 |
+
}
|
399 |
+
return false;
|
400 |
+
}
|
401 |
+
|
402 |
+
public function is_ntp_cron_disabled(&$failureCount = null) {
|
403 |
+
if ($this->is_ntp_disabled_via_constant())
|
404 |
+
return true;
|
405 |
+
$failureCount = $this->get_ntp_failure_count();
|
406 |
+
if ($failureCount >= Controller_Time::FAILURE_LIMIT) {
|
407 |
+
return true;
|
408 |
+
}
|
409 |
+
else if ($failureCount < 0) {
|
410 |
+
$failureCount = 0;
|
411 |
+
return true;
|
412 |
+
}
|
413 |
+
return false;
|
414 |
+
}
|
415 |
+
|
416 |
+
public function disable_ntp_cron() {
|
417 |
+
$this->set(self::OPTION_NTP_FAILURE_COUNT, -1);
|
418 |
+
}
|
419 |
|
420 |
/**
|
421 |
* Utility
|
500 |
|
501 |
return $range;
|
502 |
}
|
503 |
+
|
504 |
+
private function _migrate_admin_2fa_requirements_to_roles() {
|
505 |
+
if (!$this->get_bool(self::OPTION_REQUIRE_2FA_ADMIN))
|
506 |
+
return;
|
507 |
+
$time = time();
|
508 |
+
if (is_multisite()) {
|
509 |
+
$this->set($this->get_required_2fa_role_key('super-admin'), $time, true);
|
510 |
+
}
|
511 |
+
else {
|
512 |
+
$roles = new \WP_Roles();
|
513 |
+
foreach ($roles->roles as $key => $data) {
|
514 |
+
$role = $roles->get_role($key);
|
515 |
+
if (Controller_Permissions::shared()->can_role_manage_settings($role) && Controller_Permissions::shared()->allow_2fa_self($role->name)) {
|
516 |
+
$this->set($this->get_required_2fa_role_key($role->name), $time, true);
|
517 |
+
}
|
518 |
+
}
|
519 |
+
}
|
520 |
+
$this->remove(self::OPTION_REQUIRE_2FA_ADMIN);
|
521 |
+
$this->remove(self::OPTION_REQUIRE_2FA_GRACE_PERIOD);
|
522 |
+
$this->remove(self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED);
|
523 |
+
}
|
524 |
+
|
525 |
+
public function reset_ntp_disabled_flag() {
|
526 |
+
$this->remove(self::OPTION_USE_NTP);
|
527 |
+
$this->remove(self::OPTION_NTP_OFFSET);
|
528 |
+
$this->remove(self::OPTION_NTP_FAILURE_COUNT);
|
529 |
+
}
|
530 |
}
|
modules/login-security/classes/controller/support.php
CHANGED
@@ -18,6 +18,7 @@ class Controller_Support {
|
|
18 |
const ITEM_MODULE_LOGIN_SECURITY_2FA = 'module-login-security-2fa';
|
19 |
const ITEM_MODULE_LOGIN_SECURITY_2FA_APPS = 'module-login-security-2fa-apps';
|
20 |
const ITEM_MODULE_LOGIN_SECURITY_CAPTCHA = 'module-login-security-captcha';
|
|
|
21 |
|
22 |
public static function esc_supportURL($item = self::ITEM_INDEX) {
|
23 |
return esc_url(self::supportURL($item));
|
@@ -41,6 +42,7 @@ class Controller_Support {
|
|
41 |
case self::ITEM_MODULE_LOGIN_SECURITY:
|
42 |
case self::ITEM_MODULE_LOGIN_SECURITY_2FA:
|
43 |
case self::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA:
|
|
|
44 |
return $base . '?query=' . $item;
|
45 |
}
|
46 |
|
18 |
const ITEM_MODULE_LOGIN_SECURITY_2FA = 'module-login-security-2fa';
|
19 |
const ITEM_MODULE_LOGIN_SECURITY_2FA_APPS = 'module-login-security-2fa-apps';
|
20 |
const ITEM_MODULE_LOGIN_SECURITY_CAPTCHA = 'module-login-security-captcha';
|
21 |
+
const ITEM_MODULE_LOGIN_SECURITY_ROLES = 'module-login-security-roles';
|
22 |
|
23 |
public static function esc_supportURL($item = self::ITEM_INDEX) {
|
24 |
return esc_url(self::supportURL($item));
|
42 |
case self::ITEM_MODULE_LOGIN_SECURITY:
|
43 |
case self::ITEM_MODULE_LOGIN_SECURITY_2FA:
|
44 |
case self::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA:
|
45 |
+
case self::ITEM_MODULE_LOGIN_SECURITY_ROLES:
|
46 |
return $base . '?query=' . $item;
|
47 |
}
|
48 |
|
modules/login-security/classes/controller/time.php
CHANGED
@@ -5,6 +5,7 @@ namespace WordfenceLS;
|
|
5 |
class Controller_Time {
|
6 |
const NTP_VERSION = 3; // https://www.ietf.org/rfc/rfc1305.txt
|
7 |
const NTP_EPOCH_CONVERT = 2208988800; //RFC 5905, page 13
|
|
|
8 |
|
9 |
/**
|
10 |
* Returns the singleton Controller_Time.
|
@@ -24,10 +25,12 @@ class Controller_Time {
|
|
24 |
if (is_main_site()) {
|
25 |
wp_schedule_event(time() + 10, 'hourly', 'wordfence_ls_ntp_cron');
|
26 |
}
|
|
|
27 |
}
|
28 |
|
29 |
public function uninstall() {
|
30 |
wp_clear_scheduled_hook('wordfence_ls_ntp_cron');
|
|
|
31 |
}
|
32 |
|
33 |
public function init() {
|
@@ -39,18 +42,24 @@ class Controller_Time {
|
|
39 |
}
|
40 |
|
41 |
public function _wordfence_ls_ntp_cron() {
|
|
|
|
|
42 |
$ntp = self::ntp_time();
|
43 |
$time = time();
|
44 |
|
45 |
if ($ntp === false) {
|
46 |
-
Controller_Settings::shared()->
|
47 |
-
|
|
|
|
|
|
|
48 |
}
|
49 |
else {
|
50 |
-
|
51 |
-
Controller_Settings::shared()->set(Controller_Settings::OPTION_USE_NTP,
|
52 |
Controller_Settings::shared()->set(Controller_Settings::OPTION_NTP_OFFSET, $ntp - $time);
|
53 |
}
|
|
|
54 |
}
|
55 |
|
56 |
/**
|
@@ -66,7 +75,7 @@ class Controller_Time {
|
|
66 |
}
|
67 |
|
68 |
$offset = 0;
|
69 |
-
if (Controller_Settings::shared()->
|
70 |
$offset = Controller_Settings::shared()->get_int(Controller_Settings::OPTION_NTP_OFFSET);
|
71 |
}
|
72 |
else if (WORDFENCE_LS_FROM_CORE) {
|
5 |
class Controller_Time {
|
6 |
const NTP_VERSION = 3; // https://www.ietf.org/rfc/rfc1305.txt
|
7 |
const NTP_EPOCH_CONVERT = 2208988800; //RFC 5905, page 13
|
8 |
+
const FAILURE_LIMIT = 3;
|
9 |
|
10 |
/**
|
11 |
* Returns the singleton Controller_Time.
|
25 |
if (is_main_site()) {
|
26 |
wp_schedule_event(time() + 10, 'hourly', 'wordfence_ls_ntp_cron');
|
27 |
}
|
28 |
+
Controller_Settings::shared()->reset_ntp_disabled_flag();
|
29 |
}
|
30 |
|
31 |
public function uninstall() {
|
32 |
wp_clear_scheduled_hook('wordfence_ls_ntp_cron');
|
33 |
+
Controller_Settings::shared()->reset_ntp_disabled_flag();
|
34 |
}
|
35 |
|
36 |
public function init() {
|
42 |
}
|
43 |
|
44 |
public function _wordfence_ls_ntp_cron() {
|
45 |
+
if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ALLOW_DISABLING_NTP) && Controller_Settings::shared()->is_ntp_cron_disabled())
|
46 |
+
return;
|
47 |
$ntp = self::ntp_time();
|
48 |
$time = time();
|
49 |
|
50 |
if ($ntp === false) {
|
51 |
+
$failureCount = Controller_Settings::shared()->increment_ntp_failure_count();
|
52 |
+
if ($failureCount >= self::FAILURE_LIMIT) {
|
53 |
+
Controller_Settings::shared()->set(Controller_Settings::OPTION_USE_NTP, false);
|
54 |
+
Controller_Settings::shared()->set(Controller_Settings::OPTION_NTP_OFFSET, 0);
|
55 |
+
}
|
56 |
}
|
57 |
else {
|
58 |
+
Controller_Settings::shared()->reset_ntp_failure_count();
|
59 |
+
Controller_Settings::shared()->set(Controller_Settings::OPTION_USE_NTP, true);
|
60 |
Controller_Settings::shared()->set(Controller_Settings::OPTION_NTP_OFFSET, $ntp - $time);
|
61 |
}
|
62 |
+
Controller_Settings::shared()->set(Controller_Settings::OPTION_ALLOW_DISABLING_NTP, true);
|
63 |
}
|
64 |
|
65 |
/**
|
75 |
}
|
76 |
|
77 |
$offset = 0;
|
78 |
+
if (Controller_Settings::shared()->is_ntp_enabled()) {
|
79 |
$offset = Controller_Settings::shared()->get_int(Controller_Settings::OPTION_NTP_OFFSET);
|
80 |
}
|
81 |
else if (WORDFENCE_LS_FROM_CORE) {
|
modules/login-security/classes/controller/users.php
CHANGED
@@ -8,6 +8,10 @@ use WordfenceLS\Crypto\Model_Symmetric;
|
|
8 |
class Controller_Users {
|
9 |
const RECOVERY_CODE_COUNT = 5;
|
10 |
const RECOVERY_CODE_SIZE = 8;
|
|
|
|
|
|
|
|
|
11 |
|
12 |
/**
|
13 |
* Returns the singleton Controller_Users.
|
@@ -65,9 +69,23 @@ class Controller_Users {
|
|
65 |
return $users;
|
66 |
}
|
67 |
|
68 |
-
$query = new \WP_User_Query(array('role' =>
|
69 |
return $query->get_results();
|
70 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
/**
|
73 |
* Returns whether or not the user has a valid remembered device.
|
@@ -232,42 +250,44 @@ class Controller_Users {
|
|
232 |
$table = Controller_DB::shared()->secrets;
|
233 |
$wpdb->query($wpdb->prepare("DELETE FROM `{$table}` WHERE `user_id` = %d", $user->ID));
|
234 |
}
|
235 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
/**
|
237 |
* Returns whether or not 2FA is required for the user regardless of activation status. 2FA is considered required
|
238 |
* when the option to require it is enabled and there is at least one administrator with it active.
|
239 |
*
|
240 |
* @param \WP_User $user
|
|
|
|
|
241 |
* @return bool
|
242 |
*/
|
243 |
-
public function requires_2fa($user) {
|
244 |
-
static $
|
245 |
-
if ($
|
246 |
-
|
|
|
247 |
}
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
}
|
255 |
-
|
256 |
-
if ($this->has_2fa_active($user)) {
|
257 |
-
$_cachedRequired = true;
|
258 |
-
return true;
|
259 |
-
}
|
260 |
-
|
261 |
-
$activeIDs = $this->_user_ids_with_2fa_active();
|
262 |
-
foreach ($activeIDs as $id) {
|
263 |
-
if (Controller_Permissions::shared()->can_manage_settings(new \WP_User($id))) {
|
264 |
-
$_cachedRequired = true;
|
265 |
-
return true;
|
266 |
-
}
|
267 |
-
}
|
268 |
}
|
269 |
-
$_cachedRequired = false;
|
270 |
-
return false;
|
271 |
}
|
272 |
|
273 |
/**
|
@@ -402,13 +422,28 @@ class Controller_Users {
|
|
402 |
}
|
403 |
|
404 |
$role_counts['none'] = (int) $row[$col++];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
405 |
|
406 |
// Get the meta_value index from the end of the result set.
|
407 |
$total_users = (int) $row[$col];
|
408 |
|
409 |
$counts['active_total_users'] = $total_users;
|
410 |
$counts['active_avail_roles'] =& $role_counts;
|
411 |
-
|
412 |
return $counts;
|
413 |
}
|
414 |
|
@@ -456,13 +491,13 @@ class Controller_Users {
|
|
456 |
|
457 |
public function _manage_users_columns($columns = array()) {
|
458 |
if (user_can(wp_get_current_user(), Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
|
459 |
-
$columns['wfls_2fa_status'] =
|
460 |
}
|
461 |
|
462 |
if (Controller_Permissions::shared()->can_manage_settings(wp_get_current_user())) {
|
463 |
-
$columns['wfls_last_login'] =
|
464 |
if (Controller_CAPTCHA::shared()->enabled()) {
|
465 |
-
$columns['wfls_last_captcha'] =
|
466 |
}
|
467 |
}
|
468 |
return $columns;
|
@@ -474,7 +509,20 @@ class Controller_Users {
|
|
474 |
$user = new \WP_User($user_id);
|
475 |
$value = __('Not Allowed', 'wordfence-2fa');
|
476 |
if (Controller_Users::shared()->can_activate_2fa($user)) {
|
477 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
}
|
479 |
break;
|
480 |
case 'wfls_last_login':
|
@@ -596,4 +644,235 @@ class Controller_Users {
|
|
596 |
}
|
597 |
return $views;
|
598 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
599 |
}
|
8 |
class Controller_Users {
|
9 |
const RECOVERY_CODE_COUNT = 5;
|
10 |
const RECOVERY_CODE_SIZE = 8;
|
11 |
+
const SECONDS_PER_DAY = 86400;
|
12 |
+
const META_KEY_GRACE_PERIOD_RESET = 'wfls-grace-period-reset';
|
13 |
+
const META_KEY_GRACE_PERIOD_OVERRIDE = 'wfls-grace-period-override';
|
14 |
+
const META_KEY_ALLOW_GRACE_PERIOD = 'wfls-allow-grace-period';
|
15 |
|
16 |
/**
|
17 |
* Returns the singleton Controller_Users.
|
69 |
return $users;
|
70 |
}
|
71 |
|
72 |
+
$query = new \WP_User_Query(http_build_query(array('role' => 'administrator', 'number' => -1)));
|
73 |
return $query->get_results();
|
74 |
}
|
75 |
+
|
76 |
+
public function get_users_by_role($role, $limit = -1) {
|
77 |
+
if ($role === 'super-admin') {
|
78 |
+
$superAdmins = array();
|
79 |
+
foreach(get_super_admins() as $username) {
|
80 |
+
$superAdmins[] = new \WP_User($username);
|
81 |
+
}
|
82 |
+
return $superAdmins;
|
83 |
+
}
|
84 |
+
else {
|
85 |
+
$query = new \WP_User_Query(http_build_query(array('role' => $role, 'number' => is_int($limit) ? $limit : -1)));
|
86 |
+
return $query->get_results();
|
87 |
+
}
|
88 |
+
}
|
89 |
|
90 |
/**
|
91 |
* Returns whether or not the user has a valid remembered device.
|
250 |
$table = Controller_DB::shared()->secrets;
|
251 |
$wpdb->query($wpdb->prepare("DELETE FROM `{$table}` WHERE `user_id` = %d", $user->ID));
|
252 |
}
|
253 |
+
|
254 |
+
private function has_admin_with_2fa_active() {
|
255 |
+
static $cache = null;
|
256 |
+
if ($cache === null) {
|
257 |
+
$activeIDs = $this->_user_ids_with_2fa_active();
|
258 |
+
foreach ($activeIDs as $id) {
|
259 |
+
if (Controller_Permissions::shared()->can_manage_settings(new \WP_User($id))) {
|
260 |
+
$cache = true;
|
261 |
+
return $cache;
|
262 |
+
}
|
263 |
+
}
|
264 |
+
$cache = false;
|
265 |
+
}
|
266 |
+
return $cache;
|
267 |
+
}
|
268 |
+
|
269 |
/**
|
270 |
* Returns whether or not 2FA is required for the user regardless of activation status. 2FA is considered required
|
271 |
* when the option to require it is enabled and there is at least one administrator with it active.
|
272 |
*
|
273 |
* @param \WP_User $user
|
274 |
+
* @param bool &$gracePeriod
|
275 |
+
* @param int &$requiredAt
|
276 |
* @return bool
|
277 |
*/
|
278 |
+
public function requires_2fa($user, &$gracePeriod = false, &$requiredAt = null) {
|
279 |
+
static $cache = array();
|
280 |
+
if (array_key_exists($user->ID, $cache)) {
|
281 |
+
list($required, $gracePeriod, $requiredAt) = $cache[$user->ID];
|
282 |
+
return $required;
|
283 |
}
|
284 |
+
else {
|
285 |
+
$gracePeriod = false;
|
286 |
+
$requiredAt = null;
|
287 |
+
$required = $this->does_user_role_require_2fa($user, $gracePeriod, $requiredAt);
|
288 |
+
$cache[$user->ID] = array($required, $gracePeriod, $requiredAt);
|
289 |
+
return $required;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
290 |
}
|
|
|
|
|
291 |
}
|
292 |
|
293 |
/**
|
422 |
}
|
423 |
|
424 |
$role_counts['none'] = (int) $row[$col++];
|
425 |
+
|
426 |
+
// Separately add super admins for multisite
|
427 |
+
if (is_multisite()) {
|
428 |
+
$superAdmins = 0;
|
429 |
+
$activeSuperAdmins = 0;
|
430 |
+
foreach(get_super_admins() as $username) {
|
431 |
+
$superAdmins++;
|
432 |
+
$user = new \WP_User($username);
|
433 |
+
if ($this->has_2fa_active($user)) {
|
434 |
+
$activeSuperAdmins++;
|
435 |
+
}
|
436 |
+
}
|
437 |
+
$counts['avail_roles']['super-admin'] = $superAdmins;
|
438 |
+
$role_counts['super-admin'] = $activeSuperAdmins;
|
439 |
+
}
|
440 |
|
441 |
// Get the meta_value index from the end of the result set.
|
442 |
$total_users = (int) $row[$col];
|
443 |
|
444 |
$counts['active_total_users'] = $total_users;
|
445 |
$counts['active_avail_roles'] =& $role_counts;
|
446 |
+
|
447 |
return $counts;
|
448 |
}
|
449 |
|
491 |
|
492 |
public function _manage_users_columns($columns = array()) {
|
493 |
if (user_can(wp_get_current_user(), Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
|
494 |
+
$columns['wfls_2fa_status'] = esc_html__('2FA Status', 'wordfence-2fa');
|
495 |
}
|
496 |
|
497 |
if (Controller_Permissions::shared()->can_manage_settings(wp_get_current_user())) {
|
498 |
+
$columns['wfls_last_login'] = esc_html__('Last Login', 'wordfence-2fa');
|
499 |
if (Controller_CAPTCHA::shared()->enabled()) {
|
500 |
+
$columns['wfls_last_captcha'] = esc_html__('Last CAPTCHA', 'wordfence-2fa');
|
501 |
}
|
502 |
}
|
503 |
return $columns;
|
509 |
$user = new \WP_User($user_id);
|
510 |
$value = __('Not Allowed', 'wordfence-2fa');
|
511 |
if (Controller_Users::shared()->can_activate_2fa($user)) {
|
512 |
+
$has2fa = Controller_Users::shared()->has_2fa_active($user);
|
513 |
+
$requires2fa = $this->requires_2fa($user, $inGracePeriod);
|
514 |
+
if ($has2fa) {
|
515 |
+
$value = esc_html__('Active', 'wordfence-2fa');
|
516 |
+
}
|
517 |
+
elseif ($inGracePeriod) {
|
518 |
+
$value = wp_kses(__('Inactive<small class="wfls-sub-status">(Grace Period)</small>', 'wordfence-2fa'), array('small'=>array('class'=>array())));
|
519 |
+
}
|
520 |
+
elseif (($requires2fa && !$has2fa)) {
|
521 |
+
$value = wp_kses($inGracePeriod === null ? __('Locked Out<small class="wfls-sub-status">(Grace Period Disabled)</small>') : __('Locked Out<small class="wfls-sub-status">(Grace Period Exceeded)</small>', 'wordfence-2fa'), array('small'=>array('class'=>array())));
|
522 |
+
}
|
523 |
+
else {
|
524 |
+
$value = esc_html__('Inactive', 'wordfence-2fa');
|
525 |
+
}
|
526 |
}
|
527 |
break;
|
528 |
case 'wfls_last_login':
|
644 |
}
|
645 |
return $views;
|
646 |
}
|
647 |
+
|
648 |
+
private function get_grace_period_reset_time($user) {
|
649 |
+
$time = get_user_option(self::META_KEY_GRACE_PERIOD_RESET, $user->ID);
|
650 |
+
if (empty($time))
|
651 |
+
return null;
|
652 |
+
return (int) $time;
|
653 |
+
}
|
654 |
+
|
655 |
+
public function get_grace_period_override($user) {
|
656 |
+
$override = get_user_option(self::META_KEY_GRACE_PERIOD_OVERRIDE, $user->ID);
|
657 |
+
if ($override === false)
|
658 |
+
return null;
|
659 |
+
return (int) $override;
|
660 |
+
}
|
661 |
+
|
662 |
+
private function does_user_role_require_2fa($user, &$inGracePeriod = null, &$requiredAt = null) {
|
663 |
+
$is2faAdmin = Controller_Permissions::shared()->can_manage_settings($user);
|
664 |
+
$userDate = self::get_grace_period_reset_time($user);
|
665 |
+
if ($userDate === null)
|
666 |
+
$userDate = self::get_registration_date($user);
|
667 |
+
if ($is2faAdmin && !$this->get_grace_period_allowed_flag($user->ID)) {
|
668 |
+
$gracePeriod = 0;
|
669 |
+
$inGracePeriod = null;
|
670 |
+
}
|
671 |
+
else {
|
672 |
+
$gracePeriod = self::get_grace_period_override($user);
|
673 |
+
if ($gracePeriod === null)
|
674 |
+
$gracePeriod = Controller_Settings::shared()->get_user_2fa_grace_period();
|
675 |
+
$gracePeriod *= self::SECONDS_PER_DAY;
|
676 |
+
$inGracePeriod = false;
|
677 |
+
}
|
678 |
+
$now = time();
|
679 |
+
foreach (Controller_Permissions::shared()->get_all_roles($user) as $role) {
|
680 |
+
$roleDate = Controller_Settings::shared()->get_required_2fa_role_activation_time($role);
|
681 |
+
if ($roleDate === false)
|
682 |
+
continue;
|
683 |
+
$effectiveDate = max($userDate, $roleDate) + $gracePeriod;
|
684 |
+
if ($requiredAt === null || $effectiveDate < $requiredAt)
|
685 |
+
$requiredAt = $effectiveDate;
|
686 |
+
if ($effectiveDate <= $now && (!$is2faAdmin || $this->has_admin_with_2fa_active())) {
|
687 |
+
if ($inGracePeriod)
|
688 |
+
$inGracePeriod = false;
|
689 |
+
return true;
|
690 |
+
}
|
691 |
+
else if ($inGracePeriod !== null) {
|
692 |
+
$inGracePeriod = true;
|
693 |
+
}
|
694 |
+
}
|
695 |
+
return false;
|
696 |
+
}
|
697 |
+
|
698 |
+
private static function get_registration_date($user) {
|
699 |
+
return strtotime($user->user_registered);
|
700 |
+
}
|
701 |
+
|
702 |
+
public function reset_2fa_grace_period($user, $override = null) {
|
703 |
+
if (!$this->can_activate_2fa($user) || $this->has_2fa_active($user))
|
704 |
+
return false;
|
705 |
+
update_user_option($user->ID, self::META_KEY_GRACE_PERIOD_RESET, time(), true);
|
706 |
+
if ($override !== null)
|
707 |
+
update_user_option($user->ID, self::META_KEY_GRACE_PERIOD_OVERRIDE, (int) $override, true);
|
708 |
+
return true;
|
709 |
+
}
|
710 |
+
|
711 |
+
public function revoke_grace_period($user) {
|
712 |
+
foreach(array(
|
713 |
+
self::META_KEY_GRACE_PERIOD_RESET,
|
714 |
+
self::META_KEY_GRACE_PERIOD_OVERRIDE,
|
715 |
+
self::META_KEY_ALLOW_GRACE_PERIOD
|
716 |
+
) as $option) {
|
717 |
+
delete_user_option($user->ID, $option, true);
|
718 |
+
}
|
719 |
+
}
|
720 |
+
|
721 |
+
public function allow_grace_period($userId) {
|
722 |
+
update_user_option($userId, self::META_KEY_ALLOW_GRACE_PERIOD, true, true);
|
723 |
+
}
|
724 |
+
|
725 |
+
public function get_grace_period_allowed_flag($userId) {
|
726 |
+
return (bool) get_user_option(self::META_KEY_ALLOW_GRACE_PERIOD, $userId);
|
727 |
+
}
|
728 |
+
|
729 |
+
public function has_revokable_grace_period($user) {
|
730 |
+
return $this->get_grace_period_allowed_flag($user->ID) || $this->get_grace_period_reset_time($user) !== null;
|
731 |
+
}
|
732 |
+
|
733 |
+
private function get_inactive_2fa_super_admins($gracePeriod = false) {
|
734 |
+
$inactive = array();
|
735 |
+
foreach(get_super_admins() as $username) {
|
736 |
+
$user = new \WP_User($username);
|
737 |
+
if (!$this->has_2fa_active($user)) {
|
738 |
+
$this->requires_2fa($user, $inGracePeriod, $requiredAt);
|
739 |
+
if ($gracePeriod === null || $gracePeriod == $inGracePeriod) {
|
740 |
+
$current = new \StdClass();
|
741 |
+
$current->user_id = $user->ID;
|
742 |
+
$current->user_login = $username;
|
743 |
+
$current->required_at = $requiredAt;
|
744 |
+
$inactive[] = $current;
|
745 |
+
}
|
746 |
+
}
|
747 |
+
}
|
748 |
+
return $inactive;
|
749 |
+
}
|
750 |
+
|
751 |
+
private function generate_inactive_2fa_user_query($roleKey, $gracePeriod = null, $page = null, $perPage = null) {
|
752 |
+
global $wpdb;
|
753 |
+
$secondsPerDay = (int) self::SECONDS_PER_DAY;
|
754 |
+
$gracePeriodSeconds = (int) (Controller_Settings::shared()->get_user_2fa_grace_period() * self::SECONDS_PER_DAY);
|
755 |
+
$roleTime = (int) (Controller_Settings::shared()->get_required_2fa_role_activation_time($roleKey));
|
756 |
+
$siteId = get_current_blog_id();
|
757 |
+
$blogPrefix = $wpdb->get_blog_prefix($siteId);
|
758 |
+
$usermeta = $wpdb->usermeta;
|
759 |
+
$users = $wpdb->users;
|
760 |
+
$secrets = Controller_DB::shared()->secrets;
|
761 |
+
$admin = Controller_Permissions::shared()->can_role_manage_settings($roleKey);
|
762 |
+
$parameters = array(
|
763 |
+
self::META_KEY_GRACE_PERIOD_RESET,
|
764 |
+
self::META_KEY_GRACE_PERIOD_OVERRIDE
|
765 |
+
);
|
766 |
+
$gracePeriodClause = "IF(overrides.days IS NULL, $gracePeriodSeconds, overrides.days * $secondsPerDay)";
|
767 |
+
$registeredTimestampClause = "UNIX_TIMESTAMP(CONVERT_TZ($users.user_registered, '+00:00', @@time_zone))";
|
768 |
+
$now = time();
|
769 |
+
if ($admin) {
|
770 |
+
$allowancesJoin = <<<SQL
|
771 |
+
LEFT JOIN (
|
772 |
+
SELECT
|
773 |
+
user_id,
|
774 |
+
meta_value AS allowed
|
775 |
+
FROM
|
776 |
+
$usermeta
|
777 |
+
WHERE
|
778 |
+
meta_key = %s
|
779 |
+
) allowances ON allowances.user_id = $usermeta.user_id
|
780 |
+
SQL;
|
781 |
+
$parameters[] = self::META_KEY_ALLOW_GRACE_PERIOD;
|
782 |
+
$allowedClause = 'IFNULL(allowances.allowed, 0)';
|
783 |
+
$gracePeriodClause = "IF($allowedClause = 0, 0, $gracePeriodClause)";
|
784 |
+
}
|
785 |
+
else {
|
786 |
+
$allowancesJoin = null;
|
787 |
+
$allowedClause = null;
|
788 |
+
}
|
789 |
+
$timeClause = "GREATEST($roleTime, $registeredTimestampClause, IFNULL(resets.time, 0)) + $gracePeriodClause";
|
790 |
+
$query = <<<SQL
|
791 |
+
SELECT
|
792 |
+
$usermeta.user_id,
|
793 |
+
$users.user_login,
|
794 |
+
$timeClause AS required_at
|
795 |
+
FROM
|
796 |
+
$usermeta
|
797 |
+
JOIN $users ON $users.ID = $usermeta.user_id
|
798 |
+
LEFT JOIN (
|
799 |
+
SELECT
|
800 |
+
user_id,
|
801 |
+
meta_value AS time
|
802 |
+
FROM
|
803 |
+
$usermeta
|
804 |
+
WHERE
|
805 |
+
meta_key = %s
|
806 |
+
) resets ON resets.user_id = $usermeta.user_id
|
807 |
+
LEFT JOIN (
|
808 |
+
SELECT
|
809 |
+
user_id,
|
810 |
+
meta_value AS days
|
811 |
+
FROM
|
812 |
+
$usermeta
|
813 |
+
WHERE
|
814 |
+
meta_key = %s
|
815 |
+
) overrides ON overrides.user_id = $usermeta.user_id
|
816 |
+
$allowancesJoin
|
817 |
+
WHERE
|
818 |
+
meta_key = '{$blogPrefix}capabilities'
|
819 |
+
AND meta_value LIKE %s
|
820 |
+
AND NOT $usermeta.user_id IN(SELECT user_id FROM {$secrets})
|
821 |
+
SQL;
|
822 |
+
$conditions = array();
|
823 |
+
$operator = 'AND';
|
824 |
+
if ($gracePeriod !== null) {
|
825 |
+
if ($gracePeriod) {
|
826 |
+
$conditions[] = "$timeClause > $now";
|
827 |
+
}
|
828 |
+
else {
|
829 |
+
$conditions[] = "$timeClause <= $now";
|
830 |
+
$operator = 'OR';
|
831 |
+
}
|
832 |
+
}
|
833 |
+
if ($admin) {
|
834 |
+
$conditions[] = $allowedClause . ' = ' . ($gracePeriod ? 1 : 0);
|
835 |
+
}
|
836 |
+
if (!empty($conditions))
|
837 |
+
$query .= ' AND (' . implode(" $operator ", $conditions). ')';
|
838 |
+
if ($page !== null && $perPage !== null) {
|
839 |
+
$offset = (int) (($page - 1) * $perPage);
|
840 |
+
$limit = (int) ($perPage + 1);
|
841 |
+
if ($offset >= 0 && $perPage > 0)
|
842 |
+
$query .= " LIMIT $offset, $limit";
|
843 |
+
}
|
844 |
+
$serializedRoleKey = serialize($roleKey);
|
845 |
+
$roleMatch = '%' . (method_exists($wpdb, 'esc_like') ? $wpdb->esc_like($serializedRoleKey) : addcslashes($serializedRoleKey, '_%\\')). '%';
|
846 |
+
$parameters[] = $roleMatch;
|
847 |
+
return $wpdb->prepare(
|
848 |
+
$query.';',
|
849 |
+
$parameters
|
850 |
+
);
|
851 |
+
}
|
852 |
+
|
853 |
+
public function get_inactive_2fa_users($roleKey, $gracePeriod = null, $page = null, $perPage = null, &$lastPage = null) {
|
854 |
+
global $wpdb;
|
855 |
+
if (is_multisite() && $roleKey === 'super-admin') {
|
856 |
+
$superAdmins = $this->get_inactive_2fa_super_admins($gracePeriod);
|
857 |
+
if ($page !== null && $perPage !== null) {
|
858 |
+
$start = ($page - 1) * $perPage;
|
859 |
+
$end = $start + $perPage;
|
860 |
+
$lastPage = $end >= count($superAdmins);
|
861 |
+
$superAdmins = array_slice($superAdmins, $start, $perPage);
|
862 |
+
}
|
863 |
+
return $superAdmins;
|
864 |
+
}
|
865 |
+
else {
|
866 |
+
$query = $this->generate_inactive_2fa_user_query($roleKey, $gracePeriod, $page, $perPage);
|
867 |
+
$results = $wpdb->get_results($query);
|
868 |
+
if (count($results) > $perPage) {
|
869 |
+
$lastPage = false;
|
870 |
+
array_pop($results);
|
871 |
+
}
|
872 |
+
else {
|
873 |
+
$lastPage = true;
|
874 |
+
}
|
875 |
+
return $results;
|
876 |
+
}
|
877 |
+
}
|
878 |
}
|
modules/login-security/classes/controller/wordfencels.php
CHANGED
@@ -10,6 +10,7 @@ use WordfenceLS\View\Model_Title;
|
|
10 |
|
11 |
class Controller_WordfenceLS {
|
12 |
const VERSION_KEY = 'wordfence_ls_version';
|
|
|
13 |
|
14 |
/**
|
15 |
* Returns the singleton Controller_Wordfence2FA.
|
@@ -52,6 +53,13 @@ class Controller_WordfenceLS {
|
|
52 |
add_action('wp_login', array($this, '_record_login'), 999, 1);
|
53 |
add_action('register_post', array($this, '_register_post'), 25, 3);
|
54 |
add_filter('wp_login_errors', array($this, '_wp_login_errors'), 25, 3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
$useSubmenu = WORDFENCE_LS_FROM_CORE;
|
57 |
if (is_multisite() && !is_network_admin()) {
|
@@ -116,22 +124,31 @@ class Controller_WordfenceLS {
|
|
116 |
END
|
117 |
);
|
118 |
}
|
119 |
-
|
120 |
-
if (
|
121 |
-
if (is_multisite()) {
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
|
|
|
|
126 |
}
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
|
|
|
|
|
|
132 |
}
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
|
|
135 |
}
|
136 |
}
|
137 |
}
|
@@ -147,6 +164,17 @@ END
|
|
147 |
public function _recaptcha_test_notice() {
|
148 |
echo '<div class="notice notice-warning"><p>' . wp_kses(sprintf(__('reCAPTCHA test mode is enabled. While enabled, login and registration requests will be checked for their score but will not be blocked if the score is below the minimum score. <a href="%s">Manage Settings</a>', 'wordfence-2fa'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))), array('a'=>array('href'=>array()))) . '</p></div>';
|
149 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
|
151 |
/**
|
152 |
* Installation/Uninstallation
|
@@ -210,11 +238,30 @@ END
|
|
210 |
do_action('wfls_xml_rpc_blocked', 2);
|
211 |
return false;
|
212 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
|
214 |
/**
|
215 |
* Login Page
|
216 |
-
*/
|
217 |
-
|
218 |
public function _login_enqueue_scripts() {
|
219 |
$useCAPTCHA = Controller_CAPTCHA::shared()->enabled();
|
220 |
if ($useCAPTCHA) {
|
@@ -242,22 +289,19 @@ END
|
|
242 |
));
|
243 |
}
|
244 |
}
|
245 |
-
|
246 |
/**
|
247 |
* Admin Pages
|
248 |
*/
|
249 |
-
public function _admin_enqueue_scripts() {
|
250 |
if (isset($_GET['page']) && $_GET['page'] == 'WFLS') {
|
251 |
wp_enqueue_script('wordfence-ls-jquery.qrcode', Model_Asset::js('jquery.qrcode.min.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
252 |
wp_enqueue_script('wordfence-ls-jquery.tmpl', Model_Asset::js('jquery.tmpl.min.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
253 |
wp_enqueue_script('wordfence-ls-jquery.colorbox', Model_Asset::js('jquery.colorbox.min.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
254 |
if (Controller_Permissions::shared()->can_manage_settings()) {
|
255 |
-
wp_enqueue_script('wordfence-ls-jquery-ui.timepicker', Model_Asset::js('jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_LS_VERSION);
|
256 |
-
|
257 |
wp_enqueue_style('wordfence-ls-jquery-ui-css', Model_Asset::css('jquery-ui.min.css'), array(), WORDFENCE_LS_VERSION);
|
258 |
wp_enqueue_style('wordfence-ls-jquery-ui-css.structure', Model_Asset::css('jquery-ui.structure.min.css'), array(), WORDFENCE_LS_VERSION);
|
259 |
wp_enqueue_style('wordfence-ls-jquery-ui-css.theme', Model_Asset::css('jquery-ui.theme.min.css'), array(), WORDFENCE_LS_VERSION);
|
260 |
-
wp_enqueue_style('wordfence-ls-jquery-ui-css.timepicker', Model_Asset::css('jquery-ui-timepicker-addon.css'), array(), WORDFENCE_LS_VERSION);
|
261 |
}
|
262 |
wp_enqueue_script('wordfence-ls-admin', Model_Asset::js('admin.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
263 |
if (!WORDFENCE_LS_FROM_CORE) {
|
@@ -284,7 +328,7 @@ END
|
|
284 |
wp_enqueue_style('wordfence-ls-admin-global', Model_Asset::css('admin-global.css'), array(), WORDFENCE_LS_VERSION);
|
285 |
}
|
286 |
|
287 |
-
if (Controller_Notices::shared()->has_notice(wp_get_current_user())) {
|
288 |
wp_enqueue_script('wordfence-ls-admin-global', Model_Asset::js('admin-global.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
289 |
|
290 |
wp_localize_script('wordfence-ls-admin-global', 'GWFLSVars', array(
|
@@ -292,6 +336,7 @@ END
|
|
292 |
'nonce' => wp_create_nonce('wp-ajax'),
|
293 |
));
|
294 |
}
|
|
|
295 |
}
|
296 |
|
297 |
public function _edit_user_profile($user) {
|
@@ -310,44 +355,82 @@ END
|
|
310 |
$manageURL = network_admin_url('admin.php?page=WFLS&user=' . ((int) $user->ID));
|
311 |
}
|
312 |
}
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
</td>
|
324 |
-
</tr>
|
325 |
-
</table>
|
326 |
-
<?php
|
327 |
-
elseif (current_user_can(Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)):
|
328 |
-
?>
|
329 |
-
<h2><?php esc_html_e('Wordfence Login Security', 'wordfence-2fa'); ?></h2>
|
330 |
<table class="form-table">
|
331 |
<tr id="wordfence-ls">
|
332 |
<th><label for="wordfence-ls-btn"><?php esc_html_e('2FA Status'); ?></label></th>
|
333 |
<td>
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
341 |
</td>
|
342 |
</tr>
|
343 |
</table>
|
344 |
-
|
345 |
endif;
|
346 |
}
|
347 |
|
348 |
/**
|
349 |
* Authentication
|
350 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
|
352 |
public function _authenticate($user, $username, $password) {
|
353 |
if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_XMLRPC_ENABLED)) { //XML-RPC call and we're not enforcing 2FA on it
|
@@ -370,13 +453,14 @@ END
|
|
370 |
* themselves to opt out of the requirement.
|
371 |
* 4. The user does not have 2FA enabled. 2FA exempts the user from requiring email verification if the score is
|
372 |
* below the threshold.
|
|
|
373 |
*/
|
374 |
-
if (!empty($username)) { //Login attempt, not just a wp-login.php page load
|
375 |
-
|
376 |
-
$requireCAPTCHA =
|
377 |
|
378 |
$performVerification = false;
|
379 |
-
$token = (
|
380 |
if ($requireCAPTCHA && empty($token) && !Controller_CAPTCHA::shared()->test_mode()) { //No CAPTCHA token means forced additional verification (if neither 2FA nor test mode are active)
|
381 |
$performVerification = true;
|
382 |
}
|
@@ -448,11 +532,17 @@ END
|
|
448 |
if ($requireCAPTCHA && $performVerification) {
|
449 |
$encrypted = Model_Symmetric::encrypt((string) $user->ID);
|
450 |
if ($encrypted) {
|
|
|
|
|
|
|
|
|
|
|
|
|
451 |
$jwt = new Model_JWT(array('user' => $encrypted), Controller_Time::time() + 60 * WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES);
|
452 |
$view = new Model_View('email/login-verification', array(
|
453 |
'siteName' => get_bloginfo('name', 'raw'),
|
454 |
'siteURL' => rtrim(site_url(), '/') . '/',
|
455 |
-
'verificationURL' => add_query_arg(array('wfls-email-verification' => (string) $jwt),
|
456 |
'ip' => Model_Request::current()->ip(),
|
457 |
'canEnable2FA' => Controller_Users::shared()->can_activate_2fa($user),
|
458 |
));
|
@@ -577,6 +667,8 @@ END
|
|
577 |
return $user;
|
578 |
}
|
579 |
|
|
|
|
|
580 |
if (Controller_Users::shared()->has_2fa_active($user)) {
|
581 |
$legacy2FAActive = Controller_WordfenceLS::shared()->legacy_2fa_active();
|
582 |
if ($legacy2FAActive) {
|
@@ -584,11 +676,11 @@ END
|
|
584 |
}
|
585 |
return new \WP_Error('wfls_twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please provide your 2FA code when prompted.', 'wordfence-2fa'), array('strong'=>array())));
|
586 |
}
|
587 |
-
else if (Controller_Users::shared()->requires_2fa($user)) {
|
588 |
-
return new \WP_Error('wfls_twofactor_blocked', wp_kses(__('<strong>LOGIN BLOCKED</strong>: 2FA is required to be active on
|
589 |
}
|
590 |
-
else if (
|
591 |
-
Controller_Notices::shared()->add_notice(Model_Notice::SEVERITY_CRITICAL, new Model_HTML(wp_kses(sprintf(__('You do not currently have two-factor authentication active on your account, which will be required beginning %s. <a href="%s">Configure 2FA</a>', 'wordfence-2fa'), Controller_Time::format_local_time('F j, Y',
|
592 |
}
|
593 |
}
|
594 |
|
@@ -611,78 +703,34 @@ END
|
|
611 |
}
|
612 |
|
613 |
public function _register_post($sanitized_user_login, $user_email, $errors) {
|
614 |
-
if (
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
* themselves to opt out of the requirement.
|
628 |
-
*/
|
629 |
-
$requireCAPTCHA = Controller_CAPTCHA::shared()->enabled() && !(defined('XMLRPC_REQUEST') && XMLRPC_REQUEST); //CAPTCHA is enabled, not an XML-RPC request
|
630 |
-
$requireCAPTCHA = apply_filters('wordfence_ls_require_captcha', $requireCAPTCHA);
|
631 |
-
|
632 |
-
$token = (isset($_POST['wfls-captcha-token']) && is_string($_POST['wfls-captcha-token']) ? $_POST['wfls-captcha-token'] : '');
|
633 |
-
|
634 |
-
if ($requireCAPTCHA && empty($token) && !empty($sanitized_user_login) && !Controller_CAPTCHA::shared()->test_mode()) { //A CAPTCHA token must be provided for the login attempt to proceed past this point except in test mode
|
635 |
-
$errors->add('wfls_captcha_required', wp_kses(__('<strong>REGISTRATION ATTEMPT BLOCKED</strong>: This site requires a security token created when the page loads for all registration attempts. Please ensure JavaScript is enabled and try again.', 'wordfence-ls'), array('strong'=>array())));
|
636 |
-
return;
|
637 |
-
}
|
638 |
-
|
639 |
-
$score = false;
|
640 |
-
if ($requireCAPTCHA) {
|
641 |
-
$score = Controller_CAPTCHA::shared()->score($token);
|
642 |
-
if ($score === false && !Controller_CAPTCHA::shared()->test_mode()) { //The token must be valid except in test mode
|
643 |
-
$errors->add('wfls_captcha_required', wp_kses(__('<strong>REGISTRATION ATTEMPT BLOCKED</strong>: The security token for the login attempt was invalid or expired. Please reload the page and try again.', 'wordfence-ls'), array('strong'=>array())));
|
644 |
-
return;
|
645 |
-
}
|
646 |
-
}
|
647 |
-
|
648 |
-
if ($requireCAPTCHA) {
|
649 |
-
Controller_Users::shared()->record_captcha_score(null, $score);
|
650 |
-
|
651 |
-
if (!Controller_CAPTCHA::shared()->is_human($score)) { //Score is below the human threshold, block the user registration
|
652 |
-
$encryptedIP = Model_Symmetric::encrypt(Model_Request::current()->ip());
|
653 |
-
$encryptedScore = Model_Symmetric::encrypt($score);
|
654 |
-
if ($encryptedIP && $encryptedScore && filter_var(get_site_option('admin_email'), FILTER_VALIDATE_EMAIL)) {
|
655 |
-
$jwt = new Model_JWT(array('ip' => $encryptedIP, 'score' => $encryptedScore), Controller_Time::time() + 600);
|
656 |
-
$token = (string) $jwt;
|
657 |
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
|
|
|
|
|
|
|
|
662 |
}
|
663 |
-
|
664 |
-
/**
|
665 |
-
* Fires just prior to blocking user registration due to a failed CAPTCHA. After firing this action hook
|
666 |
-
* the registration attempt is blocked.
|
667 |
-
*
|
668 |
-
* @param int $source The source code of the block.
|
669 |
-
*/
|
670 |
-
do_action('wfls_registration_blocked', 1);
|
671 |
-
|
672 |
-
/**
|
673 |
-
* Filters the message to show if registration is blocked due to a captcha rejection.
|
674 |
-
*
|
675 |
-
* @since 1.0.0
|
676 |
-
*
|
677 |
-
* @param string $message The message to display, HTML allowed.
|
678 |
-
*/
|
679 |
-
$message = apply_filters('wfls_registration_blocked_message', $message);
|
680 |
-
$errors->add('wfls_registration_blocked', $message);
|
681 |
-
return;
|
682 |
}
|
683 |
}
|
684 |
}
|
685 |
-
|
686 |
/**
|
687 |
* @param \WP_Error $errors
|
688 |
* @param string $redirect_to
|
@@ -732,7 +780,8 @@ END
|
|
732 |
public function _admin_menu() {
|
733 |
$user = wp_get_current_user();
|
734 |
if (Controller_Notices::shared()->has_notice($user)) {
|
735 |
-
|
|
|
736 |
Controller_Notices::shared()->remove_notice(false, 'wfls-will-be-required', $user);
|
737 |
}
|
738 |
}
|
@@ -773,25 +822,71 @@ END
|
|
773 |
}
|
774 |
}
|
775 |
}
|
776 |
-
|
777 |
-
$sections = array(
|
778 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
779 |
'tab' => new Model_Tab('manage', 'manage', __('Two-Factor Authentication', 'wordfence-2fa'), __('Two-Factor Authentication', 'wordfence-2fa')),
|
780 |
'title' => new Model_Title('manage', __('Two-Factor Authentication', 'wordfence-2fa'), Controller_Support::supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA), new Model_HTML(wp_kses(__('Learn more<span class="wfls-hidden-xs"> about Two-Factor Authentication</span>', 'wordfence'), array('span'=>array('class'=>array()))))),
|
781 |
'content' => new Model_View('page/manage', array(
|
782 |
'user' => $user,
|
783 |
'canEditUsers' => $canEditUsers,
|
784 |
)),
|
785 |
-
),
|
786 |
-
);
|
787 |
-
|
788 |
-
if ($administrator) {
|
789 |
-
$sections[] = array(
|
790 |
-
'tab' => new Model_Tab('settings', 'settings', __('Settings', 'wordfence-2fa'), __('Settings', 'wordfence-2fa')),
|
791 |
-
'title' => new Model_Title('settings', __('Login Security Settings', 'wordfence-2fa'), Controller_Support::supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY), new Model_HTML(wp_kses(__('Learn more<span class="wfls-hidden-xs"> about Login Security</span>', 'wordfence'), array('span'=>array('class'=>array()))))),
|
792 |
-
'content' => new Model_View('page/settings', array(
|
793 |
-
)),
|
794 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
795 |
}
|
796 |
|
797 |
$view = new Model_View('page/page', array(
|
@@ -799,4 +894,77 @@ END
|
|
799 |
));
|
800 |
echo $view->render();
|
801 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
802 |
}
|
10 |
|
11 |
class Controller_WordfenceLS {
|
12 |
const VERSION_KEY = 'wordfence_ls_version';
|
13 |
+
const USERS_PER_PAGE = 25;
|
14 |
|
15 |
/**
|
16 |
* Returns the singleton Controller_Wordfence2FA.
|
53 |
add_action('wp_login', array($this, '_record_login'), 999, 1);
|
54 |
add_action('register_post', array($this, '_register_post'), 25, 3);
|
55 |
add_filter('wp_login_errors', array($this, '_wp_login_errors'), 25, 3);
|
56 |
+
if ($this->has_woocommerce() && Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION)) {
|
57 |
+
add_action('woocommerce_before_customer_login_form', array($this, '_woocommerce_login_enqueue_scripts'));
|
58 |
+
add_action('woocommerce_before_checkout_form', array($this, '_woocommerce_checkout_login_enqueue_scripts'));
|
59 |
+
add_action('wp_loaded', array($this, '_handle_woocommerce_registration'), 10, 0); //Woocommerce uses priority 20
|
60 |
+
}
|
61 |
+
add_action('user_new_form', array($this, '_user_new_form'));
|
62 |
+
add_action('user_register', array($this, '_user_register'));
|
63 |
|
64 |
$useSubmenu = WORDFENCE_LS_FROM_CORE;
|
65 |
if (is_multisite() && !is_network_admin()) {
|
124 |
END
|
125 |
);
|
126 |
}
|
127 |
+
|
128 |
+
if (Controller_Permissions::shared()->can_manage_settings()) {
|
129 |
+
if ((is_plugin_active('jetpack/jetpack.php') || (is_multisite() && is_plugin_active_for_network('jetpack/jetpack.php'))) && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ALLOW_XML_RPC)) {
|
130 |
+
if (is_multisite()) {
|
131 |
+
add_action('network_admin_notices', array($this, '_jetpack_xml_rpc_notice'));
|
132 |
+
}
|
133 |
+
else {
|
134 |
+
add_action('admin_notices', array($this, '_jetpack_xml_rpc_notice'));
|
135 |
+
}
|
136 |
}
|
137 |
+
|
138 |
+
if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_CAPTCHA_TEST_MODE) && Controller_CAPTCHA::shared()->enabled()) {
|
139 |
+
if (is_multisite()) {
|
140 |
+
add_action('network_admin_notices', array($this, '_recaptcha_test_notice'));
|
141 |
+
}
|
142 |
+
else {
|
143 |
+
add_action('admin_notices', array($this, '_recaptcha_test_notice'));
|
144 |
+
}
|
145 |
}
|
146 |
+
|
147 |
+
if ($this->has_woocommerce() && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION)) {
|
148 |
+
if (!Controller_Notices::shared()->is_persistent_notice_dismissed(get_current_user_id(), Controller_Notices::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION)) {
|
149 |
+
Controller_Notices::shared()->register_persistent_notice(Controller_Notices::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION);
|
150 |
+
add_action(is_multisite() ? 'network_admin_notices' : 'admin_notices', array($this, '_woocommerce_integration_notice'));
|
151 |
+
}
|
152 |
}
|
153 |
}
|
154 |
}
|
164 |
public function _recaptcha_test_notice() {
|
165 |
echo '<div class="notice notice-warning"><p>' . wp_kses(sprintf(__('reCAPTCHA test mode is enabled. While enabled, login and registration requests will be checked for their score but will not be blocked if the score is below the minimum score. <a href="%s">Manage Settings</a>', 'wordfence-2fa'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))), array('a'=>array('href'=>array()))) . '</p></div>';
|
166 |
}
|
167 |
+
|
168 |
+
public function _woocommerce_integration_notice() {
|
169 |
+
?>
|
170 |
+
<div id="<?php echo esc_attr(Controller_Notices::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION) ?>" class="notice notice-warning is-dismissible wfls-persistent-notice">
|
171 |
+
<p>
|
172 |
+
<?php esc_html_e('WooCommerce appears to be installed, but the Wordfence Login Security WooCommerce integration is not currently enabled. Without this feature, WooCommerce forms will not support all functionality provided by Wordfence Login Security, including CAPTCHA for the login page and user registration.', 'wordfence-2fa'); ?>
|
173 |
+
<a href="<?php echo esc_attr(esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))) ?>"><?php esc_html_e('Manage Settings', 'wordfence-2fa') ?></a>
|
174 |
+
</p>
|
175 |
+
</div>
|
176 |
+
<?php
|
177 |
+
}
|
178 |
|
179 |
/**
|
180 |
* Installation/Uninstallation
|
238 |
do_action('wfls_xml_rpc_blocked', 2);
|
239 |
return false;
|
240 |
}
|
241 |
+
|
242 |
+
private function has_woocommerce() {
|
243 |
+
return class_exists('woocommerce');
|
244 |
+
}
|
245 |
+
|
246 |
+
public function _woocommerce_login_enqueue_scripts() {
|
247 |
+
wp_enqueue_style('dashicons');
|
248 |
+
$this->_login_enqueue_scripts();
|
249 |
+
}
|
250 |
+
|
251 |
+
public function _woocommerce_checkout_login_enqueue_scripts() {
|
252 |
+
/**
|
253 |
+
* This is the same check used in WooCommerce to determine whether or not to display the checkout login form
|
254 |
+
* @see templates/checkout/form-login.php in WooCommerce
|
255 |
+
*/
|
256 |
+
if ( is_user_logged_in() || 'no' === get_option( 'woocommerce_enable_checkout_login_reminder' ) ) {
|
257 |
+
return;
|
258 |
+
}
|
259 |
+
$this->_woocommerce_login_enqueue_scripts();
|
260 |
+
}
|
261 |
|
262 |
/**
|
263 |
* Login Page
|
264 |
+
*/
|
|
|
265 |
public function _login_enqueue_scripts() {
|
266 |
$useCAPTCHA = Controller_CAPTCHA::shared()->enabled();
|
267 |
if ($useCAPTCHA) {
|
289 |
));
|
290 |
}
|
291 |
}
|
292 |
+
|
293 |
/**
|
294 |
* Admin Pages
|
295 |
*/
|
296 |
+
public function _admin_enqueue_scripts($hookSuffix) {
|
297 |
if (isset($_GET['page']) && $_GET['page'] == 'WFLS') {
|
298 |
wp_enqueue_script('wordfence-ls-jquery.qrcode', Model_Asset::js('jquery.qrcode.min.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
299 |
wp_enqueue_script('wordfence-ls-jquery.tmpl', Model_Asset::js('jquery.tmpl.min.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
300 |
wp_enqueue_script('wordfence-ls-jquery.colorbox', Model_Asset::js('jquery.colorbox.min.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
301 |
if (Controller_Permissions::shared()->can_manage_settings()) {
|
|
|
|
|
302 |
wp_enqueue_style('wordfence-ls-jquery-ui-css', Model_Asset::css('jquery-ui.min.css'), array(), WORDFENCE_LS_VERSION);
|
303 |
wp_enqueue_style('wordfence-ls-jquery-ui-css.structure', Model_Asset::css('jquery-ui.structure.min.css'), array(), WORDFENCE_LS_VERSION);
|
304 |
wp_enqueue_style('wordfence-ls-jquery-ui-css.theme', Model_Asset::css('jquery-ui.theme.min.css'), array(), WORDFENCE_LS_VERSION);
|
|
|
305 |
}
|
306 |
wp_enqueue_script('wordfence-ls-admin', Model_Asset::js('admin.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
307 |
if (!WORDFENCE_LS_FROM_CORE) {
|
328 |
wp_enqueue_style('wordfence-ls-admin-global', Model_Asset::css('admin-global.css'), array(), WORDFENCE_LS_VERSION);
|
329 |
}
|
330 |
|
331 |
+
if (Controller_Notices::shared()->has_notice(wp_get_current_user()) || in_array($hookSuffix, array('user-edit.php', 'user-new.php', 'profile.php'))) {
|
332 |
wp_enqueue_script('wordfence-ls-admin-global', Model_Asset::js('admin-global.js'), array('jquery'), WORDFENCE_LS_VERSION);
|
333 |
|
334 |
wp_localize_script('wordfence-ls-admin-global', 'GWFLSVars', array(
|
336 |
'nonce' => wp_create_nonce('wp-ajax'),
|
337 |
));
|
338 |
}
|
339 |
+
|
340 |
}
|
341 |
|
342 |
public function _edit_user_profile($user) {
|
355 |
$manageURL = network_admin_url('admin.php?page=WFLS&user=' . ((int) $user->ID));
|
356 |
}
|
357 |
}
|
358 |
+
$userAllowed2fa = Controller_Users::shared()->can_activate_2fa($user);
|
359 |
+
$viewerIsUser = $user->ID == get_current_user_id();
|
360 |
+
$viewerCanManage2fa = current_user_can(Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS);
|
361 |
+
$requires2fa = Controller_Users::shared()->requires_2fa($user, $inGracePeriod, $requiredAt);
|
362 |
+
$has2fa = Controller_Users::shared()->has_2fa_active($user);
|
363 |
+
$lockedOut = $requires2fa && !$has2fa;
|
364 |
+
$hasGracePeriod = Controller_Settings::shared()->get_user_2fa_grace_period() > 0;
|
365 |
+
if ($userAllowed2fa && ($viewerIsUser || $viewerCanManage2fa)):
|
366 |
+
?>
|
367 |
+
<h2 id="wfls-user-settings"><?php esc_html_e('Wordfence Login Security', 'wordfence-2fa'); ?></h2>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
368 |
<table class="form-table">
|
369 |
<tr id="wordfence-ls">
|
370 |
<th><label for="wordfence-ls-btn"><?php esc_html_e('2FA Status'); ?></label></th>
|
371 |
<td>
|
372 |
+
<?php if ($userAllowed2fa): ?>
|
373 |
+
<p>
|
374 |
+
<strong><?php echo $lockedOut ? esc_html__('Locked Out', 'wordfence-2fa') : ($has2fa ? esc_html__('Active', 'wordfence-2fa') : esc_html__('Inactive', 'wordfence-2fa')); ?>:</strong>
|
375 |
+
<?php echo $lockedOut ?
|
376 |
+
($viewerIsUser ? esc_html__('Two-factor authentication is required for your account, but has not been configured.', 'wordfence-2fa') : esc_html__('Two-factor authentication is required for this account, but has not been configured.', 'wordfence-2fa'))
|
377 |
+
: ($has2fa ? esc_html__('Wordfence 2FA is active.', 'wordfence-2fa') : esc_html__('Wordfence 2FA is inactive.', 'wordfence-2fa')); ?>
|
378 |
+
<a href="<?php echo Controller_Support::esc_supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence-2fa'); ?></a>
|
379 |
+
</p>
|
380 |
+
<?php if (!$has2fa && $inGracePeriod): ?>
|
381 |
+
<p><strong><?php echo sprintf($viewerIsUser ?
|
382 |
+
esc_html__('Two-factor authentication must be activated for your account prior to %s to avoid losing access.', 'wordfence-2fa')
|
383 |
+
: esc_html__('Two-factor authentication must be activated for this account prior to %s.', 'wordfence-2fa')
|
384 |
+
, Controller_Time::format_local_time('F j, Y g:i A', $requiredAt)) ?></strong></p>
|
385 |
+
<?php endif ?>
|
386 |
+
<?php if ($has2fa || $viewerIsUser): ?><p><a href="<?php echo esc_url($manageURL); ?>" class="button"><?php echo (Controller_Users::shared()->has_2fa_active($user) ? esc_html__('Manage 2FA', 'wordfence-2fa') : esc_html__('Activate 2FA', 'wordfence-2fa')); ?></a></p><?php endif ?>
|
387 |
+
<?php endif ?>
|
388 |
+
<?php if ($viewerCanManage2fa): ?>
|
389 |
+
<?php if (!$userAllowed2fa): ?>
|
390 |
+
<p><strong><?php esc_html_e('Disabled', 'wordfence-2fa'); ?>:</strong> <?php esc_html_e('Two-factor authentication is not currently enabled for this account type. To enable it, visit the Wordfence 2FA Settings page.', 'wordfence-2fa'); ?> <a href="#"><?php esc_html_e('Learn More', 'wordfence-2fa'); ?></a></p>
|
391 |
+
<?php endif ?>
|
392 |
+
<?php if ($lockedOut): ?>
|
393 |
+
<?php echo Model_View::create(
|
394 |
+
'common/reset-grace-period',
|
395 |
+
array(
|
396 |
+
'user' => $user,
|
397 |
+
'gracePeriod' => $inGracePeriod
|
398 |
+
))->render() ?>
|
399 |
+
<?php elseif ($inGracePeriod && Controller_Users::shared()->has_revokable_grace_period($user)): ?>
|
400 |
+
<?php echo Model_View::create(
|
401 |
+
'common/revoke-grace-period',
|
402 |
+
array(
|
403 |
+
'user' => $user
|
404 |
+
))->render() ?>
|
405 |
+
<?php endif ?>
|
406 |
+
<p>
|
407 |
+
<a href="<?php echo esc_url(is_multisite() ? network_admin_url('admin.php?page=WFLS#top#settings') : admin_url('admin.php?page=WFLS#top#settings')); ?>" class="button"><?php esc_html_e('Manage 2FA Settings', 'wordfence-2fa'); ?></a>
|
408 |
+
</p>
|
409 |
+
<?php endif ?>
|
410 |
</td>
|
411 |
</tr>
|
412 |
</table>
|
413 |
+
<?php
|
414 |
endif;
|
415 |
}
|
416 |
|
417 |
/**
|
418 |
* Authentication
|
419 |
*/
|
420 |
+
|
421 |
+
private function _is_woocommerce_login() {
|
422 |
+
if (!$this->has_woocommerce())
|
423 |
+
return false;
|
424 |
+
$nonceValue = '';
|
425 |
+
foreach (array('woocommerce-login-nonce', '_wpnonce') as $key) {
|
426 |
+
if (array_key_exists($key, $_REQUEST)) {
|
427 |
+
$nonceValue = $_REQUEST[$key];
|
428 |
+
break;
|
429 |
+
}
|
430 |
+
}
|
431 |
+
|
432 |
+
return ( isset( $_POST['login'], $_POST['username'], $_POST['password'] ) && is_string($nonceValue) && wp_verify_nonce( $nonceValue, 'woocommerce-login' ) );
|
433 |
+
}
|
434 |
|
435 |
public function _authenticate($user, $username, $password) {
|
436 |
if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_XMLRPC_ENABLED)) { //XML-RPC call and we're not enforcing 2FA on it
|
453 |
* themselves to opt out of the requirement.
|
454 |
* 4. The user does not have 2FA enabled. 2FA exempts the user from requiring email verification if the score is
|
455 |
* below the threshold.
|
456 |
+
* 5. The request is not a WooCommerce login while WC integration is disabled
|
457 |
*/
|
458 |
+
if (!empty($username) && (!$this->_is_woocommerce_login() || Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION))) { //Login attempt, not just a wp-login.php page load
|
459 |
+
|
460 |
+
$requireCAPTCHA = Controller_CAPTCHA::shared()->is_captcha_required();
|
461 |
|
462 |
$performVerification = false;
|
463 |
+
$token = Controller_CAPTCHA::shared()->get_token();
|
464 |
if ($requireCAPTCHA && empty($token) && !Controller_CAPTCHA::shared()->test_mode()) { //No CAPTCHA token means forced additional verification (if neither 2FA nor test mode are active)
|
465 |
$performVerification = true;
|
466 |
}
|
532 |
if ($requireCAPTCHA && $performVerification) {
|
533 |
$encrypted = Model_Symmetric::encrypt((string) $user->ID);
|
534 |
if ($encrypted) {
|
535 |
+
if ($this->has_woocommerce() && array_key_exists('woocommerce-login-nonce', $_POST)) {
|
536 |
+
$loginUrl = get_permalink(get_option('woocommerce_myaccount_page_id'));
|
537 |
+
}
|
538 |
+
else {
|
539 |
+
$loginUrl = wp_login_url();
|
540 |
+
}
|
541 |
$jwt = new Model_JWT(array('user' => $encrypted), Controller_Time::time() + 60 * WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES);
|
542 |
$view = new Model_View('email/login-verification', array(
|
543 |
'siteName' => get_bloginfo('name', 'raw'),
|
544 |
'siteURL' => rtrim(site_url(), '/') . '/',
|
545 |
+
'verificationURL' => add_query_arg(array('wfls-email-verification' => (string) $jwt), $loginUrl),
|
546 |
'ip' => Model_Request::current()->ip(),
|
547 |
'canEnable2FA' => Controller_Users::shared()->can_activate_2fa($user),
|
548 |
));
|
667 |
return $user;
|
668 |
}
|
669 |
|
670 |
+
$in2faGracePeriod = false;
|
671 |
+
$time2faRequired = null;
|
672 |
if (Controller_Users::shared()->has_2fa_active($user)) {
|
673 |
$legacy2FAActive = Controller_WordfenceLS::shared()->legacy_2fa_active();
|
674 |
if ($legacy2FAActive) {
|
676 |
}
|
677 |
return new \WP_Error('wfls_twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please provide your 2FA code when prompted.', 'wordfence-2fa'), array('strong'=>array())));
|
678 |
}
|
679 |
+
else if (Controller_Users::shared()->requires_2fa($user, $in2faGracePeriod, $time2faRequired)) {
|
680 |
+
return new \WP_Error('wfls_twofactor_blocked', wp_kses(__('<strong>LOGIN BLOCKED</strong>: 2FA is required to be active on your account. Please contact the site administrator.', 'wordfence-2fa'), array('strong'=>array())));
|
681 |
}
|
682 |
+
else if ($in2faGracePeriod) {
|
683 |
+
Controller_Notices::shared()->add_notice(Model_Notice::SEVERITY_CRITICAL, new Model_HTML(wp_kses(sprintf(__('You do not currently have two-factor authentication active on your account, which will be required beginning %s. <a href="%s">Configure 2FA</a>', 'wordfence-2fa'), Controller_Time::format_local_time('F j, Y g:i A', $time2faRequired), esc_url((is_multisite() && is_super_admin($user->ID)) ? network_admin_url('admin.php?page=WFLS') : admin_url('admin.php?page=WFLS'))), array('a'=>array('href'=>array())))), 'wfls-will-be-required', $user);
|
684 |
}
|
685 |
}
|
686 |
|
703 |
}
|
704 |
|
705 |
public function _register_post($sanitized_user_login, $user_email, $errors) {
|
706 |
+
if (!empty($sanitized_user_login)) {
|
707 |
+
$captchaResult = $this->process_registration_captcha();
|
708 |
+
if ($captchaResult !== true) {
|
709 |
+
$message = $captchaResult['message'];
|
710 |
+
$category = $captchaResult['category'];
|
711 |
+
if ($category === 'wfls_registration_blocked') {
|
712 |
+
/**
|
713 |
+
* Fires just prior to blocking user registration due to a failed CAPTCHA. After firing this action hook
|
714 |
+
* the registration attempt is blocked.
|
715 |
+
*
|
716 |
+
* @param int $source The source code of the block.
|
717 |
+
*/
|
718 |
+
do_action('wfls_registration_blocked', 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
719 |
|
720 |
+
/**
|
721 |
+
* Filters the message to show if registration is blocked due to a captcha rejection.
|
722 |
+
*
|
723 |
+
* @since 1.0.0
|
724 |
+
*
|
725 |
+
* @param string $message The message to display, HTML allowed.
|
726 |
+
*/
|
727 |
+
$message = apply_filters('wfls_registration_blocked_message', $message);
|
728 |
}
|
729 |
+
$errors->add($category, $message);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
}
|
731 |
}
|
732 |
}
|
733 |
+
|
734 |
/**
|
735 |
* @param \WP_Error $errors
|
736 |
* @param string $redirect_to
|
780 |
public function _admin_menu() {
|
781 |
$user = wp_get_current_user();
|
782 |
if (Controller_Notices::shared()->has_notice($user)) {
|
783 |
+
Controller_Users::shared()->requires_2fa($user, $gracePeriod);
|
784 |
+
if (!$gracePeriod) {
|
785 |
Controller_Notices::shared()->remove_notice(false, 'wfls-will-be-required', $user);
|
786 |
}
|
787 |
}
|
822 |
}
|
823 |
}
|
824 |
}
|
825 |
+
|
826 |
+
$sections = array();
|
827 |
+
|
828 |
+
if (isset($_GET['role']) && $canEditUsers) {
|
829 |
+
$roleKey = $_GET['role'];
|
830 |
+
$roles = new \WP_Roles();
|
831 |
+
$role = $roles->get_role($roleKey);
|
832 |
+
$roleTitle = $roleKey === 'super-admin' ? __('Super Administrator', 'wordfence-2fa') : $roles->role_names[$roleKey];
|
833 |
+
$requiredAt = Controller_Settings::shared()->get_required_2fa_role_activation_time($roleKey);
|
834 |
+
$states = array(
|
835 |
+
'grace_period' => array(
|
836 |
+
'title' => __('Grace Period', 'wordfence-2fa'),
|
837 |
+
'gracePeriod' => true
|
838 |
+
),
|
839 |
+
'locked_out' => array(
|
840 |
+
'title' => __('Locked Out', 'wordfence-2fa'),
|
841 |
+
'gracePeriod' => false
|
842 |
+
)
|
843 |
+
);
|
844 |
+
foreach ($states as $key => $state) {
|
845 |
+
$pageKey = "page_$key";
|
846 |
+
$page = isset($_GET[$pageKey]) ? max((int) $_GET[$pageKey], 1) : 1;
|
847 |
+
$title = $state['title'];
|
848 |
+
$lastPage = true;
|
849 |
+
if ($requiredAt === false)
|
850 |
+
$users = array();
|
851 |
+
else
|
852 |
+
$users = Controller_Users::shared()->get_inactive_2fa_users($roleKey, $state['gracePeriod'], $page, self::USERS_PER_PAGE, $lastPage);
|
853 |
+
$sections[] = array(
|
854 |
+
'tab' => new Model_Tab($key, $key, $title, $title),
|
855 |
+
'title' => new Model_Title($key, sprintf(__('Users without 2FA active (%s)', 'wordfence-2fa'), $title) . ' - ' . $roleTitle),
|
856 |
+
'content' => new Model_View('page/role', array(
|
857 |
+
'role' => $role,
|
858 |
+
'roleTitle' => $roleTitle,
|
859 |
+
'stateTitle' => $title,
|
860 |
+
'requiredAt' => $requiredAt,
|
861 |
+
'state' => $state,
|
862 |
+
'users' => $users,
|
863 |
+
'page' => $page,
|
864 |
+
'lastPage' => $lastPage,
|
865 |
+
'pageKey' => $pageKey,
|
866 |
+
'stateKey' => $key
|
867 |
+
)),
|
868 |
+
);
|
869 |
+
}
|
870 |
+
}
|
871 |
+
else {
|
872 |
+
$sections[] = array(
|
873 |
'tab' => new Model_Tab('manage', 'manage', __('Two-Factor Authentication', 'wordfence-2fa'), __('Two-Factor Authentication', 'wordfence-2fa')),
|
874 |
'title' => new Model_Title('manage', __('Two-Factor Authentication', 'wordfence-2fa'), Controller_Support::supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA), new Model_HTML(wp_kses(__('Learn more<span class="wfls-hidden-xs"> about Two-Factor Authentication</span>', 'wordfence'), array('span'=>array('class'=>array()))))),
|
875 |
'content' => new Model_View('page/manage', array(
|
876 |
'user' => $user,
|
877 |
'canEditUsers' => $canEditUsers,
|
878 |
)),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
879 |
);
|
880 |
+
|
881 |
+
if ($administrator) {
|
882 |
+
$sections[] = array(
|
883 |
+
'tab' => new Model_Tab('settings', 'settings', __('Settings', 'wordfence-2fa'), __('Settings', 'wordfence-2fa')),
|
884 |
+
'title' => new Model_Title('settings', __('Login Security Settings', 'wordfence-2fa'), Controller_Support::supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY), new Model_HTML(wp_kses(__('Learn more<span class="wfls-hidden-xs"> about Login Security</span>', 'wordfence'), array('span'=>array('class'=>array()))))),
|
885 |
+
'content' => new Model_View('page/settings', array(
|
886 |
+
'hasWoocommerce' => $this->has_woocommerce()
|
887 |
+
)),
|
888 |
+
);
|
889 |
+
}
|
890 |
}
|
891 |
|
892 |
$view = new Model_View('page/page', array(
|
894 |
));
|
895 |
echo $view->render();
|
896 |
}
|
897 |
+
|
898 |
+
private function process_registration_captcha() {
|
899 |
+
if (Controller_Whitelist::shared()->is_whitelisted(Model_Request::current()->ip())) { //Whitelisted, so we're not enforcing 2FA
|
900 |
+
return true;
|
901 |
+
}
|
902 |
+
|
903 |
+
$captchaController = Controller_CAPTCHA::shared();
|
904 |
+
$requireCaptcha = $captchaController->is_captcha_required();
|
905 |
+
$token = $captchaController->get_token();
|
906 |
+
|
907 |
+
if ($requireCaptcha) {
|
908 |
+
if ($token === null && !$captchaController->test_mode()) {
|
909 |
+
return array(
|
910 |
+
'message' => wp_kses(__('<strong>REGISTRATION ATTEMPT BLOCKED</strong>: This site requires a security token created when the page loads for all registration attempts. Please ensure JavaScript is enabled and try again.', 'wordfence-ls'), array('strong'=>array())),
|
911 |
+
'category' => 'wfls_captcha_required'
|
912 |
+
);
|
913 |
+
}
|
914 |
+
$score = $captchaController->score($token);
|
915 |
+
if ($score === false && !$captchaController->test_mode()) {
|
916 |
+
return array(
|
917 |
+
'message' => wp_kses(__('<strong>REGISTRATION ATTEMPT BLOCKED</strong>: The security token for the login attempt was invalid or expired. Please reload the page and try again.', 'wordfence-ls'), array('strong'=>array())),
|
918 |
+
'category' => 'wfls_captcha_required'
|
919 |
+
);
|
920 |
+
}
|
921 |
+
Controller_Users::shared()->record_captcha_score(null, $token);
|
922 |
+
if (!$captchaController->is_human($score)) {
|
923 |
+
$encryptedIP = Model_Symmetric::encrypt(Model_Request::current()->ip());
|
924 |
+
$encryptedScore = Model_Symmetric::encrypt($score);
|
925 |
+
$result = array(
|
926 |
+
'category' => 'wfls_registration_blocked'
|
927 |
+
);
|
928 |
+
if ($encryptedIP && $encryptedScore && filter_var(get_site_option('admin_email'), FILTER_VALIDATE_EMAIL)) {
|
929 |
+
$jwt = new Model_JWT(array('ip' => $encryptedIP, 'score' => $encryptedScore), Controller_Time::time() + 600);
|
930 |
+
$result['message'] = wp_kses(sprintf(__('<strong>REGISTRATION BLOCKED</strong>: The registration request was blocked because it was flagged as spam. Please try again or <a href="#" class="wfls-registration-captcha-contact" data-token="%s">contact the site owner</a> for help.', 'wordfence-ls'), esc_attr((string)$jwt)), array('strong'=>array(), 'a'=>array('href'=>array(), 'class'=>array(), 'data-token'=>array())));
|
931 |
+
}
|
932 |
+
else {
|
933 |
+
$result['message'] = wp_kses(__('<strong>REGISTRATION BLOCKED</strong>: The registration request was blocked because it was flagged as spam. Please try again or contact the site owner for help.', 'wordfence-ls'), array('strong'=>array()));
|
934 |
+
}
|
935 |
+
return $result;
|
936 |
+
}
|
937 |
+
}
|
938 |
+
return true;
|
939 |
+
}
|
940 |
+
|
941 |
+
private function disable_woocommerce_registration($message) {
|
942 |
+
if ($this->has_woocommerce()) {
|
943 |
+
remove_action('wp_loaded', array('WC_Form_Handler', 'process_registration'), 20);
|
944 |
+
wc_add_notice($message, 'error');
|
945 |
+
}
|
946 |
+
}
|
947 |
+
|
948 |
+
public function _handle_woocommerce_registration() {
|
949 |
+
if ($this->has_woocommerce() && isset($_POST['register'], $_POST['email']) && (isset($_POST['_wpnonce']) || isset($_POST['woocommerce-register-nonce']))) {
|
950 |
+
$captchaResult = $this->process_registration_captcha();
|
951 |
+
if ($captchaResult !== true) {
|
952 |
+
$this->disable_woocommerce_registration($captchaResult['message']);
|
953 |
+
}
|
954 |
+
}
|
955 |
+
}
|
956 |
+
|
957 |
+
public function _user_new_form() {
|
958 |
+
if (Controller_Settings::shared()->get_user_2fa_grace_period())
|
959 |
+
echo Model_View::create('user/grace-period-toggle', array())->render();
|
960 |
+
}
|
961 |
+
|
962 |
+
public function _user_register($newUserId) {
|
963 |
+
$creator = wp_get_current_user();
|
964 |
+
if (!Controller_Permissions::shared()->can_manage_settings($creator) || $creator->ID == $newUserId)
|
965 |
+
return;
|
966 |
+
if (isset($_POST['wfls-grace-period-toggle']))
|
967 |
+
Controller_Users::shared()->allow_grace_period($newUserId);
|
968 |
+
}
|
969 |
+
|
970 |
}
|
modules/login-security/classes/model/view/title.php
CHANGED
@@ -16,7 +16,7 @@ class Model_Title {
|
|
16 |
private $_helpURL;
|
17 |
private $_helpLink;
|
18 |
|
19 |
-
public function __construct($id, $title, $helpURL, $helpLink) {
|
20 |
$this->_id = $id;
|
21 |
$this->_title = $title;
|
22 |
$this->_helpURL = $helpURL;
|
16 |
private $_helpURL;
|
17 |
private $_helpLink;
|
18 |
|
19 |
+
public function __construct($id, $title, $helpURL = null, $helpLink = null) {
|
20 |
$this->_id = $id;
|
21 |
$this->_title = $title;
|
22 |
$this->_helpURL = $helpURL;
|
modules/login-security/css/{admin-global.1623076348.css → admin-global.1629122067.css}
RENAMED
@@ -1 +1 @@
|
|
1 |
-
.wfls-clearfix:before,.wfls-clearfix:after{content:" ";display:table}.wfls-clearfix:after{clear:both}.wfls-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wfls-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wfls-btn:focus,.wfls-btn.wfls-focus,.wfls-btn:active:focus,.wfls-btn:active.wfls-focus,.wfls-btn.wfls-active:focus,.wfls-btn.wfls-active.wfls-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wfls-btn:hover,.wfls-btn:focus,.wfls-btn.wfls-focus{color:#00709e;text-decoration:none !important}.wfls-btn:active,.wfls-btn.wfls-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn.wfls-disabled,.wfls-btn[disabled],.wfls-btn[readonly],fieldset[disabled] .wfls-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wfls-btn{text-decoration:none}a.wfls-btn.wfls-disabled,fieldset[disabled] a.wfls-btn{cursor:not-allowed;pointer-events:none}.wfls-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wfls-btn-default:focus,.wfls-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wfls-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active,.wfls-btn-default.active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active:hover,.wfls-btn-default:active:focus,.wfls-btn-default:active.focus,.wfls-btn-default.active:hover,.wfls-btn-default.active:focus,.wfls-btn-default.active.focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wfls-btn-default:active,.wfls-btn-default.wfls-active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{background-image:none}.wfls-btn-default.wfls-disabled,.wfls-btn-default[disabled],.wfls-btn-default[readonly],fieldset[disabled] .wfls-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}.wfls-btn-default.wfls-disabled:hover,.wfls-btn-default.wfls-disabled:focus,.wfls-btn-default.wfls-disabled.wfls-focus,.wfls-btn-default[disabled]:hover,.wfls-btn-default[disabled]:focus,.wfls-btn-default[disabled].wfls-focus,.wfls-btn-default[readonly]:hover,.wfls-btn-default[readonly]:focus,.wfls-btn-default[readonly].wfls-focus,fieldset[disabled] .wfls-btn-default:hover,fieldset[disabled] .wfls-btn-default:focus,fieldset[disabled] .wfls-btn-default.wfls-focus{background-color:#fff;border-color:#00709e}.wfls-btn-default .wfls-badge{color:#fff;background-color:#00709e}.wfls-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wfls-btn-primary:focus,.wfls-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wfls-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active,.wfls-btn-primary.active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active:hover,.wfls-btn-primary:active:focus,.wfls-btn-primary:active.focus,.wfls-btn-primary.active:hover,.wfls-btn-primary.active:focus,.wfls-btn-primary.active.focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wfls-btn-primary:active,.wfls-btn-primary.wfls-active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{background-image:none}.wfls-btn-primary.wfls-disabled,.wfls-btn-primary[disabled],.wfls-btn-primary[readonly],fieldset[disabled] .wfls-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}.wfls-btn-primary.wfls-disabled:hover,.wfls-btn-primary.wfls-disabled:focus,.wfls-btn-primary.wfls-disabled.wfls-focus,.wfls-btn-primary[disabled]:hover,.wfls-btn-primary[disabled]:focus,.wfls-btn-primary[disabled].wfls-focus,.wfls-btn-primary[readonly]:hover,.wfls-btn-primary[readonly]:focus,.wfls-btn-primary[readonly].wfls-focus,fieldset[disabled] .wfls-btn-primary:hover,fieldset[disabled] .wfls-btn-primary:focus,fieldset[disabled] .wfls-btn-primary.wfls-focus{background-color:#00709e;border-color:#005e85}.wfls-btn-primary .wfls-badge{color:#00709e;background-color:#fff}.wfls-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success:focus,.wfls-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wfls-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active,.wfls-btn-success.active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active:hover,.wfls-btn-success:active:focus,.wfls-btn-success:active.focus,.wfls-btn-success.active:hover,.wfls-btn-success.active:focus,.wfls-btn-success.active.focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wfls-btn-success:active,.wfls-btn-success.wfls-active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{background-image:none}.wfls-btn-success.wfls-disabled,.wfls-btn-success[disabled],.wfls-btn-success[readonly],fieldset[disabled] .wfls-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed;opacity:0.75}.wfls-btn-success.wfls-disabled:hover,.wfls-btn-success.wfls-disabled:focus,.wfls-btn-success.wfls-disabled.wfls-focus,.wfls-btn-success[disabled]:hover,.wfls-btn-success[disabled]:focus,.wfls-btn-success[disabled].wfls-focus,.wfls-btn-success[readonly]:hover,.wfls-btn-success[readonly]:focus,.wfls-btn-success[readonly].wfls-focus,fieldset[disabled] .wfls-btn-success:hover,fieldset[disabled] .wfls-btn-success:focus,fieldset[disabled] .wfls-btn-success.wfls-focus{background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success .wfls-badge{color:#5cb85c;background-color:#fff}.wfls-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info:focus,.wfls-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wfls-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active,.wfls-btn-info.active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active:hover,.wfls-btn-info:active:focus,.wfls-btn-info:active.focus,.wfls-btn-info.active:hover,.wfls-btn-info.active:focus,.wfls-btn-info.active.focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wfls-btn-info:active,.wfls-btn-info.wfls-active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{background-image:none}.wfls-btn-info.wfls-disabled,.wfls-btn-info[disabled],.wfls-btn-info[readonly],fieldset[disabled] .wfls-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed;opacity:0.75}.wfls-btn-info.wfls-disabled:hover,.wfls-btn-info.wfls-disabled:focus,.wfls-btn-info.wfls-disabled.wfls-focus,.wfls-btn-info[disabled]:hover,.wfls-btn-info[disabled]:focus,.wfls-btn-info[disabled].wfls-focus,.wfls-btn-info[readonly]:hover,.wfls-btn-info[readonly]:focus,.wfls-btn-info[readonly].wfls-focus,fieldset[disabled] .wfls-btn-info:hover,fieldset[disabled] .wfls-btn-info:focus,fieldset[disabled] .wfls-btn-info.wfls-focus{background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info .wfls-badge{color:#5bc0de;background-color:#fff}.wfls-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning:focus,.wfls-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wfls-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active,.wfls-btn-warning.active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active:hover,.wfls-btn-warning:active:focus,.wfls-btn-warning:active.focus,.wfls-btn-warning.active:hover,.wfls-btn-warning.active:focus,.wfls-btn-warning.active.focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wfls-btn-warning:active,.wfls-btn-warning.wfls-active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{background-image:none}.wfls-btn-warning.wfls-disabled,.wfls-btn-warning[disabled],.wfls-btn-warning[readonly],fieldset[disabled] .wfls-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed;opacity:0.75}.wfls-btn-warning.wfls-disabled:hover,.wfls-btn-warning.wfls-disabled:focus,.wfls-btn-warning.wfls-disabled.wfls-focus,.wfls-btn-warning[disabled]:hover,.wfls-btn-warning[disabled]:focus,.wfls-btn-warning[disabled].wfls-focus,.wfls-btn-warning[readonly]:hover,.wfls-btn-warning[readonly]:focus,.wfls-btn-warning[readonly].wfls-focus,fieldset[disabled] .wfls-btn-warning:hover,fieldset[disabled] .wfls-btn-warning:focus,fieldset[disabled] .wfls-btn-warning.wfls-focus{background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning .wfls-badge{color:#f0ad4e;background-color:#fff}.wfls-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wfls-btn-danger:focus,.wfls-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wfls-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active,.wfls-btn-danger.active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active:hover,.wfls-btn-danger:active:focus,.wfls-btn-danger:active.focus,.wfls-btn-danger.active:hover,.wfls-btn-danger.active:focus,.wfls-btn-danger.active.focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wfls-btn-danger:active,.wfls-btn-danger.wfls-active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{background-image:none}.wfls-btn-danger.wfls-disabled,.wfls-btn-danger[disabled],.wfls-btn-danger[readonly],fieldset[disabled] .wfls-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed;opacity:0.75}.wfls-btn-danger.wfls-disabled:hover,.wfls-btn-danger.wfls-disabled:focus,.wfls-btn-danger.wfls-disabled.wfls-focus,.wfls-btn-danger[disabled]:hover,.wfls-btn-danger[disabled]:focus,.wfls-btn-danger[disabled].wfls-focus,.wfls-btn-danger[readonly]:hover,.wfls-btn-danger[readonly]:focus,.wfls-btn-danger[readonly].wfls-focus,fieldset[disabled] .wfls-btn-danger:hover,fieldset[disabled] .wfls-btn-danger:focus,fieldset[disabled] .wfls-btn-danger.wfls-focus{background-color:#930000;border-color:#7a0000}.wfls-btn-danger .wfls-badge{color:#930000;background-color:#fff}.wfls-btn-callout{font-weight:600;text-transform:uppercase}.wfls-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wfls-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wfls-btn-link,.wfls-btn-link:active,.wfls-btn-link.wfls-active,.wfls-btn-link[disabled],fieldset[disabled] .wfls-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wfls-btn-link,.wfls-btn-link:hover,.wfls-btn-link:focus,.wfls-btn-link:active{border-color:transparent}.wfls-btn-link:hover,.wfls-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wfls-btn-link[disabled]:hover,.wfls-btn-link[disabled]:focus,fieldset[disabled] .wfls-btn-link:hover,fieldset[disabled] .wfls-btn-link:focus{color:#777;text-decoration:none}.wfls-btn-lg,.wfls-btn-group-lg>.wfls-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-btn-sm,.wfls-btn-group-sm>.wfls-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-xs,.wfls-btn-group-xs>.wfls-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-block{display:block;width:100%}.wfls-btn-block+.wfls-btn-block{margin-top:5px}input[type="submit"].wfls-btn-block,input[type="reset"].wfls-btn-block,input[type="button"].wfls-btn-block{width:100%}.wfls-btn-group,.wfls-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wfls-btn-group>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn{position:relative;float:left}.wfls-btn-group>.wfls-btn:hover,.wfls-btn-group>.wfls-btn:focus,.wfls-btn-group>.wfls-btn:active,.wfls-btn-group>.wfls-btn.wfls-active,.wfls-btn-group-vertical>.wfls-btn:hover,.wfls-btn-group-vertical>.wfls-btn:focus,.wfls-btn-group-vertical>.wfls-btn:active,.wfls-btn-group-vertical>.wfls-btn.wfls-active{z-index:2}.wfls-btn-group .wfls-btn+.wfls-btn,.wfls-btn-group .wfls-btn+.wfls-btn-group,.wfls-btn-group .wfls-btn-group+.wfls-btn,.wfls-btn-group .wfls-btn-group+.wfls-btn-group{margin-left:-1px}.wfls-btn-toolbar{margin-left:-5px}.wfls-btn-toolbar:before,.wfls-btn-toolbar:after{content:" ";display:table}.wfls-btn-toolbar:after{clear:both}.wfls-btn-toolbar .wfls-btn,.wfls-btn-toolbar .wfls-btn-group,.wfls-btn-toolbar .wfls-input-group{float:left}.wfls-btn-toolbar>.wfls-btn,.wfls-btn-toolbar>.wfls-btn-group,.wfls-btn-toolbar>.wfls-input-group{margin-left:5px}.wfls-btn-group>.wfls-btn:not(:first-child):not(:last-child):not(.wfls-dropdown-toggle){border-radius:0}.wfls-btn-group>.wfls-btn:first-child{margin-left:0}.wfls-btn-group>.wfls-btn:first-child:not(:last-child):not(.wfls-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn:last-child:not(:first-child),.wfls-btn-group>.wfls-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group>.wfls-btn-group{float:left}.wfls-btn-group>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group .wfls-dropdown-toggle:active,.wfls-btn-group.wfls-open .wfls-dropdown-toggle{outline:0}.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:8px;padding-right:8px}.wfls-btn-group>.wfls-btn-lg+.wfls-dropdown-toggle,.wfls-btn-group-lg.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:12px;padding-right:12px}.wfls-btn-group.open .wfls-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn-group.open .wfls-dropdown-toggle.wfls-btn-link{-webkit-box-shadow:none;box-shadow:none}.wfls-btn .wfls-caret{margin-left:0}.wfls-btn-lg .wfls-caret,.wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:5px 5px 0;border-bottom-width:0}.wfls-dropup .wfls-btn-lg .wfls-caret,.wfls-dropup .wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:0 5px 5px}.wfls-btn-group-vertical>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{display:block;float:none;width:100%;max-width:100%}.wfls-btn-group-vertical>.wfls-btn-group:before,.wfls-btn-group-vertical>.wfls-btn-group:after{content:" ";display:table}.wfls-btn-group-vertical>.wfls-btn-group:after{clear:both}.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{float:none}.wfls-btn-group-vertical>.wfls-btn+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn+.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn-group{margin-top:-1px;margin-left:0}.wfls-btn-group-vertical>.wfls-btn:not(:first-child):not(:last-child){border-radius:0}.wfls-btn-group-vertical>.wfls-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-btn-group-vertical>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wfls-btn-group-justified>.wfls-btn,.wfls-btn-group-justified>.wfls-btn-group{float:none;display:table-cell;width:1%}.wfls-btn-group-justified>.wfls-btn-group .wfls-btn{width:100%}.wfls-btn-group-justified>.wfls-btn-group .wfls-dropdown-menu{left:auto}[data-toggle="buttons"]>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn input[type="checkbox"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wfls-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wfls-pagination>li{display:inline}.wfls-pagination>li>a,.wfls-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wfls-pagination>li:first-child>a,.wfls-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wfls-pagination>li:last-child>a,.wfls-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-pagination>li>a:hover,.wfls-pagination>li>a:focus,.wfls-pagination>li>span:hover,.wfls-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wfls-pagination>.wfls-active>a,.wfls-pagination>.wfls-active>a:hover,.wfls-pagination>.wfls-active>a:focus,.wfls-pagination>.wfls-active>span,.wfls-pagination>.wfls-active>span:hover,.wfls-pagination>.wfls-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wfls-pagination>.wfls-disabled>span,.wfls-pagination>.wfls-disabled>span:hover,.wfls-pagination>.wfls-disabled>span:focus,.wfls-pagination>.wfls-disabled>a,.wfls-pagination>.wfls-disabled>a:hover,.wfls-pagination>.wfls-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wfls-pagination-lg>li>a,.wfls-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wfls-pagination-lg>li:first-child>a,.wfls-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-pagination-lg>li:last-child>a,.wfls-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-pagination-sm>li>a,.wfls-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wfls-pagination-sm>li:first-child>a,.wfls-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wfls-pagination-sm>li:last-child>a,.wfls-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}#wfls-notices{margin-top:15px}#wfls-notices .wfls-admin-notice{margin-left:0px;margin-right:0px}.wfls-success-text,.wfls-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wfls-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wfls-notice-text{color:#6d798c}.wfls-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wfls-success-text{color:#11967a}.wfls-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wfls-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wfls-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wfls-premium-callout .center{text-align:center;margin:0}.wfls-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}#toplevel_page_WFLS .wp-menu-image img{max-width:16px;max-height:16px}
|
1 |
+
.wfls-clearfix:before,.wfls-clearfix:after{content:" ";display:table}.wfls-clearfix:after{clear:both}.wfls-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wfls-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wfls-btn:focus,.wfls-btn.wfls-focus,.wfls-btn:active:focus,.wfls-btn:active.wfls-focus,.wfls-btn.wfls-active:focus,.wfls-btn.wfls-active.wfls-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wfls-btn:hover,.wfls-btn:focus,.wfls-btn.wfls-focus{color:#00709e;text-decoration:none !important}.wfls-btn:active,.wfls-btn.wfls-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn.wfls-disabled,.wfls-btn[disabled],.wfls-btn[readonly],fieldset[disabled] .wfls-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wfls-btn{text-decoration:none}a.wfls-btn.wfls-disabled,fieldset[disabled] a.wfls-btn{cursor:not-allowed;pointer-events:none}.wfls-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wfls-btn-default:focus,.wfls-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wfls-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active,.wfls-btn-default.active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active:hover,.wfls-btn-default:active:focus,.wfls-btn-default:active.focus,.wfls-btn-default.active:hover,.wfls-btn-default.active:focus,.wfls-btn-default.active.focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wfls-btn-default:active,.wfls-btn-default.wfls-active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{background-image:none}.wfls-btn-default.wfls-disabled,.wfls-btn-default[disabled],.wfls-btn-default[readonly],fieldset[disabled] .wfls-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}.wfls-btn-default.wfls-disabled:hover,.wfls-btn-default.wfls-disabled:focus,.wfls-btn-default.wfls-disabled.wfls-focus,.wfls-btn-default[disabled]:hover,.wfls-btn-default[disabled]:focus,.wfls-btn-default[disabled].wfls-focus,.wfls-btn-default[readonly]:hover,.wfls-btn-default[readonly]:focus,.wfls-btn-default[readonly].wfls-focus,fieldset[disabled] .wfls-btn-default:hover,fieldset[disabled] .wfls-btn-default:focus,fieldset[disabled] .wfls-btn-default.wfls-focus{background-color:#fff;border-color:#00709e}.wfls-btn-default .wfls-badge{color:#fff;background-color:#00709e}.wfls-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wfls-btn-primary:focus,.wfls-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wfls-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active,.wfls-btn-primary.active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active:hover,.wfls-btn-primary:active:focus,.wfls-btn-primary:active.focus,.wfls-btn-primary.active:hover,.wfls-btn-primary.active:focus,.wfls-btn-primary.active.focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wfls-btn-primary:active,.wfls-btn-primary.wfls-active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{background-image:none}.wfls-btn-primary.wfls-disabled,.wfls-btn-primary[disabled],.wfls-btn-primary[readonly],fieldset[disabled] .wfls-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}.wfls-btn-primary.wfls-disabled:hover,.wfls-btn-primary.wfls-disabled:focus,.wfls-btn-primary.wfls-disabled.wfls-focus,.wfls-btn-primary[disabled]:hover,.wfls-btn-primary[disabled]:focus,.wfls-btn-primary[disabled].wfls-focus,.wfls-btn-primary[readonly]:hover,.wfls-btn-primary[readonly]:focus,.wfls-btn-primary[readonly].wfls-focus,fieldset[disabled] .wfls-btn-primary:hover,fieldset[disabled] .wfls-btn-primary:focus,fieldset[disabled] .wfls-btn-primary.wfls-focus{background-color:#00709e;border-color:#005e85}.wfls-btn-primary .wfls-badge{color:#00709e;background-color:#fff}.wfls-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success:focus,.wfls-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wfls-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active,.wfls-btn-success.active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active:hover,.wfls-btn-success:active:focus,.wfls-btn-success:active.focus,.wfls-btn-success.active:hover,.wfls-btn-success.active:focus,.wfls-btn-success.active.focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wfls-btn-success:active,.wfls-btn-success.wfls-active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{background-image:none}.wfls-btn-success.wfls-disabled,.wfls-btn-success[disabled],.wfls-btn-success[readonly],fieldset[disabled] .wfls-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed;opacity:0.75}.wfls-btn-success.wfls-disabled:hover,.wfls-btn-success.wfls-disabled:focus,.wfls-btn-success.wfls-disabled.wfls-focus,.wfls-btn-success[disabled]:hover,.wfls-btn-success[disabled]:focus,.wfls-btn-success[disabled].wfls-focus,.wfls-btn-success[readonly]:hover,.wfls-btn-success[readonly]:focus,.wfls-btn-success[readonly].wfls-focus,fieldset[disabled] .wfls-btn-success:hover,fieldset[disabled] .wfls-btn-success:focus,fieldset[disabled] .wfls-btn-success.wfls-focus{background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success .wfls-badge{color:#5cb85c;background-color:#fff}.wfls-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info:focus,.wfls-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wfls-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active,.wfls-btn-info.active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active:hover,.wfls-btn-info:active:focus,.wfls-btn-info:active.focus,.wfls-btn-info.active:hover,.wfls-btn-info.active:focus,.wfls-btn-info.active.focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wfls-btn-info:active,.wfls-btn-info.wfls-active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{background-image:none}.wfls-btn-info.wfls-disabled,.wfls-btn-info[disabled],.wfls-btn-info[readonly],fieldset[disabled] .wfls-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed;opacity:0.75}.wfls-btn-info.wfls-disabled:hover,.wfls-btn-info.wfls-disabled:focus,.wfls-btn-info.wfls-disabled.wfls-focus,.wfls-btn-info[disabled]:hover,.wfls-btn-info[disabled]:focus,.wfls-btn-info[disabled].wfls-focus,.wfls-btn-info[readonly]:hover,.wfls-btn-info[readonly]:focus,.wfls-btn-info[readonly].wfls-focus,fieldset[disabled] .wfls-btn-info:hover,fieldset[disabled] .wfls-btn-info:focus,fieldset[disabled] .wfls-btn-info.wfls-focus{background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info .wfls-badge{color:#5bc0de;background-color:#fff}.wfls-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning:focus,.wfls-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wfls-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active,.wfls-btn-warning.active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active:hover,.wfls-btn-warning:active:focus,.wfls-btn-warning:active.focus,.wfls-btn-warning.active:hover,.wfls-btn-warning.active:focus,.wfls-btn-warning.active.focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wfls-btn-warning:active,.wfls-btn-warning.wfls-active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{background-image:none}.wfls-btn-warning.wfls-disabled,.wfls-btn-warning[disabled],.wfls-btn-warning[readonly],fieldset[disabled] .wfls-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed;opacity:0.75}.wfls-btn-warning.wfls-disabled:hover,.wfls-btn-warning.wfls-disabled:focus,.wfls-btn-warning.wfls-disabled.wfls-focus,.wfls-btn-warning[disabled]:hover,.wfls-btn-warning[disabled]:focus,.wfls-btn-warning[disabled].wfls-focus,.wfls-btn-warning[readonly]:hover,.wfls-btn-warning[readonly]:focus,.wfls-btn-warning[readonly].wfls-focus,fieldset[disabled] .wfls-btn-warning:hover,fieldset[disabled] .wfls-btn-warning:focus,fieldset[disabled] .wfls-btn-warning.wfls-focus{background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning .wfls-badge{color:#f0ad4e;background-color:#fff}.wfls-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wfls-btn-danger:focus,.wfls-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wfls-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active,.wfls-btn-danger.active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active:hover,.wfls-btn-danger:active:focus,.wfls-btn-danger:active.focus,.wfls-btn-danger.active:hover,.wfls-btn-danger.active:focus,.wfls-btn-danger.active.focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wfls-btn-danger:active,.wfls-btn-danger.wfls-active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{background-image:none}.wfls-btn-danger.wfls-disabled,.wfls-btn-danger[disabled],.wfls-btn-danger[readonly],fieldset[disabled] .wfls-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed;opacity:0.75}.wfls-btn-danger.wfls-disabled:hover,.wfls-btn-danger.wfls-disabled:focus,.wfls-btn-danger.wfls-disabled.wfls-focus,.wfls-btn-danger[disabled]:hover,.wfls-btn-danger[disabled]:focus,.wfls-btn-danger[disabled].wfls-focus,.wfls-btn-danger[readonly]:hover,.wfls-btn-danger[readonly]:focus,.wfls-btn-danger[readonly].wfls-focus,fieldset[disabled] .wfls-btn-danger:hover,fieldset[disabled] .wfls-btn-danger:focus,fieldset[disabled] .wfls-btn-danger.wfls-focus{background-color:#930000;border-color:#7a0000}.wfls-btn-danger .wfls-badge{color:#930000;background-color:#fff}.wfls-btn-callout{font-weight:600;text-transform:uppercase}.wfls-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wfls-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wfls-btn-link,.wfls-btn-link:active,.wfls-btn-link.wfls-active,.wfls-btn-link[disabled],fieldset[disabled] .wfls-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wfls-btn-link,.wfls-btn-link:hover,.wfls-btn-link:focus,.wfls-btn-link:active{border-color:transparent}.wfls-btn-link:hover,.wfls-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wfls-btn-link[disabled]:hover,.wfls-btn-link[disabled]:focus,fieldset[disabled] .wfls-btn-link:hover,fieldset[disabled] .wfls-btn-link:focus{color:#777;text-decoration:none}.wfls-btn-lg,.wfls-btn-group-lg>.wfls-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-btn-sm,.wfls-btn-group-sm>.wfls-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-xs,.wfls-btn-group-xs>.wfls-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-block{display:block;width:100%}.wfls-btn-block+.wfls-btn-block{margin-top:5px}input[type="submit"].wfls-btn-block,input[type="reset"].wfls-btn-block,input[type="button"].wfls-btn-block{width:100%}.wfls-btn-group,.wfls-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wfls-btn-group>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn{position:relative;float:left}.wfls-btn-group>.wfls-btn:hover,.wfls-btn-group>.wfls-btn:focus,.wfls-btn-group>.wfls-btn:active,.wfls-btn-group>.wfls-btn.wfls-active,.wfls-btn-group-vertical>.wfls-btn:hover,.wfls-btn-group-vertical>.wfls-btn:focus,.wfls-btn-group-vertical>.wfls-btn:active,.wfls-btn-group-vertical>.wfls-btn.wfls-active{z-index:2}.wfls-btn-group .wfls-btn+.wfls-btn,.wfls-btn-group .wfls-btn+.wfls-btn-group,.wfls-btn-group .wfls-btn-group+.wfls-btn,.wfls-btn-group .wfls-btn-group+.wfls-btn-group{margin-left:-1px}.wfls-btn-toolbar{margin-left:-5px}.wfls-btn-toolbar:before,.wfls-btn-toolbar:after{content:" ";display:table}.wfls-btn-toolbar:after{clear:both}.wfls-btn-toolbar .wfls-btn,.wfls-btn-toolbar .wfls-btn-group,.wfls-btn-toolbar .wfls-input-group{float:left}.wfls-btn-toolbar>.wfls-btn,.wfls-btn-toolbar>.wfls-btn-group,.wfls-btn-toolbar>.wfls-input-group{margin-left:5px}.wfls-btn-group>.wfls-btn:not(:first-child):not(:last-child):not(.wfls-dropdown-toggle){border-radius:0}.wfls-btn-group>.wfls-btn:first-child{margin-left:0}.wfls-btn-group>.wfls-btn:first-child:not(:last-child):not(.wfls-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn:last-child:not(:first-child),.wfls-btn-group>.wfls-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group>.wfls-btn-group{float:left}.wfls-btn-group>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group .wfls-dropdown-toggle:active,.wfls-btn-group.wfls-open .wfls-dropdown-toggle{outline:0}.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:8px;padding-right:8px}.wfls-btn-group>.wfls-btn-lg+.wfls-dropdown-toggle,.wfls-btn-group-lg.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:12px;padding-right:12px}.wfls-btn-group.open .wfls-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn-group.open .wfls-dropdown-toggle.wfls-btn-link{-webkit-box-shadow:none;box-shadow:none}.wfls-btn .wfls-caret{margin-left:0}.wfls-btn-lg .wfls-caret,.wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:5px 5px 0;border-bottom-width:0}.wfls-dropup .wfls-btn-lg .wfls-caret,.wfls-dropup .wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:0 5px 5px}.wfls-btn-group-vertical>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{display:block;float:none;width:100%;max-width:100%}.wfls-btn-group-vertical>.wfls-btn-group:before,.wfls-btn-group-vertical>.wfls-btn-group:after{content:" ";display:table}.wfls-btn-group-vertical>.wfls-btn-group:after{clear:both}.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{float:none}.wfls-btn-group-vertical>.wfls-btn+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn+.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn-group{margin-top:-1px;margin-left:0}.wfls-btn-group-vertical>.wfls-btn:not(:first-child):not(:last-child){border-radius:0}.wfls-btn-group-vertical>.wfls-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-btn-group-vertical>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wfls-btn-group-justified>.wfls-btn,.wfls-btn-group-justified>.wfls-btn-group{float:none;display:table-cell;width:1%}.wfls-btn-group-justified>.wfls-btn-group .wfls-btn{width:100%}.wfls-btn-group-justified>.wfls-btn-group .wfls-dropdown-menu{left:auto}[data-toggle="buttons"]>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn input[type="checkbox"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wfls-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wfls-pagination>li{display:inline}.wfls-pagination>li>a,.wfls-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wfls-pagination>li:first-child>a,.wfls-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wfls-pagination>li:last-child>a,.wfls-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-pagination>li>a:hover,.wfls-pagination>li>a:focus,.wfls-pagination>li>span:hover,.wfls-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wfls-pagination>.wfls-active>a,.wfls-pagination>.wfls-active>a:hover,.wfls-pagination>.wfls-active>a:focus,.wfls-pagination>.wfls-active>span,.wfls-pagination>.wfls-active>span:hover,.wfls-pagination>.wfls-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wfls-pagination>.wfls-disabled>span,.wfls-pagination>.wfls-disabled>span:hover,.wfls-pagination>.wfls-disabled>span:focus,.wfls-pagination>.wfls-disabled>a,.wfls-pagination>.wfls-disabled>a:hover,.wfls-pagination>.wfls-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wfls-pagination-lg>li>a,.wfls-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wfls-pagination-lg>li:first-child>a,.wfls-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-pagination-lg>li:last-child>a,.wfls-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-pagination-sm>li>a,.wfls-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wfls-pagination-sm>li:first-child>a,.wfls-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wfls-pagination-sm>li:last-child>a,.wfls-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}#wfls-notices{margin-top:15px}#wfls-notices .wfls-admin-notice{margin-left:0px;margin-right:0px}.wfls-success-text,.wfls-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wfls-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wfls-notice-text{color:#6d798c}.wfls-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wfls-success-text{color:#11967a}.wfls-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wfls-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wfls-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wfls-premium-callout .center{text-align:center;margin:0}.wfls-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}small.wfls-sub-status{display:block}.wfls-grace-period-container{display:flex;align-items:center;justify-content:left;margin-bottom:1rem;margin-top:1rem}.wfls-grace-period-container .wfls-grace-period-input-container{margin-right:1.5rem;text-align:center}.wfls-grace-period-container .wfls-grace-period-input-container label{display:block;font-weight:bold}.wfls-grace-period-container .wfls-grace-period-input-container input{width:3em;text-align:center}#wfls-reset-grace-period-failed{text-align:center}#toplevel_page_WFLS .wp-menu-image img{max-width:16px;max-height:16px}
|
modules/login-security/css/admin.1623076348.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.wfls-clearfix:before,.wfls-clearfix:after{content:" ";display:table}.wfls-clearfix:after{clear:both}.wfls-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wfls-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wfls-btn:focus,.wfls-btn.wfls-focus,.wfls-btn:active:focus,.wfls-btn:active.wfls-focus,.wfls-btn.wfls-active:focus,.wfls-btn.wfls-active.wfls-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wfls-btn:hover,.wfls-btn:focus,.wfls-btn.wfls-focus{color:#00709e;text-decoration:none !important}.wfls-btn:active,.wfls-btn.wfls-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn.wfls-disabled,.wfls-btn[disabled],.wfls-btn[readonly],fieldset[disabled] .wfls-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wfls-btn{text-decoration:none}a.wfls-btn.wfls-disabled,fieldset[disabled] a.wfls-btn{cursor:not-allowed;pointer-events:none}.wfls-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wfls-btn-default:focus,.wfls-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wfls-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active,.wfls-btn-default.active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active:hover,.wfls-btn-default:active:focus,.wfls-btn-default:active.focus,.wfls-btn-default.active:hover,.wfls-btn-default.active:focus,.wfls-btn-default.active.focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wfls-btn-default:active,.wfls-btn-default.wfls-active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{background-image:none}.wfls-btn-default.wfls-disabled,.wfls-btn-default[disabled],.wfls-btn-default[readonly],fieldset[disabled] .wfls-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}.wfls-btn-default.wfls-disabled:hover,.wfls-btn-default.wfls-disabled:focus,.wfls-btn-default.wfls-disabled.wfls-focus,.wfls-btn-default[disabled]:hover,.wfls-btn-default[disabled]:focus,.wfls-btn-default[disabled].wfls-focus,.wfls-btn-default[readonly]:hover,.wfls-btn-default[readonly]:focus,.wfls-btn-default[readonly].wfls-focus,fieldset[disabled] .wfls-btn-default:hover,fieldset[disabled] .wfls-btn-default:focus,fieldset[disabled] .wfls-btn-default.wfls-focus{background-color:#fff;border-color:#00709e}.wfls-btn-default .wfls-badge{color:#fff;background-color:#00709e}.wfls-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wfls-btn-primary:focus,.wfls-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wfls-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active,.wfls-btn-primary.active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active:hover,.wfls-btn-primary:active:focus,.wfls-btn-primary:active.focus,.wfls-btn-primary.active:hover,.wfls-btn-primary.active:focus,.wfls-btn-primary.active.focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wfls-btn-primary:active,.wfls-btn-primary.wfls-active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{background-image:none}.wfls-btn-primary.wfls-disabled,.wfls-btn-primary[disabled],.wfls-btn-primary[readonly],fieldset[disabled] .wfls-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}.wfls-btn-primary.wfls-disabled:hover,.wfls-btn-primary.wfls-disabled:focus,.wfls-btn-primary.wfls-disabled.wfls-focus,.wfls-btn-primary[disabled]:hover,.wfls-btn-primary[disabled]:focus,.wfls-btn-primary[disabled].wfls-focus,.wfls-btn-primary[readonly]:hover,.wfls-btn-primary[readonly]:focus,.wfls-btn-primary[readonly].wfls-focus,fieldset[disabled] .wfls-btn-primary:hover,fieldset[disabled] .wfls-btn-primary:focus,fieldset[disabled] .wfls-btn-primary.wfls-focus{background-color:#00709e;border-color:#005e85}.wfls-btn-primary .wfls-badge{color:#00709e;background-color:#fff}.wfls-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success:focus,.wfls-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wfls-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active,.wfls-btn-success.active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active:hover,.wfls-btn-success:active:focus,.wfls-btn-success:active.focus,.wfls-btn-success.active:hover,.wfls-btn-success.active:focus,.wfls-btn-success.active.focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wfls-btn-success:active,.wfls-btn-success.wfls-active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{background-image:none}.wfls-btn-success.wfls-disabled,.wfls-btn-success[disabled],.wfls-btn-success[readonly],fieldset[disabled] .wfls-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed;opacity:0.75}.wfls-btn-success.wfls-disabled:hover,.wfls-btn-success.wfls-disabled:focus,.wfls-btn-success.wfls-disabled.wfls-focus,.wfls-btn-success[disabled]:hover,.wfls-btn-success[disabled]:focus,.wfls-btn-success[disabled].wfls-focus,.wfls-btn-success[readonly]:hover,.wfls-btn-success[readonly]:focus,.wfls-btn-success[readonly].wfls-focus,fieldset[disabled] .wfls-btn-success:hover,fieldset[disabled] .wfls-btn-success:focus,fieldset[disabled] .wfls-btn-success.wfls-focus{background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success .wfls-badge{color:#5cb85c;background-color:#fff}.wfls-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info:focus,.wfls-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wfls-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active,.wfls-btn-info.active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active:hover,.wfls-btn-info:active:focus,.wfls-btn-info:active.focus,.wfls-btn-info.active:hover,.wfls-btn-info.active:focus,.wfls-btn-info.active.focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wfls-btn-info:active,.wfls-btn-info.wfls-active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{background-image:none}.wfls-btn-info.wfls-disabled,.wfls-btn-info[disabled],.wfls-btn-info[readonly],fieldset[disabled] .wfls-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed;opacity:0.75}.wfls-btn-info.wfls-disabled:hover,.wfls-btn-info.wfls-disabled:focus,.wfls-btn-info.wfls-disabled.wfls-focus,.wfls-btn-info[disabled]:hover,.wfls-btn-info[disabled]:focus,.wfls-btn-info[disabled].wfls-focus,.wfls-btn-info[readonly]:hover,.wfls-btn-info[readonly]:focus,.wfls-btn-info[readonly].wfls-focus,fieldset[disabled] .wfls-btn-info:hover,fieldset[disabled] .wfls-btn-info:focus,fieldset[disabled] .wfls-btn-info.wfls-focus{background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info .wfls-badge{color:#5bc0de;background-color:#fff}.wfls-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning:focus,.wfls-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wfls-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active,.wfls-btn-warning.active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active:hover,.wfls-btn-warning:active:focus,.wfls-btn-warning:active.focus,.wfls-btn-warning.active:hover,.wfls-btn-warning.active:focus,.wfls-btn-warning.active.focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wfls-btn-warning:active,.wfls-btn-warning.wfls-active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{background-image:none}.wfls-btn-warning.wfls-disabled,.wfls-btn-warning[disabled],.wfls-btn-warning[readonly],fieldset[disabled] .wfls-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed;opacity:0.75}.wfls-btn-warning.wfls-disabled:hover,.wfls-btn-warning.wfls-disabled:focus,.wfls-btn-warning.wfls-disabled.wfls-focus,.wfls-btn-warning[disabled]:hover,.wfls-btn-warning[disabled]:focus,.wfls-btn-warning[disabled].wfls-focus,.wfls-btn-warning[readonly]:hover,.wfls-btn-warning[readonly]:focus,.wfls-btn-warning[readonly].wfls-focus,fieldset[disabled] .wfls-btn-warning:hover,fieldset[disabled] .wfls-btn-warning:focus,fieldset[disabled] .wfls-btn-warning.wfls-focus{background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning .wfls-badge{color:#f0ad4e;background-color:#fff}.wfls-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wfls-btn-danger:focus,.wfls-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wfls-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active,.wfls-btn-danger.active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active:hover,.wfls-btn-danger:active:focus,.wfls-btn-danger:active.focus,.wfls-btn-danger.active:hover,.wfls-btn-danger.active:focus,.wfls-btn-danger.active.focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wfls-btn-danger:active,.wfls-btn-danger.wfls-active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{background-image:none}.wfls-btn-danger.wfls-disabled,.wfls-btn-danger[disabled],.wfls-btn-danger[readonly],fieldset[disabled] .wfls-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed;opacity:0.75}.wfls-btn-danger.wfls-disabled:hover,.wfls-btn-danger.wfls-disabled:focus,.wfls-btn-danger.wfls-disabled.wfls-focus,.wfls-btn-danger[disabled]:hover,.wfls-btn-danger[disabled]:focus,.wfls-btn-danger[disabled].wfls-focus,.wfls-btn-danger[readonly]:hover,.wfls-btn-danger[readonly]:focus,.wfls-btn-danger[readonly].wfls-focus,fieldset[disabled] .wfls-btn-danger:hover,fieldset[disabled] .wfls-btn-danger:focus,fieldset[disabled] .wfls-btn-danger.wfls-focus{background-color:#930000;border-color:#7a0000}.wfls-btn-danger .wfls-badge{color:#930000;background-color:#fff}.wfls-btn-callout{font-weight:600;text-transform:uppercase}.wfls-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wfls-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wfls-btn-link,.wfls-btn-link:active,.wfls-btn-link.wfls-active,.wfls-btn-link[disabled],fieldset[disabled] .wfls-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wfls-btn-link,.wfls-btn-link:hover,.wfls-btn-link:focus,.wfls-btn-link:active{border-color:transparent}.wfls-btn-link:hover,.wfls-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wfls-btn-link[disabled]:hover,.wfls-btn-link[disabled]:focus,fieldset[disabled] .wfls-btn-link:hover,fieldset[disabled] .wfls-btn-link:focus{color:#777;text-decoration:none}.wfls-btn-lg,.wfls-btn-group-lg>.wfls-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-btn-sm,.wfls-btn-group-sm>.wfls-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-xs,.wfls-btn-group-xs>.wfls-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-block{display:block;width:100%}.wfls-btn-block+.wfls-btn-block{margin-top:5px}input[type="submit"].wfls-btn-block,input[type="reset"].wfls-btn-block,input[type="button"].wfls-btn-block{width:100%}.wfls-btn-group,.wfls-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wfls-btn-group>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn{position:relative;float:left}.wfls-btn-group>.wfls-btn:hover,.wfls-btn-group>.wfls-btn:focus,.wfls-btn-group>.wfls-btn:active,.wfls-btn-group>.wfls-btn.wfls-active,.wfls-btn-group-vertical>.wfls-btn:hover,.wfls-btn-group-vertical>.wfls-btn:focus,.wfls-btn-group-vertical>.wfls-btn:active,.wfls-btn-group-vertical>.wfls-btn.wfls-active{z-index:2}.wfls-btn-group .wfls-btn+.wfls-btn,.wfls-btn-group .wfls-btn+.wfls-btn-group,.wfls-btn-group .wfls-btn-group+.wfls-btn,.wfls-btn-group .wfls-btn-group+.wfls-btn-group{margin-left:-1px}.wfls-btn-toolbar{margin-left:-5px}.wfls-btn-toolbar:before,.wfls-btn-toolbar:after{content:" ";display:table}.wfls-btn-toolbar:after{clear:both}.wfls-btn-toolbar .wfls-btn,.wfls-btn-toolbar .wfls-btn-group,.wfls-btn-toolbar .wfls-input-group{float:left}.wfls-btn-toolbar>.wfls-btn,.wfls-btn-toolbar>.wfls-btn-group,.wfls-btn-toolbar>.wfls-input-group{margin-left:5px}.wfls-btn-group>.wfls-btn:not(:first-child):not(:last-child):not(.wfls-dropdown-toggle){border-radius:0}.wfls-btn-group>.wfls-btn:first-child{margin-left:0}.wfls-btn-group>.wfls-btn:first-child:not(:last-child):not(.wfls-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn:last-child:not(:first-child),.wfls-btn-group>.wfls-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group>.wfls-btn-group{float:left}.wfls-btn-group>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group .wfls-dropdown-toggle:active,.wfls-btn-group.wfls-open .wfls-dropdown-toggle{outline:0}.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:8px;padding-right:8px}.wfls-btn-group>.wfls-btn-lg+.wfls-dropdown-toggle,.wfls-btn-group-lg.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:12px;padding-right:12px}.wfls-btn-group.open .wfls-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn-group.open .wfls-dropdown-toggle.wfls-btn-link{-webkit-box-shadow:none;box-shadow:none}.wfls-btn .wfls-caret{margin-left:0}.wfls-btn-lg .wfls-caret,.wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:5px 5px 0;border-bottom-width:0}.wfls-dropup .wfls-btn-lg .wfls-caret,.wfls-dropup .wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:0 5px 5px}.wfls-btn-group-vertical>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{display:block;float:none;width:100%;max-width:100%}.wfls-btn-group-vertical>.wfls-btn-group:before,.wfls-btn-group-vertical>.wfls-btn-group:after{content:" ";display:table}.wfls-btn-group-vertical>.wfls-btn-group:after{clear:both}.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{float:none}.wfls-btn-group-vertical>.wfls-btn+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn+.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn-group{margin-top:-1px;margin-left:0}.wfls-btn-group-vertical>.wfls-btn:not(:first-child):not(:last-child){border-radius:0}.wfls-btn-group-vertical>.wfls-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-btn-group-vertical>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wfls-btn-group-justified>.wfls-btn,.wfls-btn-group-justified>.wfls-btn-group{float:none;display:table-cell;width:1%}.wfls-btn-group-justified>.wfls-btn-group .wfls-btn{width:100%}.wfls-btn-group-justified>.wfls-btn-group .wfls-dropdown-menu{left:auto}[data-toggle="buttons"]>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn input[type="checkbox"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wfls-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wfls-pagination>li{display:inline}.wfls-pagination>li>a,.wfls-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wfls-pagination>li:first-child>a,.wfls-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wfls-pagination>li:last-child>a,.wfls-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-pagination>li>a:hover,.wfls-pagination>li>a:focus,.wfls-pagination>li>span:hover,.wfls-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wfls-pagination>.wfls-active>a,.wfls-pagination>.wfls-active>a:hover,.wfls-pagination>.wfls-active>a:focus,.wfls-pagination>.wfls-active>span,.wfls-pagination>.wfls-active>span:hover,.wfls-pagination>.wfls-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wfls-pagination>.wfls-disabled>span,.wfls-pagination>.wfls-disabled>span:hover,.wfls-pagination>.wfls-disabled>span:focus,.wfls-pagination>.wfls-disabled>a,.wfls-pagination>.wfls-disabled>a:hover,.wfls-pagination>.wfls-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wfls-pagination-lg>li>a,.wfls-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wfls-pagination-lg>li:first-child>a,.wfls-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-pagination-lg>li:last-child>a,.wfls-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-pagination-sm>li>a,.wfls-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wfls-pagination-sm>li:first-child>a,.wfls-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wfls-pagination-sm>li:last-child>a,.wfls-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}@-ms-viewport{width:device-width}.wfls-visible-xs{display:none !important}.wfls-visible-sm{display:none !important}.wfls-visible-md{display:none !important}.wfls-visible-lg{display:none !important}.wfls-visible-xs-block,.wfls-visible-xs-inline,.wfls-visible-xs-inline-block,.wfls-visible-sm-block,.wfls-visible-sm-inline,.wfls-visible-sm-inline-block,.wfls-visible-md-block,.wfls-visible-md-inline,.wfls-visible-md-inline-block,.wfls-visible-lg-block,.wfls-visible-lg-inline,.wfls-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wfls-visible-xs{display:block !important}table.wfls-visible-xs{display:table !important}tr.wfls-visible-xs{display:table-row !important}th.wfls-visible-xs,td.wfls-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wfls-visible-xs-block{display:block !important}}@media (max-width: 767px){.wfls-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wfls-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm{display:block !important}table.wfls-visible-sm{display:table !important}tr.wfls-visible-sm{display:table-row !important}th.wfls-visible-sm,td.wfls-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md{display:block !important}table.wfls-visible-md{display:table !important}tr.wfls-visible-md{display:table-row !important}th.wfls-visible-md,td.wfls-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wfls-visible-lg{display:block !important}table.wfls-visible-lg{display:table !important}tr.wfls-visible-lg{display:table-row !important}th.wfls-visible-lg,td.wfls-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wfls-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wfls-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wfls-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wfls-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-hidden-md{display:none !important}}@media (min-width: 1200px){.wfls-hidden-lg{display:none !important}}.wfls-visible-print{display:none !important}@media print{.wfls-visible-print{display:block !important}table.wfls-visible-print{display:table !important}tr.wfls-visible-print{display:table-row !important}th.wfls-visible-print,td.wfls-visible-print{display:table-cell !important}}.wfls-visible-print-block{display:none !important}@media print{.wfls-visible-print-block{display:block !important}}.wfls-visible-print-inline{display:none !important}@media print{.wfls-visible-print-inline{display:inline !important}}.wfls-visible-print-inline-block{display:none !important}@media print{.wfls-visible-print-inline-block{display:inline-block !important}}@media print{.wfls-hidden-print{display:none !important}}.wfls-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wfls-container:before,.wfls-container:after{content:" ";display:table}.wfls-container:after{clear:both}@media (min-width: 768px){.wfls-container{width:750px}}@media (min-width: 992px){.wfls-container{width:970px}}@media (min-width: 1200px){.wfls-container{width:1170px}}.wfls-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wfls-container-fluid:before,.wfls-container-fluid:after{content:" ";display:table}.wfls-container-fluid:after{clear:both}.wfls-row{margin-left:-15px;margin-right:-15px}.wfls-row:before,.wfls-row:after{content:" ";display:table}.wfls-row:after{clear:both}.wfls-col-xs-1,.wfls-col-sm-1,.wfls-col-md-1,.wfls-col-lg-1,.wfls-col-xs-2,.wfls-col-sm-2,.wfls-col-md-2,.wfls-col-lg-2,.wfls-col-xs-3,.wfls-col-sm-3,.wfls-col-md-3,.wfls-col-lg-3,.wfls-col-xs-4,.wfls-col-sm-4,.wfls-col-md-4,.wfls-col-lg-4,.wfls-col-xs-5,.wfls-col-sm-5,.wfls-col-md-5,.wfls-col-lg-5,.wfls-col-xs-6,.wfls-col-sm-6,.wfls-col-md-6,.wfls-col-lg-6,.wfls-col-xs-7,.wfls-col-sm-7,.wfls-col-md-7,.wfls-col-lg-7,.wfls-col-xs-8,.wfls-col-sm-8,.wfls-col-md-8,.wfls-col-lg-8,.wfls-col-xs-9,.wfls-col-sm-9,.wfls-col-md-9,.wfls-col-lg-9,.wfls-col-xs-10,.wfls-col-sm-10,.wfls-col-md-10,.wfls-col-lg-10,.wfls-col-xs-11,.wfls-col-sm-11,.wfls-col-md-11,.wfls-col-lg-11,.wfls-col-xs-12,.wfls-col-sm-12,.wfls-col-md-12,.wfls-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wfls-col-xs-1,.wfls-col-xs-2,.wfls-col-xs-3,.wfls-col-xs-4,.wfls-col-xs-5,.wfls-col-xs-6,.wfls-col-xs-7,.wfls-col-xs-8,.wfls-col-xs-9,.wfls-col-xs-10,.wfls-col-xs-11,.wfls-col-xs-12{float:left}.wfls-col-xs-1{width:8.33333%}.wfls-col-xs-2{width:16.66667%}.wfls-col-xs-3{width:25%}.wfls-col-xs-4{width:33.33333%}.wfls-col-xs-5{width:41.66667%}.wfls-col-xs-6{width:50%}.wfls-col-xs-7{width:58.33333%}.wfls-col-xs-8{width:66.66667%}.wfls-col-xs-9{width:75%}.wfls-col-xs-10{width:83.33333%}.wfls-col-xs-11{width:91.66667%}.wfls-col-xs-12{width:100%}.wfls-col-xs-pull-0{right:auto}.wfls-col-xs-pull-1{right:8.33333%}.wfls-col-xs-pull-2{right:16.66667%}.wfls-col-xs-pull-3{right:25%}.wfls-col-xs-pull-4{right:33.33333%}.wfls-col-xs-pull-5{right:41.66667%}.wfls-col-xs-pull-6{right:50%}.wfls-col-xs-pull-7{right:58.33333%}.wfls-col-xs-pull-8{right:66.66667%}.wfls-col-xs-pull-9{right:75%}.wfls-col-xs-pull-10{right:83.33333%}.wfls-col-xs-pull-11{right:91.66667%}.wfls-col-xs-pull-12{right:100%}.wfls-col-xs-push-0{left:auto}.wfls-col-xs-push-1{left:8.33333%}.wfls-col-xs-push-2{left:16.66667%}.wfls-col-xs-push-3{left:25%}.wfls-col-xs-push-4{left:33.33333%}.wfls-col-xs-push-5{left:41.66667%}.wfls-col-xs-push-6{left:50%}.wfls-col-xs-push-7{left:58.33333%}.wfls-col-xs-push-8{left:66.66667%}.wfls-col-xs-push-9{left:75%}.wfls-col-xs-push-10{left:83.33333%}.wfls-col-xs-push-11{left:91.66667%}.wfls-col-xs-push-12{left:100%}.wfls-col-xs-offset-0{margin-left:0%}.wfls-col-xs-offset-1{margin-left:8.33333%}.wfls-col-xs-offset-2{margin-left:16.66667%}.wfls-col-xs-offset-3{margin-left:25%}.wfls-col-xs-offset-4{margin-left:33.33333%}.wfls-col-xs-offset-5{margin-left:41.66667%}.wfls-col-xs-offset-6{margin-left:50%}.wfls-col-xs-offset-7{margin-left:58.33333%}.wfls-col-xs-offset-8{margin-left:66.66667%}.wfls-col-xs-offset-9{margin-left:75%}.wfls-col-xs-offset-10{margin-left:83.33333%}.wfls-col-xs-offset-11{margin-left:91.66667%}.wfls-col-xs-offset-12{margin-left:100%}.wfls-col-xs-half-padding-left{padding-left:8px}.wfls-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wfls-col-sm-1,.wfls-col-sm-2,.wfls-col-sm-3,.wfls-col-sm-4,.wfls-col-sm-5,.wfls-col-sm-6,.wfls-col-sm-7,.wfls-col-sm-8,.wfls-col-sm-9,.wfls-col-sm-10,.wfls-col-sm-11,.wfls-col-sm-12{float:left}.wfls-col-sm-1{width:8.33333%}.wfls-col-sm-2{width:16.66667%}.wfls-col-sm-3{width:25%}.wfls-col-sm-4{width:33.33333%}.wfls-col-sm-5{width:41.66667%}.wfls-col-sm-6{width:50%}.wfls-col-sm-7{width:58.33333%}.wfls-col-sm-8{width:66.66667%}.wfls-col-sm-9{width:75%}.wfls-col-sm-10{width:83.33333%}.wfls-col-sm-11{width:91.66667%}.wfls-col-sm-12{width:100%}.wfls-col-sm-pull-0{right:auto}.wfls-col-sm-pull-1{right:8.33333%}.wfls-col-sm-pull-2{right:16.66667%}.wfls-col-sm-pull-3{right:25%}.wfls-col-sm-pull-4{right:33.33333%}.wfls-col-sm-pull-5{right:41.66667%}.wfls-col-sm-pull-6{right:50%}.wfls-col-sm-pull-7{right:58.33333%}.wfls-col-sm-pull-8{right:66.66667%}.wfls-col-sm-pull-9{right:75%}.wfls-col-sm-pull-10{right:83.33333%}.wfls-col-sm-pull-11{right:91.66667%}.wfls-col-sm-pull-12{right:100%}.wfls-col-sm-push-0{left:auto}.wfls-col-sm-push-1{left:8.33333%}.wfls-col-sm-push-2{left:16.66667%}.wfls-col-sm-push-3{left:25%}.wfls-col-sm-push-4{left:33.33333%}.wfls-col-sm-push-5{left:41.66667%}.wfls-col-sm-push-6{left:50%}.wfls-col-sm-push-7{left:58.33333%}.wfls-col-sm-push-8{left:66.66667%}.wfls-col-sm-push-9{left:75%}.wfls-col-sm-push-10{left:83.33333%}.wfls-col-sm-push-11{left:91.66667%}.wfls-col-sm-push-12{left:100%}.wfls-col-sm-offset-0{margin-left:0%}.wfls-col-sm-offset-1{margin-left:8.33333%}.wfls-col-sm-offset-2{margin-left:16.66667%}.wfls-col-sm-offset-3{margin-left:25%}.wfls-col-sm-offset-4{margin-left:33.33333%}.wfls-col-sm-offset-5{margin-left:41.66667%}.wfls-col-sm-offset-6{margin-left:50%}.wfls-col-sm-offset-7{margin-left:58.33333%}.wfls-col-sm-offset-8{margin-left:66.66667%}.wfls-col-sm-offset-9{margin-left:75%}.wfls-col-sm-offset-10{margin-left:83.33333%}.wfls-col-sm-offset-11{margin-left:91.66667%}.wfls-col-sm-offset-12{margin-left:100%}.wfls-col-sm-half-padding-left{padding-left:8px}.wfls-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wfls-col-md-1,.wfls-col-md-2,.wfls-col-md-3,.wfls-col-md-4,.wfls-col-md-5,.wfls-col-md-6,.wfls-col-md-7,.wfls-col-md-8,.wfls-col-md-9,.wfls-col-md-10,.wfls-col-md-11,.wfls-col-md-12{float:left}.wfls-col-md-1{width:8.33333%}.wfls-col-md-2{width:16.66667%}.wfls-col-md-3{width:25%}.wfls-col-md-4{width:33.33333%}.wfls-col-md-5{width:41.66667%}.wfls-col-md-6{width:50%}.wfls-col-md-7{width:58.33333%}.wfls-col-md-8{width:66.66667%}.wfls-col-md-9{width:75%}.wfls-col-md-10{width:83.33333%}.wfls-col-md-11{width:91.66667%}.wfls-col-md-12{width:100%}.wfls-col-md-pull-0{right:auto}.wfls-col-md-pull-1{right:8.33333%}.wfls-col-md-pull-2{right:16.66667%}.wfls-col-md-pull-3{right:25%}.wfls-col-md-pull-4{right:33.33333%}.wfls-col-md-pull-5{right:41.66667%}.wfls-col-md-pull-6{right:50%}.wfls-col-md-pull-7{right:58.33333%}.wfls-col-md-pull-8{right:66.66667%}.wfls-col-md-pull-9{right:75%}.wfls-col-md-pull-10{right:83.33333%}.wfls-col-md-pull-11{right:91.66667%}.wfls-col-md-pull-12{right:100%}.wfls-col-md-push-0{left:auto}.wfls-col-md-push-1{left:8.33333%}.wfls-col-md-push-2{left:16.66667%}.wfls-col-md-push-3{left:25%}.wfls-col-md-push-4{left:33.33333%}.wfls-col-md-push-5{left:41.66667%}.wfls-col-md-push-6{left:50%}.wfls-col-md-push-7{left:58.33333%}.wfls-col-md-push-8{left:66.66667%}.wfls-col-md-push-9{left:75%}.wfls-col-md-push-10{left:83.33333%}.wfls-col-md-push-11{left:91.66667%}.wfls-col-md-push-12{left:100%}.wfls-col-md-offset-0{margin-left:0%}.wfls-col-md-offset-1{margin-left:8.33333%}.wfls-col-md-offset-2{margin-left:16.66667%}.wfls-col-md-offset-3{margin-left:25%}.wfls-col-md-offset-4{margin-left:33.33333%}.wfls-col-md-offset-5{margin-left:41.66667%}.wfls-col-md-offset-6{margin-left:50%}.wfls-col-md-offset-7{margin-left:58.33333%}.wfls-col-md-offset-8{margin-left:66.66667%}.wfls-col-md-offset-9{margin-left:75%}.wfls-col-md-offset-10{margin-left:83.33333%}.wfls-col-md-offset-11{margin-left:91.66667%}.wfls-col-md-offset-12{margin-left:100%}.wfls-col-md-half-padding-left{padding-left:8px}.wfls-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wfls-col-lg-1,.wfls-col-lg-2,.wfls-col-lg-3,.wfls-col-lg-4,.wfls-col-lg-5,.wfls-col-lg-6,.wfls-col-lg-7,.wfls-col-lg-8,.wfls-col-lg-9,.wfls-col-lg-10,.wfls-col-lg-11,.wfls-col-lg-12{float:left}.wfls-col-lg-1{width:8.33333%}.wfls-col-lg-2{width:16.66667%}.wfls-col-lg-3{width:25%}.wfls-col-lg-4{width:33.33333%}.wfls-col-lg-5{width:41.66667%}.wfls-col-lg-6{width:50%}.wfls-col-lg-7{width:58.33333%}.wfls-col-lg-8{width:66.66667%}.wfls-col-lg-9{width:75%}.wfls-col-lg-10{width:83.33333%}.wfls-col-lg-11{width:91.66667%}.wfls-col-lg-12{width:100%}.wfls-col-lg-pull-0{right:auto}.wfls-col-lg-pull-1{right:8.33333%}.wfls-col-lg-pull-2{right:16.66667%}.wfls-col-lg-pull-3{right:25%}.wfls-col-lg-pull-4{right:33.33333%}.wfls-col-lg-pull-5{right:41.66667%}.wfls-col-lg-pull-6{right:50%}.wfls-col-lg-pull-7{right:58.33333%}.wfls-col-lg-pull-8{right:66.66667%}.wfls-col-lg-pull-9{right:75%}.wfls-col-lg-pull-10{right:83.33333%}.wfls-col-lg-pull-11{right:91.66667%}.wfls-col-lg-pull-12{right:100%}.wfls-col-lg-push-0{left:auto}.wfls-col-lg-push-1{left:8.33333%}.wfls-col-lg-push-2{left:16.66667%}.wfls-col-lg-push-3{left:25%}.wfls-col-lg-push-4{left:33.33333%}.wfls-col-lg-push-5{left:41.66667%}.wfls-col-lg-push-6{left:50%}.wfls-col-lg-push-7{left:58.33333%}.wfls-col-lg-push-8{left:66.66667%}.wfls-col-lg-push-9{left:75%}.wfls-col-lg-push-10{left:83.33333%}.wfls-col-lg-push-11{left:91.66667%}.wfls-col-lg-push-12{left:100%}.wfls-col-lg-offset-0{margin-left:0%}.wfls-col-lg-offset-1{margin-left:8.33333%}.wfls-col-lg-offset-2{margin-left:16.66667%}.wfls-col-lg-offset-3{margin-left:25%}.wfls-col-lg-offset-4{margin-left:33.33333%}.wfls-col-lg-offset-5{margin-left:41.66667%}.wfls-col-lg-offset-6{margin-left:50%}.wfls-col-lg-offset-7{margin-left:58.33333%}.wfls-col-lg-offset-8{margin-left:66.66667%}.wfls-col-lg-offset-9{margin-left:75%}.wfls-col-lg-offset-10{margin-left:83.33333%}.wfls-col-lg-offset-11{margin-left:91.66667%}.wfls-col-lg-offset-12{margin-left:100%}.wfls-col-lg-half-padding-left{padding-left:8px}.wfls-col-lg-half-padding-right{padding-right:7px}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wfls-plain{font-weight:normal}label.wfls-control-label.wfls-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:1.5rem;font-size:14px;line-height:1.42857;color:#555}.wfls-form-control{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wfls-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wfls-form-control::-moz-placeholder{color:#bfbfbf;opacity:1}.wfls-form-control:-ms-input-placeholder{color:#bfbfbf}.wfls-form-control::-webkit-input-placeholder{color:#bfbfbf}.wfls-form-control::-ms-expand{border:0;background-color:transparent}.wfls-form-control[disabled],.wfls-form-control[readonly],fieldset[disabled] .wfls-form-control{background-color:#e2e2e2;opacity:1}.wfls-form-control[disabled],.wfls-form-control[readonly],fieldset[disabled] .wfls-form-control{cursor:not-allowed;pointer-events:none}textarea.wfls-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wfls-form-control,input[type="time"].wfls-form-control,input[type="datetime-local"].wfls-form-control,input[type="month"].wfls-form-control{line-height:38px}input[type="date"].wfls-input-sm,.wfls-input-group-sm input[type="date"],input[type="time"].wfls-input-sm,.wfls-input-group-sm input[type="time"],input[type="datetime-local"].wfls-input-sm,.wfls-input-group-sm input[type="datetime-local"],input[type="month"].wfls-input-sm,.wfls-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wfls-input-lg,.wfls-input-group-lg input[type="date"],input[type="time"].wfls-input-lg,.wfls-input-group-lg input[type="time"],input[type="datetime-local"].wfls-input-lg,.wfls-input-group-lg input[type="datetime-local"],input[type="month"].wfls-input-lg,.wfls-input-group-lg input[type="month"]{line-height:46px}}.wfls-form-group{margin-bottom:8px}.wfls-form-group.wfls-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wfls-form-group.wfls-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wfls-form-group.wfls-focus label{margin-left:-4px}.wfls-radio,.wfls-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wfls-radio label,.wfls-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wfls-radio input[type="radio"],.wfls-radio-inline input[type="radio"],.wfls-checkbox input[type="checkbox"],.wfls-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wfls-radio-offset{padding-left:29px}@media (min-width: 768px){.wfls-radio-offset{padding-left:20px}}.wfls-radio+.wfls-radio,.wfls-checkbox+.wfls-checkbox{margin-top:-5px}.wfls-radio-inline,.wfls-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wfls-radio-inline+.wfls-radio-inline,.wfls-checkbox-inline+.wfls-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wfls-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wfls-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wfls-radio-inline.wfls-disabled,fieldset[disabled] .wfls-radio-inline,.wfls-checkbox-inline.wfls-disabled,fieldset[disabled] .wfls-checkbox-inline{cursor:not-allowed}.wfls-radio.wfls-disabled label,fieldset[disabled] .wfls-radio label,.wfls-checkbox.wfls-disabled label,fieldset[disabled] .wfls-checkbox label{cursor:not-allowed;pointer-events:none}.wfls-form-control-static{padding-top:1.5rem;padding-bottom:1.5rem;margin:0;line-height:1}.wfls-form-control-static.wfls-input-lg,.wfls-form-control-static.wfls-input-sm{padding-left:0;padding-right:0}.wfls-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wfls-input-sm{height:30px;line-height:30px}textarea.wfls-input-sm,select[multiple].wfls-input-sm{height:auto}.wfls-form-group-sm .wfls-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-form-group-sm select.wfls-form-control{height:30px;line-height:30px}.wfls-form-group-sm textarea.wfls-form-control,.wfls-form-group-sm select[multiple].wfls-form-control{height:auto}.wfls-form-group-sm .wfls-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wfls-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wfls-input-lg{height:46px;line-height:46px}textarea.wfls-input-lg,select[multiple].wfls-input-lg{height:auto}.wfls-form-group-lg .wfls-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-form-group-lg select.wfls-form-control{height:46px;line-height:46px}.wfls-form-group-lg textarea.wfls-form-control,.wfls-form-group-lg select[multiple].wfls-form-control{height:auto}.wfls-form-group-lg .wfls-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wfls-has-feedback{position:relative}.wfls-has-feedback .wfls-form-control{padding-right:47.5px}.wfls-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.wfls-input-lg+.wfls-form-control-feedback,.wfls-input-group-lg+.wfls-form-control-feedback,.wfls-form-group-lg .wfls-form-control+.wfls-form-control-feedback{width:46px;height:46px;line-height:46px}.wfls-input-sm+.wfls-form-control-feedback,.wfls-input-group-sm+.wfls-form-control-feedback,.wfls-form-group-sm .wfls-form-control+.wfls-form-control-feedback{width:30px;height:30px;line-height:30px}.wfls-has-success .wfls-help-block,.wfls-has-success .wfls-control-label,.wfls-has-success .wfls-radio,.wfls-has-success .wfls-checkbox,.wfls-has-success .wfls-radio-inline,.wfls-has-success .wfls-checkbox-inline,.wfls-has-success.wfls-radio label,.wfls-has-success.wfls-checkbox label,.wfls-has-success.wfls-radio-inline label,.wfls-has-success.wfls-checkbox-inline label{color:#3c763d}.wfls-has-success .wfls-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-success .wfls-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wfls-has-success .wfls-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wfls-has-success .wfls-form-control-feedback{color:#3c763d}.wfls-has-warning .wfls-help-block,.wfls-has-warning .wfls-control-label,.wfls-has-warning .wfls-radio,.wfls-has-warning .wfls-checkbox,.wfls-has-warning .wfls-radio-inline,.wfls-has-warning .wfls-checkbox-inline,.wfls-has-warning.wfls-radio label,.wfls-has-warning.wfls-checkbox label,.wfls-has-warning.wfls-radio-inline label,.wfls-has-warning.wfls-checkbox-inline label{color:#8a6d3b}.wfls-has-warning .wfls-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-warning .wfls-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wfls-has-warning .wfls-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wfls-has-warning .wfls-form-control-feedback{color:#8a6d3b}.wfls-has-error .wfls-help-block,.wfls-has-error .wfls-control-label,.wfls-has-error .wfls-radio,.wfls-has-error .wfls-checkbox,.wfls-has-error .wfls-radio-inline,.wfls-has-error .wfls-checkbox-inline,.wfls-has-error.wfls-radio label,.wfls-has-error.wfls-checkbox label,.wfls-has-error.wfls-radio-inline label,.wfls-has-error.wfls-checkbox-inline label{color:#a94442}.wfls-has-error .wfls-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-error .wfls-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wfls-has-error .wfls-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wfls-has-error .wfls-form-control-feedback{color:#a94442}.wfls-has-feedback label ~ .wfls-form-control-feedback{top:25px}.wfls-has-feedback label.wfls-sr-only ~ .wfls-form-control-feedback{top:0}.wfls-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wfls-form-inline .wfls-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-form-control{display:inline-block;width:auto;vertical-align:middle}.wfls-form-inline .wfls-form-control-static{display:inline-block}.wfls-form-inline .wfls-input-group{display:inline-table;vertical-align:middle}.wfls-form-inline .wfls-input-group .wfls-input-group-addon,.wfls-form-inline .wfls-input-group .wfls-input-group-btn,.wfls-form-inline .wfls-input-group .wfls-form-control{width:auto}.wfls-form-inline .wfls-input-group>.wfls-form-control{width:100%}.wfls-form-inline .wfls-control-label{margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-radio,.wfls-form-inline .wfls-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-radio label,.wfls-form-inline .wfls-checkbox label{padding-left:0}.wfls-form-inline .wfls-radio input[type="radio"],.wfls-form-inline .wfls-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wfls-form-inline .wfls-has-feedback .wfls-form-control-feedback{top:0}}.wfls-form-horizontal .wfls-radio,.wfls-form-horizontal .wfls-checkbox,.wfls-form-horizontal .wfls-radio-inline,.wfls-form-horizontal .wfls-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:1.5rem}.wfls-form-horizontal .wfls-radio,.wfls-form-horizontal .wfls-checkbox{min-height:29px}.wfls-form-horizontal .wfls-form-group{margin-left:-15px;margin-right:-15px}.wfls-form-horizontal .wfls-form-group:before,.wfls-form-horizontal .wfls-form-group:after{content:" ";display:table}.wfls-form-horizontal .wfls-form-group:after{clear:both}@media (min-width: 768px){.wfls-form-horizontal .wfls-control-label{text-align:right;margin-bottom:0;padding-top:1.5rem}}.wfls-form-horizontal .wfls-has-feedback .wfls-form-control-feedback{right:15px}@media (min-width: 768px){.wfls-form-horizontal .wfls-form-group-lg .wfls-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wfls-form-horizontal .wfls-form-group-sm .wfls-control-label{padding-top:6px;font-size:12px}}@media (min-width: 768px){#input-recaptchaSiteKey,#input-recaptchaSecret{min-width:400px}}hr.wfls-half{border:0 !important;border-bottom:1px solid #e4e4e4 !important;width:50%;margin:1.25rem auto}.wrap.wordfence-ls{direction:ltr}@media (min-width: 768px){.wrap.wordfence-ls{max-width:750px}}@media (min-width: 992px){.wrap.wordfence-ls{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence-ls{max-width:1170px}}.wrap.wordfence-ls>.wfls-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence-ls .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence-ls a{text-decoration:none}.wrap.wordfence-ls a:hover{text-decoration:underline}.wrap.wordfence-ls a.wfls-btn:hover{text-decoration:none}.wrap.wordfence-ls p,.wrap.wordfence-ls td,.wrap.wordfence-ls li{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wrap.wordfence-ls p strong,.wrap.wordfence-ls td strong,.wrap.wordfence-ls li strong{font-weight:600}.wrap.wordfence-ls p em,.wrap.wordfence-ls td em,.wrap.wordfence-ls li em{font-weight:normal}.wrap.wordfence-ls h1,.wrap.wordfence-ls h2,.wrap.wordfence-ls h3,.wrap.wordfence-ls h4,.wrap.wordfence-ls h5,.wrap.wordfence-ls h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700}.wrap.wordfence-ls h2{font-size:1.3125rem;line-height:1.5}.wrap.wordfence-ls h3{font-size:1.125rem}.wrap.wordfence-ls h4{font-size:1rem}a{color:#00709e}.wfls-inline-help{color:#9f9fa0}.wfls-inline-help:hover{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}.wfls-header-icon{background-image:url(../img/header.svg);width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:0 5px 0 0;float:left}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../img/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../img/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../img/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../img/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}img.wfFlag{vertical-align:middle;margin:-3px 4px 0 0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle;margin-right:0.5rem}.wfls-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wfls-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../img/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{display:inline-block;position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wfls-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wfls-striped-table th{border-left:1px solid #bdbdbd}.wfls-striped-table th:first-of-type{border-left:0}.wfls-striped-table th,.wfls-striped-table td{padding:1rem}.wfls-striped-table thead th,.wfls-striped-table thead td,.wfls-striped-table tfoot th,.wfls-striped-table tfoot td,.wfls-striped-table tbody.thead th,.wfls-striped-table tbody.thead td{background-color:#ebebeb;color:#777;font-weight:bold;text-align:left}.wfls-striped-table tbody tr.even td,.wfls-striped-table tbody tr:nth-child(2n) td{background-color:#ffffff}.wfls-striped-table tbody tr td,.wfls-striped-table tbody tr.odd td{background-color:#fafafa}.wfls-striped-table tbody tr:hover>td{background-color:#fffbd8}.wfls-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wfls-striped-table .wfls-result-error,.wfls-block-list .wfls-result-error{color:#d0514c !important;font-weight:bold}.wfls-striped-table .wfls-result-error:before,.wfls-block-list .wfls-result-error:before{content:"\2718"}.wfls-striped-table .wfls-result-success{max-width:20%}.wfls-striped-table .wfls-result-success,.wfls-block-list .wfls-result-success{color:#008c10 !important;font-weight:bold}.wfls-striped-table .wfls-result-success:before,.wfls-block-list .wfls-result-success:before{content:"\2713"}.wfls-striped-table .wfls-result-success:before,.wfls-block-list .wfls-result-success:before,.wfls-striped-table .wfls-result-error:before,.wfls-block-list .wfls-result-error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wfls-striped-table .wfls-result-inactive,.wfls-block-list .wfls-result-inactive{font-weight:bold;color:#666666 !important}.wfls-fixed-table{table-layout:fixed}pre.wfls-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wfls-center{text-align:center}#wfConfigForm,.wfls-diagnostics-wrapper{max-width:1035px}.wfls-hidden{display:none !important}.wfls-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wfls-card .wfls-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wfls-card .wfls-card-inner .wfls-card-content{max-width:75%}.wfls-card .wfls-card-inner .wfls-card-content .wfls-card-title{font-size:1.125rem;width:100%}.wfls-card .wfls-card-inner .wfls-card-content .wfls-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wfls-card .wfls-card-inner .wfls-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-checkbox{background-image:url(../img/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-checkbox.checked{background-position:right center}.wfls-card .wfls-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wfls-card .wfls-card-extra{padding:1rem}}.wfls-card.active .wfls-card-extra{display:block}.wfls-card.wfls-card-left .wfls-card-content{margin-left:48px}.wfls-card.wfls-card-left .wfls-card-action{right:auto;left:0px}.wfls-card.disabled .wfls-card-content .wfls-card-title{color:#aaaaaa}.wfls-card.disabled .wfls-card-content .wfls-card-subtitle{color:#8ea6be}.wfls-inline-block{display:inline-block}@media (max-width: 767px){.wfls-inline-block-xs{display:inline-block}}.wfls-full-width{width:100%;max-width:100%}.wfls-no-top{margin-top:0 !important}.wfls-add-top{margin-top:1rem !important}.wfls-add-top-large{margin-top:1.5rem !important}.wfls-add-top-medium{margin-top:0.75rem !important}.wfls-add-top-small{margin-top:0.5rem !important}.wfls-add-top-smaller{margin-top:0.25rem !important}.wfls-no-bottom{margin-bottom:0 !important}.wfls-add-bottom{margin-bottom:1rem !important}.wfls-add-bottom-large{margin-bottom:1.5rem !important}.wfls-add-bottom-medium{margin-bottom:0.75rem !important}.wfls-add-bottom-small{margin-bottom:0.5rem !important}.wfls-add-bottom-smaller{margin-bottom:0.25rem !important}.wfls-padding-no-top{padding-top:0 !important}.wfls-no-right{margin-right:0 !important}.wfls-padding-no-bottom{padding-bottom:0 !important}.wfls-padding-no-left{padding-left:0 !important}.wfls-padding-no-right{padding-right:0 !important}.wfls-padding-add-top{padding-top:1rem !important}.wfls-padding-add-top-small{padding-top:0.5rem !important}.wfls-padding-add-top-medium{padding-top:0.75rem !important}.wfls-padding-add-top-large{padding-top:1.5rem !important}.wfls-padding-add-top-responsive{padding-top:1rem !important}@media (min-width: 768px){.wfls-padding-add-top-responsive{padding-top:1.5rem !important}}.wfls-padding-add-bottom{padding-bottom:1rem !important}.wfls-padding-add-bottom-small{padding-bottom:0.5rem !important}.wfls-padding-add-bottom-medium{padding-bottom:0.75rem !important}.wfls-padding-add-bottom-large{padding-bottom:1.5rem !important}.wfls-padding-add-bottom-responsive{padding-bottom:1rem !important}@media (min-width: 768px){.wfls-padding-add-bottom-responsive{padding-bottom:1.5rem !important}}.wfls-padding-no-bottom{padding-bottom:0 !important}.wfls-padding-add-left{padding-left:1rem !important}.wfls-padding-add-left-small{padding-left:0.5rem !important}.wfls-padding-add-left-medium{padding-left:0.75rem !important}.wfls-padding-add-left-large{padding-left:1.5rem !important}.wfls-padding-add-left-responsive{padding-left:1rem !important}@media (min-width: 768px){.wfls-padding-add-left-responsive{padding-left:1.5rem !important}}.wfls-padding-add-right{padding-right:1rem !important}.wfls-padding-add-right-small{padding-right:0.5rem !important}.wfls-padding-add-right-medium{padding-right:0.75rem !important}.wfls-padding-add-right-large{padding-right:1.5rem !important}.wfls-padding-add-right-responsive{padding-right:1rem !important}@media (min-width: 768px){.wfls-padding-add-right-responsive{padding-right:1.5rem !important}}.wfls-left{text-align:left !important}.wfls-center{text-align:center !important}.wfls-block-center{margin:0 auto}.wfls-right{text-align:right !important}.wfls-block-right{margin:0 0 0 auto}@media (max-width: 767px){.wfls-left-xs{text-align:left !important}.wfls-center-xs{text-align:center !important}.wfls-padding-add-top-xs{padding-top:1rem !important}.wfls-padding-add-top-xs-small{padding-top:0.5rem !important}.wfls-padding-add-top-xs-large{padding-top:1.5rem !important}.wfls-padding-add-bottom-xs{padding-bottom:1rem !important}.wfls-padding-add-bottom-xs-small{padding-bottom:0.5rem !important}.wfls-padding-add-bottom-xs-large{padding-bottom:1.5rem !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-left-sm{text-align:left !important}.wfls-center-sm{text-align:center !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-left-md{text-align:left !important}.wfls-center-md{text-align:center !important}}@media (min-width: 1200px){.wfls-left-lg{text-align:left !important}.wfls-center-lg{text-align:center !important}}.wfls-border-no-top{border-top:none !important}.wfls-border-no-right{border-right:none !important}.wfls-border-no-bottom{border-bottom:none !important}.wfls-border-no-left{border-left:none !important}.wfls-overflow-x-auto{overflow-x:auto}.wfls-overflow-y-auto{overflow-y:auto}@media (max-width: 767px){.wfls-overflow-x-auto-xs{overflow-x:auto}.wfls-overflow-y-auto-xs{overflow-y:auto}}.wfls-blue{color:#00709e !important}.wfls-blue-light{color:#008cc1 !important}.wfls-gray-dark{color:#2d2d2d !important}.wfls-gray-blue{color:#3f596b !important}.wfls-green-dark{color:#11967a !important}.wfls-green-light{color:#16bc9b !important}.wfls-red-dark{color:#930000 !important}.wfls-red-light{color:#c10000 !important}.wfls-yellow-dark{color:#fcb214 !important}.wfls-yellow-light{color:#ffd10a !important}.wfls-gray{color:#525355 !important}.wfls-gray-light{color:#9f9fa0 !important}.wfls-nowrap{white-space:nowrap}.wfls-tip{color:#fcb214;font-size:1.1rem;margin-right:0.25rem}.wfls-text-small{font-size:85% !important}.wfls-text-plain{font-weight:400 !important}.wfls-scroll-x::-webkit-scrollbar,.wfls-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wfls-scroll-x::-webkit-scrollbar-thumb,.wfls-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wfls-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wfls-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.wfselect2-container{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:200px}@media (min-width: 768px){.wfselect2-container{min-width:280px}}@media (min-width: 992px){.wfselect2-container{min-width:320px}}@media (max-width: 767px){.wfselect2-container .wfselect2-search.wfselect2-search--inline{margin:0 !important}}.wfls-select2-placeholder-fix .wfselect2-search__field{width:auto !important}.wfls-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wfls-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wfls-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wfls-page-title h2{padding:0 !important}.wfls-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}.wfls-tab-container{background-color:#fff}@media (min-width: 768px){.wfls-tab-container{background-color:unset}}.wfls-page-tabs,.wfls-page-fixed-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;border-bottom:1px solid #d0d0d0;margin:0;margin-top:0.5rem;margin-left:-10px;margin-right:-10px}@media (min-width: 768px){.wfls-page-tabs,.wfls-page-fixed-tabs{margin-left:0;margin-right:0}}.wfls-page-tabs>*,.wfls-page-fixed-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-page-tabs>*:first-child,.wfls-page-fixed-tabs>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px}.wfls-page-tabs .wordfence-icon32,.wfls-page-fixed-tabs .wordfence-icon32{margin:0;margin-right:0.5rem;margin-left:0.5rem}@media (min-width: 768px){.wfls-page-tabs .wordfence-icon32,.wfls-page-fixed-tabs .wordfence-icon32{margin-left:0}}.wfls-page-tabs .wfls-text-tab,.wfls-page-fixed-tabs .wfls-text-tab{margin:0;margin-left:0.5rem;color:#333}.wfls-page-tabs .wfls-tab,.wfls-page-fixed-tabs .wfls-tab{border:1px solid #fff;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin-bottom:-1px;margin-right:0.5rem;color:#333}@media (min-width: 768px){.wfls-page-tabs .wfls-tab,.wfls-page-fixed-tabs .wfls-tab{border:1px solid #d0d0d0;background:#e6e6e6}}.wfls-page-tabs .wfls-tab a,.wfls-page-fixed-tabs .wfls-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wfls-page-tabs .wfls-tab.wfls-active,.wfls-page-tabs .wfls-tab:hover,.wfls-page-fixed-tabs .wfls-tab.wfls-active,.wfls-page-fixed-tabs .wfls-tab:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#00709e;-webkit-box-shadow:none;box-shadow:none}.wfls-page-tabs .wfls-tab.wfls-active a,.wfls-page-tabs .wfls-tab:hover a,.wfls-page-fixed-tabs .wfls-tab.wfls-active a,.wfls-page-fixed-tabs .wfls-tab:hover a{color:#00709e}.wfls-tab-content{display:none;margin-top:15px}.wfls-tab-content.wfls-active{display:block}.wfls-fixed-tab-content{margin-top:15px}.wfls-section-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start}.wfls-section-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-section-title>h1,.wfls-section-title>h2,.wfls-section-title>h3,.wfls-section-title>h4,.wfls-section-title>h5,.wfls-section-title>h6{-webkit-flex-grow:1;flex-grow:1;color:#2d2d2d !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;line-height:1.5rem !important;font-weight:700 !important;padding:0 !important;margin:0 !important}@media (min-width: 768px){.wfls-section-title>h1,.wfls-section-title>h2,.wfls-section-title>h3,.wfls-section-title>h4,.wfls-section-title>h5,.wfls-section-title>h6{padding-right:0.25rem !important}}.wfls-section-title h2{font-size:1.3125rem;line-height:1.5}.wfls-section-title h3{font-size:1.125rem}.wfls-section-title h4{font-size:1rem}.wfls-section-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wfls-status-circular{position:relative}.wfls-status-circular-text{position:absolute;left:50%;top:50%;padding:0;margin:0;transform:translate(-50%, -50%);color:#aaa;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wfls-status-circular .wfls-status-overlay-text{position:absolute;left:50%;top:50%;padding:0;margin:0;width:200%;text-align:center;transform:translate(-50%, -50%);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:normal;line-height:1.3125;opacity:0.0;color:#777}.wfls-status-warning,.wfls-status-critical,.wfls-status-payment-expiring,.wfls-status-renewing{width:100px;height:100px;margin-bottom:1rem}.wfls-status-warning svg path{fill:#fcb214}.wfls-status-critical svg path{fill:#930000}.wfls-status-payment-expiring svg rect,.wfls-status-payment-expiring svg path{fill:#930000}.wfls-status-renewing svg rect,.wfls-status-renewing svg path{fill:#11967a}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wfls-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wfls-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}.wfls-back-icon{color:#00709e;margin-right:0.75rem;font-size:1.5rem !important}.wfls-back-link-chevron{margin-left:1rem}.wfls-back-link-chevron:first-of-type{margin-left:0}.wfls-back-link{font-weight:bold;text-decoration:none}.wfls-premium-link{font-weight:bold}.wfls-boolean-switch{border:1px solid #aaa;display:block;cursor:pointer;width:54px;height:30px;min-width:54px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;background-color:#ffffff;position:relative;box-sizing:border-box;transition:background-color 0.2s ease-in-out, border-color 0.2s ease-in-out}@media (min-width: 768px){.wfls-boolean-switch{width:34px;height:20px;min-width:34px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}.wfls-boolean-switch .wfls-boolean-switch-handle{position:relative;display:block;border:1px solid #aaa;background-color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;margin-top:-1px;box-sizing:border-box;left:-1px;transition:border-color 0.2s ease-in-out, left 0.2s ease-in-out}@media (min-width: 768px){.wfls-boolean-switch .wfls-boolean-switch-handle{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}}.wfls-boolean-switch.wfls-active{border:1px solid #00709e;background-color:#00709e}.wfls-boolean-switch.wfls-active .wfls-boolean-switch-handle{border:1px solid #00709e;left:25px}@media (min-width: 768px){.wfls-boolean-switch.wfls-active .wfls-boolean-switch-handle{left:15px}}.wfls-boolean-switch.wfls-disabled{pointer-events:none;border-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled .wfls-boolean-switch-handle{border-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled.wfls-active{border-color:#e2e2e2;background-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled.wfls-active .wfls-boolean-switch-handle{border-color:#e2e2e2}.wfls-option-checkbox,[type=checkbox].wfls-option-checkbox+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px #aaa;color:#ffffff !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wfls-option-checkbox,[type=checkbox].wfls-option-checkbox+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:25px !important}}@media (min-width: 768px){.wfls-option-checkbox{position:relative}.wfls-option-checkbox>*{position:absolute;top:9px;left:50%;transform:translateX(-50%) translateY(-50%)}}.wfls-option-radio,[type=radio].wfls-option-radio+label:before{content:"\f401";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;line-height:30px !important;text-align:center !important;color:#ccc !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wfls-option-radio,[type=radio].wfls-option-radio+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}[type=checkbox].wfls-option-checkbox.wfls-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}[type=radio].wfls-option-radio.wfls-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;line-height:21px !important;font-size:20px !important}[type=checkbox].wfls-option-checkbox+label:before,[type=radio].wfls-option-radio+label:before{text-align:center !important;text-indent:0px;display:inline-block;vertical-align:-6px;margin:0px 5px 0px 0px;font-weight:normal;font-style:normal}[type=checkbox].wfls-option-checkbox.wfls-small+label:before,[type=radio].wfls-option-radio.wfls-small+label:before{text-indent:0px;vertical-align:-3px}.wfls-option-checkbox.wfls-checked,[type=checkbox].wfls-option-checkbox:checked+label:before{color:#ffffff !important;box-shadow:0px 0px 0px 1px #00709e !important;background-color:#00709e !important}.wfls-option-checkbox.wfls-disabled,[type=checkbox].wfls-option-checkbox:disabled+label:before{color:#f1f1f1 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wfls-option-checkbox.wfls-checked.wfls-disabled,[type=checkbox].wfls-option-checkbox:disabled:checked+label:before{color:#777 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wfls-option-radio.wfls-checked,[type=radio].wfls-option-radio:checked+label:before{content:"\f3a7";color:#00709e !important}.wfls-option-checkbox[type=checkbox],.wfls-option-checkbox[type=radio],.wfls-option-radio[type=checkbox],.wfls-option-radio[type=radio]{position:absolute;left:-9999px}.wfls-option-text input[type="text"],input.wfls-input-text{text-align:left;width:100%;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.65)}.wfls-option-text input[type="text"]:placeholder-shown,input.wfls-input-text:placeholder-shown{font-style:italic;color:#bfbfbf}::-webkit-input-placeholder{color:#bfbfbf}:-moz-placeholder{color:#bfbfbf;opacity:1}::-moz-placeholder{color:#bfbfbf;opacity:1}:-ms-input-placeholder{color:#bfbfbf}::-ms-input-placeholder{color:#bfbfbf}::placeholder{color:#bfbfbf}.wfls-option-premium .wfls-option-title,.wfls-option-premium .wfls-option-title>ul>li,.wfls-option.wfls-disabled .wfls-option-title,.wfls-option.wfls-disabled .wfls-option-title>ul>li{color:#aaa !important}.wfls-option-premium .wfls-option-checkbox,.wfls-option-premium .wfls-option-radio,.wfls-option.wfls-disabled .wfls-option-checkbox,.wfls-option.wfls-disabled .wfls-option-radio{opacity:0.5}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value{padding-top:0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value .wfls-fa{font-size:8rem}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value svg{width:160px}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-label{font-size:1.35rem;font-weight:300;padding-bottom:0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-value{color:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-value svg{fill:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-label{color:#9f9fa0}.wfls-indeterminate-progress{-webkit-animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite;-o-animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite;animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite}.wfls-indeterminate-progress path{fill:#00709e}@-moz-keyframes wfls-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wfls-indeterminate-progress-keyframes{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes wfls-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.wfls-flex-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-flex-row .wfls-flex-row-1{-webkit-flex-grow:1;flex-grow:1}.wfls-flex-row .wfls-flex-row-0{-webkit-flex-grow:0;flex-grow:0}.wfls-flex-row.wfls-flex-row-wrappable,.wfls-flex-row.wfls-flex-row-xs-wrappable{-webkit-flex-wrap:wrap;flex-wrap:wrap}.wfls-flex-row.wfls-flex-row-equal-heights{-webkit-align-items:stretch;align-items:stretch}.wfls-flex-row .wfls-flex-item-full-width{width:100%}.wfls-flex-row .wfls-flex-item-xs-100{-webkit-flex-basis:100%;flex-basis:100%}@media (min-width: 768px){.wfls-flex-row.wfls-flex-row-xs-wrappable{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-flex-row .wfls-flex-item-sm-50{-webkit-flex-basis:50%;flex-basis:50%}}.wfls-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wfls-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wfls-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-switch>li.wfls-active{color:#ffffff;background-color:#00709e}.wfls-tooltip,.ui-widget.wfls-tooltip{max-width:600px;font-size:0.75rem;overflow-wrap:break-word}.wfls-widget-learning-mode{border-top:1px solid #eee;margin:0 -1rem;padding:1rem;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row}@media (min-width: 768px){.wfls-widget-learning-mode{padding:1.5rem}}.wfls-widget-learning-mode svg{width:18px}.wfls-widget-learning-mode svg path{fill:#aaa}.wfls-widget-learning-mode span{padding-left:0.5rem;font-size:.875rem;line-height:1.3125;font-weight:600}.wfls-drawer-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.5);z-index:9980;padding:5rem 0}.folded .wfls-drawer-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold .wfls-drawer-overlay{left:36px}}.rtl .wfls-drawer-overlay{right:160px;left:0px}.rtl .folded .wfls-drawer-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wfls-drawer-overlay{right:36px}}@media screen and (max-width: 782px){.wfls-drawer-overlay,.folded .wfls-drawer-overlay,.auto-fold .wfls-drawer-overlay,.rtl .wfls-drawer-overlay,.rtl .folded .wfls-drawer-overlay,.rtl .auto-fold .wfls-drawer-overlay{left:0px;right:0px}}.wfls-drawer{background-color:#ffffff;position:fixed;top:32px;bottom:0px;right:0px;z-index:9981}.wfls-drawer .wfls-modal{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;height:100%}.wfls-drawer .wfls-modal ul,.wfls-drawer .wfls-modal li{padding:0;margin:0}.wfls-drawer .wfls-modal .wfls-modal-header{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#00709e;color:#ffffff}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content{max-width:75%}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-title{font-size:1.3125rem;line-height:1.5;font-weight:300;width:100%;transition:color 0.2s ease-in}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wfls-drawer .wfls-modal .wfls-modal-content{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;padding:1rem}.wfls-drawer .wfls-modal .wfls-modal-content>*:first-child{margin-top:0}.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.9rem}}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option .wfselect2-selection__arrow,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection__arrow,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}.wfls-drawer .wfls-modal .wfls-modal-footer{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wfls-mobile-menu-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:100000}.wfls-mobile-menu-overlay>.wfls-mobile-menu-tap-hint{position:absolute;top:25%;left:50%;transform:translateX(-50%);color:#ffffff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wfls-mobile-menu{position:fixed;left:50%;transform:translateX(-50%);z-index:100001}.wfls-mobile-menu>.wfls-mobile-menu-items{margin:0;padding:0 0 0.25rem 0;list-style:none}.wfls-mobile-menu>.wfls-mobile-menu-items>li{margin:0;padding:0.25rem 0}.wfls-mobile-menu>.wfls-mobile-menu-items>li>a{box-sizing:border-box}.wfls-callout-warning{background-color:#feecc4;padding:0.8rem 1.25rem}.wfls-tip-light-bulb{color:#fcb214;font-size:1.5rem;font-weight:bold}.wfls-tip-info-message{padding-left:0.5rem !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}#wfls-qr-code{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfls-qr-code{width:256px;height:256px}}#wfls-activate-field{margin:0 auto;font-size:1.5rem;display:block;text-align:center}.wfls-recovery-codes{list-style-type:none}.wfls-recovery-codes li{font-family:monospace !important;text-align:center}#wfls-recovery-download .dashicons,#wfls-recovery-new-download .dashicons{line-height:26px}#wfls-ip-source-trusted-proxies{display:none}ul.wfls-option.wfls-option-howgetips .wfls-option-ip-source-details{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8rem;margin-top:0.5rem}#wfls-ip-source-preview{color:#8c8c8c}#wfls-ip-source-preview strong{color:#666}.wfls-inline-notice{background:#fff;border:1px solid #ccd0d4;border-left-color:#ffb900;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,0.04);padding:4px 12px;display:flex;justify-content:flex-start;align-items:center}.wfls-inline-notice>*{flex-grow:1}.wfls-inline-notice:first-child{flex-grow:0;flex-shrink:0}.wfls-inline-notice span{padding-left:0.5rem}.wfls-block{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;position:relative;margin:0 auto 0.5rem;box-sizing:border-box;background-color:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3}.wfls-block.wfls-block-transparent{background-color:transparent;box-shadow:none}.wfls-block .wfls-block-banner{min-height:44px;margin:0 -1rem;padding:0;box-sizing:border-box;position:relative;background-color:#fcb214;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row}.wfls-block .wfls-block-banner>li{margin:0;padding:0.75rem 1rem}@media (min-width: 768px){.wfls-block .wfls-block-banner{margin:0 -1.5rem}.wfls-block .wfls-block-banner>li{padding:0.75rem 1.5rem}}.wfls-block .wfls-block-header{-webkit-flex-basis:44px;flex-basis:44px;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0;min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wfls-block .wfls-block-header.wfls-block-header-border-bottom{padding:0 1rem;border-bottom:1px solid #e2e2e2}@media (min-width: 768px){.wfls-block .wfls-block-header.wfls-block-header-border-bottom{padding:0 1.5rem}}.wfls-block .wfls-block-header .wfls-block-header-content{max-width:75%}.wfls-block .wfls-block-header .wfls-block-header-content .wfls-block-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-content .wfls-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wfls-block .wfls-block-header .wfls-block-header-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text{width:auto}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-success{color:#11967a}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-warning{color:#930000}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-warning a{color:#930000}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzc3NyIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center;width:12px;height:12px;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),background 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-checkbox{background-image:url(../img/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-checkbox.wfls-checked{background-position:right center}.wfls-block .wfls-block-content{-webkit-flex-grow:1;flex-grow:1;display:none;padding:0 1rem}@media (min-width: 768px){.wfls-block .wfls-block-content{padding:0 1.5rem}}.wfls-block .wfls-block-content .wfls-block-list{margin:0 -1rem;padding:0;list-style:none}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list{margin:0 -1.5rem}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-striped>li:nth-of-type(even){background-color:#ffffff}.wfls-block .wfls-block-content .wfls-block-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #e2e2e2;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list>li{padding:0 1.5rem}}.wfls-block .wfls-block-content .wfls-block-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #e2e2e2}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-nowrap{overflow-y:auto;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-nowrap>li{-webkit-flex-shrink:0;flex-shrink:0}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-horizontal-5>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:20%;flex-basis:20%}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-equal>li{max-width:50%}}@media (min-width: 992px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-equal>li{max-width:25%}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-horizontal-5.wfls-block-list-equal>li{max-width:20%}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state{text-align:center}@media (min-width: 1200px){.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state{text-align:left}}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-enabled .wfls-fa{color:#11967a}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-disabled .wfls-fa{color:#525355}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-premium{color:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-dismiss{padding-left:2rem;font-size:1.25rem}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-dismiss a{color:#525355}.wfls-block .wfls-block-content:first-child>.wfls-block-list>li:first-child{border-top:none}.wfls-block .wfls-block-content .wfls-block-left-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-left-right{margin:0 -1.5rem}}.wfls-block .wfls-block-content .wfls-block-left-right.wfls-block-left-right-nowrap{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-left-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wfls-block .wfls-block-content .wfls-block-left-right>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfls-block .wfls-block-content .wfls-block-left-right>li.wfls-left{text-align:left}.wfls-block .wfls-block-content .wfls-block-left-right>li.wfls-right{text-align:right}.wfls-block .wfls-block-content .wfls-block-left-center-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:center;align-content:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-left-center-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:33.3333%;flex-basis:33.3333%;max-width:33.3333%}.wfls-block .wfls-block-content .wfls-block-left-center-right>li a{text-decoration:none;font-size:.875rem}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-left{text-align:left}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-center{text-align:center;-webkit-justify-content:center;justify-content:center}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-center .wordfence-icon32{margin:0}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-right{text-align:right;-webkit-justify-content:flex-end;justify-content:flex-end}.wfls-block .wfls-block-content .wfls-block-labeled-value{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-labeled-value{margin:0 -1.5rem;padding:1.5rem}}.wfls-block .wfls-block-content .wfls-block-labeled-value-value{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wfls-block .wfls-block-content .wfls-block-labeled-value-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wfls-block .wfls-block-footer{-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#e4e4e4}.wfls-block .wfls-block-footer .wfls-block-footer-content{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;width:100%}.wfls-block .wfls-block-footer .wfls-block-footer-content>*{-webkit-flex-grow:1;flex-grow:1}.wfls-block .wfls-block-footer .wfls-block-footer-content .wfls-block-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wfls-block .wfls-block-footer .wfls-block-footer-content .wfls-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wfls-block .wfls-block-footer .wfls-block-footer-action{-webkit-flex-grow:0;flex-grow:0;background:none;border:0;outline:0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle}.wfls-block.wfls-block-no-header .wfls-block-content .wfls-block-list>li{border-top:none}.wfls-block.wfls-active .wfls-block-content,.wfls-block.wfls-always-active .wfls-block-content{display:block}.wfls-block.wfls-active>.wfls-block-header>.wfls-block-header-content>.wfls-block-title{color:#00709e}.wfls-block.wfls-active>.wfls-block-header>.wfls-block-header-content>.wfls-block-header-action>.wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzAwNzA5ZSIvPgo8L3N2Zz4=") !important;transform:rotate(90deg)}.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-title,.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-subtitle{color:#bfbfbf !important}.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-header-action>.wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iI2JkYmRiZCIvPgo8L3N2Zz4=") !important;transform:rotate(0deg)}.wfls-block.wfls-disabled>.wfls-block-content{display:none !important}.wfls-block.wfls-block-header-left .wfls-block-header-content{margin-left:48px}.wfls-block.wfls-block-header-left .wfls-block-header-action{right:auto;left:0px}.wfls-block.wfls-disabled .wfls-dashboard-item-content .wfls-block-title{color:#aaaaaa}.wfls-block.wfls-disabled .wfls-dashboard-item-content .wfls-block-subtitle{color:#8ea6be}.wfls-section-title{margin-bottom:1rem}.wfls-status-detail{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}.wfls-status-detail p{margin:0 0 0.45rem 0}.wfls-status-detail .wfls-status-circular{margin-bottom:1rem}.wfls-status-detail .wfls-status-detail-title{font-weight:700 !important;font-size:1rem !important;line-height:1.3125 !important}.wfls-status-detail .wfls-status-detail-subtitle{font-size:.875rem !important;line-height:1.3125 !important;font-weight:normal !important;text-align:center}.wfls-status-detail .wfls-status-detail-link>a{font-weight:600 !important;font-size:0.85rem !important}.wfls-block-navigation-option{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block-navigation-option svg.wfls-block-navigation-option-icon{width:50px;min-width:50px;fill:#9f9fa0}.wfls-block-navigation-option:hover{cursor:pointer}.wfls-block-navigation-option:hover a{text-decoration:underline}.wfls-block-navigation-option:hover svg.wfls-block-navigation-option-icon{fill:#00709e}.wfls-select-group{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-select-group .wfselect2-container{min-width:200px}@media (max-width: 767px){.wfls-select-group .wfselect2-container{max-width:100px}}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wfls-select-group .wfls-form-control{display:inline-block;width:auto;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.wfls-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wfls-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-horizontal.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-horizontal.wfls-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wfls-flex-horizontal.wfls-flex-full-width{width:100%}.wfls-flex-horizontal.wfls-flex-full-width>*:last-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-first>*:first-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-first>*:last-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-all>*:first-child,.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-all>*{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal>li{padding:0;margin:0}.wfls-flex-vertical{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wfls-flex-vertical>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-vertical.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-vertical.wfls-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wfls-flex-vertical.wfls-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}@media (max-width: 767px){.wfls-flex-vertical.wfls-flex-align-left-xs{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-flex-vertical.wfls-flex-align-left-sm{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-flex-vertical.wfls-flex-align-left-md{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 1200px){.wfls-flex-vertical.wfls-flex-align-left-lg{-webkit-align-items:flex-start !important;align-items:flex-start !important}}.wfls-flex-vertical>li{padding:0;margin:0}@media (max-width: 767px){.wfls-flex-vertical-xs{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wfls-flex-vertical-xs>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-vertical-xs.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-vertical-xs.wfls-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wfls-flex-vertical-xs.wfls-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}}ul.wfls-option,.wfls-form-field{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:1rem 0;position:relative}ul.wfls-option li,.wfls-form-field li{margin:0;padding:0}ul.wfls-option.wfls-option-no-spacing,.wfls-form-field.wfls-option-no-spacing{padding:0;margin:0}ul.wfls-option.wfls-option-toggled>*:last-child,ul.wfls-option.wfls-option-toggled-boolean-switch>*:last-child,ul.wfls-option.wfls-option-toggled-select>*:last-child,ul.wfls-option.wfls-option-select>*:last-child,ul.wfls-option.wfls-option-text>*:last-child,ul.wfls-option.wfls-option-textarea>*:last-child,ul.wfls-option.wfls-option-switch>*:last-child,ul.wfls-option.wfls-option-footer>*:last-child,.wfls-form-field.wfls-option-toggled>*:last-child,.wfls-form-field.wfls-option-toggled-boolean-switch>*:last-child,.wfls-form-field.wfls-option-toggled-select>*:last-child,.wfls-form-field.wfls-option-select>*:last-child,.wfls-form-field.wfls-option-text>*:last-child,.wfls-form-field.wfls-option-textarea>*:last-child,.wfls-form-field.wfls-option-switch>*:last-child,.wfls-form-field.wfls-option-footer>*:last-child{margin-right:1rem}@media (max-width: 768px){ul.wfls-option.wfls-option-footer,.wfls-form-field.wfls-option-footer{-webkit-flex-direction:column;flex-direction:column}}ul.wfls-option>.wfls-option-content,.wfls-form-field>.wfls-option-content{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option>.wfls-option-content>ul,.wfls-form-field>.wfls-option-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;width:100%}ul.wfls-option>.wfls-option-content>ul>*:first-child,.wfls-form-field>.wfls-option-content>ul>*:first-child{-webkit-flex-grow:1;flex-grow:1}@media (min-width: 768px){ul.wfls-option>.wfls-option-content>ul,.wfls-form-field>.wfls-option-content>ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wfls-option.wfls-option-toggled-segmented *,.wfls-form-field.wfls-option-toggled-segmented *{-webkit-flex-grow:0;flex-grow:0}ul.wfls-option.wfls-option-toggled-segmented *:first-child,.wfls-form-field.wfls-option-toggled-segmented *:first-child{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option.wfls-option-toggled-segmented>*:last-child,.wfls-form-field.wfls-option-toggled-segmented>*:last-child{margin-left:1rem}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-title,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-title{font-size:.8rem}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:50%;flex-basis:50%;display:block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#00709e;background-color:#fff;border-color:#00709e;border-radius:0}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active.focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active.focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:hover,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active.focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:hover,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle{background-image:none}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled],ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly],fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly],fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled.wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled].wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly].wfls-focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:hover,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled].wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly].wfls-focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:hover,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-focus{background-color:#fff;border-color:#00709e}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label .wfls-badge,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label .wfls-badge{color:#fff;background-color:#00709e}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-first,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-first{border-radius:4px 0 0 4px}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-last,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-last{border-radius:0 4px 4px 0}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]{position:absolute;left:-9999px}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label{color:#fff;background-color:#00709e;border-color:#005e85}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#004c6b;border-color:#000405}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#004c6b;border-color:#003347}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active.focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active.focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:hover,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active.focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:hover,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle{background-image:none}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled],ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled.wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled].wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly].wfls-focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled].wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly].wfls-focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-focus{background-color:#00709e;border-color:#005e85}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label .wfls-badge,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label .wfls-badge{color:#00709e;background-color:#fff}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:disabled+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:disabled+label{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65}ul.wfls-option.wfls-option-toggled-multiple,.wfls-form-field.wfls-option-toggled-multiple{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start}ul.wfls-option.wfls-option-toggled-multiple>.wfls-option-title,.wfls-form-field.wfls-option-toggled-multiple>.wfls-option-title{font-weight:600}ul.wfls-option>.wfls-option-spacer,.wfls-form-field>.wfls-option-spacer{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wfls-option>.wfls-option-spacer,.wfls-form-field>.wfls-option-spacer{width:20px;height:20px}}ul.wfls-option>.wfls-option-premium-lock,.wfls-form-field>.wfls-option-premium-lock{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:contain;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wfls-option>.wfls-option-premium-lock,.wfls-form-field>.wfls-option-premium-lock{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wfls-option>.wfls-option-checkbox,.wfls-form-field>.wfls-option-checkbox{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}ul.wfls-option>.wfls-boolean-switch,.wfls-form-field>.wfls-boolean-switch{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wfls-option>.wfls-boolean-switch,.wfls-form-field>.wfls-boolean-switch{margin:0 1rem 0 1rem}}ul.wfls-option.wfls-option-no-spacing>.wfls-boolean-switch,.wfls-form-field.wfls-option-no-spacing>.wfls-boolean-switch{margin:0}ul.wfls-option>.wfls-option-radio-container,.wfls-form-field>.wfls-option-radio-container{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wfls-option>.wfls-option-radio-container,.wfls-form-field>.wfls-option-radio-container{margin:0 2rem 0 1rem}}ul.wfls-option>.wfls-option-radio-container [type=radio].wfls-option-radio+label:before,.wfls-form-field>.wfls-option-radio-container [type=radio].wfls-option-radio+label:before{margin:0}ul.wfls-option>li>.wfls-option-title,ul.wfls-option>.wfls-option-title,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title,.wfls-form-field>li>.wfls-option-title,.wfls-form-field>.wfls-option-title,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#2b2b2b;padding-right:0.5rem}ul.wfls-option>li>.wfls-option-title.wfls-option-title-top,ul.wfls-option>.wfls-option-title.wfls-option-title-top,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-top,.wfls-form-field>li>.wfls-option-title.wfls-option-title-top,.wfls-form-field>.wfls-option-title.wfls-option-title-top,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-top{-webkit-align-self:flex-start;align-self:flex-start}ul.wfls-option>li>.wfls-option-title.wfls-option-title-bottom,ul.wfls-option>.wfls-option-title.wfls-option-title-bottom,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>li>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-bottom{-webkit-align-self:flex-end;align-self:flex-end}ul.wfls-option .wfls-option-subtitle,.wfls-form-field .wfls-option-subtitle{padding-top:0.25rem;font-size:0.75rem}ul.wfls-option .wfls-flex-vertical .wfls-option-title,.wfls-form-field .wfls-flex-vertical .wfls-option-title{padding-bottom:0.75rem}ul.wfls-option.wfls-flex-vertical>.wfls-option-subtitle,.wfls-form-field.wfls-flex-vertical>.wfls-option-subtitle{padding-top:0.25rem !important;font-size:0.75rem !important}ul.wfls-option .wfls-option-checkboxes,ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes,.wfls-form-field .wfls-option-checkboxes>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wfls-option .wfls-option-checkboxes.wfls-option-checkboxes-wrap,ul.wfls-option .wfls-option-checkboxes>ul.wfls-option-checkboxes-wrap,.wfls-form-field .wfls-option-checkboxes.wfls-option-checkboxes-wrap,.wfls-form-field .wfls-option-checkboxes>ul.wfls-option-checkboxes-wrap{-webkit-flex-wrap:wrap;flex-wrap:wrap}ul.wfls-option .wfls-option-checkboxes,.wfls-form-field .wfls-option-checkboxes{margin-top:0.5rem}ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes>ul{margin-top:0.5rem;margin-right:1rem}@media (min-width: 768px){ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes>ul{margin-right:1.5rem}}ul.wfls-option .wfls-option-checkboxes>ul:last-of-type,.wfls-form-field .wfls-option-checkboxes>ul:last-of-type{margin-right:0}ul.wfls-option .wfls-option-checkboxes>ul>.wfls-option-checkbox,.wfls-form-field .wfls-option-checkboxes>ul>.wfls-option-checkbox{margin:0 1rem 0 0}ul.wfls-option li.wfls-option-text,ul.wfls-option li.wfls-option-textarea,ul.wfls-option td.wfls-option-text,.wfls-form-field li.wfls-option-text,.wfls-form-field li.wfls-option-textarea,.wfls-form-field td.wfls-option-text{padding-top:0.5rem}@media (min-width: 768px){ul.wfls-option li.wfls-option-text,ul.wfls-option li.wfls-option-textarea,ul.wfls-option td.wfls-option-text,.wfls-form-field li.wfls-option-text,.wfls-form-field li.wfls-option-textarea,.wfls-form-field td.wfls-option-text{-webkit-flex-grow:1;flex-grow:1;text-align:right;padding-left:1rem;padding-top:0}}ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:280px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:340px}}ul.wfls-option li.wfls-option-text.wfls-option-full-width>input[type="text"],.wfls-form-field li.wfls-option-text.wfls-option-full-width>input[type="text"]{max-width:100%;width:100%}ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:150px;max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:200px;max-width:400px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:250px;max-width:500px}}ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{width:100%;height:80px;min-width:150px;max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{min-width:200px;max-width:280px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{min-width:250px;max-width:340px}}ul.wfls-option li.wfls-option-textarea>.wfls-flex-vertical>li>textarea,.wfls-form-field li.wfls-option-textarea>.wfls-flex-vertical>li>textarea{width:100%;height:80px;box-sizing:border-box}ul.wfls-option li.wfls-option-textarea>.wfls-flex-vertical>li.wfls-option-subtitle,.wfls-form-field li.wfls-option-textarea>.wfls-flex-vertical>li.wfls-option-subtitle{width:100%;text-align:left}ul.wfls-option li.wfls-option-switch,.wfls-form-field li.wfls-option-switch{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option li.wfls-option-switch.wfls-right .wfls-switch,.wfls-form-field li.wfls-option-switch.wfls-right .wfls-switch{justify-content:flex-end !important}ul.wfls-option li.wfls-option-select,.wfls-form-field li.wfls-option-select{-webkit-flex-grow:1;flex-grow:1;text-align:right}ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.9rem}}ul.wfls-option li.wfls-option-select .wfls-option-select-option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single,.wfls-form-field li.wfls-option-select .wfls-option-select-option,.wfls-form-field li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}ul.wfls-option li.wfls-option-select .wfls-option-select-option .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfls-option-select-option .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}ul.wfls-option li.wfls-option-select .wfls-option-select-option .wfselect2-selection__arrow,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection__arrow,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfls-option-select-option .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}ul.wfls-option li.wfls-option-select .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}ul.wfls-option li.wfls-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wfls-form-field li.wfls-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:240px}@media (min-width: 768px){ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:280px}}@media (min-width: 992px){ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:320px}}ul.wfls-option.wfls-option-token .wfselect2-container--default,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple,.wfls-form-field.wfls-option-token .wfselect2-container--default,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection__choice,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection__choice,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#fff;border-color:#e2e2e2;padding:0.5rem}ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-search__field,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-search__field,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}#wfls-option-require-2fa{margin-top:1rem}#wfls-option-require-2fa>li>ul{margin-left:1rem}@media (min-width: 768px){#wfls-option-require-2fa>li>ul{margin-left:1.5rem}}#wfls-option-require-2fa>li>ul:first-of-type{margin-left:0}#wfls-option-require-2fa>li>ul>.wfls-option-checkbox{margin:0 1rem 0 0}.wfls-option-sub{padding-left:2rem !important;margin-left:30px !important}.wfls-select2-suppress-dropdown .wfselect2-results,.wfls-select2-suppress-dropdown .wfselect2-dropdown{display:none}.wfls-options-controls{direction:ltr;background:#ffffff;border-bottom:1px solid #e2e2e2;position:absolute;left:160px;right:0px;top:46px;z-index:900;padding-left:15px;padding-right:15px}@media (min-width: 616px){.wfls-options-controls{position:fixed}}.wfls-options-controls .wfls-block{margin:0}@media (min-width: 782px){.wfls-options-controls .wfls-block{margin:0.5rem 0}}.wfls-options-controls,.sticky-menu .wfls-options-controls{top:32px}.folded .wfls-options-controls{left:36px}@media only screen and (max-width: 960px){.auto-fold .wfls-options-controls{left:36px}}.rtl .wfls-options-controls{right:160px;left:0px}.rtl .folded .wfls-options-controls{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wfls-options-controls{right:36px}}@media screen and (max-width: 782px){.wfls-options-controls,.folded .wfls-options-controls,.auto-fold .wfls-options-controls,.rtl .wfls-options-controls,.rtl .folded .wfls-options-controls,.rtl .auto-fold .wfls-options-controls{left:-10px;right:0px}}.wfls-options-controls-spacer{height:45px}@media (min-width: 782px){.wfls-options-controls-spacer{height:75px}}.wfls-options-controls-spacer,.sticky-menu .wfls-options-controls-spacer{top:61px}.wordfence .wfselect2-container .wfselect2-selection--single{border:1px solid #dadada;font-weight:normal;font-size:0.8rem}#wfls-notices{margin-top:15px}#wfls-notices .wfls-admin-notice{margin-left:0px;margin-right:0px}.wfls-success-text,.wfls-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wfls-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wfls-notice-text{color:#6d798c}.wfls-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wfls-success-text{color:#11967a}.wfls-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wfls-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wfls-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wfls-premium-callout .center{text-align:center;margin:0}.wfls-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}table.wfls-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wfls-table td,table.wfls-table th{padding:0}.wfls-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wfls-table th{text-align:left}.wfls-table{width:100%;max-width:100%;margin-bottom:20px}.wfls-table>thead>tr>th,.wfls-table>thead>tr>td,.wfls-table>tbody>tr>th,.wfls-table>tbody>tr>td,.wfls-table>tfoot>tr>th,.wfls-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wfls-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wfls-table>caption+thead>tr:first-child>th,.wfls-table>caption+thead>tr:first-child>td,.wfls-table>colgroup+thead>tr:first-child>th,.wfls-table>colgroup+thead>tr:first-child>td,.wfls-table>thead:first-child>tr:first-child>th,.wfls-table>thead:first-child>tr:first-child>td{border-top:0}.wfls-table>tbody+tbody{border-top:2px solid #ddd}.wfls-table .wfls-table{background-color:#fff}.wfls-table-header-separators>thead>tr>th{border-left:2px solid #ddd}.wfls-table-header-separators>thead>tr>th:first-child{border-left:0}.wfls-table-condensed>thead>tr>th,.wfls-table-condensed>thead>tr>td,.wfls-table-condensed>tbody>tr>th,.wfls-table-condensed>tbody>tr>td,.wfls-table-condensed>tfoot>tr>th,.wfls-table-condensed>tfoot>tr>td{padding:5px}.wfls-table-expanded>thead>tr>th,.wfls-table-expanded>thead>tr>td,.wfls-table-expanded>tbody>tr>th,.wfls-table-expanded>tbody>tr>td,.wfls-table-expanded>tfoot>tr>th,.wfls-table-expanded>tfoot>tr>td{padding:0.5rem 1rem}@media (min-width: 768px){.wfls-table-expanded>thead>tr>th,.wfls-table-expanded>thead>tr>td,.wfls-table-expanded>tbody>tr>th,.wfls-table-expanded>tbody>tr>td,.wfls-table-expanded>tfoot>tr>th,.wfls-table-expanded>tfoot>tr>td{padding:1rem 1.5rem}}.wfls-table-bordered{border:1px solid #ddd}.wfls-table-bordered>thead>tr>th,.wfls-table-bordered>thead>tr>td,.wfls-table-bordered>tbody>tr>th,.wfls-table-bordered>tbody>tr>td,.wfls-table-bordered>tfoot>tr>th,.wfls-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wfls-table-bordered>thead>tr>th,.wfls-table-bordered>thead>tr>td{border-bottom-width:2px}.wfls-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wfls-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wfls-table col[class*="col-"]{position:static;float:none;display:table-column}table.wfls-table td[class*="col-"],table.wfls-table th[class*="col-"]{position:static;float:none;display:table-cell}.wfls-table>thead>tr>td.active,.wfls-table>thead>tr>th.active,.wfls-table>thead>tr.active>td,.wfls-table>thead>tr.active>th,.wfls-table>tbody>tr>td.active,.wfls-table>tbody>tr>th.active,.wfls-table>tbody>tr.active>td,.wfls-table>tbody>tr.active>th,.wfls-table>tfoot>tr>td.active,.wfls-table>tfoot>tr>th.active,.wfls-table>tfoot>tr.active>td,.wfls-table>tfoot>tr.active>th{background-color:#f5f5f5}.wfls-table-hover>tbody>tr>td.active:hover,.wfls-table-hover>tbody>tr>th.active:hover,.wfls-table-hover>tbody>tr.active:hover>td,.wfls-table-hover>tbody>tr:hover>.active,.wfls-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wfls-table>thead>tr>td.success,.wfls-table>thead>tr>th.success,.wfls-table>thead>tr.success>td,.wfls-table>thead>tr.success>th,.wfls-table>tbody>tr>td.success,.wfls-table>tbody>tr>th.success,.wfls-table>tbody>tr.success>td,.wfls-table>tbody>tr.success>th,.wfls-table>tfoot>tr>td.success,.wfls-table>tfoot>tr>th.success,.wfls-table>tfoot>tr.success>td,.wfls-table>tfoot>tr.success>th{background-color:#dff0d8}.wfls-table-hover>tbody>tr>td.success:hover,.wfls-table-hover>tbody>tr>th.success:hover,.wfls-table-hover>tbody>tr.success:hover>td,.wfls-table-hover>tbody>tr:hover>.success,.wfls-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wfls-table>thead>tr>td.info,.wfls-table>thead>tr>th.info,.wfls-table>thead>tr.info>td,.wfls-table>thead>tr.info>th,.wfls-table>tbody>tr>td.info,.wfls-table>tbody>tr>th.info,.wfls-table>tbody>tr.info>td,.wfls-table>tbody>tr.info>th,.wfls-table>tfoot>tr>td.info,.wfls-table>tfoot>tr>th.info,.wfls-table>tfoot>tr.info>td,.wfls-table>tfoot>tr.info>th{background-color:#d9edf7}.wfls-table-hover>tbody>tr>td.info:hover,.wfls-table-hover>tbody>tr>th.info:hover,.wfls-table-hover>tbody>tr.info:hover>td,.wfls-table-hover>tbody>tr:hover>.info,.wfls-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wfls-table>thead>tr>td.warning,.wfls-table>thead>tr>th.warning,.wfls-table>thead>tr.warning>td,.wfls-table>thead>tr.warning>th,.wfls-table>tbody>tr>td.warning,.wfls-table>tbody>tr>th.warning,.wfls-table>tbody>tr.warning>td,.wfls-table>tbody>tr.warning>th,.wfls-table>tfoot>tr>td.warning,.wfls-table>tfoot>tr>th.warning,.wfls-table>tfoot>tr.warning>td,.wfls-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wfls-table-hover>tbody>tr>td.warning:hover,.wfls-table-hover>tbody>tr>th.warning:hover,.wfls-table-hover>tbody>tr.warning:hover>td,.wfls-table-hover>tbody>tr:hover>.warning,.wfls-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wfls-table>thead>tr>td.danger,.wfls-table>thead>tr>th.danger,.wfls-table>thead>tr.danger>td,.wfls-table>thead>tr.danger>th,.wfls-table>tbody>tr>td.danger,.wfls-table>tbody>tr>th.danger,.wfls-table>tbody>tr.danger>td,.wfls-table>tbody>tr.danger>th,.wfls-table>tfoot>tr>td.danger,.wfls-table>tfoot>tr>th.danger,.wfls-table>tfoot>tr.danger>td,.wfls-table>tfoot>tr.danger>th{background-color:#f2dede}.wfls-table-hover>tbody>tr>td.danger:hover,.wfls-table-hover>tbody>tr>th.danger:hover,.wfls-table-hover>tbody>tr.danger:hover>td,.wfls-table-hover>tbody>tr:hover>.danger,.wfls-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wfls-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wfls-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wfls-table-responsive>.wfls-table{margin-bottom:0}.wfls-table-responsive>.wfls-table>thead>tr>th,.wfls-table-responsive>.wfls-table>thead>tr>td,.wfls-table-responsive>.wfls-table>tbody>tr>th,.wfls-table-responsive>.wfls-table>tbody>tr>td,.wfls-table-responsive>.wfls-table>tfoot>tr>th,.wfls-table-responsive>.wfls-table>tfoot>tr>td{white-space:nowrap}.wfls-table-responsive>.wfls-table-bordered{border:0}.wfls-table-responsive>.wfls-table-bordered>thead>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>thead>tr>td:first-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>td:first-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>td:first-child{border-left:0}.wfls-table-responsive>.wfls-table-bordered>thead>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>thead>tr>td:last-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>td:last-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>td:last-child{border-right:0}.wfls-table-responsive>.wfls-table-bordered>tbody>tr:last-child>th,.wfls-table-responsive>.wfls-table-bordered>tbody>tr:last-child>td,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr:last-child>th,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wfls-sortable{position:relative;padding-right:2rem !important}.wfls-sortable .wfls-sorted-ascending,.wfls-sortable .wfls-sorted-descending{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.wfls-sortable.wfls-unsorted:hover .wfls-sorted-ascending{display:block}.wfls-sortable.wfls-unsorted,.wfls-sortable.wfls-sorted-ascending,.wfls-sortable.wfls-sorted-descending{cursor:pointer}.wfls-sortable.wfls-unsorted:hover,.wfls-sortable.wfls-sorted-ascending:hover,.wfls-sortable.wfls-sorted-descending:hover{background-color:#e0e0e0}.wfls-sortable.wfls-sorted-ascending,.wfls-sortable.wfls-sorted-descending{background-color:#e0e0e0}.wfls-sortable.wfls-sorted-ascending .wfls-sorted-ascending{display:block}.wfls-sortable.wfls-sorted-descending .wfls-sorted-descending{display:block}.wfls-nav{margin-bottom:0;padding-left:0;list-style:none}.wfls-nav:before,.wfls-nav:after{content:" ";display:table}.wfls-nav:after{clear:both}.wfls-nav>li{position:relative;display:block}.wfls-nav>li>a{position:relative;display:block;padding:8px 12px}.wfls-nav>li>a:hover,.wfls-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfls-nav>li.wfls-disabled>a{color:#777}.wfls-nav>li.wfls-disabled>a:hover,.wfls-nav>li.wfls-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wfls-nav .wfls-open>a,.wfls-nav .wfls-open>a:hover,.wfls-nav .wfls-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wfls-nav>li>a>img{max-width:none}.wfls-nav-tabs{border-bottom:1px solid #d0d0d0}.wfls-nav-tabs>li{float:left;margin-bottom:-1px}.wfls-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wfls-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #d0d0d0}.wfls-nav-tabs>li.wfls-active>a,.wfls-nav-tabs>li.wfls-active>a:hover,.wfls-nav-tabs>li.wfls-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wfls-nav-pills>li{float:left}.wfls-nav-pills>li>a{border-radius:4px;text-decoration:none;position:relative;display:block;padding:8px 12px}.wfls-nav-pills>li>a:hover,.wfls-nav-pills>li>a:focus{text-decoration:none !important;background-color:#e2e2e2}.wfls-nav-pills>li+li{margin-left:2px}.wfls-nav-pills>li.wfls-active>a,.wfls-nav-pills>li.wfls-active>a:hover,.wfls-nav-pills>li.wfls-active>a:focus{color:#fff;background-color:#00709e}.wfls-nav-pills.wfls-nav-pills-bordered>li>a{border:1px solid #e2e2e2}.wfls-nav-pills.wfls-nav-pills-connected>li>a{border-radius:0;border-right-width:0px}.wfls-nav-pills.wfls-nav-pills-connected>li+li{margin-left:0}.wfls-nav-pills.wfls-nav-pills-connected>li.active+li>a{border-left-width:0px}.wfls-nav-pills.wfls-nav-pills-connected>li:first-of-type>a{-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px;border-radius:4px 0 0 4px}.wfls-nav-pills.wfls-nav-pills-connected>li:last-of-type>a{-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0;border-radius:0 4px 4px 0;border-right-width:1px}.wfls-nav-stacked>li{float:none}.wfls-nav-stacked>li+li{margin-top:2px;margin-left:0}.wfls-nav-justified,.wfls-nav-tabs.wfls-nav-justified{width:100%}.wfls-nav-justified>li,.wfls-nav-tabs.wfls-nav-justified>li{float:none}.wfls-nav-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{text-align:center;margin-bottom:5px}.wfls-nav-justified>.wfls-dropdown .wfls-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wfls-nav-justified>li,.wfls-nav-tabs.wfls-nav-justified>li{display:table-cell;width:1%}.wfls-nav-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{margin-bottom:0}}.wfls-nav-tabs-justified,.wfls-nav-tabs.wfls-nav-justified{border-bottom:0}.wfls-nav-tabs-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{margin-right:0;border-radius:4px}.wfls-nav-tabs-justified>.wfls-active>a,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a,.wfls-nav-tabs-justified>.wfls-active>a:hover,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:hover,.wfls-nav-tabs-justified>.wfls-active>a:focus,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wfls-nav-tabs-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wfls-nav-tabs-justified>.wfls-active>a,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a,.wfls-nav-tabs-justified>.wfls-active>a:hover,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:hover,.wfls-nav-tabs-justified>.wfls-active>a:focus,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:focus{border-bottom-color:#fff}}.wfls-tab-content>.wfls-tab-pane{display:none}.wfls-tab-content>.wfls-active{display:block}.wfls-nav-tabs .wfls-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wfls-navbar-brand:hover,.wfls-navbar-brand:focus{text-decoration:none}.wfls-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wfls-navbar-brand,.navbar>.container-fluid .wfls-navbar-brand{margin-left:-8px}}.wfls-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wfls-dropup,.wfls-dropdown{position:relative}.wfls-dropdown-toggle:focus{outline:0}.wfls-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wfls-dropdown-menu .wfls-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wfls-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wfls-dropdown-menu>li>a:hover,.wfls-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wfls-dropdown-menu>.wfls-active>a,.wfls-dropdown-menu>.wfls-active>a:hover,.wfls-dropdown-menu>.wfls-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wfls-dropdown-menu>.wfls-disabled>a,.wfls-dropdown-menu>.wfls-disabled>a:hover,.wfls-dropdown-menu>.wfls-disabled>a:focus{color:#777}.wfls-dropdown-menu>.wfls-disabled>a:hover,.wfls-dropdown-menu>.wfls-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wfls-open>.wfls-dropdown-menu{display:block}.wfls-open>a{outline:0}.wfls-dropdown-menu-right{left:auto;right:0}.wfls-dropdown-menu-left{left:0;right:auto}.wfls-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wfls-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wfls-pull-right>.wfls-dropdown-menu{right:0;left:auto}.wfls-dropup .wfls-caret,.wfls-navbar-fixed-bottom .wfls-dropdown .wfls-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wfls-dropup .wfls-dropdown-menu,.wfls-navbar-fixed-bottom .wfls-dropdown .wfls-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wfls-navbar-right .wfls-dropdown-menu{right:0;left:auto}.wfls-navbar-right .wfls-dropdown-menu-left{left:0;right:auto}}.wfls-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}table.wfls-dataTable{width:auto;max-width:800px;clear:both;border-collapse:collapse;border-spacing:0}table.wfls-dataTable>thead th,table.wfls-dataTable>tfoot th{font-weight:bold}table.wfls-dataTable>thead th,table.wfls-dataTable>thead td{cursor:pointer;text-align:left;font-size:11px;border:1px solid #ccc;padding:8px 4px 5px 9px;text-transform:uppercase}table.wfls-dataTable>thead th:active,table.wfls-dataTable>thead td:active{outline:none}table.wfls-dataTable>tfoot th,table.wfls-dataTable>tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.wfls-dataTable>thead .sorting,table.wfls-dataTable>thead .sorting_asc,table.wfls-dataTable>thead .sorting_desc{cursor:pointer;*cursor:hand}table.wfls-dataTable>thead .sorting,table.wfls-dataTable>thead .sorting_asc,table.wfls-dataTable>thead .sorting_desc,table.wfls-dataTable>thead .sorting_asc_disabled,table.wfls-dataTable>thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.wfls-dataTable>thead .sorting{background-image:url(../img/sort_both.png)}table.wfls-dataTable>thead .sorting_asc{background-image:url(../img/sort_asc.png)}table.wfls-dataTable>thead .sorting_desc{background-image:url(../img/sort_desc.png)}table.wfls-dataTable>thead .sorting_asc_disabled{background-image:url(../img/sort_asc_disabled.png)}table.wfls-dataTable>thead .sorting_desc_disabled{background-image:url(../img/sort_desc_disabled.png)}table.wfls-dataTable>tbody>tr{background-color:#ffffff}table.wfls-dataTable>tbody>tr.selected{background-color:#B0BED9}table.wfls-dataTable>tbody>tr>th,table.wfls-dataTable>tbody>tr>td{padding:5px 8px}table.wfls-dataTable.row-border>tbody>tr>th,table.wfls-dataTable.row-border>tbody>tr>td,table.wfls-dataTable.display>tbody>tr>th,table.wfls-dataTable.display>tbody>tr>td{border:1px solid #cccccc}table.wfls-dataTable.row-border>tbody>tr:first-child>th,table.wfls-dataTable.row-border>tbody>tr:first-child>td,table.wfls-dataTable.display>tbody>tr:first-child>th,table.wfls-dataTable.display>tbody>tr:first-child>td{border-top:none}table.wfls-dataTable.cell-border>tbody>tr>th,table.wfls-dataTable.cell-border>tbody>tr>td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.wfls-dataTable.cell-border>tbody>tr>th:first-child,table.wfls-dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid #ddd}table.wfls-dataTable.cell-border>tbody>tr:first-child>th,table.wfls-dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.wfls-dataTable.stripe>tbody>tr.odd,table.wfls-dataTable.display>tbody>tr.odd{background-color:#f9f9f9}table.wfls-dataTable.stripe>tbody>tr.odd.selected,table.wfls-dataTable.display>tbody>tr.odd.selected{background-color:#acbad4}table.wfls-dataTable.hover>tbody>tr:hover,table.wfls-dataTable.display>tbody>tr:hover{background-color:#f6f6f6}table.wfls-dataTable.hover>tbody>tr:hover.selected,table.wfls-dataTable.display>tbody>tr:hover.selected{background-color:#aab7d1}table.wfls-dataTable.order-column>tbody>tr>.sorting_1,table.wfls-dataTable.order-column>tbody>tr>.sorting_2,table.wfls-dataTable.order-column>tbody>tr>.sorting_3,table.wfls-dataTable.display tbody>tr>.sorting_1,table.wfls-dataTable.display>tbody>tr>.sorting_2,table.wfls-dataTable.display>tbody>tr>.sorting_3{background-color:#fafafa}table.wfls-dataTable.order-column>tbody>tr.selected>.sorting_1,table.wfls-dataTable.order-column>tbody>tr.selected>.sorting_2,table.wfls-dataTable.order-column>tbody>tr.selected>.sorting_3,table.wfls-dataTable.display>tbody>tr.selected>.sorting_1,table.wfls-dataTable.display>tbody>tr.selected>.sorting_2,table.wfls-dataTable.display>tbody>tr.selected>.sorting_3{background-color:#acbad5}table.wfls-dataTable.display>tbody>tr.odd>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{background-color:#f1f1f1}table.wfls-dataTable.display>tbody>tr.odd>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{background-color:#f3f3f3}table.wfls-dataTable.display>tbody>tr.odd>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{background-color:whitesmoke}table.wfls-dataTable.display>tbody>tr.odd.selected>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.wfls-dataTable.display>tbody>tr.odd.selected>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.wfls-dataTable.display>tbody>tr.odd.selected>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.wfls-dataTable.display>tbody>tr.even>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.even>.sorting_1{background-color:#fafafa}table.wfls-dataTable.display>tbody>tr.even>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.even>.sorting_2{background-color:#fcfcfc}table.wfls-dataTable.display>tbody>tr.even>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.even>.sorting_3{background-color:#fefefe}table.wfls-dataTable.display>tbody>tr.even.selected>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.wfls-dataTable.display>tbody>tr.even.selected>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.wfls-dataTable.display>tbody>tr.even.selected>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.wfls-dataTable.display>tbody>tr:hover>.sorting_1,table.wfls-dataTable.order-column.hover>tbody>tr:hover>.sorting_1{background-color:#eaeaea}table.wfls-dataTable.display>tbody>tr:hover>.sorting_2,table.wfls-dataTable.order-column.hover>tbody>tr:hover>.sorting_2{background-color:#ececec}table.wfls-dataTable.display>tbody>tr:hover>.sorting_3,table.wfls-dataTable.order-column.hover>tbody>tr:hover>.sorting_3{background-color:#efefef}table.wfls-dataTable.display>tbody>tr:hover.selected>.sorting_1,table.wfls-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_1{background-color:#a2aec7}table.wfls-dataTable.display>tbody>tr:hover.selected>.sorting_2,table.wfls-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.wfls-dataTable.display>tbody>tr:hover.selected>.sorting_3,table.wfls-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.wfls-dataTable.no-footer{border-bottom:1px solid #111}table.wfls-dataTable.nowrap th,table.wfls-dataTable.nowrap td{white-space:nowrap}table.wfls-dataTable.compact thead th,table.wfls-dataTable.compact thead td{padding:4px 17px 4px 4px}table.wfls-dataTable.compact tfoot th,table.wfls-dataTable.compact tfoot td{padding:4px}table.wfls-dataTable.compact>tbody>tr>th,table.wfls-dataTable.compact>tbody>tr>td{padding:4px}table.wfls-dataTable th.dt-left,table.wfls-dataTable td.dt-left{text-align:left}table.wfls-dataTable th.dt-center,table.wfls-dataTable td.dt-center,table.wfls-dataTable td.dataTables_empty{text-align:center}table.wfls-dataTable th.dt-right,table.wfls-dataTable td.dt-right{text-align:right}table.wfls-dataTable th.dt-justify,table.wfls-dataTable td.dt-justify{text-align:justify}table.wfls-dataTable th.dt-nowrap,table.wfls-dataTable td.dt-nowrap{white-space:nowrap}table.wfls-dataTable thead th.dt-head-left,table.wfls-dataTable thead td.dt-head-left,table.wfls-dataTable tfoot th.dt-head-left,table.wfls-dataTable tfoot td.dt-head-left{text-align:left}table.wfls-dataTable thead th.dt-head-center,table.wfls-dataTable thead td.dt-head-center,table.wfls-dataTable tfoot th.dt-head-center,table.wfls-dataTable tfoot td.dt-head-center{text-align:center}table.wfls-dataTable thead th.dt-head-right,table.wfls-dataTable thead td.dt-head-right,table.wfls-dataTable tfoot th.dt-head-right,table.wfls-dataTable tfoot td.dt-head-right{text-align:right}table.wfls-dataTable thead th.dt-head-justify,table.wfls-dataTable thead td.dt-head-justify,table.wfls-dataTable tfoot th.dt-head-justify,table.wfls-dataTable tfoot td.dt-head-justify{text-align:justify}table.wfls-dataTable thead th.dt-head-nowrap,table.wfls-dataTable thead td.dt-head-nowrap,table.wfls-dataTable tfoot th.dt-head-nowrap,table.wfls-dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.wfls-dataTable>tbody>tr>th.dt-body-left,table.wfls-dataTable>tbody>tr>td.dt-body-left{text-align:left}table.wfls-dataTable>tbody>tr>th.dt-body-center,table.wfls-dataTable>tbody>tr>td.dt-body-center{text-align:center}table.wfls-dataTable>tbody>tr>th.dt-body-right,table.wfls-dataTable>tbody>tr>td.dt-body-right{text-align:right}table.wfls-dataTable>tbody>tr>th.dt-body-justify,table.wfls-dataTable>tbody>tr>td.dt-body-justify{text-align:justify}table.wfls-dataTable>tbody>tr>th.dt-body-nowrap,table.wfls-dataTable>tbody>tr>td.dt-body-nowrap{white-space:nowrap}table.wfls-dataTable table.dataTable,table.wfls-dataTable th,table.wfls-dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.wfls-dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.wfls-dataTables_wrapper .dataTables_length{float:left}.wfls-dataTables_wrapper .dataTables_filter{float:right;text-align:right}.wfls-dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.wfls-dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.wfls-dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.current,.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #ffffff 0%,#dcdcdc 100%)}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%,#111111 100%)}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.wfls-dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.wfls-dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.wfls-dataTables_wrapper .dataTables_length,.wfls-dataTables_wrapper .dataTables_filter,.wfls-dataTables_wrapper .dataTables_info,.wfls-dataTables_wrapper .dataTables_processing,.wfls-dataTables_wrapper .dataTables_paginate{color:#333}.wfls-dataTables_wrapper .dataTables_scroll{clear:both}.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.wfls-dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.wfls-dataTables_wrapper.no-footer div.dataTables_scrollHead table,.wfls-dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.wfls-dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.wfls-dataTables_wrapper .dataTables_info,.wfls-dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.wfls-dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.wfls-dataTables_wrapper .dataTables_length,.wfls-dataTables_wrapper .dataTables_filter{float:none;text-align:center}.wfls-dataTables_wrapper .dataTables_filter{margin-top:0.5em}}.wfls-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wfls-alert h4{margin-top:0;color:inherit}.wfls-alert .wfls-alert-link{font-weight:bold}.wfls-alert>p,.wfls-alert>ul{margin-bottom:0}.wfls-alert>p+p{margin-top:5px}.wfls-alert-dismissable,.wfls-alert-dismissible{padding-right:35px}.wfls-alert-dismissable .close,.wfls-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wfls-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wfls-alert-success hr{border-top-color:#c9e2b3}.wfls-alert-success .alert-link{color:#2b542c}.wfls-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wfls-alert-info hr{border-top-color:#a6e1ec}.wfls-alert-info .alert-link{color:#245269}.wfls-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wfls-alert-warning hr{border-top-color:#f7e1b5}.wfls-alert-warning .alert-link{color:#66512c}.wfls-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wfls-alert-danger hr{border-top-color:#e4b9c0}.wfls-alert-danger .alert-link{color:#843534}#wfls-onboarding-standalone-modal{margin-bottom:1rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;background-color:#00709e;color:#ffffff;padding:1rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header #wfls-onboarding-standalone-modal-dismiss{font-size:1.35rem;color:#ffffff;text-decoration:none}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header #wfls-onboarding-standalone-modal-dismiss:hover{color:#f1f1f1}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header>*:last-child{-webkit-flex-grow:1;flex-grow:1;text-align:right}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-content{background-color:#ffffff;padding:1rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-content>p{margin-bottom:0}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-content>p:first-child{margin-top:0}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-footer{background-color:#525355;color:#ffffff;padding:0.5rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-footer>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-footer>ul>li{margin:0;padding:0 0 0 1rem}#toplevel_page_WFLS .wp-menu-image img{max-width:16px;max-height:16px}
|
|
modules/login-security/css/admin.1629122067.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.wfls-clearfix:before,.wfls-clearfix:after{content:" ";display:table}.wfls-clearfix:after{clear:both}.wfls-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wfls-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wfls-btn:focus,.wfls-btn.wfls-focus,.wfls-btn:active:focus,.wfls-btn:active.wfls-focus,.wfls-btn.wfls-active:focus,.wfls-btn.wfls-active.wfls-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wfls-btn:hover,.wfls-btn:focus,.wfls-btn.wfls-focus{color:#00709e;text-decoration:none !important}.wfls-btn:active,.wfls-btn.wfls-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn.wfls-disabled,.wfls-btn[disabled],.wfls-btn[readonly],fieldset[disabled] .wfls-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wfls-btn{text-decoration:none}a.wfls-btn.wfls-disabled,fieldset[disabled] a.wfls-btn{cursor:not-allowed;pointer-events:none}.wfls-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wfls-btn-default:focus,.wfls-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wfls-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active,.wfls-btn-default.active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active:hover,.wfls-btn-default:active:focus,.wfls-btn-default:active.focus,.wfls-btn-default.active:hover,.wfls-btn-default.active:focus,.wfls-btn-default.active.focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wfls-btn-default:active,.wfls-btn-default.wfls-active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{background-image:none}.wfls-btn-default.wfls-disabled,.wfls-btn-default[disabled],.wfls-btn-default[readonly],fieldset[disabled] .wfls-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}.wfls-btn-default.wfls-disabled:hover,.wfls-btn-default.wfls-disabled:focus,.wfls-btn-default.wfls-disabled.wfls-focus,.wfls-btn-default[disabled]:hover,.wfls-btn-default[disabled]:focus,.wfls-btn-default[disabled].wfls-focus,.wfls-btn-default[readonly]:hover,.wfls-btn-default[readonly]:focus,.wfls-btn-default[readonly].wfls-focus,fieldset[disabled] .wfls-btn-default:hover,fieldset[disabled] .wfls-btn-default:focus,fieldset[disabled] .wfls-btn-default.wfls-focus{background-color:#fff;border-color:#00709e}.wfls-btn-default .wfls-badge{color:#fff;background-color:#00709e}.wfls-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wfls-btn-primary:focus,.wfls-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wfls-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active,.wfls-btn-primary.active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active:hover,.wfls-btn-primary:active:focus,.wfls-btn-primary:active.focus,.wfls-btn-primary.active:hover,.wfls-btn-primary.active:focus,.wfls-btn-primary.active.focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wfls-btn-primary:active,.wfls-btn-primary.wfls-active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{background-image:none}.wfls-btn-primary.wfls-disabled,.wfls-btn-primary[disabled],.wfls-btn-primary[readonly],fieldset[disabled] .wfls-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}.wfls-btn-primary.wfls-disabled:hover,.wfls-btn-primary.wfls-disabled:focus,.wfls-btn-primary.wfls-disabled.wfls-focus,.wfls-btn-primary[disabled]:hover,.wfls-btn-primary[disabled]:focus,.wfls-btn-primary[disabled].wfls-focus,.wfls-btn-primary[readonly]:hover,.wfls-btn-primary[readonly]:focus,.wfls-btn-primary[readonly].wfls-focus,fieldset[disabled] .wfls-btn-primary:hover,fieldset[disabled] .wfls-btn-primary:focus,fieldset[disabled] .wfls-btn-primary.wfls-focus{background-color:#00709e;border-color:#005e85}.wfls-btn-primary .wfls-badge{color:#00709e;background-color:#fff}.wfls-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success:focus,.wfls-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wfls-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active,.wfls-btn-success.active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active:hover,.wfls-btn-success:active:focus,.wfls-btn-success:active.focus,.wfls-btn-success.active:hover,.wfls-btn-success.active:focus,.wfls-btn-success.active.focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wfls-btn-success:active,.wfls-btn-success.wfls-active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{background-image:none}.wfls-btn-success.wfls-disabled,.wfls-btn-success[disabled],.wfls-btn-success[readonly],fieldset[disabled] .wfls-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed;opacity:0.75}.wfls-btn-success.wfls-disabled:hover,.wfls-btn-success.wfls-disabled:focus,.wfls-btn-success.wfls-disabled.wfls-focus,.wfls-btn-success[disabled]:hover,.wfls-btn-success[disabled]:focus,.wfls-btn-success[disabled].wfls-focus,.wfls-btn-success[readonly]:hover,.wfls-btn-success[readonly]:focus,.wfls-btn-success[readonly].wfls-focus,fieldset[disabled] .wfls-btn-success:hover,fieldset[disabled] .wfls-btn-success:focus,fieldset[disabled] .wfls-btn-success.wfls-focus{background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success .wfls-badge{color:#5cb85c;background-color:#fff}.wfls-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info:focus,.wfls-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wfls-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active,.wfls-btn-info.active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active:hover,.wfls-btn-info:active:focus,.wfls-btn-info:active.focus,.wfls-btn-info.active:hover,.wfls-btn-info.active:focus,.wfls-btn-info.active.focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wfls-btn-info:active,.wfls-btn-info.wfls-active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{background-image:none}.wfls-btn-info.wfls-disabled,.wfls-btn-info[disabled],.wfls-btn-info[readonly],fieldset[disabled] .wfls-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed;opacity:0.75}.wfls-btn-info.wfls-disabled:hover,.wfls-btn-info.wfls-disabled:focus,.wfls-btn-info.wfls-disabled.wfls-focus,.wfls-btn-info[disabled]:hover,.wfls-btn-info[disabled]:focus,.wfls-btn-info[disabled].wfls-focus,.wfls-btn-info[readonly]:hover,.wfls-btn-info[readonly]:focus,.wfls-btn-info[readonly].wfls-focus,fieldset[disabled] .wfls-btn-info:hover,fieldset[disabled] .wfls-btn-info:focus,fieldset[disabled] .wfls-btn-info.wfls-focus{background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info .wfls-badge{color:#5bc0de;background-color:#fff}.wfls-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning:focus,.wfls-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wfls-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active,.wfls-btn-warning.active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active:hover,.wfls-btn-warning:active:focus,.wfls-btn-warning:active.focus,.wfls-btn-warning.active:hover,.wfls-btn-warning.active:focus,.wfls-btn-warning.active.focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wfls-btn-warning:active,.wfls-btn-warning.wfls-active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{background-image:none}.wfls-btn-warning.wfls-disabled,.wfls-btn-warning[disabled],.wfls-btn-warning[readonly],fieldset[disabled] .wfls-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed;opacity:0.75}.wfls-btn-warning.wfls-disabled:hover,.wfls-btn-warning.wfls-disabled:focus,.wfls-btn-warning.wfls-disabled.wfls-focus,.wfls-btn-warning[disabled]:hover,.wfls-btn-warning[disabled]:focus,.wfls-btn-warning[disabled].wfls-focus,.wfls-btn-warning[readonly]:hover,.wfls-btn-warning[readonly]:focus,.wfls-btn-warning[readonly].wfls-focus,fieldset[disabled] .wfls-btn-warning:hover,fieldset[disabled] .wfls-btn-warning:focus,fieldset[disabled] .wfls-btn-warning.wfls-focus{background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning .wfls-badge{color:#f0ad4e;background-color:#fff}.wfls-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wfls-btn-danger:focus,.wfls-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wfls-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active,.wfls-btn-danger.active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active:hover,.wfls-btn-danger:active:focus,.wfls-btn-danger:active.focus,.wfls-btn-danger.active:hover,.wfls-btn-danger.active:focus,.wfls-btn-danger.active.focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wfls-btn-danger:active,.wfls-btn-danger.wfls-active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{background-image:none}.wfls-btn-danger.wfls-disabled,.wfls-btn-danger[disabled],.wfls-btn-danger[readonly],fieldset[disabled] .wfls-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed;opacity:0.75}.wfls-btn-danger.wfls-disabled:hover,.wfls-btn-danger.wfls-disabled:focus,.wfls-btn-danger.wfls-disabled.wfls-focus,.wfls-btn-danger[disabled]:hover,.wfls-btn-danger[disabled]:focus,.wfls-btn-danger[disabled].wfls-focus,.wfls-btn-danger[readonly]:hover,.wfls-btn-danger[readonly]:focus,.wfls-btn-danger[readonly].wfls-focus,fieldset[disabled] .wfls-btn-danger:hover,fieldset[disabled] .wfls-btn-danger:focus,fieldset[disabled] .wfls-btn-danger.wfls-focus{background-color:#930000;border-color:#7a0000}.wfls-btn-danger .wfls-badge{color:#930000;background-color:#fff}.wfls-btn-callout{font-weight:600;text-transform:uppercase}.wfls-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wfls-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wfls-btn-link,.wfls-btn-link:active,.wfls-btn-link.wfls-active,.wfls-btn-link[disabled],fieldset[disabled] .wfls-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wfls-btn-link,.wfls-btn-link:hover,.wfls-btn-link:focus,.wfls-btn-link:active{border-color:transparent}.wfls-btn-link:hover,.wfls-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wfls-btn-link[disabled]:hover,.wfls-btn-link[disabled]:focus,fieldset[disabled] .wfls-btn-link:hover,fieldset[disabled] .wfls-btn-link:focus{color:#777;text-decoration:none}.wfls-btn-lg,.wfls-btn-group-lg>.wfls-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-btn-sm,.wfls-btn-group-sm>.wfls-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-xs,.wfls-btn-group-xs>.wfls-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-block{display:block;width:100%}.wfls-btn-block+.wfls-btn-block{margin-top:5px}input[type="submit"].wfls-btn-block,input[type="reset"].wfls-btn-block,input[type="button"].wfls-btn-block{width:100%}.wfls-btn-group,.wfls-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wfls-btn-group>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn{position:relative;float:left}.wfls-btn-group>.wfls-btn:hover,.wfls-btn-group>.wfls-btn:focus,.wfls-btn-group>.wfls-btn:active,.wfls-btn-group>.wfls-btn.wfls-active,.wfls-btn-group-vertical>.wfls-btn:hover,.wfls-btn-group-vertical>.wfls-btn:focus,.wfls-btn-group-vertical>.wfls-btn:active,.wfls-btn-group-vertical>.wfls-btn.wfls-active{z-index:2}.wfls-btn-group .wfls-btn+.wfls-btn,.wfls-btn-group .wfls-btn+.wfls-btn-group,.wfls-btn-group .wfls-btn-group+.wfls-btn,.wfls-btn-group .wfls-btn-group+.wfls-btn-group{margin-left:-1px}.wfls-btn-toolbar{margin-left:-5px}.wfls-btn-toolbar:before,.wfls-btn-toolbar:after{content:" ";display:table}.wfls-btn-toolbar:after{clear:both}.wfls-btn-toolbar .wfls-btn,.wfls-btn-toolbar .wfls-btn-group,.wfls-btn-toolbar .wfls-input-group{float:left}.wfls-btn-toolbar>.wfls-btn,.wfls-btn-toolbar>.wfls-btn-group,.wfls-btn-toolbar>.wfls-input-group{margin-left:5px}.wfls-btn-group>.wfls-btn:not(:first-child):not(:last-child):not(.wfls-dropdown-toggle){border-radius:0}.wfls-btn-group>.wfls-btn:first-child{margin-left:0}.wfls-btn-group>.wfls-btn:first-child:not(:last-child):not(.wfls-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn:last-child:not(:first-child),.wfls-btn-group>.wfls-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group>.wfls-btn-group{float:left}.wfls-btn-group>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group .wfls-dropdown-toggle:active,.wfls-btn-group.wfls-open .wfls-dropdown-toggle{outline:0}.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:8px;padding-right:8px}.wfls-btn-group>.wfls-btn-lg+.wfls-dropdown-toggle,.wfls-btn-group-lg.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:12px;padding-right:12px}.wfls-btn-group.open .wfls-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn-group.open .wfls-dropdown-toggle.wfls-btn-link{-webkit-box-shadow:none;box-shadow:none}.wfls-btn .wfls-caret{margin-left:0}.wfls-btn-lg .wfls-caret,.wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:5px 5px 0;border-bottom-width:0}.wfls-dropup .wfls-btn-lg .wfls-caret,.wfls-dropup .wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:0 5px 5px}.wfls-btn-group-vertical>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{display:block;float:none;width:100%;max-width:100%}.wfls-btn-group-vertical>.wfls-btn-group:before,.wfls-btn-group-vertical>.wfls-btn-group:after{content:" ";display:table}.wfls-btn-group-vertical>.wfls-btn-group:after{clear:both}.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{float:none}.wfls-btn-group-vertical>.wfls-btn+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn+.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn-group{margin-top:-1px;margin-left:0}.wfls-btn-group-vertical>.wfls-btn:not(:first-child):not(:last-child){border-radius:0}.wfls-btn-group-vertical>.wfls-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-btn-group-vertical>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wfls-btn-group-justified>.wfls-btn,.wfls-btn-group-justified>.wfls-btn-group{float:none;display:table-cell;width:1%}.wfls-btn-group-justified>.wfls-btn-group .wfls-btn{width:100%}.wfls-btn-group-justified>.wfls-btn-group .wfls-dropdown-menu{left:auto}[data-toggle="buttons"]>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn input[type="checkbox"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wfls-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wfls-pagination>li{display:inline}.wfls-pagination>li>a,.wfls-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wfls-pagination>li:first-child>a,.wfls-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wfls-pagination>li:last-child>a,.wfls-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-pagination>li>a:hover,.wfls-pagination>li>a:focus,.wfls-pagination>li>span:hover,.wfls-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wfls-pagination>.wfls-active>a,.wfls-pagination>.wfls-active>a:hover,.wfls-pagination>.wfls-active>a:focus,.wfls-pagination>.wfls-active>span,.wfls-pagination>.wfls-active>span:hover,.wfls-pagination>.wfls-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wfls-pagination>.wfls-disabled>span,.wfls-pagination>.wfls-disabled>span:hover,.wfls-pagination>.wfls-disabled>span:focus,.wfls-pagination>.wfls-disabled>a,.wfls-pagination>.wfls-disabled>a:hover,.wfls-pagination>.wfls-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wfls-pagination-lg>li>a,.wfls-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wfls-pagination-lg>li:first-child>a,.wfls-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-pagination-lg>li:last-child>a,.wfls-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-pagination-sm>li>a,.wfls-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wfls-pagination-sm>li:first-child>a,.wfls-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wfls-pagination-sm>li:last-child>a,.wfls-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}@-ms-viewport{width:device-width}.wfls-visible-xs{display:none !important}.wfls-visible-sm{display:none !important}.wfls-visible-md{display:none !important}.wfls-visible-lg{display:none !important}.wfls-visible-xs-block,.wfls-visible-xs-inline,.wfls-visible-xs-inline-block,.wfls-visible-sm-block,.wfls-visible-sm-inline,.wfls-visible-sm-inline-block,.wfls-visible-md-block,.wfls-visible-md-inline,.wfls-visible-md-inline-block,.wfls-visible-lg-block,.wfls-visible-lg-inline,.wfls-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wfls-visible-xs{display:block !important}table.wfls-visible-xs{display:table !important}tr.wfls-visible-xs{display:table-row !important}th.wfls-visible-xs,td.wfls-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wfls-visible-xs-block{display:block !important}}@media (max-width: 767px){.wfls-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wfls-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm{display:block !important}table.wfls-visible-sm{display:table !important}tr.wfls-visible-sm{display:table-row !important}th.wfls-visible-sm,td.wfls-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md{display:block !important}table.wfls-visible-md{display:table !important}tr.wfls-visible-md{display:table-row !important}th.wfls-visible-md,td.wfls-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wfls-visible-lg{display:block !important}table.wfls-visible-lg{display:table !important}tr.wfls-visible-lg{display:table-row !important}th.wfls-visible-lg,td.wfls-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wfls-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wfls-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wfls-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wfls-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-hidden-md{display:none !important}}@media (min-width: 1200px){.wfls-hidden-lg{display:none !important}}.wfls-visible-print{display:none !important}@media print{.wfls-visible-print{display:block !important}table.wfls-visible-print{display:table !important}tr.wfls-visible-print{display:table-row !important}th.wfls-visible-print,td.wfls-visible-print{display:table-cell !important}}.wfls-visible-print-block{display:none !important}@media print{.wfls-visible-print-block{display:block !important}}.wfls-visible-print-inline{display:none !important}@media print{.wfls-visible-print-inline{display:inline !important}}.wfls-visible-print-inline-block{display:none !important}@media print{.wfls-visible-print-inline-block{display:inline-block !important}}@media print{.wfls-hidden-print{display:none !important}}.wfls-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wfls-container:before,.wfls-container:after{content:" ";display:table}.wfls-container:after{clear:both}@media (min-width: 768px){.wfls-container{width:750px}}@media (min-width: 992px){.wfls-container{width:970px}}@media (min-width: 1200px){.wfls-container{width:1170px}}.wfls-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wfls-container-fluid:before,.wfls-container-fluid:after{content:" ";display:table}.wfls-container-fluid:after{clear:both}.wfls-row{margin-left:-15px;margin-right:-15px}.wfls-row:before,.wfls-row:after{content:" ";display:table}.wfls-row:after{clear:both}.wfls-col-xs-1,.wfls-col-sm-1,.wfls-col-md-1,.wfls-col-lg-1,.wfls-col-xs-2,.wfls-col-sm-2,.wfls-col-md-2,.wfls-col-lg-2,.wfls-col-xs-3,.wfls-col-sm-3,.wfls-col-md-3,.wfls-col-lg-3,.wfls-col-xs-4,.wfls-col-sm-4,.wfls-col-md-4,.wfls-col-lg-4,.wfls-col-xs-5,.wfls-col-sm-5,.wfls-col-md-5,.wfls-col-lg-5,.wfls-col-xs-6,.wfls-col-sm-6,.wfls-col-md-6,.wfls-col-lg-6,.wfls-col-xs-7,.wfls-col-sm-7,.wfls-col-md-7,.wfls-col-lg-7,.wfls-col-xs-8,.wfls-col-sm-8,.wfls-col-md-8,.wfls-col-lg-8,.wfls-col-xs-9,.wfls-col-sm-9,.wfls-col-md-9,.wfls-col-lg-9,.wfls-col-xs-10,.wfls-col-sm-10,.wfls-col-md-10,.wfls-col-lg-10,.wfls-col-xs-11,.wfls-col-sm-11,.wfls-col-md-11,.wfls-col-lg-11,.wfls-col-xs-12,.wfls-col-sm-12,.wfls-col-md-12,.wfls-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wfls-col-xs-1,.wfls-col-xs-2,.wfls-col-xs-3,.wfls-col-xs-4,.wfls-col-xs-5,.wfls-col-xs-6,.wfls-col-xs-7,.wfls-col-xs-8,.wfls-col-xs-9,.wfls-col-xs-10,.wfls-col-xs-11,.wfls-col-xs-12{float:left}.wfls-col-xs-1{width:8.33333%}.wfls-col-xs-2{width:16.66667%}.wfls-col-xs-3{width:25%}.wfls-col-xs-4{width:33.33333%}.wfls-col-xs-5{width:41.66667%}.wfls-col-xs-6{width:50%}.wfls-col-xs-7{width:58.33333%}.wfls-col-xs-8{width:66.66667%}.wfls-col-xs-9{width:75%}.wfls-col-xs-10{width:83.33333%}.wfls-col-xs-11{width:91.66667%}.wfls-col-xs-12{width:100%}.wfls-col-xs-pull-0{right:auto}.wfls-col-xs-pull-1{right:8.33333%}.wfls-col-xs-pull-2{right:16.66667%}.wfls-col-xs-pull-3{right:25%}.wfls-col-xs-pull-4{right:33.33333%}.wfls-col-xs-pull-5{right:41.66667%}.wfls-col-xs-pull-6{right:50%}.wfls-col-xs-pull-7{right:58.33333%}.wfls-col-xs-pull-8{right:66.66667%}.wfls-col-xs-pull-9{right:75%}.wfls-col-xs-pull-10{right:83.33333%}.wfls-col-xs-pull-11{right:91.66667%}.wfls-col-xs-pull-12{right:100%}.wfls-col-xs-push-0{left:auto}.wfls-col-xs-push-1{left:8.33333%}.wfls-col-xs-push-2{left:16.66667%}.wfls-col-xs-push-3{left:25%}.wfls-col-xs-push-4{left:33.33333%}.wfls-col-xs-push-5{left:41.66667%}.wfls-col-xs-push-6{left:50%}.wfls-col-xs-push-7{left:58.33333%}.wfls-col-xs-push-8{left:66.66667%}.wfls-col-xs-push-9{left:75%}.wfls-col-xs-push-10{left:83.33333%}.wfls-col-xs-push-11{left:91.66667%}.wfls-col-xs-push-12{left:100%}.wfls-col-xs-offset-0{margin-left:0%}.wfls-col-xs-offset-1{margin-left:8.33333%}.wfls-col-xs-offset-2{margin-left:16.66667%}.wfls-col-xs-offset-3{margin-left:25%}.wfls-col-xs-offset-4{margin-left:33.33333%}.wfls-col-xs-offset-5{margin-left:41.66667%}.wfls-col-xs-offset-6{margin-left:50%}.wfls-col-xs-offset-7{margin-left:58.33333%}.wfls-col-xs-offset-8{margin-left:66.66667%}.wfls-col-xs-offset-9{margin-left:75%}.wfls-col-xs-offset-10{margin-left:83.33333%}.wfls-col-xs-offset-11{margin-left:91.66667%}.wfls-col-xs-offset-12{margin-left:100%}.wfls-col-xs-half-padding-left{padding-left:8px}.wfls-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wfls-col-sm-1,.wfls-col-sm-2,.wfls-col-sm-3,.wfls-col-sm-4,.wfls-col-sm-5,.wfls-col-sm-6,.wfls-col-sm-7,.wfls-col-sm-8,.wfls-col-sm-9,.wfls-col-sm-10,.wfls-col-sm-11,.wfls-col-sm-12{float:left}.wfls-col-sm-1{width:8.33333%}.wfls-col-sm-2{width:16.66667%}.wfls-col-sm-3{width:25%}.wfls-col-sm-4{width:33.33333%}.wfls-col-sm-5{width:41.66667%}.wfls-col-sm-6{width:50%}.wfls-col-sm-7{width:58.33333%}.wfls-col-sm-8{width:66.66667%}.wfls-col-sm-9{width:75%}.wfls-col-sm-10{width:83.33333%}.wfls-col-sm-11{width:91.66667%}.wfls-col-sm-12{width:100%}.wfls-col-sm-pull-0{right:auto}.wfls-col-sm-pull-1{right:8.33333%}.wfls-col-sm-pull-2{right:16.66667%}.wfls-col-sm-pull-3{right:25%}.wfls-col-sm-pull-4{right:33.33333%}.wfls-col-sm-pull-5{right:41.66667%}.wfls-col-sm-pull-6{right:50%}.wfls-col-sm-pull-7{right:58.33333%}.wfls-col-sm-pull-8{right:66.66667%}.wfls-col-sm-pull-9{right:75%}.wfls-col-sm-pull-10{right:83.33333%}.wfls-col-sm-pull-11{right:91.66667%}.wfls-col-sm-pull-12{right:100%}.wfls-col-sm-push-0{left:auto}.wfls-col-sm-push-1{left:8.33333%}.wfls-col-sm-push-2{left:16.66667%}.wfls-col-sm-push-3{left:25%}.wfls-col-sm-push-4{left:33.33333%}.wfls-col-sm-push-5{left:41.66667%}.wfls-col-sm-push-6{left:50%}.wfls-col-sm-push-7{left:58.33333%}.wfls-col-sm-push-8{left:66.66667%}.wfls-col-sm-push-9{left:75%}.wfls-col-sm-push-10{left:83.33333%}.wfls-col-sm-push-11{left:91.66667%}.wfls-col-sm-push-12{left:100%}.wfls-col-sm-offset-0{margin-left:0%}.wfls-col-sm-offset-1{margin-left:8.33333%}.wfls-col-sm-offset-2{margin-left:16.66667%}.wfls-col-sm-offset-3{margin-left:25%}.wfls-col-sm-offset-4{margin-left:33.33333%}.wfls-col-sm-offset-5{margin-left:41.66667%}.wfls-col-sm-offset-6{margin-left:50%}.wfls-col-sm-offset-7{margin-left:58.33333%}.wfls-col-sm-offset-8{margin-left:66.66667%}.wfls-col-sm-offset-9{margin-left:75%}.wfls-col-sm-offset-10{margin-left:83.33333%}.wfls-col-sm-offset-11{margin-left:91.66667%}.wfls-col-sm-offset-12{margin-left:100%}.wfls-col-sm-half-padding-left{padding-left:8px}.wfls-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wfls-col-md-1,.wfls-col-md-2,.wfls-col-md-3,.wfls-col-md-4,.wfls-col-md-5,.wfls-col-md-6,.wfls-col-md-7,.wfls-col-md-8,.wfls-col-md-9,.wfls-col-md-10,.wfls-col-md-11,.wfls-col-md-12{float:left}.wfls-col-md-1{width:8.33333%}.wfls-col-md-2{width:16.66667%}.wfls-col-md-3{width:25%}.wfls-col-md-4{width:33.33333%}.wfls-col-md-5{width:41.66667%}.wfls-col-md-6{width:50%}.wfls-col-md-7{width:58.33333%}.wfls-col-md-8{width:66.66667%}.wfls-col-md-9{width:75%}.wfls-col-md-10{width:83.33333%}.wfls-col-md-11{width:91.66667%}.wfls-col-md-12{width:100%}.wfls-col-md-pull-0{right:auto}.wfls-col-md-pull-1{right:8.33333%}.wfls-col-md-pull-2{right:16.66667%}.wfls-col-md-pull-3{right:25%}.wfls-col-md-pull-4{right:33.33333%}.wfls-col-md-pull-5{right:41.66667%}.wfls-col-md-pull-6{right:50%}.wfls-col-md-pull-7{right:58.33333%}.wfls-col-md-pull-8{right:66.66667%}.wfls-col-md-pull-9{right:75%}.wfls-col-md-pull-10{right:83.33333%}.wfls-col-md-pull-11{right:91.66667%}.wfls-col-md-pull-12{right:100%}.wfls-col-md-push-0{left:auto}.wfls-col-md-push-1{left:8.33333%}.wfls-col-md-push-2{left:16.66667%}.wfls-col-md-push-3{left:25%}.wfls-col-md-push-4{left:33.33333%}.wfls-col-md-push-5{left:41.66667%}.wfls-col-md-push-6{left:50%}.wfls-col-md-push-7{left:58.33333%}.wfls-col-md-push-8{left:66.66667%}.wfls-col-md-push-9{left:75%}.wfls-col-md-push-10{left:83.33333%}.wfls-col-md-push-11{left:91.66667%}.wfls-col-md-push-12{left:100%}.wfls-col-md-offset-0{margin-left:0%}.wfls-col-md-offset-1{margin-left:8.33333%}.wfls-col-md-offset-2{margin-left:16.66667%}.wfls-col-md-offset-3{margin-left:25%}.wfls-col-md-offset-4{margin-left:33.33333%}.wfls-col-md-offset-5{margin-left:41.66667%}.wfls-col-md-offset-6{margin-left:50%}.wfls-col-md-offset-7{margin-left:58.33333%}.wfls-col-md-offset-8{margin-left:66.66667%}.wfls-col-md-offset-9{margin-left:75%}.wfls-col-md-offset-10{margin-left:83.33333%}.wfls-col-md-offset-11{margin-left:91.66667%}.wfls-col-md-offset-12{margin-left:100%}.wfls-col-md-half-padding-left{padding-left:8px}.wfls-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wfls-col-lg-1,.wfls-col-lg-2,.wfls-col-lg-3,.wfls-col-lg-4,.wfls-col-lg-5,.wfls-col-lg-6,.wfls-col-lg-7,.wfls-col-lg-8,.wfls-col-lg-9,.wfls-col-lg-10,.wfls-col-lg-11,.wfls-col-lg-12{float:left}.wfls-col-lg-1{width:8.33333%}.wfls-col-lg-2{width:16.66667%}.wfls-col-lg-3{width:25%}.wfls-col-lg-4{width:33.33333%}.wfls-col-lg-5{width:41.66667%}.wfls-col-lg-6{width:50%}.wfls-col-lg-7{width:58.33333%}.wfls-col-lg-8{width:66.66667%}.wfls-col-lg-9{width:75%}.wfls-col-lg-10{width:83.33333%}.wfls-col-lg-11{width:91.66667%}.wfls-col-lg-12{width:100%}.wfls-col-lg-pull-0{right:auto}.wfls-col-lg-pull-1{right:8.33333%}.wfls-col-lg-pull-2{right:16.66667%}.wfls-col-lg-pull-3{right:25%}.wfls-col-lg-pull-4{right:33.33333%}.wfls-col-lg-pull-5{right:41.66667%}.wfls-col-lg-pull-6{right:50%}.wfls-col-lg-pull-7{right:58.33333%}.wfls-col-lg-pull-8{right:66.66667%}.wfls-col-lg-pull-9{right:75%}.wfls-col-lg-pull-10{right:83.33333%}.wfls-col-lg-pull-11{right:91.66667%}.wfls-col-lg-pull-12{right:100%}.wfls-col-lg-push-0{left:auto}.wfls-col-lg-push-1{left:8.33333%}.wfls-col-lg-push-2{left:16.66667%}.wfls-col-lg-push-3{left:25%}.wfls-col-lg-push-4{left:33.33333%}.wfls-col-lg-push-5{left:41.66667%}.wfls-col-lg-push-6{left:50%}.wfls-col-lg-push-7{left:58.33333%}.wfls-col-lg-push-8{left:66.66667%}.wfls-col-lg-push-9{left:75%}.wfls-col-lg-push-10{left:83.33333%}.wfls-col-lg-push-11{left:91.66667%}.wfls-col-lg-push-12{left:100%}.wfls-col-lg-offset-0{margin-left:0%}.wfls-col-lg-offset-1{margin-left:8.33333%}.wfls-col-lg-offset-2{margin-left:16.66667%}.wfls-col-lg-offset-3{margin-left:25%}.wfls-col-lg-offset-4{margin-left:33.33333%}.wfls-col-lg-offset-5{margin-left:41.66667%}.wfls-col-lg-offset-6{margin-left:50%}.wfls-col-lg-offset-7{margin-left:58.33333%}.wfls-col-lg-offset-8{margin-left:66.66667%}.wfls-col-lg-offset-9{margin-left:75%}.wfls-col-lg-offset-10{margin-left:83.33333%}.wfls-col-lg-offset-11{margin-left:91.66667%}.wfls-col-lg-offset-12{margin-left:100%}.wfls-col-lg-half-padding-left{padding-left:8px}.wfls-col-lg-half-padding-right{padding-right:7px}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wfls-plain{font-weight:normal}label.wfls-control-label.wfls-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:1.5rem;font-size:14px;line-height:1.42857;color:#555}.wfls-form-control{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wfls-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wfls-form-control::-moz-placeholder{color:#bfbfbf;opacity:1}.wfls-form-control:-ms-input-placeholder{color:#bfbfbf}.wfls-form-control::-webkit-input-placeholder{color:#bfbfbf}.wfls-form-control::-ms-expand{border:0;background-color:transparent}.wfls-form-control[disabled],.wfls-form-control[readonly],fieldset[disabled] .wfls-form-control{background-color:#e2e2e2;opacity:1}.wfls-form-control[disabled],.wfls-form-control[readonly],fieldset[disabled] .wfls-form-control{cursor:not-allowed;pointer-events:none}textarea.wfls-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wfls-form-control,input[type="time"].wfls-form-control,input[type="datetime-local"].wfls-form-control,input[type="month"].wfls-form-control{line-height:38px}input[type="date"].wfls-input-sm,.wfls-input-group-sm input[type="date"],input[type="time"].wfls-input-sm,.wfls-input-group-sm input[type="time"],input[type="datetime-local"].wfls-input-sm,.wfls-input-group-sm input[type="datetime-local"],input[type="month"].wfls-input-sm,.wfls-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wfls-input-lg,.wfls-input-group-lg input[type="date"],input[type="time"].wfls-input-lg,.wfls-input-group-lg input[type="time"],input[type="datetime-local"].wfls-input-lg,.wfls-input-group-lg input[type="datetime-local"],input[type="month"].wfls-input-lg,.wfls-input-group-lg input[type="month"]{line-height:46px}}.wfls-form-group{margin-bottom:8px}.wfls-form-group.wfls-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wfls-form-group.wfls-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wfls-form-group.wfls-focus label{margin-left:-4px}.wfls-radio,.wfls-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wfls-radio label,.wfls-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wfls-radio input[type="radio"],.wfls-radio-inline input[type="radio"],.wfls-checkbox input[type="checkbox"],.wfls-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wfls-radio-offset{padding-left:29px}@media (min-width: 768px){.wfls-radio-offset{padding-left:20px}}.wfls-radio+.wfls-radio,.wfls-checkbox+.wfls-checkbox{margin-top:-5px}.wfls-radio-inline,.wfls-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wfls-radio-inline+.wfls-radio-inline,.wfls-checkbox-inline+.wfls-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wfls-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wfls-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wfls-radio-inline.wfls-disabled,fieldset[disabled] .wfls-radio-inline,.wfls-checkbox-inline.wfls-disabled,fieldset[disabled] .wfls-checkbox-inline{cursor:not-allowed}.wfls-radio.wfls-disabled label,fieldset[disabled] .wfls-radio label,.wfls-checkbox.wfls-disabled label,fieldset[disabled] .wfls-checkbox label{cursor:not-allowed;pointer-events:none}.wfls-form-control-static{padding-top:1.5rem;padding-bottom:1.5rem;margin:0;line-height:1}.wfls-form-control-static.wfls-input-lg,.wfls-form-control-static.wfls-input-sm{padding-left:0;padding-right:0}.wfls-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wfls-input-sm{height:30px;line-height:30px}textarea.wfls-input-sm,select[multiple].wfls-input-sm{height:auto}.wfls-form-group-sm .wfls-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-form-group-sm select.wfls-form-control{height:30px;line-height:30px}.wfls-form-group-sm textarea.wfls-form-control,.wfls-form-group-sm select[multiple].wfls-form-control{height:auto}.wfls-form-group-sm .wfls-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wfls-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wfls-input-lg{height:46px;line-height:46px}textarea.wfls-input-lg,select[multiple].wfls-input-lg{height:auto}.wfls-form-group-lg .wfls-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-form-group-lg select.wfls-form-control{height:46px;line-height:46px}.wfls-form-group-lg textarea.wfls-form-control,.wfls-form-group-lg select[multiple].wfls-form-control{height:auto}.wfls-form-group-lg .wfls-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wfls-has-feedback{position:relative}.wfls-has-feedback .wfls-form-control{padding-right:47.5px}.wfls-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.wfls-input-lg+.wfls-form-control-feedback,.wfls-input-group-lg+.wfls-form-control-feedback,.wfls-form-group-lg .wfls-form-control+.wfls-form-control-feedback{width:46px;height:46px;line-height:46px}.wfls-input-sm+.wfls-form-control-feedback,.wfls-input-group-sm+.wfls-form-control-feedback,.wfls-form-group-sm .wfls-form-control+.wfls-form-control-feedback{width:30px;height:30px;line-height:30px}.wfls-has-success .wfls-help-block,.wfls-has-success .wfls-control-label,.wfls-has-success .wfls-radio,.wfls-has-success .wfls-checkbox,.wfls-has-success .wfls-radio-inline,.wfls-has-success .wfls-checkbox-inline,.wfls-has-success.wfls-radio label,.wfls-has-success.wfls-checkbox label,.wfls-has-success.wfls-radio-inline label,.wfls-has-success.wfls-checkbox-inline label{color:#3c763d}.wfls-has-success .wfls-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-success .wfls-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wfls-has-success .wfls-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wfls-has-success .wfls-form-control-feedback{color:#3c763d}.wfls-has-warning .wfls-help-block,.wfls-has-warning .wfls-control-label,.wfls-has-warning .wfls-radio,.wfls-has-warning .wfls-checkbox,.wfls-has-warning .wfls-radio-inline,.wfls-has-warning .wfls-checkbox-inline,.wfls-has-warning.wfls-radio label,.wfls-has-warning.wfls-checkbox label,.wfls-has-warning.wfls-radio-inline label,.wfls-has-warning.wfls-checkbox-inline label{color:#8a6d3b}.wfls-has-warning .wfls-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-warning .wfls-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wfls-has-warning .wfls-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wfls-has-warning .wfls-form-control-feedback{color:#8a6d3b}.wfls-has-error .wfls-help-block,.wfls-has-error .wfls-control-label,.wfls-has-error .wfls-radio,.wfls-has-error .wfls-checkbox,.wfls-has-error .wfls-radio-inline,.wfls-has-error .wfls-checkbox-inline,.wfls-has-error.wfls-radio label,.wfls-has-error.wfls-checkbox label,.wfls-has-error.wfls-radio-inline label,.wfls-has-error.wfls-checkbox-inline label{color:#a94442}.wfls-has-error .wfls-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-error .wfls-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wfls-has-error .wfls-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wfls-has-error .wfls-form-control-feedback{color:#a94442}.wfls-has-feedback label ~ .wfls-form-control-feedback{top:25px}.wfls-has-feedback label.wfls-sr-only ~ .wfls-form-control-feedback{top:0}.wfls-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wfls-form-inline .wfls-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-form-control{display:inline-block;width:auto;vertical-align:middle}.wfls-form-inline .wfls-form-control-static{display:inline-block}.wfls-form-inline .wfls-input-group{display:inline-table;vertical-align:middle}.wfls-form-inline .wfls-input-group .wfls-input-group-addon,.wfls-form-inline .wfls-input-group .wfls-input-group-btn,.wfls-form-inline .wfls-input-group .wfls-form-control{width:auto}.wfls-form-inline .wfls-input-group>.wfls-form-control{width:100%}.wfls-form-inline .wfls-control-label{margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-radio,.wfls-form-inline .wfls-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-radio label,.wfls-form-inline .wfls-checkbox label{padding-left:0}.wfls-form-inline .wfls-radio input[type="radio"],.wfls-form-inline .wfls-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wfls-form-inline .wfls-has-feedback .wfls-form-control-feedback{top:0}}.wfls-form-horizontal .wfls-radio,.wfls-form-horizontal .wfls-checkbox,.wfls-form-horizontal .wfls-radio-inline,.wfls-form-horizontal .wfls-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:1.5rem}.wfls-form-horizontal .wfls-radio,.wfls-form-horizontal .wfls-checkbox{min-height:29px}.wfls-form-horizontal .wfls-form-group{margin-left:-15px;margin-right:-15px}.wfls-form-horizontal .wfls-form-group:before,.wfls-form-horizontal .wfls-form-group:after{content:" ";display:table}.wfls-form-horizontal .wfls-form-group:after{clear:both}@media (min-width: 768px){.wfls-form-horizontal .wfls-control-label{text-align:right;margin-bottom:0;padding-top:1.5rem}}.wfls-form-horizontal .wfls-has-feedback .wfls-form-control-feedback{right:15px}@media (min-width: 768px){.wfls-form-horizontal .wfls-form-group-lg .wfls-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wfls-form-horizontal .wfls-form-group-sm .wfls-control-label{padding-top:6px;font-size:12px}}@media (min-width: 768px){#input-recaptchaSiteKey,#input-recaptchaSecret{min-width:400px}}hr.wfls-half{border:0 !important;border-bottom:1px solid #e4e4e4 !important;width:50%;margin:1.25rem auto}.wrap.wordfence-ls{direction:ltr}@media (min-width: 768px){.wrap.wordfence-ls{max-width:750px}}@media (min-width: 992px){.wrap.wordfence-ls{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence-ls{max-width:1170px}}.wrap.wordfence-ls>.wfls-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence-ls .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence-ls a{text-decoration:none}.wrap.wordfence-ls a:hover{text-decoration:underline}.wrap.wordfence-ls a.wfls-btn:hover{text-decoration:none}.wrap.wordfence-ls p,.wrap.wordfence-ls td,.wrap.wordfence-ls li{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wrap.wordfence-ls p strong,.wrap.wordfence-ls td strong,.wrap.wordfence-ls li strong{font-weight:600}.wrap.wordfence-ls p em,.wrap.wordfence-ls td em,.wrap.wordfence-ls li em{font-weight:normal}.wrap.wordfence-ls h1,.wrap.wordfence-ls h2,.wrap.wordfence-ls h3,.wrap.wordfence-ls h4,.wrap.wordfence-ls h5,.wrap.wordfence-ls h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700}.wrap.wordfence-ls h2{font-size:1.3125rem;line-height:1.5}.wrap.wordfence-ls h3{font-size:1.125rem}.wrap.wordfence-ls h4{font-size:1rem}a{color:#00709e}.wfls-inline-help{color:#9f9fa0}.wfls-inline-help:hover{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}.wfls-header-icon{background-image:url(../img/header.svg);width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:0 5px 0 0;float:left}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../img/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../img/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../img/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../img/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}img.wfFlag{vertical-align:middle;margin:-3px 4px 0 0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle;margin-right:0.5rem}.wfls-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wfls-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../img/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{display:inline-block;position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wfls-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wfls-striped-table th{border-left:1px solid #bdbdbd}.wfls-striped-table th:first-of-type{border-left:0}.wfls-striped-table th,.wfls-striped-table td{padding:1rem}.wfls-striped-table thead th,.wfls-striped-table thead td,.wfls-striped-table tfoot th,.wfls-striped-table tfoot td,.wfls-striped-table tbody.thead th,.wfls-striped-table tbody.thead td{background-color:#ebebeb;color:#777;font-weight:bold;text-align:left}.wfls-striped-table tbody tr.even td,.wfls-striped-table tbody tr:nth-child(2n) td{background-color:#ffffff}.wfls-striped-table tbody tr td,.wfls-striped-table tbody tr.odd td{background-color:#fafafa}.wfls-striped-table tbody tr:hover>td{background-color:#fffbd8}.wfls-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wfls-striped-table .wfls-result-error,.wfls-block-list .wfls-result-error{color:#d0514c !important;font-weight:bold}.wfls-striped-table .wfls-result-error:before,.wfls-block-list .wfls-result-error:before{content:"\2718"}.wfls-striped-table .wfls-result-success{max-width:20%}.wfls-striped-table .wfls-result-success,.wfls-block-list .wfls-result-success{color:#008c10 !important;font-weight:bold}.wfls-striped-table .wfls-result-success:before,.wfls-block-list .wfls-result-success:before{content:"\2713"}.wfls-striped-table .wfls-result-success:before,.wfls-block-list .wfls-result-success:before,.wfls-striped-table .wfls-result-error:before,.wfls-block-list .wfls-result-error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wfls-striped-table .wfls-result-inactive,.wfls-block-list .wfls-result-inactive{font-weight:bold;color:#666666 !important}.wfls-fixed-table{table-layout:fixed}pre.wfls-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wfls-center{text-align:center}#wfConfigForm,.wfls-diagnostics-wrapper{max-width:1035px}.wfls-hidden{display:none !important}.wfls-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wfls-card .wfls-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wfls-card .wfls-card-inner .wfls-card-content{max-width:75%}.wfls-card .wfls-card-inner .wfls-card-content .wfls-card-title{font-size:1.125rem;width:100%}.wfls-card .wfls-card-inner .wfls-card-content .wfls-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wfls-card .wfls-card-inner .wfls-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-checkbox{background-image:url(../img/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-checkbox.checked{background-position:right center}.wfls-card .wfls-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wfls-card .wfls-card-extra{padding:1rem}}.wfls-card.active .wfls-card-extra{display:block}.wfls-card.wfls-card-left .wfls-card-content{margin-left:48px}.wfls-card.wfls-card-left .wfls-card-action{right:auto;left:0px}.wfls-card.disabled .wfls-card-content .wfls-card-title{color:#aaaaaa}.wfls-card.disabled .wfls-card-content .wfls-card-subtitle{color:#8ea6be}.wfls-inline-block{display:inline-block}@media (max-width: 767px){.wfls-inline-block-xs{display:inline-block}}.wfls-full-width{width:100%;max-width:100%}.wfls-no-top{margin-top:0 !important}.wfls-add-top{margin-top:1rem !important}.wfls-add-top-large{margin-top:1.5rem !important}.wfls-add-top-medium{margin-top:0.75rem !important}.wfls-add-top-small{margin-top:0.5rem !important}.wfls-add-top-smaller{margin-top:0.25rem !important}.wfls-no-bottom{margin-bottom:0 !important}.wfls-add-bottom{margin-bottom:1rem !important}.wfls-add-bottom-large{margin-bottom:1.5rem !important}.wfls-add-bottom-medium{margin-bottom:0.75rem !important}.wfls-add-bottom-small{margin-bottom:0.5rem !important}.wfls-add-bottom-smaller{margin-bottom:0.25rem !important}.wfls-padding-no-top{padding-top:0 !important}.wfls-no-right{margin-right:0 !important}.wfls-padding-no-bottom{padding-bottom:0 !important}.wfls-padding-no-left{padding-left:0 !important}.wfls-padding-no-right{padding-right:0 !important}.wfls-padding-add-top{padding-top:1rem !important}.wfls-padding-add-top-small{padding-top:0.5rem !important}.wfls-padding-add-top-medium{padding-top:0.75rem !important}.wfls-padding-add-top-large{padding-top:1.5rem !important}.wfls-padding-add-top-responsive{padding-top:1rem !important}@media (min-width: 768px){.wfls-padding-add-top-responsive{padding-top:1.5rem !important}}.wfls-padding-add-bottom{padding-bottom:1rem !important}.wfls-padding-add-bottom-small{padding-bottom:0.5rem !important}.wfls-padding-add-bottom-medium{padding-bottom:0.75rem !important}.wfls-padding-add-bottom-large{padding-bottom:1.5rem !important}.wfls-padding-add-bottom-responsive{padding-bottom:1rem !important}@media (min-width: 768px){.wfls-padding-add-bottom-responsive{padding-bottom:1.5rem !important}}.wfls-padding-no-bottom{padding-bottom:0 !important}.wfls-padding-add-left{padding-left:1rem !important}.wfls-padding-add-left-small{padding-left:0.5rem !important}.wfls-padding-add-left-medium{padding-left:0.75rem !important}.wfls-padding-add-left-large{padding-left:1.5rem !important}.wfls-padding-add-left-responsive{padding-left:1rem !important}@media (min-width: 768px){.wfls-padding-add-left-responsive{padding-left:1.5rem !important}}.wfls-padding-add-right{padding-right:1rem !important}.wfls-padding-add-right-small{padding-right:0.5rem !important}.wfls-padding-add-right-medium{padding-right:0.75rem !important}.wfls-padding-add-right-large{padding-right:1.5rem !important}.wfls-padding-add-right-responsive{padding-right:1rem !important}@media (min-width: 768px){.wfls-padding-add-right-responsive{padding-right:1.5rem !important}}.wfls-left{text-align:left !important}.wfls-center{text-align:center !important}.wfls-block-center{margin:0 auto}.wfls-right{text-align:right !important}.wfls-block-right{margin:0 0 0 auto}@media (max-width: 767px){.wfls-left-xs{text-align:left !important}.wfls-center-xs{text-align:center !important}.wfls-padding-add-top-xs{padding-top:1rem !important}.wfls-padding-add-top-xs-small{padding-top:0.5rem !important}.wfls-padding-add-top-xs-large{padding-top:1.5rem !important}.wfls-padding-add-bottom-xs{padding-bottom:1rem !important}.wfls-padding-add-bottom-xs-small{padding-bottom:0.5rem !important}.wfls-padding-add-bottom-xs-large{padding-bottom:1.5rem !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-left-sm{text-align:left !important}.wfls-center-sm{text-align:center !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-left-md{text-align:left !important}.wfls-center-md{text-align:center !important}}@media (min-width: 1200px){.wfls-left-lg{text-align:left !important}.wfls-center-lg{text-align:center !important}}.wfls-border-no-top{border-top:none !important}.wfls-border-no-right{border-right:none !important}.wfls-border-no-bottom{border-bottom:none !important}.wfls-border-no-left{border-left:none !important}.wfls-overflow-x-auto{overflow-x:auto}.wfls-overflow-y-auto{overflow-y:auto}@media (max-width: 767px){.wfls-overflow-x-auto-xs{overflow-x:auto}.wfls-overflow-y-auto-xs{overflow-y:auto}}.wfls-blue{color:#00709e !important}.wfls-blue-light{color:#008cc1 !important}.wfls-gray-dark{color:#2d2d2d !important}.wfls-gray-blue{color:#3f596b !important}.wfls-green-dark{color:#11967a !important}.wfls-green-light{color:#16bc9b !important}.wfls-red-dark{color:#930000 !important}.wfls-red-light{color:#c10000 !important}.wfls-yellow-dark{color:#fcb214 !important}.wfls-yellow-light{color:#ffd10a !important}.wfls-gray{color:#525355 !important}.wfls-gray-light{color:#9f9fa0 !important}.wfls-nowrap{white-space:nowrap}.wfls-tip{color:#fcb214;font-size:1.1rem;margin-right:0.25rem}.wfls-text-small{font-size:85% !important}.wfls-text-plain{font-weight:400 !important}.wfls-scroll-x::-webkit-scrollbar,.wfls-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wfls-scroll-x::-webkit-scrollbar-thumb,.wfls-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wfls-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wfls-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.wfselect2-container{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:200px}@media (min-width: 768px){.wfselect2-container{min-width:280px}}@media (min-width: 992px){.wfselect2-container{min-width:320px}}@media (max-width: 767px){.wfselect2-container .wfselect2-search.wfselect2-search--inline{margin:0 !important}}.wfls-select2-placeholder-fix .wfselect2-search__field{width:auto !important}.wfls-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wfls-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wfls-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wfls-page-title h2{padding:0 !important}.wfls-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}.wfls-tab-container{background-color:#fff}@media (min-width: 768px){.wfls-tab-container{background-color:unset}}.wfls-page-tabs,.wfls-page-fixed-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;border-bottom:1px solid #d0d0d0;margin:0;margin-top:0.5rem;margin-left:-10px;margin-right:-10px}@media (min-width: 768px){.wfls-page-tabs,.wfls-page-fixed-tabs{margin-left:0;margin-right:0}}.wfls-page-tabs>*,.wfls-page-fixed-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-page-tabs>*:first-child,.wfls-page-fixed-tabs>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px}.wfls-page-tabs .wordfence-icon32,.wfls-page-fixed-tabs .wordfence-icon32{margin:0;margin-right:0.5rem;margin-left:0.5rem}@media (min-width: 768px){.wfls-page-tabs .wordfence-icon32,.wfls-page-fixed-tabs .wordfence-icon32{margin-left:0}}.wfls-page-tabs .wfls-text-tab,.wfls-page-fixed-tabs .wfls-text-tab{margin:0;margin-left:0.5rem;color:#333}.wfls-page-tabs .wfls-tab,.wfls-page-fixed-tabs .wfls-tab{border:1px solid #fff;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin-bottom:-1px;margin-right:0.5rem;color:#333}@media (min-width: 768px){.wfls-page-tabs .wfls-tab,.wfls-page-fixed-tabs .wfls-tab{border:1px solid #d0d0d0;background:#e6e6e6}}.wfls-page-tabs .wfls-tab a,.wfls-page-fixed-tabs .wfls-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wfls-page-tabs .wfls-tab.wfls-active,.wfls-page-tabs .wfls-tab:hover,.wfls-page-fixed-tabs .wfls-tab.wfls-active,.wfls-page-fixed-tabs .wfls-tab:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#00709e;-webkit-box-shadow:none;box-shadow:none}.wfls-page-tabs .wfls-tab.wfls-active a,.wfls-page-tabs .wfls-tab:hover a,.wfls-page-fixed-tabs .wfls-tab.wfls-active a,.wfls-page-fixed-tabs .wfls-tab:hover a{color:#00709e}.wfls-tab-content{display:none;margin-top:15px}.wfls-tab-content.wfls-active{display:block}.wfls-fixed-tab-content{margin-top:15px}.wfls-section-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start}.wfls-section-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-section-title>h1,.wfls-section-title>h2,.wfls-section-title>h3,.wfls-section-title>h4,.wfls-section-title>h5,.wfls-section-title>h6{-webkit-flex-grow:1;flex-grow:1;color:#2d2d2d !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;line-height:1.5rem !important;font-weight:700 !important;padding:0 !important;margin:0 !important}@media (min-width: 768px){.wfls-section-title>h1,.wfls-section-title>h2,.wfls-section-title>h3,.wfls-section-title>h4,.wfls-section-title>h5,.wfls-section-title>h6{padding-right:0.25rem !important}}.wfls-section-title h2{font-size:1.3125rem;line-height:1.5}.wfls-section-title h3{font-size:1.125rem}.wfls-section-title h4{font-size:1rem}.wfls-section-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wfls-status-circular{position:relative}.wfls-status-circular-text{position:absolute;left:50%;top:50%;padding:0;margin:0;transform:translate(-50%, -50%);color:#aaa;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wfls-status-circular .wfls-status-overlay-text{position:absolute;left:50%;top:50%;padding:0;margin:0;width:200%;text-align:center;transform:translate(-50%, -50%);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:normal;line-height:1.3125;opacity:0.0;color:#777}.wfls-status-warning,.wfls-status-critical,.wfls-status-payment-expiring,.wfls-status-renewing{width:100px;height:100px;margin-bottom:1rem}.wfls-status-warning svg path{fill:#fcb214}.wfls-status-critical svg path{fill:#930000}.wfls-status-payment-expiring svg rect,.wfls-status-payment-expiring svg path{fill:#930000}.wfls-status-renewing svg rect,.wfls-status-renewing svg path{fill:#11967a}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wfls-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wfls-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}.wfls-back-icon{color:#00709e;margin-right:0.75rem;font-size:1.5rem !important}.wfls-back-link-chevron{margin-left:1rem}.wfls-back-link-chevron:first-of-type{margin-left:0}.wfls-back-link{font-weight:bold;text-decoration:none}.wfls-premium-link{font-weight:bold}.wfls-boolean-switch{border:1px solid #aaa;display:block;cursor:pointer;width:54px;height:30px;min-width:54px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;background-color:#ffffff;position:relative;box-sizing:border-box;transition:background-color 0.2s ease-in-out, border-color 0.2s ease-in-out}@media (min-width: 768px){.wfls-boolean-switch{width:34px;height:20px;min-width:34px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}.wfls-boolean-switch .wfls-boolean-switch-handle{position:relative;display:block;border:1px solid #aaa;background-color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;margin-top:-1px;box-sizing:border-box;left:-1px;transition:border-color 0.2s ease-in-out, left 0.2s ease-in-out}@media (min-width: 768px){.wfls-boolean-switch .wfls-boolean-switch-handle{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}}.wfls-boolean-switch.wfls-active{border:1px solid #00709e;background-color:#00709e}.wfls-boolean-switch.wfls-active .wfls-boolean-switch-handle{border:1px solid #00709e;left:25px}@media (min-width: 768px){.wfls-boolean-switch.wfls-active .wfls-boolean-switch-handle{left:15px}}.wfls-boolean-switch.wfls-disabled{pointer-events:none;border-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled .wfls-boolean-switch-handle{border-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled.wfls-active{border-color:#e2e2e2;background-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled.wfls-active .wfls-boolean-switch-handle{border-color:#e2e2e2}.wfls-option-checkbox,[type=checkbox].wfls-option-checkbox+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px #aaa;color:#ffffff !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wfls-option-checkbox,[type=checkbox].wfls-option-checkbox+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:25px !important}}@media (min-width: 768px){.wfls-option-checkbox{position:relative}.wfls-option-checkbox>*{position:absolute;top:9px;left:50%;transform:translateX(-50%) translateY(-50%)}}.wfls-option-radio,[type=radio].wfls-option-radio+label:before{content:"\f401";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;line-height:30px !important;text-align:center !important;color:#ccc !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wfls-option-radio,[type=radio].wfls-option-radio+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}[type=checkbox].wfls-option-checkbox.wfls-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}[type=radio].wfls-option-radio.wfls-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;line-height:21px !important;font-size:20px !important}[type=checkbox].wfls-option-checkbox+label:before,[type=radio].wfls-option-radio+label:before{text-align:center !important;text-indent:0px;display:inline-block;vertical-align:-6px;margin:0px 5px 0px 0px;font-weight:normal;font-style:normal}[type=checkbox].wfls-option-checkbox.wfls-small+label:before,[type=radio].wfls-option-radio.wfls-small+label:before{text-indent:0px;vertical-align:-3px}.wfls-option-checkbox.wfls-checked,[type=checkbox].wfls-option-checkbox:checked+label:before{color:#ffffff !important;box-shadow:0px 0px 0px 1px #00709e !important;background-color:#00709e !important}.wfls-option-checkbox.wfls-disabled,[type=checkbox].wfls-option-checkbox:disabled+label:before{color:#f1f1f1 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wfls-option-checkbox.wfls-checked.wfls-disabled,[type=checkbox].wfls-option-checkbox:disabled:checked+label:before{color:#777 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wfls-option-radio.wfls-checked,[type=radio].wfls-option-radio:checked+label:before{content:"\f3a7";color:#00709e !important}.wfls-option-checkbox[type=checkbox],.wfls-option-checkbox[type=radio],.wfls-option-radio[type=checkbox],.wfls-option-radio[type=radio]{position:absolute;left:-9999px}.wfls-option-text input[type="text"],input.wfls-input-text{text-align:left;width:100%;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.65)}.wfls-option-text input[type="text"]:placeholder-shown,input.wfls-input-text:placeholder-shown{font-style:italic;color:#bfbfbf}::-webkit-input-placeholder{color:#bfbfbf}:-moz-placeholder{color:#bfbfbf;opacity:1}::-moz-placeholder{color:#bfbfbf;opacity:1}:-ms-input-placeholder{color:#bfbfbf}::-ms-input-placeholder{color:#bfbfbf}::placeholder{color:#bfbfbf}.wfls-option-premium .wfls-option-title,.wfls-option-premium .wfls-option-title>ul>li,.wfls-option.wfls-disabled .wfls-option-title,.wfls-option.wfls-disabled .wfls-option-title>ul>li{color:#aaa !important}.wfls-option-premium .wfls-option-checkbox,.wfls-option-premium .wfls-option-radio,.wfls-option.wfls-disabled .wfls-option-checkbox,.wfls-option.wfls-disabled .wfls-option-radio{opacity:0.5}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value{padding-top:0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value .wfls-fa{font-size:8rem}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value svg{width:160px}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-label{font-size:1.35rem;font-weight:300;padding-bottom:0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-value{color:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-value svg{fill:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-label{color:#9f9fa0}.wfls-indeterminate-progress{-webkit-animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite;-o-animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite;animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite}.wfls-indeterminate-progress path{fill:#00709e}@-moz-keyframes wfls-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wfls-indeterminate-progress-keyframes{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes wfls-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.wfls-flex-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-flex-row .wfls-flex-row-1{-webkit-flex-grow:1;flex-grow:1}.wfls-flex-row .wfls-flex-row-0{-webkit-flex-grow:0;flex-grow:0}.wfls-flex-row.wfls-flex-row-wrappable,.wfls-flex-row.wfls-flex-row-xs-wrappable{-webkit-flex-wrap:wrap;flex-wrap:wrap}.wfls-flex-row.wfls-flex-row-equal-heights{-webkit-align-items:stretch;align-items:stretch}.wfls-flex-row .wfls-flex-item-full-width{width:100%}.wfls-flex-row .wfls-flex-item-xs-100{-webkit-flex-basis:100%;flex-basis:100%;max-width:100%}@media (min-width: 768px){.wfls-flex-row.wfls-flex-row-xs-wrappable{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-flex-row .wfls-flex-item-sm-50{-webkit-flex-basis:50%;flex-basis:50%}}.wfls-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wfls-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wfls-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-switch>li.wfls-active{color:#ffffff;background-color:#00709e}.wfls-tooltip,.ui-widget.wfls-tooltip{max-width:600px;font-size:0.75rem;overflow-wrap:break-word}.wfls-widget-learning-mode{border-top:1px solid #eee;margin:0 -1rem;padding:1rem;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row}@media (min-width: 768px){.wfls-widget-learning-mode{padding:1.5rem}}.wfls-widget-learning-mode svg{width:18px}.wfls-widget-learning-mode svg path{fill:#aaa}.wfls-widget-learning-mode span{padding-left:0.5rem;font-size:.875rem;line-height:1.3125;font-weight:600}.wfls-drawer-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.5);z-index:9980;padding:5rem 0}.folded .wfls-drawer-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold .wfls-drawer-overlay{left:36px}}.rtl .wfls-drawer-overlay{right:160px;left:0px}.rtl .folded .wfls-drawer-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wfls-drawer-overlay{right:36px}}@media screen and (max-width: 782px){.wfls-drawer-overlay,.folded .wfls-drawer-overlay,.auto-fold .wfls-drawer-overlay,.rtl .wfls-drawer-overlay,.rtl .folded .wfls-drawer-overlay,.rtl .auto-fold .wfls-drawer-overlay{left:0px;right:0px}}.wfls-drawer{background-color:#ffffff;position:fixed;top:32px;bottom:0px;right:0px;z-index:9981}.wfls-drawer .wfls-modal{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;height:100%}.wfls-drawer .wfls-modal ul,.wfls-drawer .wfls-modal li{padding:0;margin:0}.wfls-drawer .wfls-modal .wfls-modal-header{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#00709e;color:#ffffff}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content{max-width:75%}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-title{font-size:1.3125rem;line-height:1.5;font-weight:300;width:100%;transition:color 0.2s ease-in}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wfls-drawer .wfls-modal .wfls-modal-content{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;padding:1rem}.wfls-drawer .wfls-modal .wfls-modal-content>*:first-child{margin-top:0}.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.9rem}}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option .wfselect2-selection__arrow,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection__arrow,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}.wfls-drawer .wfls-modal .wfls-modal-footer{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wfls-mobile-menu-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:100000}.wfls-mobile-menu-overlay>.wfls-mobile-menu-tap-hint{position:absolute;top:25%;left:50%;transform:translateX(-50%);color:#ffffff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wfls-mobile-menu{position:fixed;left:50%;transform:translateX(-50%);z-index:100001}.wfls-mobile-menu>.wfls-mobile-menu-items{margin:0;padding:0 0 0.25rem 0;list-style:none}.wfls-mobile-menu>.wfls-mobile-menu-items>li{margin:0;padding:0.25rem 0}.wfls-mobile-menu>.wfls-mobile-menu-items>li>a{box-sizing:border-box}.wfls-callout-warning{background-color:#feecc4;padding:0.8rem 1.25rem}.wfls-tip-light-bulb{color:#fcb214;font-size:1.5rem;font-weight:bold}.wfls-tip-info-message{padding-left:0.5rem !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}#wfls-qr-code{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfls-qr-code{width:256px;height:256px}}#wfls-activate-field{margin:0 auto;font-size:1.5rem;display:block;text-align:center}.wfls-recovery-codes{list-style-type:none}.wfls-recovery-codes li{font-family:monospace !important;text-align:center}#wfls-recovery-download .dashicons,#wfls-recovery-new-download .dashicons{line-height:26px}#wfls-ip-source-trusted-proxies{display:none}ul.wfls-option.wfls-option-howgetips .wfls-option-ip-source-details{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8rem;margin-top:0.5rem}#wfls-ip-source-preview{color:#8c8c8c}#wfls-ip-source-preview strong{color:#666}.wfls-inline-notice{background:#fff;border:1px solid #ccd0d4;border-left-color:#ffb900;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,0.04);padding:4px 12px;display:flex;justify-content:flex-start;align-items:center}.wfls-inline-notice>*{flex-grow:1}.wfls-inline-notice:first-child{flex-grow:0;flex-shrink:0}.wfls-inline-notice span{padding-left:0.5rem}.wfls-page-indicator{vertical-align:bottom}.wfls-block{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;position:relative;margin:0 auto 0.5rem;box-sizing:border-box;background-color:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3}.wfls-block.wfls-block-transparent{background-color:transparent;box-shadow:none}.wfls-block .wfls-block-banner{min-height:44px;margin:0 -1rem;padding:0;box-sizing:border-box;position:relative;background-color:#fcb214;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row}.wfls-block .wfls-block-banner>li{margin:0;padding:0.75rem 1rem}@media (min-width: 768px){.wfls-block .wfls-block-banner{margin:0 -1.5rem}.wfls-block .wfls-block-banner>li{padding:0.75rem 1.5rem}}.wfls-block .wfls-block-header{-webkit-flex-basis:44px;flex-basis:44px;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0;min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wfls-block .wfls-block-header.wfls-block-header-border-bottom{padding:0 1rem;border-bottom:1px solid #e2e2e2}@media (min-width: 768px){.wfls-block .wfls-block-header.wfls-block-header-border-bottom{padding:0 1.5rem}}.wfls-block .wfls-block-header .wfls-block-header-content{max-width:75%}.wfls-block .wfls-block-header .wfls-block-header-content .wfls-block-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-content .wfls-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wfls-block .wfls-block-header .wfls-block-header-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text{width:auto}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-success{color:#11967a}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-warning{color:#930000}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-warning a{color:#930000}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzc3NyIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center;width:12px;height:12px;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),background 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-checkbox{background-image:url(../img/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-checkbox.wfls-checked{background-position:right center}.wfls-block .wfls-block-content{-webkit-flex-grow:1;flex-grow:1;display:none;padding:0 1rem}@media (min-width: 768px){.wfls-block .wfls-block-content{padding:0 1.5rem}}.wfls-block .wfls-block-content .wfls-block-list{margin:0 -1rem;padding:0;list-style:none}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list{margin:0 -1.5rem}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-striped>li:nth-of-type(even){background-color:#ffffff}.wfls-block .wfls-block-content .wfls-block-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #e2e2e2;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list>li{padding:0 1.5rem}}.wfls-block .wfls-block-content .wfls-block-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #e2e2e2}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-nowrap{overflow-y:auto;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-nowrap>li{-webkit-flex-shrink:0;flex-shrink:0}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-horizontal-5>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:20%;flex-basis:20%}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-equal>li{max-width:50%}}@media (min-width: 992px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-equal>li{max-width:25%}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-horizontal-5.wfls-block-list-equal>li{max-width:20%}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state{text-align:center}@media (min-width: 1200px){.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state{text-align:left}}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-enabled .wfls-fa{color:#11967a}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-disabled .wfls-fa{color:#525355}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-premium{color:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-dismiss{padding-left:2rem;font-size:1.25rem}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-dismiss a{color:#525355}.wfls-block .wfls-block-content:first-child>.wfls-block-list>li:first-child{border-top:none}.wfls-block .wfls-block-content .wfls-block-left-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-left-right{margin:0 -1.5rem}}.wfls-block .wfls-block-content .wfls-block-left-right.wfls-block-left-right-nowrap{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-left-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wfls-block .wfls-block-content .wfls-block-left-right>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfls-block .wfls-block-content .wfls-block-left-right>li.wfls-left{text-align:left}.wfls-block .wfls-block-content .wfls-block-left-right>li.wfls-right{text-align:right}.wfls-block .wfls-block-content .wfls-block-left-center-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:center;align-content:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-left-center-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:33.3333%;flex-basis:33.3333%;max-width:33.3333%}.wfls-block .wfls-block-content .wfls-block-left-center-right>li a{text-decoration:none;font-size:.875rem}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-left{text-align:left}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-center{text-align:center;-webkit-justify-content:center;justify-content:center}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-center .wordfence-icon32{margin:0}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-right{text-align:right;-webkit-justify-content:flex-end;justify-content:flex-end}.wfls-block .wfls-block-content .wfls-block-labeled-value{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-labeled-value{margin:0 -1.5rem;padding:1.5rem}}.wfls-block .wfls-block-content .wfls-block-labeled-value-value{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wfls-block .wfls-block-content .wfls-block-labeled-value-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wfls-block .wfls-block-footer{-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#e4e4e4}.wfls-block .wfls-block-footer .wfls-block-footer-content{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;width:100%}.wfls-block .wfls-block-footer .wfls-block-footer-content>*{-webkit-flex-grow:1;flex-grow:1}.wfls-block .wfls-block-footer .wfls-block-footer-content .wfls-block-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wfls-block .wfls-block-footer .wfls-block-footer-content .wfls-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wfls-block .wfls-block-footer .wfls-block-footer-action{-webkit-flex-grow:0;flex-grow:0;background:none;border:0;outline:0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle}.wfls-block.wfls-block-no-header .wfls-block-content .wfls-block-list>li{border-top:none}.wfls-block.wfls-active .wfls-block-content,.wfls-block.wfls-always-active .wfls-block-content{display:block}.wfls-block.wfls-active>.wfls-block-header>.wfls-block-header-content>.wfls-block-title{color:#00709e}.wfls-block.wfls-active>.wfls-block-header>.wfls-block-header-content>.wfls-block-header-action>.wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzAwNzA5ZSIvPgo8L3N2Zz4=") !important;transform:rotate(90deg)}.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-title,.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-subtitle{color:#bfbfbf !important}.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-header-action>.wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iI2JkYmRiZCIvPgo8L3N2Zz4=") !important;transform:rotate(0deg)}.wfls-block.wfls-disabled>.wfls-block-content{display:none !important}.wfls-block.wfls-block-header-left .wfls-block-header-content{margin-left:48px}.wfls-block.wfls-block-header-left .wfls-block-header-action{right:auto;left:0px}.wfls-block.wfls-disabled .wfls-dashboard-item-content .wfls-block-title{color:#aaaaaa}.wfls-block.wfls-disabled .wfls-dashboard-item-content .wfls-block-subtitle{color:#8ea6be}.wfls-section-title{margin-bottom:1rem}.wfls-status-detail{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}.wfls-status-detail p{margin:0 0 0.45rem 0}.wfls-status-detail .wfls-status-circular{margin-bottom:1rem}.wfls-status-detail .wfls-status-detail-title{font-weight:700 !important;font-size:1rem !important;line-height:1.3125 !important}.wfls-status-detail .wfls-status-detail-subtitle{font-size:.875rem !important;line-height:1.3125 !important;font-weight:normal !important;text-align:center}.wfls-status-detail .wfls-status-detail-link>a{font-weight:600 !important;font-size:0.85rem !important}.wfls-block-navigation-option{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block-navigation-option svg.wfls-block-navigation-option-icon{width:50px;min-width:50px;fill:#9f9fa0}.wfls-block-navigation-option:hover{cursor:pointer}.wfls-block-navigation-option:hover a{text-decoration:underline}.wfls-block-navigation-option:hover svg.wfls-block-navigation-option-icon{fill:#00709e}.wfls-select-group{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-select-group .wfselect2-container{min-width:200px}@media (max-width: 767px){.wfls-select-group .wfselect2-container{max-width:100px}}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wfls-select-group .wfls-form-control{display:inline-block;width:auto;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.wfls-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wfls-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-horizontal.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-horizontal.wfls-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wfls-flex-horizontal.wfls-flex-full-width{width:100%}.wfls-flex-horizontal.wfls-flex-full-width>*:last-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-first>*:first-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-first>*:last-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-all>*:first-child,.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-all>*{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal>li{padding:0;margin:0}.wfls-flex-vertical{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wfls-flex-vertical>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-vertical.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-vertical.wfls-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wfls-flex-vertical.wfls-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}@media (max-width: 767px){.wfls-flex-vertical.wfls-flex-align-left-xs{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-flex-vertical.wfls-flex-align-left-sm{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-flex-vertical.wfls-flex-align-left-md{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 1200px){.wfls-flex-vertical.wfls-flex-align-left-lg{-webkit-align-items:flex-start !important;align-items:flex-start !important}}.wfls-flex-vertical>li{padding:0;margin:0}@media (max-width: 767px){.wfls-flex-vertical-xs{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wfls-flex-vertical-xs>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-vertical-xs.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-vertical-xs.wfls-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wfls-flex-vertical-xs.wfls-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}}ul.wfls-option,.wfls-form-field{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:1rem 0;position:relative}ul.wfls-option li,.wfls-form-field li{margin:0;padding:0}ul.wfls-option.wfls-option-no-spacing,.wfls-form-field.wfls-option-no-spacing{padding:0;margin:0}ul.wfls-option.wfls-option-toggled>*:last-child,ul.wfls-option.wfls-option-toggled-boolean-switch>*:last-child,ul.wfls-option.wfls-option-toggled-select>*:last-child,ul.wfls-option.wfls-option-select>*:last-child,ul.wfls-option.wfls-option-text>*:last-child,ul.wfls-option.wfls-option-textarea>*:last-child,ul.wfls-option.wfls-option-switch>*:last-child,ul.wfls-option.wfls-option-footer>*:last-child,.wfls-form-field.wfls-option-toggled>*:last-child,.wfls-form-field.wfls-option-toggled-boolean-switch>*:last-child,.wfls-form-field.wfls-option-toggled-select>*:last-child,.wfls-form-field.wfls-option-select>*:last-child,.wfls-form-field.wfls-option-text>*:last-child,.wfls-form-field.wfls-option-textarea>*:last-child,.wfls-form-field.wfls-option-switch>*:last-child,.wfls-form-field.wfls-option-footer>*:last-child{margin-right:1rem}@media (max-width: 768px){ul.wfls-option.wfls-option-footer,.wfls-form-field.wfls-option-footer{-webkit-flex-direction:column;flex-direction:column}}ul.wfls-option>.wfls-option-content,.wfls-form-field>.wfls-option-content{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option>.wfls-option-content>ul,.wfls-form-field>.wfls-option-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;width:100%}ul.wfls-option>.wfls-option-content>ul>*:first-child,.wfls-form-field>.wfls-option-content>ul>*:first-child{-webkit-flex-grow:1;flex-grow:1}@media (min-width: 768px){ul.wfls-option>.wfls-option-content>ul,.wfls-form-field>.wfls-option-content>ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wfls-option.wfls-option-toggled-segmented *,.wfls-form-field.wfls-option-toggled-segmented *{-webkit-flex-grow:0;flex-grow:0}ul.wfls-option.wfls-option-toggled-segmented *:first-child,.wfls-form-field.wfls-option-toggled-segmented *:first-child{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option.wfls-option-toggled-segmented>*:last-child,.wfls-form-field.wfls-option-toggled-segmented>*:last-child{margin-left:1rem}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-title,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-title{font-size:.8rem}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:50%;flex-basis:50%;display:block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#00709e;background-color:#fff;border-color:#00709e;border-radius:0}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active.focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active.focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:hover,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active.focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:hover,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle{background-image:none}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled],ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly],fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly],fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled.wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled].wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly].wfls-focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:hover,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled].wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly].wfls-focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:hover,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-focus{background-color:#fff;border-color:#00709e}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label .wfls-badge,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label .wfls-badge{color:#fff;background-color:#00709e}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-first,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-first{border-radius:4px 0 0 4px}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-last,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-last{border-radius:0 4px 4px 0}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]{position:absolute;left:-9999px}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label{color:#fff;background-color:#00709e;border-color:#005e85}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#004c6b;border-color:#000405}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#004c6b;border-color:#003347}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active.focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active.focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:hover,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active.focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:hover,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle{background-image:none}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled],ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled.wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled].wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly].wfls-focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled].wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly].wfls-focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-focus{background-color:#00709e;border-color:#005e85}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label .wfls-badge,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label .wfls-badge{color:#00709e;background-color:#fff}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:disabled+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:disabled+label{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65}ul.wfls-option.wfls-option-toggled-multiple,ul.wfls-option.wfls-option-2fa-roles,.wfls-form-field.wfls-option-toggled-multiple,.wfls-form-field.wfls-option-2fa-roles{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start}ul.wfls-option.wfls-option-toggled-multiple>.wfls-option-title,ul.wfls-option.wfls-option-2fa-roles>.wfls-option-title,.wfls-form-field.wfls-option-toggled-multiple>.wfls-option-title,.wfls-form-field.wfls-option-2fa-roles>.wfls-option-title{font-weight:600}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul{flex-wrap:wrap}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul li,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul li{flex-grow:0;display:inline;margin:0 0.75rem 0.75rem 0}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul li label,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul li label{display:block;font-weight:bold}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul li select,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul li select{display:block}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container label,ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container input,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container input{vertical-align:middle}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container label{margin-bottom:0}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container .wfls-primary-label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container .wfls-primary-label{display:block;margin-bottom:0.25rem}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container #wfls-grace-period-zero-warning,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container #wfls-grace-period-zero-warning{margin-top:0.5rem}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action{margin-top:0.5rem}ul.wfls-option.wfls-option-2fa-roles small,.wfls-form-field.wfls-option-2fa-roles small{margin-top:0.5rem;display:block}ul.wfls-option>.wfls-option-spacer,.wfls-form-field>.wfls-option-spacer{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wfls-option>.wfls-option-spacer,.wfls-form-field>.wfls-option-spacer{width:20px;height:20px}}ul.wfls-option>.wfls-option-premium-lock,.wfls-form-field>.wfls-option-premium-lock{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:contain;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wfls-option>.wfls-option-premium-lock,.wfls-form-field>.wfls-option-premium-lock{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wfls-option>.wfls-option-checkbox,.wfls-form-field>.wfls-option-checkbox{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}ul.wfls-option>.wfls-boolean-switch,.wfls-form-field>.wfls-boolean-switch{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wfls-option>.wfls-boolean-switch,.wfls-form-field>.wfls-boolean-switch{margin:0 1rem 0 1rem}}ul.wfls-option.wfls-option-no-spacing>.wfls-boolean-switch,.wfls-form-field.wfls-option-no-spacing>.wfls-boolean-switch{margin:0}ul.wfls-option>.wfls-option-radio-container,.wfls-form-field>.wfls-option-radio-container{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wfls-option>.wfls-option-radio-container,.wfls-form-field>.wfls-option-radio-container{margin:0 2rem 0 1rem}}ul.wfls-option>.wfls-option-radio-container [type=radio].wfls-option-radio+label:before,.wfls-form-field>.wfls-option-radio-container [type=radio].wfls-option-radio+label:before{margin:0}ul.wfls-option>li>.wfls-option-title,ul.wfls-option>.wfls-option-title,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title,.wfls-form-field>li>.wfls-option-title,.wfls-form-field>.wfls-option-title,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#2b2b2b;padding-right:0.5rem}ul.wfls-option>li>.wfls-option-title.wfls-option-title-top,ul.wfls-option>.wfls-option-title.wfls-option-title-top,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-top,.wfls-form-field>li>.wfls-option-title.wfls-option-title-top,.wfls-form-field>.wfls-option-title.wfls-option-title-top,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-top{-webkit-align-self:flex-start;align-self:flex-start}ul.wfls-option>li>.wfls-option-title.wfls-option-title-bottom,ul.wfls-option>.wfls-option-title.wfls-option-title-bottom,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>li>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-bottom{-webkit-align-self:flex-end;align-self:flex-end}ul.wfls-option .wfls-option-subtitle,.wfls-form-field .wfls-option-subtitle{padding-top:0.25rem;font-size:0.75rem}ul.wfls-option .wfls-flex-vertical .wfls-option-title,.wfls-form-field .wfls-flex-vertical .wfls-option-title{padding-bottom:0.75rem}ul.wfls-option.wfls-flex-vertical>.wfls-option-subtitle,.wfls-form-field.wfls-flex-vertical>.wfls-option-subtitle{padding-top:0.25rem !important;font-size:0.75rem !important}ul.wfls-option .wfls-option-checkboxes,ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes,.wfls-form-field .wfls-option-checkboxes>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wfls-option .wfls-option-checkboxes.wfls-option-checkboxes-wrap,ul.wfls-option .wfls-option-checkboxes>ul.wfls-option-checkboxes-wrap,.wfls-form-field .wfls-option-checkboxes.wfls-option-checkboxes-wrap,.wfls-form-field .wfls-option-checkboxes>ul.wfls-option-checkboxes-wrap{-webkit-flex-wrap:wrap;flex-wrap:wrap}ul.wfls-option .wfls-option-checkboxes,.wfls-form-field .wfls-option-checkboxes{margin-top:0.5rem}ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes>ul{margin-top:0.5rem;margin-right:1rem}@media (min-width: 768px){ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes>ul{margin-right:1.5rem}}ul.wfls-option .wfls-option-checkboxes>ul:last-of-type,.wfls-form-field .wfls-option-checkboxes>ul:last-of-type{margin-right:0}ul.wfls-option .wfls-option-checkboxes>ul>.wfls-option-checkbox,.wfls-form-field .wfls-option-checkboxes>ul>.wfls-option-checkbox{margin:0 1rem 0 0}ul.wfls-option li.wfls-option-text,ul.wfls-option li.wfls-option-textarea,ul.wfls-option td.wfls-option-text,.wfls-form-field li.wfls-option-text,.wfls-form-field li.wfls-option-textarea,.wfls-form-field td.wfls-option-text{padding-top:0.5rem}@media (min-width: 768px){ul.wfls-option li.wfls-option-text,ul.wfls-option li.wfls-option-textarea,ul.wfls-option td.wfls-option-text,.wfls-form-field li.wfls-option-text,.wfls-form-field li.wfls-option-textarea,.wfls-form-field td.wfls-option-text{-webkit-flex-grow:1;flex-grow:1;text-align:right;padding-left:1rem;padding-top:0}}ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:280px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:340px}}ul.wfls-option li.wfls-option-text.wfls-option-full-width>input[type="text"],.wfls-form-field li.wfls-option-text.wfls-option-full-width>input[type="text"]{max-width:100%;width:100%}ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:150px;max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:200px;max-width:400px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:250px;max-width:500px}}ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{width:100%;height:80px;min-width:150px;max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{min-width:200px;max-width:280px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{min-width:250px;max-width:340px}}ul.wfls-option li.wfls-option-textarea>.wfls-flex-vertical>li>textarea,.wfls-form-field li.wfls-option-textarea>.wfls-flex-vertical>li>textarea{width:100%;height:80px;box-sizing:border-box}ul.wfls-option li.wfls-option-textarea>.wfls-flex-vertical>li.wfls-option-subtitle,.wfls-form-field li.wfls-option-textarea>.wfls-flex-vertical>li.wfls-option-subtitle{width:100%;text-align:left}ul.wfls-option li.wfls-option-switch,.wfls-form-field li.wfls-option-switch{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option li.wfls-option-switch.wfls-right .wfls-switch,.wfls-form-field li.wfls-option-switch.wfls-right .wfls-switch{justify-content:flex-end !important}ul.wfls-option li.wfls-option-select,.wfls-form-field li.wfls-option-select{-webkit-flex-grow:1;flex-grow:1;text-align:right}ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.9rem}}ul.wfls-option li.wfls-option-select .wfls-option-select-option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single,.wfls-form-field li.wfls-option-select .wfls-option-select-option,.wfls-form-field li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}ul.wfls-option li.wfls-option-select .wfls-option-select-option .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfls-option-select-option .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}ul.wfls-option li.wfls-option-select .wfls-option-select-option .wfselect2-selection__arrow,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection__arrow,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfls-option-select-option .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}ul.wfls-option li.wfls-option-select .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}ul.wfls-option li.wfls-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wfls-form-field li.wfls-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:240px}@media (min-width: 768px){ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:280px}}@media (min-width: 992px){ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:320px}}ul.wfls-option.wfls-option-token .wfselect2-container--default,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple,.wfls-form-field.wfls-option-token .wfselect2-container--default,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection__choice,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection__choice,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#fff;border-color:#e2e2e2;padding:0.5rem}ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-search__field,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-search__field,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}#wfls-option-require-2fa{margin-top:1rem}#wfls-option-require-2fa>li>ul{margin-left:1rem}@media (min-width: 768px){#wfls-option-require-2fa>li>ul{margin-left:1.5rem}}#wfls-option-require-2fa>li>ul:first-of-type{margin-left:0}#wfls-option-require-2fa>li>ul>.wfls-option-checkbox{margin:0 1rem 0 0}.wfls-option-sub{padding-left:2rem !important;margin-left:30px !important}.wfls-select2-suppress-dropdown .wfselect2-results,.wfls-select2-suppress-dropdown .wfselect2-dropdown{display:none}.wfls-options-controls{direction:ltr;background:#ffffff;border-bottom:1px solid #e2e2e2;position:absolute;left:160px;right:0px;top:46px;z-index:900;padding-left:15px;padding-right:15px}@media (min-width: 616px){.wfls-options-controls{position:fixed}}.wfls-options-controls .wfls-block{margin:0}@media (min-width: 782px){.wfls-options-controls .wfls-block{margin:0.5rem 0}}.wfls-options-controls,.sticky-menu .wfls-options-controls{top:32px}.folded .wfls-options-controls{left:36px}@media only screen and (max-width: 960px){.auto-fold .wfls-options-controls{left:36px}}.rtl .wfls-options-controls{right:160px;left:0px}.rtl .folded .wfls-options-controls{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wfls-options-controls{right:36px}}@media screen and (max-width: 782px){.wfls-options-controls,.folded .wfls-options-controls,.auto-fold .wfls-options-controls,.rtl .wfls-options-controls,.rtl .folded .wfls-options-controls,.rtl .auto-fold .wfls-options-controls{left:-10px;right:0px}}.wfls-options-controls-spacer{height:45px}@media (min-width: 782px){.wfls-options-controls-spacer{height:75px}}.wfls-options-controls-spacer,.sticky-menu .wfls-options-controls-spacer{top:61px}.wordfence .wfselect2-container .wfselect2-selection--single{border:1px solid #dadada;font-weight:normal;font-size:0.8rem}#wfls-notices{margin-top:15px}#wfls-notices .wfls-admin-notice{margin-left:0px;margin-right:0px}.wfls-success-text,.wfls-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wfls-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wfls-notice-text{color:#6d798c}.wfls-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wfls-success-text{color:#11967a}.wfls-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wfls-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wfls-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wfls-premium-callout .center{text-align:center;margin:0}.wfls-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}table.wfls-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wfls-table td,table.wfls-table th{padding:0}.wfls-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wfls-table th{text-align:left}.wfls-table{width:100%;max-width:100%;margin-bottom:20px}.wfls-table>thead>tr>th,.wfls-table>thead>tr>td,.wfls-table>tbody>tr>th,.wfls-table>tbody>tr>td,.wfls-table>tfoot>tr>th,.wfls-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wfls-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wfls-table>caption+thead>tr:first-child>th,.wfls-table>caption+thead>tr:first-child>td,.wfls-table>colgroup+thead>tr:first-child>th,.wfls-table>colgroup+thead>tr:first-child>td,.wfls-table>thead:first-child>tr:first-child>th,.wfls-table>thead:first-child>tr:first-child>td{border-top:0}.wfls-table>tbody+tbody{border-top:2px solid #ddd}.wfls-table .wfls-table{background-color:#fff}.wfls-table-header-separators>thead>tr>th{border-left:2px solid #ddd}.wfls-table-header-separators>thead>tr>th:first-child{border-left:0}.wfls-table-condensed>thead>tr>th,.wfls-table-condensed>thead>tr>td,.wfls-table-condensed>tbody>tr>th,.wfls-table-condensed>tbody>tr>td,.wfls-table-condensed>tfoot>tr>th,.wfls-table-condensed>tfoot>tr>td{padding:5px}.wfls-table-expanded>thead>tr>th,.wfls-table-expanded>thead>tr>td,.wfls-table-expanded>tbody>tr>th,.wfls-table-expanded>tbody>tr>td,.wfls-table-expanded>tfoot>tr>th,.wfls-table-expanded>tfoot>tr>td{padding:0.5rem 1rem}@media (min-width: 768px){.wfls-table-expanded>thead>tr>th,.wfls-table-expanded>thead>tr>td,.wfls-table-expanded>tbody>tr>th,.wfls-table-expanded>tbody>tr>td,.wfls-table-expanded>tfoot>tr>th,.wfls-table-expanded>tfoot>tr>td{padding:1rem 1.5rem}}.wfls-table-bordered{border:1px solid #ddd}.wfls-table-bordered>thead>tr>th,.wfls-table-bordered>thead>tr>td,.wfls-table-bordered>tbody>tr>th,.wfls-table-bordered>tbody>tr>td,.wfls-table-bordered>tfoot>tr>th,.wfls-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wfls-table-bordered>thead>tr>th,.wfls-table-bordered>thead>tr>td{border-bottom-width:2px}.wfls-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wfls-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wfls-table col[class*="col-"]{position:static;float:none;display:table-column}table.wfls-table td[class*="col-"],table.wfls-table th[class*="col-"]{position:static;float:none;display:table-cell}.wfls-table>thead>tr>td.active,.wfls-table>thead>tr>th.active,.wfls-table>thead>tr.active>td,.wfls-table>thead>tr.active>th,.wfls-table>tbody>tr>td.active,.wfls-table>tbody>tr>th.active,.wfls-table>tbody>tr.active>td,.wfls-table>tbody>tr.active>th,.wfls-table>tfoot>tr>td.active,.wfls-table>tfoot>tr>th.active,.wfls-table>tfoot>tr.active>td,.wfls-table>tfoot>tr.active>th{background-color:#f5f5f5}.wfls-table-hover>tbody>tr>td.active:hover,.wfls-table-hover>tbody>tr>th.active:hover,.wfls-table-hover>tbody>tr.active:hover>td,.wfls-table-hover>tbody>tr:hover>.active,.wfls-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wfls-table>thead>tr>td.success,.wfls-table>thead>tr>th.success,.wfls-table>thead>tr.success>td,.wfls-table>thead>tr.success>th,.wfls-table>tbody>tr>td.success,.wfls-table>tbody>tr>th.success,.wfls-table>tbody>tr.success>td,.wfls-table>tbody>tr.success>th,.wfls-table>tfoot>tr>td.success,.wfls-table>tfoot>tr>th.success,.wfls-table>tfoot>tr.success>td,.wfls-table>tfoot>tr.success>th{background-color:#dff0d8}.wfls-table-hover>tbody>tr>td.success:hover,.wfls-table-hover>tbody>tr>th.success:hover,.wfls-table-hover>tbody>tr.success:hover>td,.wfls-table-hover>tbody>tr:hover>.success,.wfls-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wfls-table>thead>tr>td.info,.wfls-table>thead>tr>th.info,.wfls-table>thead>tr.info>td,.wfls-table>thead>tr.info>th,.wfls-table>tbody>tr>td.info,.wfls-table>tbody>tr>th.info,.wfls-table>tbody>tr.info>td,.wfls-table>tbody>tr.info>th,.wfls-table>tfoot>tr>td.info,.wfls-table>tfoot>tr>th.info,.wfls-table>tfoot>tr.info>td,.wfls-table>tfoot>tr.info>th{background-color:#d9edf7}.wfls-table-hover>tbody>tr>td.info:hover,.wfls-table-hover>tbody>tr>th.info:hover,.wfls-table-hover>tbody>tr.info:hover>td,.wfls-table-hover>tbody>tr:hover>.info,.wfls-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wfls-table>thead>tr>td.warning,.wfls-table>thead>tr>th.warning,.wfls-table>thead>tr.warning>td,.wfls-table>thead>tr.warning>th,.wfls-table>tbody>tr>td.warning,.wfls-table>tbody>tr>th.warning,.wfls-table>tbody>tr.warning>td,.wfls-table>tbody>tr.warning>th,.wfls-table>tfoot>tr>td.warning,.wfls-table>tfoot>tr>th.warning,.wfls-table>tfoot>tr.warning>td,.wfls-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wfls-table-hover>tbody>tr>td.warning:hover,.wfls-table-hover>tbody>tr>th.warning:hover,.wfls-table-hover>tbody>tr.warning:hover>td,.wfls-table-hover>tbody>tr:hover>.warning,.wfls-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wfls-table>thead>tr>td.danger,.wfls-table>thead>tr>th.danger,.wfls-table>thead>tr.danger>td,.wfls-table>thead>tr.danger>th,.wfls-table>tbody>tr>td.danger,.wfls-table>tbody>tr>th.danger,.wfls-table>tbody>tr.danger>td,.wfls-table>tbody>tr.danger>th,.wfls-table>tfoot>tr>td.danger,.wfls-table>tfoot>tr>th.danger,.wfls-table>tfoot>tr.danger>td,.wfls-table>tfoot>tr.danger>th{background-color:#f2dede}.wfls-table-hover>tbody>tr>td.danger:hover,.wfls-table-hover>tbody>tr>th.danger:hover,.wfls-table-hover>tbody>tr.danger:hover>td,.wfls-table-hover>tbody>tr:hover>.danger,.wfls-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wfls-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wfls-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wfls-table-responsive>.wfls-table{margin-bottom:0}.wfls-table-responsive>.wfls-table>thead>tr>th,.wfls-table-responsive>.wfls-table>thead>tr>td,.wfls-table-responsive>.wfls-table>tbody>tr>th,.wfls-table-responsive>.wfls-table>tbody>tr>td,.wfls-table-responsive>.wfls-table>tfoot>tr>th,.wfls-table-responsive>.wfls-table>tfoot>tr>td{white-space:nowrap}.wfls-table-responsive>.wfls-table-bordered{border:0}.wfls-table-responsive>.wfls-table-bordered>thead>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>thead>tr>td:first-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>td:first-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>td:first-child{border-left:0}.wfls-table-responsive>.wfls-table-bordered>thead>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>thead>tr>td:last-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>td:last-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>td:last-child{border-right:0}.wfls-table-responsive>.wfls-table-bordered>tbody>tr:last-child>th,.wfls-table-responsive>.wfls-table-bordered>tbody>tr:last-child>td,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr:last-child>th,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wfls-sortable{position:relative;padding-right:2rem !important}.wfls-sortable .wfls-sorted-ascending,.wfls-sortable .wfls-sorted-descending{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.wfls-sortable.wfls-unsorted:hover .wfls-sorted-ascending{display:block}.wfls-sortable.wfls-unsorted,.wfls-sortable.wfls-sorted-ascending,.wfls-sortable.wfls-sorted-descending{cursor:pointer}.wfls-sortable.wfls-unsorted:hover,.wfls-sortable.wfls-sorted-ascending:hover,.wfls-sortable.wfls-sorted-descending:hover{background-color:#e0e0e0}.wfls-sortable.wfls-sorted-ascending,.wfls-sortable.wfls-sorted-descending{background-color:#e0e0e0}.wfls-sortable.wfls-sorted-ascending .wfls-sorted-ascending{display:block}.wfls-sortable.wfls-sorted-descending .wfls-sorted-descending{display:block}.wfls-nav{margin-bottom:0;padding-left:0;list-style:none}.wfls-nav:before,.wfls-nav:after{content:" ";display:table}.wfls-nav:after{clear:both}.wfls-nav>li{position:relative;display:block}.wfls-nav>li>a{position:relative;display:block;padding:8px 12px}.wfls-nav>li>a:hover,.wfls-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfls-nav>li.wfls-disabled>a{color:#777}.wfls-nav>li.wfls-disabled>a:hover,.wfls-nav>li.wfls-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wfls-nav .wfls-open>a,.wfls-nav .wfls-open>a:hover,.wfls-nav .wfls-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wfls-nav>li>a>img{max-width:none}.wfls-nav-tabs{border-bottom:1px solid #d0d0d0}.wfls-nav-tabs>li{float:left;margin-bottom:-1px}.wfls-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wfls-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #d0d0d0}.wfls-nav-tabs>li.wfls-active>a,.wfls-nav-tabs>li.wfls-active>a:hover,.wfls-nav-tabs>li.wfls-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wfls-nav-pills>li{float:left}.wfls-nav-pills>li>a{border-radius:4px;text-decoration:none;position:relative;display:block;padding:8px 12px}.wfls-nav-pills>li>a:hover,.wfls-nav-pills>li>a:focus{text-decoration:none !important;background-color:#e2e2e2}.wfls-nav-pills>li+li{margin-left:2px}.wfls-nav-pills>li.wfls-active>a,.wfls-nav-pills>li.wfls-active>a:hover,.wfls-nav-pills>li.wfls-active>a:focus{color:#fff;background-color:#00709e}.wfls-nav-pills.wfls-nav-pills-bordered>li>a{border:1px solid #e2e2e2}.wfls-nav-pills.wfls-nav-pills-connected>li>a{border-radius:0;border-right-width:0px}.wfls-nav-pills.wfls-nav-pills-connected>li+li{margin-left:0}.wfls-nav-pills.wfls-nav-pills-connected>li.active+li>a{border-left-width:0px}.wfls-nav-pills.wfls-nav-pills-connected>li:first-of-type>a{-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px;border-radius:4px 0 0 4px}.wfls-nav-pills.wfls-nav-pills-connected>li:last-of-type>a{-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0;border-radius:0 4px 4px 0;border-right-width:1px}.wfls-nav-stacked>li{float:none}.wfls-nav-stacked>li+li{margin-top:2px;margin-left:0}.wfls-nav-justified,.wfls-nav-tabs.wfls-nav-justified{width:100%}.wfls-nav-justified>li,.wfls-nav-tabs.wfls-nav-justified>li{float:none}.wfls-nav-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{text-align:center;margin-bottom:5px}.wfls-nav-justified>.wfls-dropdown .wfls-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wfls-nav-justified>li,.wfls-nav-tabs.wfls-nav-justified>li{display:table-cell;width:1%}.wfls-nav-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{margin-bottom:0}}.wfls-nav-tabs-justified,.wfls-nav-tabs.wfls-nav-justified{border-bottom:0}.wfls-nav-tabs-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{margin-right:0;border-radius:4px}.wfls-nav-tabs-justified>.wfls-active>a,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a,.wfls-nav-tabs-justified>.wfls-active>a:hover,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:hover,.wfls-nav-tabs-justified>.wfls-active>a:focus,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wfls-nav-tabs-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wfls-nav-tabs-justified>.wfls-active>a,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a,.wfls-nav-tabs-justified>.wfls-active>a:hover,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:hover,.wfls-nav-tabs-justified>.wfls-active>a:focus,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:focus{border-bottom-color:#fff}}.wfls-tab-content>.wfls-tab-pane{display:none}.wfls-tab-content>.wfls-active{display:block}.wfls-nav-tabs .wfls-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wfls-navbar-brand:hover,.wfls-navbar-brand:focus{text-decoration:none}.wfls-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wfls-navbar-brand,.navbar>.container-fluid .wfls-navbar-brand{margin-left:-8px}}.wfls-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wfls-dropup,.wfls-dropdown{position:relative}.wfls-dropdown-toggle:focus{outline:0}.wfls-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wfls-dropdown-menu .wfls-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wfls-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wfls-dropdown-menu>li>a:hover,.wfls-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wfls-dropdown-menu>.wfls-active>a,.wfls-dropdown-menu>.wfls-active>a:hover,.wfls-dropdown-menu>.wfls-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wfls-dropdown-menu>.wfls-disabled>a,.wfls-dropdown-menu>.wfls-disabled>a:hover,.wfls-dropdown-menu>.wfls-disabled>a:focus{color:#777}.wfls-dropdown-menu>.wfls-disabled>a:hover,.wfls-dropdown-menu>.wfls-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wfls-open>.wfls-dropdown-menu{display:block}.wfls-open>a{outline:0}.wfls-dropdown-menu-right{left:auto;right:0}.wfls-dropdown-menu-left{left:0;right:auto}.wfls-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wfls-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wfls-pull-right>.wfls-dropdown-menu{right:0;left:auto}.wfls-dropup .wfls-caret,.wfls-navbar-fixed-bottom .wfls-dropdown .wfls-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wfls-dropup .wfls-dropdown-menu,.wfls-navbar-fixed-bottom .wfls-dropdown .wfls-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wfls-navbar-right .wfls-dropdown-menu{right:0;left:auto}.wfls-navbar-right .wfls-dropdown-menu-left{left:0;right:auto}}.wfls-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}table.wfls-dataTable{width:auto;max-width:800px;clear:both;border-collapse:collapse;border-spacing:0}table.wfls-dataTable>thead th,table.wfls-dataTable>tfoot th{font-weight:bold}table.wfls-dataTable>thead th,table.wfls-dataTable>thead td{cursor:pointer;text-align:left;font-size:11px;border:1px solid #ccc;padding:8px 4px 5px 9px;text-transform:uppercase}table.wfls-dataTable>thead th:active,table.wfls-dataTable>thead td:active{outline:none}table.wfls-dataTable>tfoot th,table.wfls-dataTable>tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.wfls-dataTable>thead .sorting,table.wfls-dataTable>thead .sorting_asc,table.wfls-dataTable>thead .sorting_desc{cursor:pointer;*cursor:hand}table.wfls-dataTable>thead .sorting,table.wfls-dataTable>thead .sorting_asc,table.wfls-dataTable>thead .sorting_desc,table.wfls-dataTable>thead .sorting_asc_disabled,table.wfls-dataTable>thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.wfls-dataTable>thead .sorting{background-image:url(../img/sort_both.png)}table.wfls-dataTable>thead .sorting_asc{background-image:url(../img/sort_asc.png)}table.wfls-dataTable>thead .sorting_desc{background-image:url(../img/sort_desc.png)}table.wfls-dataTable>thead .sorting_asc_disabled{background-image:url(../img/sort_asc_disabled.png)}table.wfls-dataTable>thead .sorting_desc_disabled{background-image:url(../img/sort_desc_disabled.png)}table.wfls-dataTable>tbody>tr{background-color:#ffffff}table.wfls-dataTable>tbody>tr.selected{background-color:#B0BED9}table.wfls-dataTable>tbody>tr>th,table.wfls-dataTable>tbody>tr>td{padding:5px 8px}table.wfls-dataTable.row-border>tbody>tr>th,table.wfls-dataTable.row-border>tbody>tr>td,table.wfls-dataTable.display>tbody>tr>th,table.wfls-dataTable.display>tbody>tr>td{border:1px solid #cccccc}table.wfls-dataTable.row-border>tbody>tr:first-child>th,table.wfls-dataTable.row-border>tbody>tr:first-child>td,table.wfls-dataTable.display>tbody>tr:first-child>th,table.wfls-dataTable.display>tbody>tr:first-child>td{border-top:none}table.wfls-dataTable.cell-border>tbody>tr>th,table.wfls-dataTable.cell-border>tbody>tr>td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.wfls-dataTable.cell-border>tbody>tr>th:first-child,table.wfls-dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid #ddd}table.wfls-dataTable.cell-border>tbody>tr:first-child>th,table.wfls-dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.wfls-dataTable.stripe>tbody>tr.odd,table.wfls-dataTable.display>tbody>tr.odd{background-color:#f9f9f9}table.wfls-dataTable.stripe>tbody>tr.odd.selected,table.wfls-dataTable.display>tbody>tr.odd.selected{background-color:#acbad4}table.wfls-dataTable.hover>tbody>tr:hover,table.wfls-dataTable.display>tbody>tr:hover{background-color:#f6f6f6}table.wfls-dataTable.hover>tbody>tr:hover.selected,table.wfls-dataTable.display>tbody>tr:hover.selected{background-color:#aab7d1}table.wfls-dataTable.order-column>tbody>tr>.sorting_1,table.wfls-dataTable.order-column>tbody>tr>.sorting_2,table.wfls-dataTable.order-column>tbody>tr>.sorting_3,table.wfls-dataTable.display tbody>tr>.sorting_1,table.wfls-dataTable.display>tbody>tr>.sorting_2,table.wfls-dataTable.display>tbody>tr>.sorting_3{background-color:#fafafa}table.wfls-dataTable.order-column>tbody>tr.selected>.sorting_1,table.wfls-dataTable.order-column>tbody>tr.selected>.sorting_2,table.wfls-dataTable.order-column>tbody>tr.selected>.sorting_3,table.wfls-dataTable.display>tbody>tr.selected>.sorting_1,table.wfls-dataTable.display>tbody>tr.selected>.sorting_2,table.wfls-dataTable.display>tbody>tr.selected>.sorting_3{background-color:#acbad5}table.wfls-dataTable.display>tbody>tr.odd>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{background-color:#f1f1f1}table.wfls-dataTable.display>tbody>tr.odd>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{background-color:#f3f3f3}table.wfls-dataTable.display>tbody>tr.odd>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{background-color:whitesmoke}table.wfls-dataTable.display>tbody>tr.odd.selected>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.wfls-dataTable.display>tbody>tr.odd.selected>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.wfls-dataTable.display>tbody>tr.odd.selected>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.wfls-dataTable.display>tbody>tr.even>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.even>.sorting_1{background-color:#fafafa}table.wfls-dataTable.display>tbody>tr.even>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.even>.sorting_2{background-color:#fcfcfc}table.wfls-dataTable.display>tbody>tr.even>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.even>.sorting_3{background-color:#fefefe}table.wfls-dataTable.display>tbody>tr.even.selected>.sorting_1,table.wfls-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.wfls-dataTable.display>tbody>tr.even.selected>.sorting_2,table.wfls-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.wfls-dataTable.display>tbody>tr.even.selected>.sorting_3,table.wfls-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.wfls-dataTable.display>tbody>tr:hover>.sorting_1,table.wfls-dataTable.order-column.hover>tbody>tr:hover>.sorting_1{background-color:#eaeaea}table.wfls-dataTable.display>tbody>tr:hover>.sorting_2,table.wfls-dataTable.order-column.hover>tbody>tr:hover>.sorting_2{background-color:#ececec}table.wfls-dataTable.display>tbody>tr:hover>.sorting_3,table.wfls-dataTable.order-column.hover>tbody>tr:hover>.sorting_3{background-color:#efefef}table.wfls-dataTable.display>tbody>tr:hover.selected>.sorting_1,table.wfls-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_1{background-color:#a2aec7}table.wfls-dataTable.display>tbody>tr:hover.selected>.sorting_2,table.wfls-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.wfls-dataTable.display>tbody>tr:hover.selected>.sorting_3,table.wfls-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.wfls-dataTable.no-footer{border-bottom:1px solid #111}table.wfls-dataTable.nowrap th,table.wfls-dataTable.nowrap td{white-space:nowrap}table.wfls-dataTable.compact thead th,table.wfls-dataTable.compact thead td{padding:4px 17px 4px 4px}table.wfls-dataTable.compact tfoot th,table.wfls-dataTable.compact tfoot td{padding:4px}table.wfls-dataTable.compact>tbody>tr>th,table.wfls-dataTable.compact>tbody>tr>td{padding:4px}table.wfls-dataTable th.dt-left,table.wfls-dataTable td.dt-left{text-align:left}table.wfls-dataTable th.dt-center,table.wfls-dataTable td.dt-center,table.wfls-dataTable td.dataTables_empty{text-align:center}table.wfls-dataTable th.dt-right,table.wfls-dataTable td.dt-right{text-align:right}table.wfls-dataTable th.dt-justify,table.wfls-dataTable td.dt-justify{text-align:justify}table.wfls-dataTable th.dt-nowrap,table.wfls-dataTable td.dt-nowrap{white-space:nowrap}table.wfls-dataTable thead th.dt-head-left,table.wfls-dataTable thead td.dt-head-left,table.wfls-dataTable tfoot th.dt-head-left,table.wfls-dataTable tfoot td.dt-head-left{text-align:left}table.wfls-dataTable thead th.dt-head-center,table.wfls-dataTable thead td.dt-head-center,table.wfls-dataTable tfoot th.dt-head-center,table.wfls-dataTable tfoot td.dt-head-center{text-align:center}table.wfls-dataTable thead th.dt-head-right,table.wfls-dataTable thead td.dt-head-right,table.wfls-dataTable tfoot th.dt-head-right,table.wfls-dataTable tfoot td.dt-head-right{text-align:right}table.wfls-dataTable thead th.dt-head-justify,table.wfls-dataTable thead td.dt-head-justify,table.wfls-dataTable tfoot th.dt-head-justify,table.wfls-dataTable tfoot td.dt-head-justify{text-align:justify}table.wfls-dataTable thead th.dt-head-nowrap,table.wfls-dataTable thead td.dt-head-nowrap,table.wfls-dataTable tfoot th.dt-head-nowrap,table.wfls-dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.wfls-dataTable>tbody>tr>th.dt-body-left,table.wfls-dataTable>tbody>tr>td.dt-body-left{text-align:left}table.wfls-dataTable>tbody>tr>th.dt-body-center,table.wfls-dataTable>tbody>tr>td.dt-body-center{text-align:center}table.wfls-dataTable>tbody>tr>th.dt-body-right,table.wfls-dataTable>tbody>tr>td.dt-body-right{text-align:right}table.wfls-dataTable>tbody>tr>th.dt-body-justify,table.wfls-dataTable>tbody>tr>td.dt-body-justify{text-align:justify}table.wfls-dataTable>tbody>tr>th.dt-body-nowrap,table.wfls-dataTable>tbody>tr>td.dt-body-nowrap{white-space:nowrap}table.wfls-dataTable table.dataTable,table.wfls-dataTable th,table.wfls-dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.wfls-dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.wfls-dataTables_wrapper .dataTables_length{float:left}.wfls-dataTables_wrapper .dataTables_filter{float:right;text-align:right}.wfls-dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.wfls-dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.wfls-dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.current,.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #ffffff 0%,#dcdcdc 100%)}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.wfls-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%,#111111 100%)}.wfls-dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.wfls-dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.wfls-dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.wfls-dataTables_wrapper .dataTables_length,.wfls-dataTables_wrapper .dataTables_filter,.wfls-dataTables_wrapper .dataTables_info,.wfls-dataTables_wrapper .dataTables_processing,.wfls-dataTables_wrapper .dataTables_paginate{color:#333}.wfls-dataTables_wrapper .dataTables_scroll{clear:both}.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.wfls-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.wfls-dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.wfls-dataTables_wrapper.no-footer div.dataTables_scrollHead table,.wfls-dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.wfls-dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.wfls-dataTables_wrapper .dataTables_info,.wfls-dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.wfls-dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.wfls-dataTables_wrapper .dataTables_length,.wfls-dataTables_wrapper .dataTables_filter{float:none;text-align:center}.wfls-dataTables_wrapper .dataTables_filter{margin-top:0.5em}}.wfls-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wfls-alert h4{margin-top:0;color:inherit}.wfls-alert .wfls-alert-link{font-weight:bold}.wfls-alert>p,.wfls-alert>ul{margin-bottom:0}.wfls-alert>p+p{margin-top:5px}.wfls-alert-dismissable,.wfls-alert-dismissible{padding-right:35px}.wfls-alert-dismissable .close,.wfls-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wfls-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wfls-alert-success hr{border-top-color:#c9e2b3}.wfls-alert-success .alert-link{color:#2b542c}.wfls-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wfls-alert-info hr{border-top-color:#a6e1ec}.wfls-alert-info .alert-link{color:#245269}.wfls-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wfls-alert-warning hr{border-top-color:#f7e1b5}.wfls-alert-warning .alert-link{color:#66512c}.wfls-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wfls-alert-danger hr{border-top-color:#e4b9c0}.wfls-alert-danger .alert-link{color:#843534}#wfls-onboarding-standalone-modal{margin-bottom:1rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;background-color:#00709e;color:#ffffff;padding:1rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header #wfls-onboarding-standalone-modal-dismiss{font-size:1.35rem;color:#ffffff;text-decoration:none}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header
|