Version Description
- Improvement: Added an "unsubscribe" link to plugin-generated alerts.
- Improvement: Added some additional flags.
- Change: Removed some unnecessary files from the bundled GeoIP library.
- Change: Updated wording in the Terms of Use/Privacy Policy agreement UI.
- Change: The minimum "Lock out after how many login failures" is now 2.
- Change: The diagnostics report now includes the scan issues for easier debugging.
- Fix: Multiple improvements to automatic updating to avoid broken updates on sites with low resources or slow file systems.
- Fix: Better text wrapping in the top failed logins widget.
- Fix: Onboarding CSS/JS is now correctly enqueued for multisite installations.
- Fix: Fixed a missing asset with the bundled jQueryUI library.
- Fix: Fixed memory calculation when using PHP's supported shorthand syntax.
- Fix: Better wrapping behavior on the reason column in the blocks table.
- Fix: Fixed an issue with an internal data structure to prevent error log entries when using mbstring functions.
- Fix: Improved bot detection when no user agent is sent.
Download this release
Release Info
Developer | wfryan |
Plugin | ![]() |
Version | 7.1.9 |
Comparing to | |
See all releases |
Code changes from version 7.1.8 to 7.1.9
- css/{activity-report-widget.1530033614.css → activity-report-widget.1531408399.css} +0 -0
- css/{diff.1530033614.css → diff.1531408399.css} +0 -0
- css/{dt_table.1530033614.css → dt_table.1531408399.css} +0 -0
- css/{fullLog.1530033614.css → fullLog.1531408399.css} +0 -0
- css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- css/images/ui-bg_flat_100_1997c7_40x100.png +0 -0
- css/images/ui-bg_flat_100_222_40x100.png +0 -0
- css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- css/images/ui-bg_highlight-soft_75_a5a5a5_1x100.png +0 -0
- css/images/ui-icons_222222_256x240.png +0 -0
- css/images/ui-icons_444444_256x240.png +0 -0
- css/images/ui-icons_555555_256x240.png +0 -0
- css/images/{ui-icons_fbe569_256x240.png → ui-icons_777620_256x240.png} +0 -0
- css/images/ui-icons_777777_256x240.png +0 -0
- css/images/{ui-icons_cd0a0a_256x240.png → ui-icons_cc0000_256x240.png} +0 -0
- css/images/{ui-icons_fff_256x240.png → ui-icons_ffffff_256x240.png} +0 -0
- css/{iptraf.1530033614.css → iptraf.1531408399.css} +0 -0
- css/{jquery-ui-timepicker-addon.1530033614.css → jquery-ui-timepicker-addon.1531408399.css} +0 -0
- css/{jquery-ui.min.1530033614.css → jquery-ui.min.1531408399.css} +4 -4
- css/{jquery-ui.structure.min.1530033614.css → jquery-ui.structure.min.1531408399.css} +2 -2
- css/jquery-ui.theme.min.1530033614.css +0 -5
- css/jquery-ui.theme.min.1531408399.css +5 -0
- css/{main.1530033614.css → main.1531408399.css} +0 -0
- css/{phpinfo.1530033614.css → phpinfo.1531408399.css} +0 -0
- css/{wf-adminbar.1530033614.css → wf-adminbar.1531408399.css} +0 -0
- css/{wf-colorbox.1530033614.css → wf-colorbox.1531408399.css} +0 -0
- css/{wf-font-awesome.1530033614.css → wf-font-awesome.1531408399.css} +0 -0
- css/{wf-ionicons.1530033614.css → wf-ionicons.1531408399.css} +0 -0
- css/{wf-onboarding.1530033614.css → wf-onboarding.1531408399.css} +0 -0
- css/{wf-roboto-font.1530033614.css → wf-roboto-font.1531408399.css} +0 -0
- css/{wfselect2.min.1530033614.css → wfselect2.min.1531408399.css} +0 -0
- css/{wordfenceBox.1530033614.css → wordfenceBox.1531408399.css} +0 -0
- images/flags/bl.png +0 -0
- images/flags/bq.png +0 -0
- images/flags/hm.png +0 -0
- images/flags/mf.png +0 -0
- images/flags/sj.png +0 -0
- images/flags/ss.png +0 -0
- images/flags/sx.png +0 -0
- images/flags/un.png +0 -0
- js/{Chart.bundle.min.1530033614.js → Chart.bundle.min.1531408399.js} +0 -0
- js/{admin.1530033614.js → admin.1531408399.js} +0 -0
- js/{admin.ajaxWatcher.1530033614.js → admin.ajaxWatcher.1531408399.js} +0 -0
- js/{admin.liveTraffic.1530033614.js → admin.liveTraffic.1531408399.js} +0 -0
- js/{date.1530033614.js → date.1531408399.js} +0 -0
- js/{jquery-ui-timepicker-addon.1530033614.js → jquery-ui-timepicker-addon.1531408399.js} +0 -0
- js/{jquery.colorbox-min.1530033614.js → jquery.colorbox-min.1531408399.js} +0 -0
- js/{jquery.colorbox.1530033614.js → jquery.colorbox.1531408399.js} +0 -0
- js/{jquery.dataTables.min.1530033614.js → jquery.dataTables.min.1531408399.js} +0 -0
- js/{jquery.qrcode.min.1530033614.js → jquery.qrcode.min.1531408399.js} +0 -0
- js/{jquery.tmpl.min.1530033614.js → jquery.tmpl.min.1531408399.js} +0 -0
- js/{jquery.tools.min.1530033614.js → jquery.tools.min.1531408399.js} +0 -0
- js/{knockout-3.3.0.1530033614.js → knockout-3.3.0.1531408399.js} +0 -0
- js/{perf.1530033614.js → perf.1531408399.js} +0 -0
- js/{wfdashboard.1530033614.js → wfdashboard.1531408399.js} +0 -0
- js/{wfdropdown.1530033614.js → wfdropdown.1531408399.js} +0 -0
- js/{wfglobal.1530033614.js → wfglobal.1531408399.js} +0 -0
- js/{wfpopover.1530033614.js → wfpopover.1531408399.js} +0 -0
- js/{wfselect2.min.1530033614.js → wfselect2.min.1531408399.js} +0 -0
- lib/email_newIssues.php +1 -0
- lib/email_unsubscribeRequest.php +8 -0
- lib/menu_tools_diagnostic.php +33 -0
- lib/wfActivityReport.php +13 -1
- lib/wfArray.php +7 -7
- lib/wfConfig.php +46 -15
- lib/wfIssues.php +7 -2
- lib/wfLog.php +1 -1
- lib/wfOnboardingController.php +1 -1
- lib/wfUtils.php +73 -0
- lib/wordfenceClass.php +164 -3
- models/common/wfGeoIP2.php +11 -1
- readme.txt +18 -2
- vendor/composer/ca-bundle/README.md +0 -85
- vendor/geoip2/geoip2/CHANGELOG.md +0 -257
- vendor/geoip2/geoip2/README.md +0 -401
- vendor/maxmind-db/reader/CHANGELOG.md +0 -108
- vendor/maxmind-db/reader/README.md +0 -139
- vendor/maxmind-db/reader/ext/config.m4 +0 -19
- vendor/maxmind-db/reader/ext/maxminddb.c +0 -564
- vendor/maxmind-db/reader/ext/php_maxminddb.h +0 -24
- vendor/maxmind-db/reader/ext/tests/001-load.phpt +0 -12
- vendor/maxmind-db/reader/ext/tests/002-final.phpt +0 -13
- vendor/maxmind/web-service-common/CHANGELOG.md +0 -74
- vendor/maxmind/web-service-common/README.md +0 -26
- views/blocking/block-list.php +9 -1
- views/common/unsubscribe.php +130 -0
- views/gdpr/banner.php +1 -1
- views/reports/activity-report-email-inline.php +5 -1
- views/reports/activity-report.php +1 -1
- views/waf/options-group-brute-force.php +1 -1
- waf/wfWAFGeoIP2.php +12 -2
- wordfence.php +14 -6
css/{activity-report-widget.1530033614.css → activity-report-widget.1531408399.css}
RENAMED
File without changes
|
css/{diff.1530033614.css → diff.1531408399.css}
RENAMED
File without changes
|
css/{dt_table.1530033614.css → dt_table.1531408399.css}
RENAMED
File without changes
|
css/{fullLog.1530033614.css → fullLog.1531408399.css}
RENAMED
File without changes
|
css/images/ui-bg_flat_0_aaaaaa_40x100.png
DELETED
Binary file
|
css/images/ui-bg_flat_100_1997c7_40x100.png
DELETED
Binary file
|
css/images/ui-bg_flat_100_222_40x100.png
DELETED
Binary file
|
css/images/ui-bg_flat_75_ffffff_40x100.png
DELETED
Binary file
|
css/images/ui-bg_glass_95_fef1ec_1x400.png
DELETED
Binary file
|
css/images/ui-bg_highlight-soft_75_a5a5a5_1x100.png
DELETED
Binary file
|
css/images/ui-icons_222222_256x240.png
DELETED
Binary file
|
css/images/ui-icons_444444_256x240.png
ADDED
Binary file
|
css/images/ui-icons_555555_256x240.png
ADDED
Binary file
|
css/images/{ui-icons_fbe569_256x240.png → ui-icons_777620_256x240.png}
RENAMED
Binary file
|
css/images/ui-icons_777777_256x240.png
ADDED
Binary file
|
css/images/{ui-icons_cd0a0a_256x240.png → ui-icons_cc0000_256x240.png}
RENAMED
Binary file
|
css/images/{ui-icons_fff_256x240.png → ui-icons_ffffff_256x240.png}
RENAMED
File without changes
|
css/{iptraf.1530033614.css → iptraf.1531408399.css}
RENAMED
File without changes
|
css/{jquery-ui-timepicker-addon.1530033614.css → jquery-ui-timepicker-addon.1531408399.css}
RENAMED
File without changes
|
css/{jquery-ui.min.1530033614.css → jquery-ui.min.1531408399.css}
RENAMED
@@ -1,7 +1,7 @@
|
|
1 |
-
/*! jQuery UI - v1.11.4 -
|
2 |
* http://jqueryui.com
|
3 |
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
-
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=
|
5 |
-
* Copyright
|
6 |
|
7 |
-
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #474747;background:#222 url("images/ui-bg_flat_100_222_40x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #9f9f9f;background:#a5a5a5 url("images/ui-bg_highlight-soft_75_a5a5a5_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #eac500;background:#fffaba url("images/ui-bg_flat_100_fffaba_40x100.png") 50% 50% repeat-x;color:#222}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#222}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_ec882f_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
1 |
+
/*! jQuery UI - v1.11.4 - 2018-06-29
|
2 |
* http://jqueryui.com
|
3 |
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
+
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
|
5 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
|
7 |
+
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
css/{jquery-ui.structure.min.1530033614.css → jquery-ui.structure.min.1531408399.css}
RENAMED
@@ -1,5 +1,5 @@
|
|
1 |
-
/*! jQuery UI - v1.11.4 -
|
2 |
* http://jqueryui.com
|
3 |
-
* Copyright
|
4 |
|
5 |
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
|
1 |
+
/*! jQuery UI - v1.11.4 - 2018-06-29
|
2 |
* http://jqueryui.com
|
3 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
4 |
|
5 |
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
|
css/jquery-ui.theme.min.1530033614.css
DELETED
@@ -1,5 +0,0 @@
|
|
1 |
-
/*! jQuery UI - v1.11.4 - 2015-10-13
|
2 |
-
* http://jqueryui.com
|
3 |
-
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
|
4 |
-
|
5 |
-
.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #474747;background:#222 url("images/ui-bg_flat_100_222_40x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #9f9f9f;background:#a5a5a5 url("images/ui-bg_highlight-soft_75_a5a5a5_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #eac500;background:#fffaba url("images/ui-bg_flat_100_fffaba_40x100.png") 50% 50% repeat-x;color:#222}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#222}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_ec882f_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
|
|
|
|
|
|
|
|
|
css/jquery-ui.theme.min.1531408399.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*! jQuery UI - v1.11.4 - 2018-06-29
|
2 |
+
* http://jqueryui.com
|
3 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
4 |
+
|
5 |
+
.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
css/{main.1530033614.css → main.1531408399.css}
RENAMED
File without changes
|
css/{phpinfo.1530033614.css → phpinfo.1531408399.css}
RENAMED
File without changes
|
css/{wf-adminbar.1530033614.css → wf-adminbar.1531408399.css}
RENAMED
File without changes
|
css/{wf-colorbox.1530033614.css → wf-colorbox.1531408399.css}
RENAMED
File without changes
|
css/{wf-font-awesome.1530033614.css → wf-font-awesome.1531408399.css}
RENAMED
File without changes
|
css/{wf-ionicons.1530033614.css → wf-ionicons.1531408399.css}
RENAMED
File without changes
|
css/{wf-onboarding.1530033614.css → wf-onboarding.1531408399.css}
RENAMED
File without changes
|
css/{wf-roboto-font.1530033614.css → wf-roboto-font.1531408399.css}
RENAMED
File without changes
|
css/{wfselect2.min.1530033614.css → wfselect2.min.1531408399.css}
RENAMED
File without changes
|
css/{wordfenceBox.1530033614.css → wordfenceBox.1531408399.css}
RENAMED
File without changes
|
images/flags/bl.png
ADDED
Binary file
|
images/flags/bq.png
ADDED
Binary file
|
images/flags/hm.png
ADDED
Binary file
|
images/flags/mf.png
ADDED
Binary file
|
images/flags/sj.png
ADDED
Binary file
|
images/flags/ss.png
ADDED
Binary file
|
images/flags/sx.png
ADDED
Binary file
|
images/flags/un.png
ADDED
Binary file
|
js/{Chart.bundle.min.1530033614.js → Chart.bundle.min.1531408399.js}
RENAMED
File without changes
|
js/{admin.1530033614.js → admin.1531408399.js}
RENAMED
File without changes
|
js/{admin.ajaxWatcher.1530033614.js → admin.ajaxWatcher.1531408399.js}
RENAMED
File without changes
|
js/{admin.liveTraffic.1530033614.js → admin.liveTraffic.1531408399.js}
RENAMED
File without changes
|
js/{date.1530033614.js → date.1531408399.js}
RENAMED
File without changes
|
js/{jquery-ui-timepicker-addon.1530033614.js → jquery-ui-timepicker-addon.1531408399.js}
RENAMED
File without changes
|
js/{jquery.colorbox-min.1530033614.js → jquery.colorbox-min.1531408399.js}
RENAMED
File without changes
|
js/{jquery.colorbox.1530033614.js → jquery.colorbox.1531408399.js}
RENAMED
File without changes
|
js/{jquery.dataTables.min.1530033614.js → jquery.dataTables.min.1531408399.js}
RENAMED
File without changes
|
js/{jquery.qrcode.min.1530033614.js → jquery.qrcode.min.1531408399.js}
RENAMED
File without changes
|
js/{jquery.tmpl.min.1530033614.js → jquery.tmpl.min.1531408399.js}
RENAMED
File without changes
|
js/{jquery.tools.min.1530033614.js → jquery.tools.min.1531408399.js}
RENAMED
File without changes
|
js/{knockout-3.3.0.1530033614.js → knockout-3.3.0.1531408399.js}
RENAMED
File without changes
|
js/{perf.1530033614.js → perf.1531408399.js}
RENAMED
File without changes
|
js/{wfdashboard.1530033614.js → wfdashboard.1531408399.js}
RENAMED
File without changes
|
js/{wfdropdown.1530033614.js → wfdropdown.1531408399.js}
RENAMED
File without changes
|
js/{wfglobal.1530033614.js → wfglobal.1531408399.js}
RENAMED
File without changes
|
js/{wfpopover.1530033614.js → wfpopover.1531408399.js}
RENAMED
File without changes
|
js/{wfselect2.min.1530033614.js → wfselect2.min.1531408399.js}
RENAMED
File without changes
|
lib/email_newIssues.php
CHANGED
@@ -110,5 +110,6 @@
|
|
110 |
<p><?php _e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
|
111 |
<?php } ?>
|
112 |
|
|
|
113 |
|
114 |
|
110 |
<p><?php _e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
|
111 |
<?php } ?>
|
112 |
|
113 |
+
<p><!-- ##UNSUBSCRIBE## --></p>
|
114 |
|
115 |
|
lib/email_unsubscribeRequest.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
|
2 |
+
<?php printf(__('Either you or someone at IP address <b>%s</b> requested an alert unsubscribe link for the website <a href="%s"><b>%s</b></a>.', 'wordfence'), esc_html($IP), esc_attr($siteURL), esc_html($siteName)); ?>
|
3 |
+
<br><br>
|
4 |
+
<?php printf(__('Request was generated at: %s', 'wordfence'), wfUtils::localHumanDate()); ?>
|
5 |
+
<br><br>
|
6 |
+
<?php _e('If you did not request this, you can safely ignore it.', 'wordfence'); ?>
|
7 |
+
<br><br>
|
8 |
+
<?php printf(__('<a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt); ?>
|
lib/menu_tools_diagnostic.php
CHANGED
@@ -795,6 +795,39 @@ if (!isset($sendingDiagnosticEmail)) {
|
|
795 |
</div>
|
796 |
</div>
|
797 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
|
799 |
<?php if (!empty($inEmail)): ?>
|
800 |
<?php phpinfo(); ?>
|
795 |
</div>
|
796 |
</div>
|
797 |
</div>
|
798 |
+
|
799 |
+
<?php
|
800 |
+
if (!empty($inEmail)) {
|
801 |
+
echo '<h1>' . __('Scan Issues', 'wordfence') . "</h1>\n";
|
802 |
+
$issues = wfIssues::shared()->getIssues(0, 50, 0, 50);
|
803 |
+
$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
|
804 |
+
$issueTypes = wfIssues::validIssueTypes();
|
805 |
+
|
806 |
+
echo '<h2>' . sprintf(__('New Issues (%d total)', 'wordfence'), $issueCounts['new']) . "</h2>\n";
|
807 |
+
if (isset($issues['new']) && count($issues['new'])) {
|
808 |
+
foreach ($issues['new'] as $i) {
|
809 |
+
if (!in_array($i['type'], $issueTypes)) {
|
810 |
+
continue;
|
811 |
+
}
|
812 |
+
|
813 |
+
$viewContent = '';
|
814 |
+
try {
|
815 |
+
$viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render();
|
816 |
+
}
|
817 |
+
catch (wfViewNotFoundException $e) {
|
818 |
+
//Ignore -- should never happen since we validate the type
|
819 |
+
}
|
820 |
+
|
821 |
+
if (!empty($viewContent)) {
|
822 |
+
echo nl2br($viewContent) . "<br><br>\n";
|
823 |
+
}
|
824 |
+
}
|
825 |
+
}
|
826 |
+
else {
|
827 |
+
echo '<h1>' . __('No New Issues', 'wordfence') . "</h1>\n";
|
828 |
+
}
|
829 |
+
}
|
830 |
+
?>
|
831 |
|
832 |
<?php if (!empty($inEmail)): ?>
|
833 |
<?php phpinfo(); ?>
|
lib/wfActivityReport.php
CHANGED
@@ -539,7 +539,19 @@ SQL
|
|
539 |
*/
|
540 |
public function sendReportViaEmail($email_addresses) {
|
541 |
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
|
542 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
}
|
544 |
|
545 |
/**
|
539 |
*/
|
540 |
public function sendReportViaEmail($email_addresses) {
|
541 |
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
|
542 |
+
|
543 |
+
$content = $this->toEmailView()->__toString();
|
544 |
+
|
545 |
+
$success = true;
|
546 |
+
if (is_string($email_addresses)) { $email_addresses = explode(',', $email_addresses); }
|
547 |
+
foreach ($email_addresses as $email) {
|
548 |
+
$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);
|
549 |
+
if (!wp_mail($email, 'Wordfence activity for ' . date_i18n(get_option('date_format')) . ' on ' . $shortSiteURL, $uniqueContent, 'Content-Type: text/html')) {
|
550 |
+
$success = false;
|
551 |
+
}
|
552 |
+
}
|
553 |
+
|
554 |
+
return $success;
|
555 |
}
|
556 |
|
557 |
/**
|
lib/wfArray.php
CHANGED
@@ -8,21 +8,21 @@ class wfArray {
|
|
8 |
}
|
9 |
public function push($val){ //associative array with keys that match those given to constructor
|
10 |
foreach($this->keys as $key){
|
11 |
-
$this->data .= pack('N', strlen($val[$key])) . $val[$key];
|
12 |
}
|
13 |
$this->size++;
|
14 |
}
|
15 |
public function shift(){ //If you alternately call push and shift you must periodically call collectGarbage() or ->data will keep growing
|
16 |
$arr = array();
|
17 |
-
if(strlen($this->data) < 1){ return null; }
|
18 |
-
if($this->shiftPtr == strlen($this->data)){ return null; }
|
19 |
foreach($this->keys as $key){
|
20 |
-
$len = unpack('N', substr($this->data, $this->shiftPtr, 4));
|
21 |
$len = $len[1];
|
22 |
-
$arr[$key] = substr($this->data, $this->shiftPtr + 4, $len);
|
23 |
$this->shiftPtr += 4 + $len;
|
24 |
}
|
25 |
-
if($this->shiftPtr == strlen($this->data)){ //garbage collection
|
26 |
$this->data = ""; //we don't shorten with substr() because the assignment doubles peak mem
|
27 |
$this->shiftPtr = 0;
|
28 |
}
|
@@ -31,7 +31,7 @@ class wfArray {
|
|
31 |
}
|
32 |
public function collectGarbage(){ //only call collectGarbage if you're alternating between pushes and shifts and never emptying the array.
|
33 |
//If you don't collect garbage then the data that is shifted is never freed
|
34 |
-
$this->data = substr($this->data, $this->shiftPtr); //at this point memory usage doubles because of the = assignment (string copy is made), so try not to call collect garbage unless you have to.
|
35 |
$this->shiftPtr = 0;
|
36 |
}
|
37 |
public function zero(){ //Rather call this instead of collect garbage because it's way more mem efficient.
|
8 |
}
|
9 |
public function push($val){ //associative array with keys that match those given to constructor
|
10 |
foreach($this->keys as $key){
|
11 |
+
$this->data .= pack('N', wfUtils::strlen($val[$key])) . $val[$key];
|
12 |
}
|
13 |
$this->size++;
|
14 |
}
|
15 |
public function shift(){ //If you alternately call push and shift you must periodically call collectGarbage() or ->data will keep growing
|
16 |
$arr = array();
|
17 |
+
if(wfUtils::strlen($this->data) < 1){ return null; }
|
18 |
+
if($this->shiftPtr == wfUtils::strlen($this->data)){ return null; }
|
19 |
foreach($this->keys as $key){
|
20 |
+
$len = unpack('N', wfUtils::substr($this->data, $this->shiftPtr, 4));
|
21 |
$len = $len[1];
|
22 |
+
$arr[$key] = wfUtils::substr($this->data, $this->shiftPtr + 4, $len);
|
23 |
$this->shiftPtr += 4 + $len;
|
24 |
}
|
25 |
+
if($this->shiftPtr == wfUtils::strlen($this->data)){ //garbage collection
|
26 |
$this->data = ""; //we don't shorten with substr() because the assignment doubles peak mem
|
27 |
$this->shiftPtr = 0;
|
28 |
}
|
31 |
}
|
32 |
public function collectGarbage(){ //only call collectGarbage if you're alternating between pushes and shifts and never emptying the array.
|
33 |
//If you don't collect garbage then the data that is shifted is never freed
|
34 |
+
$this->data = wfUtils::substr($this->data, $this->shiftPtr); //at this point memory usage doubles because of the = assignment (string copy is made), so try not to call collect garbage unless you have to.
|
35 |
$this->shiftPtr = 0;
|
36 |
}
|
37 |
public function zero(){ //Rather call this instead of collect garbage because it's way more mem efficient.
|
lib/wfConfig.php
CHANGED
@@ -217,6 +217,7 @@ class wfConfig {
|
|
217 |
'supportHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
|
218 |
'touppPromptNeeded' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
|
219 |
'touppBypassNextCheck' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
|
|
|
220 |
),
|
221 |
);
|
222 |
public static $serializedOptions = array('lastAdminLogin', 'scanSched', 'emailedIssuesList', 'wf_summaryItems', 'adminUserList', 'twoFactorUsers', 'alertFreqTrack', 'wfStatusStartMsgs', 'vulnerabilities_plugin', 'vulnerabilities_theme', 'dashboardData', 'malwarePrefixes', 'coreHashes', 'noc1ScanSchedule', 'allScansScheduled', 'disclosureStates', 'scanStageStatuses', 'adminNoticeQueue');
|
@@ -251,6 +252,7 @@ class wfConfig {
|
|
251 |
}
|
252 |
}
|
253 |
self::set('encKey', substr(wfUtils::bigRandomHex(), 0, 16));
|
|
|
254 |
if (self::get('maxMem', false) === false) {
|
255 |
self::set('maxMem', '256');
|
256 |
}
|
@@ -883,22 +885,51 @@ class wfConfig {
|
|
883 |
return $result;
|
884 |
}
|
885 |
public static function autoUpdate(){
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
899 |
}
|
900 |
-
return;
|
901 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
902 |
require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
903 |
require_once(ABSPATH . 'wp-admin/includes/misc.php');
|
904 |
/* We were creating show_message here so that WP did not write to STDOUT. This had the strange effect of throwing an error about redeclaring show_message function, but only when a crawler hit the site and triggered the cron job. Not a human. So we're now just require'ing misc.php which does generate output, but that's OK because it is a loopback cron request.
|
@@ -916,7 +947,6 @@ class wfConfig {
|
|
916 |
return;
|
917 |
}
|
918 |
|
919 |
-
wp_update_plugins();
|
920 |
ob_start();
|
921 |
$upgrader = new Plugin_Upgrader();
|
922 |
$upret = $upgrader->upgrade(WORDFENCE_BASENAME);
|
@@ -925,6 +955,7 @@ class wfConfig {
|
|
925 |
if(wfConfig::get('alertOn_update') == '1' && preg_match('/Version: (\d+\.\d+\.\d+)/', $cont, $matches) ){
|
926 |
wordfence::alert("Wordfence Upgraded to version " . $matches[1], "Your Wordfence installation has been upgraded to version " . $matches[1], '127.0.0.1');
|
927 |
}
|
|
|
928 |
}
|
929 |
$output = @ob_get_contents();
|
930 |
@ob_end_clean();
|
217 |
'supportHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
|
218 |
'touppPromptNeeded' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
|
219 |
'touppBypassNextCheck' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
|
220 |
+
'autoUpdateAttempts' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
|
221 |
),
|
222 |
);
|
223 |
public static $serializedOptions = array('lastAdminLogin', 'scanSched', 'emailedIssuesList', 'wf_summaryItems', 'adminUserList', 'twoFactorUsers', 'alertFreqTrack', 'wfStatusStartMsgs', 'vulnerabilities_plugin', 'vulnerabilities_theme', 'dashboardData', 'malwarePrefixes', 'coreHashes', 'noc1ScanSchedule', 'allScansScheduled', 'disclosureStates', 'scanStageStatuses', 'adminNoticeQueue');
|
252 |
}
|
253 |
}
|
254 |
self::set('encKey', substr(wfUtils::bigRandomHex(), 0, 16));
|
255 |
+
self::set('longEncKey', bin2hex(wfWAFUtils::random_bytes(32)));
|
256 |
if (self::get('maxMem', false) === false) {
|
257 |
self::set('maxMem', '256');
|
258 |
}
|
885 |
return $result;
|
886 |
}
|
887 |
public static function autoUpdate(){
|
888 |
+
if (!wfConfig::get('other_bypassLitespeedNoabort', false) && getenv('noabort') != '1' && stristr($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false) {
|
889 |
+
$lastEmail = self::get('lastLiteSpdEmail', false);
|
890 |
+
if( (! $lastEmail) || (time() - (int)$lastEmail > (86400 * 30))){
|
891 |
+
self::set('lastLiteSpdEmail', time());
|
892 |
+
wordfence::alert("Wordfence Upgrade not run. Please modify your .htaccess", "To preserve the integrity of your website we are not running Wordfence auto-update.\n" .
|
893 |
+
"You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n" .
|
894 |
+
"Please go to your website now and make a minor change to your .htaccess to fix this.\n" .
|
895 |
+
"You can find out how to make this change at:\n" .
|
896 |
+
wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING) . "\n" .
|
897 |
+
"\nAlternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n",
|
898 |
+
'127.0.0.1'
|
899 |
+
);
|
900 |
+
}
|
901 |
+
return;
|
902 |
+
}
|
903 |
+
|
904 |
+
$runUpdate = false;
|
905 |
+
wp_update_plugins();
|
906 |
+
$update_plugins = get_site_transient('update_plugins');
|
907 |
+
if ($update_plugins && is_array($update_plugins->response) && isset($update_plugins->response[WORDFENCE_BASENAME])) {
|
908 |
+
$status = $update_plugins->response[WORDFENCE_BASENAME];
|
909 |
+
if (is_object($status) && property_exists($status, 'new_version')) {
|
910 |
+
$runUpdate = (version_compare($status->new_version, WORDFENCE_VERSION) > 0);
|
911 |
+
}
|
912 |
+
}
|
913 |
+
|
914 |
+
if ($runUpdate) {
|
915 |
+
try {
|
916 |
+
$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
|
917 |
+
$response = $api->call('should_auto_update', array(), array('currentVersion' => WORDFENCE_VERSION));
|
918 |
+
if (!(is_array($response) && isset($response['ok']) && wfUtils::truthyToBoolean($response['ok']))) {
|
919 |
+
$runUpdate = false;
|
920 |
}
|
|
|
921 |
}
|
922 |
+
catch (Exception $e) {
|
923 |
+
wfConfig::inc('autoUpdateAttempts');
|
924 |
+
$runUpdate = false;
|
925 |
+
}
|
926 |
+
}
|
927 |
+
|
928 |
+
if (!$runUpdate && wfConfig::get('autoUpdateAttempts') < 7) {
|
929 |
+
return;
|
930 |
+
}
|
931 |
+
|
932 |
+
try {
|
933 |
require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
|
934 |
require_once(ABSPATH . 'wp-admin/includes/misc.php');
|
935 |
/* We were creating show_message here so that WP did not write to STDOUT. This had the strange effect of throwing an error about redeclaring show_message function, but only when a crawler hit the site and triggered the cron job. Not a human. So we're now just require'ing misc.php which does generate output, but that's OK because it is a loopback cron request.
|
947 |
return;
|
948 |
}
|
949 |
|
|
|
950 |
ob_start();
|
951 |
$upgrader = new Plugin_Upgrader();
|
952 |
$upret = $upgrader->upgrade(WORDFENCE_BASENAME);
|
955 |
if(wfConfig::get('alertOn_update') == '1' && preg_match('/Version: (\d+\.\d+\.\d+)/', $cont, $matches) ){
|
956 |
wordfence::alert("Wordfence Upgraded to version " . $matches[1], "Your Wordfence installation has been upgraded to version " . $matches[1], '127.0.0.1');
|
957 |
}
|
958 |
+
wfConfig::set('autoUpdateAttempts', 0);
|
959 |
}
|
960 |
$output = @ob_get_contents();
|
961 |
@ob_end_clean();
|
lib/wfIssues.php
CHANGED
@@ -315,6 +315,10 @@ class wfIssues {
|
|
315 |
public function emailNewIssues($timeLimitReached = false, $scanController = false){
|
316 |
$level = wfConfig::getAlertLevel();
|
317 |
$emails = wfConfig::getAlertEmails();
|
|
|
|
|
|
|
|
|
318 |
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
|
319 |
$subject = "[Wordfence Alert] Problems found on $shortSiteURL";
|
320 |
|
@@ -373,8 +377,9 @@ class wfIssues {
|
|
373 |
'scanController' => ($scanController ? $scanController : wfScanner::shared()),
|
374 |
));
|
375 |
|
376 |
-
|
377 |
-
|
|
|
378 |
}
|
379 |
}
|
380 |
public function deleteIssue($id){
|
315 |
public function emailNewIssues($timeLimitReached = false, $scanController = false){
|
316 |
$level = wfConfig::getAlertLevel();
|
317 |
$emails = wfConfig::getAlertEmails();
|
318 |
+
if (!count($emails)) {
|
319 |
+
return;
|
320 |
+
}
|
321 |
+
|
322 |
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
|
323 |
$subject = "[Wordfence Alert] Problems found on $shortSiteURL";
|
324 |
|
377 |
'scanController' => ($scanController ? $scanController : wfScanner::shared()),
|
378 |
));
|
379 |
|
380 |
+
foreach ($emails as $email) {
|
381 |
+
$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);
|
382 |
+
wp_mail($email, $subject, $uniqueContent, 'Content-type: text/html');
|
383 |
}
|
384 |
}
|
385 |
public function deleteIssue($id){
|
lib/wfLog.php
CHANGED
@@ -290,7 +290,7 @@ class wfLog {
|
|
290 |
}
|
291 |
}
|
292 |
}
|
293 |
-
if
|
294 |
if($type == 'hit' && wfConfig::get('maxRequestsCrawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('maxRequestsCrawlers')){
|
295 |
$this->takeBlockingAction('maxRequestsCrawlers', "Exceeded the maximum number of requests per minute for crawlers."); //may not exit
|
296 |
} else if($type == '404' && wfConfig::get('max404Crawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('max404Crawlers')){
|
290 |
}
|
291 |
}
|
292 |
}
|
293 |
+
if((isset($_SERVER['HTTP_USER_AGENT']) && wfCrawl::isCrawler($_SERVER['HTTP_USER_AGENT'])) || empty($_SERVER['HTTP_USER_AGENT'])){
|
294 |
if($type == 'hit' && wfConfig::get('maxRequestsCrawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('maxRequestsCrawlers')){
|
295 |
$this->takeBlockingAction('maxRequestsCrawlers', "Exceeded the maximum number of requests per minute for crawlers."); //may not exit
|
296 |
} else if($type == '404' && wfConfig::get('max404Crawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('max404Crawlers')){
|
lib/wfOnboardingController.php
CHANGED
@@ -66,7 +66,7 @@ class wfOnboardingController {
|
|
66 |
self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
|
67 |
self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC));
|
68 |
|
69 |
-
if (wfUtils::isAdmin() && (($willShowAnyPluginOnboarding &&
|
70 |
wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION);
|
71 |
wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION);
|
72 |
wp_enqueue_style('wordfenceOnboardingCSS', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-onboarding.css'), '', WORDFENCE_VERSION);
|
66 |
self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
|
67 |
self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC));
|
68 |
|
69 |
+
if (wfUtils::isAdmin() && (($willShowAnyPluginOnboarding && preg_match('~(?:^|/)wp-admin(?:/network)?/plugins\.php~i', $_SERVER['REQUEST_URI'])) || (isset($_GET['page']) && preg_match('/^Wordfence/', @$_GET['page'])))) {
|
70 |
wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION);
|
71 |
wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION);
|
72 |
wp_enqueue_style('wordfenceOnboardingCSS', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-onboarding.css'), '', WORDFENCE_VERSION);
|
lib/wfUtils.php
CHANGED
@@ -2570,6 +2570,79 @@ class wfUtils {
|
|
2570 |
}
|
2571 |
return new DateTime($timestring);
|
2572 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2573 |
}
|
2574 |
|
2575 |
// GeoIP lib uses these as well
|
2570 |
}
|
2571 |
return new DateTime($timestring);
|
2572 |
}
|
2573 |
+
|
2574 |
+
/**
|
2575 |
+
* Base64URL-encodes the given payload. This is identical to base64_encode except it substitutes characters
|
2576 |
+
* not safe for use in URLs.
|
2577 |
+
*
|
2578 |
+
* @param string $payload
|
2579 |
+
* @return string
|
2580 |
+
*/
|
2581 |
+
public static function base64url_encode($payload) {
|
2582 |
+
$intermediate = base64_encode($payload);
|
2583 |
+
$intermediate = rtrim($intermediate, '=');
|
2584 |
+
$intermediate = str_replace('+', '-', $intermediate);
|
2585 |
+
$intermediate = str_replace('/', '_', $intermediate);
|
2586 |
+
return $intermediate;
|
2587 |
+
}
|
2588 |
+
|
2589 |
+
/**
|
2590 |
+
* Base64URL-decodes the given payload. This is identical to base64_encode except it allows for the characters
|
2591 |
+
* substituted by base64url_encode.
|
2592 |
+
*
|
2593 |
+
* @param string $payload
|
2594 |
+
* @return string
|
2595 |
+
*/
|
2596 |
+
public static function base64url_decode($payload) {
|
2597 |
+
$intermediate = str_replace('_', '/', $payload);
|
2598 |
+
$intermediate = str_replace('-', '+', $intermediate);
|
2599 |
+
$intermediate = base64_decode($intermediate);
|
2600 |
+
return $intermediate;
|
2601 |
+
}
|
2602 |
+
|
2603 |
+
/**
|
2604 |
+
* Returns a signed JWT for the given payload. Payload is expected to be an array suitable for JSON-encoding.
|
2605 |
+
*
|
2606 |
+
* @param array $payload
|
2607 |
+
* @param int $maxAge How long the JWT will be considered valid.
|
2608 |
+
* @return string
|
2609 |
+
*/
|
2610 |
+
public static function generateJWT($payload, $maxAge = 604800 /* 7 days */) {
|
2611 |
+
$payload['_exp'] = time() + $maxAge;
|
2612 |
+
$key = wfConfig::get('longEncKey');
|
2613 |
+
$header = '{"alg":"HS256","typ":"JWT"}';
|
2614 |
+
$body = self::base64url_encode($header) . '.' . self::base64url_encode(json_encode($payload));
|
2615 |
+
$signature = hash_hmac('sha256', $body, $key, true);
|
2616 |
+
return $body . '.' . self::base64url_encode($signature);
|
2617 |
+
}
|
2618 |
+
|
2619 |
+
/**
|
2620 |
+
* Decodes and returns the payload of a JWT. This also validates the signature.
|
2621 |
+
*
|
2622 |
+
* @param string $token
|
2623 |
+
* @return array|bool The decoded payload or false if the token is invalid or fails validation.
|
2624 |
+
*/
|
2625 |
+
public static function decodeJWT($token) {
|
2626 |
+
$components = explode('.', $token);
|
2627 |
+
if (count($components) != 3) {
|
2628 |
+
return false;
|
2629 |
+
}
|
2630 |
+
|
2631 |
+
$key = wfConfig::get('longEncKey');
|
2632 |
+
$body = $components[0] . '.' . $components[1];
|
2633 |
+
$signature = hash_hmac('sha256', $body, $key, true);
|
2634 |
+
$testSignature = self::base64url_decode($components[2]);
|
2635 |
+
if (!hash_equals($signature, $testSignature)) {
|
2636 |
+
return false;
|
2637 |
+
}
|
2638 |
+
|
2639 |
+
$json = self::base64url_decode($components[1]);
|
2640 |
+
$payload = @json_decode($json, true);
|
2641 |
+
if (isset($payload['_exp']) && $payload['_exp'] < time()) {
|
2642 |
+
return false;
|
2643 |
+
}
|
2644 |
+
return $payload;
|
2645 |
+
}
|
2646 |
}
|
2647 |
|
2648 |
// GeoIP lib uses these as well
|
lib/wordfenceClass.php
CHANGED
@@ -576,6 +576,7 @@ SQL
|
|
576 |
}
|
577 |
|
578 |
wfConfig::set('geoIPVersionHash', $geoIPVersionHash);
|
|
|
579 |
}
|
580 |
|
581 |
if (wfConfig::get('other_hideWPVersion')) {
|
@@ -1023,6 +1024,24 @@ SQL
|
|
1023 |
wfConfig::set('generateAllOptionsNotification', 1);
|
1024 |
}*/
|
1025 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1026 |
//Check the How does Wordfence get IPs setting
|
1027 |
wfUtils::requestDetectProxyCallback();
|
1028 |
|
@@ -1326,7 +1345,7 @@ SQL
|
|
1326 |
public static function ajax_lh_callback(){
|
1327 |
self::getLog()->canLogHit = false;
|
1328 |
$UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
|
1329 |
-
$isCrawler =
|
1330 |
if ($UA) {
|
1331 |
if (wfCrawl::isCrawler($UA) || wfCrawl::isGoogleCrawler()) {
|
1332 |
$isCrawler = true;
|
@@ -1618,12 +1637,152 @@ SQL
|
|
1618 |
}
|
1619 |
exit();
|
1620 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1621 |
|
1622 |
// Sync the WAF data with the database.
|
1623 |
if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) {
|
1624 |
$homeurl = wfUtils::wpHomeURL();
|
1625 |
$siteurl = wfUtils::wpSiteURL();
|
1626 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1627 |
try {
|
1628 |
$configDefaults = array(
|
1629 |
'apiKey' => wfConfig::get('apiKey'),
|
@@ -5759,6 +5918,7 @@ HTML
|
|
5759 |
$IPMsg .= $userLoc['countryName'] . "\n";
|
5760 |
}
|
5761 |
}
|
|
|
5762 |
$content = wfUtils::tmpl('email_genericAlert.php', array(
|
5763 |
'isPaid' => wfConfig::get('isPaid'),
|
5764 |
'subject' => $subject,
|
@@ -5802,8 +5962,9 @@ HTML
|
|
5802 |
}
|
5803 |
}
|
5804 |
wfConfig::set('lastEmailHash', time() . ':' . $hash);
|
5805 |
-
|
5806 |
-
|
|
|
5807 |
}
|
5808 |
}
|
5809 |
public static function getLog(){
|
576 |
}
|
577 |
|
578 |
wfConfig::set('geoIPVersionHash', $geoIPVersionHash);
|
579 |
+
wfConfig::set('needsGeoIPSync', true, wfConfig::DONT_AUTOLOAD); //From 7.1.9 but needs same conditional
|
580 |
}
|
581 |
|
582 |
if (wfConfig::get('other_hideWPVersion')) {
|
1024 |
wfConfig::set('generateAllOptionsNotification', 1);
|
1025 |
}*/
|
1026 |
|
1027 |
+
//7.1.9
|
1028 |
+
if (wfConfig::get('loginSec_maxFailures') == 1) {
|
1029 |
+
wfConfig::set('loginSec_maxFailures', 2);
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
$blocksTable = wfBlock::blocksTable();
|
1033 |
+
$patternBlocks = wfBlock::patternBlocks();
|
1034 |
+
foreach ($patternBlocks as $b) {
|
1035 |
+
if (!empty($b->ipRange) && preg_match('/^\d+\-\d+#x2F;', $b->ipRange)) { //Old-style range block using long2ip
|
1036 |
+
$ipRange = new wfUserIPRange($b->ipRange);
|
1037 |
+
$ipRange = $ipRange->getIPString();
|
1038 |
+
|
1039 |
+
$parameters = $b->parameters;
|
1040 |
+
$parameters['ipRange'] = $ipRange;
|
1041 |
+
$wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `parameters` = %s WHERE `id` = %d", json_encode($parameters), $b->id));
|
1042 |
+
}
|
1043 |
+
}
|
1044 |
+
|
1045 |
//Check the How does Wordfence get IPs setting
|
1046 |
wfUtils::requestDetectProxyCallback();
|
1047 |
|
1345 |
public static function ajax_lh_callback(){
|
1346 |
self::getLog()->canLogHit = false;
|
1347 |
$UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
|
1348 |
+
$isCrawler = empty($UA);
|
1349 |
if ($UA) {
|
1350 |
if (wfCrawl::isCrawler($UA) || wfCrawl::isGoogleCrawler()) {
|
1351 |
$isCrawler = true;
|
1637 |
}
|
1638 |
exit();
|
1639 |
}
|
1640 |
+
else if ($wfFunc == 'removeAlertEmail') {
|
1641 |
+
wfUtils::doNotCache();
|
1642 |
+
|
1643 |
+
$payloadStatus = false;
|
1644 |
+
$jwt = (isset($_GET['jwt']) && is_string($_GET['jwt'])) ? $_GET['jwt'] : '';
|
1645 |
+
if (!empty($jwt)) {
|
1646 |
+
$payload = wfUtils::decodeJWT($jwt);
|
1647 |
+
if ($payload && isset($payload['email'])) {
|
1648 |
+
$payloadStatus = true;
|
1649 |
+
}
|
1650 |
+
}
|
1651 |
+
|
1652 |
+
if (isset($_POST['resend'])) {
|
1653 |
+
$email = trim(@$_POST['email']);
|
1654 |
+
$found = false;
|
1655 |
+
$alertEmails = wfConfig::getAlertEmails();
|
1656 |
+
foreach ($alertEmails as $e) {
|
1657 |
+
if ($e == $email) {
|
1658 |
+
$found = true;
|
1659 |
+
break;
|
1660 |
+
}
|
1661 |
+
}
|
1662 |
+
|
1663 |
+
if ($found) {
|
1664 |
+
$content = wfUtils::tmpl('email_unsubscribeRequest.php', array(
|
1665 |
+
'siteName' => get_bloginfo('name', 'raw'),
|
1666 |
+
'siteURL' => wfUtils::getSiteBaseURL(),
|
1667 |
+
'IP' => wfUtils::getIP(),
|
1668 |
+
'jwt' => wfUtils::generateJWT(array('email' => $email)),
|
1669 |
+
));
|
1670 |
+
wp_mail($email, "Unsubscribe Requested", $content, "Content-Type: text/html");
|
1671 |
+
}
|
1672 |
+
|
1673 |
+
echo wfView::create('common/unsubscribe', array(
|
1674 |
+
'state' => 'resent',
|
1675 |
+
))->render();
|
1676 |
+
exit();
|
1677 |
+
}
|
1678 |
+
else if (!$payloadStatus) {
|
1679 |
+
echo wfView::create('common/unsubscribe', array(
|
1680 |
+
'state' => 'bad',
|
1681 |
+
))->render();
|
1682 |
+
exit();
|
1683 |
+
}
|
1684 |
+
else if (isset($_POST['confirm'])) {
|
1685 |
+
$confirm = wfUtils::truthyToBoolean($_POST['confirm']);
|
1686 |
+
if ($confirm) {
|
1687 |
+
$found = false;
|
1688 |
+
$alertEmails = wfConfig::getAlertEmails();
|
1689 |
+
$updatedAlertEmails = array();
|
1690 |
+
foreach ($alertEmails as $alertEmail) {
|
1691 |
+
if ($alertEmail == $payload['email']) {
|
1692 |
+
$found = true;
|
1693 |
+
}
|
1694 |
+
else {
|
1695 |
+
$updatedAlertEmails[] = $alertEmail;
|
1696 |
+
}
|
1697 |
+
}
|
1698 |
+
|
1699 |
+
if ($found) {
|
1700 |
+
wfConfig::set('alertEmails', implode(',', $updatedAlertEmails));
|
1701 |
+
}
|
1702 |
+
|
1703 |
+
echo wfView::create('common/unsubscribe', array(
|
1704 |
+
'jwt' => $_GET['jwt'],
|
1705 |
+
'email' => $payload['email'],
|
1706 |
+
'state' => 'unsubscribed',
|
1707 |
+
))->render();
|
1708 |
+
exit();
|
1709 |
+
}
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
echo wfView::create('common/unsubscribe', array(
|
1713 |
+
'jwt' => $_GET['jwt'],
|
1714 |
+
'email' => $payload['email'],
|
1715 |
+
'state' => 'prompt',
|
1716 |
+
))->render();
|
1717 |
+
exit();
|
1718 |
+
}
|
1719 |
|
1720 |
// Sync the WAF data with the database.
|
1721 |
if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) {
|
1722 |
$homeurl = wfUtils::wpHomeURL();
|
1723 |
$siteurl = wfUtils::wpSiteURL();
|
1724 |
|
1725 |
+
//Sync the GeoIP database if needed
|
1726 |
+
$destination = WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb';
|
1727 |
+
if (!file_exists($destination) || wfConfig::get('needsGeoIPSync')) {
|
1728 |
+
$allowSync = false;
|
1729 |
+
if (wfConfig::createLock('wfSyncGeoIP')) {
|
1730 |
+
$status = get_transient('wfSyncGeoIPActive');
|
1731 |
+
if (!$status) {
|
1732 |
+
$allowSync = true;
|
1733 |
+
set_transient('wfSyncGeoIPActive', true, 3600);
|
1734 |
+
}
|
1735 |
+
wfConfig::releaseLock('wfSyncGeoIP');
|
1736 |
+
}
|
1737 |
+
|
1738 |
+
if ($allowSync) {
|
1739 |
+
$source = dirname(__FILE__) . '/GeoLite2-Country.mmdb';
|
1740 |
+
if (copy($source, $destination)) {
|
1741 |
+
$shash = '';
|
1742 |
+
$dhash = '';
|
1743 |
+
|
1744 |
+
$sp = @fopen($source, "rb");
|
1745 |
+
if ($sp) {
|
1746 |
+
$scontext = hash_init('sha256');
|
1747 |
+
while (!feof($sp)) {
|
1748 |
+
$data = fread($sp, 65536);
|
1749 |
+
if ($data === false) {
|
1750 |
+
$scontext = false;
|
1751 |
+
break;
|
1752 |
+
}
|
1753 |
+
hash_update($scontext, $data);
|
1754 |
+
}
|
1755 |
+
fclose($sp);
|
1756 |
+
if ($scontext !== false) {
|
1757 |
+
$shash = hash_final($scontext, false);
|
1758 |
+
}
|
1759 |
+
}
|
1760 |
+
|
1761 |
+
$dp = @fopen($destination, "rb");
|
1762 |
+
if ($dp) {
|
1763 |
+
$dcontext = hash_init('sha256');
|
1764 |
+
while (!feof($dp)) {
|
1765 |
+
$data = fread($dp, 65536);
|
1766 |
+
if ($data === false) {
|
1767 |
+
$dcontext = false;
|
1768 |
+
break;
|
1769 |
+
}
|
1770 |
+
hash_update($dcontext, $data);
|
1771 |
+
}
|
1772 |
+
fclose($dp);
|
1773 |
+
if ($scontext !== false) {
|
1774 |
+
$dhash = hash_final($dcontext, false);
|
1775 |
+
}
|
1776 |
+
}
|
1777 |
+
|
1778 |
+
if (hash_equals($shash, $dhash)) {
|
1779 |
+
wfConfig::remove('needsGeoIPSync');
|
1780 |
+
delete_transient('wfSyncGeoIPActive');
|
1781 |
+
}
|
1782 |
+
}
|
1783 |
+
}
|
1784 |
+
}
|
1785 |
+
|
1786 |
try {
|
1787 |
$configDefaults = array(
|
1788 |
'apiKey' => wfConfig::get('apiKey'),
|
5918 |
$IPMsg .= $userLoc['countryName'] . "\n";
|
5919 |
}
|
5920 |
}
|
5921 |
+
|
5922 |
$content = wfUtils::tmpl('email_genericAlert.php', array(
|
5923 |
'isPaid' => wfConfig::get('isPaid'),
|
5924 |
'subject' => $subject,
|
5962 |
}
|
5963 |
}
|
5964 |
wfConfig::set('lastEmailHash', time() . ':' . $hash);
|
5965 |
+
foreach ($emails as $email) {
|
5966 |
+
$uniqueContent = $content . "\n\n" . sprintf(__('No longer an administrator for this site? Click here to stop receiving security alerts: %s', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email)));
|
5967 |
+
wp_mail($email, $subject, $uniqueContent);
|
5968 |
}
|
5969 |
}
|
5970 |
public static function getLog(){
|
models/common/wfGeoIP2.php
CHANGED
@@ -11,7 +11,7 @@ class wfGeoIP2 {
|
|
11 |
/**
|
12 |
* Returns the singleton wfGeoIP2.
|
13 |
*
|
14 |
-
* @return
|
15 |
*/
|
16 |
public static function shared() {
|
17 |
static $_geoip = null;
|
@@ -22,6 +22,16 @@ class wfGeoIP2 {
|
|
22 |
}
|
23 |
|
24 |
public function __construct() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
$this->_reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway
|
26 |
}
|
27 |
|
11 |
/**
|
12 |
* Returns the singleton wfGeoIP2.
|
13 |
*
|
14 |
+
* @return wfGeoIP2
|
15 |
*/
|
16 |
public static function shared() {
|
17 |
static $_geoip = null;
|
22 |
}
|
23 |
|
24 |
public function __construct() {
|
25 |
+
try {
|
26 |
+
if (file_exists(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb')) {
|
27 |
+
$this->_reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb');
|
28 |
+
return;
|
29 |
+
}
|
30 |
+
}
|
31 |
+
catch (Exception $e) {
|
32 |
+
//Fall through to bundled copy
|
33 |
+
}
|
34 |
+
|
35 |
$this->_reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway
|
36 |
}
|
37 |
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: mmaunder
|
|
3 |
Tags: security, firewall, malware scanner, web application firewall, antivirus, block hackers, country blocking, clean hacked site, blacklist, waf, login security
|
4 |
Requires at least: 3.9
|
5 |
Requires PHP: 5.2
|
6 |
-
Tested up to: 4.9.
|
7 |
-
Stable tag: 7.1.
|
8 |
|
9 |
Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
|
10 |
|
@@ -172,6 +172,22 @@ Secure your website with Wordfence.
|
|
172 |
|
173 |
== Changelog ==
|
174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
= 7.1.8 =
|
176 |
* Improvement: Better detection of removal status when uninstalling the WAF's auto-prepend file.
|
177 |
* Improvement: Switched optional mailing list signup to go directly through our servers rather than a third party.
|
3 |
Tags: security, firewall, malware scanner, web application firewall, antivirus, block hackers, country blocking, clean hacked site, blacklist, waf, login security
|
4 |
Requires at least: 3.9
|
5 |
Requires PHP: 5.2
|
6 |
+
Tested up to: 4.9.7
|
7 |
+
Stable tag: 7.1.9
|
8 |
|
9 |
Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
|
10 |
|
172 |
|
173 |
== Changelog ==
|
174 |
|
175 |
+
= 7.1.9 =
|
176 |
+
* Improvement: Added an "unsubscribe" link to plugin-generated alerts.
|
177 |
+
* Improvement: Added some additional flags.
|
178 |
+
* Change: Removed some unnecessary files from the bundled GeoIP library.
|
179 |
+
* Change: Updated wording in the Terms of Use/Privacy Policy agreement UI.
|
180 |
+
* Change: The minimum "Lock out after how many login failures" is now 2.
|
181 |
+
* Change: The diagnostics report now includes the scan issues for easier debugging.
|
182 |
+
* Fix: Multiple improvements to automatic updating to avoid broken updates on sites with low resources or slow file systems.
|
183 |
+
* Fix: Better text wrapping in the top failed logins widget.
|
184 |
+
* Fix: Onboarding CSS/JS is now correctly enqueued for multisite installations.
|
185 |
+
* Fix: Fixed a missing asset with the bundled jQueryUI library.
|
186 |
+
* Fix: Fixed memory calculation when using PHP's supported shorthand syntax.
|
187 |
+
* Fix: Better wrapping behavior on the reason column in the blocks table.
|
188 |
+
* Fix: Fixed an issue with an internal data structure to prevent error log entries when using mbstring functions.
|
189 |
+
* Fix: Improved bot detection when no user agent is sent.
|
190 |
+
|
191 |
= 7.1.8 =
|
192 |
* Improvement: Better detection of removal status when uninstalling the WAF's auto-prepend file.
|
193 |
* Improvement: Switched optional mailing list signup to go directly through our servers rather than a third party.
|
vendor/composer/ca-bundle/README.md
DELETED
@@ -1,85 +0,0 @@
|
|
1 |
-
composer/ca-bundle
|
2 |
-
==================
|
3 |
-
|
4 |
-
Small utility library that lets you find a path to the system CA bundle,
|
5 |
-
and includes a fallback to the Mozilla CA bundle.
|
6 |
-
|
7 |
-
Originally written as part of [composer/composer](https://github.com/composer/composer),
|
8 |
-
now extracted and made available as a stand-alone library.
|
9 |
-
|
10 |
-
|
11 |
-
Installation
|
12 |
-
------------
|
13 |
-
|
14 |
-
Install the latest version with:
|
15 |
-
|
16 |
-
```bash
|
17 |
-
$ composer require composer/ca-bundle
|
18 |
-
```
|
19 |
-
|
20 |
-
|
21 |
-
Requirements
|
22 |
-
------------
|
23 |
-
|
24 |
-
* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
|
25 |
-
|
26 |
-
|
27 |
-
Basic usage
|
28 |
-
-----------
|
29 |
-
|
30 |
-
# `Composer\CaBundle\CaBundle`
|
31 |
-
|
32 |
-
- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback
|
33 |
-
- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file
|
34 |
-
- `CaBundle::validateCaFile($filename)`: Validates a CA file using opensl_x509_parse only if it is safe to use
|
35 |
-
- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse()
|
36 |
-
- `CaBundle::reset()`: Resets the static caches
|
37 |
-
|
38 |
-
|
39 |
-
## To use with curl
|
40 |
-
|
41 |
-
```php
|
42 |
-
$curl = curl_init("https://example.org/");
|
43 |
-
|
44 |
-
$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
|
45 |
-
if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
|
46 |
-
curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);
|
47 |
-
} else {
|
48 |
-
curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile);
|
49 |
-
}
|
50 |
-
|
51 |
-
$result = curl_exec($curl);
|
52 |
-
```
|
53 |
-
|
54 |
-
## To use with php streams
|
55 |
-
|
56 |
-
```php
|
57 |
-
$opts = array(
|
58 |
-
'http' => array(
|
59 |
-
'method' => "GET"
|
60 |
-
)
|
61 |
-
);
|
62 |
-
|
63 |
-
$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
|
64 |
-
if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
|
65 |
-
$opts['ssl']['capath'] = $caPathOrFile;
|
66 |
-
} else {
|
67 |
-
$opts['ssl']['cafile'] = $caPathOrFile;
|
68 |
-
}
|
69 |
-
|
70 |
-
$context = stream_context_create($opts);
|
71 |
-
$result = file_get_contents('https://example.com', false, $context);
|
72 |
-
```
|
73 |
-
|
74 |
-
## To use with Guzzle
|
75 |
-
|
76 |
-
```php
|
77 |
-
$client = new \GuzzleHttp\Client([
|
78 |
-
\GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath()
|
79 |
-
]);
|
80 |
-
```
|
81 |
-
|
82 |
-
License
|
83 |
-
-------
|
84 |
-
|
85 |
-
composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/geoip2/geoip2/CHANGELOG.md
DELETED
@@ -1,257 +0,0 @@
|
|
1 |
-
CHANGELOG
|
2 |
-
=========
|
3 |
-
|
4 |
-
2.8.0 (2018-01-18)
|
5 |
-
------------------
|
6 |
-
|
7 |
-
- The `isInEuropeanUnion` property was added to `GeoIp2\Record\Country`
|
8 |
-
and `GeoIp2\Record\RepresentedCountry`. This property is `true` if the
|
9 |
-
country is a member state of the European Union.
|
10 |
-
|
11 |
-
2.7.0 (2017-10-27)
|
12 |
-
------------------
|
13 |
-
|
14 |
-
* The following new anonymizer properties were added to `GeoIp2\Record\Traits`
|
15 |
-
for use with GeoIP2 Precision Insights: `isAnonymous`, `isAnonymousVpn`,
|
16 |
-
`isHostingProvider`, `isPublicProxy`, and `isTorExitNode`.
|
17 |
-
|
18 |
-
2.6.0 (2017-07-10)
|
19 |
-
-----------------
|
20 |
-
|
21 |
-
* Code clean-up and tidying.
|
22 |
-
* Set minimum required PHP version to 5.4 in `composer.json`. Previously,
|
23 |
-
5.3 would work but was not tested. Now 5.4 is hard minimum version.
|
24 |
-
|
25 |
-
2.5.0 (2017-05-08)
|
26 |
-
------------------
|
27 |
-
|
28 |
-
* Support for PHP 5.3 was dropped.
|
29 |
-
* Added support for GeoLite2 ASN database.
|
30 |
-
|
31 |
-
2.4.5 (2017-01-31)
|
32 |
-
------------------
|
33 |
-
|
34 |
-
* Additional error checking on the data returned from `MaxMind\Db\Reader`
|
35 |
-
was added to help detect corrupt databases. GitHub #83.
|
36 |
-
|
37 |
-
2.4.4 (2016-10-11)
|
38 |
-
------------------
|
39 |
-
|
40 |
-
* `isset()` on `mostSpecificSubdivision` attribute now returns the
|
41 |
-
correct value. Reported by Juan Francisco Giordana. GitHub #81.
|
42 |
-
|
43 |
-
2.4.3 (2016-10-11)
|
44 |
-
------------------
|
45 |
-
|
46 |
-
* `isset()` on `name` attribute now returns the correct value. Reported by
|
47 |
-
Juan Francisco Giordana. GitHub #79.
|
48 |
-
|
49 |
-
2.4.2 (2016-08-17)
|
50 |
-
------------------
|
51 |
-
|
52 |
-
* Updated documentation to clarify what the accuracy radius refers to.
|
53 |
-
* Upgraded `maxmind/web-service-common` to 0.3.0. This version uses
|
54 |
-
`composer/ca-bundle` rather than our own CA bundle. GitHub #75.
|
55 |
-
* Improved PHP documentation generation.
|
56 |
-
|
57 |
-
2.4.1 (2016-06-10)
|
58 |
-
------------------
|
59 |
-
|
60 |
-
* Corrected type annotations in documentation. GitHub #66.
|
61 |
-
* Updated documentation to reflect that the accuracy radius is now included
|
62 |
-
in City.
|
63 |
-
* Upgraded web service client, which supports setting a proxy. GitHub #59.
|
64 |
-
|
65 |
-
2.4.0 (2016-04-15)
|
66 |
-
------------------
|
67 |
-
|
68 |
-
* Added support for the GeoIP2 Enterprise database.
|
69 |
-
|
70 |
-
2.3.3 (2015-09-24)
|
71 |
-
------------------
|
72 |
-
|
73 |
-
* Corrected case on `JsonSerializable` interface. Reported by Axel Etcheverry.
|
74 |
-
GitHub #56.
|
75 |
-
|
76 |
-
2.3.2 (2015-09-23)
|
77 |
-
------------------
|
78 |
-
|
79 |
-
* `JsonSerializable` compatibility interface was moved to `GeoIp2\Compat`
|
80 |
-
rather than the global namespace to prevent autoloading issues. Reported by
|
81 |
-
Tomas Buteler. GitHub #54.
|
82 |
-
* Missing documentation for the `$postal` property was added to the
|
83 |
-
`GeoIp2\Model\City` class. Fix by Roy Sindre Norangshol. GitHub #51.
|
84 |
-
* In the Phar distribution, source files for this module no longer have their
|
85 |
-
documentation stripped, allowing IDE introspection to work properly.
|
86 |
-
Reported by Dominic Black. GitHub #52.
|
87 |
-
|
88 |
-
2.3.1 (2015-06-30)
|
89 |
-
------------------
|
90 |
-
|
91 |
-
* Updated `maxmind/web-service-common` to version with fixes for PHP 5.3 and
|
92 |
-
5.4.
|
93 |
-
|
94 |
-
2.3.0 (2015-06-29)
|
95 |
-
------------------
|
96 |
-
|
97 |
-
* Support for demographics fields `averageIncome` and `populationDensity` in
|
98 |
-
the `Location` record, returned by the Insights endpoint.
|
99 |
-
* The `isAnonymousProxy` and `isSatelliteProvider` properties on
|
100 |
-
`GeoIP2\Record\Traits` have been deprecated. Please use our [GeoIP2
|
101 |
-
Anonymous IP database](https://www.maxmind.com/en/geoip2-anonymous-ip-database)
|
102 |
-
to determine whether an IP address is used by an anonymizing service.
|
103 |
-
|
104 |
-
2.2.0-beta1 (2015-06-09)
|
105 |
-
------------------------
|
106 |
-
|
107 |
-
* Typo fix in documentation.
|
108 |
-
|
109 |
-
2.2.0-alpha2 (2015-06-01)
|
110 |
-
-------------------------
|
111 |
-
|
112 |
-
* `maxmind-ws/web-service-common` was renamed to `maxmind/web-service-common`.
|
113 |
-
|
114 |
-
2.2.0-alpha1 (2015-05-22)
|
115 |
-
-------------------------
|
116 |
-
|
117 |
-
* The library no longer uses Guzzle and instead uses curl directly.
|
118 |
-
* Support for `timeout` and `connectTimout` were added to the `$options` array
|
119 |
-
passed to the `GeoIp2\WebService\Client` constructor. Pull request by Will
|
120 |
-
Bradley. GitHub #36.
|
121 |
-
|
122 |
-
2.1.1 (2014-12-03)
|
123 |
-
------------------
|
124 |
-
|
125 |
-
* The 2.1.0 Phar builds included a shebang line, causing issues when loading
|
126 |
-
it as a library. This has been corrected. GitHub #33.
|
127 |
-
|
128 |
-
2.1.0 (2014-10-29)
|
129 |
-
------------------
|
130 |
-
|
131 |
-
* Update ApiGen dependency to version that isn't broken on case sensitive
|
132 |
-
file systems.
|
133 |
-
* Added support for the GeoIP2 Anonymous IP database. The
|
134 |
-
`GeoIP2\Database\Reader` class now has an `anonymousIp` method which returns
|
135 |
-
a `GeoIP2\Model\AnonymousIp` object.
|
136 |
-
* Boolean attributes like those in the `GeoIP2\Record\Traits` class now return
|
137 |
-
`false` instead of `null` when they were not true.
|
138 |
-
|
139 |
-
2.0.0 (2014-09-22)
|
140 |
-
------------------
|
141 |
-
|
142 |
-
* First production release.
|
143 |
-
|
144 |
-
0.9.0 (2014-09-15)
|
145 |
-
------------------
|
146 |
-
|
147 |
-
* IMPORTANT: The deprecated `omni()` and `cityIspOrg()` methods have been
|
148 |
-
removed from `GeoIp2\WebService\Client`.
|
149 |
-
|
150 |
-
0.8.1 (2014-09-12)
|
151 |
-
------------------
|
152 |
-
|
153 |
-
* The check added to the `GeoIP2\Database\Reader` lookup methods in 0.8.0 did
|
154 |
-
not work with the GeoIP2 City Database Subset by Continent with World
|
155 |
-
Countries. This has been fixed. Fixes GitHub issue #23.
|
156 |
-
|
157 |
-
0.8.0 (2014-09-10)
|
158 |
-
------------------
|
159 |
-
|
160 |
-
* The `GeoIp2\Database\Reader` lookup methods (e.g., `city()`, `isp()`) now
|
161 |
-
throw a `BadMethodCallException` if they are used with a database that
|
162 |
-
does not match the method. In particular, doing a `city()` lookup on a
|
163 |
-
GeoIP2 Country database will result in an exception, and vice versa.
|
164 |
-
* A `metadata()` method has been added to the `GeoIP2\Database\Reader` class.
|
165 |
-
This returns a `MaxMind\Db\Reader\Metadata` class with information about the
|
166 |
-
database.
|
167 |
-
* The name attribute was missing from the RepresentedCountry class.
|
168 |
-
|
169 |
-
0.7.0 (2014-07-22)
|
170 |
-
------------------
|
171 |
-
|
172 |
-
* The web service client API has been updated for the v2.1 release of the web
|
173 |
-
service. In particular, the `cityIspOrg` and `omni` methods on
|
174 |
-
`GeoIp2\WebService\Client` should be considered deprecated. The `city`
|
175 |
-
method now provides all of the data formerly provided by `cityIspOrg`, and
|
176 |
-
the `omni` method has been replaced by the `insights` method.
|
177 |
-
* Support was added for GeoIP2 Connection Type, Domain and ISP databases.
|
178 |
-
|
179 |
-
|
180 |
-
0.6.3 (2014-05-12)
|
181 |
-
------------------
|
182 |
-
|
183 |
-
* With the previous Phar builds, some users received `phar error: invalid url
|
184 |
-
or non-existent phar` errors. The correct alias is now used for the Phar,
|
185 |
-
and this should no longer be an issue.
|
186 |
-
|
187 |
-
0.6.2 (2014-05-08)
|
188 |
-
------------------
|
189 |
-
|
190 |
-
* The Phar build was broken with Guzzle 3.9.0+. This has been fixed.
|
191 |
-
|
192 |
-
0.6.1 (2014-05-01)
|
193 |
-
------------------
|
194 |
-
|
195 |
-
* This API now officially supports HHVM.
|
196 |
-
* The `maxmind-db/reader` dependency was updated to a version that does not
|
197 |
-
require BC Math.
|
198 |
-
* The Composer compatibility autoload rules are now targeted more narrowly.
|
199 |
-
* A `box.json` file is included to build a Phar package.
|
200 |
-
|
201 |
-
0.6.0 (2014-02-19)
|
202 |
-
------------------
|
203 |
-
|
204 |
-
* This API is now licensed under the Apache License, Version 2.0.
|
205 |
-
* Model and record classes now implement `JsonSerializable`.
|
206 |
-
* `isset` now works with model and record classes.
|
207 |
-
|
208 |
-
0.5.0 (2013-10-21)
|
209 |
-
------------------
|
210 |
-
|
211 |
-
* Renamed $languages constructor parameters to $locales for both the Client
|
212 |
-
and Reader classes.
|
213 |
-
* Documentation and code clean-up (Ben Morel).
|
214 |
-
* Added the interface `GeoIp2\ProviderInterface`, which is implemented by both
|
215 |
-
`\GeoIp2\Database\Reader` and `\GeoIp2\WebService\Client`.
|
216 |
-
|
217 |
-
0.4.0 (2013-07-16)
|
218 |
-
------------------
|
219 |
-
|
220 |
-
* This is the first release with the GeoIP2 database reader. Please see the
|
221 |
-
`README.md` file and the `\GeoIp2\Database\Reader` class.
|
222 |
-
* The general exception classes were replaced with specific exception classes
|
223 |
-
representing particular types of errors, such as an authentication error.
|
224 |
-
|
225 |
-
0.3.0 (2013-07-12)
|
226 |
-
------------------
|
227 |
-
|
228 |
-
* In namespaces and class names, "GeoIP2" was renamed to "GeoIp2" to improve
|
229 |
-
consistency.
|
230 |
-
|
231 |
-
0.2.1 (2013-06-10)
|
232 |
-
------------------
|
233 |
-
|
234 |
-
* First official beta release.
|
235 |
-
* Documentation updates and corrections.
|
236 |
-
|
237 |
-
0.2.0 (2013-05-29)
|
238 |
-
------------------
|
239 |
-
|
240 |
-
* `GenericException` was renamed to `GeoIP2Exception`.
|
241 |
-
* We now support more languages. The new languages are de, es, fr, and pt-BR.
|
242 |
-
* The REST API now returns a record with data about your account. There is
|
243 |
-
a new `GeoIP\Records\MaxMind` class for this data.
|
244 |
-
* The `continentCode` attribute on `Continent` was renamed to `code`.
|
245 |
-
* Documentation updates.
|
246 |
-
|
247 |
-
0.1.1 (2013-05-14)
|
248 |
-
------------------
|
249 |
-
|
250 |
-
* Updated Guzzle version requirement.
|
251 |
-
* Fixed Composer example in README.md.
|
252 |
-
|
253 |
-
|
254 |
-
0.1.0 (2013-05-13)
|
255 |
-
------------------
|
256 |
-
|
257 |
-
* Initial release.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/geoip2/geoip2/README.md
DELETED
@@ -1,401 +0,0 @@
|
|
1 |
-
# GeoIP2 PHP API #
|
2 |
-
|
3 |
-
## Description ##
|
4 |
-
|
5 |
-
This package provides an API for the GeoIP2
|
6 |
-
[web services](http://dev.maxmind.com/geoip/geoip2/web-services) and
|
7 |
-
[databases](http://dev.maxmind.com/geoip/geoip2/downloadable). The API also
|
8 |
-
works with the free
|
9 |
-
[GeoLite2 databases](http://dev.maxmind.com/geoip/geoip2/geolite2/).
|
10 |
-
|
11 |
-
## Install via Composer ##
|
12 |
-
|
13 |
-
We recommend installing this package with [Composer](http://getcomposer.org/).
|
14 |
-
|
15 |
-
### Download Composer ###
|
16 |
-
|
17 |
-
To download Composer, run in the root directory of your project:
|
18 |
-
|
19 |
-
```bash
|
20 |
-
curl -sS https://getcomposer.org/installer | php
|
21 |
-
```
|
22 |
-
|
23 |
-
You should now have the file `composer.phar` in your project directory.
|
24 |
-
|
25 |
-
### Install Dependencies ###
|
26 |
-
|
27 |
-
Run in your project root:
|
28 |
-
|
29 |
-
```
|
30 |
-
php composer.phar require geoip2/geoip2:~2.0
|
31 |
-
```
|
32 |
-
|
33 |
-
You should now have the files `composer.json` and `composer.lock` as well as
|
34 |
-
the directory `vendor` in your project directory. If you use a version control
|
35 |
-
system, `composer.json` should be added to it.
|
36 |
-
|
37 |
-
### Require Autoloader ###
|
38 |
-
|
39 |
-
After installing the dependencies, you need to require the Composer autoloader
|
40 |
-
from your code:
|
41 |
-
|
42 |
-
```php
|
43 |
-
require 'vendor/autoload.php';
|
44 |
-
```
|
45 |
-
|
46 |
-
## Install via Phar ##
|
47 |
-
|
48 |
-
Although we strongly recommend using Composer, we also provide a
|
49 |
-
[phar archive](http://php.net/manual/en/book.phar.php) containing most of the
|
50 |
-
dependencies for GeoIP2. Our latest phar archive is available on
|
51 |
-
[our releases page](https://github.com/maxmind/GeoIP2-php/releases).
|
52 |
-
|
53 |
-
### Install Dependencies ###
|
54 |
-
|
55 |
-
In order to use the phar archive, you must have the PHP
|
56 |
-
[Phar extension](http://php.net/manual/en/book.phar.php) installed and
|
57 |
-
enabled.
|
58 |
-
|
59 |
-
If you will be making web service requests, you must have the PHP
|
60 |
-
[cURL extension](http://php.net/manual/en/book.curl.php)
|
61 |
-
installed to use this archive. For Debian based distributions, this can
|
62 |
-
typically be found in the the `php-curl` package. For other operating
|
63 |
-
systems, please consult the relevant documentation. After installing the
|
64 |
-
extension you may need to restart your web server.
|
65 |
-
|
66 |
-
If you are missing this extension, you will see errors like the following:
|
67 |
-
|
68 |
-
```
|
69 |
-
PHP Fatal error: Uncaught Error: Call to undefined function MaxMind\WebService\curl_version()
|
70 |
-
```
|
71 |
-
|
72 |
-
### Require Package ###
|
73 |
-
|
74 |
-
To use the archive, just require it from your script:
|
75 |
-
|
76 |
-
```php
|
77 |
-
require 'geoip2.phar';
|
78 |
-
```
|
79 |
-
|
80 |
-
## Optional C Extension ##
|
81 |
-
|
82 |
-
The [MaxMind DB API](https://github.com/maxmind/MaxMind-DB-Reader-php)
|
83 |
-
includes an optional C extension that you may install to dramatically increase
|
84 |
-
the performance of lookups in GeoIP2 or GeoLite2 databases. To install, please
|
85 |
-
follow the instructions included with that API.
|
86 |
-
|
87 |
-
The extension has no effect on web-service lookups.
|
88 |
-
|
89 |
-
## IP Geolocation Usage ##
|
90 |
-
|
91 |
-
IP geolocation is inherently imprecise. Locations are often near the center of
|
92 |
-
the population. Any location provided by a GeoIP2 database or web service
|
93 |
-
should not be used to identify a particular address or household.
|
94 |
-
|
95 |
-
## Database Reader ##
|
96 |
-
|
97 |
-
### Usage ###
|
98 |
-
|
99 |
-
To use this API, you must create a new `\GeoIp2\Database\Reader` object with
|
100 |
-
the path to the database file as the first argument to the constructor. You
|
101 |
-
may then call the method corresponding to the database you are using.
|
102 |
-
|
103 |
-
If the lookup succeeds, the method call will return a model class for the
|
104 |
-
record in the database. This model in turn contains multiple container
|
105 |
-
classes for the different parts of the data such as the city in which the
|
106 |
-
IP address is located.
|
107 |
-
|
108 |
-
If the record is not found, a `\GeoIp2\Exception\AddressNotFoundException`
|
109 |
-
is thrown. If the database is invalid or corrupt, a
|
110 |
-
`\MaxMind\Db\InvalidDatabaseException` will be thrown.
|
111 |
-
|
112 |
-
See the API documentation for more details.
|
113 |
-
|
114 |
-
### City Example ###
|
115 |
-
|
116 |
-
```php
|
117 |
-
<?php
|
118 |
-
require_once 'vendor/autoload.php';
|
119 |
-
use GeoIp2\Database\Reader;
|
120 |
-
|
121 |
-
// This creates the Reader object, which should be reused across
|
122 |
-
// lookups.
|
123 |
-
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');
|
124 |
-
|
125 |
-
// Replace "city" with the appropriate method for your database, e.g.,
|
126 |
-
// "country".
|
127 |
-
$record = $reader->city('128.101.101.101');
|
128 |
-
|
129 |
-
print($record->country->isoCode . "\n"); // 'US'
|
130 |
-
print($record->country->name . "\n"); // 'United States'
|
131 |
-
print($record->country->names['zh-CN'] . "\n"); // '美国'
|
132 |
-
|
133 |
-
print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
|
134 |
-
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
|
135 |
-
|
136 |
-
print($record->city->name . "\n"); // 'Minneapolis'
|
137 |
-
|
138 |
-
print($record->postal->code . "\n"); // '55455'
|
139 |
-
|
140 |
-
print($record->location->latitude . "\n"); // 44.9733
|
141 |
-
print($record->location->longitude . "\n"); // -93.2323
|
142 |
-
|
143 |
-
```
|
144 |
-
|
145 |
-
### Anonymous IP Example ###
|
146 |
-
|
147 |
-
```php
|
148 |
-
<?php
|
149 |
-
require_once 'vendor/autoload.php';
|
150 |
-
use GeoIp2\Database\Reader;
|
151 |
-
|
152 |
-
// This creates the Reader object, which should be reused across
|
153 |
-
// lookups.
|
154 |
-
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Anonymous-IP.mmdb');
|
155 |
-
|
156 |
-
$record = $reader->anonymousIp('128.101.101.101');
|
157 |
-
|
158 |
-
if ($record->isAnonymous) { print "anon\n"; }
|
159 |
-
print($record->ipAddress . "\n"); // '128.101.101.101'
|
160 |
-
|
161 |
-
```
|
162 |
-
|
163 |
-
### Connection-Type Example ###
|
164 |
-
|
165 |
-
```php
|
166 |
-
<?php
|
167 |
-
require_once 'vendor/autoload.php';
|
168 |
-
use GeoIp2\Database\Reader;
|
169 |
-
|
170 |
-
// This creates the Reader object, which should be reused across
|
171 |
-
// lookups.
|
172 |
-
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Connection-Type.mmdb');
|
173 |
-
|
174 |
-
$record = $reader->connectionType('128.101.101.101');
|
175 |
-
|
176 |
-
print($record->connectionType . "\n"); // 'Corporate'
|
177 |
-
print($record->ipAddress . "\n"); // '128.101.101.101'
|
178 |
-
|
179 |
-
```
|
180 |
-
|
181 |
-
### Domain Example ###
|
182 |
-
|
183 |
-
```php
|
184 |
-
<?php
|
185 |
-
require_once 'vendor/autoload.php';
|
186 |
-
use GeoIp2\Database\Reader;
|
187 |
-
|
188 |
-
// This creates the Reader object, which should be reused across
|
189 |
-
// lookups.
|
190 |
-
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Domain.mmdb');
|
191 |
-
|
192 |
-
$record = $reader->domain('128.101.101.101');
|
193 |
-
|
194 |
-
print($record->domain . "\n"); // 'umn.edu'
|
195 |
-
print($record->ipAddress . "\n"); // '128.101.101.101'
|
196 |
-
|
197 |
-
```
|
198 |
-
|
199 |
-
### Enterprise Example ###
|
200 |
-
|
201 |
-
```php
|
202 |
-
<?php
|
203 |
-
require_once 'vendor/autoload.php';
|
204 |
-
use GeoIp2\Database\Reader;
|
205 |
-
|
206 |
-
// This creates the Reader object, which should be reused across
|
207 |
-
// lookups.
|
208 |
-
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Enterprise.mmdb');
|
209 |
-
|
210 |
-
// Use the ->enterprise method to do a lookup in the Enterprise database
|
211 |
-
$record = $reader->enterprise('128.101.101.101');
|
212 |
-
|
213 |
-
print($record->country->confidence . "\n"); // 99
|
214 |
-
print($record->country->isoCode . "\n"); // 'US'
|
215 |
-
print($record->country->name . "\n"); // 'United States'
|
216 |
-
print($record->country->names['zh-CN'] . "\n"); // '美国'
|
217 |
-
|
218 |
-
print($record->mostSpecificSubdivision->confidence . "\n"); // 77
|
219 |
-
print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
|
220 |
-
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
|
221 |
-
|
222 |
-
print($record->city->confidence . "\n"); // 60
|
223 |
-
print($record->city->name . "\n"); // 'Minneapolis'
|
224 |
-
|
225 |
-
print($record->postal->code . "\n"); // '55455'
|
226 |
-
|
227 |
-
print($record->location->accuracyRadius . "\n"); // 50
|
228 |
-
print($record->location->latitude . "\n"); // 44.9733
|
229 |
-
print($record->location->longitude . "\n"); // -93.2323
|
230 |
-
|
231 |
-
```
|
232 |
-
|
233 |
-
### ISP Example ###
|
234 |
-
|
235 |
-
```php
|
236 |
-
<?php
|
237 |
-
require_once 'vendor/autoload.php';
|
238 |
-
use GeoIp2\Database\Reader;
|
239 |
-
|
240 |
-
// This creates the Reader object, which should be reused across
|
241 |
-
// lookups.
|
242 |
-
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-ISP.mmdb');
|
243 |
-
|
244 |
-
$record = $reader->isp('128.101.101.101');
|
245 |
-
|
246 |
-
print($record->autonomousSystemNumber . "\n"); // 217
|
247 |
-
print($record->autonomousSystemOrganization . "\n"); // 'University of Minnesota'
|
248 |
-
print($record->isp . "\n"); // 'University of Minnesota'
|
249 |
-
print($record->organization . "\n"); // 'University of Minnesota'
|
250 |
-
|
251 |
-
print($record->ipAddress . "\n"); // '128.101.101.101'
|
252 |
-
|
253 |
-
```
|
254 |
-
|
255 |
-
## Web Service Client ##
|
256 |
-
|
257 |
-
### Usage ###
|
258 |
-
|
259 |
-
To use this API, you must create a new `\GeoIp2\WebService\Client`
|
260 |
-
object with your `$userId` and `$licenseKey`, then you call the method
|
261 |
-
corresponding to a specific end point, passing it the IP address you want to
|
262 |
-
look up.
|
263 |
-
|
264 |
-
If the request succeeds, the method call will return a model class for the end
|
265 |
-
point you called. This model in turn contains multiple record classes, each of
|
266 |
-
which represents part of the data returned by the web service.
|
267 |
-
|
268 |
-
If there is an error, a structured exception is thrown.
|
269 |
-
|
270 |
-
See the API documentation for more details.
|
271 |
-
|
272 |
-
### Example ###
|
273 |
-
|
274 |
-
```php
|
275 |
-
<?php
|
276 |
-
require_once 'vendor/autoload.php';
|
277 |
-
use GeoIp2\WebService\Client;
|
278 |
-
|
279 |
-
// This creates a Client object that can be reused across requests.
|
280 |
-
// Replace "42" with your user ID and "license_key" with your license
|
281 |
-
// key.
|
282 |
-
$client = new Client(42, 'abcdef123456');
|
283 |
-
|
284 |
-
// Replace "city" with the method corresponding to the web service that
|
285 |
-
// you are using, e.g., "country", "insights".
|
286 |
-
$record = $client->city('128.101.101.101');
|
287 |
-
|
288 |
-
print($record->country->isoCode . "\n"); // 'US'
|
289 |
-
print($record->country->name . "\n"); // 'United States'
|
290 |
-
print($record->country->names['zh-CN'] . "\n"); // '美国'
|
291 |
-
|
292 |
-
print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
|
293 |
-
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
|
294 |
-
|
295 |
-
print($record->city->name . "\n"); // 'Minneapolis'
|
296 |
-
|
297 |
-
print($record->postal->code . "\n"); // '55455'
|
298 |
-
|
299 |
-
print($record->location->latitude . "\n"); // 44.9733
|
300 |
-
print($record->location->longitude . "\n"); // -93.2323
|
301 |
-
|
302 |
-
```
|
303 |
-
|
304 |
-
## Values to use for Database or Array Keys ##
|
305 |
-
|
306 |
-
**We strongly discourage you from using a value from any `names` property as
|
307 |
-
a key in a database or array.**
|
308 |
-
|
309 |
-
These names may change between releases. Instead we recommend using one of the
|
310 |
-
following:
|
311 |
-
|
312 |
-
* `GeoIp2\Record\City` - `$city->geonameId`
|
313 |
-
* `GeoIp2\Record\Continent` - `$continent->code` or `$continent->geonameId`
|
314 |
-
* `GeoIp2\Record\Country` and `GeoIp2\Record\RepresentedCountry` -
|
315 |
-
`$country->isoCode` or `$country->geonameId`
|
316 |
-
* `GeoIp2\Record\Subdivision` - `$subdivision->isoCode` or `$subdivision->geonameId`
|
317 |
-
|
318 |
-
### What data is returned? ###
|
319 |
-
|
320 |
-
While many of the end points return the same basic records, the attributes
|
321 |
-
which can be populated vary between end points. In addition, while an end
|
322 |
-
point may offer a particular piece of data, MaxMind does not always have every
|
323 |
-
piece of data for any given IP address.
|
324 |
-
|
325 |
-
Because of these factors, it is possible for any end point to return a record
|
326 |
-
where some or all of the attributes are unpopulated.
|
327 |
-
|
328 |
-
See the
|
329 |
-
[GeoIP2 Precision web service docs](http://dev.maxmind.com/geoip/geoip2/web-services)
|
330 |
-
for details on what data each end point may return.
|
331 |
-
|
332 |
-
The only piece of data which is always returned is the `ipAddress`
|
333 |
-
attribute in the `GeoIp2\Record\Traits` record.
|
334 |
-
|
335 |
-
## Integration with GeoNames ##
|
336 |
-
|
337 |
-
[GeoNames](http://www.geonames.org/) offers web services and downloadable
|
338 |
-
databases with data on geographical features around the world, including
|
339 |
-
populated places. They offer both free and paid premium data. Each
|
340 |
-
feature is unique identified by a `geonameId`, which is an integer.
|
341 |
-
|
342 |
-
Many of the records returned by the GeoIP2 web services and databases
|
343 |
-
include a `geonameId` property. This is the ID of a geographical feature
|
344 |
-
(city, region, country, etc.) in the GeoNames database.
|
345 |
-
|
346 |
-
Some of the data that MaxMind provides is also sourced from GeoNames. We
|
347 |
-
source things like place names, ISO codes, and other similar data from
|
348 |
-
the GeoNames premium data set.
|
349 |
-
|
350 |
-
## Reporting data problems ##
|
351 |
-
|
352 |
-
If the problem you find is that an IP address is incorrectly mapped,
|
353 |
-
please
|
354 |
-
[submit your correction to MaxMind](http://www.maxmind.com/en/correction).
|
355 |
-
|
356 |
-
If you find some other sort of mistake, like an incorrect spelling,
|
357 |
-
please check the [GeoNames site](http://www.geonames.org/) first. Once
|
358 |
-
you've searched for a place and found it on the GeoNames map view, there
|
359 |
-
are a number of links you can use to correct data ("move", "edit",
|
360 |
-
"alternate names", etc.). Once the correction is part of the GeoNames
|
361 |
-
data set, it will be automatically incorporated into future MaxMind
|
362 |
-
releases.
|
363 |
-
|
364 |
-
If you are a paying MaxMind customer and you're not sure where to submit
|
365 |
-
a correction, please
|
366 |
-
[contact MaxMind support](http://www.maxmind.com/en/support) for help.
|
367 |
-
|
368 |
-
## Other Support ##
|
369 |
-
|
370 |
-
Please report all issues with this code using the
|
371 |
-
[GitHub issue tracker](https://github.com/maxmind/GeoIP2-php/issues).
|
372 |
-
|
373 |
-
If you are having an issue with a MaxMind service that is not specific
|
374 |
-
to the client API, please see
|
375 |
-
[our support page](http://www.maxmind.com/en/support).
|
376 |
-
|
377 |
-
## Requirements ##
|
378 |
-
|
379 |
-
This library requires PHP 5.4 or greater. This library works and is tested
|
380 |
-
with HHVM.
|
381 |
-
|
382 |
-
This library also relies on the [MaxMind DB Reader](https://github.com/maxmind/MaxMind-DB-Reader-php).
|
383 |
-
|
384 |
-
## Contributing ##
|
385 |
-
|
386 |
-
Patches and pull requests are encouraged. All code should follow the PSR-2
|
387 |
-
style guidelines. Please include unit tests whenever possible. You may obtain
|
388 |
-
the test data for the maxmind-db folder by running `git submodule update
|
389 |
-
--init --recursive` or adding `--recursive` to your initial clone, or from
|
390 |
-
https://github.com/maxmind/MaxMind-DB
|
391 |
-
|
392 |
-
## Versioning ##
|
393 |
-
|
394 |
-
The GeoIP2 PHP API uses [Semantic Versioning](http://semver.org/).
|
395 |
-
|
396 |
-
## Copyright and License ##
|
397 |
-
|
398 |
-
This software is Copyright (c) 2013-2018 by MaxMind, Inc.
|
399 |
-
|
400 |
-
This is free software, licensed under the Apache License, Version 2.0.
|
401 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/maxmind-db/reader/CHANGELOG.md
DELETED
@@ -1,108 +0,0 @@
|
|
1 |
-
CHANGELOG
|
2 |
-
=========
|
3 |
-
|
4 |
-
1.2.0 (2017-10-27)
|
5 |
-
------------------
|
6 |
-
|
7 |
-
* PHP 5.4 is now required.
|
8 |
-
* The `Reader` class for the `maxminddb` extension is no longer final.
|
9 |
-
This was change to match the behavior of the pure PHP class.
|
10 |
-
Reported and fixed by venyii. GitHub #52 & #54.
|