/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

P {
	margin-left: 15pt;
	margin-top: 5pt;
	margin-right: 0.00in;
	margin-bottom: 5pt;
	font-size: 10.0pt;
	font-family: "Arial MT", Verdana, Arial;
}


h1 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 16pt;
	color: white;
	background-color: #525D76;
	font-weight: normal;
	text-transform: uppercase;
	padding-left: 4px;


}

h2 {
	font-size: 10pt;
	font-family: Arial, Helvetica, sans-serif;
	color: white;
	background-color: #828DA6;
	margin-left: 15pt;
	margin-top: 5pt;
	margin-right: 0in;
	margin-bottom: 5pt;
	text-transform: uppercase;
	padding-left: 4px;
	font-weight: normal;
	letter-spacing: 4px;
	word-spacing: 7px;
	
}

h3 {
	font-weight: bold; 
	margin-left: 15pt;
	margin-top: 5pt;
	margin-right: 0pt;
	margin-bottom: 5pt;
	font-size: 11pt;
	font-family: Arial;
}


pre {
	margin: 0in;
	margin: 5pt;
	background: #F3F5F7;
	border: thin solid;
	border-color: #828DA6;
	padding: 12pt;
	font-size: 11.0pt;
	font-family: Courier;
}

.code {
	font-weight: normal;
	font-size: 12pt;
	text-align: left;
	text-indent: 0.00in;
	color: #000000;
	line-height: 1.25;
	margin-left: 0.025in;
	margin-right: 0.00in;
	margin-top: 10pt;
	margin-bottom: 10pt;
	font-family: "Andale Mono", "Courier New", Courier "misc fixed", "sony fixed", monospaced;
}

.special {
	font-weight: bold;
	font-size: 11pt;
	text-align: center;
	color: #525D76; 
	line-height: 1.25;
	margin-left: 0.70in;
	margin-right: 1.00in;
	margin-top: 3pt;
	margin-bottom: 3pt;
	font-family: Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
}

.backtotop {
	font-weight: bold;
	font-size: 10pt;
	text-align: left;
	line-height: 1.25;
	margin-left: 0pt;
	margin-right: 0pt;
	margin-top: 3pt;
	margin-bottom: 0pt;
	font-family: Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
}

.note {
	color: red;
	font-weight: bolder;
	font-size: 10pt;
	text-align: left;
	line-height: normal;
	margin-left: 0.70in;
	margin-right: 1.00in;
	margin-top: 3pt;
	margin-bottom: 3pt;
	font-family: Verdana, Helvetica, Arial, Tahoma, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
	text-transform: uppercase;

}
.notetext {
	font-size: 10pt;
	font-weight: normal;
	text-align: left;
	line-height: normal;
	margin-left: 0.70in;
	margin-right: 1.00in;
	margin-top: 0pt;
	margin-bottom: 6pt;
	font-family: Verdana, Helvetica, Arial, "Arial MT", Tahoma, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
	color: Black;
}


a:link {
	color: #0044B3;
	border: none #000000 1.0pt;
	padding: 0in;
	x-text-underline: normal;
	text-underline: single;
	x-text-underline: normal;
	text-decoration: underline underline; 
}

a:visited {
	color: #800080;
	x-text-underline: normal;
	text-underline: single;
	x-text-underline: normal;
	text-decoration: underline underline; 
}

.TOCHeading {
	font-weight: bold;
	font-size: 12pt;
	text-align: left;
	color: #000000;
	font-family: Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
    padding-left: 15px;
	margin-bottom: 5pt;
	margin-top: 5pt;
	margin-left: 5px;
	margin-right: 0pt;
}

.TOC {
    font-size: 11pt;
	text-align: left;
	text-indent: 0.25in;
	color: #000000;
	padding-left: 15px;
	margin-left: 5px;
	margin-right: 0.00in;
	margin-top: 0pt;
	margin-bottom: 0pt;
	font-family: Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
}

td {
	border-color: #828DA6;
	border: solid 0.5pt;
}

.TableHeading {
	font-weight: bold;
	font-size: 12pt;
	color: white; 
	text-align: center;
	background-color: #828DA6;
	font-family: Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
	padding: 6px;	
}

.TableCell {
	font-weight: normal;
	font-size: 10pt;
	text-align: left;
	text-indent: 0.00in;
	color: #000000;
	padding: 2pt;
	margin-top: 4pt;
	margin-bottom: 4pt;
	font-family: Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
	padding: 6px;
}

.update {
	color: #A9A9A9;
	font-size: smaller;
	font-style: italic;
}

li {
	margin: 3pt 3pt;
	font-size: 10.0pt;
	font-family: Verdana, Arial, "Arial MT";
}

DD {
	font-size: 10pt;
	font-family: Verdana, "Arial MT", Arial;
	font-style:  normal;
	margin-left: 65pt;
	margin-top: 5pt;
	margin-right: 20pt;
	margin-bottom: 5pt;
	font-size: 10.0pt;
	border-top: none;
	border-right: none;
	border-bottom: 0.5px solid #828DA6;
	border-left: none;
	padding-bottom: 12px;
}

DT {
	font-size: 10.0pt;
	font-family: Verdana, Helvetica, Arial, Tahoma, Verdana, "Nimbus Sans L", lucida-sans, lucidasans, sanserif;
	font-weight: bolder;
	margin-left: 45pt;
	margin-top: 5pt;
	margin-right: 0in;
	margin-bottom: 5pt;
	font-size: 10.0pt;
	border-right: none;
	border-bottom: none;
	border-left: none;
	border-top: none;
}
	
.class {
	font-weight: bold;
	margin-left: 15pt;
	margin-top: 5pt;
	margin-right: 0pt;
	margin-bottom: 5pt;
	font-size: 11pt;
	font-family: Arial;
	border-top: none;
	border-right: none;
	border-bottom: 2px solid #525D76;
	border-left: none;
	border-bottom: #525D76;
	padding-bottom: 4px;
	font-style: normal;
}
