openwebrx-clone/htdocs/css/openwebrx.css
2020-08-12 19:44:33 +02:00

1141 lines
22 KiB
CSS

/*
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
Copyright (c) 2019-2020 by Jakob Ketterl <dd5jfk@darc.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@import url("openwebrx-header.css");
@import url("openwebrx-globals.css");
html, body {
overflow: hidden;
}
select
{
font-family: "DejaVu Sans", Verdana, Geneva, sans-serif;
}
input
{
vertical-align:middle;
}
input[type=range]
{
-webkit-appearance: none;
margin: 0 0;
background: transparent;
--track-background: #B6B6B6;
}
input[type=range]:focus
{
outline: none;
}
input[type=range]::-webkit-slider-runnable-track
{
height: 5px;
cursor: pointer;
animate: 0.2s;
box-shadow: 0px 0px 0px #000000;
background: #B6B6B6;
/*border-radius: 11px;*/
border: 1px solid #8A8A8A;
background: var(--track-background);
}
input[type=range]::-webkit-slider-thumb
{
box-shadow: 1px 1px 1px #828282;
border: 1px solid #8A8A8A;
height: 15px;
width: 15px;
border-radius: 10px;
background: #FFFFFF;
cursor: pointer;
-webkit-appearance: none;
margin-top: -7px;
}
input[type=range]:focus::-webkit-slider-runnable-track
{
background: #B6B6B6;
background: var(--track-background);
}
input[type=range]::-moz-range-track
{
height: 3px;
cursor: pointer;
animate: 0.2s;
box-shadow: 0px 0px 0px #000000;
background: #B6B6B6;
background: var(--track-background);
border-radius: 11px;
border: 1px solid #8A8A8A;
}
input[type=range]::-moz-range-thumb
{
box-shadow: 1px 1px 1px #828282;
border: 1px solid #8A8A8A;
height: 12px;
width: 12px;
border-radius: 10px;
background: #FFFFFF;
cursor: pointer;
}
input[type=range]::-ms-track
{
width: 100%;
height: 7px;
cursor: pointer;
animate: 0.2s;
background: transparent;
border-color: transparent;
color: transparent;
}
input[type=range]::-ms-fill-lower
{
background: #B6B6B6;
border: 1px solid #8A8A8A;
border-radius: 22px;
box-shadow: 0px 0px 0px #000000;
}
input[type=range]::-ms-fill-upper
{
background: #B6B6B6;
border: 1px solid #8A8A8A;
border-radius: 22px;
box-shadow: 0px 0px 0px #000000;
}
input[type=range]::-ms-thumb
{
box-shadow: 1px 1px 1px #828282;
border: 1px solid #8A8A8A;
height: 24px;
width: 7px;
border-radius: 0px;
background: #FFFFFF;
cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower
{
background: #B6B6B6;
}
input[type=range]:focus::-ms-fill-upper
{
background: #B6B6B6;
}
input[type=range]:disabled {
opacity: 0.5;
}
#webrx-page-container
{
height: 100%;
position: relative;
display: flex;
flex-direction: column;
}
#openwebrx-scale-container
{
height: 47px;
overflow: hidden;
z-index:1000;
position: relative;
}
#openwebrx-frequency-container {
background-image: url("../gfx/openwebrx-scale-background.png");
background-repeat: repeat-x;
background-size: cover;
background-color: #444;
z-index: 1001;
}
#openwebrx-bookmarks-container
{
height: 25px;
position: relative;
z-index: 1000;
}
#openwebrx-bookmarks-container .bookmark {
font-size: 12px;
background-color: #FFFF00;
border: 1px solid #000;
border-radius: 5px;
padding: 2px 5px;
cursor: pointer;
white-space: nowrap;
max-height: 14px;
max-width: 50px;
position: absolute;
bottom: 5px;
transform: translate(-50%, 0);
}
#openwebrx-bookmarks-container .bookmark .bookmark-content {
overflow: hidden;
text-overflow: ellipsis;
}
#openwebrx-bookmarks-container .bookmark .bookmark-actions {
display: none;
text-align: right;
}
.bookmark-actions .action {
line-height: 0;
}
.bookmark-actions .action img {
width: 14px;
}
#openwebrx-bookmarks-container .bookmark.selected {
z-index: 1010;
}
#openwebrx-bookmarks-container .bookmark:hover {
z-index: 1011;
max-height: none;
max-width: none;
}
#openwebrx-bookmarks-container .bookmark[editable]:hover .bookmark-actions {
display: block;
margin-bottom: 5px;
}
#openwebrx-bookmarks-container .bookmark:after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 0;
border: 5px solid transparent;
border-top-color: #FFFF00;
border-bottom: 0;
margin-left: -5px;
margin-bottom: -5px;
}
#openwebrx-bookmarks-container .bookmark[data-source=local] {
background-color: #0FF;
}
#openwebrx-bookmarks-container .bookmark[data-source=local]:after {
border-top-color: #0FF;
}
#openwebrx-bookmarks-container .bookmark[data-source=dial_frequencies] {
background-color: #0F0;
}
#openwebrx-bookmarks-container .bookmark[data-source=dial_frequencies]:after {
border-top-color: #0F0;
}
#webrx-canvas-background {
flex-grow: 1;
background-image: url('../gfx/openwebrx-background-cool-blue.png');
background-repeat: no-repeat;
background-color: #1e5f7f;
background-size: cover;
display: flex;
flex-direction: column;
}
#webrx-canvas-container
{
position: relative;
overflow: visible;
cursor: crosshair;
flex-grow: 1;
}
#webrx-canvas-container canvas
{
position: absolute;
border-style: none;
image-rendering: crisp-edges;
image-rendering: -webkit-optimize-contrast;
width: 100%;
height: 200px;
}
#openwebrx-log-scroll
{
/*overflow-y:auto;*/
height: 125px;
width: 619px
}
.nano .nano-pane { background: #444; }
.nano .nano-slider { background: #eee !important; }
.webrx-error
{
font-weight: bold;
color: #ff6262;
}
@font-face {
font-family: 'roboto-mono';
src: url('../fonts/RobotoMono-Regular.ttf');
font-weight: normal;
font-style: normal;
}
.webrx-actual-freq {
width: 100%;
text-align: left;
padding: 0;
margin: 0;
display: flex;
flex-direction: row;
}
.webrx-actual-freq > * {
flex: 1;
}
.webrx-actual-freq input {
font-family: 'roboto-mono';
width: 0;
box-sizing: border-box;
border: 0;
padding: 0;
background-color: inherit;
color: inherit;
}
.webrx-actual-freq, .webrx-actual-freq input {
font-size: 16pt;
font-family: 'roboto-mono';
line-height: 22px;
}
.webrx-mouse-freq {
width: 100%;
text-align: left;
font-size: 10pt;
color: #AAA;
font-family: 'roboto-mono';
margin-bottom: 5px;
}
#openwebrx-panels-container-left,
#openwebrx-panels-container-right {
position: absolute;
bottom: 0;
display: flex;
flex-direction: column;
justify-content: flex-end;
height: 0;
overflow: visible;
}
#openwebrx-panels-container-left {
left: 0;
align-items: flex-start;
}
#openwebrx-panels-container-right {
right: 0;
align-items: flex-end;
}
.openwebrx-panel
{
transform: perspective( 600px ) rotateX( 90deg );
background-color: #575757;
padding: 10px;
color: white;
font-size: 10pt;
border-radius: 15px;
-moz-border-radius: 15px;
margin: 5.9px;
box-sizing: content-box;
}
.openwebrx-panel a
{
color: #5ca8ff;
text-shadow: none;
}
.openwebrx-panel-inner
{
overflow-y: auto;
overflow-x: hidden;
height: 100%;
}
.openwebrx-button
{
background-color: #373737;
padding: 4.2px;
border-radius: 5px;
-moz-border-radius: 5px;
color: White;
font-weight: bold;
margin-right: 1px;
cursor: pointer;
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.0 , #373737), color-stop(1, #4F4F4F) );
background:-moz-linear-gradient( center top, #373737 0%, #4F4F4F 100% );
user-select: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
display: inline-block;
}
.openwebrx-button:hover, .openwebrx-demodulator-button.highlighted
{
/*background:-webkit-gradient( linear, left top, left bottom, color-stop(0.0 , #3F3F3F), color-stop(1, #777777) );
background:-moz-linear-gradient( center top, #373737 5%, #4F4F4F 100% );*/
background: #474747;
color: #FFFF50;
}
.openwebrx-button:active
{
background: #777777;
color: #FFFF50;
}
.openwebrx-button:last-child {
margin-right: 0;
}
.openwebrx-button.disabled {
opacity: 0.5;
}
.openwebrx-demodulator-button
{
min-width: 38px;
height: 19px;
font-size: 12pt;
text-align: center;
flex: 1;
margin-right: 5px;
}
.openwebrx-demodulator-button.same-mod {
color: #FFC;
}
.openwebrx-square-button img
{
height: 27px;
}
.openwebrx-round-button
{
margin-right: -2px;
width: 35px;
height: 35px;
border-radius: 25px;
}
.openwebrx-round-button img
{
height: 30px;
}
.openwebrx-round-button-small
{
margin-right: -3px;
width: 20px;
height: 20px;
border-radius: 25px;
}
.openwebrx-round-button-small img
{
height: 20px;
}
img.openwebrx-mirror-img
{
transform: scale(-1, 1);
}
.openwebrx-round-rightarrow img
{
position: relative;
left: 12px;
top: 3px;
}
.openwebrx-round-leftarrow img
{
position: relative;
left: 7px;
top: 3px;
}
#openwebrx-client-log-title
{
margin-bottom: 5px;
font-weight: bold;
}
.openwebrx-progressbar
{
position: relative;
border-radius: 5px;
background-color: #003850; /*#006235;*/
display: inline-block;
text-align: center;
font-size: 8pt;
font-weight: bold;
text-shadow: 0px 0px 4px #000000;
cursor: default;
user-select: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
.openwebrx-progressbar-bar
{
border-radius: 5px;
height: 100%;
width: 100%;
}
.openwebrx-progressbar-text
{
position: absolute;
left:0px;
top:4px;
width: inherit;
}
#openwebrx-panel-status
{
margin: 0 0 0 5.9px;
padding: 0px;
background-color:rgba(0, 0, 0, 0);
}
#openwebrx-panel-status div.openwebrx-progressbar
{
width: 200px;
height: 20px;
}
#openwebrx-panel-receiver
{
width:110px;
}
#openwebrx-panel-receiver .frequencies-container {
display: flex;
flex-direction: row;
}
#openwebrx-panel-receiver .frequencies {
flex-grow: 1;
}
#openwebrx-panel-receiver .openwebrx-bookmark-button {
width: 27px;
height: 27px;
text-align: center;
}
#openwebrx-mute-on
{
color: lime;
}
#openwebrx-mute-off
{
color: white;
}
.openwebrx-panel-slider
{
position: relative;
top: -2px;
width: 95px;
}
.openwebrx-sliderbtn-img
{
width: 14px;
position:relative;
top: 1px;
}
.openwebrx-panel-line
{
padding-top: 5px;
}
.openwebrx-panel-flex-line {
display: flex;
flex-direction: row;
}
.openwebrx-panel-line:first-child {
padding-top: 0;
}
.openwebrx-modes-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
grid-gap: 5px;
}
.openwebrx-modes-grid .openwebrx-demodulator-button {
margin: 0;
overflow: hidden;
white-space: nowrap;
}
#openwebrx-smeter-outer
{
border-color: #888;
border-style: solid;
border-width: 0px;
width: 255px;
height: 7px;
background-color: #373737;
border-radius: 3px;
position: relative;
}
#openwebrx-smeter-bar
{
transition: all 0.2s linear;
width: 0px;
height: 7px;
background: linear-gradient(to top, #ff5939 , #961700);
position: absolute;
margin: 0; padding: 0; left: 0;
border-radius: 3px;
}
#openwebrx-smeter-db
{
color: #aaa;
display: inline-block;
font-size: 10pt;
float: right;
margin-right: 5px;
margin-top: 24px;
font-family: 'roboto-mono';
}
.openwebrx-overlay {
position: fixed;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
opacity: 0.8;
background-color: #777;
left: 0;
top: 0;
z-index: 1001;
color: white;
font-weight: bold;
font-size: 20pt;
}
#openwebrx-autoplay-overlay
{
cursor: pointer;
transition: opacity 0.3s linear;
}
#openwebrx-autoplay-overlay img
{
width: 150px;
}
.openwebrx-overlay .overlay-content {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
#openwebrx-error-overlay .overlay-content {
background-color: #000;
padding: 50px;
border-radius: 20px;
}
#openwebrx-digimode-canvas-container
{
/*margin: -10px -10px 10px -10px;*/
margin: -10px -10px 0px -10px;
border-radius: 15px;
height: 150px;
background-color: #333;
position: relative;
overflow: hidden;
}
#openwebrx-digimode-canvas-container canvas
{
position: absolute;
pointer-events: none;
transition: width 500ms, left 500ms;
}
.openwebrx-panel select,
.openwebrx-dialog select,
.openwebrx-dialog input {
border-radius: 5px;
background-color: #373737;
color: White;
font-weight: normal;
font-size: 13pt;
margin-right: 1px;
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.0 , #373737), color-stop(1, #4F4F4F) );
background:-moz-linear-gradient( center top, #373737 0%, #4F4F4F 100% );
border-color: transparent;
border-width: 0px;
-moz-appearance: none;
}
.openwebrx-panel select option,
.openwebrx-dialog select option {
border-width: 0px;
background-color: #373737;
color: White;
}
.openwebrx-secondary-demod-listbox {
width: 173px;
height: 27px;
padding-left:3px;
flex: 4;
}
#openwebrx-sdr-profiles-listbox {
width: 100%;
font-size: 10pt;
height: 27px;
}
#openwebrx-cursor-blink
{
animation: cursor-blink 1s infinite;
/*animation: cursor-3d 2s infinite;*/
animation-timing-function: linear;
animation-direction: alternate;
height: 1em;
width: 8px;
background-color: White;
display: inline-block;
position: relative;
top: 1px;
/*perspective: 60px;*/
}
@keyframes cursor-blink
{
0%{ opacity: 0; }
50% { opacity: 1; }
100%{ opacity: 0; }
}
@keyframes cursor-3d
{
0%{ transform: rotateX(0deg) rotateX(Ydeg); }
50% { transform: rotateX(180deg) rotateY(360deg); opacity: 0.1; }
100%{ transform: rotateX(360deg) rotateY(720deg); }
}
#openwebrx-digimode-content
{
word-wrap: break-word;
position: absolute;
bottom: 0;
width: 100%;
}
#openwebrx-digimode-content-container
{
overflow-y: hidden;
display: block;
height: 50px;
position: relative;
}
#openwebrx-digimode-content-container .gradient
{
width: 100%;
height: 20px;
background: linear-gradient(to top, rgba(87,87,87,0) 0%,rgba(87,87,87,1) 100%);
position: absolute;
top: 0;
z-index: 10;
}
#openwebrx-digimode-content .part
{
perspective: 700px;
}
#openwebrx-digimode-content .part
{
animation: new-digimode-data-3d 100ms;
animation-timing-function: linear;
display: inline-block;
perspective-origin: 50% 50%;
transform-origin: 0% 50%;
}
@keyframes new-digimode-data
{
0%{ opacity: 0; }
100%{ opacity: 1; }
}
@keyframes new-digimode-data-3d
{
0%{ transform: rotateX(0deg) rotateY(-90deg) translateX(-5px) scale(1.3); }
100%{ transform: rotateX(0deg) rotateY(0deg) translateX(0) scale(1); }
}
#openwebrx-digimode-select-channel
{
transition: all 500ms;
background-color: Yellow;
display: block;
position: absolute;
pointer-events: none;
height: 100%;
width: 0px;
top: 0px;
left: 0px;
opacity: 0.7;
border-style: solid;
border-width: 0px;
border-color: Red;
}
.openwebrx-meta-slot {
width: 145px;
height: 196px;
float: left;
margin-right: 10px;
background-color: #676767;
padding: 2px 0;
color: #333;
text-align: center;
position: relative;
}
.openwebrx-meta-slot, .openwebrx-meta-slot.muted:before {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
.openwebrx-meta-slot.muted:before {
display: block;
content: "";
background-image: url("../gfx/openwebrx-mute.png");
width:100%;
height:133px;
background-position: center;
background-repeat: no-repeat;
cursor: pointer;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0,0,0,.3);
}
.openwebrx-meta-slot.active {
background-color: #95bbdf;
}
.openwebrx-meta-slot.sync .openwebrx-dmr-slot:before {
content:"";
display: inline-block;
margin: 0 5px;
width: 12px;
height: 12px;
background-color: #ABFF00;
border-radius: 50%;
box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 7px 1px, inset #304701 0 -1px 9px, #89FF00 0 2px 12px;
}
.openwebrx-meta-slot:last-child {
margin-right: 0;
}
.openwebrx-meta-slot .openwebrx-meta-user-image {
width:100%;
height:133px;
background-position: center;
background-repeat: no-repeat;
}
.openwebrx-meta-slot.active .openwebrx-meta-user-image {
background-image: url("../gfx/openwebrx-directcall.png");
}
.openwebrx-meta-slot.active .openwebrx-meta-user-image.group {
background-image: url("../gfx/openwebrx-groupcall.png");
}
.openwebrx-dmr-timeslot-panel * {
cursor: pointer;
}
.openwebrx-maps-pin {
background-image: url("../gfx/google_maps_pin.svg");
background-position: center;
background-repeat: no-repeat;
width: 15px;
height: 15px;
background-size: contain;
display: inline-block;
}
.openwebrx-message-panel {
height: 180px;
}
.openwebrx-message-panel tbody {
display: block;
overflow: auto;
height: 150px;
width: 100%;
}
.openwebrx-message-panel thead tr {
display: block;
}
.openwebrx-message-panel th,
.openwebrx-message-panel td {
width: 50px;
text-align: left;
padding: 1px 3px;
}
#openwebrx-panel-wsjt-message .message {
width: 380px;
}
#openwebrx-panel-wsjt-message .decimal {
text-align: right;
width: 35px;
}
#openwebrx-panel-wsjt-message .decimal.freq {
width: 70px;
}
#openwebrx-panel-js8-message .message {
width: 465px;
max-width: 465px;
}
#openwebrx-panel-js8-message td.message {
white-space: nowrap;
overflow: hidden;
display: flex;
flex-direction: row-reverse;
}
#openwebrx-panel-js8-message .message div {
flex: 1;
}
#openwebrx-panel-js8-message .decimal {
text-align: right;
width: 35px;
}
#openwebrx-panel-js8-message .decimal.freq {
width: 70px;
}
#openwebrx-panel-packet-message .message {
width: 410px;
max-width: 410px;
}
#openwebrx-panel-packet-message .callsign {
width: 80px;
}
#openwebrx-panel-packet-message .coord {
width: 40px;
text-align: center;
}
#openwebrx-panel-pocsag-message .address {
width: 100px;
}
#openwebrx-panel-pocsag-message .message {
width: 486px;
max-width: 486px;
white-space: pre;
}
.aprs-symbol {
display: inline-block;
width: 15px;
height: 15px;
background-size: 240px 90px;
}
.aprs-symboltable-normal {
background-image: url(../../aprs-symbols/aprs-symbols-24-0.png)
}
.aprs-symboltable-alternate {
background-image: url(../../aprs-symbols/aprs-symbols-24-1.png)
}
.aprs-symboltable-overlay {
background-image: url(../../aprs-symbols/aprs-symbols-24-2.png)
}
.openwebrx-dialog {
background-color: #575757;
padding: 10px;
color: white;
position: fixed;
font-size: 10pt;
border-radius: 15px;
-moz-border-radius: 15px;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, 0);
}
.openwebrx-dialog .form-field {
padding: 5px;
display: flex;
flex-direction: row;
}
.openwebrx-dialog .form-field:first-child {
padding-top: 0;
}
.openwebrx-dialog label {
display: inline-block;
flex-grow: 0;
width: 70px;
padding-right: 20px;
margin-top: auto;
margin-bottom: auto;
}
.openwebrx-dialog .form-field input,
.openwebrx-dialog .form-field select {
flex-grow: 1;
height: 27px;
}
.openwebrx-dialog .form-field input {
padding: 0 5px;
}
.openwebrx-dialog .buttons {
text-align: right;
padding: 5px 5px 0;
border-top: 1px solid #666;
}
.openwebrx-dialog .buttons .openwebrx-button {
font-size: 12pt;
min-width: 50px;
text-align: center;
padding: 5px 10px;
}
#openwebrx-panel-digimodes[data-mode="ft8"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="wspr"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="jt65"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="jt9"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="ft4"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="packet"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="pocsag"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="js8"] #openwebrx-digimode-content-container,
#openwebrx-panel-digimodes[data-mode="ft8"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="wspr"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="jt65"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="jt9"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="ft4"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="packet"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="pocsag"] #openwebrx-digimode-select-channel,
#openwebrx-panel-digimodes[data-mode="js8"] #openwebrx-digimode-select-channel
{
display: none;
}
#openwebrx-panel-digimodes[data-mode="ft8"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="wspr"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="jt65"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="jt9"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="ft4"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="packet"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="pocsag"] #openwebrx-digimode-canvas-container,
#openwebrx-panel-digimodes[data-mode="js8"] #openwebrx-digimode-canvas-container
{
height: 200px;
margin: -10px;
}