You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apex.apache.org by th...@apache.org on 2015/11/12 04:22:56 UTC

[01/22] incubator-apex-malhar git commit: MLHR-1891 Don't deploy source archives.

Repository: incubator-apex-malhar
Updated Branches:
  refs/heads/devel-3 02f48e1b2 -> 90d5774ff


MLHR-1891 Don't deploy source archives.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/cbafbb8f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/cbafbb8f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/cbafbb8f

Branch: refs/heads/devel-3
Commit: cbafbb8f33e0414d500f2713c1872c6f1cbeb651
Parents: 4358902
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Nov 5 14:56:46 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:12 2015 -0800

----------------------------------------------------------------------
 pom.xml | 13 +++++++++++++
 1 file changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/cbafbb8f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a5725d2..2819bd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,6 +144,19 @@
       </build>
     </profile>
     <profile>
+      <id>skip-source-release-attach</id>
+      <activation>
+        <file>
+          <exists>${basedir}/NOTICE</exists>
+        </file>
+      </activation>
+      <properties>
+        <remoteresources.skip>true</remoteresources.skip>
+        <!-- do not push source archives to the repo - see MPOM-90 -->
+        <assembly.attach>false</assembly.attach>
+      </properties>
+    </profile>
+    <profile>
       <id>all-modules</id>
       <modules>
         <module>benchmark</module>


[04/22] incubator-apex-malhar git commit: Add @since tags and update change log for release 3.2.0

Posted by th...@apache.org.
Add @since tags and update change log for release 3.2.0


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/09321301
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/09321301
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/09321301

Branch: refs/heads/devel-3
Commit: 093213013d192fb4336d9cb2d6432dfb1a67ca92
Parents: 0051706
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Nov 5 23:43:09 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:14 2015 -0800

----------------------------------------------------------------------
 CHANGELOG.md                                    | 49 ++++++++++++++++++++
 .../contrib/converter/Converter.java            |  1 +
 .../contrib/schema/formatter/CsvFormatter.java  |  1 +
 .../contrib/schema/formatter/Formatter.java     |  1 +
 .../contrib/schema/formatter/JsonFormatter.java |  1 +
 .../contrib/schema/formatter/XmlFormatter.java  |  1 +
 .../contrib/schema/parser/CsvParser.java        |  1 +
 .../contrib/schema/parser/JsonParser.java       |  1 +
 .../contrib/schema/parser/Parser.java           |  1 +
 .../contrib/schema/parser/XmlParser.java        |  1 +
 .../datatorrent/demos/pi/NamedValueList.java    |  1 +
 .../demos/wordcount/FileWordCount.java          |  2 +
 .../lib/appdata/query/WindowBoundedService.java |  2 +
 .../lib/appdata/schemas/CustomTimeBucket.java   |  2 +
 .../lib/io/fs/AbstractFileSplitter.java         |  2 +
 .../datatorrent/lib/io/fs/FileSplitterBase.java |  2 +
 16 files changed, 69 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..3bf8a6b
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,49 @@
+Apex Malhar Changelog
+========================================================================================================================
+
+
+Version 3.2.0-incubating - 2015-11-08
+------------------------------------------------------------------------------------------------------------------------
+
+### Sub-task
+* [MLHR-1870] - JsonParser unit test failing
+* [MLHR-1872] - Add license headers in unit tests of parsers and formatters
+* [MLHR-1886] - Optimize recovery of files which are not corrupted
+* [MLHR-1889] - AbstractFileOutputOperator should have rename method to do rename operation
+
+### Bug
+* [MLHR-1799] - Cassandra Pojo input operator is broken
+* [MLHR-1820] - Fix NPE in SnapshotServer
+* [MLHR-1823] - AbstractFileOutputOperator not finalizing the file after the recovery
+* [MLHR-1825] - AbstractFileOutputOperator throwing FileNotFoundException during the recovery
+* [MLHR-1830] - Fix Backword Compatibility Errors
+* [MLHR-1835] - WebSocketInputOperator Creates More And More Zombie Threads As It Runs
+* [MLHR-1837] - AbstractFileOutputOperator writing to same temp file after the recovery
+* [MLHR-1839] - Configure All The Twitter Demos To Use Embeddable Query
+* [MLHR-1841] - AbstractFileOutputOperator rotation interval not working when there is no processing
+* [MLHR-1852] - File Splitter Test Failing On My Machine
+* [MLHR-1856] - Make Custom Time Buckets Sortable
+* [MLHR-1860] - Check for null fileName in new wordcount app in wrong place
+* [MLHR-1864] - Some Times Expired Queries Are processed
+* [MLHR-1866] - Travis-ci build integration
+* [MLHR-1876] - WindowBoundedService Can Block The Shutdown Of A Container
+* [MLHR-1880] - Incorrect documentation for maxLength property on AbstractFileOutputOperator
+* [MLHR-1885] - Adding getter methods to the variables of KafkaMessage
+
+### Task
+* [MLHR-1857] - Apache license headers and related files
+* [MLHR-1869] - Update Maven coordinates for ASF release
+* [MLHR-1871] - Expand checks in CI build
+* [MLHR-1891] - Skip install/deploy of source archives
+
+### Improvement
+* [MLHR-1803] - Add Embeddable Query To AppDataSnapshotServer
+* [MLHR-1804] - Enable FileSplitter to be used as a non-input operator
+* [MLHR-1805] - Ability to supply additional file meta information in FileSplitter
+* [MLHR-1806] - Ability to supply additional block meta information in FileSplitter
+* [MLHR-1824] - Convert Pi Demo to support Query Operator
+* [MLHR-1836] - Integrate schema with Jdbc POJO operators
+* [MLHR-1862] - Clean up code for Machine Data Demo
+* [MLHR-1863] - Make Custom Time Bucket Comparable
+* [MLHR-1868] - Improve GPOUtils hashcode function
+

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java b/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
index ebf2925..601268d 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/converter/Converter.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.classification.InterfaceStability;
  * 
  * @param <INPUT>
  * @param <OUTPUT>
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public interface Converter<INPUT, OUTPUT>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
index 924acc6..490c4f2 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/CsvFormatter.java
@@ -53,6 +53,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName CsvFormatter
  * @category Formatter
  * @tags pojo csv formatter
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class CsvFormatter extends Formatter<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
index 19a78e0..77fa630 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/Formatter.java
@@ -44,6 +44,7 @@ import com.datatorrent.contrib.converter.Converter;
  * @displayName Parser
  * @tags parser converter
  * @param <INPUT>
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public abstract class Formatter<OUTPUT> extends BaseOperator implements Converter<Object, OUTPUT>,

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
index 344ac60..5f7bce6 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/JsonFormatter.java
@@ -42,6 +42,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName JsonFormatter
  * @category Formatter
  * @tags pojo json formatter
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class JsonFormatter extends Formatter<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
index b387031..40fef69 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/formatter/XmlFormatter.java
@@ -38,6 +38,7 @@ import com.thoughtworks.xstream.io.xml.XppDriver;
  * @displayName XmlParser
  * @category Formatter
  * @tags xml pojo formatter
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class XmlFormatter extends Formatter<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
index 4fd39fb..991f6eb 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/CsvParser.java
@@ -59,6 +59,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName CsvParser
  * @category Parsers
  * @tags csv pojo parser
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class CsvParser extends Parser<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
index d01e436..513be15 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/JsonParser.java
@@ -42,6 +42,7 @@ import com.datatorrent.netlet.util.DTThrowable;
  * @displayName JsonParser
  * @category Parsers
  * @tags json pojo parser
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class JsonParser extends Parser<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
index e5ff7f5..3c1df8f 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/Parser.java
@@ -44,6 +44,7 @@ import com.datatorrent.contrib.converter.Converter;
  * @displayName Parser
  * @tags parser converter
  * @param <INPUT>
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public abstract class Parser<INPUT> extends BaseOperator implements Converter<INPUT, Object>,

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
index 4931497..9e1c8be 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/schema/parser/XmlParser.java
@@ -41,6 +41,7 @@ import com.datatorrent.api.Context;
  * @displayName XmlParser
  * @category Parsers
  * @tags xml pojo parser
+ * @since 3.2.0
  */
 @InterfaceStability.Evolving
 public class XmlParser extends Parser<String>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
----------------------------------------------------------------------
diff --git a/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java b/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
index f884994..ce5ef9d 100644
--- a/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
+++ b/demos/pi/src/main/java/com/datatorrent/demos/pi/NamedValueList.java
@@ -37,6 +37,7 @@ import com.datatorrent.api.Context.OperatorContext;
  * <p>
  * @displayNamed Value
  * @tags count
+ * @since 3.2.0
  */
 public class NamedValueList<T> extends BaseOperator
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
----------------------------------------------------------------------
diff --git a/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java b/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
index 51539dc..ee9439e 100644
--- a/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
+++ b/demos/wordcount/src/main/java/com/datatorrent/demos/wordcount/FileWordCount.java
@@ -54,6 +54,8 @@ import com.datatorrent.common.util.BaseOperator;
  * to a different snapshot server.
  *
  * Since the EOF is received by a single operator, this operator cannot be partitionable
+ *
+ * @since 3.2.0
  */
 public class FileWordCount extends BaseOperator
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java b/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
index 4f653a3..ea9d54b 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/query/WindowBoundedService.java
@@ -43,6 +43,8 @@ import com.datatorrent.netlet.util.DTThrowable;
  * <br/><br/>
  * <b>Note:</b> This service cannot be used in operators which allow checkpointing within an
  * application window.
+ *
+ * @since 3.2.0
  */
 public class WindowBoundedService implements Component<OperatorContext>
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java b/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
index f50bb4b..3075da5 100644
--- a/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
+++ b/library/src/main/java/com/datatorrent/lib/appdata/schemas/CustomTimeBucket.java
@@ -28,6 +28,8 @@ import com.google.common.base.Preconditions;
 
 /**
  * This represents a {@link TimeBucket} which can be a multiple of a time unit.
+ *
+ * @since 3.2.0
  */
 public class CustomTimeBucket implements Serializable, Comparable<CustomTimeBucket>
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
index e7551a5..6ef9684 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/AbstractFileSplitter.java
@@ -41,6 +41,8 @@ import com.datatorrent.lib.io.block.BlockMetadata;
 
 /**
  * An abstract File Splitter.
+ *
+ * @since 3.2.0
  */
 public abstract class AbstractFileSplitter extends BaseOperator
 {

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/09321301/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java b/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
index ebf3739..17a3bb6 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/FileSplitterBase.java
@@ -36,6 +36,8 @@ import com.datatorrent.api.Operator;
 
 /**
  * A file splitter that receives its input from an upstream operator.
+ *
+ * @since 3.2.0
  */
 public class FileSplitterBase extends AbstractFileSplitter implements Operator.IdleTimeHandler
 {


[09/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/machinedata/malhar.css
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/malhar.css b/contrib/src/main/html/machinedata/malhar.css
deleted file mode 100644
index 175e219..0000000
--- a/contrib/src/main/html/machinedata/malhar.css
+++ /dev/null
@@ -1,4688 +0,0 @@
-/**
- * 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.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-
-  max-width: 100%;
-  /* Part 1: Set a maxium relative to the parent */
-
-  width: auto\9;
-  /* IE7-8 need help adjusting responsive images */
-
-  height: auto;
-  /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-@media print {
-  * {
-    text-shadow: none !important;
-    color: #000 !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-.img-rounded {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-.img-circle {
-  -webkit-border-radius: 500px;
-  -moz-border-radius: 500px;
-  border-radius: 500px;
-}
-/*@import "bootstrap/grid.less";*/
-/*@import "bootstrap/layouts.less";*/
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  font-weight: 200;
-  line-height: 30px;
-}
-small {
-  font-size: 85%;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-cite {
-  font-style: normal;
-}
-.muted {
-  color: #999999;
-}
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-.text-warning {
-  color: #c09853;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-.text-error {
-  color: #b94a48;
-}
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-.text-info {
-  color: #3a87ad;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-.text-success {
-  color: #468847;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-h1 {
-  font-size: 35.75px;
-}
-h2 {
-  font-size: 29.25px;
-}
-h3 {
-  font-size: 22.75px;
-}
-h4 {
-  font-size: 16.25px;
-}
-h5 {
-  font-size: 13px;
-}
-h6 {
-  font-size: 11.049999999999999px;
-}
-h1 small {
-  font-size: 22.75px;
-}
-h2 small {
-  font-size: 16.25px;
-}
-h3 small {
-  font-size: 13px;
-}
-h4 small {
-  font-size: 13px;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: 20px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 20px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 10px;
-}
-.dl-horizontal {
-  *zoom: 1;
-}
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.dl-horizontal:after {
-  clear: both;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16.25px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-blockquote.pull-right small:before {
-  content: '';
-}
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 11px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-form {
-  margin: 0 0 20px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 13px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  vertical-align: middle;
-}
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-textarea {
-  height: auto;
-}
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear .2s, box-shadow linear .2s;
-  -moz-transition: border linear .2s, box-shadow linear .2s;
-  -o-transition: border linear .2s, box-shadow linear .2s;
-  transition: border linear .2s, box-shadow linear .2s;
-}
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-select {
-  width: 220px;
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-.controls-row {
-  *zoom: 1;
-}
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.controls-row:after {
-  clear: both;
-}
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-actions:after {
-  clear: both;
-}
-.help-block,
-.help-inline {
-  color: #595959;
-}
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  vertical-align: middle;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 13px;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 10px;
-}
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-.table th {
-  font-weight: bold;
-}
-.table thead th {
-  vertical-align: bottom;
-}
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-.table .table {
-  background-color: #ffffff;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  border-bottom-left-radius: 0;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-  border-bottom-right-radius: 0;
-}
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #f5f5f5;
-}
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-.table tbody tr.success > td {
-  background-color: #dff0d8;
-}
-.table tbody tr.error > td {
-  background-color: #f2dede;
-}
-.table tbody tr.warning > td {
-  background-color: #fcf8e3;
-}
-.table tbody tr.info > td {
-  background-color: #d9edf7;
-}
-.table-hover tbody tr.success:hover > td {
-  background-color: #d0e9c6;
-}
-.table-hover tbody tr.error:hover > td {
-  background-color: #ebcccc;
-}
-.table-hover tbody tr.warning:hover > td {
-  background-color: #faf2cc;
-}
-.table-hover tbody tr.info:hover > td {
-  background-color: #c4e3f3;
-}
-/*@import "bootstrap/sprites.less";*/
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #ffffff;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: default;
-}
-.open {
-  *z-index: 1000;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.dropdown-submenu {
-  position: relative;
-}
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-  -moz-border-radius: 5px 5px 5px 0;
-  border-radius: 5px 5px 5px 0;
-}
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #cccccc;
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-.dropdown-submenu.pull-left {
-  float: none;
-}
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/*@import "bootstrap/component-animations.less";*/
-/*@import "bootstrap/close.less";*/
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 20px;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #333333;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 11px 19px;
-  font-size: 16.25px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.049999999999999px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 0 6px;
-  font-size: 9.75px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0044cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: #0088cc;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  font-size: 0;
-  vertical-align: middle;
-  white-space: nowrap;
-  *margin-left: .3em;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  font-size: 0;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 13px;
-}
-.btn-group > .btn-mini {
-  font-size: 9.75px;
-}
-.btn-group > .btn-small {
-  font-size: 11.049999999999999px;
-}
-.btn-group > .btn-large {
-  font-size: 16.25px;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-  -moz-border-radius: 6px 6px 0 0;
-  border-radius: 6px 6px 0 0;
-}
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-.alert h4 {
-  margin: 0;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-success h4 {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-info h4 {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 20px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.nav .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.nav > .disabled > a {
-  color: #999999;
-}
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 20px;
-  *position: relative;
-  *z-index: 2;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  *zoom: 1;
-}
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-inner:after {
-  clear: both;
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-.navbar-link {
-  color: #777777;
-}
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-left: 1px solid #f2f2f2;
-  border-right: 1px solid #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  margin-bottom: 0;
-  padding: 4px 14px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 1px 10px rgba(0,0,0,.1);
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-.navbar .nav > li {
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #333333;
-  text-decoration: none;
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e5e5e5;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .nav > li > .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .nav > li > .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #e5e5e5;
-  color: #555555;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  left: auto;
-  right: 100%;
-  margin-left: 0;
-  margin-right: -1px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-  border-color: #252525;
-}
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-.navbar-inverse .brand {
-  color: #999999;
-}
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-.navbar-inverse .divider-vertical {
-  border-left-color: #111111;
-  border-right-color: #222222;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #111111;
-  color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #040404;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-/*@import "bootstrap/breadcrumbs.less";*/
-/*@import "bootstrap/pagination.less";*/
-/*@import "bootstrap/pager.less";*/
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-  outline: none;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 10%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-/*@import "bootstrap/tooltip.less";*/
-/*@import "bootstrap/popovers.less";*/
-/*@import "bootstrap/thumbnails.less";*/
-/*@import "bootstrap/media.less";*/
-/*@import "bootstrap/labels-badges.less";*/
-/*@import "bootstrap/progress-bars.less";*/
-/*@import "bootstrap/accordion.less";*/
-/*@import "bootstrap/carousel.less";*/
-/*@import "bootstrap/hero-unit.less";*/
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.affix {
-  position: fixed;
-}
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-arti

<TRUNCATED>


[13/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/malhar.css
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/malhar.css b/apps/logstream/src/main/html/malhar.css
new file mode 100644
index 0000000..b2f9a8b
--- /dev/null
+++ b/apps/logstream/src/main/html/malhar.css
@@ -0,0 +1,4564 @@
+/**
+ * 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.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 30px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  /* Responsive images (ensure images don't scale beyond their parents) */
+
+  max-width: 100%;
+  /* Part 1: Set a maxium relative to the parent */
+
+  width: auto\9;
+  /* IE7-8 need help adjusting responsive images */
+
+  height: auto;
+  /* Part 2: Scale the height according to the width, otherwise you get stretching */
+
+  vertical-align: middle;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+#map_canvas img,
+.google-maps img {
+  max-width: none;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+  cursor: pointer;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+@media print {
+  * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  .ir a:after,
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  @page  {
+    margin: 0.5cm;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 20px;
+  color: #333333;
+  background-color: #ffffff;
+}
+a {
+  color: #0088cc;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #005580;
+  text-decoration: underline;
+}
+.img-rounded {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.img-polaroid {
+  padding: 4px;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+.img-circle {
+  -webkit-border-radius: 500px;
+  -moz-border-radius: 500px;
+  border-radius: 500px;
+}
+/*@import "bootstrap/grid.less";*/
+/*@import "bootstrap/layouts.less";*/
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+cite {
+  font-style: normal;
+}
+.muted {
+  color: #999999;
+}
+a.muted:hover,
+a.muted:focus {
+  color: #808080;
+}
+.text-warning {
+  color: #c09853;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #a47e3c;
+}
+.text-error {
+  color: #b94a48;
+}
+a.text-error:hover,
+a.text-error:focus {
+  color: #953b39;
+}
+.text-info {
+  color: #3a87ad;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #2d6987;
+}
+.text-success {
+  color: #468847;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #356635;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999999;
+}
+h1,
+h2,
+h3 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 35.75px;
+}
+h2 {
+  font-size: 29.25px;
+}
+h3 {
+  font-size: 22.75px;
+}
+h4 {
+  font-size: 16.25px;
+}
+h5 {
+  font-size: 13px;
+}
+h6 {
+  font-size: 11.049999999999999px;
+}
+h1 small {
+  font-size: 22.75px;
+}
+h2 small {
+  font-size: 16.25px;
+}
+h3 small {
+  font-size: 13px;
+}
+h4 small {
+  font-size: 13px;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 20px 0 30px;
+  border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+  padding: 0;
+  margin: 0 0 10px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+li {
+  line-height: 20px;
+}
+ul.unstyled,
+ol.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline,
+ol.inline {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline > li,
+ol.inline > li {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+dl {
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 20px;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 10px;
+}
+.dl-horizontal {
+  *zoom: 1;
+}
+.dl-horizontal:before,
+.dl-horizontal:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.dl-horizontal:after {
+  clear: both;
+}
+.dl-horizontal dt {
+  float: left;
+  width: 160px;
+  clear: left;
+  text-align: right;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.dl-horizontal dd {
+  margin-left: 180px;
+}
+hr {
+  margin: 20px 0;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+  border-bottom: 1px solid #ffffff;
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999999;
+}
+abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 20px;
+  border-left: 5px solid #eeeeee;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16.25px;
+  font-weight: 300;
+  line-height: 1.25;
+}
+blockquote small {
+  display: block;
+  line-height: 20px;
+  color: #999999;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eeeeee;
+  border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+  text-align: right;
+}
+blockquote.pull-right small:before {
+  content: '';
+}
+blockquote.pull-right small:after {
+  content: '\00A0 \2014';
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 20px;
+}
+code,
+pre {
+  padding: 0 3px 2px;
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+  font-size: 11px;
+  color: #333333;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 2px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+  white-space: nowrap;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 12px;
+  line-height: 20px;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+pre.prettyprint {
+  margin-bottom: 20px;
+}
+pre code {
+  padding: 0;
+  color: inherit;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+form {
+  margin: 0 0 20px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  line-height: 40px;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+legend small {
+  font-size: 15px;
+  color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+}
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+}
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  display: inline-block;
+  height: 20px;
+  padding: 4px 6px;
+  margin-bottom: 10px;
+  font-size: 13px;
+  line-height: 20px;
+  color: #555555;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  vertical-align: middle;
+}
+input,
+textarea,
+.uneditable-input {
+  width: 206px;
+}
+textarea {
+  height: auto;
+}
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear .2s, box-shadow linear .2s;
+  -moz-transition: border linear .2s, box-shadow linear .2s;
+  -o-transition: border linear .2s, box-shadow linear .2s;
+  transition: border linear .2s, box-shadow linear .2s;
+}
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-9 */
+
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  margin-top: 1px \9;
+  /* IE8-9 */
+
+  line-height: normal;
+}
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+  width: auto;
+}
+select,
+input[type="file"] {
+  height: 30px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 30px;
+}
+select {
+  width: 220px;
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.uneditable-input,
+.uneditable-textarea {
+  color: #999999;
+  background-color: #fcfcfc;
+  border-color: #cccccc;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  cursor: not-allowed;
+}
+.uneditable-input {
+  overflow: hidden;
+  white-space: nowrap;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  color: #999999;
+}
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+  color: #999999;
+}
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  color: #999999;
+}
+.radio,
+.checkbox {
+  min-height: 20px;
+  padding-left: 20px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+  display: inline-block;
+  padding-top: 5px;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+  float: none;
+  margin-left: 0;
+}
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+  display: inline-block;
+}
+input,
+textarea,
+.uneditable-input {
+  margin-left: 0;
+}
+.controls-row [class*="span"] + [class*="span"] {
+  margin-left: 20px;
+}
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+  width: 926px;
+}
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+  width: 846px;
+}
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+  width: 766px;
+}
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+  width: 686px;
+}
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+  width: 606px;
+}
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+  width: 526px;
+}
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+  width: 446px;
+}
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+  width: 366px;
+}
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+  width: 286px;
+}
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+  width: 206px;
+}
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+  width: 126px;
+}
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+  width: 46px;
+}
+.controls-row {
+  *zoom: 1;
+}
+.controls-row:before,
+.controls-row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.controls-row:after {
+  clear: both;
+}
+.controls-row [class*="span"],
+.row-fluid .controls-row [class*="span"] {
+  float: left;
+}
+.controls-row .checkbox[class*="span"],
+.controls-row .radio[class*="span"] {
+  padding-top: 5px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  cursor: not-allowed;
+  background-color: #eeeeee;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+  background-color: transparent;
+}
+.control-group.warning .control-label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  border-color: #c09853;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error .control-label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  border-color: #b94a48;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success .control-label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  border-color: #468847;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+.control-group.info .control-label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+  color: #3a87ad;
+}
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  color: #3a87ad;
+}
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  border-color: #3a87ad;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+  border-color: #2d6987;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+  color: #3a87ad;
+  background-color: #d9edf7;
+  border-color: #3a87ad;
+}
+input:focus:invalid,
+textarea:focus:invalid,
+select:focus:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:invalid:focus,
+textarea:focus:invalid:focus,
+select:focus:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 19px 20px 20px;
+  margin-top: 20px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #e5e5e5;
+  *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-actions:after {
+  clear: both;
+}
+.help-block,
+.help-inline {
+  color: #595959;
+}
+.help-block {
+  display: block;
+  margin-bottom: 10px;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-append,
+.input-prepend {
+  display: inline-block;
+  margin-bottom: 10px;
+  vertical-align: middle;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input,
+.input-append .dropdown-menu,
+.input-prepend .dropdown-menu,
+.input-append .popover,
+.input-prepend .popover {
+  font-size: 13px;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+  position: relative;
+  margin-bottom: 0;
+  *margin-left: 0;
+  vertical-align: top;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+  z-index: 2;
+}
+.input-append .add-on,
+.input-prepend .add-on {
+  display: inline-block;
+  width: auto;
+  height: 20px;
+  min-width: 16px;
+  padding: 4px 5px;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+  text-align: center;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #eeeeee;
+  border: 1px solid #ccc;
+}
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn,
+.input-append .btn-group > .dropdown-toggle,
+.input-prepend .btn-group > .dropdown-toggle {
+  vertical-align: top;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-append .active,
+.input-prepend .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+  margin-right: -1px;
+}
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input + .btn-group .btn:last-child,
+.input-append select + .btn-group .btn:last-child,
+.input-append .uneditable-input + .btn-group .btn:last-child {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append .add-on,
+.input-append .btn,
+.input-append .btn-group {
+  margin-left: -1px;
+}
+.input-append .add-on:last-child,
+.input-append .btn:last-child,
+.input-append .btn-group:last-child > .dropdown-toggle {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-prepend.input-append input + .btn-group .btn,
+.input-prepend.input-append select + .btn-group .btn,
+.input-prepend.input-append .uneditable-input + .btn-group .btn {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .btn-group:first-child {
+  margin-left: 0;
+}
+input.search-query {
+  padding-right: 14px;
+  padding-right: 4px \9;
+  padding-left: 14px;
+  padding-left: 4px \9;
+  /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+  margin-bottom: 0;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+/* Allow for input prepend/append in search forms */
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.form-search .input-append .search-query {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search .input-append .btn {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .btn {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+  display: none;
+}
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+  display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+  padding-left: 0;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+  float: left;
+  margin-right: 3px;
+  margin-left: 0;
+}
+.control-group {
+  margin-bottom: 10px;
+}
+legend + .control-group {
+  margin-top: 20px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 20px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-label {
+  float: left;
+  width: 160px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  *display: inline-block;
+  *padding-left: 20px;
+  margin-left: 180px;
+  *margin-left: 0;
+}
+.form-horizontal .controls:first-child {
+  *padding-left: 180px;
+}
+.form-horizontal .help-block {
+  margin-bottom: 0;
+}
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block,
+.form-horizontal .uneditable-input + .help-block,
+.form-horizontal .input-prepend + .help-block,
+.form-horizontal .input-append + .help-block {
+  margin-top: 10px;
+}
+.form-horizontal .form-actions {
+  padding-left: 180px;
+}
+
+/*@import "bootstrap/sprites.less";*/
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  vertical-align: top;
+  border-top: 4px solid #000000;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  content: "";
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  background-color: #ffffff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 20px;
+  color: #333333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
+  text-decoration: none;
+  color: #ffffff;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  cursor: default;
+}
+.open {
+  *z-index: 1000;
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  border-top: 0;
+  border-bottom: 4px solid #000000;
+  content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+.dropdown-submenu {
+  position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+  top: 0;
+  left: 100%;
+  margin-top: -6px;
+  margin-left: -1px;
+  -webkit-border-radius: 0 6px 6px 6px;
+  -moz-border-radius: 0 6px 6px 6px;
+  border-radius: 0 6px 6px 6px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+  display: block;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+  top: auto;
+  bottom: 0;
+  margin-top: 0;
+  margin-bottom: -2px;
+  -webkit-border-radius: 5px 5px 5px 0;
+  -moz-border-radius: 5px 5px 5px 0;
+  border-radius: 5px 5px 5px 0;
+}
+.dropdown-submenu > a:after {
+  display: block;
+  content: " ";
+  float: right;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #cccccc;
+  margin-top: 5px;
+  margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+  border-left-color: #ffffff;
+}
+.dropdown-submenu.pull-left {
+  float: none;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+  left: -100%;
+  margin-left: 10px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.dropdown .dropdown-menu .nav-header {
+  padding-left: 20px;
+  padding-right: 20px;
+}
+.typeahead {
+  z-index: 1051;
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.well-large {
+  padding: 24px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.well-small {
+  padding: 9px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+/*@import "bootstrap/component-animations.less";*/
+/*@import "bootstrap/close.less";*/
+.btn {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding: 4px 12px;
+  margin-bottom: 0;
+  font-size: 13px;
+  line-height: 20px;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  color: #333333;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  background-color: #f5f5f5;
+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e6e6e6;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  border: 1px solid #cccccc;
+  *border: 0;
+  border-bottom-color: #b3b3b3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  *margin-left: .3em;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn:hover,
+.btn:focus,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+  color: #333333;
+  background-color: #e6e6e6;
+  *background-color: #d9d9d9;
+}
+.btn:active,
+.btn.active {
+  background-color: #cccccc \9;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover,
+.btn:focus {
+  color: #333333;
+  text-decoration: none;
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn.disabled,
+.btn[disabled] {
+  cursor: default;
+  background-image: none;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 11px 19px;
+  font-size: 16.25px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.btn-large [class^="icon-"],
+.btn-large [class*=" icon-"] {
+  margin-top: 4px;
+}
+.btn-small {
+  padding: 2px 10px;
+  font-size: 11.049999999999999px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-small [class^="icon-"],
+.btn-small [class*=" icon-"] {
+  margin-top: 0;
+}
+.btn-mini [class^="icon-"],
+.btn-mini [class*=" icon-"] {
+  margin-top: -1px;
+}
+.btn-mini {
+  padding: 0 6px;
+  font-size: 9.75px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #0044cc;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  color: #ffffff;
+  background-color: #0044cc;
+  *background-color: #003bb3;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #003399 \9;
+}
+.btn-warning {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(to bottom, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #f89406;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  color: #ffffff;
+  background-color: #f89406;
+  *background-color: #df8505;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #bd362f;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  color: #ffffff;
+  background-color: #bd362f;
+  *background-color: #a9302a;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(to bottom, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #51a351;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  color: #ffffff;
+  background-color: #51a351;
+  *background-color: #499249;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #2f96b4;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  color: #ffffff;
+  background-color: #2f96b4;
+  *background-color: #2a85a0;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #24748c \9;
+}
+.btn-inverse {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #363636;
+  background-image: -moz-linear-gradient(top, #444444, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+  background-image: -webkit-linear-gradient(top, #444444, #222222);
+  background-image: -o-linear-gradient(top, #444444, #222222);
+  background-image: linear-gradient(to bottom, #444444, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+  border-color: #222222 #222222 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #222222;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:focus,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+  color: #ffffff;
+  background-color: #222222;
+  *background-color: #151515;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+  background-color: #080808 \9;
+}
+button.btn,
+input[type="submit"].btn {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+  *padding-top: 1px;
+  *padding-bottom: 1px;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+  background-color: transparent;
+  background-image: none;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-link {
+  border-color: transparent;
+  cursor: pointer;
+  color: #0088cc;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #005580;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
+  color: #333333;
+  text-decoration: none;
+}
+.btn-group {
+  position: relative;
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  font-size: 0;
+  vertical-align: middle;
+  white-space: nowrap;
+  *margin-left: .3em;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  font-size: 0;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group {
+  margin-left: 5px;
+}
+.btn-group > .btn {
+  position: relative;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group > .btn + .btn {
+  margin-left: -1px;
+}
+.btn-group > .btn,
+.btn-group > .dropdown-menu,
+.btn-group > .popover {
+  font-size: 13px;
+}
+.btn-group > .btn-mini {
+  font-size: 9.75px;
+}
+.btn-group > .btn-small {
+  font-size: 11.049999999999999px;
+}
+.btn-group > .btn-large {
+  font-size: 16.25px;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group > .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
+}
+.btn-group > .btn-mini + .dropdown-toggle {
+  padding-left: 5px;
+  padding-right: 5px;
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+.btn-group > .btn-small + .dropdown-toggle {
+  *padding-top: 5px;
+  *padding-bottom: 4px;
+}
+.btn-group > .btn-large + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn-group.open .btn.dropdown-toggle {
+  background-color: #e6e6e6;
+}
+.btn-group.open .btn-primary.dropdown-toggle {
+  background-color: #0044cc;
+}
+.btn-group.open .btn-warning.dropdown-toggle {
+  background-color: #f89406;
+}
+.btn-group.open .btn-danger.dropdown-toggle {
+  background-color: #bd362f;
+}
+.btn-group.open .btn-success.dropdown-toggle {
+  background-color: #51a351;
+}
+.btn-group.open .btn-info.dropdown-toggle {
+  background-color: #2f96b4;
+}
+.btn-group.open .btn-inverse.dropdown-toggle {
+  background-color: #222222;
+}
+.btn .caret {
+  margin-top: 8px;
+  margin-left: 0;
+}
+.btn-large .caret {
+  margin-top: 6px;
+}
+.btn-large .caret {
+  border-left-width: 5px;
+  border-right-width: 5px;
+  border-top-width: 5px;
+}
+.btn-mini .caret,
+.btn-small .caret {
+  margin-top: 8px;
+}
+.dropup .btn-large .caret {
+  border-bottom-width: 5px;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.btn-group-vertical {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group-vertical > .btn {
+  display: block;
+  float: none;
+  max-width: 100%;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group-vertical > .btn + .btn {
+  margin-left: 0;
+  margin-top: -1px;
+}
+.btn-group-vertical > .btn:first-child {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.btn-group-vertical > .btn:last-child {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.btn-group-vertical > .btn-large:first-child {
+  -webkit-border-radius: 6px 6px 0 0;
+  -moz-border-radius: 6px 6px 0 0;
+  border-radius: 6px 6px 0 0;
+}
+.btn-group-vertical > .btn-large:last-child {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 20px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.alert,
+.alert h4 {
+  color: #c09853;
+}
+.alert h4 {
+  margin: 0;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 20px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847;
+}
+.alert-success h4 {
+  color: #468847;
+}
+.alert-danger,
+.alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+  color: #b94a48;
+}
+.alert-danger h4,
+.alert-error h4 {
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #3a87ad;
+}
+.alert-info h4 {
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 20px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav > .pull-right {
+  float: right;
+}
+.nav-header {
+  display: block;
+  padding: 3px 15px;
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 20px;
+  color: #999999;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  text-transform: uppercase;
+}
+.nav li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list {
+  padding-left: 15px;
+  padding-right: 15px;
+  margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+  padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #0088cc;
+}
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+  margin-right: 2px;
+}
+.nav-list .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.nav-tabs,
+.nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.nav-tabs:after,
+.nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  line-height: 20px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
+  color: #ffffff;
+  background-color: #0088cc;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.nav .dropdown-toggle .caret {
+  border-top-color: #0088cc;
+  border-bottom-color: #0088cc;
+  margin-top: 6px;
+}
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
+  border-top-color: #005580;
+  border-bottom-color: #005580;
+}
+/* move down carets for tabs */
+.nav-tabs .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.nav .active .dropdown-toggle .caret {
+  border-top-color: #fff;
+  border-bottom-color: #fff;
+}
+.nav-tabs .active .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
+  color: #ffffff;
+  background-color: #999999;
+  border-color: #999999;
+}
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
+  border-color: #999999;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.tabbable:after {
+  clear: both;
+}
+.tab-content {
+  overflow: auto;
+}
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+  display: block;
+}
+.tabs-below > .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below > .nav-tabs > li > a:hover,
+.tabs-below > .nav-tabs > li > a:focus {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+  float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left > .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover,
+.tabs-left > .nav-tabs .active > a:focus {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #ffffff;
+}
+.tabs-right > .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover,
+.tabs-right > .nav-tabs .active > a:focus {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #ffffff;
+}
+.nav > .disabled > a {
+  color: #999999;
+}
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  cursor: default;
+}
+.navbar {
+  overflow: visible;
+  margin-bottom: 20px;
+  *position: relative;
+  *z-index: 2;
+}
+.navbar-inner {
+  min-height: 40px;
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #fafafa;
+  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+  border: 1px solid #d4d4d4;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  *zoom: 1;
+}
+.navbar-inner:before,
+.navbar-inner:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-inner:after {
+  clear: both;
+}
+.navbar .container {
+  width: auto;
+}
+.nav-collapse.collapse {
+  height: auto;
+  overflow: visible;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 10px 20px 10px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  color: #777777;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .brand:hover,
+.navbar .brand:focus {
+  text-decoration: none;
+}
+.navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+  color: #777777;
+}
+.navbar-link {
+  color: #777777;
+}
+.navbar-link:hover,
+.navbar-link:focus {
+  color: #333333;
+}
+.navbar .divider-vertical {
+  height: 40px;
+  margin: 0 9px;
+  border-left: 1px solid #f2f2f2;
+  border-right: 1px solid #ffffff;
+}
+.navbar .btn,
+.navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
+  margin-top: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+  margin-top: 5px;
+  white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+  margin-top: 0;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 5px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  margin-bottom: 0;
+  padding: 4px 14px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.navbar-static-top {
+  position: static;
+  margin-bottom: 0;
+}
+.navbar-static-top .navbar-inner {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+  margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom .navbar-inner {
+  border-width: 1px 0 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.navbar-fixed-top {
+  top: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 1px 10px rgba(0,0,0,.1);
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+}
+.navbar-fixed-bottom .navbar-inner {
+  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+  margin-right: 0;
+}
+.navbar .nav > li {
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 10px 15px 10px;
+  color: #777777;
+  text-decoration: none;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .nav .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #333333;
+  text-decoration: none;
+}
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+  color: #555555;
+  text-decoration: none;
+  background-color: #e5e5e5;
+  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+.navbar .btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #ededed;
+  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e5e5e5;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+}
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:focus,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #e5e5e5;
+  *background-color: #d9d9d9;
+}
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+  background-color: #cccccc \9;
+}
+.navbar .btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.navbar .nav > li > .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .nav > li > .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+  border-top: 7px solid #ccc;
+  border-top-color: rgba(0, 0, 0, 0.2);
+  border-bottom: 0;
+  bottom: -7px;
+  top: auto;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+  border-top: 6px solid #ffffff;
+  border-bottom: 0;
+  bottom: -6px;
+  top: auto;
+}
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
+  border-top-color: #333333;
+  border-bottom-color: #333333;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #e5e5e5;
+  color: #555555;
+}
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #777777;
+  border-bottom-color: #777777;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+  left: auto;
+  right: 13px;
+}
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+  left: auto;
+  right: 100%;
+  margin-left: 0;
+  margin-right: -1px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.navbar-inverse .navbar-inner {
+  background-color: #1b1b1b;
+  background-image: -moz-linear-gradient(top, #222222, #111111);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+  background-image: -webkit-linear-gradient(top, #222222, #111111);
+  background-image: -o-linear-gradient(top, #222222, #111111);
+  background-image: linear-gradient(to bottom, #222222, #111111);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+  border-color: #252525;
+}
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+  color: #999999;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover,
+.navbar-inverse .brand:focus,
+.navbar-inverse .nav > li > a:focus {
+  color: #ffffff;
+}
+.navbar-inverse .brand {
+  color: #999999;
+}
+.navbar-inverse .navbar-text {
+  color: #999999;
+}
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+  background-color: transparent;
+  color: #ffffff;
+}
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+  color: #ffffff;
+  background-color: #111111;
+}
+.navbar-inverse .navbar-link {
+  color: #999999;
+}
+.navbar-inverse .navbar-link:hover,
+.navbar-inverse .navbar-link:focus {
+  color: #ffffff;
+}
+.navbar-inverse .divider-vertical {
+  border-left-color: #111111;
+  border-right-color: #222222;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #111111;
+  color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > a:hover .caret,
+.navbar-inverse .nav li.dropdown > a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #999999;
+  border-bottom-color: #999999;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .navbar-search .search-query {
+  color: #ffffff;
+  background-color: #515151;
+  border-color: #111111;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+  padding: 5px 15px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-inverse .btn-navbar {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e0e0e;
+  background-image: -moz-linear-gradient(top, #151515, #040404);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+  background-image: -webkit-linear-gradient(top, #151515, #040404);
+  background-image: -o-linear-gradient(top, #151515, #040404);
+  background-image: linear-gradient(to bottom, #151515, #040404);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+  border-color: #040404 #040404 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #040404;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:focus,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #040404;
+  *background-color: #000000;
+}
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+  background-color: #000000 \9;
+}
+/*@import "bootstrap/breadcrumbs.less";*/
+/*@import "bootstrap/pagination.less";*/
+/*@import "bootstrap/pager.less";*/
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 10%;
+  left: 50%;
+  z-index: 1050;
+  width: 560px;
+  margin-left: -280px;
+  background-color: #ffffff;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+  outline: none;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 10%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-header h3 {
+  margin: 0;
+  line-height: 30px;
+}
+.modal-body {
+  position: relative;
+  overflow-y: auto;
+  max-height: 400px;
+  padding: 15px;
+}
+.modal-form {
+  margin-bottom: 0;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  text-align: right;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+  *zoom: 1;
+}
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn + .btn {
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+.tooltip {
+  position: absolute;
+  z-index: 1030;
+  display: block;
+  visibility: visible;
+  font-size: 11px;
+  line-height: 1.4;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+.tooltip.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.tooltip.top {
+  margin-top: -3px;
+  padding: 5px 0;
+}
+.tooltip.right {
+  margin-left: 3px;
+  padding: 0 5px;
+}
+.tooltip.bottom {
+  margin-top: 3px;
+  padding: 5px 0;
+}
+.tooltip.left {
+  margin-left: -3px;
+  padding: 0 5px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 8px;
+  color: #ffffff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000000;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000000;
+}
+/*@import "bootstrap/popovers.less";*/
+/*@import "bootstrap/thumbnails.less";*/
+/*@import "bootstrap/media.less";*/
+/*@import "bootstrap/labels-badges.less";*/
+/*@import "bootstrap/progress-bars.less";*/
+/*@import "bootstrap/accordion.less";*/
+/*@import "bootstrap/carousel.less";*/
+/*@import "bootstrap/hero-unit.less";*/
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}
+.affix {
+  position: fixed;
+}
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  display: block;
+}
+body {
+  line-height: 1;
+}
+ol,
+ul {
+  list-style: none;
+}
+blockquote,
+q {
+  quotes: none;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+label {
+  line-height: 1.8em;
+}
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  /*  font: inherit;*/
+
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  display: block;
+}
+body {
+  line-height: 1;
+}
+ol,
+ul {
+  list-style: none;
+}
+blockquote,
+q {
+  quotes: none;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+body {
+  font-family: "Helvetica Neue", helvetica, arial, sans-serif;
+  background: #ececec;
+  min-width: 747px;
+}
+a {
+  text-decoration: none;
+  color: #11506d;
+}
+a:hover {
+  color: #0f5e83;
+}
+.loading-assets {
+  background: url('../img/loading.gif') no-repeat 0 0;
+  overflow: hidden;
+  text-indent: -1000px;
+  margin: 200px auto 0;
+  height: 95px;
+  width: 483px;
+}
+#main {
+  background-color: #fafafa;
+  border: thin solid #ccc;
+  overflow: auto;
+  width: auto;
+}
+[class^="icon-"],
+[class*=" icon-"] {
+  display: inline-block;
+  width: 14px;
+  height: 14px;
+  line-height: 14px;
+  vertical-align: text-top;
+  background-image: url("../img/glyphicons-halflings.png");
+  background-position: 14px 14px;
+  background-repeat: no-repeat;
+  margin-top: 1px;
+}
+/* White icons with optional class, or on hover/active states of certain elements */
+.icon-white,
+.nav-tabs > .active > a > [class^="icon-"],
+.nav-tabs > .active > a > [class*=" icon-"],
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"] {
+  background-image: url("../img/glyphicons-halflings-white.png");
+}
+.icon-glass {
+  background-position: 0      0;
+}
+.icon-music {
+  background-position: -24px 0;
+}
+.icon-search {
+  background-position: -48px 0;
+}
+.icon-envelope {
+  background-position: -72px 0;
+}
+.icon-heart {
+  background-position: -96px 0;
+}
+.icon-star {
+  background-position: -120px 0;
+}
+.icon-star-empty {
+  background-position: -144px 0;
+}
+.icon-user {
+  background-position: -168px 0;
+}
+.icon-film {
+  background-position: -192px 0;
+}
+.icon-th-large {
+  background-position: -216px 0;
+}
+.icon-th {
+  background-position: -240px 0;
+}
+.icon-th-list {
+  background-position: -264px 0;
+}
+.icon-ok {
+  background-position: -288px 0;
+}
+.icon-remove {
+  background-position: -312px 0;
+}
+.icon-zoom-in {
+  background-position: -336px 0;
+}
+.icon-zoom-out {
+  background-position: -360px 0;
+}
+.icon-off {
+  background-position: -384px 0;
+}
+.icon-signal {
+  background-position: -408px 0;
+}
+.icon-cog {
+  background-position: -432px 0;
+}
+.icon-trash {
+  background-position: -456px 0;
+}
+.icon-home {
+  background-position: 0 -24px;
+}
+.icon-file {
+  background-position: -24px -24px;
+}
+.icon-time {
+  background-position: -48px -24px;
+}
+.icon-road {
+  background-position: -72px -24px;
+}
+.icon-download-alt {
+  background-position: -96px -24px;
+}
+.icon-download {
+  background-position: -120px -24px;
+}
+.icon-upload {
+  background-position: -144px -24px;
+}
+.icon-inbox {
+  background-position: -168px -24px;
+}
+.icon-play-circle {
+  background-position: -192px -24px;
+}
+.icon-repeat {
+  background-position: -216px -24px;
+}
+.icon-refresh {
+  background-position: -240px -24px;
+}
+.icon-list-alt {
+  background-position: -264px -24px;
+}
+.icon-lock {
+  background-position: -287px -24px;
+}
+.icon-flag {
+  background-position: -312px -24px;
+}
+.icon-headphones {
+  background-position: -336px -24px;
+}
+.icon-volume-off {
+  background-position: -360px -24px;
+}
+.icon-volume-down {
+  background-position: -384px -24px;
+}
+.icon-volume-up {
+  background-position: -408px -24px;
+}
+

<TRUNCATED>


[17/22] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/5325bf86/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss
----------------------------------------------------------------------
diff --git a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss
deleted file mode 100644
index a202959..0000000
--- a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.cnn.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
-<channel>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-<language>en-US</language>
-<copyright>Copyright 2013 Cable News Network LP, LLLP.</copyright>
-<pubDate>Wed, 13 Mar 2013 14:53:10 EDT</pubDate>
-<ttl>10</ttl>
-<image>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<url>http://i.cdn.turner.com/cnn/.e/img/1.0/logo/cnn.logo.rss.gif</url>
-<width>144</width>
-<height>33</height>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-</image>
-<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://rss.cnn.com/rss/cnn_topstories" /><feedburner:info uri="rss/cnn_topstories" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://rss.cnn.com/rss/cnn_topstories?format=skin</thespringbox:skin><item><title>Nearly 6,000 dead pigs in Chinese river</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/cw3KqL4R3P8/index.html</link><description>5,916 dead, bloated pigs and counting.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/cw3KqL4R3P8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:42:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</feedburner:origLink></item>
-<item><title>Our favorite surprise homecomings</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CwGHwn3c8-o/</link><description>U.S. Army Specialist Daniel Riendeau surprised his daugher at school after being away in Afghanistan for almost a year.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CwGHwn3c8-o" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:37:07 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</feedburner:origLink></item>
-<item><title>Guy pushes his girlfriend off a cliff</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/B34SivME0XM/</link><description>Watch a guy push his girlfriend off a cliff. Are they still together? CNN's Jeanne Moos has the cliffhanger ending.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/B34SivME0XM" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 10:56:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</feedburner:origLink></item>
-<item><title>Watch chimney deliver the news</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/world/2013/03/13/nr-white-smoke-means-new-pope.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/vTZHE46v6RA/</link><description>White smoke billowing from the Vatican signals that a new pope has been elected.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=vTZHE46v6RA:Bf8W6ApLKdE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vTZHE46v6RA:Bf8W6ApLKdE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=vTZHE46v6RA:Bf8W6ApLKdE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/vTZHE46v6RA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:47:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/world/2013/03/13/nr-white-smoke-means-new-pope.cnn</feedburner:origLink></item>
-<item><title>It once took 3 years to pick a pope</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/l-lN9JNz55Q/</link><description>Anderson Cooper lists some of the lesser-known facts surrounding the papal election.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:hwYhL2fUgpo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:hwYhL2fUgpo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:hwYhL2fUgpo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/l-lN9JNz55Q" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:16:21 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</feedburner:origLink></item>
-<item><title>Boy dies after swim in Disney pool</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/HD-OAU1UtP8/index.html</link><description>Two days after he was pulled from the bottom of a swimming pool in 4 feet of water at a Disney World resort in Florida, a 13-year-old boy has died.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:BHdtfGQ75zo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:BHdtfGQ75zo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:BHdtfGQ75zo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/HD-OAU1UtP8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:42:01 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</feedburner:origLink></item>
-<item><title>FDA: Zmax can cause fatal heart rhythms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/xJZv4qP0q-Y/index.html</link><description>A popular antibiotic used to treat bacterial infections can cause abnormal -- and possibly fatal -- heart rhythms in some patients, according to a new warning from the Food and Drug Administration.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/xJZv4qP0q-Y" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:29:32 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</feedburner:origLink></item>
-<item><title>4 dead in N.Y. shootings</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZDB3l7eM8kw/index.html</link><description>Four people have been killed and at least two others wounded in shootings in Herkimer County, New York, state police trooper Jack Keller said Wednesday.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:5dDcKpt1H7g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:5dDcKpt1H7g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:5dDcKpt1H7g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZDB3l7eM8kw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:00:15 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</feedburner:origLink></item>
-<item><title>Iran to sue Hollywood over 'Argo'</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/_l_ASk7x-vM/index.html</link><description>First, Iran said it would produce its own cinematic response to "Argo." Now, Tehran plans to sue Hollywood filmmakers who contribute to the production of such "anti-Iran" propaganda films.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/_l_ASk7x-vM" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:26:48 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</feedburner:origLink></item>
-<item><title>15 teens dead in 3 wrecks</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/isn-AMVmNr8/index.html</link><description>Though traffic fatalities have seen a historic drop in recent decades, young drivers remain at highest risk. Weekend crashes in Ohio and Texas fit even higher risk profiles. We explore solutions to keep teen drivers safe.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/isn-AMVmNr8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:17:22 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</feedburner:origLink></item>
-<item><title>Saudi Arabia beheads 7 for stealing</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6fuBbJS8Lkc/index.html</link><description>Seven men were executed by beheading Wednesday in Saudi Arabia for stealing, according to SPA, the official Saudi New agency.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6fuBbJS8Lkc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:00:38 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</feedburner:origLink></item>
-<item><title>Ohio teen rape trial </title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZXh6dRcOkOs/index.html</link><description>Once, high school football was the thing that brought people together in the eastern Ohio town of Steubenville. That was before two star players of the football team were accused of raping a 16-year-old girl.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZXh6dRcOkOs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:03:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</feedburner:origLink></item>
-<item><title>5 things we learned at SXSW 2013</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/3Tj3auTVI9M/index.html</link><description>Hoopla surrounding South by Southwest Interactive, the techie festival that wrapped up here Tuesday, has exploded in recent years.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/3Tj3auTVI9M" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:56:16 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</feedburner:origLink></item>
-<item><title>GOP wary of Obama charm offensive</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uKBsor5RkZs/index.html</link><description>When President Barack Obama enters the conference room in the Capitol basement Wednesday to sit down with House Republicans, he'll be met by a group that says it's willing to listen but deeply skeptical of the president's so-called "charm offensive."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uKBsor5RkZs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:25:26 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</feedburner:origLink></item>
-<item><title>Opinion: Office face time overrated</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/WEPmatCeEps/index.html</link><description>Shelley Correll and Catherine Albiston say Yahoo got it wrong: research shows that people who have control over when and where they work are more productive. have better morale and are more loyal&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/WEPmatCeEps" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:02:30 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</feedburner:origLink></item>
-<item><title>Double mastectomies more common</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/health/double-mastectomy-rates-up/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/iCZe6PytzM4/index.html</link><description>If you had breast cancer in one breast, but not the other, would you choose to have both surgically removed? That a decision more women are making.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=iCZe6PytzM4:k6PMuikHO9M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=iCZe6PytzM4:k6PMuikHO9M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=iCZe6PytzM4:k6PMuikHO9M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/iCZe6PytzM4" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 14:52:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/health/double-mastectomy-rates-up/index.html</feedburner:origLink></item>
-<item><title>Exoskeleton allows paraplegics to walk</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/tech/innovation/original-ideas-exoskeleton/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/dcr7aOC4yqc/index.html</link><description>The idea of "wearable robots" may seem like something out of a movie, but this technology is already being used in real life.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=dcr7aOC4yqc:60pnjZ3hl3M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=dcr7aOC4yqc:60pnjZ3hl3M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=dcr7aOC4yqc:60pnjZ3hl3M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/dcr7aOC4yqc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:55:10 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/tech/innovation/original-ideas-exoskeleton/index.html</feedburner:origLink></item>
-<item><title>Pro soccer player quits to be priest</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Y5x38vRBxaI/</link><description>A former pro soccer player gave up his promising career for the priesthood. Erin Burnett reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Y5x38vRBxaI" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:23:35 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</feedburner:origLink></item>
-<item><title>The creepy things Facebook knows</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6t14Vaays8I/</link><description>Erin Burnett talks about a new study that reveals Facebook's ability to know your intimate and personal information.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6t14Vaays8I" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:24:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</feedburner:origLink></item>
-<item><title>Quarter size mosquitoes invade Fla.</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/G2W-pxU5etE/</link><description>Gallinippers can be 20 times the size of typical mosquitoes. They are expected to invade Florida this summer.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/G2W-pxU5etE" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 08:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</feedburner:origLink></item>
-<item><title>How you stop a deadly shark bite</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/kNb_Henz38A/</link><description>Researchers are looking in the mouths of sharks for a way to help bite victims. CNN's John Zarrella reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/kNb_Henz38A" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:36:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian gets bloody facial</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/lCnIZ62je7g/</link><description>HLN's A.J. Hammer asks an expert if Kim Kardashian's "vampire facial" really works and if it's worth the pain.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/lCnIZ62je7g" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:27:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</feedburner:origLink></item>
-<item><title>Soda ban is smart</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/gostin-soda-ban/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/0rjcXeI0txU/index.html</link><description>Lawrence Gostin says New York Mayor Michael Bloomberg's portion limit is not an assault on freedom -- it doesn't stop anyone from buying soda.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=0rjcXeI0txU:rfH4eIakBNg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=0rjcXeI0txU:rfH4eIakBNg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=0rjcXeI0txU:rfH4eIakBNg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/0rjcXeI0txU" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:52:41 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/gostin-soda-ban/index.html</feedburner:origLink></item>
-<item><title>Another view: Bloomberg overdoing it</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/smith-anti-bloomberg-bill/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/9CONpDeIsIc/index.html</link><description>Tony Smith wrote a bill banning local jurisdictions from regulating food and drink, saying it protects small businesses and lets the free market determine what's available.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=9CONpDeIsIc:7c_ubC1Y0FM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=9CONpDeIsIc:7c_ubC1Y0FM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=9CONpDeIsIc:7c_ubC1Y0FM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/9CONpDeIsIc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:48:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/smith-anti-bloomberg-bill/index.html</feedburner:origLink></item>
-<item><title>Valerie Harper: 'We're all terminal'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DcIKG783Xw0/</link><description>Valerie Harper talks to Piers Morgan about her diagnosis with a rare terminal cancer and how she is living in the moment.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/DcIKG783Xw0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:30:08 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</feedburner:origLink></item>
-<item><title>Acclaimed teacher disappears</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/us/louisiana-missing-teacher/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/_adMWWMLO-s/index.html</link><description>Terrilynn Monette's dedication earned her a "Teacher of the Year" nomination in New Orleans. But after a night of celebrating with friends, Monette vanished. That was two weeks ago.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=_adMWWMLO-s:sjlz3G6U72I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_adMWWMLO-s:sjlz3G6U72I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=_adMWWMLO-s:sjlz3G6U72I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/_adMWWMLO-s" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:03:32 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/us/louisiana-missing-teacher/index.html</feedburner:origLink></item>
-<item><title>Secret motive behind Arias sex tape?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/KMmhmMWuYFY/</link><description>Travis' coworker says she believes Jodi recorded the secret phone sex call to listen to after Travis died&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/KMmhmMWuYFY" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:55:02 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</feedburner:origLink></item>
-<item><title>Opinion: Sandberg slights single moms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/gkgo4pkSPW4/index.html</link><description>Susan Faludi: Sheryl Sandberg's "Lean In" venture could have lifted up single mothers mired in poverty, but gave them short shrift instead.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/gkgo4pkSPW4" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</feedburner:origLink></item>
-<item><title>Airport flash mob with surprise ending</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JCD9NOfjTQk/</link><description>An Oklahoma City man received a surprise proposal from his girlfriend after a two-year mission trip.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JCD9NOfjTQk" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 19:45:06 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</feedburner:origLink></item>
-<item><title>Seals, sea lion pup try to catch free rides </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Re--Lyq5Bq8/</link><description>A sea lion pup catches a ride on a kayak. CNN's Jeanne Moos reports on the adorable stowaway making waves.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Re--Lyq5Bq8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:12:43 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</feedburner:origLink></item>
-<item><title>Billy Joel surprises, plays with student</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/yCpcOyTWsS0/</link><description>Artist Billy Joel surprised everyone during a Vanderbilt University Q&amp;A session when a freshman asked to play with him.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/yCpcOyTWsS0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:07:59 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</feedburner:origLink></item>
-<item><title>Colbert asked Howard Dean what??!</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/QQJ7k8gM5TA/</link><description>Comedian Stephen Colbert tells the story of when he first met CNN's Jake Tapper on the 2004 campaign trail.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/QQJ7k8gM5TA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:09:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</feedburner:origLink></item>
-<item><title>New show 'too white'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/30hpqQsjVnM/</link><description>HBO's 'Girls' is the latest TV show depicting life in New York City without one of its most crucial elements: diversity.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/30hpqQsjVnM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 12:02:24 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</feedburner:origLink></item>
-<item><title>Zimmerman's body language</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/sPynL-fKm2k/</link><description>An expert in body language says George Zimmerman showed signs of anger in court in Florida.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sPynL-fKm2k" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:28:12 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</feedburner:origLink></item>
-<item><title>Anderson battles on 'Jeopardy!'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/TT8Ec4zVGJk/</link><description>CNN's Anderson Cooper reflects on the highs and lows of his past "Jeopardy" appearances and weighs his odds of winning.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/TT8Ec4zVGJk" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:34:51 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</feedburner:origLink></item>
-<item><title>Steinem on GOP and women</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uBSQZcXo-zc/</link><description>Activist and author Gloria Steinem analyzes the "war on women" and says extremists have taken over the Republican party.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uBSQZcXo-zc" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 18:29:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</feedburner:origLink></item>
-<item><title>Facebook fans 'lonely'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Z8koXr-c0hM/</link><description>A report on Facebook, Bill O'Reilly and the Fox "brand," Current TV"s new hire, a Pulitzer for a PA reporter, GMA rises&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Z8koXr-c0hM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 14:38:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</feedburner:origLink></item>
-<item><title>Working moms of CNN </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/P9wFf4tbbyw/</link><description>CNN goes behind the scenes with the working moms on Suzanne Malveaux's team to see how they juggle it all.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/P9wFf4tbbyw" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:37 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</feedburner:origLink></item>
-<item><title>Levon Helm remembered</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JYYIEYXqn34/</link><description>Anderson Cooper takes a look back at the life of The Band's Levon Helm and his many contributions to music.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JYYIEYXqn34" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</feedburner:origLink></item>
-<item><title>Man makes dating spreadsheet</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/vx0ARutyCFQ/</link><description>Soledad O'Brien discusses the investment banker who created an elaborate spreadsheet to keep track of his dates.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/vx0ARutyCFQ" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 11:29:57 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</feedburner:origLink></item>
-<item><title>Political dog tale duel</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/f2pQv1EmVbY/</link><description>In the RidicuList, Anderson Cooper examines which candidate's dog tale will have a greater election impact.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/f2pQv1EmVbY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:44 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</feedburner:origLink></item>
-<item><title>Vanessa Williams' perfect man</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/XdISDjJ8ssM/</link><description>Entertainer Vanessa Williams talks to CNN's Piers Morgan about "being properly in love" and relationships.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/XdISDjJ8ssM" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</feedburner:origLink></item>
-<item><title>'Only in America': Defending Axl Rose</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CE0-oIRG7AY/</link><description>Piers Morgan defends Axl Rose for deciding not to attend the Rock'N'Roll Hall of Fame induction of Guns N' Roses.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CE0-oIRG7AY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:41:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</feedburner:origLink></item>
-<item><title>Rep. won't name 'Communists'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Xwa7iI_z-DI/</link><description>Rep. Allen West (R-FL) responds to criticism after he claimed a number of Democratic reps in Congress are Communists.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Xwa7iI_z-DI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 14:59:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</feedburner:origLink></item>
-<item><title>RidicuList: Quest for 'sexy veggies'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/mxmh2VeX1es/</link><description>CNN's Anderson Cooper riffs on a staple of Courtney Stodden's grocery list, "sexy veggies."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/mxmh2VeX1es" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 13:35:19 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian for mayor?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/hyXOp5VGCeI/</link><description>Soledad O'Brien discusses Kim Kardashian's comments about running for Mayor in Glendale, California.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/hyXOp5VGCeI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 11:29:15 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</feedburner:origLink></item>
-<item><title>New judge in Martin case </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Vl4YhIIOBw4/</link><description>CNN's Erin Burnett speaks to a panel of analysts about the new judge in the Trayvon Martin shooting case.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Vl4YhIIOBw4" height="1" width="1"/&gt;</description><pubDate>Thu, 27 Sep 2012 00:17:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</feedburner:origLink></item>
-<item><title>Why my pet gets antidepressants</title><guid isPermaLink="false">http://www.cnn.com/2013/03/10/opinion/walmsley-pet-drugs/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DDRmE_nE5sA/index.html</link><description>Would you put your pet on antidepressants? CNN's Katie Walmsley says while it's easy to laugh at the thought, it's a huge disservice to animals to write off a medicated approach to their problems.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DDRmE_nE5sA:KFu2xtxk3gM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/

<TRUNCATED>


[03/22] incubator-apex-malhar git commit: Augment module names to contain (incubating).

Posted by th...@apache.org.
Augment module names to contain (incubating).


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/0051706f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/0051706f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/0051706f

Branch: refs/heads/devel-3
Commit: 0051706feba0c236621c767f1477364d12059c73
Parents: cbafbb8
Author: Thomas Weise <th...@datatorrent.com>
Authored: Thu Nov 5 20:17:25 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:13 2015 -0800

----------------------------------------------------------------------
 NOTICE                           | 2 +-
 apps/logstream/pom.xml           | 2 +-
 apps/pom.xml                     | 2 +-
 benchmark/pom.xml                | 2 +-
 contrib/pom.xml                  | 2 +-
 demos/distributedistinct/pom.xml | 2 +-
 demos/echoserver/pom.xml         | 2 +-
 demos/frauddetect/pom.xml        | 2 +-
 demos/machinedata/pom.xml        | 2 +-
 demos/mobile/pom.xml             | 2 +-
 demos/mrmonitor/pom.xml          | 2 +-
 demos/mroperator/pom.xml         | 2 +-
 demos/pi/pom.xml                 | 2 +-
 demos/pom.xml                    | 2 +-
 demos/r/pom.xml                  | 2 +-
 demos/twitter/pom.xml            | 2 +-
 demos/uniquecount/pom.xml        | 2 +-
 demos/wordcount/pom.xml          | 2 +-
 demos/yahoofinance/pom.xml       | 2 +-
 library/pom.xml                  | 2 +-
 pom.xml                          | 2 +-
 samples/pom.xml                  | 2 +-
 22 files changed, 22 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index d0f6855..a511388 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,4 +1,4 @@
-Apache Apex (incubating)
+Apache Apex Malhar (incubating)
 Copyright (c) 2015 The Apache Software Foundation
 
 This product includes software developed at

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/apps/logstream/pom.xml
----------------------------------------------------------------------
diff --git a/apps/logstream/pom.xml b/apps/logstream/pom.xml
index 3811317..fb66158 100644
--- a/apps/logstream/pom.xml
+++ b/apps/logstream/pom.xml
@@ -37,7 +37,7 @@
     <semver.plugin.skip>true</semver.plugin.skip>
   </properties>
 
-  <name>Apache Apex Malhar Logstream Application</name>
+  <name>Apache Apex Malhar (incubating) Logstream Application</name>
 
   <build>
     <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/apps/pom.xml
----------------------------------------------------------------------
diff --git a/apps/pom.xml b/apps/pom.xml
index 65c8ac5..55b1fa4 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -29,7 +29,7 @@
   </parent>
 
   <artifactId>malhar-apps</artifactId>
-  <name>Apache Apex Malhar Apps</name>
+  <name>Apache Apex Malhar (incubating) Apps</name>
   <packaging>pom</packaging>
 
   <modules>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 414e86f..0f87ad8 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -32,7 +32,7 @@
   <packaging>jar</packaging>
 
   <!-- change these to the appropriate values -->
-  <name>Apache Apex Malhar Benchmark</name>
+  <name>Apache Apex Malhar (incubating) Benchmark</name>
   <description>Benchmark applications package</description>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/contrib/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/pom.xml b/contrib/pom.xml
index fb956dc..0e0a4f6 100755
--- a/contrib/pom.xml
+++ b/contrib/pom.xml
@@ -29,7 +29,7 @@
   </parent>
 
   <artifactId>malhar-contrib</artifactId>
-  <name>Apache Apex Malhar Contrib Library</name>
+  <name>Apache Apex Malhar (incubating) Contrib Library</name>
   <packaging>jar</packaging>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/distributedistinct/pom.xml
----------------------------------------------------------------------
diff --git a/demos/distributedistinct/pom.xml b/demos/distributedistinct/pom.xml
index 7077e7c..9ad2671 100644
--- a/demos/distributedistinct/pom.xml
+++ b/demos/distributedistinct/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>distributedistinct</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Distributed Distinct Demo</name>
+  <name>Apache Apex Malhar (incubating) Distributed Distinct Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/echoserver/pom.xml
----------------------------------------------------------------------
diff --git a/demos/echoserver/pom.xml b/demos/echoserver/pom.xml
index 68d7fa7..12289cf 100644
--- a/demos/echoserver/pom.xml
+++ b/demos/echoserver/pom.xml
@@ -32,7 +32,7 @@
   <packaging>jar</packaging>
 
   <!-- change these to the appropriate values -->
-  <name>Apache Apex Malhar EchoServer Demo</name>
+  <name>Apache Apex Malhar (incubating) EchoServer Demo</name>
   <description>A demo server that echos data sent by a network client back to it</description>
 </project>
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 13f639c..67ac15d 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>frauddetect-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Fraud Detect Demo</name>
+  <name>Apache Apex Malhar (incubating) Fraud Detect Demo</name>
   <description>DataTorrent demo applications that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/machinedata/pom.xml
----------------------------------------------------------------------
diff --git a/demos/machinedata/pom.xml b/demos/machinedata/pom.xml
index 3e21ebc..dbbad05 100644
--- a/demos/machinedata/pom.xml
+++ b/demos/machinedata/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>machinedata-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar MachineData Demo</name>
+  <name>Apache Apex Malhar (incubating) MachineData Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/mobile/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mobile/pom.xml b/demos/mobile/pom.xml
index 927d3e9..d12df5b 100644
--- a/demos/mobile/pom.xml
+++ b/demos/mobile/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>mobile-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Mobile Demo</name>
+  <name>Apache Apex Malhar (incubating) Mobile Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/mrmonitor/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/pom.xml b/demos/mrmonitor/pom.xml
index 570b01c..6a1d7ca 100644
--- a/demos/mrmonitor/pom.xml
+++ b/demos/mrmonitor/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>mrmonitor</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar MR Monitoring Demo</name>
+  <name>Apache Apex Malhar (incubating) MR Monitoring Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/mroperator/pom.xml
----------------------------------------------------------------------
diff --git a/demos/mroperator/pom.xml b/demos/mroperator/pom.xml
index 4bc42b2..99b45bf 100644
--- a/demos/mroperator/pom.xml
+++ b/demos/mroperator/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>mroperator</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar MR Operator Demo</name>
+  <name>Apache Apex Malhar (incubating) MR Operator Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index 4a8326a..0e787d2 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>pi-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Pi Demo</name>
+  <name>Apache Apex Malhar (incubating) Pi Demo</name>
   <description>DataTorrent demo applications that calculate the value of Pi. This is a starting point to understand how DataTorrent works.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pom.xml b/demos/pom.xml
index 0a96bfa..7c6c23e 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -30,7 +30,7 @@
 
   <artifactId>malhar-demos</artifactId>
   <packaging>pom</packaging>
-  <name>Apache Apex Malhar Demos</name>
+  <name>Apache Apex Malhar (incubating) Demos</name>
 
   <properties>
     <datatorrent.apppackage.classpath>lib/*.jar</datatorrent.apppackage.classpath>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 4fbbb66..219d865 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>r-demo</artifactId>
   <packaging>jar</packaging>
 
- <name>Apache Apex Malhar R Demo</name>
+ <name>Apache Apex Malhar (incubating) R Demo</name>
   <description>DataTorrent demo applications for using R.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/twitter/pom.xml
----------------------------------------------------------------------
diff --git a/demos/twitter/pom.xml b/demos/twitter/pom.xml
index d52f066..905e856 100644
--- a/demos/twitter/pom.xml
+++ b/demos/twitter/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>twitter-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Twitter Demo</name>
+  <name>Apache Apex Malhar (incubating) Twitter Demo</name>
   <description>Twitter Rolling Top Words application demonstrates real-time computations over a sliding window.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/uniquecount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/uniquecount/pom.xml b/demos/uniquecount/pom.xml
index b55e2c7..944f9e0 100644
--- a/demos/uniquecount/pom.xml
+++ b/demos/uniquecount/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>uniquecount</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Unique Count Demo</name>
+  <name>Apache Apex Malhar (incubating) Unique Count Demo</name>
   <description></description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index dd13641..b8afcba 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>wordcount-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Wordcount Demo</name>
+  <name>Apache Apex Malhar (incubating) Wordcount Demo</name>
   <description>A very simple application that demonstrates DataTorrent Platform’s streaming window feature.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index c6595b1..0402143 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -25,7 +25,7 @@
   <artifactId>yahoo-finance-demo</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Yahoo! Finance Demo</name>
+  <name>Apache Apex Malhar (incubating) Yahoo! Finance Demo</name>
   <description>DataTorrent demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
 
   <parent>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/library/pom.xml
----------------------------------------------------------------------
diff --git a/library/pom.xml b/library/pom.xml
index b149001..636dc7c 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -32,7 +32,7 @@
   <artifactId>malhar-library</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Library</name>
+  <name>Apache Apex Malhar (incubating) Library</name>
 
   <properties>
     <maven.deploy.skip>false</maven.deploy.skip>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2819bd8..52588f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
   <artifactId>malhar</artifactId>
   <version>3.3.0-incubating-SNAPSHOT</version>
   <packaging>pom</packaging>
-  <name>Apache Apex Malhar</name>
+  <name>Apache Apex Malhar (incubating)</name>
   <url>http://apex.apache.org</url>
 
   <licenses>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/0051706f/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index a4aaf8a..f4f42be 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -32,7 +32,7 @@
   <artifactId>malhar-samples</artifactId>
   <packaging>jar</packaging>
 
-  <name>Apache Apex Malhar Samples</name>
+  <name>Apache Apex Malhar (incubating) Samples</name>
 
   <dependencies>
     <dependency>


[07/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/malhar.css
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/malhar.css b/contrib/src/main/html/siteops/malhar.css
deleted file mode 100644
index b2f9a8b..0000000
--- a/contrib/src/main/html/siteops/malhar.css
+++ /dev/null
@@ -1,4564 +0,0 @@
-/**
- * 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.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-
-  max-width: 100%;
-  /* Part 1: Set a maxium relative to the parent */
-
-  width: auto\9;
-  /* IE7-8 need help adjusting responsive images */
-
-  height: auto;
-  /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-@media print {
-  * {
-    text-shadow: none !important;
-    color: #000 !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-.img-rounded {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-.img-circle {
-  -webkit-border-radius: 500px;
-  -moz-border-radius: 500px;
-  border-radius: 500px;
-}
-/*@import "bootstrap/grid.less";*/
-/*@import "bootstrap/layouts.less";*/
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  font-weight: 200;
-  line-height: 30px;
-}
-small {
-  font-size: 85%;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-cite {
-  font-style: normal;
-}
-.muted {
-  color: #999999;
-}
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-.text-warning {
-  color: #c09853;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-.text-error {
-  color: #b94a48;
-}
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-.text-info {
-  color: #3a87ad;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-.text-success {
-  color: #468847;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-h1 {
-  font-size: 35.75px;
-}
-h2 {
-  font-size: 29.25px;
-}
-h3 {
-  font-size: 22.75px;
-}
-h4 {
-  font-size: 16.25px;
-}
-h5 {
-  font-size: 13px;
-}
-h6 {
-  font-size: 11.049999999999999px;
-}
-h1 small {
-  font-size: 22.75px;
-}
-h2 small {
-  font-size: 16.25px;
-}
-h3 small {
-  font-size: 13px;
-}
-h4 small {
-  font-size: 13px;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: 20px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 20px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 10px;
-}
-.dl-horizontal {
-  *zoom: 1;
-}
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.dl-horizontal:after {
-  clear: both;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16.25px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-blockquote.pull-right small:before {
-  content: '';
-}
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 11px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-form {
-  margin: 0 0 20px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 13px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  vertical-align: middle;
-}
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-textarea {
-  height: auto;
-}
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear .2s, box-shadow linear .2s;
-  -moz-transition: border linear .2s, box-shadow linear .2s;
-  -o-transition: border linear .2s, box-shadow linear .2s;
-  transition: border linear .2s, box-shadow linear .2s;
-}
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-select {
-  width: 220px;
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-.controls-row {
-  *zoom: 1;
-}
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.controls-row:after {
-  clear: both;
-}
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-actions:after {
-  clear: both;
-}
-.help-block,
-.help-inline {
-  color: #595959;
-}
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  vertical-align: middle;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 13px;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 10px;
-}
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-
-/*@import "bootstrap/sprites.less";*/
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #ffffff;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: default;
-}
-.open {
-  *z-index: 1000;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.dropdown-submenu {
-  position: relative;
-}
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-  -moz-border-radius: 5px 5px 5px 0;
-  border-radius: 5px 5px 5px 0;
-}
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #cccccc;
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-.dropdown-submenu.pull-left {
-  float: none;
-}
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/*@import "bootstrap/component-animations.less";*/
-/*@import "bootstrap/close.less";*/
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 20px;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #333333;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 11px 19px;
-  font-size: 16.25px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.049999999999999px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 0 6px;
-  font-size: 9.75px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0044cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: #0088cc;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  font-size: 0;
-  vertical-align: middle;
-  white-space: nowrap;
-  *margin-left: .3em;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  font-size: 0;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 13px;
-}
-.btn-group > .btn-mini {
-  font-size: 9.75px;
-}
-.btn-group > .btn-small {
-  font-size: 11.049999999999999px;
-}
-.btn-group > .btn-large {
-  font-size: 16.25px;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-  -moz-border-radius: 6px 6px 0 0;
-  border-radius: 6px 6px 0 0;
-}
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-.alert h4 {
-  margin: 0;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-success h4 {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-info h4 {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 20px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.nav .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.nav > .disabled > a {
-  color: #999999;
-}
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 20px;
-  *position: relative;
-  *z-index: 2;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  *zoom: 1;
-}
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-inner:after {
-  clear: both;
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-.navbar-link {
-  color: #777777;
-}
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-left: 1px solid #f2f2f2;
-  border-right: 1px solid #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  margin-bottom: 0;
-  padding: 4px 14px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 1px 10px rgba(0,0,0,.1);
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-.navbar .nav > li {
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #333333;
-  text-decoration: none;
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e5e5e5;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .nav > li > .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .nav > li > .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #e5e5e5;
-  color: #555555;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  left: auto;
-  right: 100%;
-  margin-left: 0;
-  margin-right: -1px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-  border-color: #252525;
-}
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-.navbar-inverse .brand {
-  color: #999999;
-}
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-.navbar-inverse .divider-vertical {
-  border-left-color: #111111;
-  border-right-color: #222222;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #111111;
-  color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #040404;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-/*@import "bootstrap/breadcrumbs.less";*/
-/*@import "bootstrap/pagination.less";*/
-/*@import "bootstrap/pager.less";*/
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-  outline: none;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 10%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1030;
-  display: block;
-  visibility: visible;
-  font-size: 11px;
-  line-height: 1.4;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -3px;
-  padding: 5px 0;
-}
-.tooltip.right {
-  margin-left: 3px;
-  padding: 0 5px;
-}
-.tooltip.bottom {
-  margin-top: 3px;
-  padding: 5px 0;
-}
-.tooltip.left {
-  margin-left: -3px;
-  padding: 0 5px;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 5px 5px 0;
-  border-top-color: #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-width: 5px 5px 5px 0;
-  border-right-color: #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-width: 0 5px 5px;
-  border-bottom-color: #000000;
-}
-/*@import "bootstrap/popovers.less";*/
-/*@import "bootstrap/thumbnails.less";*/
-/*@import "bootstrap/media.less";*/
-/*@import "bootstrap/labels-badges.less";*/
-/*@import "bootstrap/progress-bars.less";*/
-/*@import "bootstrap/accordion.less";*/
-/*@import "bootstrap/carousel.less";*/
-/*@import "bootstrap/hero-unit.less";*/
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.affix {
-  position: fixed;
-}
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-menu,
-nav,
-section {
-  display: block;
-}
-body {
-  line-height: 1;
-}
-ol,
-ul {
-  list-style: none;
-}
-blockquote,
-q {
-  quotes: none;
-}
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-  content: '';
-  content: none;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-label {
-  line-height: 1.8em;
-}
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  /*  font: inherit;*/
-
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-menu,
-nav,
-section {
-  display: block;
-}
-body {
-  line-height: 1;
-}
-ol,
-ul {
-  list-style: none;
-}
-blockquote,
-q {
-  quotes: none;
-}
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-  content: '';
-  content: none;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-body {
-  font-family: "Helvetica Neue", helvetica, arial, sans-serif;
-  background: #ececec;
-  min-width: 747px;
-}
-a {
-  text-decoration: none;
-  color: #11506d;
-}
-a:hover {
-  color: #0f5e83;
-}
-.loading-assets {
-  background: url('../img/loading.gif') no-repeat 0 0;
-  overflow: hidden;
-  text-indent: -1000px;
-  margin: 200px auto 0;
-  height: 95px;
-  width: 483px;
-}
-#main {
-  background-color: #fafafa;
-  border: thin solid #ccc;
-  overflow: auto;
-  width: auto;
-}
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../img/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-  margin-top: 1px;
-}
-/* White icons with optional class, or on hover/active states of certain elements */
-.icon-white,
-.nav-tabs > .active > a > [class^="icon-"],
-.nav-tabs > .active > a > [class*=" icon-"],
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"] {
-  background-image: url("../img/glyphicons-halflings-white.png");
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24

<TRUNCATED>


[14/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
Cleanup of web resources


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/9d4baef2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/9d4baef2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/9d4baef2

Branch: refs/heads/devel-3
Commit: 9d4baef245d782dab7386c072dc5d062eafbb38c
Parents: 0932130
Author: Pramod Immaneni <pr...@datatorrent.com>
Authored: Fri Nov 6 10:58:17 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:16 2015 -0800

----------------------------------------------------------------------
 apps/logstream/src/main/html/ClientData.js      |   39 +
 apps/logstream/src/main/html/ClientData.php     |   33 +
 .../src/main/html/DrawPageViewTimeChart.js      |  173 +
 .../src/main/html/PageViewTimeData.php          |  109 +
 apps/logstream/src/main/html/Server404.php      |   37 +
 apps/logstream/src/main/html/ServerLoad.php     |  100 +
 .../logstream/src/main/html/TopIpClientChart.js |   55 +
 .../logstream/src/main/html/TopIpClientData.php |   37 +
 apps/logstream/src/main/html/TopIpData.js       |   54 +
 apps/logstream/src/main/html/TopIpData.php      |   37 +
 apps/logstream/src/main/html/TopServer.js       |   53 +
 apps/logstream/src/main/html/TopServer.php      |   37 +
 apps/logstream/src/main/html/TopUrlChart.js     |   53 +
 apps/logstream/src/main/html/TopUrlData.php     |   37 +
 apps/logstream/src/main/html/TotalViews.js      |   38 +
 apps/logstream/src/main/html/TotalViews.php     |   27 +
 apps/logstream/src/main/html/Url404.js          |   64 +
 apps/logstream/src/main/html/Url404.php         |   37 +
 apps/logstream/src/main/html/global.js          |  133 +
 apps/logstream/src/main/html/index.php          |  176 +
 apps/logstream/src/main/html/info.php           |   22 +
 apps/logstream/src/main/html/malhar.css         | 4564 +++++++++++++++++
 apps/logstream/src/main/html/server.js          |  115 +
 apps/logstream/src/main/html/serverfail.js      |   64 +
 contrib/src/main/html/adsdimension/global.js    |  379 --
 contrib/src/main/html/adsdimension/index.php    |  235 -
 contrib/src/main/html/adsdimension/json.php     |   84 -
 .../src/main/html/adsdimension/main_banner.png  |  Bin 2181 -> 0 bytes
 contrib/src/main/html/adsdimension/malhar.css   | 4688 ------------------
 contrib/src/main/html/machinedata/global.js     |  269 -
 contrib/src/main/html/machinedata/index.php     |  269 -
 contrib/src/main/html/machinedata/json.php      |   96 -
 .../src/main/html/machinedata/main_banner.png   |  Bin 10002 -> 0 bytes
 contrib/src/main/html/machinedata/malhar.css    | 4688 ------------------
 contrib/src/main/html/siteops/ClientData.js     |   39 -
 contrib/src/main/html/siteops/ClientData.php    |   33 -
 .../main/html/siteops/DrawPageViewTimeChart.js  |  173 -
 .../src/main/html/siteops/PageViewTimeData.php  |  109 -
 contrib/src/main/html/siteops/Server404.php     |   37 -
 contrib/src/main/html/siteops/ServerLoad.php    |  100 -
 .../src/main/html/siteops/TopIpClientChart.js   |   55 -
 .../src/main/html/siteops/TopIpClientData.php   |   37 -
 contrib/src/main/html/siteops/TopIpData.js      |   54 -
 contrib/src/main/html/siteops/TopIpData.php     |   37 -
 contrib/src/main/html/siteops/TopServer.js      |   53 -
 contrib/src/main/html/siteops/TopServer.php     |   37 -
 contrib/src/main/html/siteops/TopUrlChart.js    |   53 -
 contrib/src/main/html/siteops/TopUrlData.php    |   37 -
 contrib/src/main/html/siteops/TotalViews.js     |   38 -
 contrib/src/main/html/siteops/TotalViews.php    |   27 -
 contrib/src/main/html/siteops/Url404.js         |   64 -
 contrib/src/main/html/siteops/Url404.php        |   37 -
 contrib/src/main/html/siteops/global.js         |  133 -
 contrib/src/main/html/siteops/index.php         |  177 -
 contrib/src/main/html/siteops/info.php          |   22 -
 contrib/src/main/html/siteops/main_banner.png   |  Bin 2181 -> 0 bytes
 contrib/src/main/html/siteops/malhar.css        | 4564 -----------------
 contrib/src/main/html/siteops/server.js         |  115 -
 contrib/src/main/html/siteops/serverfail.js     |   64 -
 demos/machinedata/src/main/html/global.js       |  269 +
 demos/machinedata/src/main/html/index.php       |  268 +
 demos/machinedata/src/main/html/json.php        |   96 +
 demos/machinedata/src/main/html/malhar.css      | 4688 ++++++++++++++++++
 63 files changed, 11415 insertions(+), 16803 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/ClientData.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/ClientData.js b/apps/logstream/src/main/html/ClientData.js
new file mode 100644
index 0000000..28df87a
--- /dev/null
+++ b/apps/logstream/src/main/html/ClientData.js
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawClientDataTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        document.getElementById('totaldata').innerHTML = pts[0];
+      }
+    }
+    connect.open('GET',  "ClientData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/ClientData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/ClientData.php b/apps/logstream/src/main/html/ClientData.php
new file mode 100644
index 0000000..5e97e96
--- /dev/null
+++ b/apps/logstream/src/main/html/ClientData.php
@@ -0,0 +1,33 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(9);
+
+// result array
+$result = array();
+
+$value = $redis->get(1);
+$result[] = $value;
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/DrawPageViewTimeChart.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/DrawPageViewTimeChart.js b/apps/logstream/src/main/html/DrawPageViewTimeChart.js
new file mode 100644
index 0000000..9a71f14
--- /dev/null
+++ b/apps/logstream/src/main/html/DrawPageViewTimeChart.js
@@ -0,0 +1,173 @@
+/*
+ * 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.
+ */
+/**
+ * Functions for drawing page view vs time chart.
+ */
+
+
+function PageViewTimeDataUrl()
+{    
+    var url = "PageViewTimeData.php?";
+    url += "from=";
+    url += Math.floor(pageViewLookback);
+    if (pageViewUrl) 
+    {
+       url += "&url=" + pageViewUrl;   
+    }
+    //url += "&url=mydomain.com/services.php?serviceid=6";
+    return url;  
+}
+
+function RenderPageViewTimeChart()
+{
+  // create/delete rows 
+  if (pageViewTable.getNumberOfRows() < pageDataPoints.length)
+  {    
+    var numRows = pageDataPoints.length - pageViewTable.getNumberOfRows();
+    pageViewTable.addRows(numRows);
+  } else {
+    for(var i=(pageViewTable.getNumberOfRows()-1); i >= pageDataPoints.length; i--)
+    {
+      pageViewTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/cost data points. 
+  for(var i=0; i < pageViewTable.getNumberOfRows(); i++)
+  {
+    //if(parseFloat(aggrDataPoints[i].cost) < 500) continue;
+    pageViewTable.setCell(i, 0, new Date(parseInt(pageDataPoints[i].timestamp)));
+    pageViewTable.setCell(i, 1, parseFloat(pageDataPoints[i].view));
+  }
+    
+  // get options
+  var page = document.getElementById('page').value;
+  var index = document.getElementById('index').value;
+  var title = "ALL Urls (PVS/Min)";
+  if (page == "home") title = "home.php (PVS/Min)";
+  if (page == "contact") title = "contactus.php (PVS/Min)";
+  if (page == "about") title = "about.php (PVS/Min)";
+  if (page == "support") title = "support.php (PVS/Min)";
+  if (page == "product") {
+    title = "product.php-" + index + " (PVS/Min)";
+  }
+  if (page == "services") {
+    title = "services.php-" + index + " (PVS/Min)";
+  }
+  if (page == "products") {
+    title = "products.php-" + index + " (PVS/Min)";
+  }
+
+  var options = { pointSize: 0, lineWidth : 1, legend : {position : 'top'} };
+  options.title = title;
+
+  // Draw line chart.
+  pageViewChart.draw(PageViewView, options); 
+}
+
+function DrawPageViewTimeChart()
+{
+  var url = PageViewTimeDataUrl();
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        pageViewData = connect.response;
+        var pts = JSON.parse(pageViewData);
+        for(var i=0; i <  pts.length; i++) 
+        {
+          pageDataPoints.push(pts[i]);
+          delete pts[i];
+        }
+        delete pts;
+        sortByKey(pageDataPoints, "timestamp");
+        RenderPageViewTimeChart();
+        delete pageViewData;
+        delete pageDataPoints;
+        pageDataPoints = new Array();
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  pageViewLookback = (new Date().getTime()/1000) - (3600 * pageViewInterval)-60;
+}
+
+
+function HandlePageViewTimeSubmit()
+{
+  // remove old time  
+  if(pageNowPlaying) clearInterval(pageNowPlaying); 
+
+  // get submit values 
+  var page = document.getElementById('page').value;
+  var index = document.getElementById('index').value;
+  if (page == "all") pageViewUrl ="";
+  if (page == "home") pageViewUrl = "mydomain.com/home.php";
+  if (page == "contact") pageViewUrl = "mydomain.com/contactus.php";
+  if (page == "about") pageViewUrl = "mydomain.com/about.php";
+  if (page == "support") pageViewUrl = "mydomain.com/support.php";
+  if (page == "product")
+  {
+    pageViewUrl = "mydomain.com/products.php";   
+    if (index && (index.length > 0)) pageViewUrl += "?productid=" + index;
+  }
+  if (page == "services") 
+  {
+    pageViewUrl = "mydomain.com/services.php";   
+    if (index && (index.length > 0)) pageViewUrl += "?serviceid=" + index;
+  }
+  if (page == "partners") 
+  {
+    pageViewUrl = "mydomain.com/partners.php";   
+    if (index && (index.length > 0)) pageViewUrl += "?partnerid=" + index;
+  }
+  pageViewLookback = document.getElementById('pageviewlookback').value;
+  if ( !pageViewLookback || (pageViewLookback == "")) {
+    pageViewLookback = (new Date().getTime()/1000) - 3600;
+  }  else {
+    pageViewLookback = (new Date().getTime()/1000) - 3600 * pageViewLookback;
+  }
+
+  // set from values  
+  document.getElementById('page').value = page;
+  document.getElementById('index').value = index;
+  var lookback = document.getElementById('pageviewlookback').value;
+  document.getElementById('pageviewlookback').value = lookback;
+  pageViewInterval = lookback;
+    
+  // draw chart
+  DrawPageViewTimeChart();
+  pageNowPlaying = setInterval(DrawPageViewTimeChart, 60 * 1000);
+}
+
+function handleUrlChange()
+{
+  var page = document.getElementById('page').value;
+  if ((page == "home")||(page == "contact")||(page == "about")||(page == "support") || (page =="all"))
+  {
+    document.getElementById('index').value = 0;
+    document.getElementById('index').disabled = "true";   
+  } else {
+    document.getElementById('index').value = 0;
+    document.getElementById('index').disabled = ""; 
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/PageViewTimeData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/PageViewTimeData.php b/apps/logstream/src/main/html/PageViewTimeData.php
new file mode 100644
index 0000000..7c42679
--- /dev/null
+++ b/apps/logstream/src/main/html/PageViewTimeData.php
@@ -0,0 +1,109 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(1);
+$format = 'YmdHi';
+$incr = 60;
+
+// Get from date 
+$from = $_GET['from'];
+if (!$from || empty($from)) {
+  $from  = time()-3600;
+}
+
+// get url   
+$url = $_GET['url'];
+
+// result array
+$result = array();
+
+while ($from < time()) 
+{
+  $date = gmdate($format, $from);
+  if (!$url || empty($url))
+  {
+    // view total   
+    $total = 0;
+        
+    // home.php views
+    $key =  'm|' . $date . '|0:mydomain.com/home.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+            
+    // contactus.php views
+    $key =  'm|' . $date . '|0:mydomain.com/contactus.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+    
+    // contactus.php views
+    $key =  'm|' . $date . '|0:mydomain.com/about.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+    
+    // contactus.php views
+    $key =  'm|' . $date . '|0:mydomain.com/support.php';
+    $arr =  $redis->hGetAll($key);
+    $total += $arr[1];
+    
+    // products.php 
+    for ($i = 0; $i < 100; $i++)
+    {      
+        $key =  'm|' . $date . '|0:mydomain.com/products.php?productid='. $i;
+        $arr =  $redis->hGetAll($key);
+        $total += $arr[1];
+    }
+
+    // services.php 
+    for ($i = 0; $i < 100; $i++)
+    {      
+        $key =  'm|' . $date . '|0:mydomain.com/services.php?serviceid='. $i;
+        $arr =  $redis->hGetAll($key);
+        $total += $arr[1];
+    }
+
+    // partners.php 
+    for ($i = 0; $i < 100; $i++)
+    {      
+        $key =  'm|' . $date . '|0:mydomain.com/partners.php?partnerid='. $i;
+        $arr =  $redis->hGetAll($key);
+        $total += $arr[1];
+    }
+
+    // store result in array   
+    $result[] = array("timestamp" => $from * 1000, "url" => "all", "view" => $total);
+
+  } else {
+    
+    $key =  'm|' . $date . '|0:' . $url;
+    $arr = $redis->hGetAll($key);
+    if ($arr)
+    {
+      $result[] = array("timestamp" => $from * 1000, "url" => $url, "view" => $arr[1]);
+    }
+  }
+  $from += $incr;
+}
+
+array_pop($result);
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/Server404.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/Server404.php b/apps/logstream/src/main/html/Server404.php
new file mode 100644
index 0000000..314d5e9
--- /dev/null
+++ b/apps/logstream/src/main/html/Server404.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(8);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/ServerLoad.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/ServerLoad.php b/apps/logstream/src/main/html/ServerLoad.php
new file mode 100644
index 0000000..d2f4dca
--- /dev/null
+++ b/apps/logstream/src/main/html/ServerLoad.php
@@ -0,0 +1,100 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(4);
+$format = 'YmdHi';
+$incr = 60;
+
+// Get from date 
+$from = $_GET['from'];
+if (!$from || empty($from)) {
+  $from  = time()-3600;
+}
+
+// get server   
+$server = $_GET['server'];
+
+// result array
+$result = array();
+
+while ($from < time()) 
+{
+  $date = gmdate($format, $from);
+  if (!$server || empty($server) || ($server == "all"))
+  {
+    // total server load  
+    $total = 0;
+          
+    // server loads 
+    $key =  'm|' . $date . '|0:server0.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server1.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server2.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server3.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server4.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server5.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server6.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server7.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server8.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+    $key =  'm|' . $date . '|0:server9.mydomain.com:80';
+    $arr = $redis->hGetAll($key);
+    $total += $arr[1];
+
+    // add to result 
+
+    // add to result 
+    $result[] = array("timestamp" => $from * 1000, "server" => "all", "view" => $total);
+
+  } else {
+    
+    $key =  'm|' . $date . '|0:' . $server;
+    $arr = $redis->hGetAll($key);
+    if ($arr)
+    {
+      $result[] = array("timestamp" => $from * 1000, "server" => $server, "view" => $arr[1]);
+    }
+  }
+  $from += $incr;
+}
+
+array_pop($result);
+print json_encode($result);
+
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopIpClientChart.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpClientChart.js b/apps/logstream/src/main/html/TopIpClientChart.js
new file mode 100644
index 0000000..ee1a0c8
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpClientChart.js
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top IpClient table.
+ */
+
+function DrawTopIpClientTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        topIpClientTable = new google.visualization.DataTable();
+        topIpClientTable.addColumn('string', 'Client IP');
+        topIpClientTable.addColumn('number', 'requests/sec');
+        topIpClientTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          topIpClientTable.setCell(i, 0, row[0]);
+          topIpClientTable.setCell(i, 1, parseInt(row[1]));
+          delete row
+          delete pts[i];
+        }
+        topIpClientTableChart.draw(topIpClientTable, {showRowNumber: true});
+        delete topIpClientTable;
+        delete data;
+        delete pts;
+        //document.getElementById('top_IpClient_div').innerHTML = data;
+      }
+    }
+    connect.open('GET',  "TopIpClientData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopIpClientData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpClientData.php b/apps/logstream/src/main/html/TopIpClientData.php
new file mode 100644
index 0000000..ddb644d
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpClientData.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(3);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopIpData.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpData.js b/apps/logstream/src/main/html/TopIpData.js
new file mode 100644
index 0000000..e6f7f67
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpData.js
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawRiskyClientTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        var riskyCleintTable = new google.visualization.DataTable();
+        riskyCleintTable.addColumn('string', 'Client Ip');
+        riskyCleintTable.addColumn('number', 'bytes/sec');
+        riskyCleintTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          riskyCleintTable.setCell(i, 0, row[0]);
+          riskyCleintTable.setCell(i, 1, parseInt(row[1]));
+        }
+        //document.getElementById('risky_client_div').innerHTML = data;
+        //document.getElementById('risky_client_div').innerHTML = riskyCleintTable.getNumberOfRows();
+        riskyClientTableChart.draw(riskyCleintTable, {showRowNumber: true});
+        delete riskyCleintTable;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "TopIpData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopIpData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopIpData.php b/apps/logstream/src/main/html/TopIpData.php
new file mode 100644
index 0000000..ce07ad8
--- /dev/null
+++ b/apps/logstream/src/main/html/TopIpData.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(6);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopServer.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopServer.js b/apps/logstream/src/main/html/TopServer.js
new file mode 100644
index 0000000..b94a876
--- /dev/null
+++ b/apps/logstream/src/main/html/TopServer.js
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawTopServerTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        topServerTable = new google.visualization.DataTable();
+        topServerTable.addColumn('string', 'SERVER');
+        topServerTable.addColumn('number', 'requests/sec');
+        topServerTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          topServerTable.setCell(i, 0, row[0]);
+          topServerTable.setCell(i, 1, parseInt(row[1]));
+          delete pts[i];
+        }
+        topServerTableChart.draw(topServerTable, {showRowNumber: true});
+        delete topServerTable;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "TopServer.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopServer.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopServer.php b/apps/logstream/src/main/html/TopServer.php
new file mode 100644
index 0000000..91bfab5
--- /dev/null
+++ b/apps/logstream/src/main/html/TopServer.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(10);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopUrlChart.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopUrlChart.js b/apps/logstream/src/main/html/TopUrlChart.js
new file mode 100644
index 0000000..646bb69
--- /dev/null
+++ b/apps/logstream/src/main/html/TopUrlChart.js
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawTopUrlTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        topUrlTable = new google.visualization.DataTable();
+        topUrlTable.addColumn('string', 'URL');
+        topUrlTable.addColumn('number', 'requests/sec');
+        topUrlTable.addRows(10);
+        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
+        {
+          var row = pts[i].split("##");
+          topUrlTable.setCell(i, 0, row[0]);
+          topUrlTable.setCell(i, 1, parseInt(row[1]));
+          delete pts[i];
+        }
+        topUrlTableChart.draw(topUrlTable, {showRowNumber: true});
+        delete topUrlTable;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "TopUrlData.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TopUrlData.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TopUrlData.php b/apps/logstream/src/main/html/TopUrlData.php
new file mode 100644
index 0000000..52c3ddf
--- /dev/null
+++ b/apps/logstream/src/main/html/TopUrlData.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(2);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 20; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TotalViews.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TotalViews.js b/apps/logstream/src/main/html/TotalViews.js
new file mode 100644
index 0000000..58ecf7e
--- /dev/null
+++ b/apps/logstream/src/main/html/TotalViews.js
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawTotalViewsTableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        document.getElementById('totalviews').innerHTML = data;
+      }
+    }
+    connect.open('GET',  "TotalViews.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/TotalViews.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/TotalViews.php b/apps/logstream/src/main/html/TotalViews.php
new file mode 100644
index 0000000..178cb9b
--- /dev/null
+++ b/apps/logstream/src/main/html/TotalViews.php
@@ -0,0 +1,27 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(11);
+
+$value = $redis->get(1);
+print $value;
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/Url404.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/Url404.js b/apps/logstream/src/main/html/Url404.js
new file mode 100644
index 0000000..faa1734
--- /dev/null
+++ b/apps/logstream/src/main/html/Url404.js
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawUrl404TableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        var url404Table = new google.visualization.DataTable();
+        url404Table.addColumn('string', 'URL');
+        url404Table.addColumn('number', '404/sec');
+        url404Table.addRows(10);
+        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
+        {
+          var row = pts[i].split("##");
+          if ((row[1] == null)||(row[1] == ""))
+          {
+            url404Table.setCell(i, 0,  "-");
+          } else {
+            url404Table.setCell(i, 0, row[0]);
+          }
+          if ((row[1] == null)||(row[1] == ""))
+          {
+            url404Table.setCell(i, 1, 0);   
+          } else {
+            url404Table.setCell(i, 1, parseInt(row[1]));
+          }
+        }
+        //document.getElementById('risky_client_div').innerHTML = data;
+        //document.getElementById('risky_client_div').innerHTML = url404Table.getNumberOfRows();
+        url404TableChart.draw(url404Table, {showRowNumber: true});
+        delete url404Table;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "Url404.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/Url404.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/Url404.php b/apps/logstream/src/main/html/Url404.php
new file mode 100644
index 0000000..82067f8
--- /dev/null
+++ b/apps/logstream/src/main/html/Url404.php
@@ -0,0 +1,37 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('127.0.0.1');
+$redis->select(7);
+
+// result array
+$result = array();
+
+for($i = 0; $i < 10; $i++)
+{
+  $value = $redis->get($i);
+  //var_dump($value);
+  $result[] = $value;
+}
+
+print json_encode($result);
+
+?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/global.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/global.js b/apps/logstream/src/main/html/global.js
new file mode 100644
index 0000000..7555f39
--- /dev/null
+++ b/apps/logstream/src/main/html/global.js
@@ -0,0 +1,133 @@
+/*
+ * 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.
+ */
+/**
+ * Declaration and initialization for global variables.
+ */
+
+// url parameters   
+var params;
+
+// Page View/Time
+var pageViewData; 
+var pageDataPoints; 
+var pageViewTable;
+var pageViewChart; 
+var PageViewView;
+var pageViewRefresh;
+var pageViewLookback;
+var pageViewUrl;
+var pageViewInterval;
+var pageNowPlaying;
+
+// top url(s)
+var topUrlTable;
+var topUrlTableChart;
+
+// server load  
+var serverLoadRefresh;
+var serverLoadLookback;
+var serverName;
+var serverLoadDataPoints;
+var serverLoadTable;
+var serverLoadChart;
+var serverLoadView;
+var serverLoadInterval;
+
+// Top server(s)
+var topServerTable;
+var topServerTableChart;
+
+var topIpClientTable;
+var topIpClientTableChart;
+var riskyClientTableChart;
+var url404TableChart;
+var server404TableChart;
+var serverNowPlaying;
+
+
+// Get split query string
+function QueryString() {
+  var query_string = {};
+  var query = window.location.search.substring(1);
+  return query;
+}
+function SplitQuery(query)
+{  
+	var params = {};
+	var vars = query.split("&");
+	for (var i=0;i<vars.length;i++)
+	{
+		var pair = vars[i].split("=");
+		if(pair.length == 2) 
+		{
+			params[pair[0]] = pair[1];
+		}
+	}
+	return params;
+}  
+
+// Initialize global variable(s)
+function InitializeGlobal()
+{
+  // Initialize params  
+  params = SplitQuery(QueryString()); 
+
+  // intialize page view variables
+  pageDataPoints = new Array();
+  pageViewTable = new google.visualization.DataTable();
+  pageViewTable.addColumn('datetime', 'Time');
+  pageViewTable.addColumn('number', 'Page View');
+  pageViewChart = new google.visualization.LineChart(document.getElementById('pageview_chart_div'));
+  PageViewView = new google.visualization.DataView(pageViewTable);
+  pageViewRefresh = 60;
+  pageViewLookback = (new Date().getTime()/1000) - 3600;
+  document.getElementById('pageviewlookback').value = "1";
+  pageViewInterval = 1;
+
+  serverLoadRefresh = 60;
+  serverLoadLookback = (new Date().getTime()/1000) - 3600;
+  document.getElementById('serverloadlookback').value = "1";
+  serverLoadDataPoints = new Array();
+  serverLoadTable = new google.visualization.DataTable();
+  serverLoadTable.addColumn('datetime', 'Time');
+  serverLoadTable.addColumn('number', 'Server Load');
+  serverLoadChart = new google.visualization.LineChart(document.getElementById('server_load_div'));
+  serverLoadView = new google.visualization.DataView(serverLoadTable);
+  serverLoadInterval = 1;
+
+  topUrlTableChart = new google.visualization.Table(document.getElementById('top_url_div'));
+  topServerTableChart = new google.visualization.Table(document.getElementById('top_server_div'));
+
+  topIpClientTableChart = new google.visualization.Table(document.getElementById('top_IpClient_div'));
+  riskyClientTableChart = new google.visualization.Table(document.getElementById('top_ipdata_div'));
+
+  url404TableChart = new google.visualization.Table(document.getElementById('url_404_div'));
+  server404TableChart = new google.visualization.Table(document.getElementById('server_404_div'));
+}
+
+/**
+ * Sort json array  
+ */
+function sortByKey(array, key) {
+    return array.sort(function(a, b) {
+        var x = a[key]; var y = b[key];
+        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+    });
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/index.php b/apps/logstream/src/main/html/index.php
new file mode 100644
index 0000000..3db53bc
--- /dev/null
+++ b/apps/logstream/src/main/html/index.php
@@ -0,0 +1,176 @@
+/*
+ * 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.
+ */
+<!--
+ --  Copyright (c) 2012-2013 DataTorrent, Inc.
+ --  All Rights Reserved.
+ -->
+
+<!-- ## Siteops is deprecated, please use logstream instead ## -->
+    
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Data Torrent : Site Operations Demo </title>
+
+<link rel="stylesheet" type="text/css" href="malhar.css">
+
+<!-- Google charts include -->
+<script type="text/javascript" src="https://www.google.com/jsapi"></script>
+<script type="text/javascript">
+google.load('visualization', '1', {'packages':['corechart']});
+google.load('visualization', '1', {'packages':['table']});
+
+</script>
+
+<!-- DataTorrent charting utils -->
+<script type="text/javascript" src="global.js"></script>
+<script type="text/javascript" src="DrawPageViewTimeChart.js"></script>
+<script type="text/javascript" src="TopUrlChart.js"></script>
+<script type="text/javascript" src="TopServer.js"></script>
+<script type="text/javascript" src="TopIpClientChart.js"></script>
+<script type="text/javascript" src="server.js"></script>
+<script type="text/javascript" src="TopIpData.js"></script>
+<script type="text/javascript" src="TotalViews.js"></script>
+<script type="text/javascript" src="Url404.js"></script>
+<script type="text/javascript" src="ClientData.js"></script>
+<script type="text/javascript" src="serverfail.js"></script>
+<script type="text/javascript" src="TotalViews.js"></script>
+
+<!-- window onload -->
+<script type="text/javascript">
+
+window.onload = function() {
+  
+  // Initialize variables   
+  InitializeGlobal();
+   
+  // Draw top charts 
+  DrawClientDataTableChart();
+  DrawTotalViewsTableChart();
+  DrawTopUrlTableChart();
+  DrawTopServerTableChart();
+  DrawRiskyClientTableChart();
+  DrawTopIpClientTableChart(); 
+  DrawUrl404TableChart();
+  DrawServer404TableChart();
+  setInterval(DrawClientDataTableChart, 1000)
+  setInterval(DrawTotalViewsTableChart, 1000);
+  setInterval(DrawTopUrlTableChart, 1000);
+  setInterval(DrawTopServerTableChart, 1000);
+  setInterval(DrawRiskyClientTableChart, 1000);
+  setInterval(DrawTopIpClientTableChart, 1000);
+  setInterval(DrawUrl404TableChart, 1000);
+  setInterval(DrawServer404TableChart, 1000);
+};
+
+</script>
+
+</head>
+<body>
+
+    <div id="header">
+        <ul class="dashboard-modes">
+            <li>
+                <a href="#" class="active">Site Operations Demo</a>
+            </li>
+        </ul>
+
+    </div>
+	
+	<div id="main">
+    <div id="pagecontent">
+        <div class="dashboardMgr">
+            <div class="inner" style="">
+                <h2 class="title">Page views vs Time Chart</h2> 
+                <form onsubmit="return false;">
+                        Select Page:
+                        <select name="page" id="page" style="width:200px;" onchange="handleUrlChange();">
+                           <option value="all">ALL</option>
+                           <option value="home">home.php</option>
+                           <option value="contact">contactus.php</option>
+                           <option value="about">about.php</option>
+                           <option value="support">support.php</option>
+                           <option value="product">products.php</option>
+                           <option value="services">services.php</option>
+                           <option value="partners">partners.php</option>
+            		</select><br>
+                        Product/Services/Partners Index : 
+                        <select name="index" id="index" style="width:200px;" disabled="true" >
+                          <option value=\"$i\"></option>
+                          <?php
+                            for ($i = 0; $i < 100; $i++) {
+                              print "<option value=\"$i\">$i</option>\n";
+                            }
+        	           ?>
+                        </select><br>
+		        Look Back(Hours):
+                        <input type="text" name="lookback" id="pageviewlookback" class="input-small"/>
+                </form><br>
+                <a href="javascript:void(0)" onclick="HandlePageViewTimeSubmit();">View Chart</a><br><br>
+
+                <h2 class="title">Server Load vs Time Chart</h2> 
+                <form onsubmit="return false;">
+                        Server Name : 
+                        <select name="servername" id="servername" style="width:200px;">
+                          <option value="all">All</option>
+                          <?php
+                            for ($i = 0; $i < 10; $i++) {
+                              print "<option value=\"server{$i}.mydomain.com:80\">Server$i.mydomain.com</option>\n";
+                            }
+        	           ?>
+                        </select><br>
+		        Server Load Look Back(Hours):
+                        <input type="text" name="serverloadlookback" id="serverloadlookback" class="input-small"/>
+                </form><br>
+                <a href="javascript:void(0)" onclick="HandleServerLoadTimeSubmit();">View Server Load Chart</a><br><br>
+                
+                <b>Total Bytes/Sec :</b> <b id="totaldata"> </b> <br 
+                <b>Total Views/Sec :</b> <b id="totalviews"> </b> 
+            </div>
+        </div>
+        <div class="dashboardMain">
+           <div class="dbib">     
+                <div id="pageview_chart_div"></div>
+		<div id="server_load_div"></div>
+           </div>
+           <div class="dbib">
+                <table><tbody><tr>
+      
+		         <td>       <h1>Top 10 Urls</h1>
+		                    <div  id="top_url_div" ></div><br><br>
+                                    <h1>Top 10 Client IPs</h1>
+                                    <div id="top_IpClient_div"></div> <br><br>
+                                    <h1>Top 10 Urls with 404 response</h1>
+                                    <div id="url_404_div"></div>
+		          </td>
+		          <td>
+                                   <h1>Server Load</h1>
+		                   <div id="top_server_div"></div> <br><br>
+                                   <h1>Top 10 client IPs download</h1>
+                                   <div id="top_ipdata_div"></div> <br><br>
+                                   <h1>404 per Server</h1>
+                                   <div id="server_404_div"></div-->
+		           </td>
+                          
+               </tr></tbody></table>
+           </div>
+        </div>		
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/info.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/info.php b/apps/logstream/src/main/html/info.php
new file mode 100644
index 0000000..adc6a88
--- /dev/null
+++ b/apps/logstream/src/main/html/info.php
@@ -0,0 +1,22 @@
+<?php
+/*
+ * 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.
+ */
+phpinfo();
+
+?>
\ No newline at end of file


[06/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/server.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/server.js b/contrib/src/main/html/siteops/server.js
deleted file mode 100644
index fe364a2..0000000
--- a/contrib/src/main/html/siteops/server.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions for drawing server load vs time chart.
- */
-
-function RenderServerLoadTimeChart()
-{  
-  // create/delete rows 
-  if (serverLoadTable.getNumberOfRows() < serverLoadDataPoints.length)
-  {    
-    var numRows = serverLoadDataPoints.length - serverLoadTable.getNumberOfRows();
-    serverLoadTable.addRows(numRows);
-  } else {
-    for(var i=(serverLoadTable.getNumberOfRows()-1); i >= serverLoadDataPoints.length; i--)
-    {
-      serverLoadTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < serverLoadTable.getNumberOfRows(); i++)
-  {
-    serverLoadTable.setCell(i, 0, new Date(parseInt(serverLoadDataPoints[i].timestamp)));
-    serverLoadTable.setCell(i, 1, parseFloat(serverLoadDataPoints[i].view));
-  }
-
-  // get chart options
-  var serverName = document.getElementById('servername').value;  
-  var title = "All Servers (PVS/Min)";
-  if (serverName != "all") title = serverName + " (PVS/Min)";
-  var options = {pointSize: 0, lineWidth : 1, legend : { position : 'top'} };
-  options.title = title;
-
-  // Draw line chart.
-  serverLoadChart.draw(serverLoadView, options); 
-}
-
-function DrawServerLoadTime()
-{
-  // get url 
-  var url = "ServerLoad.php?from=" + Math.floor(serverLoadLookback);
-  if ( serverName && (serverName.length > 0))
-  {   
-    url += "&server=" + serverName;    
-  }
-
-  // fetch data  
-    try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        serverLoadData = connect.response;
-        var pts = JSON.parse(serverLoadData);
-        for(var i=0; i <  pts.length; i++) 
-        {
-          serverLoadDataPoints.push(pts[i]);
-          delete pts[i];
-        }
-        delete pts;
-        sortByKey(serverLoadDataPoints, "timestamp");
-        RenderServerLoadTimeChart();
-        delete serverLoadData;
-        delete serverLoadDataPoints;
-        serverLoadDataPoints = new Array();
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  serverLoadLookback = (new Date().getTime()/1000) -  (3600*serverLoadInterval) - 60;
-}
-
-function HandleServerLoadTimeSubmit()
-{
-  // reset intercval  
-  if(serverNowPlaying) clearInterval(serverNowPlaying);
-
-  // get params 
-  serverName = document.getElementById('servername').value;
-  serverLoadLookback = document.getElementById('serverloadlookback').value;
-  if ( !serverLoadLookback || (serverLoadLookback == "")) {
-    serverLoadLookback = (new Date().getTime()/1000) - 3600;
-  }  else {
-    serverLoadLookback = (new Date().getTime()/1000) - 3600 * serverLoadLookback;
-  }
-
-  // set from values  
-  document.getElementById('servername').value = serverName;
-  var lookback = document.getElementById('serverloadlookback').value;
-  document.getElementById('serverloadlookback').value = lookback;
-  serverLoadInterval = lookback;
-       
-  // darw server load/time chart  
-  DrawServerLoadTime();
-  serverNowPlaying = setInterval(DrawServerLoadTime, 60 * 1000); 
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/serverfail.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/serverfail.js b/contrib/src/main/html/siteops/serverfail.js
deleted file mode 100644
index 76e5bf5..0000000
--- a/contrib/src/main/html/siteops/serverfail.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawServer404TableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        var server404 = new google.visualization.DataTable();
-        server404.addColumn('string', 'SERVER');
-        server404.addColumn('number', '404/sec');
-        server404.addRows(10);
-        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
-        {
-          var row = pts[i].split("##");
-          if ((row[0] == null)||(row[0] == ""))
-          {
-            server404.setCell(i, 0, "-");
-          } else {
-            server404.setCell(i, 0, row[0]);
-          }
-          if ((row[1] == null)||(row[1] == ""))
-          {
-            server404.setCell(i, 1, 0);
-          } else {
-            server404.setCell(i, 1, parseInt(row[1]));
-          }
-        }
-        //document.getElementById('risky_client_div').innerHTML = data;
-        //document.getElementById('risky_client_div').innerHTML = server404.getNumberOfRows();
-        server404TableChart.draw(server404, {showRowNumber: true});
-        delete server404;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "Server404.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/demos/machinedata/src/main/html/global.js
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/global.js b/demos/machinedata/src/main/html/global.js
new file mode 100644
index 0000000..753f58f
--- /dev/null
+++ b/demos/machinedata/src/main/html/global.js
@@ -0,0 +1,269 @@
+/*
+ * 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.
+ */
+/**
+ * Declaration and initialization for global variables.
+ */
+
+// url parameters   
+var params;
+
+// Data Points 
+var aggrData; 
+var aggrDataPoints;
+var contData;
+var contDataPoints;
+
+// CPU data table 
+var cpuTable;
+var cpuChart; 
+var cpuView;
+
+// ram data table 
+var ramTable;
+var ramChart; 
+var ramView;  
+
+// hdd data table 
+var hddTable;
+var hddChart; 
+var hddView;  
+
+// chart options
+var chartOptions;
+
+// Date formatter  
+var dateFormatter;
+
+// window look back value 
+var lookback;
+var aggrLookBack;
+var contLookBack;
+var contRefresh;
+
+// Get split query string
+function QueryString() {
+  var query_string = {};
+  var query = window.location.search.substring(1);
+  return query;
+}
+function SplitQuery(query)
+{  
+	var params = {};
+	var vars = query.split("&");
+	for (var i=0;i<vars.length;i++)
+	{
+		var pair = vars[i].split("=");
+		if(pair.length == 2) 
+		{
+			params[pair[0]] = pair[1];
+		}
+	}
+	return params;
+}  
+
+// Initialize global variable(s)
+function InitializeGlobal()
+{
+  // Initialize params  
+  params = SplitQuery(QueryString()); 
+       
+  // Initialize data points 
+  aggrDataPoints = new Array();
+  contDataPoints = new Array();
+    
+  // Initialize cpu table 
+  cpuTable = new google.visualization.DataTable(); 
+  cpuTable.addColumn('datetime', 'Time');
+  cpuTable.addColumn('number', 'CPU');
+  chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
+  cpuChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
+  cpuView = new google.visualization.DataView(cpuTable);
+
+  // Initialize ram table 
+  ramTable = new google.visualization.DataTable(); 
+  ramTable.addColumn('datetime', 'Time');
+  ramTable.addColumn('number', 'RAM');;
+  ramChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
+  ramView = new google.visualization.DataView(ramTable);
+
+  // Initialize hdd table 
+  hddTable = new google.visualization.DataTable(); 
+  hddTable.addColumn('datetime', 'Time');
+  hddTable.addColumn('number', 'HDD');;
+  hddChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
+  hddView = new google.visualization.DataView(hddTable);
+    
+  // get lookback value  
+  lookback = (new Date().getTime()/1000) - 3600*6;
+  if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
+  aggrLookBack = lookback;
+     
+  // get continuos lookback 
+  contLookBack = lookback;
+  contRefresh = 5;
+
+  // get param lookback  
+  paramLookBack = 6;
+  if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
+  //if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
+}
+
+
+/**
+ * Function to create fetch urls from given parameters
+ */
+function DataUrl() 
+{       
+    var url = "json.php?bucket=m";
+    url += "&customer=";
+    if (params['customer'])
+    {	
+      url += params['customer'];
+    }
+    url += "&product=";
+    if (params['product'])
+    {	
+      url += params['product'];
+    }
+    url += "&os=";
+    if (params['os'])
+    {	
+      url += params['os'];
+    }
+    url += "&software1=";
+    if (params['software1'])
+    {
+      url += params['software1'];
+    }
+    url += "&software2=";
+    if (params['software2'])
+    {
+      url += params['software2'];
+    }
+    url += "&software3=";
+    if (params['software3'])
+    {
+      url += params['software3'];
+    }
+     url += "&from=";
+    url += Math.floor(lookback);
+    return url;   
+}
+
+/**
+ * Creates data table with time stamp and cpu values.
+ * Draw line chart for time vs cpu.
+ */
+function DrawCPUChart()
+{
+  // create/delete rows 
+  if (cpuTable.getNumberOfRows() < aggrDataPoints.length)
+  {    
+    var numRows = aggrDataPoints.length - cpuTable.getNumberOfRows();
+    cpuTable.addRows(numRows);
+  } else {
+    for(var i=(cpuTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
+    {
+      cpuTable.removeRow(i);    
+    }
+  }
+    
+  // Populate data table with time/cpu data points. 
+  for(var i=0; i < cpuTable.getNumberOfRows(); i++)
+  {
+    //if(parseFloat(aggrDataPoints[i].cpu) < 500) continue;
+    cpuTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
+    cpuTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cpu));
+  }
+
+  // Draw line chart.
+  chartOptions.title = 'CPU Usage (%)';
+  cpuChart.draw(cpuView, chartOptions); 
+}     
+
+/**
+ * Creates data table with time stamp and revenu values.
+ * Draw line chart for time vs ram.
+ */
+function DrawRAMChart()
+{
+  // create/delete rows 
+  if (ramTable.getNumberOfRows() < aggrDataPoints.length)
+  {    
+    var numRows = aggrDataPoints.length - ramTable.getNumberOfRows();
+    ramTable.addRows(numRows);
+  } else {
+    for(var i=(ramTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
+    {
+      ramTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/ram data points. 
+  for(var i=0; i < ramTable.getNumberOfRows(); i++)
+  {
+    ramTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
+    ramTable.setCell(i, 1, parseFloat(aggrDataPoints[i].ram));
+  }
+
+  // Draw line chart.
+  chartOptions.title = 'RAM Usage (%)';
+  ramChart.draw(ramView, chartOptions); 
+}  
+
+/**
+ * Creates data table with time stamp and hdd values.
+ * Draw line chart for time vs hdd.
+ */
+function DrawHDDChart()
+{
+  // create/delete rows 
+  if (hddTable.getNumberOfRows() < aggrDataPoints.length)
+  {    
+    var numRows = aggrDataPoints.length - hddTable.getNumberOfRows();
+    hddTable.addRows(numRows);
+  } else {
+    for(var i=(hddTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
+    {
+      hddTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/hdd data points. 
+  for(var i=0; i < hddTable.getNumberOfRows(); i++)
+  {
+    hddTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
+    hddTable.setCell(i, 1, parseInt(aggrDataPoints[i].hdd));
+  }
+
+  // Draw line chart.
+  chartOptions.title = 'HDD Usage (%)';
+  hddChart.draw(hddView, chartOptions); 
+}
+
+/**
+ * Sort json array  
+ */
+function sortByKey(array, key) {
+    return array.sort(function(a, b) {
+        var x = a[key]; var y = b[key];
+        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+    });
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/demos/machinedata/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/index.php b/demos/machinedata/src/main/html/index.php
new file mode 100644
index 0000000..aa1aadc
--- /dev/null
+++ b/demos/machinedata/src/main/html/index.php
@@ -0,0 +1,268 @@
+/*
+ * 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.
+ */
+<!--
+ --  Copyright (c) 2012-2013 Malhar, Inc.
+ --  All Rights Reserved.
+ -->
+    
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Data Torrent : Machine Generated Data Demo </title>
+
+<link rel="stylesheet" type="text/css" href="malhar.css">
+
+<!-- Google charts include -->
+<script type="text/javascript" src="https://www.google.com/jsapi"></script>
+<script type="text/javascript">
+google.load('visualization', '1', {'packages':['corechart']});
+</script>
+
+<!-- Malhar charting utils -->
+<script type="text/javascript" src="global.js"></script>
+
+<!-- window onload -->
+<script type="text/javascript">
+
+function DrawAggrCharts()
+{
+  // get refresh url 
+  lookback = aggrLookBack; 
+  var url = DataUrl();        
+
+  // fetch data, draw charts
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+
+console.log(url);
+        aggrData = connect.response;
+        var pts = JSON.parse(aggrData);
+        aggrDataPoints = new Array();
+        for(var i=0; i <  pts.length; i++) aggrDataPoints.push(pts[i]);
+        DrawCPUChart();
+        DrawRAMChart();
+        DrawHDDChart();
+        //DrawImpressionsChart();
+        delete aggrData;
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  aggrLookBack += 30;
+}
+
+function DrawContCharts()  
+{    
+  // get refresh url 
+  lookback = contLookBack; 
+  var url = DataUrl();    
+  //document.getElementById('chart_div').innerHTML = url;
+
+  // fetch data, draw charts
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        contData = connect.response;   
+        var newPts = JSON.parse(contData); 
+        contDataPoints = new Array();
+        for(var i=0; i <  newPts.length; i++) contDataPoints.push(newPts[i]);
+        DrawCtrChart() ;
+        DrawMarginChart();
+        delete contData;
+        delete newPts;
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  contLookBack += contRefresh;
+}
+
+window.onload = function() {
+
+  // Initialize global 
+  InitializeGlobal();   
+
+  // Inituialize form fields  
+  if (params['customer']) document.getElementById('customer').value = params['customer'];
+  if (params['product']) document.getElementById('product').value = params['product'];
+  if (params['os']) document.getElementById('os').value = params['os'];
+  if (params['software1']) document.getElementById('software1').value = params['software1'];
+  if (params['software2']) document.getElementById('software2').value = params['software2'];
+  if (params['software3']) document.getElementById('software3').value = params['software3'];
+  if (params['refresh'])
+  {
+    document.getElementById('refresh').value = params['refresh'];   
+  } else {
+    document.getElementById('refresh').value = 5;
+  }    
+  if (params['lookback'])
+  {
+    document.getElementById('lookback').value = params['lookback'];   
+  } else {
+    document.getElementById('lookback').value = 6;
+  }
+       
+  // draw charts 
+  DrawAggrCharts();
+  //DrawContCharts();
+  setInterval(DrawAggrCharts, 30000);
+  //setInterval(DrawContCharts, contRefresh * 1000);
+};
+
+</script>
+
+</head>
+<body>
+
+    <div id="header">
+        <ul class="dashboard-modes">
+            <li>
+                <a href="#" class="active">Machine Generated Data Demo </a>
+            </li>
+        </ul>
+
+    </div>
+	
+	<div id="main">
+    <div id="pagecontent">
+        <div class="dashboardMgr">
+            <div class="inner" style="">
+                <h2 class="title">View Real Time Data Charts</h2> 
+                <form method="GET" action="index.php">
+                    
+                    <label for="customer">Customer ID:</label>
+                    <select name="customer" id="customer" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 1; $i <= 5; $i++) {
+                  				print "<option value=\"$i\">Customer $i</option>\n";
+                			}
+                		?>
+             		</select>
+             		
+            		<label for="">Product ID:</label>
+            		<select name="product" id="product" style="width:200px;">
+              		    <option value="">ALL</option>
+                		<?php
+                			for ($i = 4; $i <= 6; $i++) {
+                  				print "<option value=\"$i\">Product $i</option>\n";
+                			}
+                		?>
+            		</select>
+        		
+        		    <label for="">Product OS:</label>
+            		<select name="os" id="os" style="width:200px;">
+              		    <option value="">ALL</option>
+        		        <?php
+                			for ($i = 10; $i <= 12; $i++) {
+                  				print "<option value=\"$i\">OS $i</option>\n";
+                			}
+        	            ?>
+            		</select>
+            		
+                    <label for="software1">Software1 Ver:</label>
+                    <select name="software1" id="software1" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 10; $i <= 12; $i++) {
+                  				print "<option value=\"$i\">Software1 Version $i</option>\n";
+                			}
+                		?>
+             		</select>
+
+                    <label for="software2">Software2 Ver:</label>
+                    <select name="software2" id="software2" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 12; $i <= 14; $i++) {
+                  				print "<option value=\"$i\">Software2 Version $i</option>\n";
+                			}
+                		?>
+             		</select>
+
+                    <label for="software3">Software3 Ver:</label>
+                    <select name="software3" id="software3" style="width:200px;">
+                  		<option value="">ALL</option>
+                		<?php
+                   			for ($i = 4; $i <= 6; $i++) {
+                  				print "<option value=\"$i\">Software3 Version $i</option>\n";
+                			}
+                		?>
+             		</select>
+
+            		<label for="">Refresh Interval:</label>
+            		<div class="input-append">
+                        <input type="text" name="refresh" id="refresh" class="input-small"/>
+                        <span class="add-on">Secs</span>
+                    </div>
+                    
+
+        		    <label for="">Look Back:</label>
+        		    <div class="input-append">
+                        <input type="text" name="lookback" id="lookback" class="input-small"/>
+                        <span class="add-on">Hours</span>
+                    </div>
+                    
+                    <input type="submit" value="submit" class="btn btn-primary" />
+                    
+                </form>
+            </div>
+            <div class="collapser-container">
+                <div class="collapser">
+                    <div class="collapse-dot"></div>
+                    <div class="collapse-dot"></div>
+                    <div class="collapse-dot"></div>
+                </div>
+            </div>
+        </div>
+        <div class="dashboardMain">
+            
+	<!-- <table><tbody>
+                <tr>
+        	      <td><div id="chart_div"></div></td>	
+        	      <td><div id="chart1_div" ></div></td>	
+                 </tr>
+                 <tr>
+        	     <td><div id="chart2_div" ></div></td>	
+        	     <td><div id="chart3_div" ></div></td>
+                 </tr>
+                 <tr>
+        	   <td><div id="chart4_div" ></div></td>	
+        	    <td><div id="chart5_div" ></div></td>	
+                 </tr>
+        	 </tr></tbody></table> -->
+    	<div class="chart-ctnr" id="chart_div"></div>
+        <div class="chart-ctnr" id="chart1_div" ></div>	
+        <div class="chart-ctnr" id="chart2_div" ></div>	
+<!--        <div class="chart-ctnr" id="chart3_div" ></div>
+        <div class="chart-ctnr" id="chart4_div" ></div>	
+        <div class="chart-ctnr" id="chart5_div" ></div> -->
+        </div>		
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/demos/machinedata/src/main/html/json.php
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/json.php b/demos/machinedata/src/main/html/json.php
new file mode 100644
index 0000000..75a7117
--- /dev/null
+++ b/demos/machinedata/src/main/html/json.php
@@ -0,0 +1,96 @@
+<?php
+/*
+ * 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.
+ */
+header("Content-type: application/json");
+$redis = new Redis();
+$redis->connect('localhost');
+$redis->select(15);
+$from = $_GET['from'];
+$bucket = $_GET['bucket'];
+$customer = $_GET['customer'];
+$product = $_GET['product'];
+$os = $_GET['os'];
+$software1 = $_GET['software1'];
+$software2 = $_GET['software2'];
+$software3 = $_GET['software3'];
+
+switch ($bucket) {
+case 'D':
+  $format = 'Ymd';
+  $incr = 60 * 60 * 24;
+  break;
+case 'h':
+  $format = 'YmdH';
+  $incr = 60 * 60;
+  break;
+case 'm':
+  $format = 'YmdHi';
+  $incr = 60;
+  break;
+default:
+  break;
+}
+
+$arr = array();
+if ($customer != '') {
+  $arr[] = "0:".$customer;
+} 
+if ($product != '') {
+  $arr[] = "1:".$product;
+} 
+if ($os != '') {
+  $arr[] = "2:".$os;
+} 
+if ($software1 != '') {
+  $arr[] = "3:".$software1;
+} 
+if ($software2 != '') {
+  $arr[] = "4:".$software2;
+} 
+if ($software3 != '') {
+  $arr[] = "5:".$software3;
+} 
+$subpattern = "";
+if (count($arr) != 0) {
+  $subpattern = join("|", $arr);
+}
+
+$result = array();
+
+while ($from < time()) {
+  $date = gmdate($format, $from);
+  if ($subpattern != '') {
+    $key = $bucket . '|' . $date . '|' . $subpattern;
+  } else {
+    $key = $bucket . '|' . $date ;
+  }
+  $hash = $redis->hGetAll($key);
+  if ($hash) {
+    $cpu = $hash['cpu'];
+    $ram = $hash['ram'];
+    $hdd = $hash['hdd'];
+    $result[] = array('timestamp'=> $from * 1000, 'cpu'=>$cpu, 'ram'=>$ram, 'hdd'=>$hdd);
+  }
+  $from += $incr;
+}
+
+array_pop($result);
+print json_encode($result);
+
+?>


[05/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/demos/machinedata/src/main/html/malhar.css
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/malhar.css b/demos/machinedata/src/main/html/malhar.css
new file mode 100644
index 0000000..175e219
--- /dev/null
+++ b/demos/machinedata/src/main/html/malhar.css
@@ -0,0 +1,4688 @@
+/**
+ * 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.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+.hide-text {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.input-block-level {
+  display: block;
+  width: 100%;
+  min-height: 30px;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+  display: block;
+}
+audio,
+canvas,
+video {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+}
+audio:not([controls]) {
+  display: none;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  /* Responsive images (ensure images don't scale beyond their parents) */
+
+  max-width: 100%;
+  /* Part 1: Set a maxium relative to the parent */
+
+  width: auto\9;
+  /* IE7-8 need help adjusting responsive images */
+
+  height: auto;
+  /* Part 2: Scale the height according to the width, otherwise you get stretching */
+
+  vertical-align: middle;
+  border: 0;
+  -ms-interpolation-mode: bicubic;
+}
+#map_canvas img,
+.google-maps img {
+  max-width: none;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+  cursor: pointer;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+  -webkit-appearance: none;
+}
+textarea {
+  overflow: auto;
+  vertical-align: top;
+}
+@media print {
+  * {
+    text-shadow: none !important;
+    color: #000 !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  .ir a:after,
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  @page  {
+    margin: 0.5cm;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  line-height: 20px;
+  color: #333333;
+  background-color: #ffffff;
+}
+a {
+  color: #0088cc;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #005580;
+  text-decoration: underline;
+}
+.img-rounded {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.img-polaroid {
+  padding: 4px;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+.img-circle {
+  -webkit-border-radius: 500px;
+  -moz-border-radius: 500px;
+  border-radius: 500px;
+}
+/*@import "bootstrap/grid.less";*/
+/*@import "bootstrap/layouts.less";*/
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+strong {
+  font-weight: bold;
+}
+em {
+  font-style: italic;
+}
+cite {
+  font-style: normal;
+}
+.muted {
+  color: #999999;
+}
+a.muted:hover,
+a.muted:focus {
+  color: #808080;
+}
+.text-warning {
+  color: #c09853;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #a47e3c;
+}
+.text-error {
+  color: #b94a48;
+}
+a.text-error:hover,
+a.text-error:focus {
+  color: #953b39;
+}
+.text-info {
+  color: #3a87ad;
+}
+a.text-info:hover,
+a.text-info:focus {
+  color: #2d6987;
+}
+.text-success {
+  color: #468847;
+}
+a.text-success:hover,
+a.text-success:focus {
+  color: #356635;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999999;
+}
+h1,
+h2,
+h3 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 35.75px;
+}
+h2 {
+  font-size: 29.25px;
+}
+h3 {
+  font-size: 22.75px;
+}
+h4 {
+  font-size: 16.25px;
+}
+h5 {
+  font-size: 13px;
+}
+h6 {
+  font-size: 11.049999999999999px;
+}
+h1 small {
+  font-size: 22.75px;
+}
+h2 small {
+  font-size: 16.25px;
+}
+h3 small {
+  font-size: 13px;
+}
+h4 small {
+  font-size: 13px;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 20px 0 30px;
+  border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+  padding: 0;
+  margin: 0 0 10px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+  margin-bottom: 0;
+}
+li {
+  line-height: 20px;
+}
+ul.unstyled,
+ol.unstyled {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline,
+ol.inline {
+  margin-left: 0;
+  list-style: none;
+}
+ul.inline > li,
+ol.inline > li {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding-left: 5px;
+  padding-right: 5px;
+}
+dl {
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 20px;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 10px;
+}
+.dl-horizontal {
+  *zoom: 1;
+}
+.dl-horizontal:before,
+.dl-horizontal:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.dl-horizontal:after {
+  clear: both;
+}
+.dl-horizontal dt {
+  float: left;
+  width: 160px;
+  clear: left;
+  text-align: right;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.dl-horizontal dd {
+  margin-left: 180px;
+}
+hr {
+  margin: 20px 0;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+  border-bottom: 1px solid #ffffff;
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999999;
+}
+abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 0 0 0 15px;
+  margin: 0 0 20px;
+  border-left: 5px solid #eeeeee;
+}
+blockquote p {
+  margin-bottom: 0;
+  font-size: 16.25px;
+  font-weight: 300;
+  line-height: 1.25;
+}
+blockquote small {
+  display: block;
+  line-height: 20px;
+  color: #999999;
+}
+blockquote small:before {
+  content: '\2014 \00A0';
+}
+blockquote.pull-right {
+  float: right;
+  padding-right: 15px;
+  padding-left: 0;
+  border-right: 5px solid #eeeeee;
+  border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+  text-align: right;
+}
+blockquote.pull-right small:before {
+  content: '';
+}
+blockquote.pull-right small:after {
+  content: '\00A0 \2014';
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  display: block;
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 20px;
+}
+code,
+pre {
+  padding: 0 3px 2px;
+  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+  font-size: 11px;
+  color: #333333;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+code {
+  padding: 2px 4px;
+  color: #d14;
+  background-color: #f7f7f9;
+  border: 1px solid #e1e1e8;
+  white-space: nowrap;
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 12px;
+  line-height: 20px;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+pre.prettyprint {
+  margin-bottom: 20px;
+}
+pre code {
+  padding: 0;
+  color: inherit;
+  white-space: pre;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+form {
+  margin: 0 0 20px;
+}
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 19.5px;
+  line-height: 40px;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+legend small {
+  font-size: 15px;
+  color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+}
+input,
+button,
+select,
+textarea {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+  display: block;
+  margin-bottom: 5px;
+}
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  display: inline-block;
+  height: 20px;
+  padding: 4px 6px;
+  margin-bottom: 10px;
+  font-size: 13px;
+  line-height: 20px;
+  color: #555555;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  vertical-align: middle;
+}
+input,
+textarea,
+.uneditable-input {
+  width: 206px;
+}
+textarea {
+  height: auto;
+}
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+  background-color: #ffffff;
+  border: 1px solid #cccccc;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border linear .2s, box-shadow linear .2s;
+  -moz-transition: border linear .2s, box-shadow linear .2s;
+  -o-transition: border linear .2s, box-shadow linear .2s;
+  transition: border linear .2s, box-shadow linear .2s;
+}
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+  border-color: rgba(82, 168, 236, 0.8);
+  outline: 0;
+  outline: thin dotted \9;
+  /* IE6-9 */
+
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  *margin-top: 0;
+  /* IE7 */
+
+  margin-top: 1px \9;
+  /* IE8-9 */
+
+  line-height: normal;
+}
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+  width: auto;
+}
+select,
+input[type="file"] {
+  height: 30px;
+  /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+  *margin-top: 4px;
+  /* For IE7, add top margin to align select with labels */
+
+  line-height: 30px;
+}
+select {
+  width: 220px;
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.uneditable-input,
+.uneditable-textarea {
+  color: #999999;
+  background-color: #fcfcfc;
+  border-color: #cccccc;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+  cursor: not-allowed;
+}
+.uneditable-input {
+  overflow: hidden;
+  white-space: nowrap;
+}
+.uneditable-textarea {
+  width: auto;
+  height: auto;
+}
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  color: #999999;
+}
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+  color: #999999;
+}
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  color: #999999;
+}
+.radio,
+.checkbox {
+  min-height: 20px;
+  padding-left: 20px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+  padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+  display: inline-block;
+  padding-top: 5px;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+  margin-left: 10px;
+}
+.input-mini {
+  width: 60px;
+}
+.input-small {
+  width: 90px;
+}
+.input-medium {
+  width: 150px;
+}
+.input-large {
+  width: 210px;
+}
+.input-xlarge {
+  width: 270px;
+}
+.input-xxlarge {
+  width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+  float: none;
+  margin-left: 0;
+}
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+  display: inline-block;
+}
+input,
+textarea,
+.uneditable-input {
+  margin-left: 0;
+}
+.controls-row [class*="span"] + [class*="span"] {
+  margin-left: 20px;
+}
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+  width: 926px;
+}
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+  width: 846px;
+}
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+  width: 766px;
+}
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+  width: 686px;
+}
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+  width: 606px;
+}
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+  width: 526px;
+}
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+  width: 446px;
+}
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+  width: 366px;
+}
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+  width: 286px;
+}
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+  width: 206px;
+}
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+  width: 126px;
+}
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+  width: 46px;
+}
+.controls-row {
+  *zoom: 1;
+}
+.controls-row:before,
+.controls-row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.controls-row:after {
+  clear: both;
+}
+.controls-row [class*="span"],
+.row-fluid .controls-row [class*="span"] {
+  float: left;
+}
+.controls-row .checkbox[class*="span"],
+.controls-row .radio[class*="span"] {
+  padding-top: 5px;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+  cursor: not-allowed;
+  background-color: #eeeeee;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+  background-color: transparent;
+}
+.control-group.warning .control-label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+  color: #c09853;
+}
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+  border-color: #c09853;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+  border-color: #a47e3c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+  color: #c09853;
+  background-color: #fcf8e3;
+  border-color: #c09853;
+}
+.control-group.error .control-label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+  color: #b94a48;
+}
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+  border-color: #b94a48;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+  border-color: #953b39;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+  color: #b94a48;
+  background-color: #f2dede;
+  border-color: #b94a48;
+}
+.control-group.success .control-label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+  color: #468847;
+}
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+  border-color: #468847;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+  border-color: #356635;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+  color: #468847;
+  background-color: #dff0d8;
+  border-color: #468847;
+}
+.control-group.info .control-label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+  color: #3a87ad;
+}
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  color: #3a87ad;
+}
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+  border-color: #3a87ad;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+  border-color: #2d6987;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+  color: #3a87ad;
+  background-color: #d9edf7;
+  border-color: #3a87ad;
+}
+input:focus:invalid,
+textarea:focus:invalid,
+select:focus:invalid {
+  color: #b94a48;
+  border-color: #ee5f5b;
+}
+input:focus:invalid:focus,
+textarea:focus:invalid:focus,
+select:focus:invalid:focus {
+  border-color: #e9322d;
+  -webkit-box-shadow: 0 0 6px #f8b9b7;
+  -moz-box-shadow: 0 0 6px #f8b9b7;
+  box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+  padding: 19px 20px 20px;
+  margin-top: 20px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #e5e5e5;
+  *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-actions:after {
+  clear: both;
+}
+.help-block,
+.help-inline {
+  color: #595959;
+}
+.help-block {
+  display: block;
+  margin-bottom: 10px;
+}
+.help-inline {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  vertical-align: middle;
+  padding-left: 5px;
+}
+.input-append,
+.input-prepend {
+  display: inline-block;
+  margin-bottom: 10px;
+  vertical-align: middle;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input,
+.input-append .dropdown-menu,
+.input-prepend .dropdown-menu,
+.input-append .popover,
+.input-prepend .popover {
+  font-size: 13px;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+  position: relative;
+  margin-bottom: 0;
+  *margin-left: 0;
+  vertical-align: top;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+  z-index: 2;
+}
+.input-append .add-on,
+.input-prepend .add-on {
+  display: inline-block;
+  width: auto;
+  height: 20px;
+  min-width: 16px;
+  padding: 4px 5px;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 20px;
+  text-align: center;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #eeeeee;
+  border: 1px solid #ccc;
+}
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn,
+.input-append .btn-group > .dropdown-toggle,
+.input-prepend .btn-group > .dropdown-toggle {
+  vertical-align: top;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-append .active,
+.input-prepend .active {
+  background-color: #a9dba9;
+  border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+  margin-right: -1px;
+}
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-append input + .btn-group .btn:last-child,
+.input-append select + .btn-group .btn:last-child,
+.input-append .uneditable-input + .btn-group .btn:last-child {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-append .add-on,
+.input-append .btn,
+.input-append .btn-group {
+  margin-left: -1px;
+}
+.input-append .add-on:last-child,
+.input-append .btn:last-child,
+.input-append .btn-group:last-child > .dropdown-toggle {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.input-prepend.input-append input + .btn-group .btn,
+.input-prepend.input-append select + .btn-group .btn,
+.input-prepend.input-append .uneditable-input + .btn-group .btn {
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.input-prepend.input-append .btn-group:first-child {
+  margin-left: 0;
+}
+input.search-query {
+  padding-right: 14px;
+  padding-right: 4px \9;
+  padding-left: 14px;
+  padding-left: 4px \9;
+  /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+  margin-bottom: 0;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+/* Allow for input prepend/append in search forms */
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.form-search .input-append .search-query {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search .input-append .btn {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .search-query {
+  -webkit-border-radius: 0 14px 14px 0;
+  -moz-border-radius: 0 14px 14px 0;
+  border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .btn {
+  -webkit-border-radius: 14px 0 0 14px;
+  -moz-border-radius: 14px 0 0 14px;
+  border-radius: 14px 0 0 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+  display: none;
+}
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+  display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+  margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+  padding-left: 0;
+  margin-bottom: 0;
+  vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+  float: left;
+  margin-right: 3px;
+  margin-left: 0;
+}
+.control-group {
+  margin-bottom: 10px;
+}
+legend + .control-group {
+  margin-top: 20px;
+  -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+  margin-bottom: 20px;
+  *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.form-horizontal .control-group:after {
+  clear: both;
+}
+.form-horizontal .control-label {
+  float: left;
+  width: 160px;
+  padding-top: 5px;
+  text-align: right;
+}
+.form-horizontal .controls {
+  *display: inline-block;
+  *padding-left: 20px;
+  margin-left: 180px;
+  *margin-left: 0;
+}
+.form-horizontal .controls:first-child {
+  *padding-left: 180px;
+}
+.form-horizontal .help-block {
+  margin-bottom: 0;
+}
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block,
+.form-horizontal .uneditable-input + .help-block,
+.form-horizontal .input-prepend + .help-block,
+.form-horizontal .input-append + .help-block {
+  margin-top: 10px;
+}
+.form-horizontal .form-actions {
+  padding-left: 180px;
+}
+table {
+  max-width: 100%;
+  background-color: transparent;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+.table {
+  width: 100%;
+  margin-bottom: 20px;
+}
+.table th,
+.table td {
+  padding: 8px;
+  line-height: 20px;
+  text-align: left;
+  vertical-align: top;
+  border-top: 1px solid #dddddd;
+}
+.table th {
+  font-weight: bold;
+}
+.table thead th {
+  vertical-align: bottom;
+}
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+  border-top: 0;
+}
+.table tbody + tbody {
+  border-top: 2px solid #dddddd;
+}
+.table .table {
+  background-color: #ffffff;
+}
+.table-condensed th,
+.table-condensed td {
+  padding: 4px 5px;
+}
+.table-bordered {
+  border: 1px solid #dddddd;
+  border-collapse: separate;
+  *border-collapse: collapse;
+  border-left: 0;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.table-bordered th,
+.table-bordered td {
+  border-left: 1px solid #dddddd;
+}
+.table-bordered caption + thead tr:first-child th,
+.table-bordered caption + tbody tr:first-child th,
+.table-bordered caption + tbody tr:first-child td,
+.table-bordered colgroup + thead tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child td,
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+  border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child > th:first-child,
+.table-bordered tbody:first-child tr:first-child > td:first-child,
+.table-bordered tbody:first-child tr:first-child > th:first-child {
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.table-bordered thead:first-child tr:first-child > th:last-child,
+.table-bordered tbody:first-child tr:first-child > td:last-child,
+.table-bordered tbody:first-child tr:first-child > th:last-child {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+}
+.table-bordered thead:last-child tr:last-child > th:first-child,
+.table-bordered tbody:last-child tr:last-child > td:first-child,
+.table-bordered tbody:last-child tr:last-child > th:first-child,
+.table-bordered tfoot:last-child tr:last-child > td:first-child,
+.table-bordered tfoot:last-child tr:last-child > th:first-child {
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.table-bordered thead:last-child tr:last-child > th:last-child,
+.table-bordered tbody:last-child tr:last-child > td:last-child,
+.table-bordered tbody:last-child tr:last-child > th:last-child,
+.table-bordered tfoot:last-child tr:last-child > td:last-child,
+.table-bordered tfoot:last-child tr:last-child > th:last-child {
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
+  -webkit-border-bottom-left-radius: 0;
+  -moz-border-radius-bottomleft: 0;
+  border-bottom-left-radius: 0;
+}
+.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
+  -webkit-border-bottom-right-radius: 0;
+  -moz-border-radius-bottomright: 0;
+  border-bottom-right-radius: 0;
+}
+.table-bordered caption + thead tr:first-child th:first-child,
+.table-bordered caption + tbody tr:first-child td:first-child,
+.table-bordered colgroup + thead tr:first-child th:first-child,
+.table-bordered colgroup + tbody tr:first-child td:first-child {
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.table-bordered caption + thead tr:first-child th:last-child,
+.table-bordered caption + tbody tr:first-child td:last-child,
+.table-bordered colgroup + thead tr:first-child th:last-child,
+.table-bordered colgroup + tbody tr:first-child td:last-child {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+}
+.table-striped tbody > tr:nth-child(odd) > td,
+.table-striped tbody > tr:nth-child(odd) > th {
+  background-color: #f9f9f9;
+}
+.table-hover tbody tr:hover > td,
+.table-hover tbody tr:hover > th {
+  background-color: #f5f5f5;
+}
+table td[class*="span"],
+table th[class*="span"],
+.row-fluid table td[class*="span"],
+.row-fluid table th[class*="span"] {
+  display: table-cell;
+  float: none;
+  margin-left: 0;
+}
+.table td.span1,
+.table th.span1 {
+  float: none;
+  width: 44px;
+  margin-left: 0;
+}
+.table td.span2,
+.table th.span2 {
+  float: none;
+  width: 124px;
+  margin-left: 0;
+}
+.table td.span3,
+.table th.span3 {
+  float: none;
+  width: 204px;
+  margin-left: 0;
+}
+.table td.span4,
+.table th.span4 {
+  float: none;
+  width: 284px;
+  margin-left: 0;
+}
+.table td.span5,
+.table th.span5 {
+  float: none;
+  width: 364px;
+  margin-left: 0;
+}
+.table td.span6,
+.table th.span6 {
+  float: none;
+  width: 444px;
+  margin-left: 0;
+}
+.table td.span7,
+.table th.span7 {
+  float: none;
+  width: 524px;
+  margin-left: 0;
+}
+.table td.span8,
+.table th.span8 {
+  float: none;
+  width: 604px;
+  margin-left: 0;
+}
+.table td.span9,
+.table th.span9 {
+  float: none;
+  width: 684px;
+  margin-left: 0;
+}
+.table td.span10,
+.table th.span10 {
+  float: none;
+  width: 764px;
+  margin-left: 0;
+}
+.table td.span11,
+.table th.span11 {
+  float: none;
+  width: 844px;
+  margin-left: 0;
+}
+.table td.span12,
+.table th.span12 {
+  float: none;
+  width: 924px;
+  margin-left: 0;
+}
+.table tbody tr.success > td {
+  background-color: #dff0d8;
+}
+.table tbody tr.error > td {
+  background-color: #f2dede;
+}
+.table tbody tr.warning > td {
+  background-color: #fcf8e3;
+}
+.table tbody tr.info > td {
+  background-color: #d9edf7;
+}
+.table-hover tbody tr.success:hover > td {
+  background-color: #d0e9c6;
+}
+.table-hover tbody tr.error:hover > td {
+  background-color: #ebcccc;
+}
+.table-hover tbody tr.warning:hover > td {
+  background-color: #faf2cc;
+}
+.table-hover tbody tr.info:hover > td {
+  background-color: #c4e3f3;
+}
+/*@import "bootstrap/sprites.less";*/
+.dropup,
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle {
+  *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+  outline: 0;
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  vertical-align: top;
+  border-top: 4px solid #000000;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  content: "";
+}
+.dropdown .caret {
+  margin-top: 8px;
+  margin-left: 2px;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  list-style: none;
+  background-color: #ffffff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  *border-right-width: 2px;
+  *border-bottom-width: 2px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding;
+  background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 20px;
+  color: #333333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
+  text-decoration: none;
+  color: #ffffff;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #0081c2;
+  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  cursor: default;
+}
+.open {
+  *z-index: 1000;
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  border-top: 0;
+  border-bottom: 4px solid #000000;
+  content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+.dropdown-submenu {
+  position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+  top: 0;
+  left: 100%;
+  margin-top: -6px;
+  margin-left: -1px;
+  -webkit-border-radius: 0 6px 6px 6px;
+  -moz-border-radius: 0 6px 6px 6px;
+  border-radius: 0 6px 6px 6px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+  display: block;
+}
+.dropup .dropdown-submenu > .dropdown-menu {
+  top: auto;
+  bottom: 0;
+  margin-top: 0;
+  margin-bottom: -2px;
+  -webkit-border-radius: 5px 5px 5px 0;
+  -moz-border-radius: 5px 5px 5px 0;
+  border-radius: 5px 5px 5px 0;
+}
+.dropdown-submenu > a:after {
+  display: block;
+  content: " ";
+  float: right;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #cccccc;
+  margin-top: 5px;
+  margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+  border-left-color: #ffffff;
+}
+.dropdown-submenu.pull-left {
+  float: none;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+  left: -100%;
+  margin-left: 10px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.dropdown .dropdown-menu .nav-header {
+  padding-left: 20px;
+  padding-right: 20px;
+}
+.typeahead {
+  z-index: 1051;
+  margin-top: 2px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, 0.15);
+}
+.well-large {
+  padding: 24px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.well-small {
+  padding: 9px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+/*@import "bootstrap/component-animations.less";*/
+/*@import "bootstrap/close.less";*/
+.btn {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  padding: 4px 12px;
+  margin-bottom: 0;
+  font-size: 13px;
+  line-height: 20px;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  color: #333333;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+  background-color: #f5f5f5;
+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e6e6e6;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  border: 1px solid #cccccc;
+  *border: 0;
+  border-bottom-color: #b3b3b3;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  *margin-left: .3em;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn:hover,
+.btn:focus,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+  color: #333333;
+  background-color: #e6e6e6;
+  *background-color: #d9d9d9;
+}
+.btn:active,
+.btn.active {
+  background-color: #cccccc \9;
+}
+.btn:first-child {
+  *margin-left: 0;
+}
+.btn:hover,
+.btn:focus {
+  color: #333333;
+  text-decoration: none;
+  background-position: 0 -15px;
+  -webkit-transition: background-position 0.1s linear;
+  -moz-transition: background-position 0.1s linear;
+  -o-transition: background-position 0.1s linear;
+  transition: background-position 0.1s linear;
+}
+.btn:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn.disabled,
+.btn[disabled] {
+  cursor: default;
+  background-image: none;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-large {
+  padding: 11px 19px;
+  font-size: 16.25px;
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.btn-large [class^="icon-"],
+.btn-large [class*=" icon-"] {
+  margin-top: 4px;
+}
+.btn-small {
+  padding: 2px 10px;
+  font-size: 11.049999999999999px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-small [class^="icon-"],
+.btn-small [class*=" icon-"] {
+  margin-top: 0;
+}
+.btn-mini [class^="icon-"],
+.btn-mini [class*=" icon-"] {
+  margin-top: -1px;
+}
+.btn-mini {
+  padding: 0 6px;
+  font-size: 9.75px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+  color: rgba(255, 255, 255, 0.75);
+}
+.btn-primary {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+  border-color: #0044cc #0044cc #002a80;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #0044cc;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+  color: #ffffff;
+  background-color: #0044cc;
+  *background-color: #003bb3;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #003399 \9;
+}
+.btn-warning {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(to bottom, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+  border-color: #f89406 #f89406 #ad6704;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #f89406;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+  color: #ffffff;
+  background-color: #f89406;
+  *background-color: #df8505;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #c67605 \9;
+}
+.btn-danger {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+  border-color: #bd362f #bd362f #802420;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #bd362f;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+  color: #ffffff;
+  background-color: #bd362f;
+  *background-color: #a9302a;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #942a25 \9;
+}
+.btn-success {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(to bottom, #62c462, #51a351);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+  border-color: #51a351 #51a351 #387038;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #51a351;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+  color: #ffffff;
+  background-color: #51a351;
+  *background-color: #499249;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #408140 \9;
+}
+.btn-info {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #49afcd;
+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+  border-color: #2f96b4 #2f96b4 #1f6377;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #2f96b4;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+  color: #ffffff;
+  background-color: #2f96b4;
+  *background-color: #2a85a0;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #24748c \9;
+}
+.btn-inverse {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #363636;
+  background-image: -moz-linear-gradient(top, #444444, #222222);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+  background-image: -webkit-linear-gradient(top, #444444, #222222);
+  background-image: -o-linear-gradient(top, #444444, #222222);
+  background-image: linear-gradient(to bottom, #444444, #222222);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+  border-color: #222222 #222222 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #222222;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:focus,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+  color: #ffffff;
+  background-color: #222222;
+  *background-color: #151515;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+  background-color: #080808 \9;
+}
+button.btn,
+input[type="submit"].btn {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+  *padding-top: 3px;
+  *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+  *padding-top: 1px;
+  *padding-bottom: 1px;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+  background-color: transparent;
+  background-image: none;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+  box-shadow: none;
+}
+.btn-link {
+  border-color: transparent;
+  cursor: pointer;
+  color: #0088cc;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #005580;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
+  color: #333333;
+  text-decoration: none;
+}
+.btn-group {
+  position: relative;
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+  font-size: 0;
+  vertical-align: middle;
+  white-space: nowrap;
+  *margin-left: .3em;
+}
+.btn-group:first-child {
+  *margin-left: 0;
+}
+.btn-group + .btn-group {
+  margin-left: 5px;
+}
+.btn-toolbar {
+  font-size: 0;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group {
+  margin-left: 5px;
+}
+.btn-group > .btn {
+  position: relative;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group > .btn + .btn {
+  margin-left: -1px;
+}
+.btn-group > .btn,
+.btn-group > .dropdown-menu,
+.btn-group > .popover {
+  font-size: 13px;
+}
+.btn-group > .btn-mini {
+  font-size: 9.75px;
+}
+.btn-group > .btn-small {
+  font-size: 11.049999999999999px;
+}
+.btn-group > .btn-large {
+  font-size: 16.25px;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+}
+.btn-group > .btn.large:first-child {
+  margin-left: 0;
+  -webkit-border-top-left-radius: 6px;
+  -moz-border-radius-topleft: 6px;
+  border-top-left-radius: 6px;
+  -webkit-border-bottom-left-radius: 6px;
+  -moz-border-radius-bottomleft: 6px;
+  border-bottom-left-radius: 6px;
+}
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+  -webkit-border-top-right-radius: 6px;
+  -moz-border-radius-topright: 6px;
+  border-top-right-radius: 6px;
+  -webkit-border-bottom-right-radius: 6px;
+  -moz-border-radius-bottomright: 6px;
+  border-bottom-right-radius: 6px;
+}
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+  z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
+}
+.btn-group > .btn-mini + .dropdown-toggle {
+  padding-left: 5px;
+  padding-right: 5px;
+  *padding-top: 2px;
+  *padding-bottom: 2px;
+}
+.btn-group > .btn-small + .dropdown-toggle {
+  *padding-top: 5px;
+  *padding-bottom: 4px;
+}
+.btn-group > .btn-large + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+  *padding-top: 7px;
+  *padding-bottom: 7px;
+}
+.btn-group.open .dropdown-toggle {
+  background-image: none;
+  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+}
+.btn-group.open .btn.dropdown-toggle {
+  background-color: #e6e6e6;
+}
+.btn-group.open .btn-primary.dropdown-toggle {
+  background-color: #0044cc;
+}
+.btn-group.open .btn-warning.dropdown-toggle {
+  background-color: #f89406;
+}
+.btn-group.open .btn-danger.dropdown-toggle {
+  background-color: #bd362f;
+}
+.btn-group.open .btn-success.dropdown-toggle {
+  background-color: #51a351;
+}
+.btn-group.open .btn-info.dropdown-toggle {
+  background-color: #2f96b4;
+}
+.btn-group.open .btn-inverse.dropdown-toggle {
+  background-color: #222222;
+}
+.btn .caret {
+  margin-top: 8px;
+  margin-left: 0;
+}
+.btn-large .caret {
+  margin-top: 6px;
+}
+.btn-large .caret {
+  border-left-width: 5px;
+  border-right-width: 5px;
+  border-top-width: 5px;
+}
+.btn-mini .caret,
+.btn-small .caret {
+  margin-top: 8px;
+}
+.dropup .btn-large .caret {
+  border-bottom-width: 5px;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.btn-group-vertical {
+  display: inline-block;
+  *display: inline;
+  /* IE7 inline-block hack */
+
+  *zoom: 1;
+}
+.btn-group-vertical > .btn {
+  display: block;
+  float: none;
+  max-width: 100%;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.btn-group-vertical > .btn + .btn {
+  margin-left: 0;
+  margin-top: -1px;
+}
+.btn-group-vertical > .btn:first-child {
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.btn-group-vertical > .btn:last-child {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.btn-group-vertical > .btn-large:first-child {
+  -webkit-border-radius: 6px 6px 0 0;
+  -moz-border-radius: 6px 6px 0 0;
+  border-radius: 6px 6px 0 0;
+}
+.btn-group-vertical > .btn-large:last-child {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.alert {
+  padding: 8px 35px 8px 14px;
+  margin-bottom: 20px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  background-color: #fcf8e3;
+  border: 1px solid #fbeed5;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+.alert,
+.alert h4 {
+  color: #c09853;
+}
+.alert h4 {
+  margin: 0;
+}
+.alert .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  line-height: 20px;
+}
+.alert-success {
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+  color: #468847;
+}
+.alert-success h4 {
+  color: #468847;
+}
+.alert-danger,
+.alert-error {
+  background-color: #f2dede;
+  border-color: #eed3d7;
+  color: #b94a48;
+}
+.alert-danger h4,
+.alert-error h4 {
+  color: #b94a48;
+}
+.alert-info {
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+  color: #3a87ad;
+}
+.alert-info h4 {
+  color: #3a87ad;
+}
+.alert-block {
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+  margin-bottom: 0;
+}
+.alert-block p + p {
+  margin-top: 5px;
+}
+.nav {
+  margin-left: 0;
+  margin-bottom: 20px;
+  list-style: none;
+}
+.nav > li > a {
+  display: block;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eeeeee;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav > .pull-right {
+  float: right;
+}
+.nav-header {
+  display: block;
+  padding: 3px 15px;
+  font-size: 11px;
+  font-weight: bold;
+  line-height: 20px;
+  color: #999999;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  text-transform: uppercase;
+}
+.nav li + .nav-header {
+  margin-top: 9px;
+}
+.nav-list {
+  padding-left: 15px;
+  padding-right: 15px;
+  margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+  margin-left: -15px;
+  margin-right: -15px;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+  padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+  background-color: #0088cc;
+}
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+  margin-right: 2px;
+}
+.nav-list .divider {
+  *width: 100%;
+  height: 1px;
+  margin: 9px 1px;
+  *margin: -5px 0 5px;
+  overflow: hidden;
+  background-color: #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+.nav-tabs,
+.nav-pills {
+  *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.nav-tabs:after,
+.nav-pills:after {
+  clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+  float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+  padding-right: 12px;
+  padding-left: 12px;
+  margin-right: 2px;
+  line-height: 14px;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  line-height: 20px;
+  border: 1px solid transparent;
+  -webkit-border-radius: 4px 4px 0 0;
+  -moz-border-radius: 4px 4px 0 0;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
+  color: #555555;
+  background-color: #ffffff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default;
+}
+.nav-pills > li > a {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  margin-top: 2px;
+  margin-bottom: 2px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
+  color: #ffffff;
+  background-color: #0088cc;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li > a {
+  margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+  border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+  border: 1px solid #ddd;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+  -webkit-border-top-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  border-top-right-radius: 4px;
+  -webkit-border-top-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  border-top-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-bottom-right-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-bottom-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
+  border-color: #ddd;
+  z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+  margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+  margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu {
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+}
+.nav-pills .dropdown-menu {
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+}
+.nav .dropdown-toggle .caret {
+  border-top-color: #0088cc;
+  border-bottom-color: #0088cc;
+  margin-top: 6px;
+}
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
+  border-top-color: #005580;
+  border-bottom-color: #005580;
+}
+/* move down carets for tabs */
+.nav-tabs .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.nav .active .dropdown-toggle .caret {
+  border-top-color: #fff;
+  border-bottom-color: #fff;
+}
+.nav-tabs .active .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
+  cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
+  color: #ffffff;
+  background-color: #999999;
+  border-color: #999999;
+}
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+  opacity: 1;
+  filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
+  border-color: #999999;
+}
+.tabbable {
+  *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.tabbable:after {
+  clear: both;
+}
+.tab-content {
+  overflow: auto;
+}
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+  border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+  display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+  display: block;
+}
+.tabs-below > .nav-tabs {
+  border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+  margin-top: -1px;
+  margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a {
+  -webkit-border-radius: 0 0 4px 4px;
+  -moz-border-radius: 0 0 4px 4px;
+  border-radius: 0 0 4px 4px;
+}
+.tabs-below > .nav-tabs > li > a:hover,
+.tabs-below > .nav-tabs > li > a:focus {
+  border-bottom-color: transparent;
+  border-top-color: #ddd;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
+  border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+  float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+  min-width: 74px;
+  margin-right: 0;
+  margin-bottom: 3px;
+}
+.tabs-left > .nav-tabs {
+  float: left;
+  margin-right: 19px;
+  border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-tabs > li > a {
+  margin-right: -1px;
+  -webkit-border-radius: 4px 0 0 4px;
+  -moz-border-radius: 4px 0 0 4px;
+  border-radius: 4px 0 0 4px;
+}
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover,
+.tabs-left > .nav-tabs .active > a:focus {
+  border-color: #ddd transparent #ddd #ddd;
+  *border-right-color: #ffffff;
+}
+.tabs-right > .nav-tabs {
+  float: right;
+  margin-left: 19px;
+  border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+  margin-left: -1px;
+  -webkit-border-radius: 0 4px 4px 0;
+  -moz-border-radius: 0 4px 4px 0;
+  border-radius: 0 4px 4px 0;
+}
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover,
+.tabs-right > .nav-tabs .active > a:focus {
+  border-color: #ddd #ddd #ddd transparent;
+  *border-left-color: #ffffff;
+}
+.nav > .disabled > a {
+  color: #999999;
+}
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
+  text-decoration: none;
+  background-color: transparent;
+  cursor: default;
+}
+.navbar {
+  overflow: visible;
+  margin-bottom: 20px;
+  *position: relative;
+  *z-index: 2;
+}
+.navbar-inner {
+  min-height: 40px;
+  padding-left: 20px;
+  padding-right: 20px;
+  background-color: #fafafa;
+  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+  border: 1px solid #d4d4d4;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+  *zoom: 1;
+}
+.navbar-inner:before,
+.navbar-inner:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-inner:after {
+  clear: both;
+}
+.navbar .container {
+  width: auto;
+}
+.nav-collapse.collapse {
+  height: auto;
+  overflow: visible;
+}
+.navbar .brand {
+  float: left;
+  display: block;
+  padding: 10px 20px 10px;
+  margin-left: -20px;
+  font-size: 20px;
+  font-weight: 200;
+  color: #777777;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .brand:hover,
+.navbar .brand:focus {
+  text-decoration: none;
+}
+.navbar-text {
+  margin-bottom: 0;
+  line-height: 40px;
+  color: #777777;
+}
+.navbar-link {
+  color: #777777;
+}
+.navbar-link:hover,
+.navbar-link:focus {
+  color: #333333;
+}
+.navbar .divider-vertical {
+  height: 40px;
+  margin: 0 9px;
+  border-left: 1px solid #f2f2f2;
+  border-right: 1px solid #ffffff;
+}
+.navbar .btn,
+.navbar .btn-group {
+  margin-top: 5px;
+}
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
+  margin-top: 0;
+}
+.navbar-form {
+  margin-bottom: 0;
+  *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.navbar-form:after {
+  clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+  margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+  display: inline-block;
+  margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+  margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+  margin-top: 5px;
+  white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+  margin-top: 0;
+}
+.navbar-search {
+  position: relative;
+  float: left;
+  margin-top: 5px;
+  margin-bottom: 0;
+}
+.navbar-search .search-query {
+  margin-bottom: 0;
+  padding: 4px 14px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  border-radius: 15px;
+}
+.navbar-static-top {
+  position: static;
+  margin-bottom: 0;
+}
+.navbar-static-top .navbar-inner {
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+  margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom .navbar-inner {
+  border-width: 1px 0 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+  padding-left: 0;
+  padding-right: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+}
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.navbar-fixed-top {
+  top: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 1px 10px rgba(0,0,0,.1);
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+}
+.navbar-fixed-bottom .navbar-inner {
+  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
+}
+.navbar .nav {
+  position: relative;
+  left: 0;
+  display: block;
+  float: left;
+  margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+  float: right;
+  margin-right: 0;
+}
+.navbar .nav > li {
+  float: left;
+}
+.navbar .nav > li > a {
+  float: none;
+  padding: 10px 15px 10px;
+  color: #777777;
+  text-decoration: none;
+  text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .nav .dropdown-toggle .caret {
+  margin-top: 8px;
+}
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+  background-color: transparent;
+  color: #333333;
+  text-decoration: none;
+}
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+  color: #555555;
+  text-decoration: none;
+  background-color: #e5e5e5;
+  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+.navbar .btn-navbar {
+  display: none;
+  float: right;
+  padding: 7px 10px;
+  margin-left: 5px;
+  margin-right: 5px;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #ededed;
+  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #e5e5e5;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
+}
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:focus,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #e5e5e5;
+  *background-color: #d9d9d9;
+}
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+  background-color: #cccccc \9;
+}
+.navbar .btn-navbar .icon-bar {
+  display: block;
+  width: 18px;
+  height: 2px;
+  background-color: #f5f5f5;
+  -webkit-border-radius: 1px;
+  -moz-border-radius: 1px;
+  border-radius: 1px;
+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+  margin-top: 3px;
+}
+.navbar .nav > li > .dropdown-menu:before {
+  content: '';
+  display: inline-block;
+  border-left: 7px solid transparent;
+  border-right: 7px solid transparent;
+  border-bottom: 7px solid #ccc;
+  border-bottom-color: rgba(0, 0, 0, 0.2);
+  position: absolute;
+  top: -7px;
+  left: 9px;
+}
+.navbar .nav > li > .dropdown-menu:after {
+  content: '';
+  display: inline-block;
+  border-left: 6px solid transparent;
+  border-right: 6px solid transparent;
+  border-bottom: 6px solid #ffffff;
+  position: absolute;
+  top: -6px;
+  left: 10px;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+  border-top: 7px solid #ccc;
+  border-top-color: rgba(0, 0, 0, 0.2);
+  border-bottom: 0;
+  bottom: -7px;
+  top: auto;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+  border-top: 6px solid #ffffff;
+  border-bottom: 0;
+  bottom: -6px;
+  top: auto;
+}
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
+  border-top-color: #333333;
+  border-bottom-color: #333333;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #e5e5e5;
+  color: #555555;
+}
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #777777;
+  border-bottom-color: #777777;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #555555;
+  border-bottom-color: #555555;
+}
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+  left: auto;
+  right: 12px;
+}
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+  left: auto;
+  right: 13px;
+}
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+  left: auto;
+  right: 100%;
+  margin-left: 0;
+  margin-right: -1px;
+  -webkit-border-radius: 6px 0 6px 6px;
+  -moz-border-radius: 6px 0 6px 6px;
+  border-radius: 6px 0 6px 6px;
+}
+.navbar-inverse .navbar-inner {
+  background-color: #1b1b1b;
+  background-image: -moz-linear-gradient(top, #222222, #111111);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+  background-image: -webkit-linear-gradient(top, #222222, #111111);
+  background-image: -o-linear-gradient(top, #222222, #111111);
+  background-image: linear-gradient(to bottom, #222222, #111111);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+  border-color: #252525;
+}
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+  color: #999999;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover,
+.navbar-inverse .brand:focus,
+.navbar-inverse .nav > li > a:focus {
+  color: #ffffff;
+}
+.navbar-inverse .brand {
+  color: #999999;
+}
+.navbar-inverse .navbar-text {
+  color: #999999;
+}
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+  background-color: transparent;
+  color: #ffffff;
+}
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+  color: #ffffff;
+  background-color: #111111;
+}
+.navbar-inverse .navbar-link {
+  color: #999999;
+}
+.navbar-inverse .navbar-link:hover,
+.navbar-inverse .navbar-link:focus {
+  color: #ffffff;
+}
+.navbar-inverse .divider-vertical {
+  border-left-color: #111111;
+  border-right-color: #222222;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+  background-color: #111111;
+  color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > a:hover .caret,
+.navbar-inverse .nav li.dropdown > a:focus .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+  border-top-color: #999999;
+  border-bottom-color: #999999;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+  border-top-color: #ffffff;
+  border-bottom-color: #ffffff;
+}
+.navbar-inverse .navbar-search .search-query {
+  color: #ffffff;
+  background-color: #515151;
+  border-color: #111111;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+  color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+  padding: 5px 15px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
+.navbar-inverse .btn-navbar {
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e0e0e;
+  background-image: -moz-linear-gradient(top, #151515, #040404);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+  background-image: -webkit-linear-gradient(top, #151515, #040404);
+  background-image: -o-linear-gradient(top, #151515, #040404);
+  background-image: linear-gradient(to bottom, #151515, #040404);
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+  border-color: #040404 #040404 #000000;
+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+  *background-color: #040404;
+  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:focus,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+  color: #ffffff;
+  background-color: #040404;
+  *background-color: #000000;
+}
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+  background-color: #000000 \9;
+}
+/*@import "bootstrap/breadcrumbs.less";*/
+/*@import "bootstrap/pagination.less";*/
+/*@import "bootstrap/pager.less";*/
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000000;
+}
+.modal-backdrop.fade {
+  opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  opacity: 0.8;
+  filter: alpha(opacity=80);
+}
+.modal {
+  position: fixed;
+  top: 10%;
+  left: 50%;
+  z-index: 1050;
+  width: 560px;
+  margin-left: -280px;
+  background-color: #ffffff;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, 0.3);
+  *border: 1px solid #999;
+  /* IE6-7 */
+
+  -webkit-border-radius: 6px;
+  -moz-border-radius: 6px;
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding-box;
+  -moz-background-clip: padding-box;
+  background-clip: padding-box;
+  outline: none;
+}
+.modal.fade {
+  -webkit-transition: opacity .3s linear, top .3s ease-out;
+  -moz-transition: opacity .3s linear, top .3s ease-out;
+  -o-transition: opacity .3s linear, top .3s ease-out;
+  transition: opacity .3s linear, top .3s ease-out;
+  top: -25%;
+}
+.modal.fade.in {
+  top: 10%;
+}
+.modal-header {
+  padding: 9px 15px;
+  border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+  margin-top: 2px;
+}
+.modal-header h3 {
+  margin: 0;
+  line-height: 30px;
+}
+.modal-body {
+  position: relative;
+  overflow-y: auto;
+  max-height: 400px;
+  padding: 15px;
+}
+.modal-form {
+  margin-bottom: 0;
+}
+.modal-footer {
+  padding: 14px 15px 15px;
+  margin-bottom: 0;
+  text-align: right;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  -webkit-border-radius: 0 0 6px 6px;
+  -moz-border-radius: 0 0 6px 6px;
+  border-radius: 0 0 6px 6px;
+  -webkit-box-shadow: inset 0 1px 0 #ffffff;
+  -moz-box-shadow: inset 0 1px 0 #ffffff;
+  box-shadow: inset 0 1px 0 #ffffff;
+  *zoom: 1;
+}
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.modal-footer:after {
+  clear: both;
+}
+.modal-footer .btn + .btn {
+  margin-left: 5px;
+  margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+/*@import "bootstrap/tooltip.less";*/
+/*@import "bootstrap/popovers.less";*/
+/*@import "bootstrap/thumbnails.less";*/
+/*@import "bootstrap/media.less";*/
+/*@import "bootstrap/labels-badges.less";*/
+/*@import "bootstrap/progress-bars.less";*/
+/*@import "bootstrap/accordion.less";*/
+/*@import "bootstrap/carousel.less";*/
+/*@import "bootstrap/hero-unit.less";*/
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.hide {
+  display: none;
+}
+.show {
+  display: block;
+}
+.invisible {
+  visibility: hidden;
+}
+.affix {
+  position: fixed;
+}
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article,
+aside,

<TRUNCATED>


[08/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/ClientData.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/ClientData.js b/contrib/src/main/html/siteops/ClientData.js
deleted file mode 100644
index 28df87a..0000000
--- a/contrib/src/main/html/siteops/ClientData.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawClientDataTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        document.getElementById('totaldata').innerHTML = pts[0];
-      }
-    }
-    connect.open('GET',  "ClientData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/ClientData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/ClientData.php b/contrib/src/main/html/siteops/ClientData.php
deleted file mode 100644
index 5e97e96..0000000
--- a/contrib/src/main/html/siteops/ClientData.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(9);
-
-// result array
-$result = array();
-
-$value = $redis->get(1);
-$result[] = $value;
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/DrawPageViewTimeChart.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/DrawPageViewTimeChart.js b/contrib/src/main/html/siteops/DrawPageViewTimeChart.js
deleted file mode 100644
index 9a71f14..0000000
--- a/contrib/src/main/html/siteops/DrawPageViewTimeChart.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions for drawing page view vs time chart.
- */
-
-
-function PageViewTimeDataUrl()
-{    
-    var url = "PageViewTimeData.php?";
-    url += "from=";
-    url += Math.floor(pageViewLookback);
-    if (pageViewUrl) 
-    {
-       url += "&url=" + pageViewUrl;   
-    }
-    //url += "&url=mydomain.com/services.php?serviceid=6";
-    return url;  
-}
-
-function RenderPageViewTimeChart()
-{
-  // create/delete rows 
-  if (pageViewTable.getNumberOfRows() < pageDataPoints.length)
-  {    
-    var numRows = pageDataPoints.length - pageViewTable.getNumberOfRows();
-    pageViewTable.addRows(numRows);
-  } else {
-    for(var i=(pageViewTable.getNumberOfRows()-1); i >= pageDataPoints.length; i--)
-    {
-      pageViewTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < pageViewTable.getNumberOfRows(); i++)
-  {
-    //if(parseFloat(aggrDataPoints[i].cost) < 500) continue;
-    pageViewTable.setCell(i, 0, new Date(parseInt(pageDataPoints[i].timestamp)));
-    pageViewTable.setCell(i, 1, parseFloat(pageDataPoints[i].view));
-  }
-    
-  // get options
-  var page = document.getElementById('page').value;
-  var index = document.getElementById('index').value;
-  var title = "ALL Urls (PVS/Min)";
-  if (page == "home") title = "home.php (PVS/Min)";
-  if (page == "contact") title = "contactus.php (PVS/Min)";
-  if (page == "about") title = "about.php (PVS/Min)";
-  if (page == "support") title = "support.php (PVS/Min)";
-  if (page == "product") {
-    title = "product.php-" + index + " (PVS/Min)";
-  }
-  if (page == "services") {
-    title = "services.php-" + index + " (PVS/Min)";
-  }
-  if (page == "products") {
-    title = "products.php-" + index + " (PVS/Min)";
-  }
-
-  var options = { pointSize: 0, lineWidth : 1, legend : {position : 'top'} };
-  options.title = title;
-
-  // Draw line chart.
-  pageViewChart.draw(PageViewView, options); 
-}
-
-function DrawPageViewTimeChart()
-{
-  var url = PageViewTimeDataUrl();
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        pageViewData = connect.response;
-        var pts = JSON.parse(pageViewData);
-        for(var i=0; i <  pts.length; i++) 
-        {
-          pageDataPoints.push(pts[i]);
-          delete pts[i];
-        }
-        delete pts;
-        sortByKey(pageDataPoints, "timestamp");
-        RenderPageViewTimeChart();
-        delete pageViewData;
-        delete pageDataPoints;
-        pageDataPoints = new Array();
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  pageViewLookback = (new Date().getTime()/1000) - (3600 * pageViewInterval)-60;
-}
-
-
-function HandlePageViewTimeSubmit()
-{
-  // remove old time  
-  if(pageNowPlaying) clearInterval(pageNowPlaying); 
-
-  // get submit values 
-  var page = document.getElementById('page').value;
-  var index = document.getElementById('index').value;
-  if (page == "all") pageViewUrl ="";
-  if (page == "home") pageViewUrl = "mydomain.com/home.php";
-  if (page == "contact") pageViewUrl = "mydomain.com/contactus.php";
-  if (page == "about") pageViewUrl = "mydomain.com/about.php";
-  if (page == "support") pageViewUrl = "mydomain.com/support.php";
-  if (page == "product")
-  {
-    pageViewUrl = "mydomain.com/products.php";   
-    if (index && (index.length > 0)) pageViewUrl += "?productid=" + index;
-  }
-  if (page == "services") 
-  {
-    pageViewUrl = "mydomain.com/services.php";   
-    if (index && (index.length > 0)) pageViewUrl += "?serviceid=" + index;
-  }
-  if (page == "partners") 
-  {
-    pageViewUrl = "mydomain.com/partners.php";   
-    if (index && (index.length > 0)) pageViewUrl += "?partnerid=" + index;
-  }
-  pageViewLookback = document.getElementById('pageviewlookback').value;
-  if ( !pageViewLookback || (pageViewLookback == "")) {
-    pageViewLookback = (new Date().getTime()/1000) - 3600;
-  }  else {
-    pageViewLookback = (new Date().getTime()/1000) - 3600 * pageViewLookback;
-  }
-
-  // set from values  
-  document.getElementById('page').value = page;
-  document.getElementById('index').value = index;
-  var lookback = document.getElementById('pageviewlookback').value;
-  document.getElementById('pageviewlookback').value = lookback;
-  pageViewInterval = lookback;
-    
-  // draw chart
-  DrawPageViewTimeChart();
-  pageNowPlaying = setInterval(DrawPageViewTimeChart, 60 * 1000);
-}
-
-function handleUrlChange()
-{
-  var page = document.getElementById('page').value;
-  if ((page == "home")||(page == "contact")||(page == "about")||(page == "support") || (page =="all"))
-  {
-    document.getElementById('index').value = 0;
-    document.getElementById('index').disabled = "true";   
-  } else {
-    document.getElementById('index').value = 0;
-    document.getElementById('index').disabled = ""; 
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/PageViewTimeData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/PageViewTimeData.php b/contrib/src/main/html/siteops/PageViewTimeData.php
deleted file mode 100644
index 7c42679..0000000
--- a/contrib/src/main/html/siteops/PageViewTimeData.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(1);
-$format = 'YmdHi';
-$incr = 60;
-
-// Get from date 
-$from = $_GET['from'];
-if (!$from || empty($from)) {
-  $from  = time()-3600;
-}
-
-// get url   
-$url = $_GET['url'];
-
-// result array
-$result = array();
-
-while ($from < time()) 
-{
-  $date = gmdate($format, $from);
-  if (!$url || empty($url))
-  {
-    // view total   
-    $total = 0;
-        
-    // home.php views
-    $key =  'm|' . $date . '|0:mydomain.com/home.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-            
-    // contactus.php views
-    $key =  'm|' . $date . '|0:mydomain.com/contactus.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-    
-    // contactus.php views
-    $key =  'm|' . $date . '|0:mydomain.com/about.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-    
-    // contactus.php views
-    $key =  'm|' . $date . '|0:mydomain.com/support.php';
-    $arr =  $redis->hGetAll($key);
-    $total += $arr[1];
-    
-    // products.php 
-    for ($i = 0; $i < 100; $i++)
-    {      
-        $key =  'm|' . $date . '|0:mydomain.com/products.php?productid='. $i;
-        $arr =  $redis->hGetAll($key);
-        $total += $arr[1];
-    }
-
-    // services.php 
-    for ($i = 0; $i < 100; $i++)
-    {      
-        $key =  'm|' . $date . '|0:mydomain.com/services.php?serviceid='. $i;
-        $arr =  $redis->hGetAll($key);
-        $total += $arr[1];
-    }
-
-    // partners.php 
-    for ($i = 0; $i < 100; $i++)
-    {      
-        $key =  'm|' . $date . '|0:mydomain.com/partners.php?partnerid='. $i;
-        $arr =  $redis->hGetAll($key);
-        $total += $arr[1];
-    }
-
-    // store result in array   
-    $result[] = array("timestamp" => $from * 1000, "url" => "all", "view" => $total);
-
-  } else {
-    
-    $key =  'm|' . $date . '|0:' . $url;
-    $arr = $redis->hGetAll($key);
-    if ($arr)
-    {
-      $result[] = array("timestamp" => $from * 1000, "url" => $url, "view" => $arr[1]);
-    }
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/Server404.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/Server404.php b/contrib/src/main/html/siteops/Server404.php
deleted file mode 100644
index 314d5e9..0000000
--- a/contrib/src/main/html/siteops/Server404.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(8);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/ServerLoad.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/ServerLoad.php b/contrib/src/main/html/siteops/ServerLoad.php
deleted file mode 100644
index d2f4dca..0000000
--- a/contrib/src/main/html/siteops/ServerLoad.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(4);
-$format = 'YmdHi';
-$incr = 60;
-
-// Get from date 
-$from = $_GET['from'];
-if (!$from || empty($from)) {
-  $from  = time()-3600;
-}
-
-// get server   
-$server = $_GET['server'];
-
-// result array
-$result = array();
-
-while ($from < time()) 
-{
-  $date = gmdate($format, $from);
-  if (!$server || empty($server) || ($server == "all"))
-  {
-    // total server load  
-    $total = 0;
-          
-    // server loads 
-    $key =  'm|' . $date . '|0:server0.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server1.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server2.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server3.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server4.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server5.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server6.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server7.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server8.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-    $key =  'm|' . $date . '|0:server9.mydomain.com:80';
-    $arr = $redis->hGetAll($key);
-    $total += $arr[1];
-
-    // add to result 
-
-    // add to result 
-    $result[] = array("timestamp" => $from * 1000, "server" => "all", "view" => $total);
-
-  } else {
-    
-    $key =  'm|' . $date . '|0:' . $server;
-    $arr = $redis->hGetAll($key);
-    if ($arr)
-    {
-      $result[] = array("timestamp" => $from * 1000, "server" => $server, "view" => $arr[1]);
-    }
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopIpClientChart.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpClientChart.js b/contrib/src/main/html/siteops/TopIpClientChart.js
deleted file mode 100644
index ee1a0c8..0000000
--- a/contrib/src/main/html/siteops/TopIpClientChart.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top IpClient table.
- */
-
-function DrawTopIpClientTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        topIpClientTable = new google.visualization.DataTable();
-        topIpClientTable.addColumn('string', 'Client IP');
-        topIpClientTable.addColumn('number', 'requests/sec');
-        topIpClientTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          topIpClientTable.setCell(i, 0, row[0]);
-          topIpClientTable.setCell(i, 1, parseInt(row[1]));
-          delete row
-          delete pts[i];
-        }
-        topIpClientTableChart.draw(topIpClientTable, {showRowNumber: true});
-        delete topIpClientTable;
-        delete data;
-        delete pts;
-        //document.getElementById('top_IpClient_div').innerHTML = data;
-      }
-    }
-    connect.open('GET',  "TopIpClientData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopIpClientData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpClientData.php b/contrib/src/main/html/siteops/TopIpClientData.php
deleted file mode 100644
index ddb644d..0000000
--- a/contrib/src/main/html/siteops/TopIpClientData.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(3);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopIpData.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpData.js b/contrib/src/main/html/siteops/TopIpData.js
deleted file mode 100644
index e6f7f67..0000000
--- a/contrib/src/main/html/siteops/TopIpData.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawRiskyClientTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        var riskyCleintTable = new google.visualization.DataTable();
-        riskyCleintTable.addColumn('string', 'Client Ip');
-        riskyCleintTable.addColumn('number', 'bytes/sec');
-        riskyCleintTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          riskyCleintTable.setCell(i, 0, row[0]);
-          riskyCleintTable.setCell(i, 1, parseInt(row[1]));
-        }
-        //document.getElementById('risky_client_div').innerHTML = data;
-        //document.getElementById('risky_client_div').innerHTML = riskyCleintTable.getNumberOfRows();
-        riskyClientTableChart.draw(riskyCleintTable, {showRowNumber: true});
-        delete riskyCleintTable;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "TopIpData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopIpData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopIpData.php b/contrib/src/main/html/siteops/TopIpData.php
deleted file mode 100644
index ce07ad8..0000000
--- a/contrib/src/main/html/siteops/TopIpData.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(6);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopServer.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopServer.js b/contrib/src/main/html/siteops/TopServer.js
deleted file mode 100644
index b94a876..0000000
--- a/contrib/src/main/html/siteops/TopServer.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawTopServerTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        topServerTable = new google.visualization.DataTable();
-        topServerTable.addColumn('string', 'SERVER');
-        topServerTable.addColumn('number', 'requests/sec');
-        topServerTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          topServerTable.setCell(i, 0, row[0]);
-          topServerTable.setCell(i, 1, parseInt(row[1]));
-          delete pts[i];
-        }
-        topServerTableChart.draw(topServerTable, {showRowNumber: true});
-        delete topServerTable;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "TopServer.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopServer.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopServer.php b/contrib/src/main/html/siteops/TopServer.php
deleted file mode 100644
index 91bfab5..0000000
--- a/contrib/src/main/html/siteops/TopServer.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(10);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopUrlChart.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopUrlChart.js b/contrib/src/main/html/siteops/TopUrlChart.js
deleted file mode 100644
index 646bb69..0000000
--- a/contrib/src/main/html/siteops/TopUrlChart.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawTopUrlTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        topUrlTable = new google.visualization.DataTable();
-        topUrlTable.addColumn('string', 'URL');
-        topUrlTable.addColumn('number', 'requests/sec');
-        topUrlTable.addRows(10);
-        for(var i=0; (i <  pts.length)&&(i < 10); i++) 
-        {
-          var row = pts[i].split("##");
-          topUrlTable.setCell(i, 0, row[0]);
-          topUrlTable.setCell(i, 1, parseInt(row[1]));
-          delete pts[i];
-        }
-        topUrlTableChart.draw(topUrlTable, {showRowNumber: true});
-        delete topUrlTable;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "TopUrlData.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TopUrlData.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TopUrlData.php b/contrib/src/main/html/siteops/TopUrlData.php
deleted file mode 100644
index 52c3ddf..0000000
--- a/contrib/src/main/html/siteops/TopUrlData.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(2);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 20; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TotalViews.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TotalViews.js b/contrib/src/main/html/siteops/TotalViews.js
deleted file mode 100644
index 58ecf7e..0000000
--- a/contrib/src/main/html/siteops/TotalViews.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawTotalViewsTableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        document.getElementById('totalviews').innerHTML = data;
-      }
-    }
-    connect.open('GET',  "TotalViews.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/TotalViews.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/TotalViews.php b/contrib/src/main/html/siteops/TotalViews.php
deleted file mode 100644
index 178cb9b..0000000
--- a/contrib/src/main/html/siteops/TotalViews.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(11);
-
-$value = $redis->get(1);
-print $value;
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/Url404.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/Url404.js b/contrib/src/main/html/siteops/Url404.js
deleted file mode 100644
index faa1734..0000000
--- a/contrib/src/main/html/siteops/Url404.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- */
-/**
- * Functions fro charting top url table.
- */
-
-function DrawUrl404TableChart()
-{
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        var data = connect.response;
-        var pts = JSON.parse(data);
-        var url404Table = new google.visualization.DataTable();
-        url404Table.addColumn('string', 'URL');
-        url404Table.addColumn('number', '404/sec');
-        url404Table.addRows(10);
-        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
-        {
-          var row = pts[i].split("##");
-          if ((row[1] == null)||(row[1] == ""))
-          {
-            url404Table.setCell(i, 0,  "-");
-          } else {
-            url404Table.setCell(i, 0, row[0]);
-          }
-          if ((row[1] == null)||(row[1] == ""))
-          {
-            url404Table.setCell(i, 1, 0);   
-          } else {
-            url404Table.setCell(i, 1, parseInt(row[1]));
-          }
-        }
-        //document.getElementById('risky_client_div').innerHTML = data;
-        //document.getElementById('risky_client_div').innerHTML = url404Table.getNumberOfRows();
-        url404TableChart.draw(url404Table, {showRowNumber: true});
-        delete url404Table;
-        delete data;
-        delete pts;
-      }
-    }
-    connect.open('GET',  "Url404.php", true);
-    connect.send(null);
-  } catch(e) {
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/Url404.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/Url404.php b/contrib/src/main/html/siteops/Url404.php
deleted file mode 100644
index 82067f8..0000000
--- a/contrib/src/main/html/siteops/Url404.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('127.0.0.1');
-$redis->select(7);
-
-// result array
-$result = array();
-
-for($i = 0; $i < 10; $i++)
-{
-  $value = $redis->get($i);
-  //var_dump($value);
-  $result[] = $value;
-}
-
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/global.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/global.js b/contrib/src/main/html/siteops/global.js
deleted file mode 100644
index 7555f39..0000000
--- a/contrib/src/main/html/siteops/global.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.
- */
-/**
- * Declaration and initialization for global variables.
- */
-
-// url parameters   
-var params;
-
-// Page View/Time
-var pageViewData; 
-var pageDataPoints; 
-var pageViewTable;
-var pageViewChart; 
-var PageViewView;
-var pageViewRefresh;
-var pageViewLookback;
-var pageViewUrl;
-var pageViewInterval;
-var pageNowPlaying;
-
-// top url(s)
-var topUrlTable;
-var topUrlTableChart;
-
-// server load  
-var serverLoadRefresh;
-var serverLoadLookback;
-var serverName;
-var serverLoadDataPoints;
-var serverLoadTable;
-var serverLoadChart;
-var serverLoadView;
-var serverLoadInterval;
-
-// Top server(s)
-var topServerTable;
-var topServerTableChart;
-
-var topIpClientTable;
-var topIpClientTableChart;
-var riskyClientTableChart;
-var url404TableChart;
-var server404TableChart;
-var serverNowPlaying;
-
-
-// Get split query string
-function QueryString() {
-  var query_string = {};
-  var query = window.location.search.substring(1);
-  return query;
-}
-function SplitQuery(query)
-{  
-	var params = {};
-	var vars = query.split("&");
-	for (var i=0;i<vars.length;i++)
-	{
-		var pair = vars[i].split("=");
-		if(pair.length == 2) 
-		{
-			params[pair[0]] = pair[1];
-		}
-	}
-	return params;
-}  
-
-// Initialize global variable(s)
-function InitializeGlobal()
-{
-  // Initialize params  
-  params = SplitQuery(QueryString()); 
-
-  // intialize page view variables
-  pageDataPoints = new Array();
-  pageViewTable = new google.visualization.DataTable();
-  pageViewTable.addColumn('datetime', 'Time');
-  pageViewTable.addColumn('number', 'Page View');
-  pageViewChart = new google.visualization.LineChart(document.getElementById('pageview_chart_div'));
-  PageViewView = new google.visualization.DataView(pageViewTable);
-  pageViewRefresh = 60;
-  pageViewLookback = (new Date().getTime()/1000) - 3600;
-  document.getElementById('pageviewlookback').value = "1";
-  pageViewInterval = 1;
-
-  serverLoadRefresh = 60;
-  serverLoadLookback = (new Date().getTime()/1000) - 3600;
-  document.getElementById('serverloadlookback').value = "1";
-  serverLoadDataPoints = new Array();
-  serverLoadTable = new google.visualization.DataTable();
-  serverLoadTable.addColumn('datetime', 'Time');
-  serverLoadTable.addColumn('number', 'Server Load');
-  serverLoadChart = new google.visualization.LineChart(document.getElementById('server_load_div'));
-  serverLoadView = new google.visualization.DataView(serverLoadTable);
-  serverLoadInterval = 1;
-
-  topUrlTableChart = new google.visualization.Table(document.getElementById('top_url_div'));
-  topServerTableChart = new google.visualization.Table(document.getElementById('top_server_div'));
-
-  topIpClientTableChart = new google.visualization.Table(document.getElementById('top_IpClient_div'));
-  riskyClientTableChart = new google.visualization.Table(document.getElementById('top_ipdata_div'));
-
-  url404TableChart = new google.visualization.Table(document.getElementById('url_404_div'));
-  server404TableChart = new google.visualization.Table(document.getElementById('server_404_div'));
-}
-
-/**
- * Sort json array  
- */
-function sortByKey(array, key) {
-    return array.sort(function(a, b) {
-        var x = a[key]; var y = b[key];
-        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-    });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/index.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/index.php b/contrib/src/main/html/siteops/index.php
deleted file mode 100644
index d72bc9d..0000000
--- a/contrib/src/main/html/siteops/index.php
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * 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.
- */
-<!--
- --  Copyright (c) 2012-2013 DataTorrent, Inc.
- --  All Rights Reserved.
- -->
-
-<!-- ## Siteops is deprecated, please use logstream instead ## -->
-    
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Site Operations Demo </title>
-
-<link rel="stylesheet" type="text/css" href="malhar.css">
-
-<!-- Google charts include -->
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-google.load('visualization', '1', {'packages':['corechart']});
-google.load('visualization', '1', {'packages':['table']});
-
-</script>
-
-<!-- DataTorrent charting utils -->
-<script type="text/javascript" src="global.js"></script>
-<script type="text/javascript" src="DrawPageViewTimeChart.js"></script>
-<script type="text/javascript" src="TopUrlChart.js"></script>
-<script type="text/javascript" src="TopServer.js"></script>
-<script type="text/javascript" src="TopIpClientChart.js"></script>
-<script type="text/javascript" src="server.js"></script>
-<script type="text/javascript" src="TopIpData.js"></script>
-<script type="text/javascript" src="TotalViews.js"></script>
-<script type="text/javascript" src="Url404.js"></script>
-<script type="text/javascript" src="ClientData.js"></script>
-<script type="text/javascript" src="serverfail.js"></script>
-<script type="text/javascript" src="TotalViews.js"></script>
-
-<!-- window onload -->
-<script type="text/javascript">
-
-window.onload = function() {
-  
-  // Initialize variables   
-  InitializeGlobal();
-   
-  // Draw top charts 
-  DrawClientDataTableChart();
-  DrawTotalViewsTableChart();
-  DrawTopUrlTableChart();
-  DrawTopServerTableChart();
-  DrawRiskyClientTableChart();
-  DrawTopIpClientTableChart(); 
-  DrawUrl404TableChart();
-  DrawServer404TableChart();
-  setInterval(DrawClientDataTableChart, 1000)
-  setInterval(DrawTotalViewsTableChart, 1000);
-  setInterval(DrawTopUrlTableChart, 1000);
-  setInterval(DrawTopServerTableChart, 1000);
-  setInterval(DrawRiskyClientTableChart, 1000);
-  setInterval(DrawTopIpClientTableChart, 1000);
-  setInterval(DrawUrl404TableChart, 1000);
-  setInterval(DrawServer404TableChart, 1000);
-};
-
-</script>
-
-</head>
-<body>
-
-    <div id="header">
-        <ul class="dashboard-modes">
-            <li>
-                <a href="#" class="active">Site Operations Demo</a>
-            </li>
-        </ul>
-
-        <div id="logo"><img src="main_banner.png" style="margin-left:10px;"/></div>
-    </div>
-	
-	<div id="main">
-    <div id="pagecontent">
-        <div class="dashboardMgr">
-            <div class="inner" style="">
-                <h2 class="title">Page views vs Time Chart</h2> 
-                <form onsubmit="return false;">
-                        Select Page:
-                        <select name="page" id="page" style="width:200px;" onchange="handleUrlChange();">
-                           <option value="all">ALL</option>
-                           <option value="home">home.php</option>
-                           <option value="contact">contactus.php</option>
-                           <option value="about">about.php</option>
-                           <option value="support">support.php</option>
-                           <option value="product">products.php</option>
-                           <option value="services">services.php</option>
-                           <option value="partners">partners.php</option>
-            		</select><br>
-                        Product/Services/Partners Index : 
-                        <select name="index" id="index" style="width:200px;" disabled="true" >
-                          <option value=\"$i\"></option>
-                          <?php
-                            for ($i = 0; $i < 100; $i++) {
-                              print "<option value=\"$i\">$i</option>\n";
-                            }
-        	           ?>
-                        </select><br>
-		        Look Back(Hours):
-                        <input type="text" name="lookback" id="pageviewlookback" class="input-small"/>
-                </form><br>
-                <a href="javascript:void(0)" onclick="HandlePageViewTimeSubmit();">View Chart</a><br><br>
-
-                <h2 class="title">Server Load vs Time Chart</h2> 
-                <form onsubmit="return false;">
-                        Server Name : 
-                        <select name="servername" id="servername" style="width:200px;">
-                          <option value="all">All</option>
-                          <?php
-                            for ($i = 0; $i < 10; $i++) {
-                              print "<option value=\"server{$i}.mydomain.com:80\">Server$i.mydomain.com</option>\n";
-                            }
-        	           ?>
-                        </select><br>
-		        Server Load Look Back(Hours):
-                        <input type="text" name="serverloadlookback" id="serverloadlookback" class="input-small"/>
-                </form><br>
-                <a href="javascript:void(0)" onclick="HandleServerLoadTimeSubmit();">View Server Load Chart</a><br><br>
-                
-                <b>Total Bytes/Sec :</b> <b id="totaldata"> </b> <br 
-                <b>Total Views/Sec :</b> <b id="totalviews"> </b> 
-            </div>
-        </div>
-        <div class="dashboardMain">
-           <div class="dbib">     
-                <div id="pageview_chart_div"></div>
-		<div id="server_load_div"></div>
-           </div>
-           <div class="dbib">
-                <table><tbody><tr>
-      
-		         <td>       <h1>Top 10 Urls</h1>
-		                    <div  id="top_url_div" ></div><br><br>
-                                    <h1>Top 10 Client IPs</h1>
-                                    <div id="top_IpClient_div"></div> <br><br>
-                                    <h1>Top 10 Urls with 404 response</h1>
-                                    <div id="url_404_div"></div>
-		          </td>
-		          <td>
-                                   <h1>Server Load</h1>
-		                   <div id="top_server_div"></div> <br><br>
-                                   <h1>Top 10 client IPs download</h1>
-                                   <div id="top_ipdata_div"></div> <br><br>
-                                   <h1>404 per Server</h1>
-                                   <div id="server_404_div"></div-->
-		           </td>
-                          
-               </tr></tbody></table>
-           </div>
-        </div>		
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/info.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/info.php b/contrib/src/main/html/siteops/info.php
deleted file mode 100644
index adc6a88..0000000
--- a/contrib/src/main/html/siteops/info.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/*
- * 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.
- */
-phpinfo();
-
-?>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/siteops/main_banner.png
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/siteops/main_banner.png b/contrib/src/main/html/siteops/main_banner.png
deleted file mode 100644
index f3f4810..0000000
Binary files a/contrib/src/main/html/siteops/main_banner.png and /dev/null differ


[12/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/server.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/server.js b/apps/logstream/src/main/html/server.js
new file mode 100644
index 0000000..fe364a2
--- /dev/null
+++ b/apps/logstream/src/main/html/server.js
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+/**
+ * Functions for drawing server load vs time chart.
+ */
+
+function RenderServerLoadTimeChart()
+{  
+  // create/delete rows 
+  if (serverLoadTable.getNumberOfRows() < serverLoadDataPoints.length)
+  {    
+    var numRows = serverLoadDataPoints.length - serverLoadTable.getNumberOfRows();
+    serverLoadTable.addRows(numRows);
+  } else {
+    for(var i=(serverLoadTable.getNumberOfRows()-1); i >= serverLoadDataPoints.length; i--)
+    {
+      serverLoadTable.removeRow(i);    
+    }
+  }
+
+  // Populate data table with time/cost data points. 
+  for(var i=0; i < serverLoadTable.getNumberOfRows(); i++)
+  {
+    serverLoadTable.setCell(i, 0, new Date(parseInt(serverLoadDataPoints[i].timestamp)));
+    serverLoadTable.setCell(i, 1, parseFloat(serverLoadDataPoints[i].view));
+  }
+
+  // get chart options
+  var serverName = document.getElementById('servername').value;  
+  var title = "All Servers (PVS/Min)";
+  if (serverName != "all") title = serverName + " (PVS/Min)";
+  var options = {pointSize: 0, lineWidth : 1, legend : { position : 'top'} };
+  options.title = title;
+
+  // Draw line chart.
+  serverLoadChart.draw(serverLoadView, options); 
+}
+
+function DrawServerLoadTime()
+{
+  // get url 
+  var url = "ServerLoad.php?from=" + Math.floor(serverLoadLookback);
+  if ( serverName && (serverName.length > 0))
+  {   
+    url += "&server=" + serverName;    
+  }
+
+  // fetch data  
+    try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        serverLoadData = connect.response;
+        var pts = JSON.parse(serverLoadData);
+        for(var i=0; i <  pts.length; i++) 
+        {
+          serverLoadDataPoints.push(pts[i]);
+          delete pts[i];
+        }
+        delete pts;
+        sortByKey(serverLoadDataPoints, "timestamp");
+        RenderServerLoadTimeChart();
+        delete serverLoadData;
+        delete serverLoadDataPoints;
+        serverLoadDataPoints = new Array();
+      }
+    }
+    connect.open('GET',  url, true);
+    connect.send(null);
+  } catch(e) {
+  }
+  serverLoadLookback = (new Date().getTime()/1000) -  (3600*serverLoadInterval) - 60;
+}
+
+function HandleServerLoadTimeSubmit()
+{
+  // reset intercval  
+  if(serverNowPlaying) clearInterval(serverNowPlaying);
+
+  // get params 
+  serverName = document.getElementById('servername').value;
+  serverLoadLookback = document.getElementById('serverloadlookback').value;
+  if ( !serverLoadLookback || (serverLoadLookback == "")) {
+    serverLoadLookback = (new Date().getTime()/1000) - 3600;
+  }  else {
+    serverLoadLookback = (new Date().getTime()/1000) - 3600 * serverLoadLookback;
+  }
+
+  // set from values  
+  document.getElementById('servername').value = serverName;
+  var lookback = document.getElementById('serverloadlookback').value;
+  document.getElementById('serverloadlookback').value = lookback;
+  serverLoadInterval = lookback;
+       
+  // darw server load/time chart  
+  DrawServerLoadTime();
+  serverNowPlaying = setInterval(DrawServerLoadTime, 60 * 1000); 
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/apps/logstream/src/main/html/serverfail.js
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/serverfail.js b/apps/logstream/src/main/html/serverfail.js
new file mode 100644
index 0000000..76e5bf5
--- /dev/null
+++ b/apps/logstream/src/main/html/serverfail.js
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+/**
+ * Functions fro charting top url table.
+ */
+
+function DrawServer404TableChart()
+{
+  try
+  {
+    var connect = new XMLHttpRequest();
+    connect.onreadystatechange = function() {
+      if(connect.readyState==4 && connect.status==200) {
+        var data = connect.response;
+        var pts = JSON.parse(data);
+        var server404 = new google.visualization.DataTable();
+        server404.addColumn('string', 'SERVER');
+        server404.addColumn('number', '404/sec');
+        server404.addRows(10);
+        for(var i=0; ((i <  pts.length)&&(i < 10)); i++) 
+        {
+          var row = pts[i].split("##");
+          if ((row[0] == null)||(row[0] == ""))
+          {
+            server404.setCell(i, 0, "-");
+          } else {
+            server404.setCell(i, 0, row[0]);
+          }
+          if ((row[1] == null)||(row[1] == ""))
+          {
+            server404.setCell(i, 1, 0);
+          } else {
+            server404.setCell(i, 1, parseInt(row[1]));
+          }
+        }
+        //document.getElementById('risky_client_div').innerHTML = data;
+        //document.getElementById('risky_client_div').innerHTML = server404.getNumberOfRows();
+        server404TableChart.draw(server404, {showRowNumber: true});
+        delete server404;
+        delete data;
+        delete pts;
+      }
+    }
+    connect.open('GET',  "Server404.php", true);
+    connect.send(null);
+  } catch(e) {
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/adsdimension/global.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/global.js b/contrib/src/main/html/adsdimension/global.js
deleted file mode 100644
index bb5639c..0000000
--- a/contrib/src/main/html/adsdimension/global.js
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * 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.
- */
-/**
- * Declaration and initialization for global variables.
- */
-
-// url parameters   
-var params;
-
-// Data Points 
-var aggrData; 
-var aggrDataPoints;
-var contData;
-var contDataPoints;
-
-// Cost data table 
-var costTable;
-var costChart; 
-var costView;
-
-// Revenue data table 
-var revenueTable;
-var revenueChart; 
-var revenueView;  
-
-// Clicks data table 
-var clicksTable;
-var clicksChart; 
-var clicksView;  
-
-// Impressions data table 
-var impressionsTable;
-var impressionsChart; 
-var impressionsView;  
-
-// Ctr data table 
-var ctrTable;
-var ctrChart; 
-var ctrView;  
-
-// Margin data table 
-var marginTable;
-var marginChart; 
-var marginView;  
-
-// chart options
-var chartOptions;
-
-// Date formatter  
-var dateFormatter;
-
-// window look back value 
-var lookback;
-var aggrLookBack;
-var contLookBack;
-var contRefresh;
-var paramLookBack;
-
-// Get split query string
-function QueryString() {
-  var query_string = {};
-  var query = window.location.search.substring(1);
-  return query;
-}
-function SplitQuery(query)
-{  
-	var params = {};
-	var vars = query.split("&");
-	for (var i=0;i<vars.length;i++)
-	{
-		var pair = vars[i].split("=");
-		if(pair.length == 2) 
-		{
-			params[pair[0]] = pair[1];
-		}
-	}
-	return params;
-}  
-
-// Initialize global variable(s)
-function InitializeGlobal()
-{
-  // Initialize params  
-  params = SplitQuery(QueryString()); 
-       
-  // Initialize data points 
-  aggrDataPoints = new Array();
-  contDataPoints = new Array();
-    
-  // Initialize cost table 
-  costTable = new google.visualization.DataTable(); 
-  costTable.addColumn('datetime', 'Time');
-  costTable.addColumn('number', 'Cost');
-  chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
-  costChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
-  costView = new google.visualization.DataView(costTable);
-
-  // Initialize revenue table 
-  revenueTable = new google.visualization.DataTable(); 
-  revenueTable.addColumn('datetime', 'Time');
-  revenueTable.addColumn('number', 'Revenue');;
-  revenueChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
-  revenueView = new google.visualization.DataView(revenueTable);
-
-  // Initialize clicks table 
-  clicksTable = new google.visualization.DataTable(); 
-  clicksTable.addColumn('datetime', 'Time');
-  clicksTable.addColumn('number', 'Clicks');;
-  clicksChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
-  clicksView = new google.visualization.DataView(clicksTable);
-    
-  // Initialize impressions table 
-  impressionsTable = new google.visualization.DataTable(); 
-  impressionsTable.addColumn('datetime', 'Time');
-  impressionsTable.addColumn('number', 'Impressions');;
-  impressionsChart = new google.visualization.ScatterChart(document.getElementById('chart3_div'));
-  impressionsView = new google.visualization.DataView(impressionsTable);
-    
-  // Initialize ctr table 
-  ctrTable = new google.visualization.DataTable(); 
-  ctrTable.addColumn('datetime', 'Time');
-  ctrTable.addColumn('number', 'Ctr');;
-  ctrChart = new google.visualization.ScatterChart(document.getElementById('chart4_div'));
-  ctrView = new google.visualization.DataView(ctrTable);
-    
-  // Initialize margin table 
-  marginTable = new google.visualization.DataTable(); 
-  marginTable.addColumn('datetime', 'Time');
-  marginTable.addColumn('number', 'Margin');;
-  marginChart = new google.visualization.ScatterChart(document.getElementById('chart5_div'));
-  marginView = new google.visualization.DataView(marginTable);
-
-  // get lookback value  
-  lookback = (new Date().getTime()/1000) - 3600*6;
-  if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
-  aggrLookBack = lookback;
-     
-  // get continuos lookback 
-  contLookBack = lookback;
-  contRefresh = 5;
-      
-  // get param lookback  
-  paramLookBack = 6;
-  if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
-  //if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
-}
-
-
-/**
- * Function to create fetch urls from given parameters
- */
-function DataUrl() 
-{       
-    var url = "json.php?bucket=m";
-    url += "&publisher=";
-    if (params['publisher']) 
-    {	
-      url += params['publisher'];
-    }
-    url += "&advertiser=";
-    if (params['advertiser']) 
-    {	
-      url += params['advertiser'];
-    }
-    url += "&adunit=";
-    if (params['adunit']) 
-    {	
-      url += params['adunit'];
-    }
-     url += "&from=";
-    url += Math.floor(lookback);
-    return url;   
-}
-
-/**
- * Creates data table with time stamp and cost values.
- * Draw line chart for time vs cost.
- */
-function DrawCostChart()
-{
-  // create/delete rows 
-  if (costTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - costTable.getNumberOfRows();
-    costTable.addRows(numRows);
-  } else {
-    for(var i=(costTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      costTable.removeRow(i);    
-    }
-  }
-    
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < costTable.getNumberOfRows(); i++)
-  {
-    //if(parseFloat(aggrDataPoints[i].cost) < 500) continue;
-    costTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    costTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cost));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Cost Chart';
-  costChart.draw(costView, chartOptions); 
-}     
-
-/**
- * Creates data table with time stamp and revenu values.
- * Draw line chart for time vs revenue.
- */
-function DrawRevenueChart()
-{
-  // create/delete rows 
-  if (revenueTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - revenueTable.getNumberOfRows();
-    revenueTable.addRows(numRows);
-  } else {
-    for(var i=(revenueTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      revenueTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/revenue data points. 
-  for(var i=0; i < revenueTable.getNumberOfRows(); i++)
-  {
-    revenueTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    revenueTable.setCell(i, 1, parseFloat(aggrDataPoints[i].revenue));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Revenue Chart';
-  revenueChart.draw(revenueView, chartOptions); 
-}  
-
-/**
- * Creates data table with time stamp and clicks values.
- * Draw line chart for time vs clicks.
- */
-function DrawClicksChart()
-{
-  // create/delete rows 
-  if (clicksTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - clicksTable.getNumberOfRows();
-    clicksTable.addRows(numRows);
-  } else {
-    for(var i=(clicksTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      clicksTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/clicks data points. 
-  for(var i=0; i < clicksTable.getNumberOfRows(); i++)
-  {
-    clicksTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    clicksTable.setCell(i, 1, parseInt(aggrDataPoints[i].clicks));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Clicks Chart';
-  clicksChart.draw(clicksView, chartOptions); 
-}
-
-/**
- * Creates data table with time stamp and impressions values.
- * Draw line chart for time vs impressions.
- */
-function DrawImpressionsChart()
-{
-  // create/delete rows 
-  if (impressionsTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - impressionsTable.getNumberOfRows();
-    impressionsTable.addRows(numRows);
-  } else {
-    for(var i=(impressionsTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      impressionsTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/impressions data points. 
-  for(var i=0; i < impressionsTable.getNumberOfRows(); i++)
-  {
-    impressionsTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    impressionsTable.setCell(i, 1, parseInt(aggrDataPoints[i].impressions));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Impressions Chart';
-  impressionsChart.draw(impressionsView, chartOptions); 
-}
-
-/**
- * Draw line chart for time vs ctr.
- */
-function DrawCtrChart()
-{
-  // create/delete rows 
-  if (ctrTable.getNumberOfRows() < contDataPoints.length)
-  {    
-    var numRows = contDataPoints.length - ctrTable.getNumberOfRows();
-    ctrTable.addRows(numRows);
-  } else {
-    for(var i=(ctrTable.getNumberOfRows()-1); i > contDataPoints.length; i--)
-    {
-      ctrTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < ctrTable.getNumberOfRows(); i++)
-  {
-    ctrTable.setCell(i, 0, new Date(parseInt(contDataPoints[i].timestamp)));
-    ctrTable.setCell(i, 1, (parseInt(contDataPoints[i].clicks)/parseInt(contDataPoints[i].impressions))*100);
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Ctr Chart';
-  ctrChart.draw(ctrView, chartOptions); 
-} 
-
-/**
- * Draw line chart for time vs margin.
- */
-function DrawMarginChart()
-{
-  // create/delete rows 
-  if (marginTable.getNumberOfRows() < contDataPoints.length)
-  {    
-    var numRows = contDataPoints.length - marginTable.getNumberOfRows();
-    marginTable.addRows(numRows);
-  } else {
-    for(var i=(marginTable.getNumberOfRows()-1); i > contDataPoints.length; i--)
-    {
-      marginTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/cost data points. 
-  for(var i=0; i < marginTable.getNumberOfRows(); i++)
-  {
-    marginTable.setCell(i, 0, new Date(parseInt(contDataPoints[i].timestamp)));
-    marginTable.setCell(i, 1, (parseFloat(contDataPoints[i].cost)-parseFloat(contDataPoints[i].revenue))/parseFloat(contDataPoints[i].revenue));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'Margin Chart';
-  marginChart.draw(marginView, chartOptions); 
-}
-
-/**
- * Sort json array  
- */
-function sortByKey(array, key) {
-    return array.sort(function(a, b) {
-        var x = a[key]; var y = b[key];
-        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-    });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/adsdimension/index.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/index.php b/contrib/src/main/html/adsdimension/index.php
deleted file mode 100644
index b53d93f..0000000
--- a/contrib/src/main/html/adsdimension/index.php
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * 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.
- */
-<!--
- --  Copyright (c) 2012-2013 DataTorrent, Inc.
- --  All Rights Reserved.
- -->
-    
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Ads Demo </title>
-
-<link rel="stylesheet" type="text/css" href="malhar.css">
-
-<!-- Google charts include -->
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-google.load('visualization', '1', {'packages':['corechart']});
-</script>
-
-<!-- Malhar charting utils -->
-<script type="text/javascript" src="global.js"></script>
-
-<!-- window onload -->
-<script type="text/javascript">
-
-function DrawAggrCharts()
-{
-  // get refresh url 
-  lookback = aggrLookBack; 
-  var url = DataUrl();  
-  //document.getElementById('chart_div').innerHTML = url;
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        aggrData = connect.response;
-        var pts = JSON.parse(aggrData);
-        aggrDataPoints  = new Array();
-        for(var i=0; i <  pts.length; i++) aggrDataPoints.push(pts[i]);
-        DrawCostChart();
-        DrawRevenueChart();
-        DrawClicksChart();
-        DrawImpressionsChart();
-        delete aggrData;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  aggrLookBack += 30;
-}
-
-function DrawContCharts()  
-{    
-  // get refresh url 
-  lookback = contLookBack; 
-  var url = DataUrl();    
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        contData = connect.response;   
-        var newPts = JSON.parse(contData);  
-        contDataPoints  = new Array();
-        for(var i=0; i <  newPts.length; i++) contDataPoints.push(newPts[i]);
-        DrawCtrChart() ;
-        DrawMarginChart();
-        delete contData;
-        delete newPts;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  contLookBack += contRefresh;
-}
-
-window.onload = function() {
-
-  // Initialize global 
-  InitializeGlobal();   
-
-  // Inituialize form fields  
-  if (params['publisher']) document.getElementById('publisher').value = params['publisher'];
-  if (params['advertiser']) document.getElementById('advertiser').value = params['advertiser'];
-  if (params['adunit']) document.getElementById('adunit').value = params['adunit'];
-  if (params['refresh'])
-  {
-    document.getElementById('refresh').value = params['refresh'];   
-  } else {
-    document.getElementById('refresh').value = 5;
-  }    
-  if (params['lookback'])
-  {
-    document.getElementById('lookback').value = params['lookback'];   
-  } else {
-    document.getElementById('lookback').value = 6;
-  }
-       
-
-  // draw charts 
-  DrawAggrCharts();
-  DrawContCharts();
-  setInterval(DrawAggrCharts, 30000);
-  setInterval(DrawContCharts, contRefresh * 1000);
-};
-
-</script>
-
-</head>
-<body>
-
-    <div id="header">
-        <ul class="dashboard-modes">
-            <li>
-                <a href="#" class="active">Ads Dimensions Demo</a>
-            </li>
-        </ul>
-
-        <div id="logo"><img src="main_banner.png"/></div>
-    </div>
-	
-	<div id="main">
-    <div id="pagecontent">
-        <div class="dashboardMgr">
-            <div class="inner" style="">
-                <h2 class="title">View Real Time Data Charts</h2> 
-                <form method="GET" action="index.php">
-                    
-                    <label for="publisher">Publisher ID:</label>
-                    <select name="publisher" id="publisher" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 0; $i < 50; $i++) {
-                  				print "<option value=\"$i\">Publisher $i</option>\n";
-                			}
-                		?>
-             		</select>
-             		
-            		<label for="">Advertiser ID:</label>
-            		<select name="advertiser" id="advertiser" style="width:200px;">
-              		    <option value="">ALL</option>
-                		<?php
-                			for ($i = 0; $i < 100; $i++) {
-                  				print "<option value=\"$i\">Advertiser $i</option>\n";
-                			}
-                		?>
-            		</select>
-        		
-        		    <label for="">Ad Unit:</label>
-            		<select name="adunit" id="adunit" style="width:200px;">
-              		    <option value="">ALL</option>
-        		        <?php
-                			for ($i = 0; $i < 5; $i++) {
-                  				print "<option value=\"$i\">Adunit $i</option>\n";
-                			}
-        	            ?>
-            		</select>
-            		
-            		<label for="">Refresh Interval:</label>
-            		<div class="input-append">
-                        <input type="text" name="refresh" id="refresh" class="input-small"/>
-                        <span class="add-on">Secs</span>
-                    </div>
-                    
-
-        		    <label for="">Look Back:</label>
-        		    <div class="input-append">
-                        <input type="text" name="lookback" id="lookback" class="input-small"/>
-                        <span class="add-on">Hours</span>
-                    </div>
-                    
-                    <input type="submit" value="submit" class="btn btn-primary" />
-                    
-                </form>
-            </div>
-            <div class="collapser-container">
-                <div class="collapser">
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                </div>
-            </div>
-        </div>
-        <div class="dashboardMain">
-            
-	<!-- <table><tbody>
-                <tr>
-        	      <td><div id="chart_div"></div></td>	
-        	      <td><div id="chart1_div" ></div></td>	
-                 </tr>
-                 <tr>
-        	     <td><div id="chart2_div" ></div></td>	
-        	     <td><div id="chart3_div" ></div></td>	
-                 </tr>
-                 <tr>
-        	   <td><div id="chart4_div" ></div></td>	
-        	    <td><div id="chart5_div" ></div></td>	
-                 </tr>
-        	 </tr></tbody></table> -->
-	<div class="chart-ctnr" id="chart_div"></div>
-        <div class="chart-ctnr" id="chart1_div" ></div>	
-        <div class="chart-ctnr" id="chart2_div" ></div>	
-        <div class="chart-ctnr" id="chart3_div" ></div>	
-        <div class="chart-ctnr" id="chart4_div" ></div>	
-        <div class="chart-ctnr" id="chart5_div" ></div>
-        </div>		
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/adsdimension/json.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/json.php b/contrib/src/main/html/adsdimension/json.php
deleted file mode 100644
index 8e91629..0000000
--- a/contrib/src/main/html/adsdimension/json.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('localhost');
-$from = $_GET['from'];
-$bucket = $_GET['bucket'];
-$publisher = $_GET['publisher'];
-$advertiser = $_GET['advertiser'];
-$adunit = $_GET['adunit'];
-
-switch ($bucket) {
-case 'D':
-  $format = 'Ymd';
-  $incr = 60 * 60 * 24;
-  break;
-case 'h':
-  $format = 'YmdH';
-  $incr = 60 * 60;
-  break;
-case 'm':
-  $format = 'YmdHi';
-  $incr = 60;
-  break;
-default:
-  break;
-}
-
-$arr = array();
-if ($publisher != '') {
-  $arr[] = "0:".$publisher;
-} 
-if ($advertiser != '') {
-  $arr[] = "1:".$advertiser;
-} 
-if ($adunit != '') {
-  $arr[] = "2:".$adunit;
-} 
-$subpattern = "";
-if (count($arr) != 0) {
-  $subpattern = join("|", $arr);
-}
-
-$result = array();
-
-while ($from < time()) {
-  $date = gmdate($format, $from);
-  if ($subpattern != '') {
-    $key = $bucket . '|' . $date . '|' . $subpattern;
-  } else {
-    $key = $bucket . '|' . $date ;
-  }
-  $hash = $redis->hGetAll($key);
-  if ($hash) {
-    $cost = $hash['1'];
-    $revenue = $hash['2'];
-    $impressions = $hash['3'];
-    $clicks = $hash['4'];
-    $result[] = array('timestamp'=> $from * 1000, 'cost'=>$cost, 'revenue'=>$revenue, 'clicks'=>$clicks, 'impressions'=>$impressions);
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/adsdimension/main_banner.png
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/main_banner.png b/contrib/src/main/html/adsdimension/main_banner.png
deleted file mode 100644
index f3f4810..0000000
Binary files a/contrib/src/main/html/adsdimension/main_banner.png and /dev/null differ


[21/22] incubator-apex-malhar git commit: Using DataTorrent rss feed for test, #comment MLHR-1899

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/90d5774f/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed.rss
----------------------------------------------------------------------
diff --git a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed.rss b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed.rss
new file mode 100644
index 0000000..1397ab3
--- /dev/null
+++ b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed.rss
@@ -0,0 +1,894 @@
+<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:atom="http://www.w3.org/2005/Atom"
+	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
+	>
+
+<channel>
+	<title>DataTorrent</title>
+	<atom:link href="https://www.datatorrent.com/feed/" rel="self" type="application/rss+xml" />
+	<link>https://www.datatorrent.com</link>
+	<description></description>
+	<lastBuildDate>Tue, 03 Nov 2015 08:00:45 +0000</lastBuildDate>
+	<language>en-US</language>
+	<sy:updatePeriod>hourly</sy:updatePeriod>
+	<sy:updateFrequency>1</sy:updateFrequency>
+	<generator>http://wordpress.org/?v=4.2.5</generator>
+		<item>
+		<title>Dimensions Computation (Aggregate Navigator) Part 1: Intro</title>
+		<link>https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/</link>
+		<comments>https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/#comments</comments>
+		<pubDate>Tue, 03 Nov 2015 08:00:29 +0000</pubDate>
+		<dc:creator><![CDATA[tim farkas]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2399</guid>
+		<description><![CDATA[<p>Introduction In the world of big data, enterprises have a common problem. They have large volumes of data flowing into their systems for which they need to observe historical trends in real-time. Consider the case of a digital advertising publisher that is receiving hundreds of thousands of click events every second. Looking at the history [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/">Dimensions Computation (Aggregate Navigator) Part 1: Intro</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
+<p>In the world of big data, enterprises have a common problem. They have large volumes of data flowing into their systems for which they need to observe historical trends in real-time. Consider the case of a digital advertising publisher that is receiving hundreds of thousands of click events every second. Looking at the history of individual clicks and impressions doesn’t tell the publisher much about what is going on. A technique the publisher might employ is to track the total number of clicks and impressions for every second, minute, hour, and day. Such a technique might help find global trends in their systems, but may not provide enough granularity to take action on localized trends. The technique will need to be powerful enough to spot local trends. For example, the total clicks and impressions for an advertiser, a geographical area, or a combination of the two can provide some actionable insight. This process of receiving individual events, aggregating them over time, and
  drilling down into the data using some parameters like “advertiser” and “location” is called Dimensions Computation.</p>
+<p>Dimensions Computation is a powerful mechanism that allows you to spot trends in your streaming data in real-time. In this post we’ll cover the key concepts behind Dimensions Computation and outline the process of performing Dimensions Computation. We will also show you how to use Data Torrent’s out-of-the-box enterprise operators to easily add Dimensions Computation to your application.</p>
+<h2 id="the-process">The Process</h2>
+<p>Let us continue with our example of an advertising publisher. Let us now see the steps that the publisher might take to ensure that large volumes of raw advertisement data is converted into meaningful historical views of their advertisement events.</p>
+<h3 id="the-data">The Data</h3>
+<p>Typically advertising publishers receive packets of information for each advertising event. The events that a publisher receives might look like this:</p>
+<pre class="prettyprint"><code class=" hljs cs">    <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> AdEvent
+    {
+        <span class="hljs-comment">//The name of the company that is advertising</span>
+      <span class="hljs-keyword">public</span> String advertiser;
+      <span class="hljs-comment">//The geographical location of the person initiating the event</span>
+      <span class="hljs-keyword">public</span> String location;
+      <span class="hljs-comment">//How much the advertiser was charged for the event</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">double</span> cost;
+      <span class="hljs-comment">//How much revenue was generated for the advertiser</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">double</span> revenue;
+      <span class="hljs-comment">//The number of impressions the advertiser received from this event</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> impressions;
+      <span class="hljs-comment">//The number of clicks the advertiser received from this event</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> clicks;
+      <span class="hljs-comment">//The timestamp of the event in milliseconds</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> time;
+    }</code></pre>
+<p>The class <strong>AdEvent</strong> contains two types of data:</p>
+<ul>
+<li><strong>Aggregates</strong>: The data that is combined using aggregators.</li>
+<li><strong>Keys</strong>: The data that is used to select aggregations at a finer granularity.</li>
+</ul>
+<h4 id="aggregates">Aggregates</h4>
+<p>The aggregates in our <strong>AdEvent</strong> object are the pieces of data, which we must combine using aggregators in order to obtain a meaningful historical view. In this case, we can think of combining cost, revenue, impressions, and clicks. So these are our aggregates. We won’t obtain anything useful by aggregating the location and advertiser strings in our <strong>AdEvent</strong>, so those are not considered aggregates. It’s important to note that aggregates are considered separate entities. This means that the cost field of and <strong>AdEvent</strong> cannot be combined with its revenue field; cost values can only be aggregated with other cost values and revenue values can only be aggregated with other revenue values.</p>
+<p>In summary the aggregates in our <strong>AdEvent</strong> are:</p>
+<ul>
+<li><strong>cost</strong></li>
+<li><strong>revenue</strong></li>
+<li><strong>impressions</strong></li>
+<li><strong>clicks</strong></li>
+</ul>
+<h4 id="keys">Keys</h4>
+<p>The keys in our <strong>AdEvent</strong> object are used for selecting aggregations at a finer granularity. For example, it would make sense to look at the number of clicks for a particular advertiser, the number of clicks for a certain location, and the number of clicks for a certain location and advertiser combination. So location and advertiser are keys. Time is also another key since it is useful to look at the number of clicks received in a particular time range (For example, 12:00 pm through 1:00 pm or 12:00 pm through 12:01 pm.</p>
+<p>In summary the keys in our <strong>AdEvent</strong> are:</p>
+<ul>
+<li><strong>advertiser</strong></li>
+<li><strong>location</strong></li>
+<li><strong>time</strong></li>
+</ul>
+<h3 id="computing-the-aggregations">Computing The Aggregations</h3>
+<p>When the publisher receives a new <strong>AdEvent</strong> the event is added to running aggregations in real time. The keys and aggregates in the <strong>AdEvent</strong> are used to compute aggregations. How the aggregations are computed and the number of aggregations computed are determined by three tunable parameters:</p>
+<ul>
+<li><strong>Aggregators</strong></li>
+<li><strong>Dimensions Combinations</strong></li>
+<li><strong>Time Buckets</strong></li>
+</ul>
+<h4 id="aggregators">Aggregators</h4>
+<p>Dimensions Computation supports more than just one type of aggregation, and multiple aggregators can be used to combine incoming data at once. Some of the aggregators available out-of-the-box are:</p>
+<ul>
+<li><strong>Sum</strong></li>
+<li><strong>Count</strong></li>
+<li><strong>Min</strong></li>
+<li><strong>Max</strong></li>
+</ul>
+<p>As an example, suppose the publisher is not using the keys in their <strong>AdEvents</strong> and this publisher wants to perform a sum and a max aggregation.</p>
+<p><strong>1.</strong> An AdEvent arrives. The AdEvent is aggregated to the Sum and Count aggregations.<br />
+<img title="" src="https://docs.google.com/drawings/d/1upf5hv-UDT4BKhm7yTrcuFZYqnI263vMTXioKhr_qTo/pub?w=960&amp;h=720" alt="Adding Aggregate" /><br />
+<strong>2.</strong> Another AdEvent arrives. The AdEvent is aggregated to the Sum and Count aggregations.<br />
+<img title="" src="https://docs.google.com/drawings/d/10gTXjMyxanYo9UFc76IShPxOi5G7U5tvQKtfwqGyIws/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<p>As can be seen from the example above, each <strong>AdEvent</strong> contributes to two aggregations.</p>
+<h4 id="dimension-combinations">Dimension Combinations</h4>
+<p>Each <strong>AdEvent</strong> does not necessarily contribute to only one aggregation for each aggregator. In our advertisement example there are 4 <strong>dimension combinations</strong> over which aggregations can be computed.</p>
+<ul>
+<li><strong>advertiser:</strong> This dimension combination is comprised of just the advertiser value. This means that all the aggregates for <strong>AdEvents</strong> with a particular value for advertiser (for example, Gamestop) are aggregated.</li>
+<li><strong>location:</strong> This dimension combination is comprised of just the location value. This means that all the aggregates for <strong>AdEvents</strong> with a particular value for location (for example, California) are aggregated.</li>
+<li><strong>advertiser, location:</strong> This dimension combination is comprised the advertiser and location values. This means that all the aggregates for <strong>AdEvents</strong> with the same advertiser and location combination (for example, Gamestop, California) are aggregated.</li>
+<li><strong>the empty combination:</strong> This combination is a <em>global aggregation</em> because it doesn’t use any of the keys in the <strong>AdEvent</strong>. This means that all the <strong>AddEvents</strong> are aggregated.</li>
+</ul>
+<p>Therefore if a publisher is using the four dimension combinations enumerated above along with the sum and max aggregators, the number of aggregations being maintained would be:</p>
+<p>NUM_AGGS = 2 x <em>(number of unique advertisers)</em> + 2 * <em>(number of unique locations)</em> + 2 * <em>(number of unique advertiser and location combinations)</em> + 2</p>
+<p>And each individual <strong>AdEvent</strong> will contribute to <em>(number of aggregators)</em> x <em>(number of dimension combinations)</em> aggregations.</p>
+<p>Here is an example of how NUM_AGGS aggregations are computed:</p>
+<p><strong>1.</strong> An <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to aggregations for each aggregator and each dimension combination.<br />
+<img title="" src="https://docs.google.com/drawings/d/1qx8gLu615KneLDspsGkAS0_OlkX-DyvCUA7DAJtYJys/pub?w=960&amp;h=720" alt="Adding Aggregate" /><br />
+<strong>2.</strong> Another <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to aggregations for each aggregator and each dimension combination.<br />
+<img title="" src="https://docs.google.com/drawings/d/1FA2IyxewwzXtJ9A8JfJPrKtx-pfWHtHpVXp8lb8lKmE/pub?w=960&amp;h=720" alt="Adding Aggregate" /><br />
+<strong>3.</strong> Another <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to aggregations for each aggregator and each dimension combination.<br />
+<img title="" src="https://docs.google.com/drawings/d/15sxwfZeYOKBiapoD2o721M4rZs-bZBxhF3MeXelnu6M/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<p>As can be seen from the example above each <strong>AdEvent</strong> contributes to 2 x 4 = 8 aggregations and there are 2 x 2 + 2 x 2 + 2 x 3 + 2 = 16 aggregations in total.</p>
+<h4 id="time-buckets">Time Buckets</h4>
+<p>In addition to computing multiple aggregations for each dimension combination, aggregations can also be performed over time buckets. Time buckets are windows of time (for example, 1:00 pm through 1:01 pm) that are specified by a simple notation: 1m is one minute, 1h is one hour, 1d is one day. When aggregations are performed over time buckets, separate aggregations are maintained for each time bucket. Aggregations for a time bucket are comprised only of events with a time stamp that falls into that time bucket.</p>
+<p>An example of how these time bucketed aggregations are computed is as follows:</p>
+<p>Let’s say our advertisement publisher is interested in computing the Sum and Max of <strong>AdEvents</strong> for the dimension combinations comprised of <strong>advertiser</strong> and <strong>location</strong> over 1 minute and 1 hour time buckets.</p>
+<p><strong>1.</strong> An <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to the aggregations for the appropriate aggregator, dimension combination and time bucket.</p>
+<p><img title="" src="https://docs.google.com/drawings/d/11voOdqkagpGKcWn5HOiWWAn78fXlpGl7aXUa3tG5sQc/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<p><strong>3.</strong> Another <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to the aggregations for the appropriate aggregator, dimension combination and time bucket.</p>
+<p><img title="" src="https://docs.google.com/drawings/d/1ffovsxWZfHnSc_Z30RzGIXgzQeHjCnyZBoanO_xT_e4/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<h4 id="conclusion">Conclusion</h4>
+<p>In summary, the three tunable parameters discussed above (<strong>Aggregators</strong>, <strong>Dimension Combinations</strong>, and <strong>Time Buckets</strong>) determine how aggregations are computed. In the examples provided in the <strong>Aggregators</strong>, <strong>Dimension Combinations</strong>, and <strong>Time Buckets</strong> sections respectively, we have incrementally increased the complexity in which the aggregations are performed. The examples provided in the <strong>Aggregators</strong>, and <strong>Dimension Combinations</strong> sections were for illustration purposes only; the example provided in the <strong>Time Buckets</strong> section provides an accurate view of how aggregations are computed within Data Torrent&#8217;s enterprise operators.</p>
+<p>Download DataTorrent Sandbox <a href="http://web.datatorrent.com/DataTorrent-RTS-Sandbox-Edition-Download.html" target="_blank">here</a></p>
+<p>Download DataTorrent Enterprise Edition <a href="http://web.datatorrent.com/DataTorrent-RTS-Enteprise-Edition-Download.html" target="_blank">here</a></p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/">Dimensions Computation (Aggregate Navigator) Part 1: Intro</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Cisco ACI, Big Data, and DataTorrent</title>
+		<link>https://www.datatorrent.com/blog_cisco_aci/</link>
+		<comments>https://www.datatorrent.com/blog_cisco_aci/#comments</comments>
+		<pubDate>Tue, 27 Oct 2015 22:30:07 +0000</pubDate>
+		<dc:creator><![CDATA[Charu Madan]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2348</guid>
+		<description><![CDATA[<p>By: Harry Petty, Data Center and Cloud Networking, Cisco  (This blog has been developed in association with Farid Jiandani, Product Manager with Cisco’s Insieme Networks Business Unit and Charu Madan, Director Business Development at DataTorrent. It was originally published on Cisco Blogs) If you work for an enterprise that’s looking to hit its digital sweet [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog_cisco_aci/">Cisco ACI, Big Data, and DataTorrent</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p>By: Harry Petty, Data Center and Cloud Networking, Cisco</p>
+<p class="c0 c11"><a name="h.gjdgxs"></a><span class="c1"> (</span><span class="c4 c13">This blog has been developed in association with Farid Jiandani, Product Manager with Cisco’s Insieme Networks Business Unit and Charu Madan, Director Business Development at DataTorrent. It was originally published on <a href="http://blogs.cisco.com/datacenter/aci-big-data-and-datatorrent" target="_blank">Cisco Blogs</a>)</span></p>
+<p class="c0"><span class="c1">If you work for an enterprise that’s looking to hit its digital sweet spot, then you’re scrutinizing your sales, marketing and operations to see where you should make digital investments to innovate and improve productivity. Super-fast data processing at scale is being used to obtain real-time insights for digital business and Internet of Things (IoT) initiatives.</span></p>
+<p class="c0"><span class="c1">According to Gartner Group, one of the cool vendors in this area of providing super- fast big data analysis using in-memory streaming analytics is called DataTorrent, a startup founded by long-time ex-Yahoo! veterans with vast experience managing big data for leading edge applications and infrastructure at massive scale. Their goal is to empower today’s enterprises to experience the full potential and business impact of big data with a platform that processes and analyzes data in real-time.</span></p>
+<p class="c0"><span class="c1 c2">DataTorrent RTS</span></p>
+<p class="c0"><span class="c4 c6">DataTorrent RTS is an open core</span><span class="c2 c4 c6">, enterprise-grade product powered by Apache Apex. </span><span class="c4 c6">DataTorrent RTS provides a single, unified batch and stream processing platform that enables organizations to reduce time to market, development costs and operational expenditures for big data analytics applications. </span></p>
+<p class="c0"><span class="c1 c2">DataTorrent RTS Integration with ACI</span></p>
+<p class="c0"><span class="c4 c6">A member of the Cisco ACI ecosystem, DataTorrent announced on September 29th DataTorrent RTS integration with Cisco </span><span class="c4 c6"><a class="c7" href="https://www.google.com/url?q=http://www.cisco.com/c/en/us/solutions/data-center-virtualization/application-centric-infrastructure/index.html&amp;sa=D&amp;usg=AFQjCNFMZhMYdUmPuuqrUI5IZmrvEhlK5g">Application Centric Infrastructure (ACI)</a></span><span class="c4 c6"> through the Application Policy Infrastructure Controller (APIC) to help create more efficient IT operations, bringing together network operations management and big data application management and development: </span></p>
+<p class="c0"><span class="c4"><a class="c7" href="https://www.google.com/url?q=https://www.datatorrent.com/press-releases/datatorrent-integrates-with-cisco-aci-to-help-secure-big-data-processing-through-a-unified-data-and-network-fabric/&amp;sa=D&amp;usg=AFQjCNG4S_2-OY5ox5nCf_0_Qj7s-x9pyw">DataTorrent Integrates with Cisco ACI to Help Secure Big Data Processing Through a Unified Data and Network Fabric</a></span><span class="c4">. </span><span class="c2 c4">The joint solution enables</span></p>
+<ul class="c8 lst-kix_list_2-0 start">
+<li class="c12 c0"><span class="c4">A unified fabric approach for managing </span><span class="c2 c4">Applications, Data </span><span class="c4">and </span><span class="c2 c4">Network</span></li>
+<li class="c0 c12"><span class="c4">A highly secure and automated Big Data application platform which uses the power of Cisco ACI for automation and security policy management </span></li>
+<li class="c12 c0"><span class="c4">The creation, repository, and enforcement point for Cisco ACI application policies for big data applications</span></li>
+</ul>
+<p class="c0"><span class="c4">With the ACI integration, secure connectivity to diverse data sets becomes a part of a user defined policy which is automated and does not compromise on security and access management. As an example, if one of the DataTorrent Big Data application needs access to say a Kafka source, then all nodes need to be opened up. This leaves the environment vulnerable and prone to attacks. With ACI, the access management policies and contracts help define the connectivity contracts and only the right node and right application gets access. See Figure 1 and 2 for the illustration of this concept. </span></p>
+<p class="c0"><span class="c1 c2">Figure 1:</span></p>
+<p class="c0"><a href="https://www.datatorrent.com/wp-content/uploads/2015/10/image00.jpg"><img class="alignnone size-full wp-image-2349" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image00.jpg" alt="image00" width="432" height="219" /></a></p>
+<p class="c0"><span class="c1 c2">Figure 2</span></p>
+<p class="c0"><a href="https://www.datatorrent.com/wp-content/uploads/2015/10/image011.png"><img class="alignnone size-full wp-image-2350" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image011.png" alt="image01" width="904" height="493" /></a></p>
+<p class="c0"><span class="c1 c2">ACI Support for Big Data Solutions</span></p>
+<p class="c0"><span class="c1">The openness and the flexibility of ACI allow big data customers to run a wide variety of different applications within their fabric alongside Hadoop. Due to the elasticity of ACI, customers are able to run batch processing alongside stream processing and other data base applications in a seamless fashion. In traditional Hadoop environments, the network is segmented based off of individual server nodes (see Figure 1). This makes it difficult to elastically allow access to and from different applications. Ultimately, within the ACI framework, logical demarcation points can be created based on application workloads rather than physical server groups (a set of Hadoop nodes should not be considered as a bunch of individual server nodes, rather a single group.)</span></p>
+<p class="c0"><span class="c1 c2">A Robust and Active Ecosystem</span></p>
+<p class="c0"><span class="c1">Many vendors claim they have a broad ecosystem of vendors, but sometimes that’s pure marketing, without any real integration efforts going on behind the slideware. But Cisco’s Application Centric Infrastructure (ACI) has a very active ecosystem of industry leaders who are putting significant resources into integration efforts, taking advantage of ACI’s open Northbound and Southbound API’s. DataTorrent is just one example of an innovative company that is using ACI integration to add value to their solutions and deliver real benefits to their channel partners and customers.</span></p>
+<p class="c0"><span class="c1">Stay tuned for more success stories to come: we’ll continue to showcase industry leaders that are taking advantage of the open ACI API’s.</span></p>
+<p class="c0"><span class="c1">Additional References</span></p>
+<p class="c0"><span class="c3"><a class="c7" href="https://www.google.com/url?q=https://www.cisco.com/go/aci&amp;sa=D&amp;usg=AFQjCNHPa1zEn6-1fEWQeCgZ-QmP9te5ig">https://www.cisco.com/go/aci</a></span></p>
+<p class="c0"><span class="c3"><a class="c7" href="https://www.google.com/url?q=https://www.cisco.com/go/aciecosystem&amp;sa=D&amp;usg=AFQjCNGmS3P3mOU0DQen5F43--fDi25uWw">https://www.cisco.com/go/aciecosystem</a></span></p>
+<p class="c11 c0"><span class="c3"><a class="c7" href="https://www.google.com/url?q=http://www.datatorrent/com&amp;sa=D&amp;usg=AFQjCNHbzoCVBy0azkWTbjpqdyxPqkCo9g">http://www.datatorrent/</a></span></p>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog_cisco_aci/">Cisco ACI, Big Data, and DataTorrent</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog_cisco_aci/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Write Your First Apache Apex Application in Scala</title>
+		<link>https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/</link>
+		<comments>https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/#comments</comments>
+		<pubDate>Tue, 27 Oct 2015 01:58:25 +0000</pubDate>
+		<dc:creator><![CDATA[Tushar Gosavi]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2280</guid>
+		<description><![CDATA[<p>* Extend your Scala expertise to building Apache Apex applications * Scala is modern, multi-paradigm programing language that integrates features of functional as well as object-oriented languages elegantly. Big Data frameworks are already exploring Scala as a language of choice for implementations. Apache Apex is developed in Java, the Apex APIs are such that writing [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/">Write Your First Apache Apex Application in Scala</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p><em>* Extend your Scala expertise to building Apache Apex applications *</em></p>
+<p>Scala is modern, multi-paradigm programing language that integrates features of functional as well as object-oriented languages elegantly. Big Data frameworks are already exploring Scala as a language of choice for implementations. Apache Apex is developed in Java, the Apex APIs are such that writing applications is a smooth sail. Developers can use any programing language that can run on JVM and access JAVA classes, because Scala has good interoperability with Java, running Apex applications designed in Scala is a fuss-free experience. We will explain how to write an Apache Apex application in Scala.</p>
+<p>Writing an <a href="http://www.datatorrent.com/apex" target="_blank">Apache Apex</a> application in Scala is simple.</p>
+<h2 id="operators-within-the-application">Operators within the application</h2>
+<p>We will develop a word count applications in Scala. This application will look for new files in a directory. With the availability of new files, the word count application will read the files, and compute a count for each word and print result on stdout. The application requires following operators:</p>
+<ul>
+<li><strong>LineReader</strong> &#8211; This operator monitors directories for new files periodically. After a new file is detected, LineReader reads the file line-by-line, and makes lines available on the output port for the next operator.</li>
+<li><strong>Parser</strong> &#8211; This operator receives lines read by LineReader on its input port. Parser breaks the line into words, and makes individual words available on the output port.</li>
+<li><strong>UniqueCounter</strong> &#8211; This operator computes the count of each word received on its input port.</li>
+<li><strong>ConsoleOutputOperator</strong> &#8211; This operator prints unique counts of words on standard output.</li>
+</ul>
+<h2 id="build-the-scala-word-count-application">Build the Scala word count application</h2>
+<p>Now, we will generate a sample application using maven archtype:generate.</p>
+<h3 id="generate-a-sample-application">Generate a sample application.</h3>
+<pre class="prettyprint"><code class="language-bash hljs ">mvn archetype:generate -DarchetypeRepository=https://www.datatorrent.com/maven/content/repositories/releases -DarchetypeGroupId=com.datatorrent -DarchetypeArtifactId=apex-app-archetype -DarchetypeVersion=<span class="hljs-number">3.0</span>.<span class="hljs-number">0</span> -DgroupId=com.datatorrent -Dpackage=com.datatorrent.wordcount -DartifactId=wordcount -Dversion=<span class="hljs-number">1.0</span>-SNAPSHOT</code></pre>
+<p>This creates a directory called <strong>wordcount</strong>, with a sample application and build script. Let us see how to modify this application into the Scala-based word count application that we are looking to develop.</p>
+<h3 id="add-the-scala-build-plugin">Add the Scala build plugin.</h3>
+<p>Apache Apex uses maven for building the framework and operator library. Maven supports a plugin for compiling Scala files. To enable this plugin, add the following snippet to the <code>build -&gt; plugins</code> sections of the <code>pom.xml</code> file that is located in the application directory.</p>
+<pre class="prettyprint"><code class="language-xml hljs ">  <span class="hljs-tag">&lt;<span class="hljs-title">plugin</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">groupId</span>&gt;</span>net.alchim31.maven<span class="hljs-tag">&lt;/<span class="hljs-title">groupId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">artifactId</span>&gt;</span>scala-maven-plugin<span class="hljs-tag">&lt;/<span class="hljs-title">artifactId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">version</span>&gt;</span>3.2.1<span class="hljs-tag">&lt;/<span class="hljs-title">version</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">executions</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-title">execution</span>&gt;</span>
+        <span class="hljs-tag">&lt;<span class="hljs-title">goals</span>&gt;</span>
+          <span class="hljs-tag">&lt;<span class="hljs-title">goal</span>&gt;</span>compile<span class="hljs-tag">&lt;/<span class="hljs-title">goal</span>&gt;</span>
+          <span class="hljs-tag">&lt;<span class="hljs-title">goal</span>&gt;</span>testCompile<span class="hljs-tag">&lt;/<span class="hljs-title">goal</span>&gt;</span>
+        <span class="hljs-tag">&lt;/<span class="hljs-title">goals</span>&gt;</span>
+      <span class="hljs-tag">&lt;/<span class="hljs-title">execution</span>&gt;</span>
+    <span class="hljs-tag">&lt;/<span class="hljs-title">executions</span>&gt;</span>
+  <span class="hljs-tag">&lt;/<span class="hljs-title">plugin</span>&gt;</span></code></pre>
+<p>Also, specify the Scala library as a dependency in the pom.xml file.<br />
+Add the Scala library.</p>
+<pre class="prettyprint"><code class="language-xml hljs "><span class="hljs-tag">&lt;<span class="hljs-title">dependency</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">groupId</span>&gt;</span>org.scala-lang<span class="hljs-tag">&lt;/<span class="hljs-title">groupId</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">artifactId</span>&gt;</span>scala-library<span class="hljs-tag">&lt;/<span class="hljs-title">artifactId</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">version</span>&gt;</span>2.11.2<span class="hljs-tag">&lt;/<span class="hljs-title">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-title">dependency</span>&gt;</span></code></pre>
+<p>We are now set to write a Scala application.</p>
+<h2 id="write-your-scala-word-count-application">Write your Scala word count application</h2>
+<h3 id="linereader">LineReader</h3>
+<p><a href="https://github.com/apache/incubator-apex-malhar" target="_blank">Apache Malhar library</a> contains an <a href="https://github.com/apache/incubator-apex-malhar/blob/1f5676b455f7749d11c7cd200216d0d4ad7fce32/library/src/main/java/com/datatorrent/lib/io/AbstractFTPInputOperator.java" target="_blank">AbstractFileInputOperator</a> operator that monitors and reads files from a directory. This operator has capabilities such as support for scaling, fault tolerance, and exactly once processing. To complete the functionality, override a few methods:<br />
+<em>readEntity</em> : Reads a line from a file.<br />
+<em>emit</em> : Emits data read on the output port.<br />
+We have overridden openFile to obtain an instance of BufferedReader that is required while reading lines from the file. We also override closeFile for closing an instance of BufferedReader.</p>
+<pre class="prettyprint"><code class="language-scala hljs "><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LineReader</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractFileInputOperator</span>[<span class="hljs-title">String</span>] {</span>
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">val</span> out : DefaultOutputPort[String] = <span class="hljs-keyword">new</span> DefaultOutputPort[String]();
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> readEntity(): String = br.readLine()
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> emit(line: String): Unit = out.emit(line)
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> openFile(path: Path): InputStream = {
+    <span class="hljs-keyword">val</span> in = <span class="hljs-keyword">super</span>.openFile(path)
+    br = <span class="hljs-keyword">new</span> BufferedReader(<span class="hljs-keyword">new</span> InputStreamReader(in))
+    <span class="hljs-keyword">return</span> in
+  }
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> closeFile(is: InputStream): Unit = {
+    br.close()
+    <span class="hljs-keyword">super</span>.closeFile(is)
+  }
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">private</span> <span class="hljs-keyword">var</span> br : BufferedReader = <span class="hljs-keyword">null</span>
+}</code></pre>
+<p>Some Apex API classes are not serializable, and must be defined as transient. Scala supports transient annotation for such scenarios. If you see objects that are not a part of the state of the operator, you must annotate them with a @transient. For example, in this code, we have annotated buffer reader and output port as transient.</p>
+<h3 id="parser">Parser</h3>
+<p>Parser splits lines using in-built JAVA split function, and emits individual words to the output port.</p>
+<pre class="prettyprint"><code class="language-scala hljs "><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Parser</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">BaseOperator</span> {</span>
+  <span class="hljs-annotation">@BeanProperty</span>
+  <span class="hljs-keyword">var</span> regex : String = <span class="hljs-string">" "</span>
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">val</span> out = <span class="hljs-keyword">new</span> DefaultOutputPort[String]()
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">val</span> in = <span class="hljs-keyword">new</span> DefaultInputPort[String]() {
+    <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> process(t: String): Unit = {
+      <span class="hljs-keyword">for</span>(w &lt;- t.split(regex)) out.emit(w)
+    }
+  }
+}</code></pre>
+<p>Scala simplifies automatic generation of setters and getters based on the @BinProperty annotation. Properties annotated with @BinProperty can be modified at the time of launching an application by using configuration files. You can also modify such properties while an application is running. You can specify the regular expression used for splitting within the configuration file.</p>
+<h3 id="uniquecount-and-consoeloutputoperator">UniqueCount and ConsoelOutputOperator</h3>
+<p>For this application, let us use UniqueCount and ConsoleOutputOperator as is.</p>
+<h3 id="put-together-the-word-count-application">Put together the word count application</h3>
+<p>Writing the main application class in Scala is similar to doing it in JAVA. You must first get an instance of DAG object by overriding the populateDAG() method. Later, you must add operators to this instance using the addOperator() method. Finally, you must connect the operators with the addStream() method.</p>
+<pre class="prettyprint"><code class="language-scala hljs "><span class="hljs-annotation">@ApplicationAnnotation</span>(name=<span class="hljs-string">"WordCount"</span>)
+<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Application</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StreamingApplication</span> {</span>
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> populateDAG(dag: DAG, configuration: Configuration): Unit = {
+    <span class="hljs-keyword">val</span> input = dag.addOperator(<span class="hljs-string">"input"</span>, <span class="hljs-keyword">new</span> LineReader)
+    <span class="hljs-keyword">val</span> parser = dag.addOperator(<span class="hljs-string">"parser"</span>, <span class="hljs-keyword">new</span> Parser)
+    <span class="hljs-keyword">val</span> counter = dag.addOperator(<span class="hljs-string">"counter"</span>, <span class="hljs-keyword">new</span> UniqueCounter[String])
+    <span class="hljs-keyword">val</span> out = dag.addOperator(<span class="hljs-string">"console"</span>, <span class="hljs-keyword">new</span> ConsoleOutputOperator)
+
+    dag.addStream[String](<span class="hljs-string">"lines"</span>, input.out, parser.in)
+    dag.addStream[String](<span class="hljs-string">"words"</span>, parser.out, counter.data)
+    dag.addStream[java.util.HashMap[String,Integer]](<span class="hljs-string">"counts"</span>, counter.count, out.input)
+  }
+}</code></pre>
+<h2 id="running-application">Running application</h2>
+<p>Before running the word count application, specify the input directory for the input operator. You can use the default configuration file for this. Open the <em>src/main/resources/META-INF/properties.xml</em> file, and add the following lines between the tag. Do not forget to replace “username” with your Hadoop username.</p>
+<pre class="prettyprint"><code class="language-xml hljs "><span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>dt.application.WordCount.operator.input.prop.directory<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>/user/username/data<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span></code></pre>
+<p>Build the application from the application directory using this command:</p>
+<pre class="prettyprint"><code class="language-bash hljs ">mvn clean install -DskipTests</code></pre>
+<p>You should now have an application package in the target directory.</p>
+<p>Now, launch this application package using dtcli.</p>
+<pre class="prettyprint"><code class="language-bash hljs ">$ dtcli
+DT CLI <span class="hljs-number">3.2</span>.<span class="hljs-number">0</span>-SNAPSHOT <span class="hljs-number">28.09</span>.<span class="hljs-number">2015</span> @ <span class="hljs-number">12</span>:<span class="hljs-number">45</span>:<span class="hljs-number">15</span> IST rev: <span class="hljs-number">8</span>e49cfb branch: devel-<span class="hljs-number">3</span>
+dt&gt; launch target/wordcount-<span class="hljs-number">1.0</span>-SNAPSHOT.apa
+{<span class="hljs-string">"appId"</span>: <span class="hljs-string">"application_1443354392775_0010"</span>}
+dt (application_1443354392775_0010) &gt;</code></pre>
+<p>Add some text files to the <em>/user/username/data</em> directory on your HDFS to see how the application works. You can see the words along with their counts in the container log of the console operator.</p>
+<h2 id="summary">Summary</h2>
+<p>Scala classes are JVM classes that can be inherited from JAVA classes, while allowing transparency in JAVA object creation and calling. That is why you can easily extend your Scala capabilities to build Apex applications.<br />
+To get started with creating your first application, see <a href="https://www.datatorrent.com/buildingapps/">https://www.datatorrent.com/buildingapps/</a>.</p>
+<h2 id="see-also">See Also</h2>
+<ul>
+<li>Building Applications with Apache Apex and Malhar <a href="https://www.datatorrent.com/buildingapps/">https://www.datatorrent.com/buildingapps/</a></li>
+<li>Scala tutorial for java programmers <a href="http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html">http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html</a></li>
+<li>Application Developer Guide <a href="https://www.datatorrent.com/docs/guides/ApplicationDeveloperGuide.html">https://www.datatorrent.com/docs/guides/ApplicationDeveloperGuide.html</a></li>
+<li>Operator Developer Guide <a href="https://www.datatorrent.com/docs/guides/OperatorDeveloperGuide.html">https://www.datatorrent.com/docs/guides/OperatorDeveloperGuide.html</a></li>
+<li>Malhar Operator Library <a href="https://www.datatorrent.com/docs/guides/MalharStandardOperatorLibraryTemplatesGuide.html">https://www.datatorrent.com/docs/guides/MalharStandardOperatorLibraryTemplatesGuide.html</a></li>
+</ul>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/">Write Your First Apache Apex Application in Scala</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Apache Apex Performance Benchmarks</title>
+		<link>https://www.datatorrent.com/blog-apex-performance-benchmark/</link>
+		<comments>https://www.datatorrent.com/blog-apex-performance-benchmark/#comments</comments>
+		<pubDate>Tue, 20 Oct 2015 13:23:27 +0000</pubDate>
+		<dc:creator><![CDATA[Vlad Rozov]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2261</guid>
+		<description><![CDATA[<p>Why another benchmark blog? As engineers, we are skeptical of performance benchmarks developed and published by software vendors. Most of the time such benchmarks are biased towards the company’s own product in comparison to other vendors. Any reported advantage may be the result of selecting a specific use case better handled by the product or [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-apex-performance-benchmark/">Apache Apex Performance Benchmarks</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p><b id="apex-performance-benchmarks" class="c2 c16"><span class="c0">Why another benchmark blog?</span></b></p>
+<p class="c2">As engineers, we are skeptical of performance benchmarks developed and published by software vendors. Most of the time such benchmarks are biased towards the company’s own product in comparison to other vendors. Any reported advantage may be the result of selecting a specific use case better handled by the product or using optimized configuration for one’s own product compared to out of the box configuration for other vendors’ products.</p>
+<p class="c2">So, why another blog on the topic? The reason I decided to write this blog is to explain the rationale behind <a href="http://www.datatorrent.com">DataTorrent’s</a> effort to develop and maintain a benchmark performance suite, how the suite is used to certify various releases, and seek community opinion on how the performance benchmark may be improved.</p>
+<p class="c2 c4">Note: the performance numbers given here are only for reference and by no means a comprehensive performance evaluation of <a href="http://apex.apache.org/">Apache APEX</a>; performance numbers can vary depending on different configurations or different use cases.</p>
+<p class="c12 c2 subtitle"><strong>Benchmark application.</strong><img class=" aligncenter" title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image02.png" alt="" /></p>
+<p class="c2">To evaluate the performance of the <a href="http://apex.apache.org/">Apache APEX</a>  platform,  we use Benchmark application that has a simple <a href="https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/">DAG</a> with only two operators. The first operator (<span class="c3">wordGenerato</span>r) emits tuples and the second operator (<span class="c3">counter</span>) counts tuples received. For such trivial operations, operators add minimum overhead to CPU and memory consumption allowing measurement of <a href="http://apex.apache.org/">Apache APEX</a>  platform throughput. As operators don’t change from release to release, this application is suitable for comparing the platform performance across releases.</p>
+<p class="c2">Tuples are byte arrays with configurable length, minimizing complexity of tuples serialization and at the same time allowing examination of  performance of the platform against several different tuple sizes. The emitter (<span class="c3">wordGenerator</span>) operator may be configured to use the same byte array avoiding the operator induced garbage collection. Or it may be configured to allocate new byte array for every new tuple emitted, more closely simulating real application behavior.</p>
+<p class="c2">The consumer (<span class="c3">counter</span>) operator collects the total number of tuples received and the wall-clock time in milliseconds passed between begin and end window. It writes the collected data to the log at the end of every 10th window.</p>
+<p class="c2">The data stream (<span class="c3">Generator2Counter</span>) connects the first operator output port to the second operator input port. The benchmark suite exercises all possible configurations for the stream locality:</p>
+<ul class="c8 lst-kix_2ql03f9wui4c-0 start">
+<li class="c2 c7">thread local (<span class="c3">THREAD_LOCAL</span>) when both operators are deployed into the same thread within a container effectively serializing operators computation;</li>
+<li class="c2 c7">container local (<span class="c3">CONTAINER_LOCAL)</span><span class="c3"> </span>when both operators are deployed into the same container and execute in two different threads;</li>
+<li class="c2 c7">node local (<span class="c3">NODE_LOCAL</span>)<sup><a href="#ftnt_ref1">[1]</a></sup> when operators are deployed into two different containers running on the same yarn node;</li>
+<li class="c2 c7">rack local (RACK_LOCAL)<sup><a href="#ftnt_ref2">[2]</a></sup> when operators are deployed into two different containers running on yarn nodes residing on the same rack</li>
+<li class="c2 c7">no locality when operators are deployed into two different containers running on any hadoop cluster node.</li>
+</ul>
+<p class="c2 c12 subtitle"><span class="c0"><b><a href="http://apex.apache.org/">Apache APEX</a> release performance certification</b></span></p>
+<p class="c2">The benchmark application is a part of <a href="http://apex.apache.org/">Apache APEX</a> release certification. It is executed on <a href="http://www.datatorrent.com">DataTorrent’s</a> development Hadoop cluster by an automated script that launches the application with all supported <span class="c3">Generator2Counter</span> stream localities and 64, 128, 256, 512, 1024, 2048 and a tuple byte array length of 4096. The script collects the number of tuples emitted, the number of tuples processed and the <span class="c3">counter</span> operator latency for the running application and shuts down the application after it runs for 5 minutes, whereupon it moves on to the next configuration. For all configurations, the script runs between 6 and 8 hours depending on the development cluster load.</p>
+<p class="c12 c2 subtitle"><span class="c0"><b>Benchmark results</b></span></p>
+<p class="c2">As each supported stream locality has distinct performance characteristics (with exception of rack local and no locality due to the development cluster being setup on a single rack), I use a separate chart for each stream locality.</p>
+<p class="c2">Overall the results are self explanatory and I hope that anyone who uses, plans to use or plans to contribute to the <a href="http://apex.apache.org/">Apache APEX</a> project finds it useful. A few notes that seems to be worth mentioning:</p>
+<ul class="c8 lst-kix_5u2revq5rd1r-0 start">
+<li class="c2 c7">There is no performance regression in APEX release 3.0 compared to release 2.0</li>
+<li class="c2 c7">Benchmark was executed with default settings for buffer server spooling (turned on by default in release 3.0 and off in release 2.0). As the result, the benchmark application required just 2 GB of memory for the <span class="c3">wordGenerator</span> operator container in release 3.0, while it was necessary to allocate 8 GB to the same in release 2.0</li>
+<li class="c2 c7">When tuple size increases, JVM garbage collection starts to play a major role in performance benchmark compared to locality</li>
+<li class="c2 c7">Thread local outperforms all other stream localities only for trivial operators that we specifically designed for the benchmark.</li>
+<li class="c2 c7">The benchmark was performed on the development cluster while other developers were using it<img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image03.png" alt="" /></li>
+</ul>
+<p class="c2"><img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image01.png" alt="" /></p>
+<p class="c2 c17"><img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image002.png" alt="" /></p>
+<hr class="c10" />
+<div>
+<p class="c2 c13"><a name="ftnt_ref1"></a>[1]<span class="c6"> NODE_LOCAL is currently excluded from the benchmark test due to known limitation. Please see </span><span class="c6 c9"><a class="c5" href="https://malhar.atlassian.net/browse/APEX-123">APEX-123</a></span></p>
+</div>
+<div>
+<p class="c2 c13"><a name="ftnt_ref2"></a>[2]<span class="c6"> RACK_LOCAL is not yet fully implemented by APEX and is currently equivalent to no locality specified</span></p>
+</div>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-apex-performance-benchmark/">Apache Apex Performance Benchmarks</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-apex-performance-benchmark/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Introduction to dtGateway</title>
+		<link>https://www.datatorrent.com/blog-introduction-to-dtgateway/</link>
+		<comments>https://www.datatorrent.com/blog-introduction-to-dtgateway/#comments</comments>
+		<pubDate>Tue, 06 Oct 2015 13:00:48 +0000</pubDate>
+		<dc:creator><![CDATA[David Yan]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2247</guid>
+		<description><![CDATA[<p>A platform, no matter how much it can do, and how technically superb it is, does not delight users without a proper UI or an API. That’s why there are products such as Cloudera Manager and Apache Ambari to improve the usability of the Hadoop platform. At DataTorrent, in addition to excellence in technology, we [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-introduction-to-dtgateway/">Introduction to dtGateway</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p>A platform, no matter how much it can do, and how technically superb it is, does not delight users without a proper UI or an API. That’s why there are products such as Cloudera Manager and Apache Ambari to improve the usability of the Hadoop platform. At DataTorrent, in addition to excellence in technology, we strive for user delight. One of the main components of DataTorrent RTS is dtGateway. dtGateway is the window to your DataTorrent RTS installation. It is a Java-based multithreaded web server that allows you to easily access information and perform various operations on DataTorrent RTS, and it is the server behind dtManage. It can run on any node in your Hadoop cluster or any other node that can access your Hadoop nodes, and is installed as a system service automatically by the RTS installer.</p>
+<p>dtGateway talks to all running Apex App Masters, as well as the Node Managers and the Resource Manager in the Hadoop cluster, in order to gather all the information and to perform all the operations users may need.</p>
+<p><img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/Blog-dtGateway.png" alt="dtGateway diagram" /></p>
+<p>These features are exposed through a REST API. Here are some of things you can do with the REST API:</p>
+<ul>
+<li>Get performance metrics (e.g. CPU, memory usage, tuples per second, latency, etc.) and other details of all Apex application instances</li>
+<li>Get performance metrics and other details of physical and logical operators of each Apex application instance</li>
+<li>Get performance metrics and other details of individual containers used by each Apex application instance</li>
+<li>Retrieve container logs</li>
+<li>Dynamically change operator properties, and add and remove operators from the DAG of a running Apex application</li>
+<li>Record and retrieve tuples on the fly</li>
+<li>Shutdown a running container or an entire Apex application</li>
+<li>Dynamically change logging level of a container</li>
+<li>Create, manage, and view custom system alerts</li>
+<li>Create, manage, and interact with dtDashboard</li>
+<li>Create, manage, and launch Apex App Packages</li>
+<li>Basic health checks of the cluster</li>
+</ul>
+<p>Here is an example of using the curl command to access dtGateway’s REST API to get the details of a physical operator with ID=40 of application instance with ID=application_1442448722264_14891, assuming dtGateway is listening at localhost:9090:</p>
+<pre class="prettyprint"><code class="language-bash hljs ">$ curl http://localhost:<span class="hljs-number">9090</span>/ws/v2/applications/application_1442448722264_14891/physicalPlan/operators/<span class="hljs-number">40</span>
+{
+    <span class="hljs-string">"checkpointStartTime"</span>: <span class="hljs-string">"1442512091772"</span>, 
+    <span class="hljs-string">"checkpointTime"</span>: <span class="hljs-string">"175"</span>, 
+    <span class="hljs-string">"checkpointTimeMA"</span>: <span class="hljs-string">"164"</span>, 
+    <span class="hljs-string">"className"</span>: <span class="hljs-string">"com.datatorrent.contrib.kafka.KafkaSinglePortOutputOperator"</span>, 
+    <span class="hljs-string">"container"</span>: <span class="hljs-string">"container_e08_1442448722264_14891_01_000017"</span>, 
+    <span class="hljs-string">"counters"</span>: null, 
+    <span class="hljs-string">"cpuPercentageMA"</span>: <span class="hljs-string">"0.2039266316727741"</span>, 
+    <span class="hljs-string">"currentWindowId"</span>: <span class="hljs-string">"6195527785184762469"</span>, 
+    <span class="hljs-string">"failureCount"</span>: <span class="hljs-string">"0"</span>, 
+    <span class="hljs-string">"host"</span>: <span class="hljs-string">"node22.morado.com:8041"</span>, 
+    <span class="hljs-string">"id"</span>: <span class="hljs-string">"40"</span>, 
+    <span class="hljs-string">"lastHeartbeat"</span>: <span class="hljs-string">"1442512100742"</span>, 
+    <span class="hljs-string">"latencyMA"</span>: <span class="hljs-string">"5"</span>, 
+    <span class="hljs-string">"logicalName"</span>: <span class="hljs-string">"QueryResult"</span>, 
+    <span class="hljs-string">"metrics"</span>: {}, 
+    <span class="hljs-string">"name"</span>: <span class="hljs-string">"QueryResult"</span>, 
+    <span class="hljs-string">"ports"</span>: [
+        {
+            <span class="hljs-string">"bufferServerBytesPSMA"</span>: <span class="hljs-string">"0"</span>, 
+            <span class="hljs-string">"name"</span>: <span class="hljs-string">"inputPort"</span>, 
+            <span class="hljs-string">"queueSizeMA"</span>: <span class="hljs-string">"1"</span>, 
+            <span class="hljs-string">"recordingId"</span>: null, 
+            <span class="hljs-string">"totalTuples"</span>: <span class="hljs-string">"6976"</span>, 
+            <span class="hljs-string">"tuplesPSMA"</span>: <span class="hljs-string">"0"</span>, 
+            <span class="hljs-string">"type"</span>: <span class="hljs-string">"input"</span>
+        }
+    ], 
+    <span class="hljs-string">"recordingId"</span>: null, 
+    <span class="hljs-string">"recoveryWindowId"</span>: <span class="hljs-string">"6195527785184762451"</span>, 
+    <span class="hljs-string">"status"</span>: <span class="hljs-string">"ACTIVE"</span>, 
+    <span class="hljs-string">"totalTuplesEmitted"</span>: <span class="hljs-string">"0"</span>, 
+    <span class="hljs-string">"totalTuplesProcessed"</span>: <span class="hljs-string">"6976"</span>, 
+    <span class="hljs-string">"tuplesEmittedPSMA"</span>: <span class="hljs-string">"0"</span>, 
+    <span class="hljs-string">"tuplesProcessedPSMA"</span>: <span class="hljs-string">"20"</span>, 
+    <span class="hljs-string">"unifierClass"</span>: null
+}</code></pre>
+<p>For the complete spec of the REST API, please refer to our dtGateway REST API documentation <a href="https://www.datatorrent.com/docs/guides/DTGatewayAPISpecification.html" target="_blank">here</a>.</p>
+<p>With great power comes great responsibility. With all the information dtGateway has and what dtGateway can do, the admin of DataTorrent RTS may want to restrict access to certain information and operations to only certain group of users. This means dtGateway must support authentication and authorization.</p>
+<p>For authentication, dtGateway can easily be integrated with existing LDAP, Kerberos, or PAM framework. You can also choose to have dtGateway manage its own user database.</p>
+<p>For authorization, dtGateway provides built-in role-based access control. The admin can decide which roles can view what information and perform what operations in dtGateway. The user-to-role mapping can be managed by dtGateway, or be integrated with LDAP roles.<br />
+In addition, we provide access control with granularity to the application instance level as well as to the application package level. For example, you can control which users and which roles have read or write access to which application instances and to which application packages.</p>
+<p>For more information, visit our dtGateway security documentation <a href="https://www.datatorrent.com/docs/guides/GatewaySecurity.html" target="_blank">here</a>.</p>
+<p>An important part of user delight is backward compatibility. Imagine after a version upgrade, stuff starts breaking because a “new feature” or a “bug fix” changes an API so that components that expect the old API don’t work any more with the new version. That has to be a frustrating experience for the user!</p>
+<p>When a user upgrades to a newer version of DataTorrent RTS, we guarantee that existing components or applications that work with previous minor versions of DataTorrent RTS still work. And that includes the REST API. Even when we release a major RTS version that has backward incompatible changes to the REST API spec, we will maintain backward compatibility by versioning the resource paths of the REST API (e.g. with a change in the prefix in the path /ws/v2 to /ws/v3) and maintaining the old spec until the end-of-life of the old version is reached.</p>
+<p>We hope dtGateway is a delight to use for DataTorrent RTS users. We welcome any feedback.</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-introduction-to-dtgateway/">Introduction to dtGateway</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-introduction-to-dtgateway/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Tracing DAGs from specification to execution</title>
+		<link>https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/</link>
+		<comments>https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/#comments</comments>
+		<pubDate>Thu, 01 Oct 2015 04:09:00 +0000</pubDate>
+		<dc:creator><![CDATA[Thomas Weise]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+		<category><![CDATA[Apache Apex]]></category>
+		<category><![CDATA[dag]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2151</guid>
+		<description><![CDATA[<p>How Apex orchestrates the DAG lifecycle Apache Apex (incubating) uses the concept of a DAG to represent an application’s processing logic. This blog will introduce the different perspectives within the architecture, starting from specification by the user to execution within the engine. Understanding DAGs DAG, or Directed Acyclic Graph, expresses processing logic as operators (vertices) [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/">Tracing DAGs from specification to execution</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<h2 id="how-apex-orchestrates-the-dag-lifecycle">How Apex orchestrates the DAG lifecycle</h2>
+<p><a href="http://apex.apache.org/">Apache Apex (incubating)</a> uses the concept of a DAG to represent an application’s processing logic. This blog will introduce the different perspectives within the architecture, starting from specification by the user to execution within the engine.</p>
+<h3 id="understanding-dags">Understanding DAGs</h3>
+<p>DAG, or Directed Acyclic Graph, expresses processing logic as operators (vertices) and streams (edges) that together make an Apache® Apex (incubating) application. Just as the name suggests, the resulting graph must be acyclic, while specifying the logic that will be executed in sequence or in parallel. DAGs are used to exhibit dependencies, such as in event-based systems where previously occurred events lead to newer ones. The DAG concept is widely used, for example in revision control systems such as Git. Apex leverages the concept of a DAG to express how data is processed. Operators function as nodes within the graph, which are connected by a stream of events called tuples. </p>
+<p>There are several frameworks in the wider Hadoop ecosystem that employ the DAG concept to model dependencies. Some of those trace back to MapReduce, where the processing logic is a two operator sequence: map and reduce. This is simple but also rigid, as most processing pipelines have a more complex structure. Therefore, when using MapReduce directly, multiple map-reduce stages need to be chained together to achieve the overall goal. Coordination is not trivial, which lead to the rise of higher level frameworks that attempt to shield the user from this complexity, such as Pig, Hive, Cascading, etc. Earlier on, Pig and Hive directly translated into a MapReduce execution layer, later Tez came into the picture as alternative, common layer for optimization and execution. Other platforms such as Storm and Spark also represent the logic as DAG, each with its own flavor of specification and different architecture of execution layer.  </p>
+<h3 id="dag-of-operators-represents-the-business-logic">DAG of operators represents the business logic</h3>
+<p>Apex permits any operation to be applied to a stream of events and there is practically no limitation on the complexity of the ensuing DAG of operators. The full DAG blueprint is visible to the engine, which means that it can be translated into an end-to-end, fault-tolerant, scalable execution layer.</p>
+<p>The operators represent the point where business logic is introduced. Operators receive events via input ports, and emit events via output ports to represent the execution of a user-defined functionality. Operators that don’t receive events on a port are called the input operators. They receive events from external systems, thus acting as roots of the DAG.</p>
+<p>Operators can implement any functionality. It can be code that is very specific to a use case or generic and broadly applicable functionality like the operators that are part of the Apex Malhar operator library, with support for reading from various sources, transformations, filtering, dimensional computation or write to a variety of destinations.</p>
+<h3 id="specifying-a-dag">Specifying a DAG</h3>
+<p>As discussed earlier, a DAG is comprised of connections between output ports and input ports. Operators can have multiple input and output ports, each of a different type. This simplifies the operator programming because the port concept clearly highlights the source and type of the event. This information is visible to the Java compiler, thus enabling immediate feedback to the developer working in the IDE.</p>
+<p>Similar to the DOM in a web browser, which can result from a static HTML source or a piece of JavaScript that created it on the fly, an Apex DAG can be created from different source representations, and dynamically modified after the application is running!</p>
+<p><img src="https://www.datatorrent.com/wp-content/uploads/2015/10/Development-Workflow_02_with_ports.png" alt="Logical Plan" title=""></p>
+<p>We refer to the DAG that was specified by the user as the “logical plan”. This is because upon launch it will be translated into a physical plan, and then mapped to an execution layer (more on this process below).</p>
+<h3 id="a-simple-example">A simple example</h3>
+<p>Let’s consider the example of the WordCount application, which is the de-facto hello world application of Hadoop. Here is how this simple, sequential DAG will look: The input operator reads a file to emit lines. The “lines” act as a stream, which in turn becomes the input for the parser operator. The parser operator performs a parse operation to generate words for the counter operator. The counter operator emits tuples (word, count) to the console. </p>
+<p><img src="https://www.datatorrent.com/wp-content/uploads/2015/10/wordcount-dag1.png" alt="WordCount DAG" title=""></p>
+<p>The source for the logical plan can be in different formats. Using the Apex Java API, the WordCount example could look like this:</p>
+<pre class="prettyprint"><code class="language-java hljs "><span class="hljs-annotation">@ApplicationAnnotation</span>(name=<span class="hljs-string">"MyFirstApplication"</span>)
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Application</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">StreamingApplication</span>
+{</span>
+  <span class="hljs-annotation">@Override</span>
+  <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">populateDAG</span>(DAG dag, Configuration conf)
+  {
+    LineReader lineReader = dag.addOperator(<span class="hljs-string">"input"</span>, <span class="hljs-keyword">new</span> LineReader());
+    Parser parser = dag.addOperator(<span class="hljs-string">"parser"</span>, <span class="hljs-keyword">new</span> Parser());
+    UniqueCounter&lt;String&gt; counter = dag.addOperator(<span class="hljs-string">"counter"</span>, <span class="hljs-keyword">new</span> UniqueCounter&lt;String&gt;());
+    ConsoleOutputOperator cons = dag.addOperator(<span class="hljs-string">"console"</span>, <span class="hljs-keyword">new</span> ConsoleOutputOperator());
+    dag.addStream(<span class="hljs-string">"lines"</span>, lineReader.output, parser.input);
+    dag.addStream(<span class="hljs-string">"words"</span>, parser.output, counter.data);
+    dag.addStream(<span class="hljs-string">"counts"</span>, counter.count, cons.input);
+  }
+}</code></pre>
+<p>The same WordCount application can be specified through JSON format (typically generated by a tool, such as the DataTorrent RTS application builder known as dtAssemble):</p>
+<pre class="prettyprint"><code class="language-json hljs ">{
+  "<span class="hljs-attribute">displayName</span>": <span class="hljs-value"><span class="hljs-string">"WordCountJSON"</span></span>,
+  "<span class="hljs-attribute">operators</span>": <span class="hljs-value">[
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"input"</span></span>,
+      ...
+    },
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"parse"</span></span>,
+      ...
+    },
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"count"</span></span>,
+      "<span class="hljs-attribute">class</span>": <span class="hljs-value"><span class="hljs-string">"com.datatorrent.lib.algo.UniqueCounter"</span></span>,
+      "<span class="hljs-attribute">properties</span>": <span class="hljs-value">{
+        "<span class="hljs-attribute">com.datatorrent.lib.algo.UniqueCounter</span>": <span class="hljs-value">{
+          "<span class="hljs-attribute">cumulative</span>": <span class="hljs-value"><span class="hljs-literal">false</span>
+        </span>}
+      </span>}
+    </span>},
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"console"</span></span>,
+      ...
+    }
+  ]</span>,
+  "<span class="hljs-attribute">streams</span>": <span class="hljs-value">[
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"lines"</span></span>,
+      "<span class="hljs-attribute">sinks</span>": <span class="hljs-value">[
+        {
+          "<span class="hljs-attribute">operatorName</span>": <span class="hljs-value"><span class="hljs-string">"parse"</span></span>,
+          "<span class="hljs-attribute">portName</span>": <span class="hljs-value"><span class="hljs-string">"input"</span>
+        </span>}
+      ]</span>,
+      "<span class="hljs-attribute">source</span>": <span class="hljs-value">{
+        "<span class="hljs-attribute">operatorName</span>": <span class="hljs-value"><span class="hljs-string">"input"</span></span>,
+        "<span class="hljs-attribute">portName</span>": <span class="hljs-value"><span class="hljs-string">"output"</span>
+      </span>}
+    </span>},
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"words"</span></span>,
+      ...
+    },
+    {
+      "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"counts"</span></span>,
+      ...
+    }
+  ]
+</span>}</code></pre>
+<p>As mentioned previously, the DAG can also be modified after an application was launched. In the following example we add another console operator to display the lines emitted by the input operator: </p>
+<pre class="prettyprint"><code class="language-bash hljs ">Connected to application application_1442901180806_0001
+dt (application_1442901180806_0001) &gt; begin-logical-plan-change 
+logical-plan-change (application_1442901180806_0001) &gt; create-operator linesConsole com.datatorrent.lib.io.ConsoleOutputOperator
+logical-plan-change (application_1442901180806_0001) &gt; add-stream-sink lines linesConsole input
+logical-plan-change (application_1442901180806_0001) &gt; submit 
+{}</code></pre>
+<p><img src="https://www.datatorrent.com/wp-content/uploads/2015/10/wordcount-dag2.png" alt="Altered WordCount DAG" title=""></p>
+<h3 id="translation-of-logical-dag-into-physical-plan">Translation of logical DAG into physical plan</h3>
+<p>Users specify the logical DAG. This logical representation is provided to the Apex client that bootstraps an application. When running on a <a href="http://hortonworks.com/blog/apache-hadoop-yarn-concepts-and-applications/" target="_blank">YARN</a> cluster, this client will launch the StrAM (Streaming Application Master), along with the logical plan and exit. StrAM takes over and, as a first task, converts the logical DAG into a physical plan.</p>
+<p>To do so, StrAM assigns the operators within the DAG to containers, which will later correspond to actual YARN containers in the execution layer. You can influence many aspects of this translation using (optional) attributes in the the logical plan. The physical plan layout determines the performance and scalability of the application, which is why the configuration will typically specify more attributes as the application evolves.</p>
+<p>Here are a few examples of attributes:</p>
+<ul>
+<li>The amount of memory that an operator requires</li>
+<li>The operator partitioning</li>
+<li>Affinity between operators (aka stream locality)</li>
+<li>Windows (sliding, tumbling)</li>
+<li>Checkpointing</li>
+<li>JVM options for a container process</li>
+<li>Timeout and interval settings for monitoring</li>
+<li>Queue sizes</li>
+</ul>
+<p><img src="https://www.datatorrent.com/wp-content/uploads/2015/10/Physical-Plan.png" alt="Physical Plan" title=""></p>
+<h3 id="the-physical-plan-works-as-the-blueprint-for-the-execution-layer">The physical plan works as the blueprint for the execution layer</h3>
+<p>The physical plan lays the foundation for the execution layer, but because both are distinct, the same physical plan can be mapped to different execution layers. </p>
+<p>Apex was designed to run on YARN natively and take full advantage of its features. When executing on YARN, resource scheduling and allocation are the responsibility of the underlying infrastructure. </p>
+<p>There is only one other execution layer implementation for development purposes: Local mode will host an entire application within a single JVM. This allows to do all work including functional testing and efficient debugging within an IDE, before packaging the application and taking it to the YARN cluster.</p>
+<h3 id="executing-the-physical-plan-on-yarn">Executing the physical plan on YARN</h3>
+<p>When running on YARN, each container in the physical plan is mapped to a separate process (called a container). The containers are requested by StrAM based on the resource specification prescribed by the physical plan. Once the resource manager allocates a container, StrAM will launch the processes on the respective node manager. We call these processes Streaming Containers, reflecting their facilitation for the data flow. The container, once launched, initiates the heartbeat protocol for passing on status information about the execution to StrAM. </p>
+<p><img src="https://www.datatorrent.com/wp-content/uploads/2015/10/execution-2.jpg" alt="Execution Layer" title=""></p>
+<p>Each container provisions a buffer server – the component that enables the pub sub based inter-process data flow. Once all containers are up and StrAM knows the buffer server endpoints, deployment of operators commences. The deploy instructions (and other control commands) are passed as part of the heartbeat response from StrAM to the streaming containers. There is no further scheduling or provisioning related activity unless a process fails or the operator is undeployed due to dynamic changes in the physical plan. </p>
+<h3 id="deployment-of-operators">Deployment of operators</h3>
+<p>The container, upon receiving the operator deployment request from StrAM, will bring to life the operator from its frozen state (the initial checkpoint). It will create a separate thread for each operator, in which all user code will run (except of course in the case where operators share a thread because the user defined a stream as <code>THREAD_LOCAL</code>). User code comprises all the callbacks defined in the <code>Operator</code> interface. The nice thing about this is that the user code is not concerned with thread synchronization, thus making it easier to develop and typically more efficient to run, as the heavy lifting is left to the engine and overhead avoided. </p>
+<p>The very first thing after operator instantiation is the (one time) call to its <code>setup</code> method which gives the operator the opportunity to initialize state that is required for its processing prior to connecting the streams. There is also an optional interface <code>ActivationListener</code> and a method activate which will be called after the operator is wired and just before window processing starts.</p>
+<p>Now the operator is ready to process the data, framed in streaming windows. The engine will call <code>beginWindow</code>, then <code>process</code> on the respective input port(s) for every data tuple and <code>endWindow</code>. This will repeat until either something catastrophic happens or StrAM requests an operator undeploy due to dynamic plan changes. It is clear at this point that this lifecycle minimizes the scheduling and expense to bootstrap processing. It is a one time cost.</p>
+<p>There are a few other things that happen between invocations of the user code, demarcated by windows. For example, checkpoints are periodically taken (every 30s by default, tunable by the user). There are also optional callbacks defined by <code>CheckpointListener</code> that can be used to implement synchronization with external systems (think database transactions or copy of finalized files, for example).</p>
+<h3 id="monitoring-the-execution">Monitoring the execution</h3>
+<p>Once the containers are fully provisioned, StrAM records the periodic heartbeat updates, and watches operator processing as data flows through the pipeline. StrAM does not contribute to the data flow itself, processing is decentralized and asynchronous. StrAM collects the stats from the heartbeats and uses them to provide the central view of the execution. For example, it calculates latency based on the window timestamps that are reported, which is vital in identifying processing bottlenecks. It also uses the window information to monitor the progress of operators and identify operators that are stuck (and when necessary restarts them, with an interval controllable by user). StrAM also hosts a REST API that clients such as the CLI can use to collect data. Here is an example for the information that can be obtained through this API:</p>
+<pre class="prettyprint"><code class="language-json hljs ">  {
+    "<span class="hljs-attribute">id</span>": <span class="hljs-value"><span class="hljs-string">"3"</span></span>,
+    "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"counter"</span></span>,
+    "<span class="hljs-attribute">className</span>": <span class="hljs-value"><span class="hljs-string">"com.datatorrent.lib.algo.UniqueCounter"</span></span>,
+    "<span class="hljs-attribute">container</span>": <span class="hljs-value"><span class="hljs-string">"container_1443668714920_0001_01_000003"</span></span>,
+    "<span class="hljs-attribute">host</span>": <span class="hljs-value"><span class="hljs-string">"localhost:8052"</span></span>,
+    "<span class="hljs-attribute">totalTuplesProcessed</span>": <span class="hljs-value"><span class="hljs-string">"198"</span></span>,
+    "<span class="hljs-attribute">totalTuplesEmitted</span>": <span class="hljs-value"><span class="hljs-string">"1"</span></span>,
+    "<span class="hljs-attribute">tuplesProcessedPSMA</span>": <span class="hljs-value"><span class="hljs-string">"0"</span></span>,
+    "<span class="hljs-attribute">tuplesEmittedPSMA</span>": <span class="hljs-value"><span class="hljs-string">"0"</span></span>,
+    "<span class="hljs-attribute">cpuPercentageMA</span>": <span class="hljs-value"><span class="hljs-string">"1.5208279931258353"</span></span>,
+    "<span class="hljs-attribute">latencyMA</span>": <span class="hljs-value"><span class="hljs-string">"10"</span></span>,
+    "<span class="hljs-attribute">status</span>": <span class="hljs-value"><span class="hljs-string">"ACTIVE"</span></span>,
+    "<span class="hljs-attribute">lastHeartbeat</span>": <span class="hljs-value"><span class="hljs-string">"1443670671506"</span></span>,
+    "<span class="hljs-attribute">failureCount</span>": <span class="hljs-value"><span class="hljs-string">"0"</span></span>,
+    "<span class="hljs-attribute">recoveryWindowId</span>": <span class="hljs-value"><span class="hljs-string">"6200516265145009027"</span></span>,
+    "<span class="hljs-attribute">currentWindowId</span>": <span class="hljs-value"><span class="hljs-string">"6200516265145009085"</span></span>,
+    "<span class="hljs-attribute">ports</span>": <span class="hljs-value">[
+      {
+        "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"data"</span></span>,
+        "<span class="hljs-attribute">type</span>": <span class="hljs-value"><span class="hljs-string">"input"</span></span>,
+        "<span class="hljs-attribute">totalTuples</span>": <span class="hljs-value"><span class="hljs-string">"198"</span></span>,
+        "<span class="hljs-attribute">tuplesPSMA</span>": <span class="hljs-value"><span class="hljs-string">"0"</span></span>,
+        "<span class="hljs-attribute">bufferServerBytesPSMA</span>": <span class="hljs-value"><span class="hljs-string">"16"</span></span>,
+        "<span class="hljs-attribute">queueSizeMA</span>": <span class="hljs-value"><span class="hljs-string">"1"</span></span>,
+        "<span class="hljs-attribute">recordingId</span>": <span class="hljs-value"><span class="hljs-literal">null</span>
+      </span>},
+      {
+        "<span class="hljs-attribute">name</span>": <span class="hljs-value"><span class="hljs-string">"count"</span></span>,
+        "<span class="hljs-attribute">type</span>": <span class="hljs-value"><span class="hljs-string">"output"</span></span>,
+        "<span class="hljs-attribute">totalTuples</span>": <span class="hljs-value"><span class="hljs-string">"1"</span></span>,
+        "<span class="hljs-attribute">tuplesPSMA</span>": <span class="hljs-value"><span class="hljs-string">"0"</span></span>,
+        "<span class="hljs-attribute">bufferServerBytesPSMA</span>": <span class="hljs-value"><span class="hljs-string">"12"</span></span>,
+        "<span class="hljs-attribute">queueSizeMA</span>": <span class="hljs-value"><span class="hljs-string">"0"</span></span>,
+        "<span class="hljs-attribute">recordingId</span>": <span class="hljs-value"><span class="hljs-literal">null</span>
+      </span>}
+    ]</span>,
+    "<span class="hljs-attribute">unifierClass</span>": <span class="hljs-value"><span class="hljs-literal">null</span></span>,
+    "<span class="hljs-attribute">logicalName</span>": <span class="hljs-value"><span class="hljs-string">"counter"</span></span>,
+    "<span class="hljs-attribute">recordingId</span>": <span class="hljs-value"><span class="hljs-literal">null</span></span>,
+    "<span class="hljs-attribute">counters</span>": <span class="hljs-value"><span class="hljs-literal">null</span></span>,
+    "<span class="hljs-attribute">metrics</span>": <span class="hljs-value">{}</span>,
+    "<span class="hljs-attribute">checkpointStartTime</span>": <span class="hljs-value"><span class="hljs-string">"1443670642472"</span></span>,
+    "<span class="hljs-attribute">checkpointTime</span>": <span class="hljs-value"><span class="hljs-string">"42"</span></span>,
+    "<span class="hljs-attribute">checkpointTimeMA</span>": <span class="hljs-value"><span class="hljs-string">"129"</span>
+  </span>}</code></pre>
+<p>This blog covered the lifecycle of a DAG. Future posts will cover the inside view of the Apex engine, including checkpointing, processing semantics, partitioning and more. Watch this space! </p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/">Tracing DAGs from specification to execution</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Meet &amp; Name the Apache Apex Logo</title>
+		<link>https://www.datatorrent.com/name-the-apache-apex-logo/</link>
+		<comments>https://www.datatorrent.com/name-the-apache-apex-logo/#comments</comments>
+		<pubDate>Fri, 25 Sep 2015 15:02:32 +0000</pubDate>
+		<dc:creator><![CDATA[John Fanelli]]></dc:creator>
+				<category><![CDATA[Big Data in Everyday Life]]></category>
+		<category><![CDATA[How-to]]></category>
+		<category><![CDATA[Apache Apex]]></category>
+		<category><![CDATA[Big Data]]></category>
+		<category><![CDATA[Fast Batch]]></category>
+		<category><![CDATA[Logo]]></category>
+		<category><![CDATA[Streaming]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2113</guid>
+		<description><![CDATA[<p>Apache Apex, the open source, enterprise-grade unified stream and fast batch processing engine, is gathering momentum staggeringly fast. The timeline has been aggressive: Project Apex was announced on June 5, code was dropped on GitHub July 30 and an Apache Incubation proposal was posted on August 12 and accepted on August 17. Apache Apex has [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/name-the-apache-apex-logo/">Meet &#038; Name the Apache Apex Logo</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p>Apache Apex, the open source, enterprise-grade unified stream and fast batch processing engine, is gathering momentum staggeringly fast.</p>
+<p>The timeline has been aggressive: Project Apex <a href="https://www.datatorrent.com/press-releases/datatorrent-open-sources-datatorrent-rts-industrys-only-enterprise-grade-unified-stream-and-batch-processing-platform/">was announced</a> on June 5, code was dropped on <a href="https://github.com/apache/incubator-apex-core">GitHub</a> July 30 and an <a href="https://wiki.apache.org/incubator/ApexProposal">Apache Incubation proposal</a> was posted on August 12 and <a href="https://www.datatorrent.com/apex-accepted-as-apache-incubator-project/">accepted</a> on August 17.</p>
+<p>Apache Apex has hit some great milestones already. We are just past the one month anniversary and Apache Apex has already <a href="http://www.infoworld.com/article/2982429/open-source-tools/bossie-awards-2015-the-best-open-source-big-data-tools.html#slide5">been named one of the best open source big data tools</a> of 2015 by InfoWorld, hosted its <a href="http://www.meetup.com/Apex-Bay-Area-Chapter/">first meetup</a> and <a href="https://twitter.com/ApacheApex">@ApacheApex</a> is quickly gaining Twitter followers.</p>
+<p><strong>What’s in a logo?<br />
+</strong>Today, we are pleased to introduce the Apache Apex logo. Meet, uhm, actually, he or she doesn&#8217;t have a name yet, and we need your help here! Well, let me describe what (he or she) represents first.</p>
+<p>Apache Apex has a lofty goal to be at the top of its game or at the “Apex” of stream and batch processing pipeline engines. As such, you will see a mountain peak that reflects our aspiration to always be the best, and at the peak of our industry.</p>
+<p>As a YARN native application, Apache Apex not only runs on, but is also optimized for Hadoop deployments. In a nod to that design center, the logo acknowledges the Hadoop foundation we have built on with feet similar to Hadoop’s logo.</p>
+<p>Finally, open <a href="http://www.mysql.com/common/logos/logo-mysql

<TRUNCATED>


[19/22] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by th...@apache.org.
MLHR-1899 Workaround problematic test file content.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/5325bf86
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/5325bf86
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/5325bf86

Branch: refs/heads/devel-3
Commit: 5325bf867c0c603e9314bb6860f8bd706ef447f0
Parents: aee1b21
Author: MalharJenkins <je...@datatorrent.com>
Authored: Tue Nov 10 00:16:55 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:17 2015 -0800

----------------------------------------------------------------------
 .../contrib/romesyndication/cnn_topstories.rss  | 242 -------------------
 .../romesyndication/cnn_topstories_updated.rss  | 242 -------------------
 .../datatorrent/demos/wordcount/samplefile.txt  |  93 +------
 .../test/resources/SocketInputOperatorTest.txt  |   9 +-
 4 files changed, 2 insertions(+), 584 deletions(-)
----------------------------------------------------------------------



[18/22] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/5325bf86/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss
----------------------------------------------------------------------
diff --git a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss
deleted file mode 100644
index 88638d9..0000000
--- a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/cnn_topstories.rss
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.cnn.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
-<channel>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-<language>en-US</language>
-<copyright>Copyright 2013 Cable News Network LP, LLLP.</copyright>
-<pubDate>Wed, 13 Mar 2013 13:06:55 EDT</pubDate>
-<ttl>10</ttl>
-<image>
-<title>CNN.com - Top Stories</title>
-<link>http://www.cnn.com/index.html?eref=rss_topstories</link>
-<url>http://i.cdn.turner.com/cnn/.e/img/1.0/logo/cnn.logo.rss.gif</url>
-<width>144</width>
-<height>33</height>
-<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
-</image>
-<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://rss.cnn.com/rss/cnn_topstories" /><feedburner:info uri="rss/cnn_topstories" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://rss.cnn.com/rss/cnn_topstories?format=skin</thespringbox:skin><item><title>Our favorite surprise homecomings</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CwGHwn3c8-o/</link><description>U.S. Army Specialist Daniel Riendeau surprised his daugher at school after being away in Afghanistan for almost a year.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CwGHwn3c8-o:dG6sDqiiEjA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CwGHwn3c8-o" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:37:07 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi</feedburner:origLink></item>
-<item><title>Guy pushes his girlfriend off a cliff</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/B34SivME0XM/</link><description>Watch a guy push his girlfriend off a cliff. Are they still together? CNN's Jeanne Moos has the cliffhanger ending.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=B34SivME0XM:ZP1LA_cNGk0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/B34SivME0XM" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 10:56:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/08/tsr-moos-girlfriend-pushed-off-cliff.cnn</feedburner:origLink></item>
-<item><title>Cardinals set for another round of papal voting</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/europe/vatican-pope-selection/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/amKpV7fqwQk/index.html</link><description>Expectation is building after the cardinals entered the Sistine Chapel for a second time today to cast their votes for the next pope.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=amKpV7fqwQk:XH5y7KMsY60:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=amKpV7fqwQk:XH5y7KMsY60:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=amKpV7fqwQk:XH5y7KMsY60:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/amKpV7fqwQk" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:49:08 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/europe/vatican-pope-selection/index.html</feedburner:origLink></item>
-<item><title>It once took 3 years to pick a pope</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/l-lN9JNz55Q/</link><description>Anderson Cooper lists some of the lesser-known facts surrounding the papal election.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:dnYqe2BOmKs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=l-lN9JNz55Q:dnYqe2BOmKs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=l-lN9JNz55Q:dnYqe2BOmKs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/l-lN9JNz55Q" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 06:36:56 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/world/2013/03/13/ac-dnt-cooper-fun-facts-conclave.cnn</feedburner:origLink></item>
-<item><title>Conclave schedule: What their day's like</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/europe/vatican-conclave-schedule/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/RqsgoEPeeZw/index.html</link><description>Cardinals tasked with electing the next pope convene for a second day of the papal conclave on Wednesday. Here is how their day will unfold. (All smoke timings are approximate)&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=RqsgoEPeeZw:z3Is-FVnWNY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=RqsgoEPeeZw:z3Is-FVnWNY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=RqsgoEPeeZw:z3Is-FVnWNY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/RqsgoEPeeZw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:39:04 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/europe/vatican-conclave-schedule/index.html</feedburner:origLink></item>
-<item><title>Time for a pope from Latin America?</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/americas/latin-american-pope/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/qWkTCz4V3PY/index.html</link><description>With its approximately 480 million adherents, Latin America is home to an overwhelming plurality of the world's Catholics. But no one from this region (or hemisphere, for that matter) has been ever been chosen to lead the church as pope.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=qWkTCz4V3PY:pyNU0TBvSCk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=qWkTCz4V3PY:pyNU0TBvSCk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=qWkTCz4V3PY:pyNU0TBvSCk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/qWkTCz4V3PY" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:50:53 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/americas/latin-american-pope/index.html</feedburner:origLink></item>
-<item><title>Boy pulled from Disney pool dies</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/HD-OAU1UtP8/index.html</link><description>Two days after he was pulled from the bottom of a swimming pool in 4 feet of water at a Disney World resort in Florida, a 13-year-old boy has died.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:XJlJoUCt2ko:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=HD-OAU1UtP8:XJlJoUCt2ko:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=HD-OAU1UtP8:XJlJoUCt2ko:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/HD-OAU1UtP8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:08:09 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/us/florida-disney-death/index.html</feedburner:origLink></item>
-<item><title>FDA: Zmax can cause fatal heart rhythms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/xJZv4qP0q-Y/index.html</link><description>A popular antibiotic used to treat bacterial infections can cause abnormal -- and possibly fatal -- heart rhythms in some patients, according to a new warning from the Food and Drug Administration.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=xJZv4qP0q-Y:xclw3SXKpDw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/xJZv4qP0q-Y" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:29:32 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/health/fda-antibiotic-heart-warning/index.html</feedburner:origLink></item>
-<item><title>4 killed in N.Y. shootings</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZDB3l7eM8kw/index.html</link><description>Four people have been killed and at least two others wounded in shootings in Herkimer County, New York, state police trooper Jack Keller said Wednesday.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:okEM5m5FSv4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZDB3l7eM8kw:okEM5m5FSv4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZDB3l7eM8kw:okEM5m5FSv4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZDB3l7eM8kw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:29:27 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/new-york-shooting/index.html</feedburner:origLink></item>
-<item><title>Iran to sue Hollywood over 'Argo'</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/_l_ASk7x-vM/index.html</link><description>First, Iran said it would produce its own cinematic response to "Argo." Now, Tehran plans to sue Hollywood filmmakers who contribute to the production of such "anti-Iran" propaganda films.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=_l_ASk7x-vM:UxWBLvRIZCA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/_l_ASk7x-vM" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:26:48 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/iran-argo-response/index.html</feedburner:origLink></item>
-<item><title>15 teens dead in 3 wrecks</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/isn-AMVmNr8/index.html</link><description>Though traffic fatalities have seen a historic drop in recent decades, young drivers remain at highest risk. Weekend crashes in Ohio and Texas fit even higher risk profiles. We explore solutions to keep teen drivers safe.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=isn-AMVmNr8:oSwhLci5b8o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/isn-AMVmNr8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:17:22 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/travel/teen-drivers/index.html</feedburner:origLink></item>
-<item><title>Saudi Arabia beheads 7 for stealing</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6fuBbJS8Lkc/index.html</link><description>Seven men were executed by beheading Wednesday in Saudi Arabia for stealing, according to SPA, the official Saudi New agency.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6fuBbJS8Lkc:x838-Ws_FFw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6fuBbJS8Lkc" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:00:38 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/meast/saudi-executions-beheading/index.html</feedburner:origLink></item>
-<item><title>Ohio teen rape trial </title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ZXh6dRcOkOs/index.html</link><description>Once, high school football was the thing that brought people together in the eastern Ohio town of Steubenville. That was before two star players of the football team were accused of raping a 16-year-old girl.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=ZXh6dRcOkOs:GyXyk62ziDU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/ZXh6dRcOkOs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:03:20 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/justice/ohio-steubenville-case/index.html</feedburner:origLink></item>
-<item><title>5 things we learned at SXSW 2013</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/3Tj3auTVI9M/index.html</link><description>Hoopla surrounding South by Southwest Interactive, the techie festival that wrapped up here Tuesday, has exploded in recent years.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=3Tj3auTVI9M:Sfdgyj9yIkU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/3Tj3auTVI9M" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:56:16 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/tech/innovation/5-things-sxsw/index.html</feedburner:origLink></item>
-<item><title>GOP wary of Obama charm offensive</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uKBsor5RkZs/index.html</link><description>When President Barack Obama enters the conference room in the Capitol basement Wednesday to sit down with House Republicans, he'll be met by a group that says it's willing to listen but deeply skeptical of the president's so-called "charm offensive."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uKBsor5RkZs:H95TSRJ3BHI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uKBsor5RkZs" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 12:25:26 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/politics/obama-house-gop/index.html</feedburner:origLink></item>
-<item><title>Nearly 6,000 dead pigs in Chinese river</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/cw3KqL4R3P8/index.html</link><description>5,916 dead, bloated pigs and counting.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=cw3KqL4R3P8:OQA-S_oq_l0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/cw3KqL4R3P8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 05:42:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/world/asia/pigs-china-river/index.html</feedburner:origLink></item>
-<item><title>Baby shot while dad changes diaper</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/justice/illinois-baby-shooting/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/W3RpQDp4cQo/index.html</link><description>The father was also shot. Police are looking for the killer, who jumped into a blue van after the shooting and drove away.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=W3RpQDp4cQo:cKXcNfrbzGE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=W3RpQDp4cQo:cKXcNfrbzGE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=W3RpQDp4cQo:cKXcNfrbzGE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/W3RpQDp4cQo" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 20:39:39 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/justice/illinois-baby-shooting/index.html</feedburner:origLink></item>
-<item><title>Opinion: Office face time overrated</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/WEPmatCeEps/index.html</link><description>Shelley Correll and Catherine Albiston say Yahoo got it wrong: research shows that people who have control over when and where they work are more productive. have better morale and are more loyal&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=WEPmatCeEps:b4Ny-A_jphA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/WEPmatCeEps" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 13:02:30 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/albison-correll-women-face-time/index.html</feedburner:origLink></item>
-<item><title>Pro soccer player quits to be priest</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Y5x38vRBxaI/</link><description>A former pro soccer player gave up his promising career for the priesthood. Erin Burnett reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Y5x38vRBxaI:wlfNkPX6ZEA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Y5x38vRBxaI" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:23:35 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-erin-dnt-from-pro-soccer-to-priesthood-chase-hilgenbrinck.cnn</feedburner:origLink></item>
-<item><title>The creepy things Facebook knows</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/6t14Vaays8I/</link><description>Erin Burnett talks about a new study that reveals Facebook's ability to know your intimate and personal information.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=6t14Vaays8I:rqkVXLJ-ICw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/6t14Vaays8I" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:24:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-erin-facebook-likes-reveals-everything-about-you.cnn</feedburner:origLink></item>
-<item><title>Quarter size mosquitoes invade Fla.</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/G2W-pxU5etE/</link><description>Gallinippers can be 20 times the size of typical mosquitoes. They are expected to invade Florida this summer.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=G2W-pxU5etE:I46WXCArNz8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/G2W-pxU5etE" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 08:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/13/pkg-giant-mosquitos-florida.bay-news-9</feedburner:origLink></item>
-<item><title>How you stop a deadly shark bite</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/kNb_Henz38A/</link><description>Researchers are looking in the mouths of sharks for a way to help bite victims. CNN's John Zarrella reports.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=kNb_Henz38A:s67OEOVCZEs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/kNb_Henz38A" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:36:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/tsr-dnt-zarella-shark-bite-study.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian gets bloody facial</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/lCnIZ62je7g/</link><description>HLN's A.J. Hammer asks an expert if Kim Kardashian's "vampire facial" really works and if it's worth the pain.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=lCnIZ62je7g:GxKc7s5sSVc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/lCnIZ62je7g" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 09:27:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/sbt-kim-kardashian-vampire-facial.hln</feedburner:origLink></item>
-<item><title>Epic battle overlooked</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/world/asia/korean-war-chosin-reservoir/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/wR0iNV_0Hpw/index.html</link><description>In 1950, 30,000 U.N. soldiers hacked through 80,000 Chinese and North Korean troops in brutal cold to escape their trapped position.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=wR0iNV_0Hpw:k2IRQf4LZO8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=wR0iNV_0Hpw:k2IRQf4LZO8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=wR0iNV_0Hpw:k2IRQf4LZO8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/wR0iNV_0Hpw" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:56:30 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/world/asia/korean-war-chosin-reservoir/index.html</feedburner:origLink></item>
-<item><title>North Korea ready to 'rain bullets'</title><guid isPermaLink="false">http://www.cnn.com/2013/03/12/world/asia/koreas-tensions/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/u5ZejGQRTTA/index.html</link><description>The 80-year-old North Korean war vet says he's been holding onto a bullet he didn't get to fire when his country declared a truce with its neighbor 60 years ago.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=u5ZejGQRTTA:6IxT5d-6gFI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=u5ZejGQRTTA:6IxT5d-6gFI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=u5ZejGQRTTA:6IxT5d-6gFI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/u5ZejGQRTTA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 11:57:52 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/12/world/asia/koreas-tensions/index.html</feedburner:origLink></item>
-<item><title>New show 'too white'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/30hpqQsjVnM/</link><description>HBO's 'Girls' is the latest TV show depicting life in New York City without one of its most crucial elements: diversity.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=30hpqQsjVnM:QAZRKus08_A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/30hpqQsjVnM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 12:02:24 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/23/exp-point-waxman-girls.cnn</feedburner:origLink></item>
-<item><title>Zimmerman's body language</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/sPynL-fKm2k/</link><description>An expert in body language says George Zimmerman showed signs of anger in court in Florida.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=sPynL-fKm2k:LPEJeh2Ua3Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sPynL-fKm2k" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:28:12 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-erin-zimmerman-body-language.cnn</feedburner:origLink></item>
-<item><title>Anderson battles on 'Jeopardy!'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/TT8Ec4zVGJk/</link><description>CNN's Anderson Cooper reflects on the highs and lows of his past "Jeopardy" appearances and weighs his odds of winning.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=TT8Ec4zVGJk:Je0Nb01racE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/TT8Ec4zVGJk" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 10:34:51 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/21/ac-ridiculist-jeopardy-appearances.cnn</feedburner:origLink></item>
-<item><title>Steinem on GOP and women</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/uBSQZcXo-zc/</link><description>Activist and author Gloria Steinem analyzes the "war on women" and says extremists have taken over the Republican party.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=uBSQZcXo-zc:HPm4xJzXdEQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/uBSQZcXo-zc" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 18:29:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ybl-steinem-.cnn</feedburner:origLink></item>
-<item><title>Facebook fans 'lonely'?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Z8koXr-c0hM/</link><description>A report on Facebook, Bill O'Reilly and the Fox "brand," Current TV"s new hire, a Pulitzer for a PA reporter, GMA rises&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Z8koXr-c0hM:hu-rwcn5UgU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Z8koXr-c0hM" height="1" width="1"/&gt;</description><pubDate>Mon, 23 Apr 2012 14:38:31 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/22/exp-rs-media-monitor.cnn</feedburner:origLink></item>
-<item><title>Working moms of CNN </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/P9wFf4tbbyw/</link><description>CNN goes behind the scenes with the working moms on Suzanne Malveaux's team to see how they juggle it all.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=P9wFf4tbbyw:SbjMSo2IH6w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/P9wFf4tbbyw" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:37 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/cnn-working-moms-share-their-stories.cnn</feedburner:origLink></item>
-<item><title>Levon Helm remembered</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JYYIEYXqn34/</link><description>Anderson Cooper takes a look back at the life of The Band's Levon Helm and his many contributions to music.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JYYIEYXqn34:8Lgb0FOsAmg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JYYIEYXqn34" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 16:43:45 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-levon-helm-obit.cnn</feedburner:origLink></item>
-<item><title>Man makes dating spreadsheet</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/vx0ARutyCFQ/</link><description>Soledad O'Brien discusses the investment banker who created an elaborate spreadsheet to keep track of his dates.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=vx0ARutyCFQ:3qe2x7NrwN0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/vx0ARutyCFQ" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 11:29:57 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/exp-get-real-dating-spreadsheet.cnn</feedburner:origLink></item>
-<item><title>Political dog tale duel</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/f2pQv1EmVbY/</link><description>In the RidicuList, Anderson Cooper examines which candidate's dog tale will have a greater election impact.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=f2pQv1EmVbY:sWQXHXG0FmA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/f2pQv1EmVbY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:44 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/ac-ridiculist-obama-romney-dogs.cnn</feedburner:origLink></item>
-<item><title>Vanessa Williams' perfect man</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/XdISDjJ8ssM/</link><description>Entertainer Vanessa Williams talks to CNN's Piers Morgan about "being properly in love" and relationships.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=XdISDjJ8ssM:vg92Ai16Gc4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/XdISDjJ8ssM" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:38:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2012/04/20/piers-williams-love.cnn</feedburner:origLink></item>
-<item><title>'Only in America': Defending Axl Rose</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/CE0-oIRG7AY/</link><description>Piers Morgan defends Axl Rose for deciding not to attend the Rock'N'Roll Hall of Fame induction of Guns N' Roses.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=CE0-oIRG7AY:iYNae62SbM8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/CE0-oIRG7AY" height="1" width="1"/&gt;</description><pubDate>Fri, 20 Apr 2012 09:41:33 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/20/piers-morgan-only-in-america-in-defense-of-axl-rose.cnn</feedburner:origLink></item>
-<item><title>Rep. won't name 'Communists'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Xwa7iI_z-DI/</link><description>Rep. Allen West (R-FL) responds to criticism after he claimed a number of Democratic reps in Congress are Communists.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Xwa7iI_z-DI:d2IDNIqeKok:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Xwa7iI_z-DI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 14:59:47 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-west-communist-reax.cnn</feedburner:origLink></item>
-<item><title>RidicuList: Quest for 'sexy veggies'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/mxmh2VeX1es/</link><description>CNN's Anderson Cooper riffs on a staple of Courtney Stodden's grocery list, "sexy veggies."&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=mxmh2VeX1es:5nXnJlPtEX4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/mxmh2VeX1es" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 13:35:19 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/offbeat/2012/04/18/ac-ridiculist-sexy-veggies.cnn</feedburner:origLink></item>
-<item><title>Kim Kardashian for mayor?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/hyXOp5VGCeI/</link><description>Soledad O'Brien discusses Kim Kardashian's comments about running for Mayor in Glendale, California.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=hyXOp5VGCeI:zqSiobweMvc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/hyXOp5VGCeI" height="1" width="1"/&gt;</description><pubDate>Thu, 19 Apr 2012 11:29:15 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2012/04/19/exp-point-get-real-kardashian.cnn</feedburner:origLink></item>
-<item><title>New judge in Martin case </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Vl4YhIIOBw4/</link><description>CNN's Erin Burnett speaks to a panel of analysts about the new judge in the Trayvon Martin shooting case.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Vl4YhIIOBw4:T5k_0MYGA9c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Vl4YhIIOBw4" height="1" width="1"/&gt;</description><pubDate>Thu, 27 Sep 2012 00:17:36 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/crime/2012/04/18/erin-new-judge-martin-case.cnn</feedburner:origLink></item>
-<item><title>Valerie Harper: 'We're all terminal'</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DcIKG783Xw0/</link><description>Valerie Harper talks to Piers Morgan about her diagnosis with a rare terminal cancer and how she is living in the moment.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=DcIKG783Xw0:JmCSxquD-GM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/DcIKG783Xw0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:30:08 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/13/exp-pmt-valerie-harper-were-all-terminal.cnn</feedburner:origLink></item>
-<item><title>Secret motive behind Arias sex tape?</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/KMmhmMWuYFY/</link><description>Travis' coworker says she believes Jodi recorded the secret phone sex call to listen to after Travis died&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=KMmhmMWuYFY:8kCpV3BIuQU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/KMmhmMWuYFY" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:55:02 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/bestoftv/2013/03/12/exp-jvm-ariasphone-sex-call.hln</feedburner:origLink></item>
-<item><title>Airport flash mob with surprise ending</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/JCD9NOfjTQk/</link><description>An Oklahoma City man received a surprise proposal from his girlfriend after a two-year mission trip.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=JCD9NOfjTQk:9wVKT-CZ_Nc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/JCD9NOfjTQk" height="1" width="1"/&gt;</description><pubDate>Tue, 12 Mar 2013 19:45:06 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/pkg-airport-flashmob-marriage-proposal.kfor</feedburner:origLink></item>
-<item><title>Opinion: Sandberg slights single moms</title><guid isPermaLink="false">http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/gkgo4pkSPW4/index.html</link><description>Susan Faludi: Sheryl Sandberg's "Lean In" venture could have lifted up single mothers mired in poverty, but gave them short shrift instead.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=gkgo4pkSPW4:xyDuWQBdQ-g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/gkgo4pkSPW4" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:56:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/2013/03/13/opinion/faludi-poor-single-mothers-sandberg/index.html</feedburner:origLink></item>
-<item><title>Seals, sea lion pup try to catch free rides </title><guid isPermaLink="false">http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/Re--Lyq5Bq8/</link><description>A sea lion pup catches a ride on a kayak. CNN's Jeanne Moos reports on the adorable stowaway making waves.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=Re--Lyq5Bq8:gK_dYxcfc2o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/Re--Lyq5Bq8" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 07:12:43 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/living/2013/03/12/tsr-pkg-moos-sea-lion-pup-stowaway.cnn</feedburner:origLink></item>
-<item><title>Billy Joel surprises, plays with student</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/yCpcOyTWsS0/</link><description>Artist Billy Joel surprised everyone during a Vanderbilt University Q&amp;A session when a freshman asked to play with him.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=yCpcOyTWsS0:AU4_6tlORKI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/yCpcOyTWsS0" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:07:59 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/showbiz/2013/03/13/mxp-billy-joel-student-performance.hln</feedburner:origLink></item>
-<item><title>Colbert asked Howard Dean what??!</title><guid isPermaLink="false">http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/QQJ7k8gM5TA/</link><description>Comedian Stephen Colbert tells the story of when he first met CNN's Jake Tapper on the 2004 campaign trail.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.fee
 dburner.com/~ff/rss/cnn_topstories?i=QQJ7k8gM5TA:xNpo6V4NNII:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
-&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/QQJ7k8gM5TA" height="1" width="1"/&gt;</description><pubDate>Wed, 13 Mar 2013 10:09:29 EDT</pubDate><feedburner:origLink>http://www.cnn.com/video/#/video/us/2013/03/12/exp-lead-tapper-colbert-tease.cnn</feedburner:origLink></item>
-<item><title>Why my pet gets antidepressants</title><guid isPermaLink="false">http://www.cnn.com/2013/03/10/opinion/walmsley-pet-drugs/index.html</guid><link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/DDRmE_nE5sA/index.html</link><description>Would you put your pet on antidepressants? CNN's Katie Walmsley says while it's easy to laugh at the thought, it's a huge disservice to animals to write off a medicated approach to their problems.&lt;div class="feedflare"&gt;
-&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=DDRmE_nE5sA:KFu2xtxk3gM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/c

<TRUNCATED>


[10/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/machinedata/global.js
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/global.js b/contrib/src/main/html/machinedata/global.js
deleted file mode 100644
index 753f58f..0000000
--- a/contrib/src/main/html/machinedata/global.js
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * 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.
- */
-/**
- * Declaration and initialization for global variables.
- */
-
-// url parameters   
-var params;
-
-// Data Points 
-var aggrData; 
-var aggrDataPoints;
-var contData;
-var contDataPoints;
-
-// CPU data table 
-var cpuTable;
-var cpuChart; 
-var cpuView;
-
-// ram data table 
-var ramTable;
-var ramChart; 
-var ramView;  
-
-// hdd data table 
-var hddTable;
-var hddChart; 
-var hddView;  
-
-// chart options
-var chartOptions;
-
-// Date formatter  
-var dateFormatter;
-
-// window look back value 
-var lookback;
-var aggrLookBack;
-var contLookBack;
-var contRefresh;
-
-// Get split query string
-function QueryString() {
-  var query_string = {};
-  var query = window.location.search.substring(1);
-  return query;
-}
-function SplitQuery(query)
-{  
-	var params = {};
-	var vars = query.split("&");
-	for (var i=0;i<vars.length;i++)
-	{
-		var pair = vars[i].split("=");
-		if(pair.length == 2) 
-		{
-			params[pair[0]] = pair[1];
-		}
-	}
-	return params;
-}  
-
-// Initialize global variable(s)
-function InitializeGlobal()
-{
-  // Initialize params  
-  params = SplitQuery(QueryString()); 
-       
-  // Initialize data points 
-  aggrDataPoints = new Array();
-  contDataPoints = new Array();
-    
-  // Initialize cpu table 
-  cpuTable = new google.visualization.DataTable(); 
-  cpuTable.addColumn('datetime', 'Time');
-  cpuTable.addColumn('number', 'CPU');
-  chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
-  cpuChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
-  cpuView = new google.visualization.DataView(cpuTable);
-
-  // Initialize ram table 
-  ramTable = new google.visualization.DataTable(); 
-  ramTable.addColumn('datetime', 'Time');
-  ramTable.addColumn('number', 'RAM');;
-  ramChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
-  ramView = new google.visualization.DataView(ramTable);
-
-  // Initialize hdd table 
-  hddTable = new google.visualization.DataTable(); 
-  hddTable.addColumn('datetime', 'Time');
-  hddTable.addColumn('number', 'HDD');;
-  hddChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
-  hddView = new google.visualization.DataView(hddTable);
-    
-  // get lookback value  
-  lookback = (new Date().getTime()/1000) - 3600*6;
-  if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
-  aggrLookBack = lookback;
-     
-  // get continuos lookback 
-  contLookBack = lookback;
-  contRefresh = 5;
-
-  // get param lookback  
-  paramLookBack = 6;
-  if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
-  //if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
-}
-
-
-/**
- * Function to create fetch urls from given parameters
- */
-function DataUrl() 
-{       
-    var url = "json.php?bucket=m";
-    url += "&customer=";
-    if (params['customer'])
-    {	
-      url += params['customer'];
-    }
-    url += "&product=";
-    if (params['product'])
-    {	
-      url += params['product'];
-    }
-    url += "&os=";
-    if (params['os'])
-    {	
-      url += params['os'];
-    }
-    url += "&software1=";
-    if (params['software1'])
-    {
-      url += params['software1'];
-    }
-    url += "&software2=";
-    if (params['software2'])
-    {
-      url += params['software2'];
-    }
-    url += "&software3=";
-    if (params['software3'])
-    {
-      url += params['software3'];
-    }
-     url += "&from=";
-    url += Math.floor(lookback);
-    return url;   
-}
-
-/**
- * Creates data table with time stamp and cpu values.
- * Draw line chart for time vs cpu.
- */
-function DrawCPUChart()
-{
-  // create/delete rows 
-  if (cpuTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - cpuTable.getNumberOfRows();
-    cpuTable.addRows(numRows);
-  } else {
-    for(var i=(cpuTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      cpuTable.removeRow(i);    
-    }
-  }
-    
-  // Populate data table with time/cpu data points. 
-  for(var i=0; i < cpuTable.getNumberOfRows(); i++)
-  {
-    //if(parseFloat(aggrDataPoints[i].cpu) < 500) continue;
-    cpuTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    cpuTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cpu));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'CPU Usage (%)';
-  cpuChart.draw(cpuView, chartOptions); 
-}     
-
-/**
- * Creates data table with time stamp and revenu values.
- * Draw line chart for time vs ram.
- */
-function DrawRAMChart()
-{
-  // create/delete rows 
-  if (ramTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - ramTable.getNumberOfRows();
-    ramTable.addRows(numRows);
-  } else {
-    for(var i=(ramTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      ramTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/ram data points. 
-  for(var i=0; i < ramTable.getNumberOfRows(); i++)
-  {
-    ramTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    ramTable.setCell(i, 1, parseFloat(aggrDataPoints[i].ram));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'RAM Usage (%)';
-  ramChart.draw(ramView, chartOptions); 
-}  
-
-/**
- * Creates data table with time stamp and hdd values.
- * Draw line chart for time vs hdd.
- */
-function DrawHDDChart()
-{
-  // create/delete rows 
-  if (hddTable.getNumberOfRows() < aggrDataPoints.length)
-  {    
-    var numRows = aggrDataPoints.length - hddTable.getNumberOfRows();
-    hddTable.addRows(numRows);
-  } else {
-    for(var i=(hddTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
-    {
-      hddTable.removeRow(i);    
-    }
-  }
-
-  // Populate data table with time/hdd data points. 
-  for(var i=0; i < hddTable.getNumberOfRows(); i++)
-  {
-    hddTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
-    hddTable.setCell(i, 1, parseInt(aggrDataPoints[i].hdd));
-  }
-
-  // Draw line chart.
-  chartOptions.title = 'HDD Usage (%)';
-  hddChart.draw(hddView, chartOptions); 
-}
-
-/**
- * Sort json array  
- */
-function sortByKey(array, key) {
-    return array.sort(function(a, b) {
-        var x = a[key]; var y = b[key];
-        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-    });
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/machinedata/index.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/index.php b/contrib/src/main/html/machinedata/index.php
deleted file mode 100644
index dcc595e..0000000
--- a/contrib/src/main/html/machinedata/index.php
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * 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.
- */
-<!--
- --  Copyright (c) 2012-2013 Malhar, Inc.
- --  All Rights Reserved.
- -->
-    
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Machine Generated Data Demo </title>
-
-<link rel="stylesheet" type="text/css" href="malhar.css">
-
-<!-- Google charts include -->
-<script type="text/javascript" src="https://www.google.com/jsapi"></script>
-<script type="text/javascript">
-google.load('visualization', '1', {'packages':['corechart']});
-</script>
-
-<!-- Malhar charting utils -->
-<script type="text/javascript" src="global.js"></script>
-
-<!-- window onload -->
-<script type="text/javascript">
-
-function DrawAggrCharts()
-{
-  // get refresh url 
-  lookback = aggrLookBack; 
-  var url = DataUrl();        
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-
-console.log(url);
-        aggrData = connect.response;
-        var pts = JSON.parse(aggrData);
-        aggrDataPoints = new Array();
-        for(var i=0; i <  pts.length; i++) aggrDataPoints.push(pts[i]);
-        DrawCPUChart();
-        DrawRAMChart();
-        DrawHDDChart();
-        //DrawImpressionsChart();
-        delete aggrData;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  aggrLookBack += 30;
-}
-
-function DrawContCharts()  
-{    
-  // get refresh url 
-  lookback = contLookBack; 
-  var url = DataUrl();    
-  //document.getElementById('chart_div').innerHTML = url;
-
-  // fetch data, draw charts
-  try
-  {
-    var connect = new XMLHttpRequest();
-    connect.onreadystatechange = function() {
-      if(connect.readyState==4 && connect.status==200) {
-        contData = connect.response;   
-        var newPts = JSON.parse(contData); 
-        contDataPoints = new Array();
-        for(var i=0; i <  newPts.length; i++) contDataPoints.push(newPts[i]);
-        DrawCtrChart() ;
-        DrawMarginChart();
-        delete contData;
-        delete newPts;
-      }
-    }
-    connect.open('GET',  url, true);
-    connect.send(null);
-  } catch(e) {
-  }
-  contLookBack += contRefresh;
-}
-
-window.onload = function() {
-
-  // Initialize global 
-  InitializeGlobal();   
-
-  // Inituialize form fields  
-  if (params['customer']) document.getElementById('customer').value = params['customer'];
-  if (params['product']) document.getElementById('product').value = params['product'];
-  if (params['os']) document.getElementById('os').value = params['os'];
-  if (params['software1']) document.getElementById('software1').value = params['software1'];
-  if (params['software2']) document.getElementById('software2').value = params['software2'];
-  if (params['software3']) document.getElementById('software3').value = params['software3'];
-  if (params['refresh'])
-  {
-    document.getElementById('refresh').value = params['refresh'];   
-  } else {
-    document.getElementById('refresh').value = 5;
-  }    
-  if (params['lookback'])
-  {
-    document.getElementById('lookback').value = params['lookback'];   
-  } else {
-    document.getElementById('lookback').value = 6;
-  }
-       
-  // draw charts 
-  DrawAggrCharts();
-  //DrawContCharts();
-  setInterval(DrawAggrCharts, 30000);
-  //setInterval(DrawContCharts, contRefresh * 1000);
-};
-
-</script>
-
-</head>
-<body>
-
-    <div id="header">
-        <ul class="dashboard-modes">
-            <li>
-                <a href="#" class="active">Machine Generated Data Demo </a>
-            </li>
-        </ul>
-
-        <div id="logo"><img src="main_banner.png"/></div>
-    </div>
-	
-	<div id="main">
-    <div id="pagecontent">
-        <div class="dashboardMgr">
-            <div class="inner" style="">
-                <h2 class="title">View Real Time Data Charts</h2> 
-                <form method="GET" action="index.php">
-                    
-                    <label for="customer">Customer ID:</label>
-                    <select name="customer" id="customer" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 1; $i <= 5; $i++) {
-                  				print "<option value=\"$i\">Customer $i</option>\n";
-                			}
-                		?>
-             		</select>
-             		
-            		<label for="">Product ID:</label>
-            		<select name="product" id="product" style="width:200px;">
-              		    <option value="">ALL</option>
-                		<?php
-                			for ($i = 4; $i <= 6; $i++) {
-                  				print "<option value=\"$i\">Product $i</option>\n";
-                			}
-                		?>
-            		</select>
-        		
-        		    <label for="">Product OS:</label>
-            		<select name="os" id="os" style="width:200px;">
-              		    <option value="">ALL</option>
-        		        <?php
-                			for ($i = 10; $i <= 12; $i++) {
-                  				print "<option value=\"$i\">OS $i</option>\n";
-                			}
-        	            ?>
-            		</select>
-            		
-                    <label for="software1">Software1 Ver:</label>
-                    <select name="software1" id="software1" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 10; $i <= 12; $i++) {
-                  				print "<option value=\"$i\">Software1 Version $i</option>\n";
-                			}
-                		?>
-             		</select>
-
-                    <label for="software2">Software2 Ver:</label>
-                    <select name="software2" id="software2" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 12; $i <= 14; $i++) {
-                  				print "<option value=\"$i\">Software2 Version $i</option>\n";
-                			}
-                		?>
-             		</select>
-
-                    <label for="software3">Software3 Ver:</label>
-                    <select name="software3" id="software3" style="width:200px;">
-                  		<option value="">ALL</option>
-                		<?php
-                   			for ($i = 4; $i <= 6; $i++) {
-                  				print "<option value=\"$i\">Software3 Version $i</option>\n";
-                			}
-                		?>
-             		</select>
-
-            		<label for="">Refresh Interval:</label>
-            		<div class="input-append">
-                        <input type="text" name="refresh" id="refresh" class="input-small"/>
-                        <span class="add-on">Secs</span>
-                    </div>
-                    
-
-        		    <label for="">Look Back:</label>
-        		    <div class="input-append">
-                        <input type="text" name="lookback" id="lookback" class="input-small"/>
-                        <span class="add-on">Hours</span>
-                    </div>
-                    
-                    <input type="submit" value="submit" class="btn btn-primary" />
-                    
-                </form>
-            </div>
-            <div class="collapser-container">
-                <div class="collapser">
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                    <div class="collapse-dot"></div>
-                </div>
-            </div>
-        </div>
-        <div class="dashboardMain">
-            
-	<!-- <table><tbody>
-                <tr>
-        	      <td><div id="chart_div"></div></td>	
-        	      <td><div id="chart1_div" ></div></td>	
-                 </tr>
-                 <tr>
-        	     <td><div id="chart2_div" ></div></td>	
-        	     <td><div id="chart3_div" ></div></td>
-                 </tr>
-                 <tr>
-        	   <td><div id="chart4_div" ></div></td>	
-        	    <td><div id="chart5_div" ></div></td>	
-                 </tr>
-        	 </tr></tbody></table> -->
-    	<div class="chart-ctnr" id="chart_div"></div>
-        <div class="chart-ctnr" id="chart1_div" ></div>	
-        <div class="chart-ctnr" id="chart2_div" ></div>	
-<!--        <div class="chart-ctnr" id="chart3_div" ></div>
-        <div class="chart-ctnr" id="chart4_div" ></div>	
-        <div class="chart-ctnr" id="chart5_div" ></div> -->
-        </div>		
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/machinedata/json.php
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/json.php b/contrib/src/main/html/machinedata/json.php
deleted file mode 100644
index 75a7117..0000000
--- a/contrib/src/main/html/machinedata/json.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/*
- * 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.
- */
-header("Content-type: application/json");
-$redis = new Redis();
-$redis->connect('localhost');
-$redis->select(15);
-$from = $_GET['from'];
-$bucket = $_GET['bucket'];
-$customer = $_GET['customer'];
-$product = $_GET['product'];
-$os = $_GET['os'];
-$software1 = $_GET['software1'];
-$software2 = $_GET['software2'];
-$software3 = $_GET['software3'];
-
-switch ($bucket) {
-case 'D':
-  $format = 'Ymd';
-  $incr = 60 * 60 * 24;
-  break;
-case 'h':
-  $format = 'YmdH';
-  $incr = 60 * 60;
-  break;
-case 'm':
-  $format = 'YmdHi';
-  $incr = 60;
-  break;
-default:
-  break;
-}
-
-$arr = array();
-if ($customer != '') {
-  $arr[] = "0:".$customer;
-} 
-if ($product != '') {
-  $arr[] = "1:".$product;
-} 
-if ($os != '') {
-  $arr[] = "2:".$os;
-} 
-if ($software1 != '') {
-  $arr[] = "3:".$software1;
-} 
-if ($software2 != '') {
-  $arr[] = "4:".$software2;
-} 
-if ($software3 != '') {
-  $arr[] = "5:".$software3;
-} 
-$subpattern = "";
-if (count($arr) != 0) {
-  $subpattern = join("|", $arr);
-}
-
-$result = array();
-
-while ($from < time()) {
-  $date = gmdate($format, $from);
-  if ($subpattern != '') {
-    $key = $bucket . '|' . $date . '|' . $subpattern;
-  } else {
-    $key = $bucket . '|' . $date ;
-  }
-  $hash = $redis->hGetAll($key);
-  if ($hash) {
-    $cpu = $hash['cpu'];
-    $ram = $hash['ram'];
-    $hdd = $hash['hdd'];
-    $result[] = array('timestamp'=> $from * 1000, 'cpu'=>$cpu, 'ram'=>$ram, 'hdd'=>$hdd);
-  }
-  $from += $incr;
-}
-
-array_pop($result);
-print json_encode($result);
-
-?>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/machinedata/main_banner.png
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/machinedata/main_banner.png b/contrib/src/main/html/machinedata/main_banner.png
deleted file mode 100644
index 9e3724f..0000000
Binary files a/contrib/src/main/html/machinedata/main_banner.png and /dev/null differ


[15/22] incubator-apex-malhar git commit: Removed DataTorrent & Malhar copyrights. Changed DataTorrent platform wording to Apex platform

Posted by th...@apache.org.
Removed DataTorrent & Malhar copyrights. Changed DataTorrent platform wording to Apex platform


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/aee1b216
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/aee1b216
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/aee1b216

Branch: refs/heads/devel-3
Commit: aee1b216faaec8e09ef27f53130c7e86234835ef
Parents: 9d4baef
Author: Pramod Immaneni <pr...@datatorrent.com>
Authored: Mon Nov 9 17:05:42 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:16 2015 -0800

----------------------------------------------------------------------
 apps/logstream/src/main/html/index.php          |  7 +-----
 .../datatorrent/apps/logstream/Application.java |  2 +-
 .../com/datatorrent/benchmark/package-info.java |  6 ++---
 .../java/com/datatorrent/contrib/solr/README.md |  4 ++--
 .../splunk/SplunkInputFromForwarder.java        |  2 +-
 demos/frauddetect/pom.xml                       |  2 +-
 demos/machinedata/src/main/html/index.php       |  7 +-----
 .../datatorrent/demos/mobile/Application.java   | 24 +++++++++-----------
 .../src/main/resources/mrdebugger.html          |  2 +-
 demos/pi/pom.xml                                |  2 +-
 demos/r/pom.xml                                 |  2 +-
 demos/wordcount/pom.xml                         |  2 +-
 demos/yahoofinance/pom.xml                      |  2 +-
 docs/CodingConventionsAndStyle.md               |  2 +-
 14 files changed, 27 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/apps/logstream/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/html/index.php b/apps/logstream/src/main/html/index.php
index 3db53bc..9ec09e5 100644
--- a/apps/logstream/src/main/html/index.php
+++ b/apps/logstream/src/main/html/index.php
@@ -16,10 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-<!--
- --  Copyright (c) 2012-2013 DataTorrent, Inc.
- --  All Rights Reserved.
- -->
 
 <!-- ## Siteops is deprecated, please use logstream instead ## -->
     
@@ -27,7 +23,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Site Operations Demo </title>
+<title>Site Operations Demo </title>
 
 <link rel="stylesheet" type="text/css" href="malhar.css">
 
@@ -39,7 +35,6 @@ google.load('visualization', '1', {'packages':['table']});
 
 </script>
 
-<!-- DataTorrent charting utils -->
 <script type="text/javascript" src="global.js"></script>
 <script type="text/javascript" src="DrawPageViewTimeChart.js"></script>
 <script type="text/javascript" src="TopUrlChart.js"></script>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
----------------------------------------------------------------------
diff --git a/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java b/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
index a595d16..0cd3f79 100644
--- a/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
+++ b/apps/logstream/src/main/java/com/datatorrent/apps/logstream/Application.java
@@ -50,7 +50,7 @@ import com.datatorrent.contrib.redis.RedisMapOutputOperator;
 import com.datatorrent.contrib.redis.RedisNumberSummationMapOutputOperator;
 
 /**
- * Log stream processing application based on DataTorrent platform.<br>
+ * Log stream processing application based on Apex platform.<br>
  * This application consumes log data generated by running systems and services
  * in near real-time, and processes it to produce actionable data. This in turn
  * can be used to produce alerts, take corrective actions, or predict system

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
----------------------------------------------------------------------
diff --git a/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java b/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
index 7238b1a..b015015 100644
--- a/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
+++ b/benchmark/src/main/java/com/datatorrent/benchmark/package-info.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/**
- * DataTorrent performance demonstration application.
- */
+/**
+ * Apex malhar performance demonstration application.
+ */
 package com.datatorrent.benchmark;

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/solr/README.md b/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
index 2910d56..e5ee06f 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
+++ b/contrib/src/main/java/com/datatorrent/contrib/solr/README.md
@@ -2,9 +2,9 @@ Solr:
 ====
 Solr is a search platform from apache Lucene.  Its major features include powerful full-text search, hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery and more.
 
-Solr with DataTorrent:
+Solr with Apex:
 =====================
-Solr search platform can be intergrated with datatorrent for variety of purposes for use cases ranging from simple keyword search to ranking, scoring, classification etc.
+Solr search platform can be intergrated with Apex for variety of purposes for use cases ranging from simple keyword search to ranking, scoring, classification etc.
 
 Solr InputOperator:
 ==================

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java b/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
index 782b8d1..8a5fa5d 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/splunk/SplunkInputFromForwarder.java
@@ -32,7 +32,7 @@ import java.util.Properties;
 /**
  *
  * An abstract class which receives input from a splunk forwarder and writes the lines to kafka.
- * A kafka input operator can be used to read these lines in a DataTorrent application.
+ * A kafka input operator can be used to read these lines in an Apex application.
  *
  * @param <T> the type of data to be stored into kafka
  * @since 1.0.4

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/frauddetect/pom.xml
----------------------------------------------------------------------
diff --git a/demos/frauddetect/pom.xml b/demos/frauddetect/pom.xml
index 67ac15d..bd9046d 100644
--- a/demos/frauddetect/pom.xml
+++ b/demos/frauddetect/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Fraud Detect Demo</name>
-  <description>DataTorrent demo applications that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
+  <description>Apex demo application that demonstrates real-time pattern detection in the incoming data and alerting. The demo processes streaming credit card transactions and looks for fraudulent transactions.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/machinedata/src/main/html/index.php
----------------------------------------------------------------------
diff --git a/demos/machinedata/src/main/html/index.php b/demos/machinedata/src/main/html/index.php
index aa1aadc..6b93570 100644
--- a/demos/machinedata/src/main/html/index.php
+++ b/demos/machinedata/src/main/html/index.php
@@ -16,16 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-<!--
- --  Copyright (c) 2012-2013 Malhar, Inc.
- --  All Rights Reserved.
- -->
-    
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Data Torrent : Machine Generated Data Demo </title>
+<title>Machine Generated Data Demo </title>
 
 <link rel="stylesheet" type="text/css" href="malhar.css">
 

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
----------------------------------------------------------------------
diff --git a/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java b/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
index d0779b3..9d9f31b 100644
--- a/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
+++ b/demos/mobile/src/main/java/com/datatorrent/demos/mobile/Application.java
@@ -18,28 +18,26 @@
  */
 package com.datatorrent.demos.mobile;
 
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Random;
-
-import org.apache.commons.lang.mutable.MutableLong;
-import org.apache.commons.lang3.Range;
-import org.apache.hadoop.conf.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.datatorrent.api.Context.OperatorContext;
 import com.datatorrent.api.DAG;
 import com.datatorrent.api.StatsListener;
 import com.datatorrent.api.StreamingApplication;
 import com.datatorrent.api.annotation.ApplicationAnnotation;
-
 import com.datatorrent.lib.counters.BasicCounters;
 import com.datatorrent.lib.io.PubSubWebSocketInputOperator;
 import com.datatorrent.lib.io.PubSubWebSocketOutputOperator;
 import com.datatorrent.lib.partitioner.StatelessThroughputBasedPartitioner;
 import com.datatorrent.lib.testbench.RandomEventGenerator;
+import org.apache.commons.lang.mutable.MutableLong;
+import org.apache.commons.lang3.Range;
+import org.apache.hadoop.conf.Configuration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Random;
 
 /**
  * Mobile Demo Application:
@@ -47,7 +45,7 @@ import com.datatorrent.lib.testbench.RandomEventGenerator;
  * This demo simulates large number of cell phones in the range of 40K to 200K
  * and tracks a given cell number across cell towers. It also displays the changing locations of the cell number on a google map.
  *
- * This demo demonstrates the scalability feature of Datatorrent platform.
+ * This demo demonstrates the scalability feature of the Apex platform.
  * It showcases the ability of the platform to scale up and down as the phone numbers generated increase and decrease respectively.
  * If the tuples processed per second by the pmove operator increase beyond 30,000, more partitions of the pmove operator gets deployed until
  * each of the partition processes around 10000 to 30000 tuples per second.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/mrmonitor/src/main/resources/mrdebugger.html
----------------------------------------------------------------------
diff --git a/demos/mrmonitor/src/main/resources/mrdebugger.html b/demos/mrmonitor/src/main/resources/mrdebugger.html
index 3d53c97..d8e6497 100644
--- a/demos/mrmonitor/src/main/resources/mrdebugger.html
+++ b/demos/mrmonitor/src/main/resources/mrdebugger.html
@@ -21,7 +21,7 @@
 <!doctype html>
 <html>
 <head>
-<title>DataTorrent Mobile Demo</title>
+<title>Mobile Demo</title>
 
 <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
 <meta name="viewport" content="initial-scale=1.0, user-scalable=no">

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/pi/pom.xml
----------------------------------------------------------------------
diff --git a/demos/pi/pom.xml b/demos/pi/pom.xml
index 0e787d2..5c20c9e 100644
--- a/demos/pi/pom.xml
+++ b/demos/pi/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Pi Demo</name>
-  <description>DataTorrent demo applications that calculate the value of Pi. This is a starting point to understand how DataTorrent works.</description>
+  <description>Apex demo applications that calculate the value of Pi. This is a starting point to understand how Apex works.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/r/pom.xml
----------------------------------------------------------------------
diff --git a/demos/r/pom.xml b/demos/r/pom.xml
index 219d865..15a2f42 100644
--- a/demos/r/pom.xml
+++ b/demos/r/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
  <name>Apache Apex Malhar (incubating) R Demo</name>
-  <description>DataTorrent demo applications for using R.</description>
+  <description>Apex demo applications for using R.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/wordcount/pom.xml
----------------------------------------------------------------------
diff --git a/demos/wordcount/pom.xml b/demos/wordcount/pom.xml
index b8afcba..dd5226e 100644
--- a/demos/wordcount/pom.xml
+++ b/demos/wordcount/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Wordcount Demo</name>
-  <description>A very simple application that demonstrates DataTorrent Platform’s streaming window feature.</description>
+  <description>A very simple application that demonstrates Apex Platform’s streaming window feature.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/demos/yahoofinance/pom.xml
----------------------------------------------------------------------
diff --git a/demos/yahoofinance/pom.xml b/demos/yahoofinance/pom.xml
index 0402143..fd240d7 100644
--- a/demos/yahoofinance/pom.xml
+++ b/demos/yahoofinance/pom.xml
@@ -26,7 +26,7 @@
   <packaging>jar</packaging>
 
   <name>Apache Apex Malhar (incubating) Yahoo! Finance Demo</name>
-  <description>DataTorrent demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
+  <description>Apex demo applications that get Yahoo finance feed and calculate minute price range, minute volume and simple moving average.</description>
 
   <parent>
     <groupId>org.apache.apex</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/aee1b216/docs/CodingConventionsAndStyle.md
----------------------------------------------------------------------
diff --git a/docs/CodingConventionsAndStyle.md b/docs/CodingConventionsAndStyle.md
index 46d8994..154f1de 100644
--- a/docs/CodingConventionsAndStyle.md
+++ b/docs/CodingConventionsAndStyle.md
@@ -1,7 +1,7 @@
 Coding Conventions and Style
 ==============================
 
-Malhar GitHub repository contains operator library and demos built on top of the DataTorrent platform. The code is open source, viewable and downloadable by all. Anyone can make code submissions to the repository to add new features or fix bugs. The process to do so is to first make a personal fork of the repository, make changes in the fork and then generate a pull request with the changes against the Malhar repository.
+Malhar GitHub repository contains operator library and demos built on top of the Apex platform. The code is open source, viewable and downloadable by all. Anyone can make code submissions to the repository to add new features or fix bugs. The process to do so is to first make a personal fork of the repository, make changes in the fork and then generate a pull request with the changes against the Malhar repository.
 
 Malhar administrators look at pull requests regularly and merge them into the repository. The pull requests have to follow certain guidelines in order to minimize the possibility of issues and problems arising from the merge, to keep the code maintainable going forward and to keep the licensing. The guidelines are as follows
 


[20/22] incubator-apex-malhar git commit: Using DataTorrent rss feed for test, #comment MLHR-1899

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/90d5774f/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed_updated.rss
----------------------------------------------------------------------
diff --git a/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed_updated.rss b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed_updated.rss
new file mode 100644
index 0000000..2403483
--- /dev/null
+++ b/contrib/src/test/resources/com/datatorrent/contrib/romesyndication/datatorrent_feed_updated.rss
@@ -0,0 +1,1134 @@
+<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:atom="http://www.w3.org/2005/Atom"
+	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
+	>
+
+<channel>
+	<title>DataTorrent</title>
+	<atom:link href="https://www.datatorrent.com/feed/" rel="self" type="application/rss+xml" />
+	<link>https://www.datatorrent.com</link>
+	<description></description>
+	<lastBuildDate>Tue, 10 Nov 2015 08:00:45 +0000</lastBuildDate>
+	<language>en-US</language>
+	<sy:updatePeriod>hourly</sy:updatePeriod>
+	<sy:updateFrequency>1</sy:updateFrequency>
+	<generator>http://wordpress.org/?v=4.2.5</generator>
+	<item>
+		<title>An introduction to checkpointing in Apache Apex</title>
+		<link>https://www.datatorrent.com/blog-introduction-to-checkpoint/</link>
+		<comments>https://www.datatorrent.com/blog-introduction-to-checkpoint/#comments</comments>
+		<pubDate>Tue, 10 Nov 2015 08:00:45 +0000</pubDate>
+		<dc:creator><![CDATA[Gaurav Gupta]]></dc:creator>
+				<category><![CDATA[How-to]]></category>
+		<category><![CDATA[Apache Apex]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2254</guid>
+		<description><![CDATA[<p>Know how Apex makes checkpointing easy Big data is evolving in a big way. As it booms, the issue of fault tolerance becomes more and more exigent. What happens if a node fails? Will your application recover from the effects of data or process corruption? In a conventional world, the simplest solution for such a problem would have [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-introduction-to-checkpoint/">An introduction to checkpointing in Apache Apex</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<h5 id="an-introduction-to-checkpointing-in-apex" class="c5">Know how Apex makes checkpointing easy</h5>
+<p class="c2"><span class="c0">Big data is evolving<span class="c0"> </span><span class="c3">i</span><span class="c0">n a big way. As it booms, the issue of </span><span class="c0">fault</span><span class="c3"> </span><span class="c0">tolerance</span><span class="c0"> becomes more and more exigent. What happens if a node fails? Will your application recover from the effects of data or process corruption?</span></span></p>
+<p class="c2"><span class="c0">In a conventional world, the simplest solution for such a problem would have been a restart of the offending processes from the beginning. However, that was the conventional world, with data sizes still within the reach of imagination. In the world of big data, the size of data cannot be imagined. </span><span class="c3">Let alone imagine, the growth is almost incomprehensible.</span><span class="c0"> A complete restart would mean </span><span class="c3">wasting </span><span class="c0">precious resources, be it time, or CPU capacity. Such a restart in a real-time scenario would also be unpredictable. After all, how do you recover data that changed by the second (or even less) accurately? </span></p>
+<p class="c2"><span class="c0">Fault tolerance</span><span class="c0"> is not just a need, it is an absolute necessity. </span><span class="c3">The lack of a fault tolerance mechanism affects SLAs</span><span class="c3">. </span><span class="c3">A system can be made fault-tolerant by using checkpointing</span><span class="c3">. </span><span class="c0">You can think of a checkpointing mechanism as a recovery process; a system process saves snapshots</span><span class="c3"> of </span><span class="c0">application states periodically, and uses these snapshots for recovery in case of failures. </span><span class="c3">A</span><span class="c0"> platform developer alone should ensure that a big data platform is checkpoint</span><span class="c3">&#8211;</span><span class="c0">compliant. Application developers should only be concerned with their business logic, thus ensuring clear distinction between operability and functional behavior. </span></p>
+<p class="c2"><span class="c3 c7">Apex treats checkpointing as a native function, allowing application developers to stop worrying about application consistency</span><span class="c3">. </span></p>
+<p class="c2"><span class="c0">Apache</span><span class="c0 c12">®</span><span class="c0"> Apex is the industry’s only open-source platform that checkpoints intelligently, while relieving application developers of the need to worry about their platforms being failsafe.</span><span class="c3"> </span><span class="c0">By transparently checkpointing the state of operators to HDFS periodically, Apex ensures that the operators are recoverable on any node within a cluster</span><span class="c3">. </span><span class="c3">The Apex infrastructure is designed to scale, while ensuring easy recovery at any point during failure</span><span class="c3">. The </span><span class="c0">Apex checkpointing mechanism uses the DFS interfa</span><span class="c3">ce. thereby being agnostic to the DFS implementation.</span></p>
+<p class="c2"><span class="c3 c7">Apex introduces checkpointing by maintaining operator states within HDFS.</span></p>
+<p class="c2"><span class="c3">Apex serializes the state of operators to local disks, and then asynchronously copies serialized state to HDFS. The state is asynchronously copied to HDFS in order to ensure that the performance of applications is not affected by the HDFS latency. An operator is considered “checkpointed” only after the serialized state is copied to HDFS. In case of </span><span class="c3 c8"><a class="c1" href="https://www.datatorrent.com/docs/guides/ApplicationDeveloperGuide.html#h.1gf8i83">Exactly-Once </a></span><span class="c3">recovery mechanism, platform checkpoints at every window boundary and it behaves in synchronous mode i.e the operator is blocked till the state is copied to HDFS. </span></p>
+<p class="c2"><span class="c3">Although Apex is designed to checkpoint at window boundaries, developers can control how optimal a checkpoint operation is.</span><span class="c3"> </span><span class="c3">Developers can control how often checkpointing is triggered. They can do this by configuring the window boundary at which checkpointing will occur, by using the </span><span class="c3 c10"><a class="c1" href="https://www.datatorrent.com/docs/apidocs/com/datatorrent/api/Context.OperatorContext.html#CHECKPOINT_WINDOW_COUNT">CHECKPOINT_WINDOW_COUNT</a></span><span class="c3"> attribute. </span><span class="c0">Frequent checkpoints hamper the overall application performance. This is in stark contrast to sparsely placed checkpoints, which are dangerous because they might make application recovery a </span><span class="c3">time-consuming</span><span class="c0"> task. </span></p>
+<p class="c2"><span class="c3 c7">See this example to see how the apex checkpointing mechanism works. </span></p>
+<p class="c2"><span class="c3">In our example, let us set CHECKPOINT_WINDOW_COUNT to 1. This diagram shows the flow of data within window boundaries.  You will see that at the end of each window, Apex checkpoints data in order to ensure that it is consistent. If the operator crashes during window n+1, Apex restores it to nearest stable state, in this example, the state obtained by introducing checkpointing at the end of window n. The operator now starts processing window n+1 from the beginning. If CHECKPOINT_WINDOW_COUNT was set to 2, then there would have been one checkpoint before window n, and another checkpoint after window n+1.</span></p>
+<p class="c2"><img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image001.png" alt="checkpointing.png" /></p>
+<p class="c2"><span class="c3 c7">Judicious checkpointing ensures optimum application performance</span></p>
+<p class="c2"><span class="c3">Checkpointing is a costly and a resource-intensive operation, indicating that an overindulgence will impact an application’s performance. </span><span class="c3">To</span><span class="c3 c9"> </span><span class="c3">act as a deterrent to the performance slowdown because of checkpointing, Apex checkpoints non-transient data only.</span><span class="c3 c9"> </span><span class="c3">For example, in JDBC operator, connection can be reinitialized at the time of setup, it should be marked as transient, and thus omitted from getting checkpointed. </span></p>
+<p class="c2"><span class="c0">Application developers must know </span><span class="c3">whether</span><span class="c0"> to checkpoint or not; the thumb rule dictates that </span><span class="c0">operators</span><span class="c0"> for which computation depends on the previous state must be checkpointed. An example is the Counter operator, which tracks the number of tuples processed by the system. Because the operator relies on </span><span class="c3">its previous state to proceed, it</span><span class="c0"> needs to be checkpointed. Some operators are stateless; their computation does not depend on the previous state. Application developers can omit such operators from checkpointing operations by using the </span><span class="c3 c8"><a class="c1" href="https://www.datatorrent.com/docs/apidocs/com/datatorrent/api/Context.OperatorContext.html#STATELESS">STATELESS</a></span><span class="c0"> attribute or </span><span class="c3">by annotating the operator with </span><span class="c3 c
 8"><a class="c1" href="https://www.datatorrent.com/docs/apidocs/com/datatorrent/api/annotation/Stateless.html">Stateless</a></span><span class="c0">.</span></p>
+<p class="c2"><span class="c0">This post is an introduction to checkpointing</span><span class="c3"> </span><span class="c0">in Apex. For </span><span class="c3">more details</span><span class="c0">, </span><span class="c3">see our </span><span class="c3 c8"><a class="c1" href="http://www.datatorrent.com/docs/guides/ApplicationDeveloperGuide.html">Application Developer Guide</a></span><span class="c3">.</span></p>
+<h3 id="conclusion">Resources</h3>
+<p>Download DataTorrent Sandbox <a href="http://web.datatorrent.com/DataTorrent-RTS-Sandbox-Edition-Download.html" target="_blank">here</a></p>
+<p>Download DataTorrent Enterprise Edition <a href="http://web.datatorrent.com/DataTorrent-RTS-Enteprise-Edition-Download.html" target="_blank">here</a></p>
+<p>Join Apache Apex Meetups <a href="https://www.datatorrent.com/meetups/">here</a></p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-introduction-to-checkpoint/">An introduction to checkpointing in Apache Apex</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-introduction-to-checkpoint/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Dimensions Computation (Aggregate Navigator) Part 2: Implementation</title>
+		<link>https://www.datatorrent.com/dimensions-computation-aggregate-navigator-part-2-implementation/</link>
+		<comments>https://www.datatorrent.com/dimensions-computation-aggregate-navigator-part-2-implementation/#comments</comments>
+		<pubDate>Thu, 05 Nov 2015 09:00:10 +0000</pubDate>
+		<dc:creator><![CDATA[tim farkas]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+		<category><![CDATA[Apache Apex]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2401</guid>
+		<description><![CDATA[<p>Overview While the theory of computing the aggregations is correct, some more work is required to provide a scalable implementation of Dimensions Computation. As can be seen from the formulas provided in the previous post, the number of aggregations to maintain grows rapidly as the number of unique key values, aggregators, dimension combinations, and time [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/dimensions-computation-aggregate-navigator-part-2-implementation/">Dimensions Computation (Aggregate Navigator) Part 2: Implementation</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<h3 id="overview">Overview</h3>
+<p>While the theory of computing the aggregations is correct, some more work is required to provide a scalable implementation of Dimensions Computation. As can be seen from the formulas provided in the previous post, the number of aggregations to maintain grows rapidly as the number of unique key values, aggregators, dimension combinations, and time buckets grows. Additionally, a scalable implementation of Dimensions Computation must be capable of handling hundreds of thousands of events per second. In order to achieve this level of performance a balance must be struck between the speed afforded by in memory processing and the need to persist large quantities of data. This balance is achieved by performing dimensions computation in three phases:</p>
+<ol>
+<li>The <strong>Pre-Aggregation</strong> phase.</li>
+<li>The <strong>Unification</strong> phase.</li>
+<li>The <strong>Aggregation Storage</strong> phase.</li>
+</ol>
+<p>The sections below will describe the details of each phase of Dimensions Computation, and will also provide the code snippets required to implement each phase in Data Torrent.</p>
+<h3 id="the-pre-aggregation-phase">The Pre-aggregation Phase</h3>
+<h4 id="the-theory">The Theory</h4>
+<p>This phase allows Dimensions Computation to scale by reducing the number of events entering the system. How this is achieved can be described by the following example:</p>
+<ul>
+<li>Let’s say we have 500,000 <strong>AdEvents</strong>/second entering our system, and we want to perform Dimension Computation on those events.</li>
+</ul>
+<p>Although each <strong>AdEvent</strong> will contribute to many aggregations (as described by the formulas in the previous post) the number of unique values of keys in the <strong>AdEvents</strong> will likely be much smaller than 500,000. So the total number of aggregations produced by 500,000 events will also be much smaller than 500,000. Let’s say for the sake of this example that the number of aggregations produced will be on the order of 10,000. This means that if we perform Dimension Computation on batches of 500,000 tuples we can reduce 500,000 events to 10,000 aggregations.</p>
+<p>The process can be sped up even further by utilizing partitioning. If a partition can handle 500,000 events/second, then 8 partitions would be able to handle 4,000,000 events/second. And these 4,000,000 events/seconds would then be compressed into 80,000 aggregations/second. These aggregations are then passed on to the Unification stage of processing.</p>
+<p><strong>Note</strong> that these 80,000 aggregations will not be complete aggregations for two reasons:</p>
+<ol>
+<li>The aggregations do not incorporate the values of events received in previous batches. This draw back is corrected by the <strong>Aggregation Storage</strong> phase.</li>
+<li>The aggregations computed by different partitions may share the same key values and time buckets. This draw back is corrected by the <strong>Unification</strong> phase.</li>
+</ol>
+<h4 id="the-code">The Code</h4>
+<p>Setting up the Pre-Aggregation phase of Dimensions Computation involves configuring a Dimension Computation operator. There are several flavors of the Dimension Computation operator, the easiest to use out of the box for Java and dtAssemble is <strong>DimensionsComputationFlexibleSingleSchemaPOJO</strong>. This operator can receive any POJO as input (like our AdEvent) and requires the following configuration:</p>
+<ul>
+<li><strong>A JSON Schema:</strong> The JSON schema specifies the keys, aggregates, aggregators, dimension combinations, and time buckets to be used for Dimension Computation. An example of a schema that could be used for <strong>AdEvents</strong> is the following:</li>
+</ul>
+<pre class="prettyprint"><code class=" hljs json">{"<span class="hljs-attribute">keys</span>":<span class="hljs-value">[{"<span class="hljs-attribute">name</span>":<span class="hljs-value"><span class="hljs-string">"advertiser"</span></span>,"<span class="hljs-attribute">type</span>":<span class="hljs-value"><span class="hljs-string">"string"</span></span>},
+         {"<span class="hljs-attribute">name</span>":<span class="hljs-value"><span class="hljs-string">"location"</span></span>,"<span class="hljs-attribute">type</span>":<span class="hljs-value"><span class="hljs-string">"string"</span></span>}]</span>,
+ "<span class="hljs-attribute">timeBuckets</span>":<span class="hljs-value">[<span class="hljs-string">"1m"</span>,<span class="hljs-string">"1h"</span>,<span class="hljs-string">"1d"</span>]</span>,
+ "<span class="hljs-attribute">values</span>":
+  <span class="hljs-value">[{"<span class="hljs-attribute">name</span>":<span class="hljs-value"><span class="hljs-string">"impressions"</span></span>,"<span class="hljs-attribute">type</span>":<span class="hljs-value"><span class="hljs-string">"long"</span></span>,"<span class="hljs-attribute">aggregators</span>":<span class="hljs-value">[<span class="hljs-string">"SUM"</span>,<span class="hljs-string">"MAX"</span>,<span class="hljs-string">"MIN"</span>]</span>},
+   {"<span class="hljs-attribute">name</span>":<span class="hljs-value"><span class="hljs-string">"clicks"</span></span>,"<span class="hljs-attribute">type</span>":<span class="hljs-value"><span class="hljs-string">"long"</span></span>,"<span class="hljs-attribute">aggregators</span>":<span class="hljs-value">[<span class="hljs-string">"SUM"</span>,<span class="hljs-string">"MAX"</span>,<span class="hljs-string">"MIN"</span>]</span>},
+   {"<span class="hljs-attribute">name</span>":<span class="hljs-value"><span class="hljs-string">"cost"</span></span>,"<span class="hljs-attribute">type</span>":<span class="hljs-value"><span class="hljs-string">"double"</span></span>,"<span class="hljs-attribute">aggregators</span>":<span class="hljs-value">[<span class="hljs-string">"SUM"</span>,<span class="hljs-string">"MAX"</span>,<span class="hljs-string">"MIN"</span>]</span>},
+   {"<span class="hljs-attribute">name</span>":<span class="hljs-value"><span class="hljs-string">"revenue"</span></span>,"<span class="hljs-attribute">type</span>":<span class="hljs-value"><span class="hljs-string">"double"</span></span>,"<span class="hljs-attribute">aggregators</span>":<span class="hljs-value">[<span class="hljs-string">"SUM"</span>,<span class="hljs-string">"MAX"</span>,<span class="hljs-string">"MIN"</span>]</span>}]</span>,
+ "<span class="hljs-attribute">dimensions</span>":
+  <span class="hljs-value">[{"<span class="hljs-attribute">combination</span>":<span class="hljs-value">[]</span>},
+   {"<span class="hljs-attribute">combination</span>":<span class="hljs-value">[<span class="hljs-string">"location"</span>]</span>},
+   {"<span class="hljs-attribute">combination</span>":<span class="hljs-value">[<span class="hljs-string">"advertiser"</span>]</span>},
+   {"<span class="hljs-attribute">combination</span>":<span class="hljs-value">[<span class="hljs-string">"advertiser"</span>,<span class="hljs-string">"location"</span>]</span>}]
+</span>}</code></pre>
+<ul>
+<li>A map from key names to the Java expression used to extract the key from an incoming POJO.</li>
+<li>A map from aggregate names to the Java expression used to extract the aggregate from an incoming POJO.</li>
+</ul>
+<p>An example of how to configure a Dimensions Computation operator to process <strong>AdEvents</strong> is as follows:</p>
+<pre class="prettyprint"><code class=" hljs avrasm">DimensionsComputationFlexibleSingleSchemaPOJO dimensions = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"DimensionsComputation"</span>, DimensionsComputationFlexibleSingleSchemaPOJO<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+
+Map&lt;String, String&gt; keyToExpression = Maps<span class="hljs-preprocessor">.newHashMap</span>()<span class="hljs-comment">;</span>
+keyToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"advertiser"</span>, <span class="hljs-string">"getAdvertiser()"</span>)<span class="hljs-comment">;</span>
+keyToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"location"</span>, <span class="hljs-string">"getLocation()"</span>)<span class="hljs-comment">;</span>
+keyToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"time"</span>, <span class="hljs-string">"getTime()"</span>)<span class="hljs-comment">;</span>
+
+Map&lt;String, String&gt; aggregateToExpression = Maps<span class="hljs-preprocessor">.newHashMap</span>()<span class="hljs-comment">;</span>
+aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"cost"</span>, <span class="hljs-string">"getCost()"</span>)<span class="hljs-comment">;</span>
+aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"revenue"</span>, <span class="hljs-string">"getRevenue()"</span>)<span class="hljs-comment">;</span>
+aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"impressions"</span>, <span class="hljs-string">"getImpressions()"</span>)<span class="hljs-comment">;</span>
+aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"clicks"</span>, <span class="hljs-string">"getClicks()"</span>)<span class="hljs-comment">;</span>
+
+dimensions<span class="hljs-preprocessor">.setKeyToExpression</span>(keyToExpression)<span class="hljs-comment">;</span>
+dimensions<span class="hljs-preprocessor">.setAggregateToExpression</span>(aggregateToExpression)<span class="hljs-comment">;</span>
+//Here eventSchema is a string containing the JSON listed above.
+dimensions<span class="hljs-preprocessor">.setConfigurationSchemaJSON</span>(eventSchema)<span class="hljs-comment">;</span></code></pre>
+<h3 id="the-unification-phase">The Unification Phase</h3>
+<h4 id="the-theory-1">The Theory</h4>
+<p>The Unification phase is relatively simple. It combines the outputs of all the partitions in the Pre-Aggregation phase into a single single stream which can be passed on to the storage phase. It has the added benefit of reducing the number of aggregations even further. This is because the aggregations produced by different partitions which share the same key and time bucket can be combined to produce a single aggregation. For example, if the Unification phase receives 80,000 aggregations/second, you can expect 20,000 aggregations/second after unification.</p>
+<h4 id="the-code-1">The Code</h4>
+<p>The Unification phase is implemented as a unifier that can be set on your dimensions computation operator.</p>
+<pre class="prettyprint"><code class=" hljs vbnet">dimensions.setUnifier(<span class="hljs-keyword">new</span> DimensionsComputationUnifierImpl&lt;InputEvent, <span class="hljs-keyword">Aggregate</span>&gt;());</code></pre>
+<h3 id="the-aggregation-storage-phase">The Aggregation Storage Phase</h3>
+<h4 id="the-theory-2">The Theory</h4>
+<p>The total number of aggregations produced by Dimension Computation is large, and it only increases with time (due to time bucketing). Aggregations are persisted to HDFS using HDHT. This persistence is performed by the Dimensions Store and serves two purposes:</p>
+<ul>
+<li>Functions as a storage so that aggregations can be retrieved for visualization.</li>
+<li>Functions as a storage allowing aggregations to be combined with incomplete aggregates produced by Unification.</li>
+</ul>
+<h5 id="visualization">Visualization</h5>
+<p>The DimensionsStore allows you to visualize your aggregations over time. This is done by allowing queries and responses to be received from and sent to the UI via websocket.</p>
+<h5 id="aggregation">Aggregation</h5>
+<p>The store produces complete aggregations by combining the incomplete aggregations received from the Unification stage with aggregations persisted to HDFS.</p>
+<h5 id="scalability">Scalability</h5>
+<p>Since the work done by the DimensionsStore is IO intensive, it cannot handle hundreds of thousands of events. The purpose of the the Pre-Aggregation and Unification phases is to reduce the cardinality of events so that the Store will almost always have a small number of events to handle. However, in cases where there are many unique values for keys, the Pre-Aggregation and Unification phases will not be sufficient to reduce the cardinality of events handled by the Dimension Store. In such cases it is possible to partition the Dimensions Store so that each partition handles the aggregates for a subset of the dimension combinations and time buckets.</p>
+<h4 id="the-code-2">The Code</h4>
+<p>Configuration of the DimensionsStore involves the following:</p>
+<ul>
+<li>Setting the JSON Schema.</li>
+<li>Connecting Query and Result operators that are used to send queries to and receive results from the DimensionsStore.</li>
+<li>Setting an HDHT File Implementation.</li>
+<li>Setting an HDFS path for storing aggregation data.</li>
+</ul>
+<p>An example of configuring the store is as follows:</p>
+<pre class="prettyprint"><code class=" hljs avrasm">AppDataSingleSchemaDimensionStoreHDHT store = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"Store"</span>, AppDataSingleSchemaDimensionStoreHDHT<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+
+TFileImpl hdsFile = new TFileImpl<span class="hljs-preprocessor">.DTFileImpl</span>()<span class="hljs-comment">;</span>
+hdsFile<span class="hljs-preprocessor">.setBasePath</span>(basePath)<span class="hljs-comment">;</span>
+store<span class="hljs-preprocessor">.setFileStore</span>(hdsFile)<span class="hljs-comment">;</span>
+store<span class="hljs-preprocessor">.setConfigurationSchemaJSON</span>(eventSchema)<span class="hljs-comment">;</span>
+
+String gatewayAddress = dag<span class="hljs-preprocessor">.getValue</span>(DAG<span class="hljs-preprocessor">.GATEWAY</span>_CONNECT_ADDRESS)<span class="hljs-comment">;</span>
+URI uri = URI<span class="hljs-preprocessor">.create</span>(<span class="hljs-string">"ws://"</span> + gatewayAddress + <span class="hljs-string">"/pubsub"</span>)<span class="hljs-comment">;</span>
+
+PubSubWebSocketAppDataQuery wsIn = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"Query"</span>, PubSubWebSocketAppDataQuery<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+wsIn<span class="hljs-preprocessor">.setUri</span>(uri)<span class="hljs-comment">;</span>
+wsIn<span class="hljs-preprocessor">.setTopic</span>(<span class="hljs-string">"Query Topic"</span>)<span class="hljs-comment">;</span>
+
+PubSubWebSocketAppDataResult wsOut = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"QueryResult"</span>, PubSubWebSocketAppDataResult<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+wsOut<span class="hljs-preprocessor">.setUri</span>(uri)<span class="hljs-comment">;</span>
+wsOut<span class="hljs-preprocessor">.setTopic</span>(<span class="hljs-string">"Result Topic"</span>)<span class="hljs-comment">;</span>
+
+dag<span class="hljs-preprocessor">.addStream</span>(<span class="hljs-string">"Query"</span>, wsIn<span class="hljs-preprocessor">.outputPort</span>, store<span class="hljs-preprocessor">.query</span>)<span class="hljs-comment">;</span>
+dag<span class="hljs-preprocessor">.addStream</span>(<span class="hljs-string">"QueryResult"</span>, store<span class="hljs-preprocessor">.queryResult</span>, wsOut<span class="hljs-preprocessor">.input</span>)<span class="hljs-comment">;</span></code></pre>
+<h3 id="putting-it-all-together">Putting it all Together</h3>
+<p>When you combine all the pieces described above, an application that visualizes <strong>AdEvents</strong> looks like this:</p>
+<pre class="prettyprint"><code class=" hljs avrasm">@ApplicationAnnotation(name=<span class="hljs-string">"AdEventDemo"</span>)
+public class AdEventDemo implements StreamingApplication
+{
+  public static final String EVENT_SCHEMA = <span class="hljs-string">"adsGenericEventSchema.json"</span><span class="hljs-comment">;</span>
+
+  @Override
+  public void populateDAG(DAG dag, Configuration conf)
+  {
+    //This loads the eventSchema<span class="hljs-preprocessor">.json</span> file which is a jar resource file.
+    String eventSchema = SchemaUtils<span class="hljs-preprocessor">.jarResourceFileToString</span>(<span class="hljs-string">"eventSchema.json"</span>)<span class="hljs-comment">;</span>
+
+    //Operator that receives Ad Events
+    AdEventReceiver receiver = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"Event Receiver"</span>, AdEventReceiver<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+
+    //Dimension Computation
+    DimensionsComputationFlexibleSingleSchemaPOJO dimensions = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"DimensionsComputation"</span>, DimensionsComputationFlexibleSingleSchemaPOJO<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+
+    Map&lt;String, String&gt; keyToExpression = Maps<span class="hljs-preprocessor">.newHashMap</span>()<span class="hljs-comment">;</span>
+    keyToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"advertiser"</span>, <span class="hljs-string">"getAdvertiser()"</span>)<span class="hljs-comment">;</span>
+    keyToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"location"</span>, <span class="hljs-string">"getLocation()"</span>)<span class="hljs-comment">;</span>
+    keyToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"time"</span>, <span class="hljs-string">"getTime()"</span>)<span class="hljs-comment">;</span>
+
+    Map&lt;String, String&gt; aggregateToExpression = Maps<span class="hljs-preprocessor">.newHashMap</span>()<span class="hljs-comment">;</span>
+    aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"cost"</span>, <span class="hljs-string">"getCost()"</span>)<span class="hljs-comment">;</span>
+    aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"revenue"</span>, <span class="hljs-string">"getRevenue()"</span>)<span class="hljs-comment">;</span>
+    aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"impressions"</span>, <span class="hljs-string">"getImpressions()"</span>)<span class="hljs-comment">;</span>
+    aggregateToExpression<span class="hljs-preprocessor">.put</span>(<span class="hljs-string">"clicks"</span>, <span class="hljs-string">"getClicks()"</span>)<span class="hljs-comment">;</span>
+
+    dimensions<span class="hljs-preprocessor">.setKeyToExpression</span>(keyToExpression)<span class="hljs-comment">;</span>
+    dimensions<span class="hljs-preprocessor">.setAggregateToExpression</span>(aggregateToExpression)<span class="hljs-comment">;</span>
+    dimensions<span class="hljs-preprocessor">.setConfigurationSchemaJSON</span>(eventSchema)<span class="hljs-comment">;</span>
+
+    dimensions<span class="hljs-preprocessor">.setUnifier</span>(new DimensionsComputationUnifierImpl&lt;InputEvent, Aggregate&gt;())<span class="hljs-comment">;</span>
+
+    //Dimension Store
+    AppDataSingleSchemaDimensionStoreHDHT store = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"Store"</span>, AppDataSingleSchemaDimensionStoreHDHT<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+
+    TFileImpl hdsFile = new TFileImpl<span class="hljs-preprocessor">.DTFileImpl</span>()<span class="hljs-comment">;</span>
+    hdsFile<span class="hljs-preprocessor">.setBasePath</span>(<span class="hljs-string">"dataStorePath"</span>)<span class="hljs-comment">;</span>
+    store<span class="hljs-preprocessor">.setFileStore</span>(hdsFile)<span class="hljs-comment">;</span>
+    store<span class="hljs-preprocessor">.setConfigurationSchemaJSON</span>(eventSchema)<span class="hljs-comment">;</span>
+
+    String gatewayAddress = dag<span class="hljs-preprocessor">.getValue</span>(DAG<span class="hljs-preprocessor">.GATEWAY</span>_CONNECT_ADDRESS)<span class="hljs-comment">;</span>
+    URI uri = URI<span class="hljs-preprocessor">.create</span>(<span class="hljs-string">"ws://"</span> + gatewayAddress + <span class="hljs-string">"/pubsub"</span>)<span class="hljs-comment">;</span>
+
+    PubSubWebSocketAppDataQuery wsIn = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"Query"</span>, PubSubWebSocketAppDataQuery<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+    wsIn<span class="hljs-preprocessor">.setUri</span>(uri)<span class="hljs-comment">;</span>
+    wsIn<span class="hljs-preprocessor">.setTopic</span>(<span class="hljs-string">"Query Topic"</span>)<span class="hljs-comment">;</span>
+
+    PubSubWebSocketAppDataResult wsOut = dag<span class="hljs-preprocessor">.addOperator</span>(<span class="hljs-string">"QueryResult"</span>, PubSubWebSocketAppDataResult<span class="hljs-preprocessor">.class</span>)<span class="hljs-comment">;</span>
+    wsOut<span class="hljs-preprocessor">.setUri</span>(uri)<span class="hljs-comment">;</span>
+    wsOut<span class="hljs-preprocessor">.setTopic</span>(<span class="hljs-string">"Result Topic"</span>)<span class="hljs-comment">;</span>
+
+    //Configure Streams
+
+    dag<span class="hljs-preprocessor">.addStream</span>(<span class="hljs-string">"Query"</span>, wsIn<span class="hljs-preprocessor">.outputPort</span>, store<span class="hljs-preprocessor">.query</span>)<span class="hljs-comment">;</span>
+    dag<span class="hljs-preprocessor">.addStream</span>(<span class="hljs-string">"QueryResult"</span>, store<span class="hljs-preprocessor">.queryResult</span>, wsOut<span class="hljs-preprocessor">.input</span>)<span class="hljs-comment">;</span>
+
+    dag<span class="hljs-preprocessor">.addStream</span>(<span class="hljs-string">"InputStream"</span>, receiver<span class="hljs-preprocessor">.output</span>, dimensions<span class="hljs-preprocessor">.input</span>)<span class="hljs-comment">;</span>
+    dag<span class="hljs-preprocessor">.addStream</span>(<span class="hljs-string">"DimensionalData"</span>, dimensions<span class="hljs-preprocessor">.output</span>, store<span class="hljs-preprocessor">.input</span>)<span class="hljs-comment">;</span>
+  }
+}</code></pre>
+<h3> </h3>
+<h3 id="visualizing-the-aggregations">Visualizing The Aggregations</h3>
+<p>When you launch your application you can visualize the aggregations of AdEvents over time by adding a widget to a visualization dashboard.</p>
+<p><img title="" src="https://docs.google.com/drawings/d/1wcHlgORqQYRdlnvkp3K7R9-2BllsW2jrgSBERqOq2jg/pub?w=960&amp;h=720" alt="enter image description here" /></p>
+<h3 id="conclusion">Conclusion</h3>
+<p>Aggregating huge amounts of data in real time is a challenge that many enterprises face today. Dimensions Computation is valuable for aggregating data, and Data Torrent provides an implementation of Dimensions Computation that allows users to integrate data aggregation with their applications with minimal effort.</p>
+<h3 id="conclusion">Resources</h3>
+<p>Download DataTorrent Sandbox <a href="http://web.datatorrent.com/DataTorrent-RTS-Sandbox-Edition-Download.html" target="_blank">here</a></p>
+<p>Download DataTorrent Enterprise Edition <a href="http://web.datatorrent.com/DataTorrent-RTS-Enteprise-Edition-Download.html" target="_blank">here</a></p>
+<p>Join Apache Apex Meetups <a href="https://www.datatorrent.com/meetups/">here</a></p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/dimensions-computation-aggregate-navigator-part-2-implementation/">Dimensions Computation (Aggregate Navigator) Part 2: Implementation</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/dimensions-computation-aggregate-navigator-part-2-implementation/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Dimensions Computation (Aggregate Navigator) Part 1: Intro</title>
+		<link>https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/</link>
+		<comments>https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/#comments</comments>
+		<pubDate>Tue, 03 Nov 2015 08:00:29 +0000</pubDate>
+		<dc:creator><![CDATA[tim farkas]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2399</guid>
+		<description><![CDATA[<p>Introduction In the world of big data, enterprises have a common problem. They have large volumes of data flowing into their systems for which they need to observe historical trends in real-time. Consider the case of a digital advertising publisher that is receiving hundreds of thousands of click events every second. Looking at the history [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/">Dimensions Computation (Aggregate Navigator) Part 1: Intro</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
+<p>In the world of big data, enterprises have a common problem. They have large volumes of data flowing into their systems for which they need to observe historical trends in real-time. Consider the case of a digital advertising publisher that is receiving hundreds of thousands of click events every second. Looking at the history of individual clicks and impressions doesn’t tell the publisher much about what is going on. A technique the publisher might employ is to track the total number of clicks and impressions for every second, minute, hour, and day. Such a technique might help find global trends in their systems, but may not provide enough granularity to take action on localized trends. The technique will need to be powerful enough to spot local trends. For example, the total clicks and impressions for an advertiser, a geographical area, or a combination of the two can provide some actionable insight. This process of receiving individual events, aggregating them over time, and
  drilling down into the data using some parameters like “advertiser” and “location” is called Dimensions Computation.</p>
+<p>Dimensions Computation is a powerful mechanism that allows you to spot trends in your streaming data in real-time. In this post we’ll cover the key concepts behind Dimensions Computation and outline the process of performing Dimensions Computation. We will also show you how to use Data Torrent’s out-of-the-box enterprise operators to easily add Dimensions Computation to your application.</p>
+<h2 id="the-process">The Process</h2>
+<p>Let us continue with our example of an advertising publisher. Let us now see the steps that the publisher might take to ensure that large volumes of raw advertisement data is converted into meaningful historical views of their advertisement events.</p>
+<h3 id="the-data">The Data</h3>
+<p>Typically advertising publishers receive packets of information for each advertising event. The events that a publisher receives might look like this:</p>
+<pre class="prettyprint"><code class=" hljs cs">    <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> AdEvent
+    {
+        <span class="hljs-comment">//The name of the company that is advertising</span>
+      <span class="hljs-keyword">public</span> String advertiser;
+      <span class="hljs-comment">//The geographical location of the person initiating the event</span>
+      <span class="hljs-keyword">public</span> String location;
+      <span class="hljs-comment">//How much the advertiser was charged for the event</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">double</span> cost;
+      <span class="hljs-comment">//How much revenue was generated for the advertiser</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">double</span> revenue;
+      <span class="hljs-comment">//The number of impressions the advertiser received from this event</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> impressions;
+      <span class="hljs-comment">//The number of clicks the advertiser received from this event</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> clicks;
+      <span class="hljs-comment">//The timestamp of the event in milliseconds</span>
+      <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> time;
+    }</code></pre>
+<p>The class <strong>AdEvent</strong> contains two types of data:</p>
+<ul>
+<li><strong>Aggregates</strong>: The data that is combined using aggregators.</li>
+<li><strong>Keys</strong>: The data that is used to select aggregations at a finer granularity.</li>
+</ul>
+<h4 id="aggregates">Aggregates</h4>
+<p>The aggregates in our <strong>AdEvent</strong> object are the pieces of data, which we must combine using aggregators in order to obtain a meaningful historical view. In this case, we can think of combining cost, revenue, impressions, and clicks. So these are our aggregates. We won’t obtain anything useful by aggregating the location and advertiser strings in our <strong>AdEvent</strong>, so those are not considered aggregates. It’s important to note that aggregates are considered separate entities. This means that the cost field of and <strong>AdEvent</strong> cannot be combined with its revenue field; cost values can only be aggregated with other cost values and revenue values can only be aggregated with other revenue values.</p>
+<p>In summary the aggregates in our <strong>AdEvent</strong> are:</p>
+<ul>
+<li><strong>cost</strong></li>
+<li><strong>revenue</strong></li>
+<li><strong>impressions</strong></li>
+<li><strong>clicks</strong></li>
+</ul>
+<h4 id="keys">Keys</h4>
+<p>The keys in our <strong>AdEvent</strong> object are used for selecting aggregations at a finer granularity. For example, it would make sense to look at the number of clicks for a particular advertiser, the number of clicks for a certain location, and the number of clicks for a certain location and advertiser combination. So location and advertiser are keys. Time is also another key since it is useful to look at the number of clicks received in a particular time range (For example, 12:00 pm through 1:00 pm or 12:00 pm through 12:01 pm.</p>
+<p>In summary the keys in our <strong>AdEvent</strong> are:</p>
+<ul>
+<li><strong>advertiser</strong></li>
+<li><strong>location</strong></li>
+<li><strong>time</strong></li>
+</ul>
+<h3 id="computing-the-aggregations">Computing The Aggregations</h3>
+<p>When the publisher receives a new <strong>AdEvent</strong> the event is added to running aggregations in real time. The keys and aggregates in the <strong>AdEvent</strong> are used to compute aggregations. How the aggregations are computed and the number of aggregations computed are determined by three tunable parameters:</p>
+<ul>
+<li><strong>Aggregators</strong></li>
+<li><strong>Dimensions Combinations</strong></li>
+<li><strong>Time Buckets</strong></li>
+</ul>
+<h4 id="aggregators">Aggregators</h4>
+<p>Dimensions Computation supports more than just one type of aggregation, and multiple aggregators can be used to combine incoming data at once. Some of the aggregators available out-of-the-box are:</p>
+<ul>
+<li><strong>Sum</strong></li>
+<li><strong>Count</strong></li>
+<li><strong>Min</strong></li>
+<li><strong>Max</strong></li>
+</ul>
+<p>As an example, suppose the publisher is not using the keys in their <strong>AdEvents</strong> and this publisher wants to perform a sum and a max aggregation.</p>
+<p><strong>1.</strong> An AdEvent arrives. The AdEvent is aggregated to the Sum and Count aggregations.<br />
+<img title="" src="https://docs.google.com/drawings/d/1upf5hv-UDT4BKhm7yTrcuFZYqnI263vMTXioKhr_qTo/pub?w=960&amp;h=720" alt="Adding Aggregate" /><br />
+<strong>2.</strong> Another AdEvent arrives. The AdEvent is aggregated to the Sum and Count aggregations.<br />
+<img title="" src="https://docs.google.com/drawings/d/10gTXjMyxanYo9UFc76IShPxOi5G7U5tvQKtfwqGyIws/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<p>As can be seen from the example above, each <strong>AdEvent</strong> contributes to two aggregations.</p>
+<h4 id="dimension-combinations">Dimension Combinations</h4>
+<p>Each <strong>AdEvent</strong> does not necessarily contribute to only one aggregation for each aggregator. In our advertisement example there are 4 <strong>dimension combinations</strong> over which aggregations can be computed.</p>
+<ul>
+<li><strong>advertiser:</strong> This dimension combination is comprised of just the advertiser value. This means that all the aggregates for <strong>AdEvents</strong> with a particular value for advertiser (for example, Gamestop) are aggregated.</li>
+<li><strong>location:</strong> This dimension combination is comprised of just the location value. This means that all the aggregates for <strong>AdEvents</strong> with a particular value for location (for example, California) are aggregated.</li>
+<li><strong>advertiser, location:</strong> This dimension combination is comprised the advertiser and location values. This means that all the aggregates for <strong>AdEvents</strong> with the same advertiser and location combination (for example, Gamestop, California) are aggregated.</li>
+<li><strong>the empty combination:</strong> This combination is a <em>global aggregation</em> because it doesn’t use any of the keys in the <strong>AdEvent</strong>. This means that all the <strong>AddEvents</strong> are aggregated.</li>
+</ul>
+<p>Therefore if a publisher is using the four dimension combinations enumerated above along with the sum and max aggregators, the number of aggregations being maintained would be:</p>
+<p>NUM_AGGS = 2 x <em>(number of unique advertisers)</em> + 2 * <em>(number of unique locations)</em> + 2 * <em>(number of unique advertiser and location combinations)</em> + 2</p>
+<p>And each individual <strong>AdEvent</strong> will contribute to <em>(number of aggregators)</em> x <em>(number of dimension combinations)</em> aggregations.</p>
+<p>Here is an example of how NUM_AGGS aggregations are computed:</p>
+<p><strong>1.</strong> An <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to aggregations for each aggregator and each dimension combination.<br />
+<img title="" src="https://docs.google.com/drawings/d/1qx8gLu615KneLDspsGkAS0_OlkX-DyvCUA7DAJtYJys/pub?w=960&amp;h=720" alt="Adding Aggregate" /><br />
+<strong>2.</strong> Another <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to aggregations for each aggregator and each dimension combination.<br />
+<img title="" src="https://docs.google.com/drawings/d/1FA2IyxewwzXtJ9A8JfJPrKtx-pfWHtHpVXp8lb8lKmE/pub?w=960&amp;h=720" alt="Adding Aggregate" /><br />
+<strong>3.</strong> Another <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to aggregations for each aggregator and each dimension combination.<br />
+<img title="" src="https://docs.google.com/drawings/d/15sxwfZeYOKBiapoD2o721M4rZs-bZBxhF3MeXelnu6M/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<p>As can be seen from the example above each <strong>AdEvent</strong> contributes to 2 x 4 = 8 aggregations and there are 2 x 2 + 2 x 2 + 2 x 3 + 2 = 16 aggregations in total.</p>
+<h4 id="time-buckets">Time Buckets</h4>
+<p>In addition to computing multiple aggregations for each dimension combination, aggregations can also be performed over time buckets. Time buckets are windows of time (for example, 1:00 pm through 1:01 pm) that are specified by a simple notation: 1m is one minute, 1h is one hour, 1d is one day. When aggregations are performed over time buckets, separate aggregations are maintained for each time bucket. Aggregations for a time bucket are comprised only of events with a time stamp that falls into that time bucket.</p>
+<p>An example of how these time bucketed aggregations are computed is as follows:</p>
+<p>Let’s say our advertisement publisher is interested in computing the Sum and Max of <strong>AdEvents</strong> for the dimension combinations comprised of <strong>advertiser</strong> and <strong>location</strong> over 1 minute and 1 hour time buckets.</p>
+<p><strong>1.</strong> An <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to the aggregations for the appropriate aggregator, dimension combination and time bucket.</p>
+<p><img title="" src="https://docs.google.com/drawings/d/11voOdqkagpGKcWn5HOiWWAn78fXlpGl7aXUa3tG5sQc/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<p><strong>3.</strong> Another <strong>AdEvent</strong> arrives. The <strong>AdEvent</strong> is applied to the aggregations for the appropriate aggregator, dimension combination and time bucket.</p>
+<p><img title="" src="https://docs.google.com/drawings/d/1ffovsxWZfHnSc_Z30RzGIXgzQeHjCnyZBoanO_xT_e4/pub?w=960&amp;h=720" alt="Adding Aggregate" /></p>
+<h4 id="conclusion">Conclusion</h4>
+<p>In summary, the three tunable parameters discussed above (<strong>Aggregators</strong>, <strong>Dimension Combinations</strong>, and <strong>Time Buckets</strong>) determine how aggregations are computed. In the examples provided in the <strong>Aggregators</strong>, <strong>Dimension Combinations</strong>, and <strong>Time Buckets</strong> sections respectively, we have incrementally increased the complexity in which the aggregations are performed. The examples provided in the <strong>Aggregators</strong>, and <strong>Dimension Combinations</strong> sections were for illustration purposes only; the example provided in the <strong>Time Buckets</strong> section provides an accurate view of how aggregations are computed within Data Torrent&#8217;s enterprise operators.</p>
+<p>Download DataTorrent Sandbox <a href="http://web.datatorrent.com/DataTorrent-RTS-Sandbox-Edition-Download.html" target="_blank">here</a></p>
+<p>Download DataTorrent Enterprise Edition <a href="http://web.datatorrent.com/DataTorrent-RTS-Enteprise-Edition-Download.html" target="_blank">here</a></p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/">Dimensions Computation (Aggregate Navigator) Part 1: Intro</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-dimensions-computation-aggregate-navigator-part-1-intro/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Cisco ACI, Big Data, and DataTorrent</title>
+		<link>https://www.datatorrent.com/blog_cisco_aci/</link>
+		<comments>https://www.datatorrent.com/blog_cisco_aci/#comments</comments>
+		<pubDate>Tue, 27 Oct 2015 22:30:07 +0000</pubDate>
+		<dc:creator><![CDATA[Charu Madan]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2348</guid>
+		<description><![CDATA[<p>By: Harry Petty, Data Center and Cloud Networking, Cisco  (This blog has been developed in association with Farid Jiandani, Product Manager with Cisco’s Insieme Networks Business Unit and Charu Madan, Director Business Development at DataTorrent. It was originally published on Cisco Blogs) If you work for an enterprise that’s looking to hit its digital sweet [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog_cisco_aci/">Cisco ACI, Big Data, and DataTorrent</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p>By: Harry Petty, Data Center and Cloud Networking, Cisco</p>
+<p class="c0 c11"><a name="h.gjdgxs"></a><span class="c1"> (</span><span class="c4 c13">This blog has been developed in association with Farid Jiandani, Product Manager with Cisco’s Insieme Networks Business Unit and Charu Madan, Director Business Development at DataTorrent. It was originally published on <a href="http://blogs.cisco.com/datacenter/aci-big-data-and-datatorrent" target="_blank">Cisco Blogs</a>)</span></p>
+<p class="c0"><span class="c1">If you work for an enterprise that’s looking to hit its digital sweet spot, then you’re scrutinizing your sales, marketing and operations to see where you should make digital investments to innovate and improve productivity. Super-fast data processing at scale is being used to obtain real-time insights for digital business and Internet of Things (IoT) initiatives.</span></p>
+<p class="c0"><span class="c1">According to Gartner Group, one of the cool vendors in this area of providing super- fast big data analysis using in-memory streaming analytics is called DataTorrent, a startup founded by long-time ex-Yahoo! veterans with vast experience managing big data for leading edge applications and infrastructure at massive scale. Their goal is to empower today’s enterprises to experience the full potential and business impact of big data with a platform that processes and analyzes data in real-time.</span></p>
+<p class="c0"><span class="c1 c2">DataTorrent RTS</span></p>
+<p class="c0"><span class="c4 c6">DataTorrent RTS is an open core</span><span class="c2 c4 c6">, enterprise-grade product powered by Apache Apex. </span><span class="c4 c6">DataTorrent RTS provides a single, unified batch and stream processing platform that enables organizations to reduce time to market, development costs and operational expenditures for big data analytics applications. </span></p>
+<p class="c0"><span class="c1 c2">DataTorrent RTS Integration with ACI</span></p>
+<p class="c0"><span class="c4 c6">A member of the Cisco ACI ecosystem, DataTorrent announced on September 29th DataTorrent RTS integration with Cisco </span><span class="c4 c6"><a class="c7" href="https://www.google.com/url?q=http://www.cisco.com/c/en/us/solutions/data-center-virtualization/application-centric-infrastructure/index.html&amp;sa=D&amp;usg=AFQjCNFMZhMYdUmPuuqrUI5IZmrvEhlK5g">Application Centric Infrastructure (ACI)</a></span><span class="c4 c6"> through the Application Policy Infrastructure Controller (APIC) to help create more efficient IT operations, bringing together network operations management and big data application management and development: </span></p>
+<p class="c0"><span class="c4"><a class="c7" href="https://www.google.com/url?q=https://www.datatorrent.com/press-releases/datatorrent-integrates-with-cisco-aci-to-help-secure-big-data-processing-through-a-unified-data-and-network-fabric/&amp;sa=D&amp;usg=AFQjCNG4S_2-OY5ox5nCf_0_Qj7s-x9pyw">DataTorrent Integrates with Cisco ACI to Help Secure Big Data Processing Through a Unified Data and Network Fabric</a></span><span class="c4">. </span><span class="c2 c4">The joint solution enables</span></p>
+<ul class="c8 lst-kix_list_2-0 start">
+<li class="c12 c0"><span class="c4">A unified fabric approach for managing </span><span class="c2 c4">Applications, Data </span><span class="c4">and </span><span class="c2 c4">Network</span></li>
+<li class="c0 c12"><span class="c4">A highly secure and automated Big Data application platform which uses the power of Cisco ACI for automation and security policy management </span></li>
+<li class="c12 c0"><span class="c4">The creation, repository, and enforcement point for Cisco ACI application policies for big data applications</span></li>
+</ul>
+<p class="c0"><span class="c4">With the ACI integration, secure connectivity to diverse data sets becomes a part of a user defined policy which is automated and does not compromise on security and access management. As an example, if one of the DataTorrent Big Data application needs access to say a Kafka source, then all nodes need to be opened up. This leaves the environment vulnerable and prone to attacks. With ACI, the access management policies and contracts help define the connectivity contracts and only the right node and right application gets access. See Figure 1 and 2 for the illustration of this concept. </span></p>
+<p class="c0"><span class="c1 c2">Figure 1:</span></p>
+<p class="c0"><a href="https://www.datatorrent.com/wp-content/uploads/2015/10/image00.jpg"><img class="alignnone size-full wp-image-2349" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image00.jpg" alt="image00" width="432" height="219" /></a></p>
+<p class="c0"><span class="c1 c2">Figure 2</span></p>
+<p class="c0"><a href="https://www.datatorrent.com/wp-content/uploads/2015/10/image011.png"><img class="alignnone size-full wp-image-2350" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image011.png" alt="image01" width="904" height="493" /></a></p>
+<p class="c0"><span class="c1 c2">ACI Support for Big Data Solutions</span></p>
+<p class="c0"><span class="c1">The openness and the flexibility of ACI allow big data customers to run a wide variety of different applications within their fabric alongside Hadoop. Due to the elasticity of ACI, customers are able to run batch processing alongside stream processing and other data base applications in a seamless fashion. In traditional Hadoop environments, the network is segmented based off of individual server nodes (see Figure 1). This makes it difficult to elastically allow access to and from different applications. Ultimately, within the ACI framework, logical demarcation points can be created based on application workloads rather than physical server groups (a set of Hadoop nodes should not be considered as a bunch of individual server nodes, rather a single group.)</span></p>
+<p class="c0"><span class="c1 c2">A Robust and Active Ecosystem</span></p>
+<p class="c0"><span class="c1">Many vendors claim they have a broad ecosystem of vendors, but sometimes that’s pure marketing, without any real integration efforts going on behind the slideware. But Cisco’s Application Centric Infrastructure (ACI) has a very active ecosystem of industry leaders who are putting significant resources into integration efforts, taking advantage of ACI’s open Northbound and Southbound API’s. DataTorrent is just one example of an innovative company that is using ACI integration to add value to their solutions and deliver real benefits to their channel partners and customers.</span></p>
+<p class="c0"><span class="c1">Stay tuned for more success stories to come: we’ll continue to showcase industry leaders that are taking advantage of the open ACI API’s.</span></p>
+<p class="c0"><span class="c1">Additional References</span></p>
+<p class="c0"><span class="c3"><a class="c7" href="https://www.google.com/url?q=https://www.cisco.com/go/aci&amp;sa=D&amp;usg=AFQjCNHPa1zEn6-1fEWQeCgZ-QmP9te5ig">https://www.cisco.com/go/aci</a></span></p>
+<p class="c0"><span class="c3"><a class="c7" href="https://www.google.com/url?q=https://www.cisco.com/go/aciecosystem&amp;sa=D&amp;usg=AFQjCNGmS3P3mOU0DQen5F43--fDi25uWw">https://www.cisco.com/go/aciecosystem</a></span></p>
+<p class="c11 c0"><span class="c3"><a class="c7" href="https://www.google.com/url?q=http://www.datatorrent/com&amp;sa=D&amp;usg=AFQjCNHbzoCVBy0azkWTbjpqdyxPqkCo9g">http://www.datatorrent/</a></span></p>
+<p>&nbsp;</p>
+<p>&nbsp;</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog_cisco_aci/">Cisco ACI, Big Data, and DataTorrent</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog_cisco_aci/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Write Your First Apache Apex Application in Scala</title>
+		<link>https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/</link>
+		<comments>https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/#comments</comments>
+		<pubDate>Tue, 27 Oct 2015 01:58:25 +0000</pubDate>
+		<dc:creator><![CDATA[Tushar Gosavi]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2280</guid>
+		<description><![CDATA[<p>* Extend your Scala expertise to building Apache Apex applications * Scala is modern, multi-paradigm programing language that integrates features of functional as well as object-oriented languages elegantly. Big Data frameworks are already exploring Scala as a language of choice for implementations. Apache Apex is developed in Java, the Apex APIs are such that writing [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/">Write Your First Apache Apex Application in Scala</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p><em>* Extend your Scala expertise to building Apache Apex applications *</em></p>
+<p>Scala is modern, multi-paradigm programing language that integrates features of functional as well as object-oriented languages elegantly. Big Data frameworks are already exploring Scala as a language of choice for implementations. Apache Apex is developed in Java, the Apex APIs are such that writing applications is a smooth sail. Developers can use any programing language that can run on JVM and access JAVA classes, because Scala has good interoperability with Java, running Apex applications designed in Scala is a fuss-free experience. We will explain how to write an Apache Apex application in Scala.</p>
+<p>Writing an <a href="http://www.datatorrent.com/apex" target="_blank">Apache Apex</a> application in Scala is simple.</p>
+<h2 id="operators-within-the-application">Operators within the application</h2>
+<p>We will develop a word count applications in Scala. This application will look for new files in a directory. With the availability of new files, the word count application will read the files, and compute a count for each word and print result on stdout. The application requires following operators:</p>
+<ul>
+<li><strong>LineReader</strong> &#8211; This operator monitors directories for new files periodically. After a new file is detected, LineReader reads the file line-by-line, and makes lines available on the output port for the next operator.</li>
+<li><strong>Parser</strong> &#8211; This operator receives lines read by LineReader on its input port. Parser breaks the line into words, and makes individual words available on the output port.</li>
+<li><strong>UniqueCounter</strong> &#8211; This operator computes the count of each word received on its input port.</li>
+<li><strong>ConsoleOutputOperator</strong> &#8211; This operator prints unique counts of words on standard output.</li>
+</ul>
+<h2 id="build-the-scala-word-count-application">Build the Scala word count application</h2>
+<p>Now, we will generate a sample application using maven archtype:generate.</p>
+<h3 id="generate-a-sample-application">Generate a sample application.</h3>
+<pre class="prettyprint"><code class="language-bash hljs ">mvn archetype:generate -DarchetypeRepository=https://www.datatorrent.com/maven/content/repositories/releases -DarchetypeGroupId=com.datatorrent -DarchetypeArtifactId=apex-app-archetype -DarchetypeVersion=<span class="hljs-number">3.0</span>.<span class="hljs-number">0</span> -DgroupId=com.datatorrent -Dpackage=com.datatorrent.wordcount -DartifactId=wordcount -Dversion=<span class="hljs-number">1.0</span>-SNAPSHOT</code></pre>
+<p>This creates a directory called <strong>wordcount</strong>, with a sample application and build script. Let us see how to modify this application into the Scala-based word count application that we are looking to develop.</p>
+<h3 id="add-the-scala-build-plugin">Add the Scala build plugin.</h3>
+<p>Apache Apex uses maven for building the framework and operator library. Maven supports a plugin for compiling Scala files. To enable this plugin, add the following snippet to the <code>build -&gt; plugins</code> sections of the <code>pom.xml</code> file that is located in the application directory.</p>
+<pre class="prettyprint"><code class="language-xml hljs ">  <span class="hljs-tag">&lt;<span class="hljs-title">plugin</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">groupId</span>&gt;</span>net.alchim31.maven<span class="hljs-tag">&lt;/<span class="hljs-title">groupId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">artifactId</span>&gt;</span>scala-maven-plugin<span class="hljs-tag">&lt;/<span class="hljs-title">artifactId</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">version</span>&gt;</span>3.2.1<span class="hljs-tag">&lt;/<span class="hljs-title">version</span>&gt;</span>
+    <span class="hljs-tag">&lt;<span class="hljs-title">executions</span>&gt;</span>
+      <span class="hljs-tag">&lt;<span class="hljs-title">execution</span>&gt;</span>
+        <span class="hljs-tag">&lt;<span class="hljs-title">goals</span>&gt;</span>
+          <span class="hljs-tag">&lt;<span class="hljs-title">goal</span>&gt;</span>compile<span class="hljs-tag">&lt;/<span class="hljs-title">goal</span>&gt;</span>
+          <span class="hljs-tag">&lt;<span class="hljs-title">goal</span>&gt;</span>testCompile<span class="hljs-tag">&lt;/<span class="hljs-title">goal</span>&gt;</span>
+        <span class="hljs-tag">&lt;/<span class="hljs-title">goals</span>&gt;</span>
+      <span class="hljs-tag">&lt;/<span class="hljs-title">execution</span>&gt;</span>
+    <span class="hljs-tag">&lt;/<span class="hljs-title">executions</span>&gt;</span>
+  <span class="hljs-tag">&lt;/<span class="hljs-title">plugin</span>&gt;</span></code></pre>
+<p>Also, specify the Scala library as a dependency in the pom.xml file.<br />
+Add the Scala library.</p>
+<pre class="prettyprint"><code class="language-xml hljs "><span class="hljs-tag">&lt;<span class="hljs-title">dependency</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">groupId</span>&gt;</span>org.scala-lang<span class="hljs-tag">&lt;/<span class="hljs-title">groupId</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">artifactId</span>&gt;</span>scala-library<span class="hljs-tag">&lt;/<span class="hljs-title">artifactId</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">version</span>&gt;</span>2.11.2<span class="hljs-tag">&lt;/<span class="hljs-title">version</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-title">dependency</span>&gt;</span></code></pre>
+<p>We are now set to write a Scala application.</p>
+<h2 id="write-your-scala-word-count-application">Write your Scala word count application</h2>
+<h3 id="linereader">LineReader</h3>
+<p><a href="https://github.com/apache/incubator-apex-malhar" target="_blank">Apache Malhar library</a> contains an <a href="https://github.com/apache/incubator-apex-malhar/blob/1f5676b455f7749d11c7cd200216d0d4ad7fce32/library/src/main/java/com/datatorrent/lib/io/AbstractFTPInputOperator.java" target="_blank">AbstractFileInputOperator</a> operator that monitors and reads files from a directory. This operator has capabilities such as support for scaling, fault tolerance, and exactly once processing. To complete the functionality, override a few methods:<br />
+<em>readEntity</em> : Reads a line from a file.<br />
+<em>emit</em> : Emits data read on the output port.<br />
+We have overridden openFile to obtain an instance of BufferedReader that is required while reading lines from the file. We also override closeFile for closing an instance of BufferedReader.</p>
+<pre class="prettyprint"><code class="language-scala hljs "><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LineReader</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractFileInputOperator</span>[<span class="hljs-title">String</span>] {</span>
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">val</span> out : DefaultOutputPort[String] = <span class="hljs-keyword">new</span> DefaultOutputPort[String]();
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> readEntity(): String = br.readLine()
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> emit(line: String): Unit = out.emit(line)
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> openFile(path: Path): InputStream = {
+    <span class="hljs-keyword">val</span> in = <span class="hljs-keyword">super</span>.openFile(path)
+    br = <span class="hljs-keyword">new</span> BufferedReader(<span class="hljs-keyword">new</span> InputStreamReader(in))
+    <span class="hljs-keyword">return</span> in
+  }
+
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> closeFile(is: InputStream): Unit = {
+    br.close()
+    <span class="hljs-keyword">super</span>.closeFile(is)
+  }
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">private</span> <span class="hljs-keyword">var</span> br : BufferedReader = <span class="hljs-keyword">null</span>
+}</code></pre>
+<p>Some Apex API classes are not serializable, and must be defined as transient. Scala supports transient annotation for such scenarios. If you see objects that are not a part of the state of the operator, you must annotate them with a @transient. For example, in this code, we have annotated buffer reader and output port as transient.</p>
+<h3 id="parser">Parser</h3>
+<p>Parser splits lines using in-built JAVA split function, and emits individual words to the output port.</p>
+<pre class="prettyprint"><code class="language-scala hljs "><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Parser</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">BaseOperator</span> {</span>
+  <span class="hljs-annotation">@BeanProperty</span>
+  <span class="hljs-keyword">var</span> regex : String = <span class="hljs-string">" "</span>
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">val</span> out = <span class="hljs-keyword">new</span> DefaultOutputPort[String]()
+
+  <span class="hljs-annotation">@transient</span>
+  <span class="hljs-keyword">val</span> in = <span class="hljs-keyword">new</span> DefaultInputPort[String]() {
+    <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> process(t: String): Unit = {
+      <span class="hljs-keyword">for</span>(w &lt;- t.split(regex)) out.emit(w)
+    }
+  }
+}</code></pre>
+<p>Scala simplifies automatic generation of setters and getters based on the @BinProperty annotation. Properties annotated with @BinProperty can be modified at the time of launching an application by using configuration files. You can also modify such properties while an application is running. You can specify the regular expression used for splitting within the configuration file.</p>
+<h3 id="uniquecount-and-consoeloutputoperator">UniqueCount and ConsoelOutputOperator</h3>
+<p>For this application, let us use UniqueCount and ConsoleOutputOperator as is.</p>
+<h3 id="put-together-the-word-count-application">Put together the word count application</h3>
+<p>Writing the main application class in Scala is similar to doing it in JAVA. You must first get an instance of DAG object by overriding the populateDAG() method. Later, you must add operators to this instance using the addOperator() method. Finally, you must connect the operators with the addStream() method.</p>
+<pre class="prettyprint"><code class="language-scala hljs "><span class="hljs-annotation">@ApplicationAnnotation</span>(name=<span class="hljs-string">"WordCount"</span>)
+<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Application</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StreamingApplication</span> {</span>
+  <span class="hljs-keyword">override</span> <span class="hljs-keyword">def</span> populateDAG(dag: DAG, configuration: Configuration): Unit = {
+    <span class="hljs-keyword">val</span> input = dag.addOperator(<span class="hljs-string">"input"</span>, <span class="hljs-keyword">new</span> LineReader)
+    <span class="hljs-keyword">val</span> parser = dag.addOperator(<span class="hljs-string">"parser"</span>, <span class="hljs-keyword">new</span> Parser)
+    <span class="hljs-keyword">val</span> counter = dag.addOperator(<span class="hljs-string">"counter"</span>, <span class="hljs-keyword">new</span> UniqueCounter[String])
+    <span class="hljs-keyword">val</span> out = dag.addOperator(<span class="hljs-string">"console"</span>, <span class="hljs-keyword">new</span> ConsoleOutputOperator)
+
+    dag.addStream[String](<span class="hljs-string">"lines"</span>, input.out, parser.in)
+    dag.addStream[String](<span class="hljs-string">"words"</span>, parser.out, counter.data)
+    dag.addStream[java.util.HashMap[String,Integer]](<span class="hljs-string">"counts"</span>, counter.count, out.input)
+  }
+}</code></pre>
+<h2 id="running-application">Running application</h2>
+<p>Before running the word count application, specify the input directory for the input operator. You can use the default configuration file for this. Open the <em>src/main/resources/META-INF/properties.xml</em> file, and add the following lines between the tag. Do not forget to replace “username” with your Hadoop username.</p>
+<pre class="prettyprint"><code class="language-xml hljs "><span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
+ <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>dt.application.WordCount.operator.input.prop.directory<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
+  <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>/user/username/data<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
+<span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span></code></pre>
+<p>Build the application from the application directory using this command:</p>
+<pre class="prettyprint"><code class="language-bash hljs ">mvn clean install -DskipTests</code></pre>
+<p>You should now have an application package in the target directory.</p>
+<p>Now, launch this application package using dtcli.</p>
+<pre class="prettyprint"><code class="language-bash hljs ">$ dtcli
+DT CLI <span class="hljs-number">3.2</span>.<span class="hljs-number">0</span>-SNAPSHOT <span class="hljs-number">28.09</span>.<span class="hljs-number">2015</span> @ <span class="hljs-number">12</span>:<span class="hljs-number">45</span>:<span class="hljs-number">15</span> IST rev: <span class="hljs-number">8</span>e49cfb branch: devel-<span class="hljs-number">3</span>
+dt&gt; launch target/wordcount-<span class="hljs-number">1.0</span>-SNAPSHOT.apa
+{<span class="hljs-string">"appId"</span>: <span class="hljs-string">"application_1443354392775_0010"</span>}
+dt (application_1443354392775_0010) &gt;</code></pre>
+<p>Add some text files to the <em>/user/username/data</em> directory on your HDFS to see how the application works. You can see the words along with their counts in the container log of the console operator.</p>
+<h2 id="summary">Summary</h2>
+<p>Scala classes are JVM classes that can be inherited from JAVA classes, while allowing transparency in JAVA object creation and calling. That is why you can easily extend your Scala capabilities to build Apex applications.<br />
+To get started with creating your first application, see <a href="https://www.datatorrent.com/buildingapps/">https://www.datatorrent.com/buildingapps/</a>.</p>
+<h2 id="see-also">See Also</h2>
+<ul>
+<li>Building Applications with Apache Apex and Malhar <a href="https://www.datatorrent.com/buildingapps/">https://www.datatorrent.com/buildingapps/</a></li>
+<li>Scala tutorial for java programmers <a href="http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html">http://docs.scala-lang.org/tutorials/scala-for-java-programmers.html</a></li>
+<li>Application Developer Guide <a href="https://www.datatorrent.com/docs/guides/ApplicationDeveloperGuide.html">https://www.datatorrent.com/docs/guides/ApplicationDeveloperGuide.html</a></li>
+<li>Operator Developer Guide <a href="https://www.datatorrent.com/docs/guides/OperatorDeveloperGuide.html">https://www.datatorrent.com/docs/guides/OperatorDeveloperGuide.html</a></li>
+<li>Malhar Operator Library <a href="https://www.datatorrent.com/docs/guides/MalharStandardOperatorLibraryTemplatesGuide.html">https://www.datatorrent.com/docs/guides/MalharStandardOperatorLibraryTemplatesGuide.html</a></li>
+</ul>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/">Write Your First Apache Apex Application in Scala</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-writing-apache-apex-application-in-scala/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Apache Apex Performance Benchmarks</title>
+		<link>https://www.datatorrent.com/blog-apex-performance-benchmark/</link>
+		<comments>https://www.datatorrent.com/blog-apex-performance-benchmark/#comments</comments>
+		<pubDate>Tue, 20 Oct 2015 13:23:27 +0000</pubDate>
+		<dc:creator><![CDATA[Vlad Rozov]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2261</guid>
+		<description><![CDATA[<p>Why another benchmark blog? As engineers, we are skeptical of performance benchmarks developed and published by software vendors. Most of the time such benchmarks are biased towards the company’s own product in comparison to other vendors. Any reported advantage may be the result of selecting a specific use case better handled by the product or [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-apex-performance-benchmark/">Apache Apex Performance Benchmarks</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p><b id="apex-performance-benchmarks" class="c2 c16"><span class="c0">Why another benchmark blog?</span></b></p>
+<p class="c2">As engineers, we are skeptical of performance benchmarks developed and published by software vendors. Most of the time such benchmarks are biased towards the company’s own product in comparison to other vendors. Any reported advantage may be the result of selecting a specific use case better handled by the product or using optimized configuration for one’s own product compared to out of the box configuration for other vendors’ products.</p>
+<p class="c2">So, why another blog on the topic? The reason I decided to write this blog is to explain the rationale behind <a href="http://www.datatorrent.com">DataTorrent’s</a> effort to develop and maintain a benchmark performance suite, how the suite is used to certify various releases, and seek community opinion on how the performance benchmark may be improved.</p>
+<p class="c2 c4">Note: the performance numbers given here are only for reference and by no means a comprehensive performance evaluation of <a href="http://apex.apache.org/">Apache APEX</a>; performance numbers can vary depending on different configurations or different use cases.</p>
+<p class="c12 c2 subtitle"><strong>Benchmark application.</strong><img class=" aligncenter" title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image02.png" alt="" /></p>
+<p class="c2">To evaluate the performance of the <a href="http://apex.apache.org/">Apache APEX</a>  platform,  we use Benchmark application that has a simple <a href="https://www.datatorrent.com/blog-tracing-dags-from-specification-to-execution/">DAG</a> with only two operators. The first operator (<span class="c3">wordGenerato</span>r) emits tuples and the second operator (<span class="c3">counter</span>) counts tuples received. For such trivial operations, operators add minimum overhead to CPU and memory consumption allowing measurement of <a href="http://apex.apache.org/">Apache APEX</a>  platform throughput. As operators don’t change from release to release, this application is suitable for comparing the platform performance across releases.</p>
+<p class="c2">Tuples are byte arrays with configurable length, minimizing complexity of tuples serialization and at the same time allowing examination of  performance of the platform against several different tuple sizes. The emitter (<span class="c3">wordGenerator</span>) operator may be configured to use the same byte array avoiding the operator induced garbage collection. Or it may be configured to allocate new byte array for every new tuple emitted, more closely simulating real application behavior.</p>
+<p class="c2">The consumer (<span class="c3">counter</span>) operator collects the total number of tuples received and the wall-clock time in milliseconds passed between begin and end window. It writes the collected data to the log at the end of every 10th window.</p>
+<p class="c2">The data stream (<span class="c3">Generator2Counter</span>) connects the first operator output port to the second operator input port. The benchmark suite exercises all possible configurations for the stream locality:</p>
+<ul class="c8 lst-kix_2ql03f9wui4c-0 start">
+<li class="c2 c7">thread local (<span class="c3">THREAD_LOCAL</span>) when both operators are deployed into the same thread within a container effectively serializing operators computation;</li>
+<li class="c2 c7">container local (<span class="c3">CONTAINER_LOCAL)</span><span class="c3"> </span>when both operators are deployed into the same container and execute in two different threads;</li>
+<li class="c2 c7">node local (<span class="c3">NODE_LOCAL</span>)<sup><a href="#ftnt_ref1">[1]</a></sup> when operators are deployed into two different containers running on the same yarn node;</li>
+<li class="c2 c7">rack local (RACK_LOCAL)<sup><a href="#ftnt_ref2">[2]</a></sup> when operators are deployed into two different containers running on yarn nodes residing on the same rack</li>
+<li class="c2 c7">no locality when operators are deployed into two different containers running on any hadoop cluster node.</li>
+</ul>
+<p class="c2 c12 subtitle"><span class="c0"><b><a href="http://apex.apache.org/">Apache APEX</a> release performance certification</b></span></p>
+<p class="c2">The benchmark application is a part of <a href="http://apex.apache.org/">Apache APEX</a> release certification. It is executed on <a href="http://www.datatorrent.com">DataTorrent’s</a> development Hadoop cluster by an automated script that launches the application with all supported <span class="c3">Generator2Counter</span> stream localities and 64, 128, 256, 512, 1024, 2048 and a tuple byte array length of 4096. The script collects the number of tuples emitted, the number of tuples processed and the <span class="c3">counter</span> operator latency for the running application and shuts down the application after it runs for 5 minutes, whereupon it moves on to the next configuration. For all configurations, the script runs between 6 and 8 hours depending on the development cluster load.</p>
+<p class="c12 c2 subtitle"><span class="c0"><b>Benchmark results</b></span></p>
+<p class="c2">As each supported stream locality has distinct performance characteristics (with exception of rack local and no locality due to the development cluster being setup on a single rack), I use a separate chart for each stream locality.</p>
+<p class="c2">Overall the results are self explanatory and I hope that anyone who uses, plans to use or plans to contribute to the <a href="http://apex.apache.org/">Apache APEX</a> project finds it useful. A few notes that seems to be worth mentioning:</p>
+<ul class="c8 lst-kix_5u2revq5rd1r-0 start">
+<li class="c2 c7">There is no performance regression in APEX release 3.0 compared to release 2.0</li>
+<li class="c2 c7">Benchmark was executed with default settings for buffer server spooling (turned on by default in release 3.0 and off in release 2.0). As the result, the benchmark application required just 2 GB of memory for the <span class="c3">wordGenerator</span> operator container in release 3.0, while it was necessary to allocate 8 GB to the same in release 2.0</li>
+<li class="c2 c7">When tuple size increases, JVM garbage collection starts to play a major role in performance benchmark compared to locality</li>
+<li class="c2 c7">Thread local outperforms all other stream localities only for trivial operators that we specifically designed for the benchmark.</li>
+<li class="c2 c7">The benchmark was performed on the development cluster while other developers were using it<img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image03.png" alt="" /></li>
+</ul>
+<p class="c2"><img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image01.png" alt="" /></p>
+<p class="c2 c17"><img title="" src="https://www.datatorrent.com/wp-content/uploads/2015/10/image002.png" alt="" /></p>
+<hr class="c10" />
+<div>
+<p class="c2 c13"><a name="ftnt_ref1"></a>[1]<span class="c6"> NODE_LOCAL is currently excluded from the benchmark test due to known limitation. Please see </span><span class="c6 c9"><a class="c5" href="https://malhar.atlassian.net/browse/APEX-123">APEX-123</a></span></p>
+</div>
+<div>
+<p class="c2 c13"><a name="ftnt_ref2"></a>[2]<span class="c6"> RACK_LOCAL is not yet fully implemented by APEX and is currently equivalent to no locality specified</span></p>
+</div>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-apex-performance-benchmark/">Apache Apex Performance Benchmarks</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>https://www.datatorrent.com/blog-apex-performance-benchmark/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>Introduction to dtGateway</title>
+		<link>https://www.datatorrent.com/blog-introduction-to-dtgateway/</link>
+		<comments>https://www.datatorrent.com/blog-introduction-to-dtgateway/#comments</comments>
+		<pubDate>Tue, 06 Oct 2015 13:00:48 +0000</pubDate>
+		<dc:creator><![CDATA[David Yan]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">https://www.datatorrent.com/?p=2247</guid>
+		<description><![CDATA[<p>A platform, no matter how much it can do, and how technically superb it is, does not delight users without a proper UI or an API. That’s why there are products such as Cloudera Manager and Apache Ambari to improve the usability of the Hadoop platform. At DataTorrent, in addition to excellence in technology, we [&#8230;]</p>
+<p>The post <a rel="nofollow" href="https://www.datatorrent.com/blog-introduction-to-dtgateway/">Introduction to dtGateway</a> appeared first on <a rel="nofollow" href="https://www.datatorrent.com">DataTorrent</a>.</p>
+]]></description>
+				<content:encoded><![CDATA[<p>A platform, no matter how much it can do, and how technically superb it is, does not delight users without a proper UI or an API. That’s why there are products such as Cloudera Manager and Apache Ambari to improve the 

<TRUNCATED>


[16/22] incubator-apex-malhar git commit: MLHR-1899 Workaround problematic test file content.

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/5325bf86/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
----------------------------------------------------------------------
diff --git a/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt b/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
index d3146c4..83eaaed 100644
--- a/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
+++ b/demos/wordcount/src/main/resources/com/datatorrent/demos/wordcount/samplefile.txt
@@ -1,92 +1 @@
-Mitt Romney’s second presidential run has largely focused on a single theme: Barack Obama has bungled the economy, and I’m the guy who can fix it. Romney points to his business and management expertise, honed in the boardrooms of Bain Capital and showcased by his stewardship of the Salt Lake City Olympics, to argue that his experience creating businesses and turning around flagging ones renders him the best positioned candidate to stanch the economic bleeding and put America back to work. But until now, he hasn’t seemed in too much of a hurry. The Romney campaign has been coasting, assiduously courting donors and opinion-makers, never panicking in grim news cycles and often preferring to plead its case in the op-ed pages instead of on the stump. The candidate has favored studiously casual attire, rarely engaged his rivals, and often skated over the fine print detailing how, exactly, he would engineer a turnaround of the U.S. economy.
-
-Tuesday afternoon marked a new phase in Romney’s campaign, as the former Massachusetts governor unveiled his economic platform at a truck dealership in North Las Vegas, two days before Obama lays out his own proposals before a joint session of Congress and four days after a dismal jobs report crystallized the economic challenges ahead. Spiffed up in a jacket and tie and flanked by billboards outlining his policy proposals, Romney laid out the broad strokes of an economic agenda he said would create some 11.5 million jobs and grow the economy at an annual rate of 4% over his first four years in the White House.
-
-The idea animating Romney’s economic policy is that the overreach of the Obama Administration, excessive regulations and high taxes have throttled the private sector’s ability to create jobs. “Growth is the answer, not government,” he told the crowd. This is, of course, standard Republican boilerplate. And for all the scorn Romney has heaped on Obama, his own economic ideas are hardly new.
-
-Romney’s policy platform, laid out in a 160-page book, touts 59 specific prescriptions, including five bills and five executive orders he would push on his first day in office, such as directing the Cabinet to offer “ObamaCare” waivers to the states and freezing regulations imposed by his predecessor. Most of his proposals align with Republican orthodoxy. On taxes, Romney would cut the corporate rate from 35% to 25% and let companies repatriate profits, lower marginal rates for individuals, and eliminate taxes on capital gains and dividends for the middle class. He wants to increase energy production, cut non-defense discretionary spending 5% and cap it at 20% of GDP, boost trade (he calls for a “Reagan Economic Zone” of countries committed to free enterprise), cut red tape and confront China.
-
-“We’re not going to have a trade war, but we can’t have a trade surrender either,” he said. “I’ll clamp down on the cheaters, and China’s the worst example of that.” He argued that with the adoption of any new regulation, one of similar cost should be scrapped. And he took dutiful swipes at unions, the EPA and the National Labor Relations Board, whose move to block Boeing from operating a new South Carolina plant has made it an obligatory target for any Republican who hopes to compete in the Palmetto State primary.
-
-All of this should sound familiar. There’s little daylight between Romney’s economic policies and the ones Republican rival Jon Huntsman touted last week in his own such blueprint. (The former Utah governor, who’s been on a sustained offensive against Romney of late, fired another salvo Tuesday, releasing a spot slamming Romney’s record on job creation in Massachusetts, which ranked 47th in the country by one measure.) Romney’s proposals also dovetails with those championed by House Republicans, whose “Cut, Cap and Balance” bill to slash spending and pass a constitutional balanced-budget amendment Romney supports. And he shades many of the same facts as his Republican counterparts.
-
-“If Mitt Romney has expressed a single original idea on the economy in the entire time he has been running for President – for the second time – you could auction it off on eBay in the rare stamp collection area,” Brad Woodhouse of the Democratic National Committee wrote in an memo which blasts Romney for “adopting the extreme policy prescriptions of the Tea Party.”
-
-Sort of. For months, Romney has tried to polish his conservative credentials and use Tea-infused rhetoric even as he courts more moderate Republicans searching not for purest candidate but the most viable one. At Jim DeMint’s Labor Day forum in South Carolina, Romney tossed red meat to the ravenous conservative base –”I don’t think I’ve ever seen an administration who has gone further afield from the Constitution” than Obama’s, he said — but was the only candidate of the five to appear who declined to back using the 14th Amendment as a potential vehicle to overturn Roe v. Wade. (He deftly cited states’ rights as the reason why, as the L.A. Times reports.) A day earlier in New Hampshire, he made his maiden overture to the Tea Party, where his speech was greeted by protesters and boycotted by the conservative advocacy group FreedomWorks, one of many outfits who will likely never forgive him for his efforts to thin the ranks of the uninsured in Massachusetts.
-
-In Las Vegas, a Romney redoubt (he handily won the Nevada caucus in 2008) that’s been clobbered by the recession, the former Massachusetts governor sought to appeal to voters across the political spectrum. Obama, he said, is “not a bad guy. He, uh, he just doesn’t know how the economy works.” Democrats “love America too, just like we do.”
-
-What separates Romney from his Republican rivals, he says, is that he alone has the private-sector management experience to shepherd the U.S. economy through an increasingly competitive global marketplace. “I think to create jobs, it helps to have had a job, and I have,” he said. As Democrats often point out, Romney’s job involved the elimination of others, and his attempts to connect with the concerns of the ordinary Americans can be pretty awkward.  At one point in Tuesday’s speech, he directed the audience to Amazon.com, where he said voters can find a full-color version of his policy platform designed for the Kindle. “I don’t know if it’s free or not,” he said. “I hope so.” (Charging the middle class to read his plan for saving it would be a novel business tactic, but thankfully, you can read the document free of charge.)
-
-During the first phase of the presidential campaign, Romney was the putative front-runner, and his top priority sometimes seemed to be proving that he was just a regular dude, albeit a very rich one. Now he has some competition of his own. In recent weeks, he’s been dislodged from the top spot in several polls by Texas Governor Rick Perry, setting up what many analysts argue will be an arduous two-man race.
-
-Perry’s camp was quick to pounce on the speech. “As Governor of Massachusetts, Mitt Romney failed to create a pro-jobs environment and failed to institute many of the reforms he now claims to support,” Perry spokesman Mark Miner said in a statement Tuesday. Ben LaBolt, Obama’s 2012 press secretary, said Romney’s plan paid lip service to protecting the middle class, but would instead “tip the scales against hard-working Americans.”
-
-Romney calls his a “practical” approach developed through his decades of experience in competitive markets, rather than theory cribbed from the halls of academia. And yet, he had help from a roster of brainy policy advisers, including Jim Talent, a former Republican Senator from Missouri; Greg Mankiw, a Harvard professor and former chief of George W. Bush’s Council of Economic Advisers; and Mankiw’s successor at Bush’s CEA, Glenn Hubbard, a Columbia professor. The presidential brain trust and Tuesday’s slick economic presentation are characteristic of Romney’s campaign style: He’s always been good at looking the part.
-
-
-
-
-President Barack Obama unveiled his vision for immigration reform in a speech on Tuesday afternoon in Las Vegas, Nev., telling Congress that he will send them his own bill and call for a vote if they don't move fast.
-"If Congress is unable to move forward in a timely fashion, I will send up a bill based on my proposal and insist that they vote on it right away," Obama said to applause from students at Del Sol High School.
-"It looks like there's a genuine desire to get this done soon, and that's very encouraging," Obama said, mentioning a blueprint put forward by a bipartisan group of eight senators on Monday. "But this time action must follow."
-Obama's speech was the latest move in a chess match between the White House and some Republicans in Congress to craft an outline for reform that can both be enacted into law while meeting the expectataions of the growing population of Hispanic voters who now overwhelmingly favor Democrats.
-Some Republicans want to support immigration reform in part to combat the party's demographic challenges, but the more involved the president is with the bill, the politically riskier it becomes to support it.
-In his speech, Obama laid out "markers" for reform, saying any comprehensive immigration bill must give most of the nation's 11 million illegal immigrants a chance to earn their citizenship gradually if they pay a fine, learn English and pass a background check. Immigrants would also have to get to "the back of the line," which means people who have already applied for green cards would have their applications processed first.
-The president's bill would also include an employment verification system, more border security and a revamping of the legal immigration system to provide more visas for top graduates of U.S. universities and to reduce lengthy wait times for visas for relatives of U.S. citizens.
-The president mentioned the blueprint for reform laid out by senators including rising Republican star Marco Rubio of Florida and John McCain of Arizona, Obama's 2008 GOP presidential rival.
-The principles of that outline "are very much in line with the principles I’ve proposed and campaigned on for the last few years," Obama said.
-The senators pre-empted Obama's speech by a day to release a blueprint that differs from Obama's earlier immigration proposal in some respects.
-Both Obama and the senators agree that the nation's illegal immigrants should be given a chance to legalize and eventually become citizens if they meet certain conditions, but the senators' bill includes a spate of border security requirements that must go into effect before the immigrants are eligible for green cards. Rubio said on Tuesday that he will not sign onto a bill that does not include these border enforcement triggers.
-Another potential difference between the plans is that the president believes same-sex partners should be able to sponsor their immigrant husband or wife for citizenship in the same way heterosexual married couples can do now. The Senate proposal does not mention same-sex couples.
-Obama said he recognized that immigration is an issue that inflames "passions," but he called on Americans to remember that they belong to a nation of immigrants.
-"It's easy sometimes for the discussion to take on a feeling of 'us' versus 'them,'" Obama said. "When that happens a lot of folks forget that most of us used to be them. ... Unless you’re one of the first Americans, a Native American, you came from some place else. Somebody brought you."
-Welcoming immigrants has made the country stronger, he said. "That's how we will ensure this century is the same as the last, an American century, welcoming of everybody who aspires to do something more, is willing to work hard for it, is willing to pledge allegiance to our flag."
-Leaders in the Republican-controlled House have not yet released a significant blueprint or proposal for immigration reform. In response to the speech, a spokesman for House Speaker John Boehner urged the president to keep his distance while Congress undergoes what will likely be a lengthy legislative process to reach a final bill addressing immigration reform.
-“There are a lot of ideas about how best to fix our broken immigration system. Any solution should be a bipartisan one, and we hope the president is careful not to drag the debate to the left and ultimately disrupt the difficult work that is ahead in the House and Senate," said Boehner spokesman Brendan Buck in a statement.
-McCain said in a statement after Obama's speech that despite the "differences" in their approaches, he is "cautiously optimistic" that a bill will go forward.
-Immigrant groups and labor organizations are rallying behind the new push for reform. AFL-CIO President Richard Trumka told Yahoo News on Tuesday that organized labor is “entirely behind” comprehensive immigration reform and will mount a “full-fledged” campaign to help drive it through Congress.
-
-
-A conservative pro-immigration reform group has issued talking points to Republican lawmakers, telling them to avoid referring to the U.S. citizen children of illegal immigrants as "anchor babies" or calling for the construction of an "electric fence" on the border, among other things.
-The talking points, published by BuzzFeed, went out to Republican lawmakers on the Hill as momentum builds for an immigration bill that would legalize most of the country's 11 million illegal immigrants. The memo urges lawmakers to call them "undocumented immigrants" and to avoid terms such as "aliens" or "illegals," which are seen as offensive and dehumanizing. Another phrase to avoid? "Send them all back."
-"Conservatives get a bad rap when it comes to immigration reform because of a few people who say things that can be taken to be offensive," said Jennifer Korn, executive director of the Hispanic Leadership Network, the center-right group that sent the talking points on Monday. "It all means the same thing, but the way you say it matters."
-Korn worked in the White House when President George W. Bush attempted to get immigration reform passed in his second term. Two bills—one in 2006, the other in 2007—died after a vocal grass-roots movement emerged in opposition to what it called "amnesty" for illegal immigrants. The amnesty tag stuck, even though both bills would have required any applicant to go through a lengthy legalization process that required him or her to meet certain requirements, like paying back taxes and a fine and learning English. Lawmakers received thousands of phone calls about the bill, Korn remembers, almost all of them strongly against reform.
-Korn hopes theses talking points will help avoid the "pitfalls" she saw then.
-"Right now what's really giving me heartburn is people saying 'pathway to citizenship,'" she said. "It's not a pathway to citizenship. It's 'earned legal status.' If you want conservative support you have to explain what it is so there's not this knee-jerk reaction of 'No amnesty!'"
-Sen. Marco Rubio, a Republican from Florida who's part of a bipartisan group of senators pushing for immigration reform, has used "earned residency" at times in interviews with conservative talk show hosts to describe what immigration reform would provide to qualifying illegal immigrants. Democrats, including Obama, often use "pathway to citizenship" to describe the bill.
-Snow squalls, high winds and slippery roads led to a chain-reaction of crashes on a mile-long stretch of an interstate in Detroit Thursday, leaving at least three people dead and 20 injured.
-Michigan State Police Lt. Michael Shaw said visibility was poor when the mass of crashes happened on Interstate 75 on the southwest side of the city. The injured, including children, have been taken to hospitals, Shaw said.
-SUVs with smashed front ends and cars with doors hanging open sat scattered across the debris-littered highway, some crunched against jackknifed tractor-trailers and tankers.
-Motorists and passengers who were able to a get out of their vehicles huddled together on the side of the road, some visibly distraught, others looking dazed. A man and woman hugged under the gray, cloud-filled skies, a pair of suitcases next to them and a bumper on the ground behind.
-"We're not sure of the cause," Shaw told The Associated Press. "Some witnesses said there were white-out conditions."
-More than two dozen vehicles were involved in the pileups and scores of cars and trucks not involved in crashes were stuck on the freeway behind. Shaw said it could be hours before the freeway reopened.
-Greg Galuszka was driving a fuel truck along I-75 when white-out conditions quickly materialized.
-"I looked on my driver's side mirror, and I could see the trucks piling up back there," Galuszka said, pointing to a mass of twisted metal where vehicles had smashed into each other a short time earlier.
-"Then, when I looked in my passenger side (mirror), is when I saw the steel hauler coming up," he said. "I just said my prayers from there and said, 'Please don't hit me.'"
-Shaw said many people had to be pulled from their vehicles. Numerous fire engines and ambulances were at the scene.
-The crash happened as a wave of snow and strong blustery winds reduced visibility across southeastern Michigan, said Bryan Tilley, a meteorologist with the National Weather Service in Oakland County's White Lake Township.
-"There was a pattern of snow showers moving through the area in the midmorning hours," Tilley said. Nearby Detroit Metropolitan Airport had west winds at 20 miles per hour, with gusts to 33 mph around the time of the crash. The temperature of 24 degrees was about 30 degrees colder than a day before.
-The crash happened near an elevated stretch of expressway where the road surface can cool quickly and make driving hazardous, Tilley said.
-A person claiming to be a pastor apparently tried to stiff a waiter on a tip, explaining that their work for God absolved them of having to leave one.
-A photo of the receipt, posted to Reddit.com, shows a bill for $34.93 that included an automatic 18 percent gratuity ($6.29) above a blank space for an additional tip.
-"I give God 10%," the diner wrote on the receipt, scratching out the automatic tip. "Why do you get 18?" The person then wrote "Pastor" above their signature, and an emphatic "0" where the additional tip would be.
-The Reddit user who submitted the image explained in the comments section that the receipt was part of a total bill of over $200 for a party of 20, which is why the gratuity was automatically added.
-“Parties up to eight ... may tip whatever they’d like, but larger parties receive an automatic gratuity," the server wrote. "It’s in the computer, it’s not something I do.”
-The server added: “They had no problem with my service, and told me I was great. They just didn’t want to pay when the time came.”
-Scribbling notes on receipts has become something of a trend. Earlier this month, the manager of a North Carolina Red Robin surprised an overdue pregnant woman by comping her meal.
-“Once seated, a manager came up to us and started talking,” the woman's husband told Consumerist. “He was extremely friendly and jokingly asked my wife if this was her last meal before heading to the hospital."
-When the check came, a note from the manager next to her portion of the bill read: "MOM 2 BEE GOOD LUC."
-Barack Obama has advanced to his highest personal popularity since his first year in office, and Americans who've formed an opinion of his second inaugural address last week broadly approve of it, the latest ABC News/Washington Post poll finds.
-At the same time, Obama's favorability rating is lower than that of two of the last three re-elected presidents as they started their second terms, Bill Clinton and Ronald Reagan. He's in better shape compared with the third, George W. Bush.
-See PDF with full results, charts and tables here.
-Sixty percent of Americans now express a favorable opinion of Obama overall, up 10 points since last summer, in the heat of the presidential race. His popularity peaked at a remarkable 79 percent days before he took office four years ago, and last saw the 60s in November 2009.
-Obama's approval rating for his inaugural address last week is lower - 51 percent approve in this poll, produced for ABC by Langer Research Associates, but just 24 percent disapprove, a 2-1 ratio in favor of the speech. A quarter of Americans have no opinion of it either way.
-Favorability - which differs from job approval - is the most basic rating of a public figure's personal popularity. Obama's exceeds Bush's at the start of his second term by 5 percentage points, but trails Clinton's by 5 and Reagan's by 12.
-Intensity of sentiment is a plus for Obama: More have a "strongly" favorable opinion of him than a strongly unfavorable one, 39 vs. 26 percent, and twice as many strongly approve of his inaugural speech as disapprove. It's the first time he's been significantly more strongly popular than unpopular since early 2010.
-GROUPS - The president continues to be highly popular within his own party, with 92 percent favorability. Notably, 60 percent of independents see him favorably vs. 36 percent unfavorably, his best since his first year in office. He remains unpopular, however, with 80 percent of Republicans.
-Similarly, 87 percent of liberals and 68 percent of moderates view the president positively, dropping to 34 percent of conservatives overall and just a quarter of strong conservatives.
-In other groups, Obama's more popular among women than men by 9 points. And he's rated favorably by 87 percent of nonwhites, two-thirds of young adults and two-thirds of those in the lower- to middle-income brackets. By contrast, his favorability drops to 45 percent among whites - a group he lost to Mitt Romney by 20 points - and 47 percent of those with household incomes more than $100,000 a year.
-The president's inaugural speech - peppered with messages appealing to his core supporters - hit home with broad majorities of Democrats, liberals and nonwhites, as well as majorities of young adults, women, moderates and lower- to middle-income Americans.
-Though not majorities, significantly more approve than disapprove of Obama's address among a variety of other groups, including political independents. Whites and "somewhat" conservatives split more evenly, while "very" conservatives and Republicans disapprove by wide margins.
-METHODOLOGY - This ABC News/Washington Post poll was conducted by landline and cell phone Jan. 23-27, 2013, among a random national sample of 1,022 adults. Results have a margin of sampling error of 3.5 points. The survey was produced for ABC News by Langer Research Associates of New York, N.Y., with sampling, data collection and tabulation by SSRS/Social Science Research Solutions of Media, Pa.
+CONTENT DELETED

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/5325bf86/library/src/test/resources/SocketInputOperatorTest.txt
----------------------------------------------------------------------
diff --git a/library/src/test/resources/SocketInputOperatorTest.txt b/library/src/test/resources/SocketInputOperatorTest.txt
index 1a3cdd8..319c661 100644
--- a/library/src/test/resources/SocketInputOperatorTest.txt
+++ b/library/src/test/resources/SocketInputOperatorTest.txt
@@ -1,8 +1 @@
-We hd previously reported that Blue Apron was raising $30 million on the $500 million valuation that had been reported by Fortune, but those numbers seem to be preliminary. Other sources have said that cofounder Matt Salzberg was looking for a $500 million valuation for this round, though he has apparently settled for a touch less. The exchange, which will allow mobile publishers to run ads from multiple ad networks and ad buyers, addresses each of those issues, Jaffer argued.
-On ad quality, Vungle will only serve high-resolution videos of 15 seconds or fewer. On latency, the company says it serves the ads “in less time than it takes the human eye to blink.” To address brand safety, the exchange will give advertisers control over where their ads can run, and it has also been built to support new video standards and formats that emerge. Lastly, the company says its algorithms can optimize the mix between app install ads and brand ads.
-Many of the world's largest and fastest-growing organizations including Facebook, Google, Adobe, Alcatel Lucent and Zappos rely on MySQL to save time and money powering their high-volume Web sites, business-critical systems and packaged software.
-Below you will find valuable resources including case studies and white papers that will help you implement cost-effective database solutions using MySQL.
-We hd previously reported that Blue Apron was raising $30 million on the $500 million valuation that had been reported by Fortune, but those numbers seem to be preliminary. Other sources have said that cofounder Matt Salzberg was looking for a $500 million valuation for this round, though he has apparently settled for a touch less. The exchange, which will allow mobile publishers to run ads from multiple ad networks and ad buyers, addresses each of those issues, Jaffer argued.
-On ad quality, Vungle will only serve high-resolution videos of 15 seconds or fewer. On latency, the company says it serves the ads “in less time than it takes the human eye to blink.” To address brand safety, the exchange will give advertisers control over where their ads can run, and it has also been built to support new video standards and formats that emerge. Lastly, the company says its algorithms can optimize the mix between app install ads and brand ads.
-Many of the world's largest and fastest-growing organizations including Facebook, Google, Adobe, Alcatel Lucent and Zappos rely on MySQL to save time and money powering their high-volume Web sites, business-critical systems and packaged software.
-Below you will find valuable resources including case studies and white papers that will help you implement cost-effective database solutions using MySQL.
\ No newline at end of file
+Malhar repository contains open source operator and codec library that can be used with the Apache Apex (incubating) platform to build Realtime streaming applications. In addition to the library there are benchmark, contrib, demos, webdemos and samples folders available. Demos contain demo applications built using the library operators. Webdemos contain webpages for the demos. Benchmark contains performance testing applications. Contrib contains additional operators that interface with third party softwares. Samples contain some sample code that shows how to use the library operators.


[02/22] incubator-apex-malhar git commit: NOTICE original developer

Posted by th...@apache.org.
NOTICE original developer


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/43589020
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/43589020
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/43589020

Branch: refs/heads/devel-3
Commit: 43589020f5d6d4dc0544ef85c62cd33c11d5e0fc
Parents: 02f48e1
Author: Thomas Weise <th...@datatorrent.com>
Authored: Wed Nov 4 22:37:27 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:13:12 2015 -0800

----------------------------------------------------------------------
 NOTICE                                                   | 3 ++-
 benchmark/src/main/appended-resources/META-INF/NOTICE.vm | 3 +++
 contrib/src/main/appended-resources/META-INF/NOTICE.vm   | 3 +++
 library/src/main/appended-resources/META-INF/NOTICE.vm   | 3 +++
 4 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/43589020/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index eef5e86..d0f6855 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,9 +1,10 @@
-Apache Apex
+Apache Apex (incubating)
 Copyright (c) 2015 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
+
 The initial developer of the original code is
 DataTorrent, Inc. (http://www.datatorrent.com)
 Copyright (c) 2012 - 2015. All Rights Reserved.

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/43589020/benchmark/src/main/appended-resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/benchmark/src/main/appended-resources/META-INF/NOTICE.vm b/benchmark/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..7edf492
--- /dev/null
+++ b/benchmark/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,3 @@
+#if($project.properties.postNoticeText)
+$project.properties.postNoticeText
+#end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/43589020/contrib/src/main/appended-resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/contrib/src/main/appended-resources/META-INF/NOTICE.vm b/contrib/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..7edf492
--- /dev/null
+++ b/contrib/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,3 @@
+#if($project.properties.postNoticeText)
+$project.properties.postNoticeText
+#end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/43589020/library/src/main/appended-resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/library/src/main/appended-resources/META-INF/NOTICE.vm b/library/src/main/appended-resources/META-INF/NOTICE.vm
new file mode 100644
index 0000000..7edf492
--- /dev/null
+++ b/library/src/main/appended-resources/META-INF/NOTICE.vm
@@ -0,0 +1,3 @@
+#if($project.properties.postNoticeText)
+$project.properties.postNoticeText
+#end
\ No newline at end of file


[22/22] incubator-apex-malhar git commit: Using DataTorrent rss feed for test, #comment MLHR-1899

Posted by th...@apache.org.
Using DataTorrent rss feed for test, #comment MLHR-1899


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/90d5774f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/90d5774f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/90d5774f

Branch: refs/heads/devel-3
Commit: 90d5774ff0b9f50b0d7198dcbaa3463d270f7f52
Parents: 5325bf8
Author: Pramod Immaneni <pr...@datatorrent.com>
Authored: Wed Nov 11 16:26:10 2015 -0800
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Wed Nov 11 18:16:03 2015 -0800

----------------------------------------------------------------------
 .../RomeSyndicationOperatorTest.java            |   32 +-
 .../romesyndication/datatorrent_feed.rss        |  894 ++++++++++++++
 .../datatorrent_feed_updated.rss                | 1134 ++++++++++++++++++
 3 files changed, 2043 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/90d5774f/contrib/src/test/java/com/datatorrent/contrib/romesyndication/RomeSyndicationOperatorTest.java
----------------------------------------------------------------------
diff --git a/contrib/src/test/java/com/datatorrent/contrib/romesyndication/RomeSyndicationOperatorTest.java b/contrib/src/test/java/com/datatorrent/contrib/romesyndication/RomeSyndicationOperatorTest.java
index 7dde42b..6701908 100644
--- a/contrib/src/test/java/com/datatorrent/contrib/romesyndication/RomeSyndicationOperatorTest.java
+++ b/contrib/src/test/java/com/datatorrent/contrib/romesyndication/RomeSyndicationOperatorTest.java
@@ -18,17 +18,10 @@
  */
 package com.datatorrent.contrib.romesyndication;
 
-import com.datatorrent.contrib.romesyndication.RomeFeedEntry;
-import com.datatorrent.contrib.romesyndication.RomeStreamProvider;
-import com.datatorrent.contrib.romesyndication.RomeSyndicationOperator;
-import com.datatorrent.common.util.BaseOperator;
 import com.datatorrent.api.DAG;
 import com.datatorrent.api.DefaultInputPort;
 import com.datatorrent.api.LocalMode;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
+import com.datatorrent.common.util.BaseOperator;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -38,6 +31,11 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  *
  */
@@ -101,11 +99,11 @@ public class RomeSyndicationOperatorTest
     {
       InputStream is;
       if (index == 0) {
-        is = getClass().getResourceAsStream("/com/datatorrent/contrib/romesyndication/cnn_topstories.rss");
+        is = getClass().getResourceAsStream("/com/datatorrent/contrib/romesyndication/datatorrent_feed.rss");
         ++index;
       }
       else {
-        is = getClass().getResourceAsStream("/com/datatorrent/contrib/romesyndication/cnn_topstories_updated.rss");
+        is = getClass().getResourceAsStream("/com/datatorrent/contrib/romesyndication/datatorrent_feed_updated.rss");
       }
       return is;
     }
@@ -132,16 +130,16 @@ public class RomeSyndicationOperatorTest
       LocalMode.Controller lc = lma.getController();
       lc.setHeartbeatMonitoringEnabled(false);
       lc.run(10000);
-      Assert.assertEquals("Entries size", entries.size(), 81);
+      Assert.assertEquals("Entries size", entries.size(), 10);
       // Check first entry
-      Assert.assertEquals("First entry title", entries.get(0).getSyndEntry().getTitle(), "Our favorite surprise homecomings");
-      Assert.assertEquals("First entry URI", entries.get(0).getSyndEntry().getUri(), "http://www.cnn.com/video/#/video/us/2012/09/21/soldier-surprises-daughter-maine.wabi");
+      Assert.assertEquals("First entry title", entries.get(0).getSyndEntry().getTitle(), "Dimensions Computation (Aggregate Navigator) Part 1: Intro");
+      Assert.assertEquals("First entry URI", entries.get(0).getSyndEntry().getUri(), "https://www.datatorrent.com/?p=2399");
       // Check first entry from second run
-      Assert.assertEquals("Second run first entry title", entries.get(74).getSyndEntry().getTitle(), "Watch chimney deliver the news");
-      Assert.assertEquals("Second run first entry URI", entries.get(74).getSyndEntry().getUri(), "http://www.cnn.com/video/#/video/world/2013/03/13/nr-white-smoke-means-new-pope.cnn");
+      Assert.assertEquals("Second run first entry title", entries.get(7).getSyndEntry().getTitle(), "Building Applications with Apache Apex and Malhar");
+      Assert.assertEquals("Second run first entry URI", entries.get(7).getSyndEntry().getUri(), "https://www.datatorrent.com/?p=2054");
       // Check last entry
-      Assert.assertEquals("Last entry title", entries.get(80).getSyndEntry().getTitle(), "How the smoke process works");
-      Assert.assertEquals("Last entry URI", entries.get(80).getSyndEntry().getUri(), "http://www.cnn.com/2013/03/12/world/europe/vatican-chapel-stove/index.html");
+      Assert.assertEquals("Last entry title", entries.get(9).getSyndEntry().getTitle(), "Dimensions Computation (Aggregate Navigator) Part 2: Implementation");
+      Assert.assertEquals("Last entry URI", entries.get(9).getSyndEntry().getUri(), "https://www.datatorrent.com/?p=2401");
     }
     catch (Exception ex) {
       logger.error(ex.getMessage());


[11/22] incubator-apex-malhar git commit: Cleanup of web resources

Posted by th...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/9d4baef2/contrib/src/main/html/adsdimension/malhar.css
----------------------------------------------------------------------
diff --git a/contrib/src/main/html/adsdimension/malhar.css b/contrib/src/main/html/adsdimension/malhar.css
deleted file mode 100644
index 175e219..0000000
--- a/contrib/src/main/html/adsdimension/malhar.css
+++ /dev/null
@@ -1,4688 +0,0 @@
-/**
- * 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.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 30px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  /* Responsive images (ensure images don't scale beyond their parents) */
-
-  max-width: 100%;
-  /* Part 1: Set a maxium relative to the parent */
-
-  width: auto\9;
-  /* IE7-8 need help adjusting responsive images */
-
-  height: auto;
-  /* Part 2: Scale the height according to the width, otherwise you get stretching */
-
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-#map_canvas img,
-.google-maps img {
-  max-width: none;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-label,
-select,
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"],
-input[type="radio"],
-input[type="checkbox"] {
-  cursor: pointer;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-@media print {
-  * {
-    text-shadow: none !important;
-    color: #000 !important;
-    background: transparent !important;
-    box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  .ir a:after,
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  @page  {
-    margin: 0.5cm;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 20px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #005580;
-  text-decoration: underline;
-}
-.img-rounded {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.img-polaroid {
-  padding: 4px;
-  background-color: #fff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-.img-circle {
-  -webkit-border-radius: 500px;
-  -moz-border-radius: 500px;
-  border-radius: 500px;
-}
-/*@import "bootstrap/grid.less";*/
-/*@import "bootstrap/layouts.less";*/
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  font-weight: 200;
-  line-height: 30px;
-}
-small {
-  font-size: 85%;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-cite {
-  font-style: normal;
-}
-.muted {
-  color: #999999;
-}
-a.muted:hover,
-a.muted:focus {
-  color: #808080;
-}
-.text-warning {
-  color: #c09853;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #a47e3c;
-}
-.text-error {
-  color: #b94a48;
-}
-a.text-error:hover,
-a.text-error:focus {
-  color: #953b39;
-}
-.text-info {
-  color: #3a87ad;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #2d6987;
-}
-.text-success {
-  color: #468847;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #356635;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 10px 0;
-  font-family: inherit;
-  font-weight: bold;
-  line-height: 20px;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  line-height: 1;
-  color: #999999;
-}
-h1,
-h2,
-h3 {
-  line-height: 40px;
-}
-h1 {
-  font-size: 35.75px;
-}
-h2 {
-  font-size: 29.25px;
-}
-h3 {
-  font-size: 22.75px;
-}
-h4 {
-  font-size: 16.25px;
-}
-h5 {
-  font-size: 13px;
-}
-h6 {
-  font-size: 11.049999999999999px;
-}
-h1 small {
-  font-size: 22.75px;
-}
-h2 small {
-  font-size: 16.25px;
-}
-h3 small {
-  font-size: 13px;
-}
-h4 small {
-  font-size: 13px;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 20px 0 30px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 10px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-li {
-  line-height: 20px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline,
-ol.inline {
-  margin-left: 0;
-  list-style: none;
-}
-ul.inline > li,
-ol.inline > li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 20px;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 10px;
-}
-.dl-horizontal {
-  *zoom: 1;
-}
-.dl-horizontal:before,
-.dl-horizontal:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.dl-horizontal:after {
-  clear: both;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 160px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 180px;
-}
-hr {
-  margin: 20px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #999999;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 20px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16.25px;
-  font-weight: 300;
-  line-height: 1.25;
-}
-blockquote small {
-  display: block;
-  line-height: 20px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-blockquote.pull-right small:before {
-  content: '';
-}
-blockquote.pull-right small:after {
-  content: '\00A0 \2014';
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 20px;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
-  font-size: 11px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-  white-space: nowrap;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 12px;
-  line-height: 20px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 20px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-form {
-  margin: 0 0 20px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 19.5px;
-  line-height: 40px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-legend small {
-  font-size: 15px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-}
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  display: inline-block;
-  height: 20px;
-  padding: 4px 6px;
-  margin-bottom: 10px;
-  font-size: 13px;
-  line-height: 20px;
-  color: #555555;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  vertical-align: middle;
-}
-input,
-textarea,
-.uneditable-input {
-  width: 206px;
-}
-textarea {
-  height: auto;
-}
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear .2s, box-shadow linear .2s;
-  -moz-transition: border linear .2s, box-shadow linear .2s;
-  -o-transition: border linear .2s, box-shadow linear .2s;
-  transition: border linear .2s, box-shadow linear .2s;
-}
-textarea:focus,
-input[type="text"]:focus,
-input[type="password"]:focus,
-input[type="datetime"]:focus,
-input[type="datetime-local"]:focus,
-input[type="date"]:focus,
-input[type="month"]:focus,
-input[type="time"]:focus,
-input[type="week"]:focus,
-input[type="number"]:focus,
-input[type="email"]:focus,
-input[type="url"]:focus,
-input[type="search"]:focus,
-input[type="tel"]:focus,
-input[type="color"]:focus,
-.uneditable-input:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  margin-top: 1px \9;
-  /* IE8-9 */
-
-  line-height: normal;
-}
-input[type="file"],
-input[type="image"],
-input[type="submit"],
-input[type="reset"],
-input[type="button"],
-input[type="radio"],
-input[type="checkbox"] {
-  width: auto;
-}
-select,
-input[type="file"] {
-  height: 30px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 30px;
-}
-select {
-  width: 220px;
-  border: 1px solid #cccccc;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-select:focus,
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.uneditable-input,
-.uneditable-textarea {
-  color: #999999;
-  background-color: #fcfcfc;
-  border-color: #cccccc;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-input:-moz-placeholder,
-textarea:-moz-placeholder {
-  color: #999999;
-}
-input:-ms-input-placeholder,
-textarea:-ms-input-placeholder {
-  color: #999999;
-}
-input::-webkit-input-placeholder,
-textarea::-webkit-input-placeholder {
-  color: #999999;
-}
-.radio,
-.checkbox {
-  min-height: 20px;
-  padding-left: 20px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -20px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-.input-append input[class*="span"],
-.input-append .uneditable-input[class*="span"],
-.input-prepend input[class*="span"],
-.input-prepend .uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"],
-.row-fluid .input-prepend [class*="span"],
-.row-fluid .input-append [class*="span"] {
-  display: inline-block;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-.controls-row [class*="span"] + [class*="span"] {
-  margin-left: 20px;
-}
-input.span12,
-textarea.span12,
-.uneditable-input.span12 {
-  width: 926px;
-}
-input.span11,
-textarea.span11,
-.uneditable-input.span11 {
-  width: 846px;
-}
-input.span10,
-textarea.span10,
-.uneditable-input.span10 {
-  width: 766px;
-}
-input.span9,
-textarea.span9,
-.uneditable-input.span9 {
-  width: 686px;
-}
-input.span8,
-textarea.span8,
-.uneditable-input.span8 {
-  width: 606px;
-}
-input.span7,
-textarea.span7,
-.uneditable-input.span7 {
-  width: 526px;
-}
-input.span6,
-textarea.span6,
-.uneditable-input.span6 {
-  width: 446px;
-}
-input.span5,
-textarea.span5,
-.uneditable-input.span5 {
-  width: 366px;
-}
-input.span4,
-textarea.span4,
-.uneditable-input.span4 {
-  width: 286px;
-}
-input.span3,
-textarea.span3,
-.uneditable-input.span3 {
-  width: 206px;
-}
-input.span2,
-textarea.span2,
-.uneditable-input.span2 {
-  width: 126px;
-}
-input.span1,
-textarea.span1,
-.uneditable-input.span1 {
-  width: 46px;
-}
-.controls-row {
-  *zoom: 1;
-}
-.controls-row:before,
-.controls-row:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.controls-row:after {
-  clear: both;
-}
-.controls-row [class*="span"],
-.row-fluid .controls-row [class*="span"] {
-  float: left;
-}
-.controls-row .checkbox[class*="span"],
-.controls-row .radio[class*="span"] {
-  padding-top: 5px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning .control-label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning .checkbox,
-.control-group.warning .radio,
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  border-color: #c09853;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error .control-label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error .checkbox,
-.control-group.error .radio,
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  border-color: #b94a48;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success .control-label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success .checkbox,
-.control-group.success .radio,
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  border-color: #468847;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-.control-group.info .control-label,
-.control-group.info .help-block,
-.control-group.info .help-inline {
-  color: #3a87ad;
-}
-.control-group.info .checkbox,
-.control-group.info .radio,
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  color: #3a87ad;
-}
-.control-group.info input,
-.control-group.info select,
-.control-group.info textarea {
-  border-color: #3a87ad;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.control-group.info input:focus,
-.control-group.info select:focus,
-.control-group.info textarea:focus {
-  border-color: #2d6987;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
-}
-.control-group.info .input-prepend .add-on,
-.control-group.info .input-append .add-on {
-  color: #3a87ad;
-  background-color: #d9edf7;
-  border-color: #3a87ad;
-}
-input:focus:invalid,
-textarea:focus:invalid,
-select:focus:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:invalid:focus,
-textarea:focus:invalid:focus,
-select:focus:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 19px 20px 20px;
-  margin-top: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #e5e5e5;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-actions:after {
-  clear: both;
-}
-.help-block,
-.help-inline {
-  color: #595959;
-}
-.help-block {
-  display: block;
-  margin-bottom: 10px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-append,
-.input-prepend {
-  display: inline-block;
-  margin-bottom: 10px;
-  vertical-align: middle;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input,
-.input-append .dropdown-menu,
-.input-prepend .dropdown-menu,
-.input-append .popover,
-.input-prepend .popover {
-  font-size: 13px;
-}
-.input-append input,
-.input-prepend input,
-.input-append select,
-.input-prepend select,
-.input-append .uneditable-input,
-.input-prepend .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: top;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append input:focus,
-.input-prepend input:focus,
-.input-append select:focus,
-.input-prepend select:focus,
-.input-append .uneditable-input:focus,
-.input-prepend .uneditable-input:focus {
-  z-index: 2;
-}
-.input-append .add-on,
-.input-prepend .add-on {
-  display: inline-block;
-  width: auto;
-  height: 20px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 20px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-append .add-on,
-.input-prepend .add-on,
-.input-append .btn,
-.input-prepend .btn,
-.input-append .btn-group > .dropdown-toggle,
-.input-prepend .btn-group > .dropdown-toggle {
-  vertical-align: top;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-append .active,
-.input-prepend .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-append input + .btn-group .btn:last-child,
-.input-append select + .btn-group .btn:last-child,
-.input-append .uneditable-input + .btn-group .btn:last-child {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-append .add-on,
-.input-append .btn,
-.input-append .btn-group {
-  margin-left: -1px;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child,
-.input-append .btn-group:last-child > .dropdown-toggle {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append input + .btn-group .btn,
-.input-prepend.input-append select + .btn-group .btn,
-.input-prepend.input-append .uneditable-input + .btn-group .btn {
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.input-prepend.input-append .btn-group:first-child {
-  margin-left: 0;
-}
-input.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-/* Allow for input prepend/append in search forms */
-.form-search .input-append .search-query,
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.form-search .input-append .search-query {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search .input-append .btn {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .search-query {
-  -webkit-border-radius: 0 14px 14px 0;
-  -moz-border-radius: 0 14px 14px 0;
-  border-radius: 0 14px 14px 0;
-}
-.form-search .input-prepend .btn {
-  -webkit-border-radius: 14px 0 0 14px;
-  -moz-border-radius: 14px 0 0 14px;
-  border-radius: 14px 0 0 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label,
-.form-search .btn-group,
-.form-inline .btn-group {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 10px;
-}
-legend + .control-group {
-  margin-top: 20px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 20px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 160px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 180px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 180px;
-}
-.form-horizontal .help-block {
-  margin-bottom: 0;
-}
-.form-horizontal input + .help-block,
-.form-horizontal select + .help-block,
-.form-horizontal textarea + .help-block,
-.form-horizontal .uneditable-input + .help-block,
-.form-horizontal .input-prepend + .help-block,
-.form-horizontal .input-append + .help-block {
-  margin-top: 10px;
-}
-.form-horizontal .form-actions {
-  padding-left: 180px;
-}
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 20px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 20px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-.table th {
-  font-weight: bold;
-}
-.table thead th {
-  vertical-align: bottom;
-}
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-.table .table {
-  background-color: #ffffff;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child > th:first-child,
-.table-bordered tbody:first-child tr:first-child > td:first-child,
-.table-bordered tbody:first-child tr:first-child > th:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered thead:first-child tr:first-child > th:last-child,
-.table-bordered tbody:first-child tr:first-child > td:last-child,
-.table-bordered tbody:first-child tr:first-child > th:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:first-child,
-.table-bordered tbody:last-child tr:last-child > td:first-child,
-.table-bordered tbody:last-child tr:last-child > th:first-child,
-.table-bordered tfoot:last-child tr:last-child > td:first-child,
-.table-bordered tfoot:last-child tr:last-child > th:first-child {
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.table-bordered thead:last-child tr:last-child > th:last-child,
-.table-bordered tbody:last-child tr:last-child > td:last-child,
-.table-bordered tbody:last-child tr:last-child > th:last-child,
-.table-bordered tfoot:last-child tr:last-child > td:last-child,
-.table-bordered tfoot:last-child tr:last-child > th:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
-  -webkit-border-bottom-left-radius: 0;
-  -moz-border-radius-bottomleft: 0;
-  border-bottom-left-radius: 0;
-}
-.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 0;
-  -moz-border-radius-bottomright: 0;
-  border-bottom-right-radius: 0;
-}
-.table-bordered caption + thead tr:first-child th:first-child,
-.table-bordered caption + tbody tr:first-child td:first-child,
-.table-bordered colgroup + thead tr:first-child th:first-child,
-.table-bordered colgroup + tbody tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.table-bordered caption + thead tr:first-child th:last-child,
-.table-bordered caption + tbody tr:first-child td:last-child,
-.table-bordered colgroup + thead tr:first-child th:last-child,
-.table-bordered colgroup + tbody tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-}
-.table-striped tbody > tr:nth-child(odd) > td,
-.table-striped tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-.table-hover tbody tr:hover > td,
-.table-hover tbody tr:hover > th {
-  background-color: #f5f5f5;
-}
-table td[class*="span"],
-table th[class*="span"],
-.row-fluid table td[class*="span"],
-.row-fluid table th[class*="span"] {
-  display: table-cell;
-  float: none;
-  margin-left: 0;
-}
-.table td.span1,
-.table th.span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-.table td.span2,
-.table th.span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-.table td.span3,
-.table th.span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-.table td.span4,
-.table th.span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-.table td.span5,
-.table th.span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-.table td.span6,
-.table th.span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-.table td.span7,
-.table th.span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-.table td.span8,
-.table th.span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-.table td.span9,
-.table th.span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-.table td.span10,
-.table th.span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-.table td.span11,
-.table th.span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-.table td.span12,
-.table th.span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-.table tbody tr.success > td {
-  background-color: #dff0d8;
-}
-.table tbody tr.error > td {
-  background-color: #f2dede;
-}
-.table tbody tr.warning > td {
-  background-color: #fcf8e3;
-}
-.table tbody tr.info > td {
-  background-color: #d9edf7;
-}
-.table-hover tbody tr.success:hover > td {
-  background-color: #d0e9c6;
-}
-.table-hover tbody tr.error:hover > td {
-  background-color: #ebcccc;
-}
-.table-hover tbody tr.warning:hover > td {
-  background-color: #faf2cc;
-}
-.table-hover tbody tr.info:hover > td {
-  background-color: #c4e3f3;
-}
-/*@import "bootstrap/sprites.less";*/
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 20px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-submenu:hover > a,
-.dropdown-submenu:focus > a {
-  text-decoration: none;
-  color: #ffffff;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #ffffff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #0081c2;
-  background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
-  background-image: -o-linear-gradient(top, #0088cc, #0077b3);
-  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #999999;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: default;
-}
-.open {
-  *z-index: 1000;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.dropdown-submenu {
-  position: relative;
-}
-.dropdown-submenu > .dropdown-menu {
-  top: 0;
-  left: 100%;
-  margin-top: -6px;
-  margin-left: -1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.dropdown-submenu:hover > .dropdown-menu {
-  display: block;
-}
-.dropup .dropdown-submenu > .dropdown-menu {
-  top: auto;
-  bottom: 0;
-  margin-top: 0;
-  margin-bottom: -2px;
-  -webkit-border-radius: 5px 5px 5px 0;
-  -moz-border-radius: 5px 5px 5px 0;
-  border-radius: 5px 5px 5px 0;
-}
-.dropdown-submenu > a:after {
-  display: block;
-  content: " ";
-  float: right;
-  width: 0;
-  height: 0;
-  border-color: transparent;
-  border-style: solid;
-  border-width: 5px 0 5px 5px;
-  border-left-color: #cccccc;
-  margin-top: 5px;
-  margin-right: -10px;
-}
-.dropdown-submenu:hover > a:after {
-  border-left-color: #ffffff;
-}
-.dropdown-submenu.pull-left {
-  float: none;
-}
-.dropdown-submenu.pull-left > .dropdown-menu {
-  left: -100%;
-  margin-left: 10px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.dropdown .dropdown-menu .nav-header {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-.typeahead {
-  z-index: 1051;
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/*@import "bootstrap/component-animations.less";*/
-/*@import "bootstrap/close.less";*/
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 12px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 20px;
-  text-align: center;
-  vertical-align: middle;
-  cursor: pointer;
-  color: #333333;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:focus,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover,
-.btn:focus {
-  color: #333333;
-  text-decoration: none;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 11px 19px;
-  font-size: 16.25px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn-large [class^="icon-"],
-.btn-large [class*=" icon-"] {
-  margin-top: 4px;
-}
-.btn-small {
-  padding: 2px 10px;
-  font-size: 11.049999999999999px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-small [class^="icon-"],
-.btn-small [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn-mini [class^="icon-"],
-.btn-mini [class*=" icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 0 6px;
-  font-size: 9.75px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0044cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:focus,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled] {
-  background-color: transparent;
-  background-image: none;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-link {
-  border-color: transparent;
-  cursor: pointer;
-  color: #0088cc;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #005580;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-.btn-link[disabled]:focus {
-  color: #333333;
-  text-decoration: none;
-}
-.btn-group {
-  position: relative;
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  font-size: 0;
-  vertical-align: middle;
-  white-space: nowrap;
-  *margin-left: .3em;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  font-size: 0;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.btn-toolbar > .btn + .btn,
-.btn-toolbar > .btn-group + .btn,
-.btn-toolbar > .btn + .btn-group {
-  margin-left: 5px;
-}
-.btn-group > .btn {
-  position: relative;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn + .btn {
-  margin-left: -1px;
-}
-.btn-group > .btn,
-.btn-group > .dropdown-menu,
-.btn-group > .popover {
-  font-size: 13px;
-}
-.btn-group > .btn-mini {
-  font-size: 9.75px;
-}
-.btn-group > .btn-small {
-  font-size: 11.049999999999999px;
-}
-.btn-group > .btn-large {
-  font-size: 16.25px;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group > .btn-mini + .dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-.btn-group > .btn-small + .dropdown-toggle {
-  *padding-top: 5px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large + .dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0044cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 8px;
-  margin-left: 0;
-}
-.btn-large .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.btn-mini .caret,
-.btn-small .caret {
-  margin-top: 8px;
-}
-.dropup .btn-large .caret {
-  border-bottom-width: 5px;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.btn-group-vertical {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group-vertical > .btn {
-  display: block;
-  float: none;
-  max-width: 100%;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group-vertical > .btn + .btn {
-  margin-left: 0;
-  margin-top: -1px;
-}
-.btn-group-vertical > .btn:first-child {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.btn-group-vertical > .btn:last-child {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.btn-group-vertical > .btn-large:first-child {
-  -webkit-border-radius: 6px 6px 0 0;
-  -moz-border-radius: 6px 6px 0 0;
-  border-radius: 6px 6px 0 0;
-}
-.btn-group-vertical > .btn-large:last-child {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 20px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.alert,
-.alert h4 {
-  color: #c09853;
-}
-.alert h4 {
-  margin: 0;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 20px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-success h4 {
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-danger h4,
-.alert-error h4 {
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-info h4 {
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 20px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 20px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover,
-.nav-list > .active > a:focus {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 9px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 20px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover,
-.nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover,
-.nav-tabs > .active > a:focus {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover,
-.nav-pills > .active > a:focus {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover,
-.nav-tabs.nav-stacked > li > a:focus {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.nav .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav .dropdown-toggle:hover .caret,
-.nav .dropdown-toggle:focus .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-/* move down carets for tabs */
-.nav-tabs .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.nav .active .dropdown-toggle .caret {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.nav-tabs .active .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.nav > .dropdown.active > a:hover,
-.nav > .dropdown.active > a:focus {
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover,
-.nav > li.dropdown.open.active > a:focus {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret,
-.nav li.dropdown.open a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover,
-.tabs-stacked .open > a:focus {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover,
-.tabs-below > .nav-tabs > li > a:focus {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover,
-.tabs-below > .nav-tabs > .active > a:focus {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover,
-.tabs-left > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover,
-.tabs-left > .nav-tabs .active > a:focus {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover,
-.tabs-right > .nav-tabs > li > a:focus {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover,
-.tabs-right > .nav-tabs .active > a:focus {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.nav > .disabled > a {
-  color: #999999;
-}
-.nav > .disabled > a:hover,
-.nav > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  cursor: default;
-}
-.navbar {
-  overflow: visible;
-  margin-bottom: 20px;
-  *position: relative;
-  *z-index: 2;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #fafafa;
-  background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
-  background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
-  border: 1px solid #d4d4d4;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
-  *zoom: 1;
-}
-.navbar-inner:before,
-.navbar-inner:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-inner:after {
-  clear: both;
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-  overflow: visible;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 10px 20px 10px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  color: #777777;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .brand:hover,
-.navbar .brand:focus {
-  text-decoration: none;
-}
-.navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #777777;
-}
-.navbar-link {
-  color: #777777;
-}
-.navbar-link:hover,
-.navbar-link:focus {
-  color: #333333;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  margin: 0 9px;
-  border-left: 1px solid #f2f2f2;
-  border-right: 1px solid #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn,
-.navbar .input-prepend .btn,
-.navbar .input-append .btn,
-.navbar .input-prepend .btn-group,
-.navbar .input-append .btn-group {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .btn {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 5px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  margin-bottom: 0;
-  padding: 4px 14px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.navbar-static-top {
-  position: static;
-  margin-bottom: 0;
-}
-.navbar-static-top .navbar-inner {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom .navbar-inner {
-  border-width: 1px 0 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-static-top .navbar-inner {
-  -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 1px 10px rgba(0,0,0,.1);
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar-fixed-bottom .navbar-inner {
-  -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-  box-shadow: 0 -1px 10px rgba(0,0,0,.1);
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-  margin-right: 0;
-}
-.navbar .nav > li {
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 15px 10px;
-  color: #777777;
-  text-decoration: none;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.navbar .nav .dropdown-toggle .caret {
-  margin-top: 8px;
-}
-.navbar .nav > li > a:focus,
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #333333;
-  text-decoration: none;
-}
-.navbar .nav > .active > a,
-.navbar .nav > .active > a:hover,
-.navbar .nav > .active > a:focus {
-  color: #555555;
-  text-decoration: none;
-  background-color: #e5e5e5;
-  -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #ededed;
-  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
-  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
-  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
-  border-color: #e5e5e5 #e5e5e5 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e5e5e5;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:focus,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #e5e5e5;
-  *background-color: #d9d9d9;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #cccccc \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .nav > li > .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .nav > li > .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown > a:hover .caret,
-.navbar .nav li.dropdown > a:focus .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #e5e5e5;
-  color: #555555;
-}
-.navbar .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #777777;
-  border-bottom-color: #777777;
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #555555;
-  border-bottom-color: #555555;
-}
-.navbar .pull-right > li > .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right > li > .dropdown-menu:before,
-.navbar .nav > li > .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right > li > .dropdown-menu:after,
-.navbar .nav > li > .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
-.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
-  left: auto;
-  right: 100%;
-  margin-left: 0;
-  margin-right: -1px;
-  -webkit-border-radius: 6px 0 6px 6px;
-  -moz-border-radius: 6px 0 6px 6px;
-  border-radius: 6px 0 6px 6px;
-}
-.navbar-inverse .navbar-inner {
-  background-color: #1b1b1b;
-  background-image: -moz-linear-gradient(top, #222222, #111111);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
-  background-image: -webkit-linear-gradient(top, #222222, #111111);
-  background-image: -o-linear-gradient(top, #222222, #111111);
-  background-image: linear-gradient(to bottom, #222222, #111111);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
-  border-color: #252525;
-}
-.navbar-inverse .brand,
-.navbar-inverse .nav > li > a {
-  color: #999999;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar-inverse .brand:hover,
-.navbar-inverse .nav > li > a:hover,
-.navbar-inverse .brand:focus,
-.navbar-inverse .nav > li > a:focus {
-  color: #ffffff;
-}
-.navbar-inverse .brand {
-  color: #999999;
-}
-.navbar-inverse .navbar-text {
-  color: #999999;
-}
-.navbar-inverse .nav > li > a:focus,
-.navbar-inverse .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.navbar-inverse .nav .active > a,
-.navbar-inverse .nav .active > a:hover,
-.navbar-inverse .nav .active > a:focus {
-  color: #ffffff;
-  background-color: #111111;
-}
-.navbar-inverse .navbar-link {
-  color: #999999;
-}
-.navbar-inverse .navbar-link:hover,
-.navbar-inverse .navbar-link:focus {
-  color: #ffffff;
-}
-.navbar-inverse .divider-vertical {
-  border-left-color: #111111;
-  border-right-color: #222222;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: #111111;
-  color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > a:hover .caret,
-.navbar-inverse .nav li.dropdown > a:focus .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
-  border-top-color: #999999;
-  border-bottom-color: #999999;
-}
-.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
-.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar-inverse .navbar-search .search-query {
-  color: #ffffff;
-  background-color: #515151;
-  border-color: #111111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-inverse .navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-inverse .navbar-search .search-query:focus,
-.navbar-inverse .navbar-search .search-query.focused {
-  padding: 5px 15px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-inverse .btn-navbar {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e0e0e;
-  background-image: -moz-linear-gradient(top, #151515, #040404);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
-  background-image: -webkit-linear-gradient(top, #151515, #040404);
-  background-image: -o-linear-gradient(top, #151515, #040404);
-  background-image: linear-gradient(to bottom, #151515, #040404);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
-  border-color: #040404 #040404 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #040404;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.navbar-inverse .btn-navbar:hover,
-.navbar-inverse .btn-navbar:focus,
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active,
-.navbar-inverse .btn-navbar.disabled,
-.navbar-inverse .btn-navbar[disabled] {
-  color: #ffffff;
-  background-color: #040404;
-  *background-color: #000000;
-}
-.navbar-inverse .btn-navbar:active,
-.navbar-inverse .btn-navbar.active {
-  background-color: #000000 \9;
-}
-/*@import "bootstrap/breadcrumbs.less";*/
-/*@import "bootstrap/pagination.less";*/
-/*@import "bootstrap/pager.less";*/
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 10%;
-  left: 50%;
-  z-index: 1050;
-  width: 560px;
-  margin-left: -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-  outline: none;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 10%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-header h3 {
-  margin: 0;
-  line-height: 30px;
-}
-.modal-body {
-  position: relative;
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-  line-height: 0;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
-  margin-left: 0;
-}
-/*@import "bootstrap/tooltip.less";*/
-/*@import "bootstrap/popovers.less";*/
-/*@import "bootstrap/thumbnails.less";*/
-/*@import "bootstrap/media.less";*/
-/*@import "bootstrap/labels-badges.less";*/
-/*@import "bootstrap/progress-bars.less";*/
-/*@import "bootstrap/accordion.less";*/
-/*@import "bootstrap/carousel.less";*/
-/*@import "bootstrap/hero-unit.less";*/
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.affix {
-  position: fixed;
-}
-/* http://meyerweb.com/eric/tools/css/reset/ 
-   v2.0 | 20110126
-   License: none (public domain)
-*/
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-

<TRUNCATED>