diff --git a/composer.json b/composer.json index fa416db2..d52209f9 100755 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ "ext-posix": "*", "beberlei/doctrineextensions": "^1.2.0", "doctrine/doctrine-bundle": "^1.9", - "gpslab/geoip2": "^1.1.6", + "gpslab/geoip2": "^2.0", "sensio/framework-extra-bundle": "^5.2.4", "symfony/apache-pack": "^1.0", "symfony/asset": "^4.1", diff --git a/composer.lock b/composer.lock index 4b0de2dd..a48d4b65 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d678e0f221b02af42e6c92954e8a86e8", + "content-hash": "db97b791f211fa467a6a76eab27c589a", "packages": [ { "name": "beberlei/doctrineextensions", @@ -1923,78 +1923,39 @@ }, "time": "2020-10-01T18:48:34+00:00" }, - { - "name": "gpslab/compressor", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/gpslab/compressor.git", - "reference": "a3559654d0233fff82d6677194ed4f024ac12016" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/gpslab/compressor/zipball/a3559654d0233fff82d6677194ed4f024ac12016", - "reference": "a3559654d0233fff82d6677194ed4f024ac12016", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8", - "satooshi/php-coveralls": "^1.0", - "scrutinizer/ocular": "~1.3", - "symfony/filesystem": "^2.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "GpsLab\\Component\\Compressor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "File compressor", - "homepage": "https://github.com/gpslab/compressor", - "support": { - "issues": "https://github.com/gpslab/compressor/issues", - "source": "https://github.com/gpslab/compressor/tree/master" - }, - "time": "2017-01-24T09:48:40+00:00" - }, { "name": "gpslab/geoip2", - "version": "v1.2.0", + "version": "v2.0.9", "source": { "type": "git", "url": "https://github.com/gpslab/geoip2.git", - "reference": "fdba2f23881d3abcbede9327ebf783b9a5ffabd5" + "reference": "767829c3084fa4c528203b8c4546587bc95cb213" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gpslab/geoip2/zipball/fdba2f23881d3abcbede9327ebf783b9a5ffabd5", - "reference": "fdba2f23881d3abcbede9327ebf783b9a5ffabd5", + "url": "https://api.github.com/repos/gpslab/geoip2/zipball/767829c3084fa4c528203b8c4546587bc95cb213", + "reference": "767829c3084fa4c528203b8c4546587bc95cb213", "shasum": "" }, "require": { "ext-phar": "*", + "ext-zlib": "*", "geoip2/geoip2": "~2.0", - "gpslab/compressor": "~1.0", - "php": ">=5.4.0", - "symfony/stopwatch": "~2.3|~3.0|~4.0" + "php": ">=7.1.0", + "symfony/config": "~2.8|~3.0|~4.0|~5.0|~6.0", + "symfony/console": "~2.8|~3.0|~4.0|~5.0|~6.0", + "symfony/dependency-injection": "~2.8|~3.0|~4.0|~5.0|~6.0", + "symfony/expression-language": "~2.8|~3.0|~4.0|~5.0|~6.0", + "symfony/filesystem": "~2.8|~3.0|~4.0|~5.0|~6.0", + "symfony/http-kernel": "~2.8|~3.0|~4.0|~5.0|~6.0" }, "require-dev": { - "composer/composer": "~1.3", - "phpunit/phpunit": "~4.8", - "roave/security-advisories": "dev-master", - "satooshi/php-coveralls": "^1.0", - "scrutinizer/ocular": "~1.3", - "symfony/console": "~2.3|~3.0|~4.0", - "symfony/dependency-injection": "~2.3|~3.0|~4.0", - "symfony/expression-language": "~2.3|~3.0|~4.0", - "symfony/http-kernel": "~2.3|~3.0|~4.0" + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "~7.0|~8.0|~9.0" + }, + "suggest": { + "splitbrain/php-archive": "Greatly reduces memory usage for the geoip2:update command" }, "type": "symfony-bundle", "autoload": { @@ -2010,9 +1971,9 @@ "homepage": "https://github.com/gpslab/geoip2", "support": { "issues": "https://github.com/gpslab/geoip2/issues", - "source": "https://github.com/gpslab/geoip2/tree/v1.2.0" + "source": "https://github.com/gpslab/geoip2/tree/v2.0.9" }, - "time": "2020-01-21T12:51:27+00:00" + "time": "2021-12-27T14:43:10+00:00" }, { "name": "jdorn/sql-formatter", @@ -8735,5 +8696,5 @@ "ext-posix": "*" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/config/services.yaml b/config/services.yaml index 278e134d..362d4610 100755 --- a/config/services.yaml +++ b/config/services.yaml @@ -28,15 +28,5 @@ services: # please note that last definitions always *replace* previous ones gpslab_geoip: - # Path to download GeoIP database. - # It's a default value. You can change it. - # cache: '%kernel.cache_dir%/GeoLite2-City.mmdb' - cache: '/usr/share/GeoIP/GeoLite2-City.mmdb' - - # URL for download new GeoIP database. - # It's a default value. You can change it. - url: 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz' - - # Get model data in this locale - # It's a default value. You can change it. - locales: [ '%locale%' ] + license: 'UFzmNoddqV9v4upp' + edition: 'GeoLite2-City' diff --git a/public/css/style.css b/public/css/style.css index 0e2350cb..bd09f93e 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1,8 +1,8 @@ /* * Project: RXX - NDB Logging Database * Homepage: https://rxx.classaxe.com - * Version: 2.31.2 - * Date: 2022-01-05 + * Version: 2.33.0 + * Date: 2022-02-07 * Licence: LGPL * Copyright: 2022 Martin Francis */ @@ -198,7 +198,7 @@ body.rww .button.is-inactive { } .inactive, tr.inactive td { - color: #a0a0a0; + color: #808080; font-style: italic; } .inactive a, @@ -827,6 +827,17 @@ table.responsive tbody tr td b { padding: 0.125em 0.25em; margin: 0 0 0 0.5em; } +.admin_tools .ip-examples { + font-size: 80%; + margin: 0 0 0 3em; +} +.admin_tools .ip-examples span { + color: #0000ff; +} +.admin_tools .ip-examples span:hover { + text-decoration: underline; + cursor: pointer; +} .changelog { margin: 0 0 0.5em 5em; } diff --git a/public/css/style.min.css b/public/css/style.min.css index d8b06028..059293ec 100644 --- a/public/css/style.min.css +++ b/public/css/style.min.css @@ -1 +1 @@ -body.reu{background:snow}body.reu .menu-centered .header{background:#fff0f0;border-color:#d03333}body.reu .menu-centered .header h2{color:#d03333}body.reu .menu-centered .language,body.reu .menu-centered .mode,body.reu .menu-centered .system{border-color:#d03333}body.reu .menu-centered .language li a,body.reu .menu-centered .mode li a,body.reu .menu-centered .system li a{border-color:#d03333}body.reu .menu a{color:#d03333}body.reu .menu .is-active>a{background:#d03333;color:#fff}body.reu h1,body.reu h2{color:#d03333}body.reu fieldset legend{color:#d03333}body.reu .controlPanel .content{background:#fff0f0}body.reu .footer{border-color:#d03333}body.reu .footer a{color:#00f}body.reu .button{border-color:maroon;background:#b35959;color:#fff}body.reu .button:hover{background:#cc2929;color:#ffff40}body.reu .button.is-active{background:#e63030;color:#ffff40}body.reu .button.is-inactive{background:#cc7a7a}body.rna{background:#f8f8ff}body.rna .menu-centered .header{background:#e0e0ff;border-color:#33f}body.rna .menu-centered .header h2{color:#33f}body.rna .menu-centered .language,body.rna .menu-centered .mode,body.rna .menu-centered .system{border-color:#33f}body.rna .menu-centered .language li a,body.rna .menu-centered .mode li a,body.rna .menu-centered .system li a{border-color:#33f}body.rna .menu a{color:#33f}body.rna .menu .is-active>a{background:#33f;color:#fff}body.rna h1,body.rna h2{color:#33f}body.rna fieldset legend{color:#33f}body.rna .controlPanel .content{background:#e0e0ff}body.rna .footer{border-color:#33f}body.rna .footer a{color:#00f}body.rna .button{border-color:#33f;background:#66c;color:#fff}body.rna .button:hover{background:#5252cc;color:#ffff40}body.rna .button.is-active{background:#4545e6;color:#ffff40}body.rna .button.is-inactive{background:#7d7db3}body.rww{background:#fafffa}body.rww .menu-centered .header{background:#f2fff2;border-color:#198019}body.rww .menu-centered .header h2{color:#198019}body.rww .menu-centered .language,body.rww .menu-centered .mode,body.rww .menu-centered .system{border-color:#198019}body.rww .menu-centered .language li a,body.rww .menu-centered .mode li a,body.rww .menu-centered .system li a{border-color:#198019}body.rww .menu a{color:#198019}body.rww .menu .is-active>a{background:#198019;color:#fff}body.rww h1,body.rww h2{color:#198019}body.rww fieldset legend{color:#198019}body.rww .controlPanel .content{background:#f2fff2}body.rww .footer{border-color:#198019}body.rww .footer a{color:#00f}body.rww .button{border-color:#4d804d;background:#2d802d;color:#fff}body.rww .button:hover{background:#40a040;color:#ffff40}body.rww .button.is-active{background:#208020;color:#ffff40}body.rww .button.is-inactive{background:#7db37d}.rna-system{background:#e0e0ff;color:#33f}.reu-system{background:#fff0f0;color:#d03333}.rww-system{background:#f2fff2;color:#198019}.inactive,tr.inactive td{color:#a0a0a0;font-style:italic}.inactive a,tr.inactive td a{color:#6080b0}.type_0,.type_ndb,tr.ndb td{background-color:#fff!important}.type_1,.type_dgps,tr.dgps td{background-color:#00d8ff!important}.type_2,.type_dsc,tr.dsc td{background-color:#ffb000!important}.type_3,.type_time,tr.time td{background-color:#ffe0b0!important}.type_4,.type_navtex,tr.navtex td{background-color:#ffb8d8!important}.type_5,.type_hambcn,tr.hambcn td{background-color:#b8ffc0!important}.type_6,.type_other,tr.other td{background-color:#b8f8ff!important}.type_all{background-color:#d03333;color:#fff}.type_all label{color:#fff;font-style:italic;font-weight:700!important}@media (max-width:60.9375em){.topbar{text-align:center;padding:0 .5em;background-color:#eee;border:1px solid #ccc}.topbar div.toolbar{display:inline;padding:0 1em;white-space:nowrap}}@media (min-width:61em){.topbar{margin:0 .5em}.topbar div.toolbar{padding:0 .5em;background-color:#eee;border:1px solid #ccc}.topbar div.toolbar ul ul{left:.5em}.topbar .version-switcher{float:right}.topbar .userStatus{float:left}}.topbar .userStatus{width:12em}.topbar .userStatus ul{width:12em;margin:0}.topbar .userStatus ul li{list-style:none;margin:0;display:inline-block}.topbar .userStatus ul li a.dropdown-toggle,.topbar .userStatus ul li a.dropdown-toggle:active{display:block;text-align:right;color:#000;font-weight:400;text-decoration:none}.topbar .userStatus ul li div.close,.topbar .userStatus ul li div.open{padding:0;width:auto;border:none}.topbar .userStatus ul li div.open{display:inline-block}.topbar .userStatus ul li div.close{-moz-transform:scale(1,-1);-webkit-transform:scale(1,-1);-o-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1);display:none}.topbar .userStatus ul li img{padding:0 .25em}.topbar .userStatus ul li ul{display:none;position:relative}.topbar .userStatus ul li.open div.open{display:none}.topbar .userStatus ul li.open div.close{display:inline-block}.topbar .userStatus ul li.open ul{width:12em;background-color:#fff;border:1px solid #ccc;z-index:100;padding:.25em .5em;position:absolute;display:block;border-top:1px solid #ccc;border-radius:0 0 5px 5px}.topbar .userStatus ul li.open ul li{display:block}.topbar .userStatus ul li.open ul li.rule{border-top:1px solid #ccc;padding:.25em 0 0 0}.topbar .userStatus ul li.open ul li ul{width:auto;padding:0 0 .5em 1em;border:none;display:inline-block;position:relative}.topbar a{color:#00f}.topbar a.active,.topbar a:active{font-weight:700;text-decoration:underline}.menu-centered{margin:auto}@media (max-width:39.9375em){.menu-centered{width:190px}.menu-centered h2{font-size:100%}.menu-centered .language,.menu-centered .mode,.menu-centered .system{border-style:solid;border-width:1px;margin-bottom:.375em}.menu-centered .language li:not(:last-child) a,.menu-centered .mode li:not(:last-child) a,.menu-centered .system li:not(:last-child) a{border-style:solid;border-width:0 0 1px 0}.menu-centered .system a{width:63.33333333px}.menu-centered .language a,.menu-centered .mode a{width:190px}}@media (min-width:40em){.menu-centered{width:573px}.menu-centered h2{font-size:130%}.menu-centered a{font-size:80%}.menu-centered .mode,.menu-centered .system{border-width:0 1px 1px 1px}.menu-centered .language{border-width:1px 1px 1px 1px}.menu-centered .language,.menu-centered .mode,.menu-centered .system{border-style:solid}.menu-centered .language li:not(:last-child) a,.menu-centered .mode li:not(:last-child) a,.menu-centered .system li:not(:last-child) a{border-style:solid;border-width:0 1px 0 0}.menu-centered .language{margin:.375em 0 0 125px;width:322px}.menu-centered .language a{width:80px}}.menu-centered .header{border-width:3px;border-style:solid}.menu-centered .header h2{text-align:center;margin:.25em 0}.menu-centered .system a{width:190px}.menu-centered .language,.menu-centered .mode,.menu-centered .system{background:#fff}.menu-centered .language a,.menu-centered .mode a,.menu-centered .system a{padding:.25em .75em;text-align:center}.menu-centered .language a:hover span,.menu-centered .mode a:hover span,.menu-centered .system a:hover span{text-decoration:underline}@media print{.menu-centered .language a,.menu-centered .mode a,.menu-centered .system a{color:#a0a0a0}}.menu-centered .language a span.new,.menu-centered .mode a span.new,.menu-centered .system a span.new{text-decoration:none;color:#408040;position:relative;top:-.5em;font-size:60%}.menu-centered .language .is-active>a span,.menu-centered .mode .is-active>a span,.menu-centered .system .is-active>a span{font-weight:900;color:#ff0;text-decoration:underline}@media print{.menu-centered .language .is-active>a span,.menu-centered .mode .is-active>a span,.menu-centered .system .is-active>a span{border-width:2px 1px}}.menu-centered .language .is-active>a span.new,.menu-centered .mode .is-active>a span.new,.menu-centered .system .is-active>a span.new{text-decoration:none;color:#80ff80}.cle_links{margin:0}.cle_links div{padding:0}.cle_links div div{border:1px solid #444;border-radius:5px;margin:2px;padding:5px}.cle_links div div a{white-space:nowrap;color:inherit;font-weight:400}.cle_links div div a:hover{font-weight:700}.cle_links div div.rna{background:#e0e0ff;color:#33f}.cle_links div div.reu{background:#fff0f0;color:#d03333}.cle_links div div.rww{background:#f2fff2;color:#198019}.cle_links div div h3{display:block;width:100%;white-space:nowrap;margin:2px auto;font-weight:700;text-align:center!important}.cle_links div div ul{margin-bottom:.25em}.footer{text-align:center;margin:.5em;padding:0;border-style:solid;border-width:2px 0 0 0}.footer p{margin:0 0 1em 0;line-height:1.25em;font-size:70%}.footer p.preamble{margin:1em 0 0 0}.footer .credits{display:inline-block;width:auto;margin:.25em auto;border-radius:2px!important;border-collapse:collapse}.footer .credits th{text-align:center}.footer .credits td,.footer .credits th{font-size:80%;min-width:5em;white-space:nowrap;border:1px solid #000;line-height:1.2em;padding:0 .25em;margin:0}.footer .credits thead{text-align:center}.footer .credits thead th{background-color:silver;border-bottom-width:2px}.footer .credits tbody th{background-color:#d0d0d0;font-weight:400;width:8em}.footer .credits tbody td{background-color:#e8e8e8}label[for=seeklist_paper]{font-weight:700;display:inline-block;margin-right:1em}select#seeklist_paper{width:300px}table.seeklist{page-break-inside:avoid;page-break-before:auto;border-collapse:collapse;border:1px solid #000}table.seeklist thead tr.sl_1 td{background-color:#777!important}table.seeklist thead tr.sl_1 td div{color:#fff!important}table.seeklist thead tr.sl_1 td h2,table.seeklist thead tr.sl_1 td h3,table.seeklist thead tr.sl_1 td h4{color:#fff!important;font-weight:700;margin:0;font-size:100%}table.seeklist thead tr.sl_1 td h2 a,table.seeklist thead tr.sl_1 td h3 a,table.seeklist thead tr.sl_1 td h4 a{color:#fff}table.seeklist thead tr.sl_1 td h2 a:hover,table.seeklist thead tr.sl_1 td h3 a:hover,table.seeklist thead tr.sl_1 td h4 a:hover{background:#fff;color:#00f}table.seeklist thead tr.sl_2 td i{background-color:#e0e0e0!important;padding:0 .125em}table.seeklist thead td{border:1px solid #000;margin:0;padding:0 .25em}table.seeklist tbody td{border:1px solid #000}table.seeklist tbody td .head{padding:0 .25em!important}table.seeklist tbody td div.sl_d,table.seeklist tbody td div.sl_h{white-space:nowrap}table.seeklist tbody td div.sl_d span,table.seeklist tbody td div.sl_h span{font-family:"Courier New bold",Courier,monospace;white-space:nowrap;display:inline-block;width:5em;float:left}table.seeklist tbody td div.sl_d em,table.seeklist tbody td div.sl_h em{display:inline-block;float:right}table.seeklist tbody td div.sl_d+div.sl_h{margin-top:1.15em}table.seeklist tbody td div.sl_d{margin-left:.5em;line-height:1.15em}table.seeklist tbody td div.sl_d em{font-family:"Courier New bold",Courier,monospace;font-weight:700;font-style:normal}table.seeklist tbody td div.sl_d.inactive{font-style:italic!important;background-color:#e0e0e0!important}@media screen and (max-width:719px){.tabtext{display:none}}@media screen and (max-width:639px){.signals_container #wide{display:none}}@media screen and (min-width:640px) and (max-width:979px){.signals_container table tbody td.rowspan2,.signals_container table tbody th.rowspan2{border-bottom:1px solid transparent!important}.signals_container #narrow,.signals_container .l2{display:none}}@media screen and (min-width:980px){.signals_container #narrow,.signals_container .l2_alt{display:none}}.listeners_container tr.l2_alt td table{width:20em}.listeners_container tr.l2_alt td table tbody{border:none}table.responsive{padding:0;margin:.5em 0 1em 0;border-radius:5px}table.responsive tbody{border:1px solid #888}table.responsive tbody tr th{vertical-align:top;padding:0 .25em;line-height:1.5em;width:12em;text-align:right;border-right:1px solid #888}table.responsive tbody tr th b{background:#ffffa0;color:#00f;border:1px solid #b0b000;border-radius:2px}table.responsive tbody tr td{vertical-align:top;padding:0 0 0 .25em;line-height:1.5em;text-align:left!important}table.responsive tbody tr td b{background:#ffffa0;color:#00f;border:1px solid #b0b000;border-radius:2px}#sysinfo{text-align:center}#sysinfo table{border-collapse:collapse;border:0;width:934px;box-shadow:1px 2px 3px #ccc;margin:1em auto;text-align:left}#sysinfo table td,#sysinfo table th{border:1px solid #666;font-size:75%;vertical-align:baseline;padding:4px 5px}#sysinfo table th{text-align:center!important}#sysinfo table a{color:#00f}#sysinfo table .p{text-align:left}#sysinfo table .e{background-color:#ccf;width:300px;font-weight:700}#sysinfo table .h{background-color:#99c;font-weight:700}#sysinfo table .v{background-color:#ddd;max-width:300px;overflow-x:auto;word-wrap:break-word}#sysinfo table .v i{color:#999}#sysinfo h1{font-size:150%}#sysinfo h2{font-size:125%}#sysinfo hr{width:934px;background-color:#ccc;border:0;height:1px}#sysinfo img{float:right;border:0}.admin_tools{margin:0 0 .5em 2em}.admin_tools li{margin:0 0 .5em 0;font-weight:700}.admin_tools li li{list-style:lower-alpha;margin:0 0 .25em;font-weight:400}.admin_tools li li a.button{line-height:1.25em;height:1.55em;padding:.125em .25em;margin:0}.admin_tools li li input{display:inline;width:10em;line-height:1.25em;height:1.55em;padding:.125em .25em;margin:0 0 0 .5em}.changelog{margin:0 0 .5em 5em}.changelog li{margin:0 0 .5em 0}.changelog li span{padding:0 .25em;border:1px solid #dd0;background-color:#ffc}.changelog li span.new{color:#408040;border-color:#408040;background-color:#a0ffa0;font-weight:700;position:relative;top:-1em;font-size:50%}.main .help{border:2px solid #888;padding:.25em;background:#fff;margin-bottom:1em}.help{border:1px solid #888;background:#fff}.help p{margin:.5em 0;font-size:100%}.help h1{margin:.125em;font-size:120%;font-weight:400}.help a{color:#04c;text-decoration:none;font-weight:700}.help a:hover{text-decoration:underline}.help .links{text-align:center;margin:1em 0;font-size:70%}.help .zone{display:block;margin:.5em 0;padding:.25em;font-weight:700;border:1px solid #888}.help .zone:after{content:'';display:table;clear:both;height:1px;overflow:hidden}.help .header{background:#707070;color:#fff;padding:.2em}.help .header h2{float:left;margin:0;font-size:small;color:#fff!important}.help .header .links{float:right;margin:0}.help .header .links a{color:#ffff80;font-weight:700;text-decoration:none}.help .header .links a:hover{text-decoration:underline}.help .header:after{content:'';display:table;clear:both}.help ol{background:#fff;color:#000;margin:0}.help li{list-style:none;font-size:80%;font-weight:400}.help li span.abbr{float:right;font-weight:700}.help li a:hover,.help li a:hover *{background:#ff0;text-decoration:underline}.help .body{border:1px solid #707070;background:#fff;padding:.25em;border-top:none}.help img.map{width:100%}.help div.map{margin:0 0 1em 0}#main .help .header h3{font-size:120%;float:left}.body.tool{background-color:#f0f0f0;padding:.25em}#frm_dgps textarea{font-family:"Courier New",Courier,monospace;font-size:80%}#frm_dgps #dgps_ref{height:1.5em;width:3em;display:inline}#frm_dgps label{padding-right:1em;font-weight:700;font-size:100%}#frm_dgps input[type=button],#frm_dgps input[type=reset],#frm_dgps input[type=submit]{margin:0;padding:.25em 1em}#frm_dgps textarea:read-only{background-color:#fff;font-weight:700;color:#000}#frm_coordinates label{display:inline-block;text-align:right;padding:0 .5em;font-weight:700;font-size:100%;white-space:nowrap;width:11.5em}#frm_coordinates input[type=text]{height:1.5em;width:8em;display:inline;margin:0}#frm_coordinates input[type=button],#frm_coordinates input[type=reset],#frm_coordinates input[type=submit]{margin:0;padding:.3em 1em}#frm_coordinates div div{display:inline-block;padding:0 0 0 .5em;margin:.25em 0}#frm_coordinates div span{display:inline-block;padding:0;margin:0}#frm_coordinates .r3 span{margin-left:19.85em}@media (max-width:55em){#frm_coordinates{border-bottom:1px solid #ccc}#frm_coordinates div:last-child{border-bottom:none}#frm_coordinates div{padding:.25em 0 .5em 0}#frm_coordinates div label{padding:0;text-align:left}#frm_coordinates div input[type=text]{display:block}#frm_coordinates div div{padding:0;border:none}#frm_coordinates div.r3 span{margin-left:11.5em}}@media (max-width:39em){#frm_coordinates div div{display:block}#frm_coordinates div div input[type=button],#frm_coordinates div div input[type=reset],#frm_coordinates div div input[type=submit]{margin:.5em 0 0 0}#frm_coordinates div.r3 span{margin-left:0}}#frm_navtex div{width:100%;margin:.25em 0;padding:0}#frm_navtex div input{margin:0;padding:.25em .5em;min-width:6em;text-transform:uppercase}#frm_navtex div textarea{margin:0;padding:.25em 1em}#frm_navtex div p{font-weight:700;margin:0;text-align:center}#sunrise #sunrise_result{font-family:"Courier New",Courier,monospace;font-size:10pt;height:18em}#sunrise #credits{width:30em;margin:auto;text-align:center;line-height:1.25em}#sunrise #credits img{float:left;margin:0 .25em .5em 0;border:1px solid #000}@media (min-width:40em){.halfwidth{width:48%;float:left;margin-right:2%}.fullwidth{width:100%;float:none;clear:both}}#lightning_zoom{display:inline;border:0!important;border-radius:0!important;padding:0!important;margin:0!important;height:1em!important;text-align:right;border-image-width:0!important;width:1.25em;color:#000;box-shadow:none!important;background:0 0!important}#lightning_map{border:1px solid #000;background:#ccc}body{font-family:Arial,Helvetica,sans-serif}.txt_c{text-align:center}.txt_r{text-align:right}.monospace{font-family:"Courier New bold",Courier,monospace}.clipped{max-width:100px;overflow:hidden;text-overflow:ellipsis}.txt_vertical{vertical-align:bottom;text-align:center}.txt_vertical div{-ms-writing-mode:tb-rl;-webkit-writing-mode:vertical-rl;writing-mode:vertical-rl;white-space:nowrap;padding-bottom:.5em;display:table;border-spacing:0}#lastError,#lastMessage{padding:.5em;margin:.5em 0;display:inline-block}#lastError{border:1px solid red;background:#ffe0e0;color:red}#lastMessage{border:1px solid green;background:#e0ffe0;color:green}pre{border:1px dashed #ccc;background:#eee;padding:.25em 1em!important;margin:.5em!important;font-size:8pt!important;display:inline-block}a.hover:hover{background-color:#80ff80}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.main{padding:.5em}.main p{margin:.25em 0 .5em 0;font-size:100%}.main h1{font-size:120%;font-weight:700;margin:.125em 0}.main h2{font-size:120%;font-weight:700;margin:.5em 0 .125em 0}.main h2+small{display:inline-block;float:left;margin:.5em 1em .5em 1em}.main h3{font-size:105%;font-weight:700;margin:.125em 0;display:inline-block}.main h4{font-size:90%;font-weight:700;margin:.125em 0;display:inline-block}.main a{color:#0033a0;text-decoration:none;font-weight:700}.main a:hover{text-decoration:underline}.main .links{text-align:center;margin:1em 0;font-size:70%}.main .links_left{text-align:left;margin:1em 0;font-size:70%}.main .zone{display:block;margin:.5em 0;font-weight:700;padding:0}.main .zone:after{content:'';display:table;clear:both;height:1px;overflow:hidden}.main .zone ol{background:#fff;color:#000;margin:0}.main .zone li{list-style:none;font-size:80%;font-weight:400}.main .zone li:hover{background:#ff0}.main .zone li span.abbr{float:right;font-weight:700}.main .header{background:#707070;color:#fff;padding:.2em}.main .header:after{content:'';display:table;clear:both}.main .header h2{float:left;margin:0;font-size:small;color:#fff!important}.main .header .links{float:right;margin:0}.main .header .links a{color:#ffff80;font-weight:700;text-decoration:none}.main .header .links a:hover{text-decoration:underline}.main .body{border:1px solid #707070;border-top:none}.main img.map{width:100%}.main div.map{margin:0 0 1em 0}.main ul li{line-height:1.25em}.main ul.refs li strong{display:inline-block;width:16em}.main .listeners_container,.main .signals_container{background-color:#fff;page-break-before:always}.main .listeners_container p.no-results,.main .signals_container p.no-results{margin:0;font-size:12pt}@media screen{.main .listeners_container,.main .signals_container{border:1px solid #888;border-radius:5px;padding:.25em}}.main .listeners_container h2,.main .signals_container h2{font-weight:700;display:block;margin:0 .25em;float:none}.main .listeners_container h3,.main .signals_container h3{font-weight:700;display:block;margin:0 .25em;float:none}.controlPanel{display:inline-block}.controlPanel .header{padding:.25em;white-space:nowrap;text-align:center;border-radius:1em 1em 0 0;font-size:80%;font-weight:700;box-shadow:#777 2px 2px 5px}.controlPanel .header div{border-radius:3px;border:1px solid #000;color:#000;background:#ffffa0;padding:0 .5em}.controlPanel .header div.visit{float:right;margin-right:.5em}.controlPanel .header div.export{float:left;margin-left:.5em}.controlPanel .header div a{color:#00f}.controlPanel .content{border:1px solid #cacaca;box-shadow:#777 2px 2px 5px;margin:0 0 .5em 0;padding:.25em}.fullwidth .controlPanel{width:100%}#form_limit,#form_page{width:9em;float:left;margin:0 .5em 0 0}label[for=form_limit]{float:left;min-width:4em}#form_next,#form_prev{float:left;margin:0 .5em 0 0;clear:none;font-size:.4rem!important;line-height:.6em}button.tiny{font-size:.4rem!important;line-height:.6em}.section_toggle{font-size:70%;position:relative;top:-.5em;left:.5em}.section_toggle *{display:none}.section_toggle :hover{color:#00f;text-decoration:underline;cursor:pointer}#form button,.cleForm button{margin:.25em 50%;padding:0}#form hr,.cleForm hr{margin:1.25em 0 .5em 0;border-bottom:1px solid #a0a0a0}#form fieldset,.cleForm fieldset{margin:0;padding:0 0 .25em 0}#form fieldset legend,.cleForm fieldset legend{margin:0;padding:0;text-align:center;width:100%;font-size:100%}#form fieldset legend.line,.cleForm fieldset legend.line{border-top:1px solid #ccc;padding:.25em 0 0 0}#form fieldset legend.toggle,.cleForm fieldset legend.toggle{cursor:pointer}#form fieldset legend.toggle:hover,.cleForm fieldset legend.toggle:hover{color:navy}#form fieldset legend.sr-only,.cleForm fieldset legend.sr-only{width:auto}#form fieldset legend span,.cleForm fieldset legend span{float:none;margin:0}#form fieldset#group_,.cleForm fieldset#group_{padding:0;margin:0;text-align:center}#form fieldset#group_ div,.cleForm fieldset#group_ div{display:inline-block}#form fieldset#group_ button,.cleForm fieldset#group_ button{margin:.25em 0;float:left;clear:none}#form fieldset.actionButtons,.cleForm fieldset.actionButtons{clear:both;text-align:center}#form fieldset.actionButtons button,.cleForm fieldset.actionButtons button{margin:.5em 0;width:6em}#form #form_next,#form #form_prev,.cleForm #form_next,.cleForm #form_prev{float:left;line-height:1.75em;margin:0 0 0 .5em;padding:.25em;width:3em;text-align:center;font-size:55%!important;font-weight:700}#form #form_page,.cleForm #form_page{float:left;margin:0 0 0 .5em}#form #form_paging_status,.cleForm #form_paging_status{display:inline-block;width:8em;padding:0;line-height:1.25em;margin:0 0 0 .5em}#form #form_type div,.cleForm #form_type div{padding:0 0 0 2px;margin:1px 0 0 0}#form div,.cleForm div{clear:both}#form div label,.cleForm div label{line-height:1.8em;text-align:left;font-size:90%;float:left;width:120px;font-weight:700;padding:0}#form div input[type=number],#form div input[type=password],#form div input[type=text],#form div select,#form div textarea,.cleForm div input[type=number],.cleForm div input[type=password],.cleForm div input[type=text],.cleForm div select,.cleForm div textarea{margin:0;border-radius:0;height:1.75em;padding:0 .25em;font-size:80%;float:left}#form div select,.cleForm div select{-webkit-appearance:menulist;-moz-appearance:menulist;appearance:menulist}#form div select.multiple,.cleForm div select.multiple{-webkit-appearance:none;-moz-appearance:none;appearance:none}#form div textarea,.cleForm div textarea{margin:0 0 .25em 0}#form div button,.cleForm div button{float:left;clear:none!important;padding:.25em 0;width:8em}#form div p,.cleForm div p{margin:0;border-radius:0;height:1.5em;font-size:80%;float:right;text-align:right}#form div div,.cleForm div div{clear:none;height:1.5em;float:left;display:inline-block}#form div div label,.cleForm div div label{float:none;width:auto;font-size:80%;font-weight:400;margin:0 .1em;padding:0 .1em;line-height:1.5em}#form div ul,.cleForm div ul{display:none}.listener_list{width:570px}.listener_list input[type=text],.listener_list select{width:435px}.listener_list #form_timezone-button{width:435px}.addLogFor a{font-weight:400}.addLogFor a.pri{font-weight:700}.logon #form{width:300px}.logon #form label{width:150px!important}.logon #form input[type=password],.logon #form input[type=text]{width:140px}.logon #form #form_submit{margin:0 30%;width:10em}.logsession_loader{position:relative;border:1px solid #000;background:#eee}.logsession_loader h2{position:absolute;top:50%;left:50%;font-size:200%;margin:0;transform:translate(-50%,-50%)}table.logsessions tbody tr{cursor:pointer}table.logsessions tbody tr.selected{color:#080;font-weight:700}table.logsessions tbody tr.selected td{background:#ffffa0}.listener_view #form label{width:20%}.listener_view #form label[for=form_timezone-button],.listener_view #form label[for=form_timezone]{width:10%;min-width:auto;text-align:right;padding-right:.75em}.listener_view #form input[type=text],.listener_view #form select,.listener_view #form textarea{width:75%;padding:.125em .25em;margin:0 0 .25em 0}.listener_view #form textarea{height:6em}.listener_view #form #form_timezone-button{width:55%}.listener_view #form div#form_gsq_suffix{padding-left:.25em;float:left;width:5%;font-size:80%}.listener_stats div.stats{clear:both;border:1px solid #ccc;background:#fff;padding:.25em .25em 0 .25em;margin:.25em 0;width:18em}.listener_stats div.signal_stat{margin:0;padding:0;display:inline-block;width:20em;line-height:initial}.listener_stats div.signal_stat label{font-weight:700;width:15em;margin:0;padding:.25em;border:1px solid #ccc;float:left;line-height:initial}.listener_stats div.signal_stat div{display:inline-block;float:left;margin:0 .25em;padding:.25em;width:4em;text-align:right;line-height:initial}.signal_list{width:570px}.signal_list fieldset.section{display:inline-block;width:560px;float:left}.signal_list input[type=text],.signal_list select{width:435px}.signal_list #form_sortby{width:335px}.signal_list #form_za{float:left;margin:.25em .5em;line-height:1.5em}.signal_list label[for=form_za]{width:40px!important;text-align:right!important;float:left}.signal_list #form_show{width:9em}.signal_list label[for=form_paper]{width:auto!important;margin:0 .5em}.signal_list #form_paper{width:230px;float:right}.signal_list #form_personalise{width:285px}.signal_list label[for=form_offsets]{width:auto!important;margin:0 .5em}.signal_list #form_offsets{width:85px;float:right}.signal_list #form_call{width:60px}.signal_list #form_khz_1,.signal_list #form_khz_2{width:50px}.signal_list #form_channels{width:90px}.signal_list #form_recently{width:95px}.signal_list label[for=form_within]{width:75px!important;padding-left:1em!important;padding-right:.25em!important}.signal_list #form_within{width:95px}.signal_list label[for=form_active]{width:75px!important;padding-left:1em!important;padding-right:.25em!important}.signal_list #form_active{width:95px}.signal_list #form_listener,.signal_list #form_personalise{overflow:auto;margin:0 0 .25em 0}.signal_list #form_listener option.all,.signal_list #form_personalise option.all{font-weight:700;font-style:italic;text-align:center;background:green;color:#fff}.signal_list #form_listener option.primaryQth,.signal_list #form_personalise option.primaryQth{font-weight:700}.signal_list #form_listener option.secondaryQth,.signal_list #form_personalise option.secondaryQth{color:#888}.signal_list #form_listener{font-family:monospace,monospace;font-size:8pt;height:160px}.signal_list label[for=form_listener]{line-height:1.8em;text-align:left;font-size:90%!important;float:left;width:120px;font-weight:700!important;padding:0!important;margin:0!important}.signal_list #form_listener_invert{width:120px;padding:0 0 0 .25em!important;height:auto!important}.signal_list #form_listener_invert label{padding:0 0 0 .25em!important}.signal_list #listener_selection_help{width:100px!important;margin:.5em 0 0 1em;font-size:80%!important;font-style:italic}.signal_list label[for=form_heard_in]{line-height:1.8em;text-align:left;font-size:90%!important;font-weight:700!important;padding:0!important;margin:0!important}.signal_list #heard_in_label{width:120px}.signal_list #form_heard_in{width:435px;text-transform:uppercase;height:4em}.signal_list #form_heard_in_mod{display:inline-block}.signal_list #form_heard_in_mod div{padding:0 0 0 .5em}.signal_list #form_logged_date_1,.signal_list #form_logged_date_2,.signal_list #form_logged_first_1,.signal_list #form_logged_first_2,.signal_list #form_logged_last_1,.signal_list #form_logged_last_2{width:95px;padding:0 1.75em 0 .25em!important;background:#fff url(../../../image/calendar.png) no-repeat;background-size:auto 100%;background-position:right}.signal_list label[for=form_khz_1]{width:auto!important;margin:0 .25em 0 1em}.signal_list label[for=form_channels]{width:auto!important;margin:0 .25em 0 1em}.signal_list #form_sp_itu_clause{width:60px}.signal_list #form_range_gsq{width:60px}.signal_list #form_range_max,.signal_list #form_range_min{width:50px}.signal_list label[for=form_range_min]{width:auto!important;margin:0 .5em 0 30px}.signal_list #form_range_units{display:inline-block;width:auto!important;margin:0 .5em 0 30px}.signal_list span{display:inline-block;margin:0 .25em;float:left}#form_timezone-button{padding:.125em;border-radius:5px;background:#fff;margin:-.125em 0 0 -.35em}#form_timezone-button .ui-selectmenu-text{font-size:75%;white-space:pre;font-family:"Courier New bold",Courier,monospace;color:#000}#form_timezone-menu{height:6em;overflow:-moz-scrollbars-vertical}#form_timezone-menu .ui-menu-item{padding:.125em;font-size:75%;white-space:pre;font-family:"Courier New bold",Courier,monospace;line-height:1em}#form_timezone-menu .ui-menu-item .ui-menu-item-wrapper{padding:0;line-height:1em}fieldset#form_range_units legend,fieldset#form_type legend{line-height:1.8em;display:block;font-size:90%;float:left;font-weight:700;padding:0 .5em 0 0;color:#000}fieldset#form_type legend{text-align:left;width:120px}fieldset#form_range_units legend{text-align:right;width:50px}fieldset#form_range_units div label{margin:0 .25em}.signal_view #form label{width:25%;min-width:120px}.signal_view #form label[for=form_firstHeard],.signal_view #form label[for=form_format],.signal_view #form label[for=form_itu],.signal_view #form label[for=form_khz],.signal_view #form label[for=form_lastHeard],.signal_view #form label[for=form_lat],.signal_view #form label[for=form_lon],.signal_view #form label[for=form_pwr],.signal_view #form label[for=form_sec],.signal_view #form label[for=form_type],.signal_view #form label[for=form_usb]{min-width:auto;text-align:right;padding-right:.25em}.signal_view #form label[for=form_khz],.signal_view #form label[for=form_pwr],.signal_view #form label[for=form_type]{width:10%}.signal_view #form label[for=form_itu],.signal_view #form label[for=form_lat],.signal_view #form label[for=form_lon]{width:15%}.signal_view #form label[for=form_usb]{width:9%}.signal_view #form label[for=form_sec]{width:13%}.signal_view #form label[for=form_format]{width:11%}.signal_view #form label[for=form_firstHeard],.signal_view #form label[for=form_lastHeard]{width:18%}.signal_view #form label b{font-weight:400;background:#ffffa0;padding:1px;border:1px solid #b0b000;border-radius:2px}.signal_view #form input[type=text],.signal_view #form select,.signal_view #form textarea{width:75%;padding:.125em .25em;margin:0 0 .25em 0}.signal_view #form input[type=text]#form_call,.signal_view #form input[type=text]#form_khz,.signal_view #form input[type=text]#form_pwr,.signal_view #form input[type=text]#form_type,.signal_view #form select#form_call,.signal_view #form select#form_khz,.signal_view #form select#form_pwr,.signal_view #form select#form_type,.signal_view #form textarea#form_call,.signal_view #form textarea#form_khz,.signal_view #form textarea#form_pwr,.signal_view #form textarea#form_type{width:10%}.signal_view #form input[type=text]#form_sp,.signal_view #form select#form_sp,.signal_view #form textarea#form_sp{width:30%}.signal_view #form input[type=text]#form_itu,.signal_view #form select#form_itu,.signal_view #form textarea#form_itu{width:20%}.signal_view #form input[type=text]#form_gsq,.signal_view #form input[type=text]#form_lat,.signal_view #form input[type=text]#form_lon,.signal_view #form select#form_gsq,.signal_view #form select#form_lat,.signal_view #form select#form_lon,.signal_view #form textarea#form_gsq,.signal_view #form textarea#form_lat,.signal_view #form textarea#form_lon{width:10%!important}.signal_view #form input[type=text]#form_lsb,.signal_view #form input[type=text]#form_sec,.signal_view #form input[type=text]#form_usb,.signal_view #form select#form_lsb,.signal_view #form select#form_sec,.signal_view #form select#form_usb,.signal_view #form textarea#form_lsb,.signal_view #form textarea#form_sec,.signal_view #form textarea#form_usb{width:7%}.signal_view #form input[type=text]#form_format,.signal_view #form select#form_format,.signal_view #form textarea#form_format{width:16%}.signal_view #form input[type=text]#form_active,.signal_view #form select#form_active,.signal_view #form textarea#form_active{width:13%}.signal_view #form input[type=text]#form_firstHeard,.signal_view #form input[type=text]#form_lastHeard,.signal_view #form select#form_firstHeard,.signal_view #form select#form_lastHeard,.signal_view #form textarea#form_firstHeard,.signal_view #form textarea#form_lastHeard{width:13%}.signal_view #form div#form_gsq_suffix,.signal_view #form div#form_itu_suffix,.signal_view #form div#form_sp_suffix{padding-left:.25em;float:left;width:5%;font-size:80%}.signal_view #form div#form_pwr_suffix,.signal_view #form div#form_sec_suffix{padding-left:.25em;float:left;width:5%;font-size:80%}.signal_view #form div#heardIn{width:75%;min-height:1.75em;font-size:80%;height:auto;border:1px solid #cacaca;box-shadow:inset 0 1px 2px rgba(10,10,10,.1);background:#e6e6e6;padding:.25em;margin-bottom:.25em}.signal_view #form div#heardIn a{font-weight:400}.signal_view #form div#heardIn a:hover{color:#00f}.signal_view #form div#heardIn b{background:#ffffa0;padding:1px;border:1px solid #b0b000;border-radius:2px}.signal_view #form div#heardIn #heardInKey{font-weight:700;white-space:nowrap;float:right;border:1px solid #aaa;border-radius:3px;padding:0 .25em;background:#ccc}.signal_view #form fieldset{margin-top:.75em}.user .role-a,.user .role-aa,.user .role-cle,.user .role-ma,.user .role-u{padding:0 .25em;border-radius:3px;white-space:nowrap}.user .role-ma{border:1px solid red;background:#fcc}.user .role-a{border:1px solid #00f;background:#eef}.user .role-aa{border:1px solid #0aa;background:#eff}.user .role-cle{border:1px solid #880;background:#ff8}.user .role-u{border:1px solid #080;background:#afa}.user_view label{display:inline-block;width:10em}.user_view input{display:inline-block;width:20em}.listener_weather #form fieldset#group_weather_report_details div *,.signal_weather #form fieldset#group_weather_report_details div *{line-height:1.8em;padding:0;margin:0}.listener_weather #form fieldset#group_weather_report_details div label,.signal_weather #form fieldset#group_weather_report_details div label{width:auto;line-height:unset;margin:0 .5em}.listener_weather #form div,.signal_weather #form div{display:inline-block}.listener_weather #form div button,.signal_weather #form div button{width:8.5em}.listener_weather #form_icao,.signal_weather #form_icao{width:20em;font-size:10pt;font-family:'Courier New',monospace;font-weight:700}.listener_weather #form_hours,.signal_weather #form_hours{width:3.5em;text-align:right}.listener_weather #weather,.signal_weather #weather{height:25em;font-size:10pt;font-family:'Courier New',monospace}.listener_locator_map #form{margin:0 0 0 1em;border:1px solid #000;border-radius:5px;padding:.5em .5em 0 .5em;background-color:#fff}.listener_locator_map #form label{width:1em}.listener_locator_map #form button{margin:0;width:4em;float:none}.listener_locator_map #form button#x_add,.listener_locator_map #form button#x_sub,.listener_locator_map #form button#y_add,.listener_locator_map #form button#y_sub{height:1.5em;width:1.5em}.listener_locator_map #form table tbody{border:1px solid #aaa}.listener_locator_map #form table tbody tr{background-color:#f0f0f0!important}.listener_locator_map #form table tbody th{padding:0;margin:0}.logUpload #presets{font-size:80%}.logUpload #format_errors{padding:0 .25em;margin:.25em 0;width:100%;font-family:"Courier New",Courier,monospace;white-space:pre;background-color:#aaa;color:#fff;font-weight:700;font-size:13px;float:left}.logUpload #tokensHelp{display:none}.logUpload #tokensHelpLink{float:right;font-size:small}.logUpload .tokenErrors th{text-align:left}.logUpload .tokenErrors .unknown{color:red;font-weight:700;cursor:pointer}.logUpload .tokenErrors .duplicate{color:#c000c0;font-weight:700;cursor:pointer}.logUpload #form.formatErrors #format #form_format{background-color:#804040}.logUpload #form #format{display:flex;align-items:stretch;flex-flow:row nowrap;justify-content:space-between;margin-bottom:3px}.logUpload #form #format #form_format{width:100%;font-family:"Courier New",Courier,monospace;background-color:#888;color:#fff;font-weight:700;font-size:13px;float:left}.logUpload #form #format #formatOld{display:none}.logUpload #form #format #form_saveFormat{min-width:4em;width:4em;margin:0 0 0 .5em;float:right}.logUpload #form #dateFields legend{width:auto;color:#000;text-align:left;float:left;margin:0 1em 0 0}.logUpload #form #dateFields div{clear:none;float:left;display:inline}.logUpload #form #dateFields div label{width:4em;text-align:right;margin:0 .25em 0 .5em}.logUpload #form #dateFields div input{width:4em}.logUpload #form #dateFields div input#form_DD,.logUpload #form #dateFields div input#form_MM{width:2.5em}.logUpload #form #form_logs{width:100%;height:420px;background-image:url(../../../image/log_grid.png);background-position-x:4px;background-size:78px;font-family:"Courier New",Courier,monospace;font-size:13px;white-space:pre;overflow-x:hidden;overflow-y:scroll}.toolTipDetails{max-width:800px;overflow-x:auto}.toolTipDetails #tokensHelpClose{float:right;font-size:small}.toolTipDetails label{margin:.25em 0;font-weight:700}.toolTipDetails p{margin:0 0 .5em 0;line-height:1.25em;white-space:nowrap}.toolTipDetails b{color:#00f;background:#e0e0ff;font-family:"Courier New",Courier,monospace;cursor:pointer}.toolTipDetails b:hover{text-decoration:underline}.toolTipDetails span{background:#eee;padding:0 .25em;border:1px dashed #888;border-radius:3px;white-space:pre;font-weight:700;font-family:"Courier New",Courier,monospace}div.scroll div table.parse.results tbody tr{cursor:pointer}.results.stats{width:14em;margin-bottom:1em}.results.stats td+td{width:4em}.results.parse tbody tr{background:#fff}.results.parse tbody tr.unknown{background:#faa}.results.parse tbody tr.question{background:#ffddca}.results.parse tbody tr.question.inactive{background:#e6cfc3}.results.parse tbody tr.question.inactive td{color:#444}.results.parse tbody tr.choice{background:#ffd8d8}.results.parse tbody tr.choice.start{border-top:3px solid red}.results.parse tbody tr.choice.end{border-bottom:3px solid red}.results.parse tbody tr td i{color:#080;font-weight:700}.results.parse tbody tr td i.check{background:#ffe0e0;border:1px solid red;color:#f60}.results.parse tbody tr th{background:#95de95}.results.parse tbody tr th.warning{background:#ffb080}.results.parse tbody tr th.error{background:#ffa0a0}.results.parse tbody tr th.error a.add{background:#f44;color:#fff!important;border:1px solid red}.results.parse tbody tr th.jump{vertical-align:middle;line-height:1em;padding:0 .25em;background:#fff}.results.parse tbody tr th.jump .up:after{content:'\25B3'}.results.parse tbody tr th.jump .up:hover:after{content:'\25B2'}.results.parse tbody tr th.jump .down:after{content:'\25BD'}.results.parse tbody tr th.jump .down:hover:after{content:'\25BC'}.check-links{float:right;font-size:small;color:#444}.check-links #check_good,.check-links #uncheck_good{background:#95de95}.check-links #check_warning,.check-links #uncheck_warning{background:#ffb080}.check-links #check_choice,.check-links #uncheck_choice{background:#ffa0a0}.log_edit #form label{width:20%}.log_edit #form label[for=form_daytime],.log_edit #form label[for=form_dxMiles],.log_edit #form label[for=form_lsbApprox],.log_edit #form label[for=form_sec],.log_edit #form label[for=form_time],.log_edit #form label[for=form_usbApprox]{width:auto;min-width:auto;text-align:right;padding:0 .5em 0 2em}.log_edit #form label[for=form_dxMiles]{width:10em}.log_edit #form label[for=form_time]{width:7em}.log_edit #form label[for=form_daytime]{width:10em}.log_edit #form input[type=text],.log_edit #form select{width:75%;padding:.125em .25em;margin:0 0 .25em 0}.log_edit #form input[type=text]#form_date,.log_edit #form select#form_date{width:95px;padding:0 1.75em 0 .25em!important;background:#fff url(../../../image/calendar.png) no-repeat;background-size:auto 100%;background-position:right}.log_edit #form input[type=text]#form_time,.log_edit #form select#form_time{text-align:right;width:3em}.log_edit #form input[type=text]#form_format,.log_edit #form select#form_format{width:23em}.log_edit #form input[type=text]#form_dxKm,.log_edit #form input[type=text]#form_dxMiles,.log_edit #form input[type=text]#form_lsb,.log_edit #form input[type=text]#form_sec,.log_edit #form input[type=text]#form_usb,.log_edit #form select#form_dxKm,.log_edit #form select#form_dxMiles,.log_edit #form select#form_lsb,.log_edit #form select#form_sec,.log_edit #form select#form_usb{text-align:right;width:4em}.log_edit #form select#form_listenerId,.log_edit #form select#form_signalId{margin:0 0 .5em 0;font-family:monospace;height:12em}.log_edit #form select#form_listenerId option.primaryQth,.log_edit #form select#form_signalId option.primaryQth{font-weight:700}.log_edit #form select#form_listenerId option.secondaryQth,.log_edit #form select#form_signalId option.secondaryQth{padding-left:1.5em;color:#888}.log_edit #form select#form_daytime{background:#e6e6e7;cursor:not-allowed;width:6em}.cle_editor label{display:inline-block;font-weight:700;width:10em}.cle_editor input,.cle_editor textarea{display:inline-block}.cle_editor #form_cle{width:3em}.cle_editor #form_dateTimespan,.cle_editor #form_scope{width:70em}.cle_editor #form_dateEnd,.cle_editor #form_dateStart{width:95px;padding:0 1.75em 0 .25em!important;background:#fff url(../../../image/calendar.png) no-repeat;background-size:auto 100%;background-position:right}.cle_editor table{border-collapse:collapse}.cle_editor table tr{background:#fff}.cle_editor table tr td{text-align:right}.cle_editor table tr th.left{text-align:left}.cle_editor table tr td,.cle_editor table tr th{padding:0 .25em;margin:0;border:1px solid #aaa}.cle_editor table tr td input,.cle_editor table tr th input{padding:.25em;height:1.25em;line-height:1.25em;margin:0}.cle_editor table tr td #form_europeRange1Channels,.cle_editor table tr td #form_europeRange2Channels,.cle_editor table tr td #form_worldRange1Channels,.cle_editor table tr td #form_worldRange2Channels,.cle_editor table tr th #form_europeRange1Channels,.cle_editor table tr th #form_europeRange2Channels,.cle_editor table tr th #form_worldRange1Channels,.cle_editor table tr th #form_worldRange2Channels{width:8.175em}.cle_editor table tr td #form_europeRange1High,.cle_editor table tr td #form_europeRange1Low,.cle_editor table tr td #form_europeRange2High,.cle_editor table tr td #form_europeRange2Low,.cle_editor table tr td #form_worldRange1High,.cle_editor table tr td #form_worldRange1Low,.cle_editor table tr td #form_worldRange2High,.cle_editor table tr td #form_worldRange2Low,.cle_editor table tr th #form_europeRange1High,.cle_editor table tr th #form_europeRange1Low,.cle_editor table tr th #form_europeRange2High,.cle_editor table tr th #form_europeRange2Low,.cle_editor table tr th #form_worldRange1High,.cle_editor table tr th #form_worldRange1Low,.cle_editor table tr th #form_worldRange2High,.cle_editor table tr th #form_worldRange2Low{width:6em;text-align:right}.cle_editor table tr input[type=checkbox]{height:20px;line-height:1.25em;padding:0;margin:0 .25em .125em .25em;vertical-align:middle}.cle_editor table tr label{border:1px solid #aaa;border-radius:3px;height:20px;line-height:1.25em;text-align:left;width:9.375em;margin:0 0 .25em 0;vertical-align:middle}a.add,a.close,a.delete,a.merge{display:block;font-style:normal;font-size:80%;margin:.25em;padding:0;line-height:1.5em;width:1.5em;text-align:center;border-radius:3px}a.add{background:#080;color:#fff!important;border:1px solid #040}a.add:hover{background:#0a0}a.close,a.delete{background:#c00;color:#fff!important;border:1px solid #800}a.close:hover,a.delete:hover{background:red}a.merge{background:#ffa000;color:#fff!important;border:1px solid #a06000}a.merge:hover{background:#ffc040}#lastError a.close{float:right;margin:0 0 0 .5em}#lastMessage a.close{float:right;margin:0 0 0 .5em;background:#080;color:#fff!important;border:1px solid #040}#lastMessage a.close:hover{background:#0a0}.results.listener tbody tr{background:#fff!important}.results.short thead tr th,.signal_rx_map.short thead tr th{height:3em!important}.results.very-short thead tr th{height:1.75em!important}.results .award_qth{white-space:nowrap;max-width:10em;overflow:hidden;text-overflow:ellipsis}.results .cart{width:1.5em;text-align:right}.results .num{text-align:right}.results .unqualified{color:#888}.results.award-signals div{border-radius:3px;margin:1px 0 1px 2px;font-size:80%;padding:2px;width:10em;border:1px solid #80b080;background:#e0ffe0;display:inline-block}.results.award-signals div a{color:#080}.results.award-signals div a:hover{text-decoration:none;color:#00f}.results.award-signals div.required{border-width:3px}.results.award-signals .unqualified div{border:1px dashed #a66;background:#ffe0e0}.results.award-signals .unqualified div a{color:#800}.results.award-signals .unqualified div a:hover{text-decoration:none;color:#00f}.results.award-signals .unqualified div.required{border-width:3px}.signal_rx_map,.signal_rx_map *{padding:0;margin:0;border:0;vertical-align:top;background:0 0}.signal_rx_map #map,.signal_rx_map * #map{position:relative;top:0;left:0}.signal_rx_map #rx_map,.signal_rx_map * #rx_map{position:relative}.signal_rx_map #point_here,.signal_rx_map * #point_here{z-index:100;position:absolute;display:none}div.scroll{padding:0;margin:0;display:flex;flex-direction:column}div.scroll div{height:100%;overflow:auto}div.scroll div table.results{border-top:2px solid grey;border-bottom:1px solid grey;border-right:1px solid grey;background:#fff}div.scroll div table.results thead th{position:sticky;top:-1px;border-top:none;border-bottom:none}div.scroll div table.results tbody tr:hover,div.scroll div table.results tbody tr:hover td{background:#ff0!important}div.scroll div table.results img{margin:.5em .25em 0 0}.results{margin:0;border-collapse:collapse}.results thead th{height:7em!important;max-height:7em!important;background:#686868;color:#fff;border:1px solid grey;vertical-align:bottom;font-size:9pt;padding:.25em}.results thead th.hidden{display:none}.results thead th.sort{border-bottom:3px solid #a0a0a0}.results thead th.nosort{background:green;border-bottom:3px solid #006000}.results thead th.sort:hover,.results thead th.sorted{border-bottom:3px solid #fcc247!important;background:#665d4b;cursor:pointer}.results thead th.sorted{color:#ffe4b3}.results thead th b{background:#ffffa0;color:#00f;border:1px solid #b0b000;border-radius:2px}.results tbody th{padding:.125em .25em;vertical-align:top;background:#95de95;color:green;border:1px solid grey}.results tbody th.no-results{background:#de9595;color:maroon}.results tr.daytime td{font-weight:700}.results tr.logged td{color:green!important}.results tr.unlogged td{color:#a00000!important}.results tr.l2_alt td{padding:0}.results tr.l2_alt td table{background:0 0;margin:0;border:none}.results tr.l2_alt td table tbody{background:0 0!important}.results tr.l2_alt td table tbody tr{background:0 0!important}.results tr.l2_alt td table tbody tr th{background:0 0!important;width:6em;white-space:nowrap;text-align:right;color:#000}.results tr.l2_alt td table tbody tr td,.results tr.l2_alt td table tbody tr th{text-align:left!important;font-size:100%;margin:0;padding:0 .25em;border:none}.results tr.l2_alt td table tbody tr td div,.results tr.l2_alt td table tbody tr th div{display:inline}.results td{border:1px solid grey;height:1.25em;vertical-align:top;font-size:9pt;padding:.125em .25em}.results td.hidden{display:none}.results td.caps{text-transform:uppercase}.results td i{font-style:normal;color:green;padding:0}.results td em{font-style:normal;font-weight:700;background:#e0ffe0;color:green;padding:0;border:1px solid #80b080;border-radius:2px}.results td b{background:#ffffa0;padding:1px;border:1px solid #b0b000;border-radius:2px}.results.listener .primaryQth{font-weight:700}.results.listener .secondaryQth{padding-left:1.5em}.results.listener .secondaryQth a{font-weight:400}.report_actions{text-align:center;margin:.25em!important}.report_actions .button{margin:0;padding:.5em 1em;width:160px}@media print{a[href]:after{content:none!important}.results{border:1px solid green}body{font-size:85%;width:95%}}pre.log{background:#fff;border:1px solid #888;padding:0 5px;display:inline-block}#tabs .button{margin:0;border-radius:5px 5px 0 0;padding:.5em .75em;border-bottom:none}#tabs .button.is-active{color:#ff0!important}#tabs .button .tabicon{width:1.5em;height:1.5em;margin:0 .25em 0 0;text-decoration:none}#tabs .button.is-active,#tabs .button:hover{text-decoration:underline}#tabs .button.is-active .tabicon,#tabs .button:hover .tabicon{text-decoration:none}#tabs .button.icon{padding:.25em .75em}#actions{float:right}#actions .frame{border:1px solid #888;border-bottom:none;border-radius:5px 5px 0 0;background:#eee;padding:4px;margin:0;line-height:1em;font-size:.9rem}#actions .frame div{float:left;border:1px solid #000;border-radius:3px;background-color:#ffffa0;padding:2px}#actions .frame div:not(:last-child){margin:0 4px 0 0}body.map,html{height:100%;margin:0;padding:0;background:#f0f0f0}.map{margin:0}.map #header .form_layers{display:inline-block;background:#fff;border:1px solid #aaa;border-radius:5px}.map #header .form_layers div{height:1.8em;line-height:1.8em;float:left;padding:0 4px;margin:0}.map #header .form_layers div input[type=checkbox]{padding:0;margin:0}.map #header .form_layers div label{padding:0 .25em}.map #header .form_layers div:last-child{border-radius:0 5px 5px 0}.map #map{height:80%;margin:0 .25em;overflow:auto;border:1px solid #aaa}.map h1{margin:.125em 5px;white-space:nowrap}.map .gm-style-iw h2{margin:.25em 0}.map .gm-style-iw p{margin:.25em 0}.gridLabel{position:absolute;z-index:-100000;color:#408080;font-weight:700;font-family:Tahoma,Arial,Helvetica,sans-serif;opacity:.9}#panel{font-family:Arial,sans-serif;font-size:10px;float:left;width:340px;height:550px}#map-container{margin-left:350px}#map{width:100%;height:650px}#markerlist{height:620px;margin:10px 0 0 0;overflow:auto}#markerlist thead th{height:3em!important}#markerlist tbody th{margin:0;padding:0}#markerlist tbody .logged a b{background:#e0ffe0!important;border:1px solid #80c080!important}table.map_layout{padding:0;margin:0}table.map_layout tbody{border:none}table.map_layout tbody td{padding:.25em;margin:0;vertical-align:top}a.pri{font-weight:700}a.sec{font-weight:400;margin-left:1em}#panel .title{border-bottom:1px solid #e0ecff;white-space:nowrap;overflow:hidden;width:310px;cursor:pointer;padding:2px 0;display:block;color:#000;font-weight:400;text-decoration:none}#panel .title:visited{color:#000}#panel .title:hover{background:#ffffa0!important}#panel .title b{width:100px;padding:0 .5em;margin:0 .5em;float:left}.info .head{padding:0 2em}.map_info h2{margin:0;float:left}.map_info h3{margin:0;font-size:10pt;display:block;clear-after:both}.map_info .info-body{padding:0;margin:2px 0;border:1px solid #ccc}.map_info .info-body tbody{padding:2px;margin:0}.map_info .info-body tbody th{vertical-align:top;padding:3px;font-size:8pt;text-align:left;width:10em}.map_info .info-body tbody td{vertical-align:top;padding:3px;font-size:10pt;width:16em}.fa-info-circle{color:#00f} \ No newline at end of file +body.reu{background:snow}body.reu .menu-centered .header{background:#fff0f0;border-color:#d03333}body.reu .menu-centered .header h2{color:#d03333}body.reu .menu-centered .language,body.reu .menu-centered .mode,body.reu .menu-centered .system{border-color:#d03333}body.reu .menu-centered .language li a,body.reu .menu-centered .mode li a,body.reu .menu-centered .system li a{border-color:#d03333}body.reu .menu a{color:#d03333}body.reu .menu .is-active>a{background:#d03333;color:#fff}body.reu h1,body.reu h2{color:#d03333}body.reu fieldset legend{color:#d03333}body.reu .controlPanel .content{background:#fff0f0}body.reu .footer{border-color:#d03333}body.reu .footer a{color:#00f}body.reu .button{border-color:maroon;background:#b35959;color:#fff}body.reu .button:hover{background:#cc2929;color:#ffff40}body.reu .button.is-active{background:#e63030;color:#ffff40}body.reu .button.is-inactive{background:#cc7a7a}body.rna{background:#f8f8ff}body.rna .menu-centered .header{background:#e0e0ff;border-color:#33f}body.rna .menu-centered .header h2{color:#33f}body.rna .menu-centered .language,body.rna .menu-centered .mode,body.rna .menu-centered .system{border-color:#33f}body.rna .menu-centered .language li a,body.rna .menu-centered .mode li a,body.rna .menu-centered .system li a{border-color:#33f}body.rna .menu a{color:#33f}body.rna .menu .is-active>a{background:#33f;color:#fff}body.rna h1,body.rna h2{color:#33f}body.rna fieldset legend{color:#33f}body.rna .controlPanel .content{background:#e0e0ff}body.rna .footer{border-color:#33f}body.rna .footer a{color:#00f}body.rna .button{border-color:#33f;background:#66c;color:#fff}body.rna .button:hover{background:#5252cc;color:#ffff40}body.rna .button.is-active{background:#4545e6;color:#ffff40}body.rna .button.is-inactive{background:#7d7db3}body.rww{background:#fafffa}body.rww .menu-centered .header{background:#f2fff2;border-color:#198019}body.rww .menu-centered .header h2{color:#198019}body.rww .menu-centered .language,body.rww .menu-centered .mode,body.rww .menu-centered .system{border-color:#198019}body.rww .menu-centered .language li a,body.rww .menu-centered .mode li a,body.rww .menu-centered .system li a{border-color:#198019}body.rww .menu a{color:#198019}body.rww .menu .is-active>a{background:#198019;color:#fff}body.rww h1,body.rww h2{color:#198019}body.rww fieldset legend{color:#198019}body.rww .controlPanel .content{background:#f2fff2}body.rww .footer{border-color:#198019}body.rww .footer a{color:#00f}body.rww .button{border-color:#4d804d;background:#2d802d;color:#fff}body.rww .button:hover{background:#40a040;color:#ffff40}body.rww .button.is-active{background:#208020;color:#ffff40}body.rww .button.is-inactive{background:#7db37d}.rna-system{background:#e0e0ff;color:#33f}.reu-system{background:#fff0f0;color:#d03333}.rww-system{background:#f2fff2;color:#198019}.inactive,tr.inactive td{color:grey;font-style:italic}.inactive a,tr.inactive td a{color:#6080b0}.type_0,.type_ndb,tr.ndb td{background-color:#fff!important}.type_1,.type_dgps,tr.dgps td{background-color:#00d8ff!important}.type_2,.type_dsc,tr.dsc td{background-color:#ffb000!important}.type_3,.type_time,tr.time td{background-color:#ffe0b0!important}.type_4,.type_navtex,tr.navtex td{background-color:#ffb8d8!important}.type_5,.type_hambcn,tr.hambcn td{background-color:#b8ffc0!important}.type_6,.type_other,tr.other td{background-color:#b8f8ff!important}.type_all{background-color:#d03333;color:#fff}.type_all label{color:#fff;font-style:italic;font-weight:700!important}@media (max-width:60.9375em){.topbar{text-align:center;padding:0 .5em;background-color:#eee;border:1px solid #ccc}.topbar div.toolbar{display:inline;padding:0 1em;white-space:nowrap}}@media (min-width:61em){.topbar{margin:0 .5em}.topbar div.toolbar{padding:0 .5em;background-color:#eee;border:1px solid #ccc}.topbar div.toolbar ul ul{left:.5em}.topbar .version-switcher{float:right}.topbar .userStatus{float:left}}.topbar .userStatus{width:12em}.topbar .userStatus ul{width:12em;margin:0}.topbar .userStatus ul li{list-style:none;margin:0;display:inline-block}.topbar .userStatus ul li a.dropdown-toggle,.topbar .userStatus ul li a.dropdown-toggle:active{display:block;text-align:right;color:#000;font-weight:400;text-decoration:none}.topbar .userStatus ul li div.close,.topbar .userStatus ul li div.open{padding:0;width:auto;border:none}.topbar .userStatus ul li div.open{display:inline-block}.topbar .userStatus ul li div.close{-moz-transform:scale(1,-1);-webkit-transform:scale(1,-1);-o-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1);display:none}.topbar .userStatus ul li img{padding:0 .25em}.topbar .userStatus ul li ul{display:none;position:relative}.topbar .userStatus ul li.open div.open{display:none}.topbar .userStatus ul li.open div.close{display:inline-block}.topbar .userStatus ul li.open ul{width:12em;background-color:#fff;border:1px solid #ccc;z-index:100;padding:.25em .5em;position:absolute;display:block;border-top:1px solid #ccc;border-radius:0 0 5px 5px}.topbar .userStatus ul li.open ul li{display:block}.topbar .userStatus ul li.open ul li.rule{border-top:1px solid #ccc;padding:.25em 0 0 0}.topbar .userStatus ul li.open ul li ul{width:auto;padding:0 0 .5em 1em;border:none;display:inline-block;position:relative}.topbar a{color:#00f}.topbar a.active,.topbar a:active{font-weight:700;text-decoration:underline}.menu-centered{margin:auto}@media (max-width:39.9375em){.menu-centered{width:190px}.menu-centered h2{font-size:100%}.menu-centered .language,.menu-centered .mode,.menu-centered .system{border-style:solid;border-width:1px;margin-bottom:.375em}.menu-centered .language li:not(:last-child) a,.menu-centered .mode li:not(:last-child) a,.menu-centered .system li:not(:last-child) a{border-style:solid;border-width:0 0 1px 0}.menu-centered .system a{width:63.33333333px}.menu-centered .language a,.menu-centered .mode a{width:190px}}@media (min-width:40em){.menu-centered{width:573px}.menu-centered h2{font-size:130%}.menu-centered a{font-size:80%}.menu-centered .mode,.menu-centered .system{border-width:0 1px 1px 1px}.menu-centered .language{border-width:1px 1px 1px 1px}.menu-centered .language,.menu-centered .mode,.menu-centered .system{border-style:solid}.menu-centered .language li:not(:last-child) a,.menu-centered .mode li:not(:last-child) a,.menu-centered .system li:not(:last-child) a{border-style:solid;border-width:0 1px 0 0}.menu-centered .language{margin:.375em 0 0 125px;width:322px}.menu-centered .language a{width:80px}}.menu-centered .header{border-width:3px;border-style:solid}.menu-centered .header h2{text-align:center;margin:.25em 0}.menu-centered .system a{width:190px}.menu-centered .language,.menu-centered .mode,.menu-centered .system{background:#fff}.menu-centered .language a,.menu-centered .mode a,.menu-centered .system a{padding:.25em .75em;text-align:center}.menu-centered .language a:hover span,.menu-centered .mode a:hover span,.menu-centered .system a:hover span{text-decoration:underline}@media print{.menu-centered .language a,.menu-centered .mode a,.menu-centered .system a{color:#a0a0a0}}.menu-centered .language a span.new,.menu-centered .mode a span.new,.menu-centered .system a span.new{text-decoration:none;color:#408040;position:relative;top:-.5em;font-size:60%}.menu-centered .language .is-active>a span,.menu-centered .mode .is-active>a span,.menu-centered .system .is-active>a span{font-weight:900;color:#ff0;text-decoration:underline}@media print{.menu-centered .language .is-active>a span,.menu-centered .mode .is-active>a span,.menu-centered .system .is-active>a span{border-width:2px 1px}}.menu-centered .language .is-active>a span.new,.menu-centered .mode .is-active>a span.new,.menu-centered .system .is-active>a span.new{text-decoration:none;color:#80ff80}.cle_links{margin:0}.cle_links div{padding:0}.cle_links div div{border:1px solid #444;border-radius:5px;margin:2px;padding:5px}.cle_links div div a{white-space:nowrap;color:inherit;font-weight:400}.cle_links div div a:hover{font-weight:700}.cle_links div div.rna{background:#e0e0ff;color:#33f}.cle_links div div.reu{background:#fff0f0;color:#d03333}.cle_links div div.rww{background:#f2fff2;color:#198019}.cle_links div div h3{display:block;width:100%;white-space:nowrap;margin:2px auto;font-weight:700;text-align:center!important}.cle_links div div ul{margin-bottom:.25em}.footer{text-align:center;margin:.5em;padding:0;border-style:solid;border-width:2px 0 0 0}.footer p{margin:0 0 1em 0;line-height:1.25em;font-size:70%}.footer p.preamble{margin:1em 0 0 0}.footer .credits{display:inline-block;width:auto;margin:.25em auto;border-radius:2px!important;border-collapse:collapse}.footer .credits th{text-align:center}.footer .credits td,.footer .credits th{font-size:80%;min-width:5em;white-space:nowrap;border:1px solid #000;line-height:1.2em;padding:0 .25em;margin:0}.footer .credits thead{text-align:center}.footer .credits thead th{background-color:silver;border-bottom-width:2px}.footer .credits tbody th{background-color:#d0d0d0;font-weight:400;width:8em}.footer .credits tbody td{background-color:#e8e8e8}label[for=seeklist_paper]{font-weight:700;display:inline-block;margin-right:1em}select#seeklist_paper{width:300px}table.seeklist{page-break-inside:avoid;page-break-before:auto;border-collapse:collapse;border:1px solid #000}table.seeklist thead tr.sl_1 td{background-color:#777!important}table.seeklist thead tr.sl_1 td div{color:#fff!important}table.seeklist thead tr.sl_1 td h2,table.seeklist thead tr.sl_1 td h3,table.seeklist thead tr.sl_1 td h4{color:#fff!important;font-weight:700;margin:0;font-size:100%}table.seeklist thead tr.sl_1 td h2 a,table.seeklist thead tr.sl_1 td h3 a,table.seeklist thead tr.sl_1 td h4 a{color:#fff}table.seeklist thead tr.sl_1 td h2 a:hover,table.seeklist thead tr.sl_1 td h3 a:hover,table.seeklist thead tr.sl_1 td h4 a:hover{background:#fff;color:#00f}table.seeklist thead tr.sl_2 td i{background-color:#e0e0e0!important;padding:0 .125em}table.seeklist thead td{border:1px solid #000;margin:0;padding:0 .25em}table.seeklist tbody td{border:1px solid #000}table.seeklist tbody td .head{padding:0 .25em!important}table.seeklist tbody td div.sl_d,table.seeklist tbody td div.sl_h{white-space:nowrap}table.seeklist tbody td div.sl_d span,table.seeklist tbody td div.sl_h span{font-family:"Courier New bold",Courier,monospace;white-space:nowrap;display:inline-block;width:5em;float:left}table.seeklist tbody td div.sl_d em,table.seeklist tbody td div.sl_h em{display:inline-block;float:right}table.seeklist tbody td div.sl_d+div.sl_h{margin-top:1.15em}table.seeklist tbody td div.sl_d{margin-left:.5em;line-height:1.15em}table.seeklist tbody td div.sl_d em{font-family:"Courier New bold",Courier,monospace;font-weight:700;font-style:normal}table.seeklist tbody td div.sl_d.inactive{font-style:italic!important;background-color:#e0e0e0!important}@media screen and (max-width:719px){.tabtext{display:none}}@media screen and (max-width:639px){.signals_container #wide{display:none}}@media screen and (min-width:640px) and (max-width:979px){.signals_container table tbody td.rowspan2,.signals_container table tbody th.rowspan2{border-bottom:1px solid transparent!important}.signals_container #narrow,.signals_container .l2{display:none}}@media screen and (min-width:980px){.signals_container #narrow,.signals_container .l2_alt{display:none}}.listeners_container tr.l2_alt td table{width:20em}.listeners_container tr.l2_alt td table tbody{border:none}table.responsive{padding:0;margin:.5em 0 1em 0;border-radius:5px}table.responsive tbody{border:1px solid #888}table.responsive tbody tr th{vertical-align:top;padding:0 .25em;line-height:1.5em;width:12em;text-align:right;border-right:1px solid #888}table.responsive tbody tr th b{background:#ffffa0;color:#00f;border:1px solid #b0b000;border-radius:2px}table.responsive tbody tr td{vertical-align:top;padding:0 0 0 .25em;line-height:1.5em;text-align:left!important}table.responsive tbody tr td b{background:#ffffa0;color:#00f;border:1px solid #b0b000;border-radius:2px}#sysinfo{text-align:center}#sysinfo table{border-collapse:collapse;border:0;width:934px;box-shadow:1px 2px 3px #ccc;margin:1em auto;text-align:left}#sysinfo table td,#sysinfo table th{border:1px solid #666;font-size:75%;vertical-align:baseline;padding:4px 5px}#sysinfo table th{text-align:center!important}#sysinfo table a{color:#00f}#sysinfo table .p{text-align:left}#sysinfo table .e{background-color:#ccf;width:300px;font-weight:700}#sysinfo table .h{background-color:#99c;font-weight:700}#sysinfo table .v{background-color:#ddd;max-width:300px;overflow-x:auto;word-wrap:break-word}#sysinfo table .v i{color:#999}#sysinfo h1{font-size:150%}#sysinfo h2{font-size:125%}#sysinfo hr{width:934px;background-color:#ccc;border:0;height:1px}#sysinfo img{float:right;border:0}.admin_tools{margin:0 0 .5em 2em}.admin_tools li{margin:0 0 .5em 0;font-weight:700}.admin_tools li li{list-style:lower-alpha;margin:0 0 .25em;font-weight:400}.admin_tools li li a.button{line-height:1.25em;height:1.55em;padding:.125em .25em;margin:0}.admin_tools li li input{display:inline;width:10em;line-height:1.25em;height:1.55em;padding:.125em .25em;margin:0 0 0 .5em}.admin_tools .ip-examples{font-size:80%;margin:0 0 0 3em}.admin_tools .ip-examples span{color:#00f}.admin_tools .ip-examples span:hover{text-decoration:underline;cursor:pointer}.changelog{margin:0 0 .5em 5em}.changelog li{margin:0 0 .5em 0}.changelog li span{padding:0 .25em;border:1px solid #dd0;background-color:#ffc}.changelog li span.new{color:#408040;border-color:#408040;background-color:#a0ffa0;font-weight:700;position:relative;top:-1em;font-size:50%}.main .help{border:2px solid #888;padding:.25em;background:#fff;margin-bottom:1em}.help{border:1px solid #888;background:#fff}.help p{margin:.5em 0;font-size:100%}.help h1{margin:.125em;font-size:120%;font-weight:400}.help a{color:#04c;text-decoration:none;font-weight:700}.help a:hover{text-decoration:underline}.help .links{text-align:center;margin:1em 0;font-size:70%}.help .zone{display:block;margin:.5em 0;padding:.25em;font-weight:700;border:1px solid #888}.help .zone:after{content:'';display:table;clear:both;height:1px;overflow:hidden}.help .header{background:#707070;color:#fff;padding:.2em}.help .header h2{float:left;margin:0;font-size:small;color:#fff!important}.help .header .links{float:right;margin:0}.help .header .links a{color:#ffff80;font-weight:700;text-decoration:none}.help .header .links a:hover{text-decoration:underline}.help .header:after{content:'';display:table;clear:both}.help ol{background:#fff;color:#000;margin:0}.help li{list-style:none;font-size:80%;font-weight:400}.help li span.abbr{float:right;font-weight:700}.help li a:hover,.help li a:hover *{background:#ff0;text-decoration:underline}.help .body{border:1px solid #707070;background:#fff;padding:.25em;border-top:none}.help img.map{width:100%}.help div.map{margin:0 0 1em 0}#main .help .header h3{font-size:120%;float:left}.body.tool{background-color:#f0f0f0;padding:.25em}#frm_dgps textarea{font-family:"Courier New",Courier,monospace;font-size:80%}#frm_dgps #dgps_ref{height:1.5em;width:3em;display:inline}#frm_dgps label{padding-right:1em;font-weight:700;font-size:100%}#frm_dgps input[type=button],#frm_dgps input[type=reset],#frm_dgps input[type=submit]{margin:0;padding:.25em 1em}#frm_dgps textarea:read-only{background-color:#fff;font-weight:700;color:#000}#frm_coordinates label{display:inline-block;text-align:right;padding:0 .5em;font-weight:700;font-size:100%;white-space:nowrap;width:11.5em}#frm_coordinates input[type=text]{height:1.5em;width:8em;display:inline;margin:0}#frm_coordinates input[type=button],#frm_coordinates input[type=reset],#frm_coordinates input[type=submit]{margin:0;padding:.3em 1em}#frm_coordinates div div{display:inline-block;padding:0 0 0 .5em;margin:.25em 0}#frm_coordinates div span{display:inline-block;padding:0;margin:0}#frm_coordinates .r3 span{margin-left:19.85em}@media (max-width:55em){#frm_coordinates{border-bottom:1px solid #ccc}#frm_coordinates div:last-child{border-bottom:none}#frm_coordinates div{padding:.25em 0 .5em 0}#frm_coordinates div label{padding:0;text-align:left}#frm_coordinates div input[type=text]{display:block}#frm_coordinates div div{padding:0;border:none}#frm_coordinates div.r3 span{margin-left:11.5em}}@media (max-width:39em){#frm_coordinates div div{display:block}#frm_coordinates div div input[type=button],#frm_coordinates div div input[type=reset],#frm_coordinates div div input[type=submit]{margin:.5em 0 0 0}#frm_coordinates div.r3 span{margin-left:0}}#frm_navtex div{width:100%;margin:.25em 0;padding:0}#frm_navtex div input{margin:0;padding:.25em .5em;min-width:6em;text-transform:uppercase}#frm_navtex div textarea{margin:0;padding:.25em 1em}#frm_navtex div p{font-weight:700;margin:0;text-align:center}#sunrise #sunrise_result{font-family:"Courier New",Courier,monospace;font-size:10pt;height:18em}#sunrise #credits{width:30em;margin:auto;text-align:center;line-height:1.25em}#sunrise #credits img{float:left;margin:0 .25em .5em 0;border:1px solid #000}@media (min-width:40em){.halfwidth{width:48%;float:left;margin-right:2%}.fullwidth{width:100%;float:none;clear:both}}#lightning_zoom{display:inline;border:0!important;border-radius:0!important;padding:0!important;margin:0!important;height:1em!important;text-align:right;border-image-width:0!important;width:1.25em;color:#000;box-shadow:none!important;background:0 0!important}#lightning_map{border:1px solid #000;background:#ccc}body{font-family:Arial,Helvetica,sans-serif}.txt_c{text-align:center}.txt_r{text-align:right}.monospace{font-family:"Courier New bold",Courier,monospace}.clipped{max-width:100px;overflow:hidden;text-overflow:ellipsis}.txt_vertical{vertical-align:bottom;text-align:center}.txt_vertical div{-ms-writing-mode:tb-rl;-webkit-writing-mode:vertical-rl;writing-mode:vertical-rl;white-space:nowrap;padding-bottom:.5em;display:table;border-spacing:0}#lastError,#lastMessage{padding:.5em;margin:.5em 0;display:inline-block}#lastError{border:1px solid red;background:#ffe0e0;color:red}#lastMessage{border:1px solid green;background:#e0ffe0;color:green}pre{border:1px dashed #ccc;background:#eee;padding:.25em 1em!important;margin:.5em!important;font-size:8pt!important;display:inline-block}a.hover:hover{background-color:#80ff80}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.main{padding:.5em}.main p{margin:.25em 0 .5em 0;font-size:100%}.main h1{font-size:120%;font-weight:700;margin:.125em 0}.main h2{font-size:120%;font-weight:700;margin:.5em 0 .125em 0}.main h2+small{display:inline-block;float:left;margin:.5em 1em .5em 1em}.main h3{font-size:105%;font-weight:700;margin:.125em 0;display:inline-block}.main h4{font-size:90%;font-weight:700;margin:.125em 0;display:inline-block}.main a{color:#0033a0;text-decoration:none;font-weight:700}.main a:hover{text-decoration:underline}.main .links{text-align:center;margin:1em 0;font-size:70%}.main .links_left{text-align:left;margin:1em 0;font-size:70%}.main .zone{display:block;margin:.5em 0;font-weight:700;padding:0}.main .zone:after{content:'';display:table;clear:both;height:1px;overflow:hidden}.main .zone ol{background:#fff;color:#000;margin:0}.main .zone li{list-style:none;font-size:80%;font-weight:400}.main .zone li:hover{background:#ff0}.main .zone li span.abbr{float:right;font-weight:700}.main .header{background:#707070;color:#fff;padding:.2em}.main .header:after{content:'';display:table;clear:both}.main .header h2{float:left;margin:0;font-size:small;color:#fff!important}.main .header .links{float:right;margin:0}.main .header .links a{color:#ffff80;font-weight:700;text-decoration:none}.main .header .links a:hover{text-decoration:underline}.main .body{border:1px solid #707070;border-top:none}.main img.map{width:100%}.main div.map{margin:0 0 1em 0}.main ul li{line-height:1.25em}.main ul.refs li strong{display:inline-block;width:16em}.main .listeners_container,.main .signals_container{background-color:#fff;page-break-before:always}.main .listeners_container p.no-results,.main .signals_container p.no-results{margin:0;font-size:12pt}@media screen{.main .listeners_container,.main .signals_container{border:1px solid #888;border-radius:5px;padding:.25em}}.main .listeners_container h2,.main .signals_container h2{font-weight:700;display:block;margin:0 .25em;float:none}.main .listeners_container h3,.main .signals_container h3{font-weight:700;display:block;margin:0 .25em;float:none}.controlPanel{display:inline-block}.controlPanel .header{padding:.25em;white-space:nowrap;text-align:center;border-radius:1em 1em 0 0;font-size:80%;font-weight:700;box-shadow:#777 2px 2px 5px}.controlPanel .header div{border-radius:3px;border:1px solid #000;color:#000;background:#ffffa0;padding:0 .5em}.controlPanel .header div.visit{float:right;margin-right:.5em}.controlPanel .header div.export{float:left;margin-left:.5em}.controlPanel .header div a{color:#00f}.controlPanel .content{border:1px solid #cacaca;box-shadow:#777 2px 2px 5px;margin:0 0 .5em 0;padding:.25em}.fullwidth .controlPanel{width:100%}#form_limit,#form_page{width:9em;float:left;margin:0 .5em 0 0}label[for=form_limit]{float:left;min-width:4em}#form_next,#form_prev{float:left;margin:0 .5em 0 0;clear:none;font-size:.4rem!important;line-height:.6em}button.tiny{font-size:.4rem!important;line-height:.6em}.section_toggle{font-size:70%;position:relative;top:-.5em;left:.5em}.section_toggle *{display:none}.section_toggle :hover{color:#00f;text-decoration:underline;cursor:pointer}#form button,.cleForm button{margin:.25em 50%;padding:0}#form hr,.cleForm hr{margin:1.25em 0 .5em 0;border-bottom:1px solid #a0a0a0}#form fieldset,.cleForm fieldset{margin:0;padding:0 0 .25em 0}#form fieldset legend,.cleForm fieldset legend{margin:0;padding:0;text-align:center;width:100%;font-size:100%}#form fieldset legend.line,.cleForm fieldset legend.line{border-top:1px solid #ccc;padding:.25em 0 0 0}#form fieldset legend.toggle,.cleForm fieldset legend.toggle{cursor:pointer}#form fieldset legend.toggle:hover,.cleForm fieldset legend.toggle:hover{color:navy}#form fieldset legend.sr-only,.cleForm fieldset legend.sr-only{width:auto}#form fieldset legend span,.cleForm fieldset legend span{float:none;margin:0}#form fieldset#group_,.cleForm fieldset#group_{padding:0;margin:0;text-align:center}#form fieldset#group_ div,.cleForm fieldset#group_ div{display:inline-block}#form fieldset#group_ button,.cleForm fieldset#group_ button{margin:.25em 0;float:left;clear:none}#form fieldset.actionButtons,.cleForm fieldset.actionButtons{clear:both;text-align:center}#form fieldset.actionButtons button,.cleForm fieldset.actionButtons button{margin:.5em 0;width:6em}#form #form_next,#form #form_prev,.cleForm #form_next,.cleForm #form_prev{float:left;line-height:1.75em;margin:0 0 0 .5em;padding:.25em;width:3em;text-align:center;font-size:55%!important;font-weight:700}#form #form_page,.cleForm #form_page{float:left;margin:0 0 0 .5em}#form #form_paging_status,.cleForm #form_paging_status{display:inline-block;width:8em;padding:0;line-height:1.25em;margin:0 0 0 .5em}#form #form_type div,.cleForm #form_type div{padding:0 0 0 2px;margin:1px 0 0 0}#form div,.cleForm div{clear:both}#form div label,.cleForm div label{line-height:1.8em;text-align:left;font-size:90%;float:left;width:120px;font-weight:700;padding:0}#form div input[type=number],#form div input[type=password],#form div input[type=text],#form div select,#form div textarea,.cleForm div input[type=number],.cleForm div input[type=password],.cleForm div input[type=text],.cleForm div select,.cleForm div textarea{margin:0;border-radius:0;height:1.75em;padding:0 .25em;font-size:80%;float:left}#form div select,.cleForm div select{-webkit-appearance:menulist;-moz-appearance:menulist;appearance:menulist}#form div select.multiple,.cleForm div select.multiple{-webkit-appearance:none;-moz-appearance:none;appearance:none}#form div textarea,.cleForm div textarea{margin:0 0 .25em 0}#form div button,.cleForm div button{float:left;clear:none!important;padding:.25em 0;width:8em}#form div p,.cleForm div p{margin:0;border-radius:0;height:1.5em;font-size:80%;float:right;text-align:right}#form div div,.cleForm div div{clear:none;height:1.5em;float:left;display:inline-block}#form div div label,.cleForm div div label{float:none;width:auto;font-size:80%;font-weight:400;margin:0 .1em;padding:0 .1em;line-height:1.5em}#form div ul,.cleForm div ul{display:none}.listener_list{width:570px}.listener_list input[type=text],.listener_list select{width:435px}.listener_list #form_timezone-button{width:435px}.addLogFor a{font-weight:400}.addLogFor a.pri{font-weight:700}.logon #form{width:300px}.logon #form label{width:150px!important}.logon #form input[type=password],.logon #form input[type=text]{width:140px}.logon #form #form_submit{margin:0 30%;width:10em}.logsession_loader{position:relative;border:1px solid #000;background:#eee}.logsession_loader h2{position:absolute;top:50%;left:50%;font-size:200%;margin:0;transform:translate(-50%,-50%)}table.logsessions tbody tr{cursor:pointer}table.logsessions tbody tr.selected{color:#080;font-weight:700}table.logsessions tbody tr.selected td{background:#ffffa0}.listener_view #form label{width:20%}.listener_view #form label[for=form_timezone-button],.listener_view #form label[for=form_timezone]{width:10%;min-width:auto;text-align:right;padding-right:.75em}.listener_view #form input[type=text],.listener_view #form select,.listener_view #form textarea{width:75%;padding:.125em .25em;margin:0 0 .25em 0}.listener_view #form textarea{height:6em}.listener_view #form #form_timezone-button{width:55%}.listener_view #form div#form_gsq_suffix{padding-left:.25em;float:left;width:5%;font-size:80%}.listener_stats div.stats{clear:both;border:1px solid #ccc;background:#fff;padding:.25em .25em 0 .25em;margin:.25em 0;width:18em}.listener_stats div.signal_stat{margin:0;padding:0;display:inline-block;width:20em;line-height:initial}.listener_stats div.signal_stat label{font-weight:700;width:15em;margin:0;padding:.25em;border:1px solid #ccc;float:left;line-height:initial}.listener_stats div.signal_stat div{display:inline-block;float:left;margin:0 .25em;padding:.25em;width:4em;text-align:right;line-height:initial}.signal_list{width:570px}.signal_list fieldset.section{display:inline-block;width:560px;float:left}.signal_list input[type=text],.signal_list select{width:435px}.signal_list #form_sortby{width:335px}.signal_list #form_za{float:left;margin:.25em .5em;line-height:1.5em}.signal_list label[for=form_za]{width:40px!important;text-align:right!important;float:left}.signal_list #form_show{width:9em}.signal_list label[for=form_paper]{width:auto!important;margin:0 .5em}.signal_list #form_paper{width:230px;float:right}.signal_list #form_personalise{width:285px}.signal_list label[for=form_offsets]{width:auto!important;margin:0 .5em}.signal_list #form_offsets{width:85px;float:right}.signal_list #form_call{width:60px}.signal_list #form_khz_1,.signal_list #form_khz_2{width:50px}.signal_list #form_channels{width:90px}.signal_list #form_recently{width:95px}.signal_list label[for=form_within]{width:75px!important;padding-left:1em!important;padding-right:.25em!important}.signal_list #form_within{width:95px}.signal_list label[for=form_active]{width:75px!important;padding-left:1em!important;padding-right:.25em!important}.signal_list #form_active{width:95px}.signal_list #form_listener,.signal_list #form_personalise{overflow:auto;margin:0 0 .25em 0}.signal_list #form_listener option.all,.signal_list #form_personalise option.all{font-weight:700;font-style:italic;text-align:center;background:green;color:#fff}.signal_list #form_listener option.primaryQth,.signal_list #form_personalise option.primaryQth{font-weight:700}.signal_list #form_listener option.secondaryQth,.signal_list #form_personalise option.secondaryQth{color:#888}.signal_list #form_listener{font-family:monospace,monospace;font-size:8pt;height:160px}.signal_list label[for=form_listener]{line-height:1.8em;text-align:left;font-size:90%!important;float:left;width:120px;font-weight:700!important;padding:0!important;margin:0!important}.signal_list #form_listener_invert{width:120px;padding:0 0 0 .25em!important;height:auto!important}.signal_list #form_listener_invert label{padding:0 0 0 .25em!important}.signal_list #listener_selection_help{width:100px!important;margin:.5em 0 0 1em;font-size:80%!important;font-style:italic}.signal_list label[for=form_heard_in]{line-height:1.8em;text-align:left;font-size:90%!important;font-weight:700!important;padding:0!important;margin:0!important}.signal_list #heard_in_label{width:120px}.signal_list #form_heard_in{width:435px;text-transform:uppercase;height:4em}.signal_list #form_heard_in_mod{display:inline-block}.signal_list #form_heard_in_mod div{padding:0 0 0 .5em}.signal_list #form_logged_date_1,.signal_list #form_logged_date_2,.signal_list #form_logged_first_1,.signal_list #form_logged_first_2,.signal_list #form_logged_last_1,.signal_list #form_logged_last_2{width:95px;padding:0 1.75em 0 .25em!important;background:#fff url(../../../image/calendar.png) no-repeat;background-size:auto 100%;background-position:right}.signal_list label[for=form_khz_1]{width:auto!important;margin:0 .25em 0 1em}.signal_list label[for=form_channels]{width:auto!important;margin:0 .25em 0 1em}.signal_list #form_sp_itu_clause{width:60px}.signal_list #form_range_gsq{width:60px}.signal_list #form_range_max,.signal_list #form_range_min{width:50px}.signal_list label[for=form_range_min]{width:auto!important;margin:0 .5em 0 30px}.signal_list #form_range_units{display:inline-block;width:auto!important;margin:0 .5em 0 30px}.signal_list span{display:inline-block;margin:0 .25em;float:left}#form_timezone-button{padding:.125em;border-radius:5px;background:#fff;margin:-.125em 0 0 -.35em}#form_timezone-button .ui-selectmenu-text{font-size:75%;white-space:pre;font-family:"Courier New bold",Courier,monospace;color:#000}#form_timezone-menu{height:6em;overflow:-moz-scrollbars-vertical}#form_timezone-menu .ui-menu-item{padding:.125em;font-size:75%;white-space:pre;font-family:"Courier New bold",Courier,monospace;line-height:1em}#form_timezone-menu .ui-menu-item .ui-menu-item-wrapper{padding:0;line-height:1em}fieldset#form_range_units legend,fieldset#form_type legend{line-height:1.8em;display:block;font-size:90%;float:left;font-weight:700;padding:0 .5em 0 0;color:#000}fieldset#form_type legend{text-align:left;width:120px}fieldset#form_range_units legend{text-align:right;width:50px}fieldset#form_range_units div label{margin:0 .25em}.signal_view #form label{width:25%;min-width:120px}.signal_view #form label[for=form_firstHeard],.signal_view #form label[for=form_format],.signal_view #form label[for=form_itu],.signal_view #form label[for=form_khz],.signal_view #form label[for=form_lastHeard],.signal_view #form label[for=form_lat],.signal_view #form label[for=form_lon],.signal_view #form label[for=form_pwr],.signal_view #form label[for=form_sec],.signal_view #form label[for=form_type],.signal_view #form label[for=form_usb]{min-width:auto;text-align:right;padding-right:.25em}.signal_view #form label[for=form_khz],.signal_view #form label[for=form_pwr],.signal_view #form label[for=form_type]{width:10%}.signal_view #form label[for=form_itu],.signal_view #form label[for=form_lat],.signal_view #form label[for=form_lon]{width:15%}.signal_view #form label[for=form_usb]{width:9%}.signal_view #form label[for=form_sec]{width:13%}.signal_view #form label[for=form_format]{width:11%}.signal_view #form label[for=form_firstHeard],.signal_view #form label[for=form_lastHeard]{width:18%}.signal_view #form label b{font-weight:400;background:#ffffa0;padding:1px;border:1px solid #b0b000;border-radius:2px}.signal_view #form input[type=text],.signal_view #form select,.signal_view #form textarea{width:75%;padding:.125em .25em;margin:0 0 .25em 0}.signal_view #form input[type=text]#form_call,.signal_view #form input[type=text]#form_khz,.signal_view #form input[type=text]#form_pwr,.signal_view #form input[type=text]#form_type,.signal_view #form select#form_call,.signal_view #form select#form_khz,.signal_view #form select#form_pwr,.signal_view #form select#form_type,.signal_view #form textarea#form_call,.signal_view #form textarea#form_khz,.signal_view #form textarea#form_pwr,.signal_view #form textarea#form_type{width:10%}.signal_view #form input[type=text]#form_sp,.signal_view #form select#form_sp,.signal_view #form textarea#form_sp{width:30%}.signal_view #form input[type=text]#form_itu,.signal_view #form select#form_itu,.signal_view #form textarea#form_itu{width:20%}.signal_view #form input[type=text]#form_gsq,.signal_view #form input[type=text]#form_lat,.signal_view #form input[type=text]#form_lon,.signal_view #form select#form_gsq,.signal_view #form select#form_lat,.signal_view #form select#form_lon,.signal_view #form textarea#form_gsq,.signal_view #form textarea#form_lat,.signal_view #form textarea#form_lon{width:10%!important}.signal_view #form input[type=text]#form_lsb,.signal_view #form input[type=text]#form_sec,.signal_view #form input[type=text]#form_usb,.signal_view #form select#form_lsb,.signal_view #form select#form_sec,.signal_view #form select#form_usb,.signal_view #form textarea#form_lsb,.signal_view #form textarea#form_sec,.signal_view #form textarea#form_usb{width:7%}.signal_view #form input[type=text]#form_format,.signal_view #form select#form_format,.signal_view #form textarea#form_format{width:16%}.signal_view #form input[type=text]#form_active,.signal_view #form select#form_active,.signal_view #form textarea#form_active{width:13%}.signal_view #form input[type=text]#form_firstHeard,.signal_view #form input[type=text]#form_lastHeard,.signal_view #form select#form_firstHeard,.signal_view #form select#form_lastHeard,.signal_view #form textarea#form_firstHeard,.signal_view #form textarea#form_lastHeard{width:13%}.signal_view #form div#form_gsq_suffix,.signal_view #form div#form_itu_suffix,.signal_view #form div#form_sp_suffix{padding-left:.25em;float:left;width:5%;font-size:80%}.signal_view #form div#form_pwr_suffix,.signal_view #form div#form_sec_suffix{padding-left:.25em;float:left;width:5%;font-size:80%}.signal_view #form div#heardIn{width:75%;min-height:1.75em;font-size:80%;height:auto;border:1px solid #cacaca;box-shadow:inset 0 1px 2px rgba(10,10,10,.1);background:#e6e6e6;padding:.25em;margin-bottom:.25em}.signal_view #form div#heardIn a{font-weight:400}.signal_view #form div#heardIn a:hover{color:#00f}.signal_view #form div#heardIn b{background:#ffffa0;padding:1px;border:1px solid #b0b000;border-radius:2px}.signal_view #form div#heardIn #heardInKey{font-weight:700;white-space:nowrap;float:right;border:1px solid #aaa;border-radius:3px;padding:0 .25em;background:#ccc}.signal_view #form fieldset{margin-top:.75em}.user .role-a,.user .role-aa,.user .role-cle,.user .role-ma,.user .role-u{padding:0 .25em;border-radius:3px;white-space:nowrap}.user .role-ma{border:1px solid red;background:#fcc}.user .role-a{border:1px solid #00f;background:#eef}.user .role-aa{border:1px solid #0aa;background:#eff}.user .role-cle{border:1px solid #880;background:#ff8}.user .role-u{border:1px solid #080;background:#afa}.user_view label{display:inline-block;width:10em}.user_view input{display:inline-block;width:20em}.listener_weather #form fieldset#group_weather_report_details div *,.signal_weather #form fieldset#group_weather_report_details div *{line-height:1.8em;padding:0;margin:0}.listener_weather #form fieldset#group_weather_report_details div label,.signal_weather #form fieldset#group_weather_report_details div label{width:auto;line-height:unset;margin:0 .5em}.listener_weather #form div,.signal_weather #form div{display:inline-block}.listener_weather #form div button,.signal_weather #form div button{width:8.5em}.listener_weather #form_icao,.signal_weather #form_icao{width:20em;font-size:10pt;font-family:'Courier New',monospace;font-weight:700}.listener_weather #form_hours,.signal_weather #form_hours{width:3.5em;text-align:right}.listener_weather #weather,.signal_weather #weather{height:25em;font-size:10pt;font-family:'Courier New',monospace}.listener_locator_map #form{margin:0 0 0 1em;border:1px solid #000;border-radius:5px;padding:.5em .5em 0 .5em;background-color:#fff}.listener_locator_map #form label{width:1em}.listener_locator_map #form button{margin:0;width:4em;float:none}.listener_locator_map #form button#x_add,.listener_locator_map #form button#x_sub,.listener_locator_map #form button#y_add,.listener_locator_map #form button#y_sub{height:1.5em;width:1.5em}.listener_locator_map #form table tbody{border:1px solid #aaa}.listener_locator_map #form table tbody tr{background-color:#f0f0f0!important}.listener_locator_map #form table tbody th{padding:0;margin:0}.logUpload #presets{font-size:80%}.logUpload #format_errors{padding:0 .25em;margin:.25em 0;width:100%;font-family:"Courier New",Courier,monospace;white-space:pre;background-color:#aaa;color:#fff;font-weight:700;font-size:13px;float:left}.logUpload #tokensHelp{display:none}.logUpload #tokensHelpLink{float:right;font-size:small}.logUpload .tokenErrors th{text-align:left}.logUpload .tokenErrors .unknown{color:red;font-weight:700;cursor:pointer}.logUpload .tokenErrors .duplicate{color:#c000c0;font-weight:700;cursor:pointer}.logUpload #form.formatErrors #format #form_format{background-color:#804040}.logUpload #form #format{display:flex;align-items:stretch;flex-flow:row nowrap;justify-content:space-between;margin-bottom:3px}.logUpload #form #format #form_format{width:100%;font-family:"Courier New",Courier,monospace;background-color:#888;color:#fff;font-weight:700;font-size:13px;float:left}.logUpload #form #format #formatOld{display:none}.logUpload #form #format #form_saveFormat{min-width:4em;width:4em;margin:0 0 0 .5em;float:right}.logUpload #form #dateFields legend{width:auto;color:#000;text-align:left;float:left;margin:0 1em 0 0}.logUpload #form #dateFields div{clear:none;float:left;display:inline}.logUpload #form #dateFields div label{width:4em;text-align:right;margin:0 .25em 0 .5em}.logUpload #form #dateFields div input{width:4em}.logUpload #form #dateFields div input#form_DD,.logUpload #form #dateFields div input#form_MM{width:2.5em}.logUpload #form #form_logs{width:100%;height:420px;background-image:url(../../../image/log_grid.png);background-position-x:4px;background-size:78px;font-family:"Courier New",Courier,monospace;font-size:13px;white-space:pre;overflow-x:hidden;overflow-y:scroll}.toolTipDetails{max-width:800px;overflow-x:auto}.toolTipDetails #tokensHelpClose{float:right;font-size:small}.toolTipDetails label{margin:.25em 0;font-weight:700}.toolTipDetails p{margin:0 0 .5em 0;line-height:1.25em;white-space:nowrap}.toolTipDetails b{color:#00f;background:#e0e0ff;font-family:"Courier New",Courier,monospace;cursor:pointer}.toolTipDetails b:hover{text-decoration:underline}.toolTipDetails span{background:#eee;padding:0 .25em;border:1px dashed #888;border-radius:3px;white-space:pre;font-weight:700;font-family:"Courier New",Courier,monospace}div.scroll div table.parse.results tbody tr{cursor:pointer}.results.stats{width:14em;margin-bottom:1em}.results.stats td+td{width:4em}.results.parse tbody tr{background:#fff}.results.parse tbody tr.unknown{background:#faa}.results.parse tbody tr.question{background:#ffddca}.results.parse tbody tr.question.inactive{background:#e6cfc3}.results.parse tbody tr.question.inactive td{color:#444}.results.parse tbody tr.choice{background:#ffd8d8}.results.parse tbody tr.choice.start{border-top:3px solid red}.results.parse tbody tr.choice.end{border-bottom:3px solid red}.results.parse tbody tr td i{color:#080;font-weight:700}.results.parse tbody tr td i.check{background:#ffe0e0;border:1px solid red;color:#f60}.results.parse tbody tr th{background:#95de95}.results.parse tbody tr th.warning{background:#ffb080}.results.parse tbody tr th.error{background:#ffa0a0}.results.parse tbody tr th.error a.add{background:#f44;color:#fff!important;border:1px solid red}.results.parse tbody tr th.jump{vertical-align:middle;line-height:1em;padding:0 .25em;background:#fff}.results.parse tbody tr th.jump .up:after{content:'\25B3'}.results.parse tbody tr th.jump .up:hover:after{content:'\25B2'}.results.parse tbody tr th.jump .down:after{content:'\25BD'}.results.parse tbody tr th.jump .down:hover:after{content:'\25BC'}.check-links{float:right;font-size:small;color:#444}.check-links #check_good,.check-links #uncheck_good{background:#95de95}.check-links #check_warning,.check-links #uncheck_warning{background:#ffb080}.check-links #check_choice,.check-links #uncheck_choice{background:#ffa0a0}.log_edit #form label{width:20%}.log_edit #form label[for=form_daytime],.log_edit #form label[for=form_dxMiles],.log_edit #form label[for=form_lsbApprox],.log_edit #form label[for=form_sec],.log_edit #form label[for=form_time],.log_edit #form label[for=form_usbApprox]{width:auto;min-width:auto;text-align:right;padding:0 .5em 0 2em}.log_edit #form label[for=form_dxMiles]{width:10em}.log_edit #form label[for=form_time]{width:7em}.log_edit #form label[for=form_daytime]{width:10em}.log_edit #form input[type=text],.log_edit #form select{width:75%;padding:.125em .25em;margin:0 0 .25em 0}.log_edit #form input[type=text]#form_date,.log_edit #form select#form_date{width:95px;padding:0 1.75em 0 .25em!important;background:#fff url(../../../image/calendar.png) no-repeat;background-size:auto 100%;background-position:right}.log_edit #form input[type=text]#form_time,.log_edit #form select#form_time{text-align:right;width:3em}.log_edit #form input[type=text]#form_format,.log_edit #form select#form_format{width:23em}.log_edit #form input[type=text]#form_dxKm,.log_edit #form input[type=text]#form_dxMiles,.log_edit #form input[type=text]#form_lsb,.log_edit #form input[type=text]#form_sec,.log_edit #form input[type=text]#form_usb,.log_edit #form select#form_dxKm,.log_edit #form select#form_dxMiles,.log_edit #form select#form_lsb,.log_edit #form select#form_sec,.log_edit #form select#form_usb{text-align:right;width:4em}.log_edit #form select#form_listenerId,.log_edit #form select#form_signalId{margin:0 0 .5em 0;font-family:monospace;height:12em}.log_edit #form select#form_listenerId option.primaryQth,.log_edit #form select#form_signalId option.primaryQth{font-weight:700}.log_edit #form select#form_listenerId option.secondaryQth,.log_edit #form select#form_signalId option.secondaryQth{padding-left:1.5em;color:#888}.log_edit #form select#form_daytime{background:#e6e6e7;cursor:not-allowed;width:6em}.cle_editor label{display:inline-block;font-weight:700;width:10em}.cle_editor input,.cle_editor textarea{display:inline-block}.cle_editor #form_cle{width:3em}.cle_editor #form_dateTimespan,.cle_editor #form_scope{width:70em}.cle_editor #form_dateEnd,.cle_editor #form_dateStart{width:95px;padding:0 1.75em 0 .25em!important;background:#fff url(../../../image/calendar.png) no-repeat;background-size:auto 100%;background-position:right}.cle_editor table{border-collapse:collapse}.cle_editor table tr{background:#fff}.cle_editor table tr td{text-align:right}.cle_editor table tr th.left{text-align:left}.cle_editor table tr td,.cle_editor table tr th{padding:0 .25em;margin:0;border:1px solid #aaa}.cle_editor table tr td input,.cle_editor table tr th input{padding:.25em;height:1.25em;line-height:1.25em;margin:0}.cle_editor table tr td #form_europeRange1Channels,.cle_editor table tr td #form_europeRange2Channels,.cle_editor table tr td #form_worldRange1Channels,.cle_editor table tr td #form_worldRange2Channels,.cle_editor table tr th #form_europeRange1Channels,.cle_editor table tr th #form_europeRange2Channels,.cle_editor table tr th #form_worldRange1Channels,.cle_editor table tr th #form_worldRange2Channels{width:8.175em}.cle_editor table tr td #form_europeRange1High,.cle_editor table tr td #form_europeRange1Low,.cle_editor table tr td #form_europeRange2High,.cle_editor table tr td #form_europeRange2Low,.cle_editor table tr td #form_worldRange1High,.cle_editor table tr td #form_worldRange1Low,.cle_editor table tr td #form_worldRange2High,.cle_editor table tr td #form_worldRange2Low,.cle_editor table tr th #form_europeRange1High,.cle_editor table tr th #form_europeRange1Low,.cle_editor table tr th #form_europeRange2High,.cle_editor table tr th #form_europeRange2Low,.cle_editor table tr th #form_worldRange1High,.cle_editor table tr th #form_worldRange1Low,.cle_editor table tr th #form_worldRange2High,.cle_editor table tr th #form_worldRange2Low{width:6em;text-align:right}.cle_editor table tr input[type=checkbox]{height:20px;line-height:1.25em;padding:0;margin:0 .25em .125em .25em;vertical-align:middle}.cle_editor table tr label{border:1px solid #aaa;border-radius:3px;height:20px;line-height:1.25em;text-align:left;width:9.375em;margin:0 0 .25em 0;vertical-align:middle}a.add,a.close,a.delete,a.merge{display:block;font-style:normal;font-size:80%;margin:.25em;padding:0;line-height:1.5em;width:1.5em;text-align:center;border-radius:3px}a.add{background:#080;color:#fff!important;border:1px solid #040}a.add:hover{background:#0a0}a.close,a.delete{background:#c00;color:#fff!important;border:1px solid #800}a.close:hover,a.delete:hover{background:red}a.merge{background:#ffa000;color:#fff!important;border:1px solid #a06000}a.merge:hover{background:#ffc040}#lastError a.close{float:right;margin:0 0 0 .5em}#lastMessage a.close{float:right;margin:0 0 0 .5em;background:#080;color:#fff!important;border:1px solid #040}#lastMessage a.close:hover{background:#0a0}.results.listener tbody tr{background:#fff!important}.results.short thead tr th,.signal_rx_map.short thead tr th{height:3em!important}.results.very-short thead tr th{height:1.75em!important}.results .award_qth{white-space:nowrap;max-width:10em;overflow:hidden;text-overflow:ellipsis}.results .cart{width:1.5em;text-align:right}.results .num{text-align:right}.results .unqualified{color:#888}.results.award-signals div{border-radius:3px;margin:1px 0 1px 2px;font-size:80%;padding:2px;width:10em;border:1px solid #80b080;background:#e0ffe0;display:inline-block}.results.award-signals div a{color:#080}.results.award-signals div a:hover{text-decoration:none;color:#00f}.results.award-signals div.required{border-width:3px}.results.award-signals .unqualified div{border:1px dashed #a66;background:#ffe0e0}.results.award-signals .unqualified div a{color:#800}.results.award-signals .unqualified div a:hover{text-decoration:none;color:#00f}.results.award-signals .unqualified div.required{border-width:3px}.signal_rx_map,.signal_rx_map *{padding:0;margin:0;border:0;vertical-align:top;background:0 0}.signal_rx_map #map,.signal_rx_map * #map{position:relative;top:0;left:0}.signal_rx_map #rx_map,.signal_rx_map * #rx_map{position:relative}.signal_rx_map #point_here,.signal_rx_map * #point_here{z-index:100;position:absolute;display:none}div.scroll{padding:0;margin:0;display:flex;flex-direction:column}div.scroll div{height:100%;overflow:auto}div.scroll div table.results{border-top:2px solid grey;border-bottom:1px solid grey;border-right:1px solid grey;background:#fff}div.scroll div table.results thead th{position:sticky;top:-1px;border-top:none;border-bottom:none}div.scroll div table.results tbody tr:hover,div.scroll div table.results tbody tr:hover td{background:#ff0!important}div.scroll div table.results img{margin:.5em .25em 0 0}.results{margin:0;border-collapse:collapse}.results thead th{height:7em!important;max-height:7em!important;background:#686868;color:#fff;border:1px solid grey;vertical-align:bottom;font-size:9pt;padding:.25em}.results thead th.hidden{display:none}.results thead th.sort{border-bottom:3px solid #a0a0a0}.results thead th.nosort{background:green;border-bottom:3px solid #006000}.results thead th.sort:hover,.results thead th.sorted{border-bottom:3px solid #fcc247!important;background:#665d4b;cursor:pointer}.results thead th.sorted{color:#ffe4b3}.results thead th b{background:#ffffa0;color:#00f;border:1px solid #b0b000;border-radius:2px}.results tbody th{padding:.125em .25em;vertical-align:top;background:#95de95;color:green;border:1px solid grey}.results tbody th.no-results{background:#de9595;color:maroon}.results tr.daytime td{font-weight:700}.results tr.logged td{color:green!important}.results tr.unlogged td{color:#a00000!important}.results tr.l2_alt td{padding:0}.results tr.l2_alt td table{background:0 0;margin:0;border:none}.results tr.l2_alt td table tbody{background:0 0!important}.results tr.l2_alt td table tbody tr{background:0 0!important}.results tr.l2_alt td table tbody tr th{background:0 0!important;width:6em;white-space:nowrap;text-align:right;color:#000}.results tr.l2_alt td table tbody tr td,.results tr.l2_alt td table tbody tr th{text-align:left!important;font-size:100%;margin:0;padding:0 .25em;border:none}.results tr.l2_alt td table tbody tr td div,.results tr.l2_alt td table tbody tr th div{display:inline}.results td{border:1px solid grey;height:1.25em;vertical-align:top;font-size:9pt;padding:.125em .25em}.results td.hidden{display:none}.results td.caps{text-transform:uppercase}.results td i{font-style:normal;color:green;padding:0}.results td em{font-style:normal;font-weight:700;background:#e0ffe0;color:green;padding:0;border:1px solid #80b080;border-radius:2px}.results td b{background:#ffffa0;padding:1px;border:1px solid #b0b000;border-radius:2px}.results.listener .primaryQth{font-weight:700}.results.listener .secondaryQth{padding-left:1.5em}.results.listener .secondaryQth a{font-weight:400}.report_actions{text-align:center;margin:.25em!important}.report_actions .button{margin:0;padding:.5em 1em;width:160px}@media print{a[href]:after{content:none!important}.results{border:1px solid green}body{font-size:85%;width:95%}}pre.log{background:#fff;border:1px solid #888;padding:0 5px;display:inline-block}#tabs .button{margin:0;border-radius:5px 5px 0 0;padding:.5em .75em;border-bottom:none}#tabs .button.is-active{color:#ff0!important}#tabs .button .tabicon{width:1.5em;height:1.5em;margin:0 .25em 0 0;text-decoration:none}#tabs .button.is-active,#tabs .button:hover{text-decoration:underline}#tabs .button.is-active .tabicon,#tabs .button:hover .tabicon{text-decoration:none}#tabs .button.icon{padding:.25em .75em}#actions{float:right}#actions .frame{border:1px solid #888;border-bottom:none;border-radius:5px 5px 0 0;background:#eee;padding:4px;margin:0;line-height:1em;font-size:.9rem}#actions .frame div{float:left;border:1px solid #000;border-radius:3px;background-color:#ffffa0;padding:2px}#actions .frame div:not(:last-child){margin:0 4px 0 0}body.map,html{height:100%;margin:0;padding:0;background:#f0f0f0}.map{margin:0}.map #header .form_layers{display:inline-block;background:#fff;border:1px solid #aaa;border-radius:5px}.map #header .form_layers div{height:1.8em;line-height:1.8em;float:left;padding:0 4px;margin:0}.map #header .form_layers div input[type=checkbox]{padding:0;margin:0}.map #header .form_layers div label{padding:0 .25em}.map #header .form_layers div:last-child{border-radius:0 5px 5px 0}.map #map{height:80%;margin:0 .25em;overflow:auto;border:1px solid #aaa}.map h1{margin:.125em 5px;white-space:nowrap}.map .gm-style-iw h2{margin:.25em 0}.map .gm-style-iw p{margin:.25em 0}.gridLabel{position:absolute;z-index:-100000;color:#408080;font-weight:700;font-family:Tahoma,Arial,Helvetica,sans-serif;opacity:.9}#panel{font-family:Arial,sans-serif;font-size:10px;float:left;width:340px;height:550px}#map-container{margin-left:350px}#map{width:100%;height:650px}#markerlist{height:620px;margin:10px 0 0 0;overflow:auto}#markerlist thead th{height:3em!important}#markerlist tbody th{margin:0;padding:0}#markerlist tbody .logged a b{background:#e0ffe0!important;border:1px solid #80c080!important}table.map_layout{padding:0;margin:0}table.map_layout tbody{border:none}table.map_layout tbody td{padding:.25em;margin:0;vertical-align:top}a.pri{font-weight:700}a.sec{font-weight:400;margin-left:1em}#panel .title{border-bottom:1px solid #e0ecff;white-space:nowrap;overflow:hidden;width:310px;cursor:pointer;padding:2px 0;display:block;color:#000;font-weight:400;text-decoration:none}#panel .title:visited{color:#000}#panel .title:hover{background:#ffffa0!important}#panel .title b{width:100px;padding:0 .5em;margin:0 .5em;float:left}.info .head{padding:0 2em}.map_info h2{margin:0;float:left}.map_info h3{margin:0;font-size:10pt;display:block;clear-after:both}.map_info .info-body{padding:0;margin:2px 0;border:1px solid #ccc}.map_info .info-body tbody{padding:2px;margin:0}.map_info .info-body tbody th{vertical-align:top;padding:3px;font-size:8pt;text-align:left;width:10em}.map_info .info-body tbody td{vertical-align:top;padding:3px;font-size:10pt;width:16em}.fa-info-circle{color:#00f} \ No newline at end of file diff --git a/src/Service/GeoService.php b/src/Service/GeoService.php index 440399f0..8771e252 100644 --- a/src/Service/GeoService.php +++ b/src/Service/GeoService.php @@ -11,8 +11,9 @@ use App\Utils\Rxx; use Exception; use GeoIp2\Exception\AddressNotFoundException; -use GeoIp2\Database\Reader; +use GpsLab\Bundle\GeoIP2Bundle\Reader\ReaderFactory; use MaxMind\Db\Reader\InvalidDatabaseException; +use Symfony\Component\HttpKernel\KernelInterface; /** * Class GeoService @@ -24,16 +25,28 @@ class GeoService * @var Visitor */ private $visitor; - - private $dbPath = '/usr/share/GeoIP/GeoLite2-City.mmdb'; + private $reader; + private $dbPath; /** * GeoService constructor. * @param \App\Service\Visitor $visitor + * @param ReaderFactory */ - public function __construct(Visitor $visitor) + public function __construct(KernelInterface $kernel, Visitor $visitor, ReaderFactory $factory) { $this->visitor = $visitor; + $this->dbPath = $kernel->getCacheDir() . '/GeoLite2-City.mmdb'; + try { + $this->reader = $factory->create('default'); + } catch (Exception $e) { + $binPath = substr(dirname(__DIR__), 0, -4) . "/bin/"; + die( + "

GeoIP Error

\n" + . "Please run this command to download the latest GeoIP Database:

" + . "
{$binPath}console geoip2:update
" + ); + } } /** @@ -46,24 +59,7 @@ public function getContinent() return 'NA'; } try { - $reader = new Reader($this->dbPath); - } catch (Exception $e) { - $user = posix_getpwuid(posix_geteuid()); - $uName = $user['name']; - $group = posix_getgrgid($user['gid']); - $gName = $group['name']; - $binPath = substr(dirname(__DIR__), 0, -4)."/bin/"; - die( - "

GeoIP Error

\n" - ."

{$this->dbPath} is missing.
\n" - ."Please run these commands:

" - ."
sudo mkdir -p ".dirname($this->dbPath).";\n"
-                ."sudo chown $uName:$gName ".dirname($this->dbPath).";\n"
-                ."{$binPath}console geoip2:update
" - ); - } - try { - $record = $reader->city($ip); + $record = $this->reader->city($ip); return $record->continent->code; } catch (AddressNotFoundException $e) { return 'NA'; @@ -74,32 +70,15 @@ public function getContinent() /** * @param $ip - * @return \GeoIp2\Model\City|string|void + * @return array */ public function getDetailsForIp($ip) { if (!$ip) { - return 'NA'; - } - try { - $reader = new Reader($this->dbPath); - } catch (Exception $e) { - $user = posix_getpwuid(posix_geteuid()); - $uName = $user['name']; - $group = posix_getgrgid($user['gid']); - $gName = $group['name']; - $binPath = substr(dirname(__DIR__), 0, -4)."/bin/"; - die( - "

GeoIP Error

\n" - ."

{$this->dbPath} is missing.
\n" - ."Please run these commands:

" - ."
sudo mkdir -p ".dirname($this->dbPath).";\n"
-                ."sudo chown $uName:$gName ".dirname($this->dbPath).";\n"
-                ."{$binPath}console geoip2:update
" - ); + return [ 'Result' => 'No IP address given' ]; } try { - $record = $reader->city($ip); + $record = $this->reader->city($ip); return [ 'IP' => $ip, 'City' => $record->city->name, @@ -112,22 +91,28 @@ public function getDetailsForIp($ip) 'GSQ' => Rxx::convertDegreesToGSQ($record->location->latitude, $record->location->longitude), 'System' => strtoupper($this->getDefaultSystem()), 'GeoIP2DB' => $this->dbPath, - 'GeoIP2Age' => date('Y-m-d h:i:s', filemtime($this->dbPath)) + 'GeoIP2Age' => date('Y-m-d H:i:s', filemtime($this->dbPath)) ]; } catch (AddressNotFoundException $e) { return [ 'IP' => $ip, - 'Result' => 'Address not found' + 'Result' => 'Address not found', + 'GeoIP2DB' => $this->dbPath, + 'GeoIP2Age' => date('Y-m-d H:i:s', filemtime($this->dbPath)) ]; } catch (InvalidDatabaseException $e) { return [ 'IP' => $ip, - 'Result' => 'Invalid Database' + 'Result' => 'Invalid Database', + 'GeoIP2DB' => $this->dbPath, + 'GeoIP2Age' => date('Y-m-d H:i:s', filemtime($this->dbPath)) ]; } catch (Exception $e) { return [ 'IP' => $ip, - 'Result' => 'Invalid Request' + 'Result' => 'Invalid Request', + 'GeoIP2DB' => $this->dbPath, + 'GeoIP2Age' => date('Y-m-d h:i:s', filemtime($this->dbPath)) ]; } } diff --git a/src/css/include/admin/tools.less b/src/css/include/admin/tools.less index f57a6d0d..4efaadee 100644 --- a/src/css/include/admin/tools.less +++ b/src/css/include/admin/tools.less @@ -23,4 +23,15 @@ } } } + .ip-examples { + font-size: 80%; + margin: 0 0 0 3em; + span { + color: #0000ff; + &:hover { + text-decoration: underline; + cursor: pointer; + } + } + } } \ No newline at end of file diff --git a/symfony.lock b/symfony.lock index d4762b51..eacc547d 100755 --- a/symfony.lock +++ b/symfony.lock @@ -83,9 +83,6 @@ "geoip2/geoip2": { "version": "v2.9.0" }, - "gpslab/compressor": { - "version": "v1.0.0" - }, "gpslab/geoip2": { "version": "v1.1.1" }, diff --git a/templates/admin/tools/index.html.twig b/templates/admin/tools/index.html.twig index 9334d080..3129f6bb 100644 --- a/templates/admin/tools/index.html.twig +++ b/templates/admin/tools/index.html.twig @@ -66,7 +66,14 @@
  • {% trans %}Go{% endtrans %} {% trans %}Check location info for IP Address:{% endtrans %} - +
    + Examples: [ + Toronto, Canada | + Hawaii, USA | + London, UK | + Moscow, Russia | + Brisbane, Australia + ]
  • @@ -106,6 +113,10 @@ } buttons.attr('disabled', 'disabled'); }); + $('.ip-examples span').on('click', function(e){ + $('#ip').val($(this).data('ip')); + $('.admin_tools a.geoip').trigger('click'); + }) }); {% endblock %}