/*
 *
 *  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.
 *
 */

body {
  color: #000000;
  background: #ffffff;
  font-family: "Times New Roman", Times, serif;
  font-size: 12pt;
}
a {
  text-decoration: none;
  color: #000000;
}
pre {
  white-space: -moz-pre-wrap; /* Mozilla */
  white-space: -pre-wrap;     /* Opera 4-6 */
  white-space: -o-pre-wrap;   /* Opera 7 */
  word-wrap: break-word;      /* IE */
}
.titleTableTopNav, .titleTableSubNav, .logoImage {
  display: none;
}
.packageFrame {
  display: none;
}
.titleTableSubTitle {
  font-weight: bold;
}
.classHeaderTableLabel {
	padding-right: 10px;
	vertical-align: top;
}
.showHideLinks {
  display: none;
}
html>body code {
  font-size: 10pt;
}
.summaryTableTitle, .detailSectionHeader {
  font-size: 14pt;
  font-weight: bold;
  padding-top: 15px;
  padding-bottom: 5px;
}
.summaryTable {
  border: 1px solid #000000;
  border-collapse: collapse;
  width: 100%;
}
.summaryTableDescription {
  padding-bottom: 20px;
}
.summaryTableSignatureCol, .summaryTableOwnerCol, .summaryTableLastCol, .summaryTableCol {
  border: 1px solid #000000;
}
.summaryTablePaddingCol {
  border: 1px solid #000000;
  border-right: 0px;
}
.summaryTableInheritanceCol, .summaryTableOperatorCol, .summaryTableStatementCol, .summaryTableSecondCol {
  border: 1px solid #000000;
  border-left: 0px;
}
.summaryTableLastCol {
  vertical-align: top;
}
.detailHeader {
  font-size: 13pt;
  padding-top: 100px;
}
.detailHeaderName {
  font-weight: bold;
}
.detailHeaderType {
  padding-left: 5px;
}
.detailHeaderRule {
  background: #FF0000;
}
.seeAlso {
  padding-bottom: 20px;
  margin-top: -20px;
}
.innertable {
  border-collapse: collapse;
}
.innertable td,.innertable th {
  border: 1px solid #000000;
  padding-left: 5px;
  padding-right: 5px;
}
.listing {
  font-size: 10pt;
}
.feedbackLink {
  display: none;
}
.copyright {
  font-size: 10pt;
}