You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by mu...@apache.org on 2015/07/16 02:37:05 UTC

[1/6] cordova-registry-web git commit: Extend grunt, add more structure, fix bugs

Repository: cordova-registry-web
Updated Branches:
  refs/heads/master a809ee569 -> 676d5b796


http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/css/flexboxgrid.css
----------------------------------------------------------------------
diff --git a/npm-search/src/css/flexboxgrid.css b/npm-search/src/css/flexboxgrid.css
new file mode 100644
index 0000000..68dace4
--- /dev/null
+++ b/npm-search/src/css/flexboxgrid.css
@@ -0,0 +1,1026 @@
+/*
+ * Copyright 2013 Kristofer Joseph
+ *
+ * Licensed 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.
+ */
+
+/*
+ *
+ * Uncomment and set these variables to customize the grid.
+ *
+ * :root {
+ *  --gutter-width: 1rem;
+ *  --outer-margin: 2rem;
+ *  --gutter-compensation: calc( var( --gutter-width / 2 ) * -1 );
+ *  --half-gutter-width: calc( var( --gutter-width / 2 ) );
+ *  --screen-xs-min: 30em;
+ *  --screen-sm-min: 48em;
+ *  --screen-md-min: 62em;
+ *  --screen-lg-min: 75em;
+ *  --container-sm: calc( 45rem + var( --gutter-width ) );
+ *  --container-md: calc( 60rem + var( --gutter-width ) );
+ *  --container-lg: calc( 70rem + var( --gutter-width ) );
+ * }
+ *
+*/
+
+.container-fluid {
+  margin-right: auto;
+  margin-left: auto;
+  padding-right: 2rem;
+  padding-left: 2rem;
+}
+
+.row {
+  box-sizing: border-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-flex: 0 1 auto;
+  -ms-flex: 0 1 auto;
+  flex: 0 1 auto;
+  -webkit-flex-direction: row;
+  -ms-flex-direction: row;
+  flex-direction: row;
+  -webkit-flex-wrap: wrap;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  margin-right: -0.5rem;
+  margin-left: -0.5rem;
+}
+
+.row.reverse {
+  -webkit-flex-direction: row-reverse;
+  -ms-flex-direction: row-reverse;
+  flex-direction: row-reverse;
+}
+
+.col.reverse {
+  -webkit-flex-direction: column-reverse;
+  -ms-flex-direction: column-reverse;
+  flex-direction: column-reverse;
+}
+
+.col-xs,
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12,
+.col-xs-offset-1,
+.col-xs-offset-2,
+.col-xs-offset-3,
+.col-xs-offset-4,
+.col-xs-offset-5,
+.col-xs-offset-6,
+.col-xs-offset-7,
+.col-xs-offset-8,
+.col-xs-offset-9,
+.col-xs-offset-10,
+.col-xs-offset-11,
+.col-xs-offset-12 {
+  box-sizing: border-box;
+  -webkit-flex: 0 0 auto;
+  -ms-flex: 0 0 auto;
+  flex: 0 0 auto;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+}
+
+.col-xs {
+  -webkit-flex-grow: 1;
+  -ms-flex-positive: 1;
+  flex-grow: 1;
+  -webkit-flex-basis: 0;
+  -ms-flex-preferred-size: 0;
+  flex-basis: 0;
+  max-width: 100%;
+}
+
+.col-xs-1 {
+  -webkit-flex-basis: 8.333%;
+  -ms-flex-preferred-size: 8.333%;
+  flex-basis: 8.333%;
+  max-width: 8.333%;
+}
+
+.col-xs-2 {
+  -webkit-flex-basis: 16.667%;
+  -ms-flex-preferred-size: 16.667%;
+  flex-basis: 16.667%;
+  max-width: 16.667%;
+}
+
+.col-xs-3 {
+  -webkit-flex-basis: 25%;
+  -ms-flex-preferred-size: 25%;
+  flex-basis: 25%;
+  max-width: 25%;
+}
+
+.col-xs-4 {
+  -webkit-flex-basis: 33.333%;
+  -ms-flex-preferred-size: 33.333%;
+  flex-basis: 33.333%;
+  max-width: 33.333%;
+}
+
+.col-xs-5 {
+  -webkit-flex-basis: 41.667%;
+  -ms-flex-preferred-size: 41.667%;
+  flex-basis: 41.667%;
+  max-width: 41.667%;
+}
+
+.col-xs-6 {
+  -webkit-flex-basis: 50%;
+  -ms-flex-preferred-size: 50%;
+  flex-basis: 50%;
+  max-width: 50%;
+}
+
+.col-xs-7 {
+  -webkit-flex-basis: 58.333%;
+  -ms-flex-preferred-size: 58.333%;
+  flex-basis: 58.333%;
+  max-width: 58.333%;
+}
+
+.col-xs-8 {
+  -webkit-flex-basis: 66.667%;
+  -ms-flex-preferred-size: 66.667%;
+  flex-basis: 66.667%;
+  max-width: 66.667%;
+}
+
+.col-xs-9 {
+  -webkit-flex-basis: 75%;
+  -ms-flex-preferred-size: 75%;
+  flex-basis: 75%;
+  max-width: 75%;
+}
+
+.col-xs-10 {
+  -webkit-flex-basis: 83.333%;
+  -ms-flex-preferred-size: 83.333%;
+  flex-basis: 83.333%;
+  max-width: 83.333%;
+}
+
+.col-xs-11 {
+  -webkit-flex-basis: 91.667%;
+  -ms-flex-preferred-size: 91.667%;
+  flex-basis: 91.667%;
+  max-width: 91.667%;
+}
+
+.col-xs-12 {
+  -webkit-flex-basis: 100%;
+  -ms-flex-preferred-size: 100%;
+  flex-basis: 100%;
+  max-width: 100%;
+}
+
+.col-xs-offset-1 {
+  margin-left: 8.333%;
+}
+
+.col-xs-offset-2 {
+  margin-left: 16.667%;
+}
+
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+
+.col-xs-offset-4 {
+  margin-left: 33.333%;
+}
+
+.col-xs-offset-5 {
+  margin-left: 41.667%;
+}
+
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+
+.col-xs-offset-7 {
+  margin-left: 58.333%;
+}
+
+.col-xs-offset-8 {
+  margin-left: 66.667%;
+}
+
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+
+.col-xs-offset-10 {
+  margin-left: 83.333%;
+}
+
+.col-xs-offset-11 {
+  margin-left: 91.667%;
+}
+
+.start-xs {
+  -webkit-justify-content: flex-start;
+  -ms-flex-pack: start;
+  justify-content: flex-start;
+  text-align: start;
+}
+
+.center-xs {
+  -webkit-justify-content: center;
+  -ms-flex-pack: center;
+  justify-content: center;
+  text-align: center;
+}
+
+.end-xs {
+  -webkit-justify-content: flex-end;
+  -ms-flex-pack: end;
+  justify-content: flex-end;
+  text-align: end;
+}
+
+.top-xs {
+  -webkit-align-items: flex-start;
+  -ms-flex-align: start;
+  align-items: flex-start;
+}
+
+.middle-xs {
+  -webkit-align-items: center;
+  -ms-flex-align: center;
+  align-items: center;
+}
+
+.bottom-xs {
+  -webkit-align-items: flex-end;
+  -ms-flex-align: end;
+  align-items: flex-end;
+}
+
+.around-xs {
+  -webkit-justify-content: space-around;
+  -ms-flex-pack: distribute;
+  justify-content: space-around;
+}
+
+.between-xs {
+  -webkit-justify-content: space-between;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+}
+
+.first-xs {
+  -webkit-order: -1;
+  -ms-flex-order: -1;
+  order: -1;
+}
+
+.last-xs {
+  -webkit-order: 1;
+  -ms-flex-order: 1;
+  order: 1;
+}
+
+@media only screen and (min-width: 48em) {
+  .container {
+    width: 46rem;
+  }
+
+  .col-sm,
+  .col-sm-1,
+  .col-sm-2,
+  .col-sm-3,
+  .col-sm-4,
+  .col-sm-5,
+  .col-sm-6,
+  .col-sm-7,
+  .col-sm-8,
+  .col-sm-9,
+  .col-sm-10,
+  .col-sm-11,
+  .col-sm-12,
+  .col-sm-offset-1,
+  .col-sm-offset-2,
+  .col-sm-offset-3,
+  .col-sm-offset-4,
+  .col-sm-offset-5,
+  .col-sm-offset-6,
+  .col-sm-offset-7,
+  .col-sm-offset-8,
+  .col-sm-offset-9,
+  .col-sm-offset-10,
+  .col-sm-offset-11,
+  .col-sm-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-sm {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-sm-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-sm-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-sm-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-sm-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-sm-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-sm-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-sm-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-sm-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-sm-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-sm-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-sm-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-sm-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-sm-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-sm-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-sm-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-sm-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-sm-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-sm-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-sm-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-sm-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-sm {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-sm {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-sm {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-sm {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-sm {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-sm {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-sm {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-sm {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-sm {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-sm {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
+
+@media only screen and (min-width: 62em) {
+  .container {
+    width: 61rem;
+  }
+
+  .col-md,
+  .col-md-1,
+  .col-md-2,
+  .col-md-3,
+  .col-md-4,
+  .col-md-5,
+  .col-md-6,
+  .col-md-7,
+  .col-md-8,
+  .col-md-9,
+  .col-md-10,
+  .col-md-11,
+  .col-md-12,
+  .col-md-offset-1,
+  .col-md-offset-2,
+  .col-md-offset-3,
+  .col-md-offset-4,
+  .col-md-offset-5,
+  .col-md-offset-6,
+  .col-md-offset-7,
+  .col-md-offset-8,
+  .col-md-offset-9,
+  .col-md-offset-10,
+  .col-md-offset-11,
+  .col-md-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-md {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-md-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-md-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-md-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-md-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-md-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-md-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-md-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-md-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-md-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-md-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-md-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-md-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-md-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-md-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-md-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-md-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-md-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-md-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-md-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-md-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-md {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-md {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-md {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-md {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-md {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-md {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-md {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-md {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-md {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-md {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
+
+@media only screen and (min-width: 75em) {
+  .container {
+    width: 71rem;
+  }
+
+  .col-lg,
+  .col-lg-1,
+  .col-lg-2,
+  .col-lg-3,
+  .col-lg-4,
+  .col-lg-5,
+  .col-lg-6,
+  .col-lg-7,
+  .col-lg-8,
+  .col-lg-9,
+  .col-lg-10,
+  .col-lg-11,
+  .col-lg-12,
+  .col-lg-offset-1,
+  .col-lg-offset-2,
+  .col-lg-offset-3,
+  .col-lg-offset-4,
+  .col-lg-offset-5,
+  .col-lg-offset-6,
+  .col-lg-offset-7,
+  .col-lg-offset-8,
+  .col-lg-offset-9,
+  .col-lg-offset-10,
+  .col-lg-offset-11,
+  .col-lg-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-lg {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-lg-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-lg-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-lg-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-lg-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-lg-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-lg-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-lg-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-lg-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-lg-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-lg-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-lg-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-lg-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-lg-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-lg-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-lg-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-lg-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-lg-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-lg-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-lg-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-lg-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-lg {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-lg {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-lg {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-lg {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-lg {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-lg {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-lg {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-lg {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-lg {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-lg {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/developers.html
----------------------------------------------------------------------
diff --git a/npm-search/src/developers.html b/npm-search/src/developers.html
new file mode 100644
index 0000000..edb1762
--- /dev/null
+++ b/npm-search/src/developers.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
+    <title>Cordova Search Website</title>
+    <link rel="stylesheet" href="/css/styles.css" />
+  </head>
+
+  <body>
+    <div id="header">
+      <div class="wrap">
+          <a class="logo" href="//cordova.apache.org/"></a>
+          <div class="menu">
+              <a href="index.html">Home</a>
+              <a href="developers.html">Developers</a>
+              <a href="faq.html">FAQ</a>
+          </div>
+          <form class="menu-dropdown">
+              <select onchange="location = this.options[this.selectedIndex].value;">
+                  <option value="index.html">Home</option>
+                  <option value="developers.html">Developers</option>
+                  <option value="faq.html">FAQ</option>
+              </select>
+          </form>
+      </div>
+      <div class="shadow"></div>
+    </div>
+    <div class="header-placeholder"></div>
+    <div class="wrap">
+      <h2 class="icon icon-about">npm Plugin Search for Plugin Developers</h2>
+      <h4>How do I add a new plugin to Plugin Search?</h4>
+      <p>If you want your Cordova Plugin to show up in search, simply add <code>ecosystem:cordova</code> keyword to the <code>package.json</code> file of your plugin and publish it to npm registry.</p>
+      <h4>How can I tag supported platforms for my plugin?</h4>
+      <p>Similar to <code>ecosystem:cordova</code>, platform support too uses keywords. Just add the platform name prefixed with "<strong>cordova-</strong>" to plugins list of keywords. E.g.</p>
+      <pre><code>  "keywords": [
+          "ecosystem:cordova",
+          "cordova-android",
+          "cordova-ios",
+          "cordova-windows"
+        ]</code></pre>
+      <h4>My plugin is in plugins.cordova.io but I want to publish to npm. How do I do that?</h4>
+      <ol>
+        <li>
+          <strong>Optional</strong> Decide if you want to change your plugin’s id. If you decide to change it,
+          <ol>
+            <li>Update the id in plugin.xml and update your readme with the new id.</li>
+            <li>Send a pull request adding your new id and old id to Cordova Registry Mapper.</li>
+            <li>We integrate that module into the Cordova CLI to warn users to use the new id when adding plugins to their projects.</li>
+          </ol>
+        </li>
+        <li>Add a <code>package.json</code> to your plugins,
+          <ul>
+            <li>
+              <strong>Note</strong>: To keep things simple, please make sure your <code>id</code> in <code>plugin.xml</code> is the same as your <code>package-name</code> in <code>package.json</code>.</li>
+            <li>Use <code>plugman createpackagejson [PLUGIN DIRECTORY]</code> to create <code>package.json</code>.
+              <ul>
+                <li>This will create defaults based on existing values in your <code>plugin.xml</code>.</li>
+                <li>It will also automatically add the keyword <code>ecosystem:cordova</code> to your newly generated package.json file.</li>
+                <li>In addition, a cordova key will be added to your <code>package.json</code> which we plan to use in future updates of the tooling.</li>
+              </ul>
+            </li>
+            <li>View the <code>package.json</code> of <a href="https://github.com/apache/cordova-plugin-device/blob/master/package.json" target="_blank">cordova-plugin-device</a> to see an example of what your <code>package.json</code> should look like after running <code>plugman createpackagejson [PLUGIN DIRECTORY]</code> command.</li>
+            <li>Plugins still require a <code>plugin.xml</code> to be installed into <strong>Cordova</strong> projects.</li>
+          </ul>
+        </li>
+        <li>Publish your plugin to npm using the <code>npm publish [PLUGIN DIRECTORY]</code>.</li>
+      </ol>
+      <h4>Are there any additional documents to assist me with plugins?</h4>
+      <p>Yes there are. Please take a look at <a href="http://cordova.apache.org/docs/en/edge/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide" target="_blank">Plugin Development Guide</a> for a more detailed guide.</p>
+      <h4>I don't like X. How can I help improve the website?</h4>
+      <p>You can help improving this site by opening bugs on <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20%22Registry%20Web%22" target="_blank">JIRA</a> or by sending PRs on <a href="https://github.com/apache/cordova-registry-web" target="_blank">GitHub</a>.</p>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/etc/browserconfig.xml
----------------------------------------------------------------------
diff --git a/npm-search/src/etc/browserconfig.xml b/npm-search/src/etc/browserconfig.xml
new file mode 100644
index 0000000..d92daea
--- /dev/null
+++ b/npm-search/src/etc/browserconfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+  <msapplication>
+    <tile>
+      <square70x70logo src="/img/mstile-70x70.png"/>
+      <square150x150logo src="/img/mstile-150x150.png"/>
+      <square310x310logo src="/img/mstile-310x310.png"/>
+      <wide310x150logo src="/img/mstile-310x150.png"/>
+      <TileColor>#da532c</TileColor>
+    </tile>
+  </msapplication>
+</browserconfig>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/etc/favicon.ico
----------------------------------------------------------------------
diff --git a/npm-search/src/etc/favicon.ico b/npm-search/src/etc/favicon.ico
new file mode 100644
index 0000000..365e772
Binary files /dev/null and b/npm-search/src/etc/favicon.ico differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/etc/manifest.json
----------------------------------------------------------------------
diff --git a/npm-search/src/etc/manifest.json b/npm-search/src/etc/manifest.json
new file mode 100644
index 0000000..c996156
--- /dev/null
+++ b/npm-search/src/etc/manifest.json
@@ -0,0 +1,41 @@
+{
+	"name": "Cordova npm Search",
+	"icons": [
+		{
+			"src": "\/img\/android-chrome-36x36.png",
+			"sizes": "36x36",
+			"type": "image\/png",
+			"density": "0.75"
+		},
+		{
+			"src": "\/img\/android-chrome-48x48.png",
+			"sizes": "48x48",
+			"type": "image\/png",
+			"density": "1.0"
+		},
+		{
+			"src": "\/img\/android-chrome-72x72.png",
+			"sizes": "72x72",
+			"type": "image\/png",
+			"density": "1.5"
+		},
+		{
+			"src": "\/img\/android-chrome-96x96.png",
+			"sizes": "96x96",
+			"type": "image\/png",
+			"density": "2.0"
+		},
+		{
+			"src": "\/img\/android-chrome-144x144.png",
+			"sizes": "144x144",
+			"type": "image\/png",
+			"density": "3.0"
+		},
+		{
+			"src": "\/img\/android-chrome-192x192.png",
+			"sizes": "192x192",
+			"type": "image\/png",
+			"density": "4.0"
+		}
+	]
+}

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/faq.html
----------------------------------------------------------------------
diff --git a/npm-search/src/faq.html b/npm-search/src/faq.html
new file mode 100644
index 0000000..53854f9
--- /dev/null
+++ b/npm-search/src/faq.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
+    <title>Cordova Search Website</title>
+    <link rel="stylesheet" href="/css/styles.css" />
+  </head>
+
+  <body>
+    <div id="header">
+      <div class="wrap">
+          <a class="logo" href="//cordova.apache.org/"></a>
+          <div class="menu">
+              <a href="index.html">Home</a>
+              <a href="developers.html">Developers</a>
+              <a href="faq.html">FAQ</a>
+          </div>
+          <form class="menu-dropdown">
+              <select onchange="location = this.options[this.selectedIndex].value;">
+                  <option value="index.html">Home</option>
+                  <option value="developers.html">Developers</option>
+                  <option value="faq.html">FAQ</option>
+              </select>
+          </form>
+      </div>
+      <div class="shadow"></div>
+    </div>
+    <div class="header-placeholder"></div>
+    <div class="wrap">
+      <h2 class="icon icon-about">npm Plugin Search FAQ</h2>
+      <h4>What is npm Plugin Search?</h4>
+      <p>On April 21 2015, Cordova team announced plans to move core and 3rd party plugins to npm ecosystem. npm Plugin Search page offers an easy and user friendly way to browse plugins that have completed this transition.</p>
+      <h4>What version of Cordova do I need to use npm?</h4>
+      <p>To start using plugins from npm, Cordova CLI version 5.0.0 or higher is required.</p>
+      <h4>How do I install plugins from npm?</h4>
+      <p>Cordova team decided to change official plugin IDs from org.apache.cordova.* to cordova-plugin-* to better fit within the npm ecosystem. Developers can install a plugin using the command <code>cordova plugin add cordova-plugin-device</code>.</p>
+      <h4>How do I know which platforms are supported for a plugin?</h4>
+      <p>Plugin Search displays plugins in form of cards. Each card contains important information about the plugin. Supported platforms is represented in form of platform tags. </p>
+      <h4>How can I identify official core plugins?</h4>
+      <p>Core plugins have a blue strip on the left side of their card.</p>
+      <h4>Can I still download plugins if I'm using Cordova CLI 4.3.0 or lower?</h4>
+      <p>Yes! You can use Cordova Plugins from the <a href="http://plugins.cordova.io/" target="_blank">old plugin registry</a>.</p>
+      <h4>What’s happening to the old plugin registry?</h4>
+      <p>See Cordova <a href="http://cordova.apache.org/announcements/2015/04/21/plugins-release-and-move-to-npm.html" target="_blank">blog</a> for more details. It’s being phased out:</p>
+      <ul>
+      <li>  Read-only after July 15th</li>
+      <li>  End of support after October 15th</li>
+      </ul>
+      <h4>Are there any additional documents to assist me with plugins?</h4>
+      <p>Yes there are. Please take a look at <a href="http://cordova.apache.org/docs/en/edge/guide_cli_index.md.html#The%20Command-Line%20Interface_add_plugin_features" target="_blank">Add Plugin Features</a> for a more detailed guide.</p>
+      <h4>I don't like X. How can I help improve the website?</h4>
+      <p>You can help improving this site by opening bugs on <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20%22Registry%20Web%22" target="_blank">JIRA</a> or by sending PRs on <a href="https://github.com/apache/cordova-registry-web" target="_blank">GitHub</a>.</p>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/android-chrome-144x144.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/android-chrome-144x144.png b/npm-search/src/img/android-chrome-144x144.png
new file mode 100644
index 0000000..70826eb
Binary files /dev/null and b/npm-search/src/img/android-chrome-144x144.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/android-chrome-192x192.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/android-chrome-192x192.png b/npm-search/src/img/android-chrome-192x192.png
new file mode 100644
index 0000000..728f217
Binary files /dev/null and b/npm-search/src/img/android-chrome-192x192.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/android-chrome-36x36.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/android-chrome-36x36.png b/npm-search/src/img/android-chrome-36x36.png
new file mode 100644
index 0000000..277efed
Binary files /dev/null and b/npm-search/src/img/android-chrome-36x36.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/android-chrome-48x48.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/android-chrome-48x48.png b/npm-search/src/img/android-chrome-48x48.png
new file mode 100644
index 0000000..3a84506
Binary files /dev/null and b/npm-search/src/img/android-chrome-48x48.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/android-chrome-72x72.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/android-chrome-72x72.png b/npm-search/src/img/android-chrome-72x72.png
new file mode 100644
index 0000000..bc6a1fb
Binary files /dev/null and b/npm-search/src/img/android-chrome-72x72.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/android-chrome-96x96.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/android-chrome-96x96.png b/npm-search/src/img/android-chrome-96x96.png
new file mode 100644
index 0000000..961d0b4
Binary files /dev/null and b/npm-search/src/img/android-chrome-96x96.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-114x114.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-114x114.png b/npm-search/src/img/apple-touch-icon-114x114.png
new file mode 100644
index 0000000..68a5502
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-114x114.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-120x120.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-120x120.png b/npm-search/src/img/apple-touch-icon-120x120.png
new file mode 100644
index 0000000..85a0369
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-120x120.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-144x144.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-144x144.png b/npm-search/src/img/apple-touch-icon-144x144.png
new file mode 100644
index 0000000..70826eb
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-144x144.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-152x152.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-152x152.png b/npm-search/src/img/apple-touch-icon-152x152.png
new file mode 100644
index 0000000..92034ec
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-152x152.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-180x180.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-180x180.png b/npm-search/src/img/apple-touch-icon-180x180.png
new file mode 100644
index 0000000..90032cf
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-180x180.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-57x57.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-57x57.png b/npm-search/src/img/apple-touch-icon-57x57.png
new file mode 100644
index 0000000..e2f87c3
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-57x57.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-60x60.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-60x60.png b/npm-search/src/img/apple-touch-icon-60x60.png
new file mode 100644
index 0000000..1055d9f
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-60x60.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-72x72.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-72x72.png b/npm-search/src/img/apple-touch-icon-72x72.png
new file mode 100644
index 0000000..bc6a1fb
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-72x72.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-76x76.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-76x76.png b/npm-search/src/img/apple-touch-icon-76x76.png
new file mode 100644
index 0000000..8404b3c
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-76x76.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon-precomposed.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon-precomposed.png b/npm-search/src/img/apple-touch-icon-precomposed.png
new file mode 100644
index 0000000..4663c60
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon-precomposed.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/apple-touch-icon.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/apple-touch-icon.png b/npm-search/src/img/apple-touch-icon.png
new file mode 100644
index 0000000..90032cf
Binary files /dev/null and b/npm-search/src/img/apple-touch-icon.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/favicon-16x16.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/favicon-16x16.png b/npm-search/src/img/favicon-16x16.png
new file mode 100644
index 0000000..f7667c5
Binary files /dev/null and b/npm-search/src/img/favicon-16x16.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/favicon-32x32.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/favicon-32x32.png b/npm-search/src/img/favicon-32x32.png
new file mode 100644
index 0000000..249dbc1
Binary files /dev/null and b/npm-search/src/img/favicon-32x32.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/favicon-96x96.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/favicon-96x96.png b/npm-search/src/img/favicon-96x96.png
new file mode 100644
index 0000000..961d0b4
Binary files /dev/null and b/npm-search/src/img/favicon-96x96.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/grid.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/grid.png b/npm-search/src/img/grid.png
new file mode 100644
index 0000000..5d97586
Binary files /dev/null and b/npm-search/src/img/grid.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/mstile-144x144.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/mstile-144x144.png b/npm-search/src/img/mstile-144x144.png
new file mode 100644
index 0000000..d648b83
Binary files /dev/null and b/npm-search/src/img/mstile-144x144.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/mstile-150x150.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/mstile-150x150.png b/npm-search/src/img/mstile-150x150.png
new file mode 100644
index 0000000..3e2de8a
Binary files /dev/null and b/npm-search/src/img/mstile-150x150.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/mstile-310x150.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/mstile-310x150.png b/npm-search/src/img/mstile-310x150.png
new file mode 100644
index 0000000..636fa5e
Binary files /dev/null and b/npm-search/src/img/mstile-310x150.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/mstile-310x310.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/mstile-310x310.png b/npm-search/src/img/mstile-310x310.png
new file mode 100644
index 0000000..17bc907
Binary files /dev/null and b/npm-search/src/img/mstile-310x310.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/mstile-70x70.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/mstile-70x70.png b/npm-search/src/img/mstile-70x70.png
new file mode 100644
index 0000000..6b4314f
Binary files /dev/null and b/npm-search/src/img/mstile-70x70.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/pluggy.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/pluggy.png b/npm-search/src/img/pluggy.png
new file mode 100644
index 0000000..1317585
Binary files /dev/null and b/npm-search/src/img/pluggy.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/search.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/search.png b/npm-search/src/img/search.png
new file mode 100644
index 0000000..9fb799b
Binary files /dev/null and b/npm-search/src/img/search.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/shadow.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/shadow.png b/npm-search/src/img/shadow.png
new file mode 100644
index 0000000..8c5ba5f
Binary files /dev/null and b/npm-search/src/img/shadow.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/img/sprite.png
----------------------------------------------------------------------
diff --git a/npm-search/src/img/sprite.png b/npm-search/src/img/sprite.png
new file mode 100644
index 0000000..7195426
Binary files /dev/null and b/npm-search/src/img/sprite.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/index.html
----------------------------------------------------------------------
diff --git a/npm-search/src/index.html b/npm-search/src/index.html
new file mode 100644
index 0000000..7c62ca1
--- /dev/null
+++ b/npm-search/src/index.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
+    <meta name='description' content='This website is used to search the apache cordova plugins hosted on npm. The plugins can be searched across titles, descriptions, authors, platforms and licenses. You can also view the download counts for each plugin. The page also displays platforms supported, version and last updated day for the cordova plugins.'>
+    <title>Cordova Plugin NPM Search</title>
+    <link rel="stylesheet" href="/css/styles.css" />
+    <link rel="apple-touch-icon" sizes="57x57" href="/img/apple-touch-icon-57x57.png">
+    <link rel="apple-touch-icon" sizes="60x60" href="/img/apple-touch-icon-60x60.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="/img/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="76x76" href="/img/apple-touch-icon-76x76.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="/img/apple-touch-icon-114x114.png">
+    <link rel="apple-touch-icon" sizes="120x120" href="/img/apple-touch-icon-120x120.png">
+    <link rel="apple-touch-icon" sizes="144x144" href="/img/apple-touch-icon-144x144.png">
+    <link rel="apple-touch-icon" sizes="152x152" href="/img/apple-touch-icon-152x152.png">
+    <link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon-180x180.png">
+    <link rel="icon" type="image/png" href="/img/favicon-32x32.png" sizes="32x32">
+    <link rel="icon" type="image/png" href="/img/android-chrome-192x192.png" sizes="192x192">
+    <link rel="icon" type="image/png" href="/img/favicon-96x96.png" sizes="96x96">
+    <link rel="icon" type="image/png" href="/img/favicon-16x16.png" sizes="16x16">
+    <link rel="manifest" href="/etc/manifest.json">
+    <link rel="shortcut icon" href="/etc/favicon.ico">
+    <meta name="msapplication-TileColor" content="#da532c">
+    <meta name="msapplication-TileImage" content="/img/mstile-144x144.png">
+    <meta name="msapplication-config" content="/etc/browserconfig.xml">
+    <meta name="theme-color" content="#ffffff">
+  </head>
+
+  <body>
+    <div id="header">
+      <div class="wrap">
+          <a class="logo" href="//cordova.apache.org/"></a>
+          <div class="menu">
+              <a href="index.html">Home</a>
+              <a href="developers.html">Developers</a>
+              <a href="faq.html">FAQ</a>
+          </div>
+          <form class="menu-dropdown">
+              <select onchange="location = this.options[this.selectedIndex].value;">
+                  <option value="index.html">Home</option>
+                  <option value="developers.html">Developers</option>
+                  <option value="faq.html">FAQ</option>
+              </select>
+          </form>
+      </div>
+      <div class="shadow"></div>
+    </div>
+    <div class="header-placeholder"></div>
+    <div id="container"></div>
+    <script src="/js/app.js"></script>
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-64283057-2', 'auto');
+      ga('send', 'pageview');
+    </script>
+    <script>App.start();</script>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/js/app.js
----------------------------------------------------------------------
diff --git a/npm-search/src/js/app.js b/npm-search/src/js/app.js
new file mode 100644
index 0000000..278f5ef
--- /dev/null
+++ b/npm-search/src/js/app.js
@@ -0,0 +1,493 @@
+var React    = window.React = require('react'), // assign it to window for react chrome extension
+    classNames = require('classnames'),
+    App = {};
+
+var Constants = {
+    DownloadCountBatch: 100,
+    NpmSearchInitialSize: 500
+}
+
+var OfficialPlugin = React.createClass({
+    render: function() {
+        return (
+            <div id="featured"></div>
+        );
+    }
+});
+
+var PlatformButton = React.createClass({
+    onClick: function() {
+        var appInstance = React.render(<App />, document.getElementById('container'));
+        appInstance.addCondition("platform:" + this.props.platform);
+    },
+    render: function() {
+        return (
+            <li className = "clickable" onClick={this.onClick}> {this.props.platform} </li>
+        );
+    }
+});
+
+var SupportedPlatforms = React.createClass({
+    getInitialState: function() {
+        return {
+            moreClicked: false
+        };
+    },
+    onClick: function() {
+        this.setState({
+            moreClicked: true
+        });
+    },
+    render: function() {
+        var keywords = this.props.keywords;
+        var sortedMajorPlatforms = [{present:false, text: "Android"}, {present:false, text: "iOS"}, {present:false, text: "Windows"}, {present:false, text: "Blackberry10"}];
+        var majorPlatformsSupported = [];
+        var otherPlatformsSupported = [];
+        // remove windows8 & windows dupe
+        if (keywords.indexOf('cordova-windows') > -1 && keywords.indexOf('cordova-windows8') > -1) {
+            keywords.splice(keywords.indexOf('cordova-windows8'), 1);
+        }
+        keywords.forEach(function(keyword) {
+            switch (keyword) {
+                case 'cordova-firefoxos':
+                    otherPlatformsSupported.push(<PlatformButton platform="FirefoxOS" />);
+                    break;
+                case 'cordova-android':
+                    sortedMajorPlatforms[0].present = true;
+                    break;
+                case 'cordova-amazon-fireos':
+                    otherPlatformsSupported.push(<PlatformButton platform="FireOS" />);
+                    break;
+                case 'cordova-ubuntu':
+                    otherPlatformsSupported.push(<PlatformButton platform="Ubuntu" />);
+                    break;
+                case 'cordova-ios':
+                    sortedMajorPlatforms[1].present = true;
+                    break;
+                case 'cordova-blackberry10':
+                    sortedMajorPlatforms[3].present = true;
+                    break;
+                case 'cordova-wp8':
+                    otherPlatformsSupported.push(<PlatformButton platform="Windows Phone 8" />);
+                    break;
+                case 'cordova-windows8':
+                case 'cordova-windows':
+                    sortedMajorPlatforms[2].present = true;
+                    break;
+                case 'cordova-browser':
+                    otherPlatformsSupported.push(<PlatformButton platform="Browser" />);
+                    break;
+            }
+        });
+
+        sortedMajorPlatforms.forEach(function(platform) {
+            if(platform.present) {
+                majorPlatformsSupported.push(<PlatformButton platform={platform.text} />)
+            }
+        });
+        while(majorPlatformsSupported.length < 4 && otherPlatformsSupported.length > 0) {
+            majorPlatformsSupported.push(otherPlatformsSupported.shift());
+        }
+
+        var moreButton;
+        if(otherPlatformsSupported.length > 0 && !this.state.moreClicked) {
+            moreButton = <li className="clickable" onClick={this.onClick}>...</li>
+        }
+        if (!this.state.moreClicked) {
+            otherPlatformsSupported = null;
+        }
+        return (
+            <ul className="supportedPlatforms">
+                {majorPlatformsSupported}
+                {moreButton}
+                {otherPlatformsSupported}
+            </ul>
+        );
+    }
+});
+
+var SearchBar = React.createClass({
+    handleChange: function() {
+        this.props.onUserInput(
+            this.refs.filterTextInput.getDOMNode().value
+        )
+    },
+    render: function() {
+        return (
+            <div className="col-xs-offset-2 col-xs-8">
+                <div id="searchwrapper">
+                    <input
+                        className="searchBox"
+                        type="search"
+                        autoComplete="off"
+                        placeholder={this.props.placeHolderText}
+                        value={this.props.filterText}
+                        ref="filterTextInput"
+                        onChange={this.handleChange}
+                    />
+                </div>
+            </div>
+        );
+    }
+});
+
+var Plugin = React.createClass({
+    shouldComponentUpdate: function(nextProps, nextState) {
+        return this.props.plugin !== nextProps.plugin;
+    },
+    render: function() {
+        var license = this.props.plugin.license;
+        if (license && license.length > 1) {
+            license = license[0];
+        }
+        var downloadField;
+
+        var classes = classNames({
+            'pluginCard': true,
+            'featuredPlugin': this.props.plugin.isOfficial,
+            'row': true
+        });
+
+        if(this.props.plugin.downloadCount) {
+            var downloadCount = this.props.plugin.downloadCount.toLocaleString();
+            downloadField = <p><small> {downloadCount} downloads last month</small></p>;
+        }
+        return (
+            <li>
+                <div className={classes}>
+                    <div className="primaryContent col-xs-9">
+                        <div className="header">
+                            <h3><a href={'https://www.npmjs.com/package/' + this.props.plugin.name} target="_blank">{this.props.plugin.name}</a></h3>
+                            <small className="pluginVersion">v{this.props.plugin.version}</small>
+                            <small> by </small>
+                            <small className="pluginAuthor">{this.props.plugin.author}</small>
+                        </div>
+                        <div className="pluginDesc">{this.props.plugin.description}</div>
+                        <SupportedPlatforms keywords={this.props.plugin.keywords}/>
+                        </div>
+                        <div className="secondaryContent col-xs-3">
+                        <div className="download">
+                            <p></p>
+                        </div>
+                        <div className="extraInfo">
+                            <p><small><strong>License:</strong> {license}</small></p>
+                            {downloadField}
+                            <p><small><em>Last updated {this.props.plugin.modified} days ago</em></small></p>
+                        </div>
+                    </div>
+                </div>
+            </li>
+        )
+    }
+});
+
+var timer=null;
+
+window.addEventListener('popstate', function(e) {
+    if(e.state) {
+        var appInstance = React.render(<App />, document.getElementById('container'));
+        appInstance.loadFilterText(e.state.filterText);
+    }
+});
+
+var PluginList = React.createClass({
+    statics: {
+        contains: function(values, pluginInfo) {
+            var allValuesPresent = true;
+            if(values.length == 0) {
+                return allValuesPresent;
+            }
+            if(!pluginInfo) {
+                return false;
+            }
+            values.forEach(function(value) {
+                var valuePresent = false;
+                for(var index=0; index < pluginInfo.length; index++) {
+                    if(pluginInfo[index] && pluginInfo[index].toLowerCase().indexOf(value) > -1) {
+                        valuePresent = true;
+                    }
+                }
+                if(!valuePresent) {
+                    allValuesPresent = false;
+                }
+            });
+            return allValuesPresent;
+        },
+        populateFilters: function(filterText)
+        {
+            var searchStrings = filterText.split(" ");
+            var filters = [];
+            filters['platforms'] = [];
+            filters['authors'] = [];
+            filters['licenses'] = [];
+            filters['searchWords'] = [];
+
+            searchStrings.forEach(function(searchString) {
+                var keywords = searchString.split(":");
+                if(keywords.length == 1) {
+                    var param = keywords[0].trim();
+                    if(param) {
+                        filters['searchWords'].push(param);
+                    }
+                }
+                else if(keywords[1].trim()) {
+                    var param = keywords[1].trim();
+                    switch(keywords[0]) {
+                        case 'platform':
+                            filters['platforms'].push(param);
+                            break;
+                        case 'author':
+                            filters['authors'].push(param);
+                            break;
+                        case 'license':
+                            filters['licenses'].push(param);
+                            break;
+                        default:
+                            filters['searchWords'].push(searchString);
+                    }
+                }
+                else {
+                    filters['searchWords'].push(searchString);
+                }
+            });
+            return filters;
+        }
+    },
+    render: function() {
+        var plugins = [],
+            filterText = this.props.filterText.toLowerCase();
+
+        var delay = (function(){
+          return function(callback, ms){
+            clearTimeout (timer);
+            timer = setTimeout(callback, ms);
+          };
+        })();
+
+        delay(function(){
+                    window.history.pushState({"filterText":filterText}, "", "?q=" + filterText);
+            }, 2000 );
+
+        var filters = PluginList.populateFilters(filterText);
+
+        this.props.plugins.forEach(function(plugin) {
+            var fullPluginText = plugin.name.concat(plugin.author, plugin.keywords, plugin.license, plugin.description);
+            if(PluginList.contains(filters['platforms'], plugin.keywords)
+                && PluginList.contains(filters['authors'], plugin.author)
+                && PluginList.contains(filters['licenses'], plugin.license)
+                && PluginList.contains(filters['searchWords'], fullPluginText)) {
+                    plugins.push(<Plugin plugin={plugin} key={plugin.author + plugin.name}/>);
+            }
+        }.bind(this));
+        return (
+            <div className="col-xs-offset-2 col-xs-8">
+                <ul className="pluginList">
+                    {plugins}
+                </ul>
+            </div>
+        );
+    }
+});
+
+
+var App = React.createClass({
+    getInitialState: function() {
+        return {
+            plugins: [],
+            filterText: '',
+            placeHolderText: 'Loading...'
+        };
+    },
+    handleUserInput: function(filterText) {
+        this.setState({
+            filterText: filterText
+        });
+    },
+    addCondition: function(condition) {
+        this.setState(function(previousState, currentProps) {
+            if(previousState.filterText.indexOf(condition) > -1) {
+                return {
+                    filterText: previousState.filterText,
+                    plugins: previousState.plugins
+                };
+            }
+            else {
+                return {
+                    filterText: previousState.filterText.trim() + ' ' + condition + ' ',
+                    plugins: previousState.plugins
+                };
+            }
+        });
+    },
+    loadFilterText : function(filterText) {
+        this.setState(function(previousState, currentProps) {
+            return {
+                filterText: filterText,
+                plugins: previousState.plugins
+            };
+        });
+    },
+    statics: {
+        getURLParameter : function(name) {
+            return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)
+                ||[,""])[1].replace(/\+/g, '%20'))||null;
+        },
+        shallowCopy: function(src) {
+            var dst = {};
+            for(var i in src) {
+                if(src.hasOwnProperty(i)) {
+                    dst[i] = src[i];
+                }
+            }
+            return dst;
+        }
+    },
+    componentDidMount: function() {
+        var plugins = [],
+            officialPlugins = require('./official-plugins.json').plugins,
+            blacklistedPlugins = require('./blacklisted-plugins.json').plugins,
+            pluginCount = 0,
+            self = this,
+            queryHost = "http://npmsearch.com/query",
+            queryFields = "fields=name,keywords,license,description,author,modified,homepage,version",
+            queryKeywords = "q=keywords:%22ecosystem:cordova%22",
+            queryInitialSize = Constants.NpmSearchInitialSize;
+
+        xhrRequest(queryHost + "?" + queryFields + "&" + queryKeywords + "&size=" + queryInitialSize + "&start=0", function(xhrResult) {
+            plugins = xhrResult.results;
+            pluginCount = xhrResult.total;
+            if (pluginCount <= queryInitialSize) {
+                processPlugins.bind(self, officialPlugins, plugins)();
+            } else {
+                xhrRequest(queryHost + "?" + queryFields + "&" + queryKeywords + "&size=" + (pluginCount - queryInitialSize) + "&start=" + queryInitialSize, function(xhrResult) {
+                        plugins = [].concat(plugins, xhrResult.results);
+                        processPlugins.bind(self, officialPlugins, plugins)();
+                }, function() { console.log('xhr err'); });
+            }
+        }, function() { console.log('xhr err'); });
+
+        var getDownloadCount = function(plugins, that) {
+            var packageNames = "";
+            for(var index=0; index < plugins.length; index++) {
+                packageNames += plugins[index].name + ",";
+                if(index % Constants.DownloadCountBatch === 0 || index === plugins.length -1) {
+                    xhrRequest("https://api.npmjs.org/downloads/point/last-month/" + packageNames, function(xhrResult) {
+                        for(var j = 0; j < plugins.length; j++) {
+                            if(xhrResult[plugins[j].name]) {
+                                plugins[j] = App.shallowCopy(plugins[j]);
+                                plugins[j].downloadCount = xhrResult[plugins[j].name].downloads;
+                            }
+                        }
+                        that.setState({
+                            plugins: plugins
+                        });
+                    }.bind(self), function() { console.log('xhr err'); });
+                    packageNames = "";
+                }
+            }
+        }
+
+        function processPlugins(officialPlugins, plugins) {
+            var pluginCount = plugins.length,
+                dateNow = new Date(),
+                oneDay = 1000*60*60*24;
+
+            officialPlugins.forEach(function(plugin) {
+                for (var i = 0; i < plugins.length; i++) {
+                    // Check if plugin name is in official list
+                    if (plugins[i].name[0] === plugin) {
+                        plugins[i].isOfficial = true;
+                        return;
+                    }
+                };
+            });
+
+            for(var i = plugins.length -1; i >= 0 ; i--)
+            {
+                for(var j = 0; j < blacklistedPlugins.length; j++)
+                {
+                    if(plugins[i].name[0] === blacklistedPlugins[j])
+                    {
+                        plugins.splice(i, 1);
+                        break;
+                    }
+                }
+            }
+
+            for (var i = 0; i < plugins.length; i++) {
+                // Calculate last time plugin is modified (in days)
+                plugins[i].modified = Math.ceil((dateNow - new Date(plugins[i].modified)) / oneDay);
+            };
+
+            if (this.isMounted()) {
+                var q = App.getURLParameter('q');
+                if(q) {
+                    this.setState({
+                        plugins: plugins,
+                        filterText: q
+                    });
+                }
+                else {
+                    this.setState({
+                        plugins: plugins,
+                        placeHolderText: 'Search ' + pluginCount + ' plugins...'
+                    });
+                }
+                getDownloadCount(plugins,this);
+            }
+        }
+    },
+    render: function() {
+        return (
+            <div>
+                <div className="row" id="headerBackground">
+                    <div className="col-xs-offset-2 col-xs-8">
+                        <div id="topContent" className="row">
+                            <div className="col-xs-3">
+                                <div id="pluggy"></div>
+                            </div>
+                            <div className="col-xs-9">
+                                <h1><p className="discover-message">Search Cordova Plugins</p></h1>
+                            </div>
+                        </div>
+                    </div>
+                    <SearchBar
+                        filterText={this.state.filterText}
+                        placeHolderText={this.state.placeHolderText}
+                        onUserInput={this.handleUserInput}
+                    />
+                </div>
+                <div className="row">
+                    <PluginList
+                        plugins={this.state.plugins}
+                        filterText={this.state.filterText}
+                    />
+                </div>
+            </div>
+        );
+    }
+});
+
+App.start = function() {
+    React.render(<App />, document.getElementById('container'));
+};
+
+function xhrRequest(url, success, fail) {
+    var xhr = new XMLHttpRequest();
+    xhr.onreadystatechange = function() {
+        if (xhr.readyState == XMLHttpRequest.DONE ) {
+            if(xhr.status == 200){
+                success(JSON.parse(xhr.responseText));
+                return;
+            } else {
+                fail();
+                return;
+            }
+        }
+    }.bind(this)
+    xhr.open("GET", url, true);
+    xhr.send();
+}
+
+
+module.exports = window.App = App;

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/js/blacklisted-plugins.json
----------------------------------------------------------------------
diff --git a/npm-search/src/js/blacklisted-plugins.json b/npm-search/src/js/blacklisted-plugins.json
new file mode 100644
index 0000000..f0108ab
--- /dev/null
+++ b/npm-search/src/js/blacklisted-plugins.json
@@ -0,0 +1,7 @@
+{
+    "plugins" : [
+        "cordova-wp8",
+        "cordova-wp8-testtest",
+        "cordova-app-hello-world"
+    ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/js/official-plugins.json
----------------------------------------------------------------------
diff --git a/npm-search/src/js/official-plugins.json b/npm-search/src/js/official-plugins.json
new file mode 100644
index 0000000..d220cfb
--- /dev/null
+++ b/npm-search/src/js/official-plugins.json
@@ -0,0 +1,26 @@
+{
+    "plugins" : [
+        "cordova-plugin-battery-status",
+        "cordova-plugin-camera",
+        "cordova-plugin-console",
+        "cordova-plugin-contacts",
+        "cordova-plugin-device",
+        "cordova-plugin-device-motion",
+        "cordova-plugin-device-orientation",
+        "cordova-plugin-dialogs",
+        "cordova-plugin-file",
+        "cordova-plugin-file-transfer",
+        "cordova-plugin-geolocation",
+        "cordova-plugin-globalization",
+        "cordova-plugin-inappbrowser",
+        "cordova-plugin-legacy-whitelist",
+        "cordova-plugin-media",
+        "cordova-plugin-media-capture",
+        "cordova-plugin-ms-appinsights",
+        "cordova-plugin-network-information",
+        "cordova-plugin-splashscreen",
+        "cordova-plugin-statusbar",
+        "cordova-plugin-vibration",
+        "cordova-plugin-whitelist"
+    ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index ab56fcc..e74e402 100644
--- a/package.json
+++ b/package.json
@@ -10,15 +10,16 @@
     "semver": "~2.0.10"
   },
   "devDependencies": {
-    "jsontool": "~4.0.0",
     "grunt": "~0.4.1",
-    "grunt-shell": "~0.6.2",
-    "grunt-contrib-watch": "~0.5.3",
-    "load-grunt-tasks": "~0.2.1",
-    "grunt-contrib-less": "~0.9.0",
     "grunt-connect-proxy": "~0.2.0",
+    "grunt-contrib-clean": "^0.6.0",
     "grunt-contrib-connect": "^0.7.1",
+    "grunt-contrib-copy": "~0.5.0",
+    "grunt-contrib-less": "~0.9.0",
+    "grunt-contrib-watch": "~0.5.3",
     "grunt-preprocess": "~4.0.0",
-    "grunt-contrib-copy": "~0.5.0"
+    "grunt-shell": "~0.6.2",
+    "jsontool": "~4.0.0",
+    "load-grunt-tasks": "~0.2.1"
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[5/6] cordova-registry-web git commit: Extend grunt, add more structure, fix bugs

Posted by mu...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/app.js
----------------------------------------------------------------------
diff --git a/attachments/npm/build/app.js b/attachments/npm/build/app.js
deleted file mode 100644
index 8fc9b11..0000000
--- a/attachments/npm/build/app.js
+++ /dev/null
@@ -1,6 +0,0 @@
-!function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var u="function"==typeof require&&require;if(!s&&u)return u(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[i]={exports:{}};t[i][0].call(l.exports,function(e){var n=t[i][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)o(r[i]);return o}({1:[function(e,t,n){function r(e,t,n){var r=new XMLHttpRequest;r.onreadystatechange=function(){return r.readyState==XMLHttpRequest.DONE?200==r.status?void t(JSON.parse(r.responseText)):void n():void 0}.bind(this),r.open("GET",e,!0),r.send()}var o=window.React=e("react"),a=e("classnames"),i={},s=(o.createClass({displayName:"OfficialPlugin",render:function(){return o.createElement("div",{id:"featured"})}}),o.createClass({displayName:"PlatformButton",onClick:function(){var e=o.render(o.createElement(i,null),document.getElementById("container"));e.addCondit
 ion("platform:"+this.props.platform)},render:function(){return o.createElement("li",{className:"clickable",onClick:this.onClick}," ",this.props.platform," ")}})),u=o.createClass({displayName:"SupportedPlatforms",getInitialState:function(){return{moreClicked:!1}},onClick:function(){this.setState({moreClicked:!0})},render:function(){var e=this.props.keywords,t=[{present:!1,text:"Android"},{present:!1,text:"iOS"},{present:!1,text:"Windows"},{present:!1,text:"Blackberry10"}],n=[],r=[];for(e.indexOf("cordova-windows")>-1&&e.indexOf("cordova-windows8")>-1&&e.splice(e.indexOf("cordova-windows8"),1),e.forEach(function(e){switch(e){case"cordova-firefoxos":r.push(o.createElement(s,{platform:"FirefoxOS"}));break;case"cordova-android":t[0].present=!0;break;case"cordova-amazon-fireos":r.push(o.createElement(s,{platform:"FireOS"}));break;case"cordova-ubuntu":r.push(o.createElement(s,{platform:"Ubuntu"}));break;case"cordova-ios":t[1].present=!0;break;case"cordova-blackberry10":t[3].present=!0;brea
 k;case"cordova-wp8":r.push(o.createElement(s,{platform:"Windows Phone 8"}));break;case"cordova-windows8":case"cordova-windows":t[2].present=!0;break;case"cordova-browser":r.push(o.createElement(s,{platform:"Browser"}))}}),t.forEach(function(e){e.present&&n.push(o.createElement(s,{platform:e.text}))});n.length<4&&r.length>0;)n.push(r.shift());var a;return r.length>0&&!this.state.moreClicked&&(a=o.createElement("li",{className:"clickable",onClick:this.onClick},"...")),this.state.moreClicked||(r=null),o.createElement("ul",{className:"supportedPlatforms"},n,a,r)}}),c=o.createClass({displayName:"SearchBar",handleChange:function(){this.props.onUserInput(this.refs.filterTextInput.getDOMNode().value)},render:function(){return o.createElement("div",{className:"col-xs-offset-2 col-xs-8"},o.createElement("div",{id:"searchwrapper"},o.createElement("input",{className:"searchBox",type:"search",autoComplete:"off",placeholder:this.props.placeHolderText,value:this.props.filterText,ref:"filterTextInp
 ut",onChange:this.handleChange})))}}),l=o.createClass({displayName:"Plugin",render:function(){var e=this.props.plugin.license;e&&e.length>1&&(e=e[0]);var t,n=a({pluginCard:!0,featuredPlugin:this.props.plugin.isOfficial,row:!0});if(this.props.plugin.downloadCount){var r=this.props.plugin.downloadCount.toLocaleString();t=o.createElement("p",null,o.createElement("small",null," ",r," downloads last month"))}return o.createElement("li",null,o.createElement("div",{className:n},o.createElement("div",{className:"primaryContent col-xs-9"},o.createElement("div",{className:"header"},o.createElement("h3",null,o.createElement("a",{href:"https://www.npmjs.com/package/"+this.props.plugin.name,target:"_blank"},this.props.plugin.name)),o.createElement("small",{className:"pluginVersion"},"v",this.props.plugin.version),o.createElement("small",null," by "),o.createElement("small",{className:"pluginAuthor"},this.props.plugin.author)),o.createElement("div",{className:"pluginDesc"},this.props.plugin.descr
 iption),o.createElement(u,{keywords:this.props.plugin.keywords})),o.createElement("div",{className:"secondaryContent col-xs-3"},o.createElement("div",{className:"download"},o.createElement("p",null)),o.createElement("div",{className:"extraInfo"},o.createElement("p",null,o.createElement("small",null,o.createElement("strong",null,"License:")," ",e)),t,o.createElement("p",null,o.createElement("small",null,o.createElement("em",null,"Last updated ",this.props.plugin.modified," days ago")))))))}}),p=null;window.addEventListener("popstate",function(e){if(e.state){var t=o.render(o.createElement(i,null),document.getElementById("container"));t.loadFilterText(e.state.filterText)}});var d=o.createClass({displayName:"PluginList",contains:function(e,t){var n=!0;return 0==e.length?n:t?(e.forEach(function(e){for(var r=!1,o=0;o<t.length;o++)t[o]&&t[o].toLowerCase().indexOf(e)>-1&&(r=!0);r||(n=!1)}),n):!1},populateFilters:function(e){var t=e.split(" "),n=[];return n.platforms=[],n.authors=[],n.licens
 es=[],n.searchWords=[],t.forEach(function(e){var t=e.split(":");if(1==t.length){var r=t[0].trim();r&&n.searchWords.push(r)}else if(t[1].trim()){var r=t[1].trim();switch(t[0]){case"platform":n.platforms.push(r);break;case"author":n.authors.push(r);break;case"license":n.licenses.push(r);break;default:n.searchWords.push(e)}}else n.searchWords.push(e)}),n},render:function(){var e=[],t=this.props.filterText.toLowerCase(),n=function(){return function(e,t){clearTimeout(p),p=setTimeout(e,t)}}();n(function(){window.history.pushState({filterText:t},"","?q="+t)},2e3);var r=this.populateFilters(t);return this.props.plugins.forEach(function(t){var n=t.name.concat(t.author,t.keywords,t.license,t.description);this.contains(r.platforms,t.keywords)&&this.contains(r.authors,t.author)&&this.contains(r.licenses,t.license)&&this.contains(r.searchWords,n)&&e.push(o.createElement(l,{plugin:t,key:t.author+t.name}))}.bind(this)),o.createElement("div",{className:"col-xs-offset-2 col-xs-8"},o.createElement("u
 l",{className:"pluginList"},e))}}),i=o.createClass({displayName:"App",getInitialState:function(){return{plugins:[],filterText:"",placeHolderText:"Loading..."}},handleUserInput:function(e){this.setState({filterText:e})},addCondition:function(e){this.setState(function(t,n){return t.filterText.indexOf(e)>-1?{filterText:t.filterText,plugins:t.plugins}:{filterText:t.filterText.trim()+" "+e+" ",plugins:t.plugins}})},loadFilterText:function(e){this.setState(function(t,n){return{filterText:e,plugins:t.plugins}})},getURLParameter:function(e){return decodeURIComponent((new RegExp("[?|&]"+e+"=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null},componentDidMount:function(){function t(e,t){var n=t.length,r=new Date,o=864e5;e.forEach(function(e){for(var n=0;n<t.length;n++)if(t[n].name[0]===e)return void(t[n].isOfficial=!0)});for(var i=t.length-1;i>=0;i--)for(var s=0;s<a.length;s++)if(t[i].name[0]===a[s]){t.splice(i,1);break}for(var i=0;i<t.length;i++)t[i].modified=M
 ath.ceil((r-new Date(t[i].modified))/o);if(this.isMounted()){var u=this.getURLParameter("q");this.setState(u?{plugins:t,filterText:u}:{plugins:t,placeHolderText:"Search "+n+" plugins..."}),d(t,this)}}var n=[],o=e("./official-plugins.json").plugins,a=e("./blacklisted-plugins.json").plugins,i=0,s=this,u="http://npmsearch.com/query",c="fields=name,keywords,license,description,author,modified,homepage,version",l="q=keywords:%22ecosystem:cordova%22",p=300;r(u+"?"+c+"&"+l+"&size="+p+"&start=0",function(e){n=e.results,i=e.total,p>=i?t.bind(s,o,n)():r(u+"?"+c+"&"+l+"&size="+(i-p)+"&start="+p,function(e){n=[].concat(n,e.results),t.bind(s,o,n)()},function(){console.log("xhr err")})},function(){console.log("xhr err")});var d=function(e,t){for(var n="",o=0;o<e.length;o++)n+=e[o].name+",",(o%50===0||o===e.length-1)&&(r("https://api.npmjs.org/downloads/point/last-month/"+n,function(n){e.forEach(function(e){n[e.name]&&(e.downloadCount=n[e.name].downloads)}),t.setState({plugins:e})}.bind(s),functio
 n(){console.log("xhr err")}),n="")}},render:function(){return o.createElement("div",null,o.createElement("div",{className:"row",id:"headerBackground"},o.createElement("div",{className:"col-xs-offset-2 col-xs-8"},o.createElement("div",{id:"topContent",className:"row"},o.createElement("div",{className:"col-xs-3"},o.createElement("div",{id:"pluggy"})),o.createElement("div",{className:"col-xs-9"},o.createElement("h1",null,o.createElement("p",{className:"discover-message"},"Search Cordova Plugins"))))),o.createElement(c,{filterText:this.state.filterText,placeHolderText:this.state.placeHolderText,onUserInput:this.handleUserInput})),o.createElement("div",{className:"row"},o.createElement(d,{plugins:this.state.plugins,filterText:this.state.filterText})))}});i.start=function(){o.render(o.createElement(i,null),document.getElementById("container"))},t.exports=window.App=i},{"./blacklisted-plugins.json":2,"./official-plugins.json":3,classnames:4,react:159}],2:[function(e,t,n){t.exports={plugins
 :["cordova-wp8","cordova-wp8-testtest","cordova-app-hello-world"]}},{}],3:[function(e,t,n){t.exports={plugins:["cordova-plugin-battery-status","cordova-plugin-camera","cordova-plugin-console","cordova-plugin-contacts","cordova-plugin-device","cordova-plugin-device-motion","cordova-plugin-device-orientation","cordova-plugin-dialogs","cordova-plugin-file","cordova-plugin-file-transfer","cordova-plugin-geolocation","cordova-plugin-globalization","cordova-plugin-inappbrowser","cordova-plugin-legacy-whitelist","cordova-plugin-media","cordova-plugin-media-capture","cordova-plugin-ms-appinsights","cordova-plugin-network-information","cordova-plugin-splashscreen","cordova-plugin-statusbar","cordova-plugin-vibration","cordova-plugin-whitelist"]}},{}],4:[function(e,t,n){!function(){"use strict";function e(){for(var t="",n=0;n<arguments.length;n++){var r=arguments[n];if(r){var o=typeof r;if("string"===o||"number"===o)t+=" "+r;else if(Array.isArray(r))t+=" "+e.apply(null,r);else if("object"===o
 )for(var a in r)r.hasOwnProperty(a)&&r[a]&&(t+=" "+a)}}return t.substr(1)}"undefined"!=typeof t&&t.exports?t.exports=e:"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return e}):window.classNames=e}()},{}],5:[function(e,t,n){"use strict";var r=e("./focusNode"),o={componentDidMount:function(){this.props.autoFocus&&r(this.getDOMNode())}};t.exports=o},{"./focusNode":123}],6:[function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function a(e){switch(e){case w.topCompositionStart:return I.compositionStart;case w.topCompositionEnd:return I.compositionEnd;case w.topCompositionUpdate:return I.compositionUpdate}}function i(e,t){return e===w.topKeyDown&&t.keyCode===R}function s(e,t){switch(e){case w.topKeyUp:return-1!==C.indexOf(t.keyCode);case w.topKeyDown:return t.keyCode!==R;case w.topKe
 yPress:case w.topMouseDown:case w.topBlur:return!0;default:return!1}}function u(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function c(e,t,n,r){var o,c;if(b?o=a(e):T?s(e,r)&&(o=I.compositionEnd):i(e,r)&&(o=I.compositionStart),!o)return null;_&&(T||o!==I.compositionStart?o===I.compositionEnd&&T&&(c=T.getData()):T=v.getPooled(t));var l=g.getPooled(o,n,r);if(c)l.data=c;else{var p=u(r);null!==p&&(l.data=p)}return h.accumulateTwoPhaseDispatches(l),l}function l(e,t){switch(e){case w.topCompositionEnd:return u(t);case w.topKeyPress:var n=t.which;return n!==O?null:(P=!0,D);case w.topTextInput:var r=t.data;return r===D&&P?null:r;default:return null}}function p(e,t){if(T){if(e===w.topCompositionEnd||s(e,t)){var n=T.getData();return v.release(T),T=null,n}return null}switch(e){case w.topPaste:return null;case w.topKeyPress:return t.which&&!o(t)?String.fromCharCode(t.which):null;case w.topCompositionEnd:return _?null:t.data;default:return null}}function d(e,t,n,r){var o;if
 (o=M?l(e,r):p(e,r),!o)return null;var a=y.getPooled(I.beforeInput,n,r);return a.data=o,h.accumulateTwoPhaseDispatches(a),a}var f=e("./EventConstants"),h=e("./EventPropagators"),m=e("./ExecutionEnvironment"),v=e("./FallbackCompositionState"),g=e("./SyntheticCompositionEvent"),y=e("./SyntheticInputEvent"),E=e("./keyOf"),C=[9,13,27,32],R=229,b=m.canUseDOM&&"CompositionEvent"in window,x=null;m.canUseDOM&&"documentMode"in document&&(x=document.documentMode);var M=m.canUseDOM&&"TextEvent"in window&&!x&&!r(),_=m.canUseDOM&&(!b||x&&x>8&&11>=x),O=32,D=String.fromCharCode(O),w=f.topLevelTypes,I={beforeInput:{phasedRegistrationNames:{bubbled:E({onBeforeInput:null}),captured:E({onBeforeInputCapture:null})},dependencies:[w.topCompositionEnd,w.topKeyPress,w.topTextInput,w.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:E({onCompositionEnd:null}),captured:E({onCompositionEndCapture:null})},dependencies:[w.topBlur,w.topCompositionEnd,w.topKeyDown,w.topKeyPress,w.topKeyUp,w.topMouseDown]
 },compositionStart:{phasedRegistrationNames:{bubbled:E({onCompositionStart:null}),captured:E({onCompositionStartCapture:null})},dependencies:[w.topBlur,w.topCompositionStart,w.topKeyDown,w.topKeyPress,w.topKeyUp,w.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:E({onCompositionUpdate:null}),captured:E({onCompositionUpdateCapture:null})},dependencies:[w.topBlur,w.topCompositionUpdate,w.topKeyDown,w.topKeyPress,w.topKeyUp,w.topMouseDown]}},P=!1,T=null,N={eventTypes:I,extractEvents:function(e,t,n,r){return[c(e,t,n,r),d(e,t,n,r)]}};t.exports=N},{"./EventConstants":18,"./EventPropagators":23,"./ExecutionEnvironment":24,"./FallbackCompositionState":25,"./SyntheticCompositionEvent":97,"./SyntheticInputEvent":101,"./keyOf":145}],7:[function(e,t,n){"use strict";function r(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var o={boxFlex:!0,boxFlexGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,fontWeight:!0,lineClamp:!0,lineHei
 ght:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0},a=["Webkit","ms","Moz","O"];Object.keys(o).forEach(function(e){a.forEach(function(t){o[r(t,e)]=o[e]})});var i={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},s={isUnitlessNumber:o,shorthandPropertyExpansions:i};t.exports=s},{}],8:[function(e,t,n){"use strict";var r=e("./CSSProperty"),o=e("./ExecutionEnvironment"),a=(e("./camelizeStyleName"),e("./dangerousStyleValue")),i=e("./hyphena
 teStyleName"),s=e("./memoizeStringOnly"),u=(e("./warning"),s(function(e){return i(e)})),c="cssFloat";o.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(c="styleFloat");var l={createMarkupForStyles:function(e){var t="";for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];null!=r&&(t+=u(n)+":",t+=a(n,r)+";")}return t||null},setValueForStyles:function(e,t){var n=e.style;for(var o in t)if(t.hasOwnProperty(o)){var i=a(o,t[o]);if("float"===o&&(o=c),i)n[o]=i;else{var s=r.shorthandPropertyExpansions[o];if(s)for(var u in s)n[u]="";else n[o]=""}}}};t.exports=l},{"./CSSProperty":7,"./ExecutionEnvironment":24,"./camelizeStyleName":112,"./dangerousStyleValue":117,"./hyphenateStyleName":137,"./memoizeStringOnly":147,"./warning":158}],9:[function(e,t,n){"use strict";function r(){this._callbacks=null,this._contexts=null}var o=e("./PooledClass"),a=e("./Object.assign"),i=e("./invariant");a(r.prototype,{enqueue:function(e,t){this._callbacks=this._callbacks||[],this._contexts=this._contexts||
 [],this._callbacks.push(e),this._contexts.push(t)},notifyAll:function(){var e=this._callbacks,t=this._contexts;if(e){i(e.length===t.length),this._callbacks=null,this._contexts=null;for(var n=0,r=e.length;r>n;n++)e[n].call(t[n]);e.length=0,t.length=0}},reset:function(){this._callbacks=null,this._contexts=null},destructor:function(){this.reset()}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":30,"./PooledClass":31,"./invariant":139}],10:[function(e,t,n){"use strict";function r(e){return"SELECT"===e.nodeName||"INPUT"===e.nodeName&&"file"===e.type}function o(e){var t=x.getPooled(w.change,P,e);C.accumulateTwoPhaseDispatches(t),b.batchedUpdates(a,t)}function a(e){E.enqueueEvents(e),E.processEventQueue()}function i(e,t){I=e,P=t,I.attachEvent("onchange",o)}function s(){I&&(I.detachEvent("onchange",o),I=null,P=null)}function u(e,t,n){return e===D.topChange?n:void 0}function c(e,t,n){e===D.topFocus?(s(),i(t,n)):e===D.topBlur&&s()}function l(e,t){I=e,P=t,T=e.value,N=Object.getOwnPropertyD
 escriptor(e.constructor.prototype,"value"),Object.defineProperty(I,"value",A),I.attachEvent("onpropertychange",d)}function p(){I&&(delete I.value,I.detachEvent("onpropertychange",d),I=null,P=null,T=null,N=null)}function d(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==T&&(T=t,o(e))}}function f(e,t,n){return e===D.topInput?n:void 0}function h(e,t,n){e===D.topFocus?(p(),l(t,n)):e===D.topBlur&&p()}function m(e,t,n){return e!==D.topSelectionChange&&e!==D.topKeyUp&&e!==D.topKeyDown||!I||I.value===T?void 0:(T=I.value,P)}function v(e){return"INPUT"===e.nodeName&&("checkbox"===e.type||"radio"===e.type)}function g(e,t,n){return e===D.topClick?n:void 0}var y=e("./EventConstants"),E=e("./EventPluginHub"),C=e("./EventPropagators"),R=e("./ExecutionEnvironment"),b=e("./ReactUpdates"),x=e("./SyntheticEvent"),M=e("./isEventSupported"),_=e("./isTextInputElement"),O=e("./keyOf"),D=y.topLevelTypes,w={change:{phasedRegistrationNames:{bubbled:O({onChange:null}),captured:O({onChangeCapture:
 null})},dependencies:[D.topBlur,D.topChange,D.topClick,D.topFocus,D.topInput,D.topKeyDown,D.topKeyUp,D.topSelectionChange]}},I=null,P=null,T=null,N=null,S=!1;R.canUseDOM&&(S=M("change")&&(!("documentMode"in document)||document.documentMode>8));var k=!1;R.canUseDOM&&(k=M("input")&&(!("documentMode"in document)||document.documentMode>9));var A={get:function(){return N.get.call(this)},set:function(e){T=""+e,N.set.call(this,e)}},U={eventTypes:w,extractEvents:function(e,t,n,o){var a,i;if(r(t)?S?a=u:i=c:_(t)?k?a=f:(a=m,i=h):v(t)&&(a=g),a){var s=a(e,t,n);if(s){var l=x.getPooled(w.change,s,o);return C.accumulateTwoPhaseDispatches(l),l}}i&&i(e,t,n)}};t.exports=U},{"./EventConstants":18,"./EventPluginHub":20,"./EventPropagators":23,"./ExecutionEnvironment":24,"./ReactUpdates":91,"./SyntheticEvent":99,"./isEventSupported":140,"./isTextInputElement":142,"./keyOf":145}],11:[function(e,t,n){"use strict";var r=0,o={createReactRootIndex:function(){return r++}};t.exports=o},{}],12:[function(e,t,n){"
 use strict";function r(e,t,n){e.insertBefore(t,e.childNodes[n]||null)}var o=e("./Danger"),a=e("./ReactMultiChildUpdateTypes"),i=e("./setTextContent"),s=e("./invariant"),u={dangerouslyReplaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup,updateTextContent:i,processUpdates:function(e,t){for(var n,u=null,c=null,l=0;l<e.length;l++)if(n=e[l],n.type===a.MOVE_EXISTING||n.type===a.REMOVE_NODE){var p=n.fromIndex,d=n.parentNode.childNodes[p],f=n.parentID;s(d),u=u||{},u[f]=u[f]||[],u[f][p]=d,c=c||[],c.push(d)}var h=o.dangerouslyRenderMarkup(t);if(c)for(var m=0;m<c.length;m++)c[m].parentNode.removeChild(c[m]);for(var v=0;v<e.length;v++)switch(n=e[v],n.type){case a.INSERT_MARKUP:r(n.parentNode,h[n.markupIndex],n.toIndex);break;case a.MOVE_EXISTING:r(n.parentNode,u[n.parentID][n.fromIndex],n.toIndex);break;case a.TEXT_CONTENT:i(n.parentNode,n.textContent);break;case a.REMOVE_NODE:}}};t.exports=u},{"./Danger":15,"./ReactMultiChildUpdateTypes":76,"./invariant":139,"./setTextContent":153}],13:[fu
 nction(e,t,n){"use strict";function r(e,t){return(e&t)===t}var o=e("./invariant"),a={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(e){var t=e.Properties||{},n=e.DOMAttributeNames||{},i=e.DOMPropertyNames||{},u=e.DOMMutationMethods||{};e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var c in t){o(!s.isStandardName.hasOwnProperty(c)),s.isStandardName[c]=!0;var l=c.toLowerCase();if(s.getPossibleStandardName[l]=c,n.hasOwnProperty(c)){var p=n[c];s.getPossibleStandardName[p]=c,s.getAttributeName[c]=p}else s.getAttributeName[c]=l;s.getPropertyName[c]=i.hasOwnProperty(c)?i[c]:c,s.getMutationMethod[c]=u.hasOwnProperty(c)?u[c]:null;var d=t[c];s.mustUseAttribute[c]=r(d,a.MUST_USE_ATTRIBUTE),s.mustUseProperty[c]=r(d,a.MUST_USE_PROPERTY),s.hasSideEffects[c]=r(d,a.HAS_SIDE_EFFECTS),s.hasBooleanValue[c]=r(d,a.HAS_BOOL
 EAN_VALUE),s.hasNumericValue[c]=r(d,a.HAS_NUMERIC_VALUE),s.hasPositiveNumericValue[c]=r(d,a.HAS_POSITIVE_NUMERIC_VALUE),s.hasOverloadedBooleanValue[c]=r(d,a.HAS_OVERLOADED_BOOLEAN_VALUE),o(!s.mustUseAttribute[c]||!s.mustUseProperty[c]),o(s.mustUseProperty[c]||!s.hasSideEffects[c]),o(!!s.hasBooleanValue[c]+!!s.hasNumericValue[c]+!!s.hasOverloadedBooleanValue[c]<=1)}}},i={},s={ID_ATTRIBUTE_NAME:"data-reactid",isStandardName:{},getPossibleStandardName:{},getAttributeName:{},getPropertyName:{},getMutationMethod:{},mustUseAttribute:{},mustUseProperty:{},hasSideEffects:{},hasBooleanValue:{},hasNumericValue:{},hasPositiveNumericValue:{},hasOverloadedBooleanValue:{},_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t<s._isCustomAttributeFunctions.length;t++){var n=s._isCustomAttributeFunctions[t];if(n(e))return!0}return!1},getDefaultValueForProperty:function(e,t){var n,r=i[e];return r||(i[e]=r={}),t in r||(n=document.createElement(e),r[t]=n[t]),r[t]},injection:a};t.ex
 ports=s},{"./invariant":139}],14:[function(e,t,n){"use strict";function r(e,t){return null==t||o.hasBooleanValue[e]&&!t||o.hasNumericValue[e]&&isNaN(t)||o.hasPositiveNumericValue[e]&&1>t||o.hasOverloadedBooleanValue[e]&&t===!1}var o=e("./DOMProperty"),a=e("./quoteAttributeValueForBrowser"),i=(e("./warning"),{createMarkupForID:function(e){return o.ID_ATTRIBUTE_NAME+"="+a(e)},createMarkupForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(e)&&o.isStandardName[e]){if(r(e,t))return"";var n=o.getAttributeName[e];return o.hasBooleanValue[e]||o.hasOverloadedBooleanValue[e]&&t===!0?n:n+"="+a(t)}return o.isCustomAttribute(e)?null==t?"":e+"="+a(t):null},setValueForProperty:function(e,t,n){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var a=o.getMutationMethod[t];if(a)a(e,n);else if(r(t,n))this.deleteValueForProperty(e,t);else if(o.mustUseAttribute[t])e.setAttribute(o.getAttributeName[t],""+n);else{var i=o.getPropertyName[t];o.hasSideEffects[t]&&""+e[i]==""+n||(e[i]=n)}}
 else o.isCustomAttribute(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var n=o.getMutationMethod[t];if(n)n(e,void 0);else if(o.mustUseAttribute[t])e.removeAttribute(o.getAttributeName[t]);else{var r=o.getPropertyName[t],a=o.getDefaultValueForProperty(e.nodeName,r);o.hasSideEffects[t]&&""+e[r]===a||(e[r]=a)}}else o.isCustomAttribute(t)&&e.removeAttribute(t)}});t.exports=i},{"./DOMProperty":13,"./quoteAttributeValueForBrowser":151,"./warning":158}],15:[function(e,t,n){"use strict";function r(e){return e.substring(1,e.indexOf(" "))}var o=e("./ExecutionEnvironment"),a=e("./createNodesFromMarkup"),i=e("./emptyFunction"),s=e("./getMarkupWrap"),u=e("./invariant"),c=/^(<[^ \/>]+)/,l="data-danger-index",p={dangerouslyRenderMarkup:function(e){u(o.canUseDOM);for(var t,n={},p=0;p<e.length;p++)u(e[p]),t=r(e[p]),t=s(t)?t:"*",n[t]=n[t]||[],n[t][p]=e[p];var d=[],f=0;for(t in n)if(n.hasOwnPr
 operty(t)){var h,m=n[t];for(h in m)if(m.hasOwnProperty(h)){var v=m[h];m[h]=v.replace(c,"$1 "+l+'="'+h+'" ')}for(var g=a(m.join(""),i),y=0;y<g.length;++y){var E=g[y];E.hasAttribute&&E.hasAttribute(l)&&(h=+E.getAttribute(l),E.removeAttribute(l),u(!d.hasOwnProperty(h)),d[h]=E,f+=1)}}return u(f===d.length),u(d.length===e.length),d},dangerouslyReplaceNodeWithMarkup:function(e,t){u(o.canUseDOM),u(t),u("html"!==e.tagName.toLowerCase());var n=a(t,i)[0];e.parentNode.replaceChild(n,e)}};t.exports=p},{"./ExecutionEnvironment":24,"./createNodesFromMarkup":116,"./emptyFunction":118,"./getMarkupWrap":131,"./invariant":139}],16:[function(e,t,n){"use strict";var r=e("./keyOf"),o=[r({ResponderEventPlugin:null}),r({SimpleEventPlugin:null}),r({TapEventPlugin:null}),r({EnterLeaveEventPlugin:null}),r({ChangeEventPlugin:null}),r({SelectEventPlugin:null}),r({BeforeInputEventPlugin:null}),r({AnalyticsEventPlugin:null}),r({MobileSafariClickEventPlugin:null})];t.exports=o},{"./keyOf":145}],17:[function(e,t,n
 ){"use strict";var r=e("./EventConstants"),o=e("./EventPropagators"),a=e("./SyntheticMouseEvent"),i=e("./ReactMount"),s=e("./keyOf"),u=r.topLevelTypes,c=i.getFirstReactDOM,l={mouseEnter:{registrationName:s({onMouseEnter:null}),dependencies:[u.topMouseOut,u.topMouseOver]},mouseLeave:{registrationName:s({onMouseLeave:null}),dependencies:[u.topMouseOut,u.topMouseOver]}},p=[null,null],d={eventTypes:l,extractEvents:function(e,t,n,r){if(e===u.topMouseOver&&(r.relatedTarget||r.fromElement))return null;if(e!==u.topMouseOut&&e!==u.topMouseOver)return null;var s;if(t.window===t)s=t;else{var d=t.ownerDocument;s=d?d.defaultView||d.parentWindow:window}var f,h;if(e===u.topMouseOut?(f=t,h=c(r.relatedTarget||r.toElement)||s):(f=s,h=t),f===h)return null;var m=f?i.getID(f):"",v=h?i.getID(h):"",g=a.getPooled(l.mouseLeave,m,r);g.type="mouseleave",g.target=f,g.relatedTarget=h;var y=a.getPooled(l.mouseEnter,v,r);return y.type="mouseenter",y.target=h,y.relatedTarget=f,o.accumulateEnterLeaveDispatches(g,y,
 m,v),p[0]=g,p[1]=y,p}};t.exports=d},{"./EventConstants":18,"./EventPropagators":23,"./ReactMount":74,"./SyntheticMouseEvent":103,"./keyOf":145}],18:[function(e,t,n){"use strict";var r=e("./keyMirror"),o=r({bubbled:null,captured:null}),a=r({topBlur:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topError:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topReset:null,topScroll:null,topSelectionChange:null,topSubmit:null,topTextInput:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topWheel:null}),i={topLevelTypes:a,PropagationPhases:o};t.exports=i},{"./keyMirror"
 :144}],19:[function(e,t,n){var r=e("./emptyFunction"),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};t.exports=o},{"./emptyFunction":118}],20:[function(e,t,n){"use strict";var r=e("./EventPluginRegistry"),o=e("./EventPluginUtils"),a=e("./accumulateInto"),i=e("./forEachAccumulated"),s=e("./invariant"),u={},c=null,l=function(e){if(e){var t=o.executeDispatch,n=r.getPluginModuleForEvent(e);n&&n.executeDispatch&&(t=n.executeDispatch),o.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e)}},p=null,d={injection:{injectMount:o.injection.injectMount,injectInstanceHandle:function(e){p=e},getInstanceHandle:function(){return p},inj
 ectEventPluginOrder:r.injectEventPluginOrder,injectEventPluginsByName:r.injectEventPluginsByName},eventNameDispatchConfigs:r.eventNameDispatchConfigs,registrationNameModules:r.registrationNameModules,putListener:function(e,t,n){s(!n||"function"==typeof n);var r=u[t]||(u[t]={});r[e]=n},getListener:function(e,t){var n=u[t];return n&&n[e]},deleteListener:function(e,t){var n=u[t];n&&delete n[e]},deleteAllListeners:function(e){for(var t in u)delete u[t][e]},extractEvents:function(e,t,n,o){for(var i,s=r.plugins,u=0,c=s.length;c>u;u++){var l=s[u];if(l){var p=l.extractEvents(e,t,n,o);p&&(i=a(i,p))}}return i},enqueueEvents:function(e){e&&(c=a(c,e))},processEventQueue:function(){var e=c;c=null,i(e,l),s(!c)},__purge:function(){u={}},__getListenerBank:function(){return u}};t.exports=d},{"./EventPluginRegistry":21,"./EventPluginUtils":22,"./accumulateInto":109,"./forEachAccumulated":124,"./invariant":139}],21:[function(e,t,n){"use strict";function r(){if(s)for(var e in u){var t=u[e],n=s.indexOf(
 e);if(i(n>-1),!c.plugins[n]){i(t.extractEvents),c.plugins[n]=t;var r=t.eventTypes;for(var a in r)i(o(r[a],t,a))}}}function o(e,t,n){i(!c.eventNameDispatchConfigs.hasOwnProperty(n)),c.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var s=r[o];a(s,t,n)}return!0}return e.registrationName?(a(e.registrationName,t,n),!0):!1}function a(e,t,n){i(!c.registrationNameModules[e]),c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=e("./invariant"),s=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){i(!s),s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];u.hasOwnProperty(n)&&u[n]===o||(i(!u[n]),u[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registratio
 nNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=c.registrationNameModules[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){s=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=c.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};t.exports=c},{"./invariant":139}],22:[function(e,t,n){"use strict";function r(e){return e===v.topMouseUp||e===v.topTouchEnd||e===v.topTouchCancel}function o(e){return e===v.topMouseMove||e===v.topTouchMove}function a(e){return e===v.topMouseDown||e===v.topTouchStart}function i(e,t){var n=e._dispatchListeners,r=e._dispatchIDs;if(Array.isArray(n))for(var o=0;o<n.length&&!e.isPropagationStopped();o++)t(e,n[o],r[o]);else n&&t(e,n,r)}function s(e,t,n){e.currentTarget=m.Mount.getNode(n);var r=t(e,n);return e.current
 Target=null,r}function u(e,t){i(e,t),e._dispatchListeners=null,e._dispatchIDs=null}function c(e){var t=e._dispatchListeners,n=e._dispatchIDs;if(Array.isArray(t)){for(var r=0;r<t.length&&!e.isPropagationStopped();r++)if(t[r](e,n[r]))return n[r]}else if(t&&t(e,n))return n;return null}function l(e){var t=c(e);return e._dispatchIDs=null,e._dispatchListeners=null,t}function p(e){var t=e._dispatchListeners,n=e._dispatchIDs;h(!Array.isArray(t));var r=t?t(e,n):null;return e._dispatchListeners=null,e._dispatchIDs=null,r}function d(e){return!!e._dispatchListeners}var f=e("./EventConstants"),h=e("./invariant"),m={Mount:null,injectMount:function(e){m.Mount=e}},v=f.topLevelTypes,g={isEndish:r,isMoveish:o,isStartish:a,executeDirectDispatch:p,executeDispatch:s,executeDispatchesInOrder:u,executeDispatchesInOrderStopAtTrue:l,hasDispatches:d,injection:m,useTouchEvents:!1};t.exports=g},{"./EventConstants":18,"./invariant":139}],23:[function(e,t,n){"use strict";function r(e,t,n){var r=t.dispatchConfig.
 phasedRegistrationNames[n];return v(e,r)}function o(e,t,n){var o=t?m.bubbled:m.captured,a=r(e,n,o);
-
-a&&(n._dispatchListeners=f(n._dispatchListeners,a),n._dispatchIDs=f(n._dispatchIDs,e))}function a(e){e&&e.dispatchConfig.phasedRegistrationNames&&d.injection.getInstanceHandle().traverseTwoPhase(e.dispatchMarker,o,e)}function i(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=v(e,r);o&&(n._dispatchListeners=f(n._dispatchListeners,o),n._dispatchIDs=f(n._dispatchIDs,e))}}function s(e){e&&e.dispatchConfig.registrationName&&i(e.dispatchMarker,null,e)}function u(e){h(e,a)}function c(e,t,n,r){d.injection.getInstanceHandle().traverseEnterLeave(n,r,i,e,t)}function l(e){h(e,s)}var p=e("./EventConstants"),d=e("./EventPluginHub"),f=e("./accumulateInto"),h=e("./forEachAccumulated"),m=p.PropagationPhases,v=d.getListener,g={accumulateTwoPhaseDispatches:u,accumulateDirectDispatches:l,accumulateEnterLeaveDispatches:c};t.exports=g},{"./EventConstants":18,"./EventPluginHub":20,"./accumulateInto":109,"./forEachAccumulated":124}],24:[function(e,t,n){"use strict"
 ;var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};t.exports=o},{}],25:[function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=e("./PooledClass"),a=e("./Object.assign"),i=e("./getTextContentAccessor");a(r.prototype,{getText:function(){return"value"in this._root?this._root.value:this._root[i()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),a=o.length;for(e=0;r>e&&n[e]===o[e];e++);var i=r-e;for(t=1;i>=t&&n[r-t]===o[a-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":30,"./PooledClass":31,"./getTextContentAccessor":134}],26:[function(e,t,n){"use strict
 ";var r,o=e("./DOMProperty"),a=e("./ExecutionEnvironment"),i=o.injection.MUST_USE_ATTRIBUTE,s=o.injection.MUST_USE_PROPERTY,u=o.injection.HAS_BOOLEAN_VALUE,c=o.injection.HAS_SIDE_EFFECTS,l=o.injection.HAS_NUMERIC_VALUE,p=o.injection.HAS_POSITIVE_NUMERIC_VALUE,d=o.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(a.canUseDOM){var f=document.implementation;r=f&&f.hasFeature&&f.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var h={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|u,allowTransparency:i,alt:null,async:u,autoComplete:null,autoPlay:u,cellPadding:null,cellSpacing:null,charSet:i,checked:s|u,classID:i,className:r?i:s,cols:i|p,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:s|u,coords:null,crossOrigin:null,data:null,dateTime:i,defer:u,dir:null,disabled:i|u,download:d,draggable:null,encType:null,form:i,formAction:i,formEncTy
 pe:i,formMethod:i,formNoValidate:u,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|u,high:null,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:s,label:null,lang:null,list:i,loop:s|u,low:null,manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,multiple:s|u,muted:s|u,name:null,noValidate:u,open:u,optimum:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:s|u,rel:null,required:u,role:i,rows:i|p,rowSpan:null,sandbox:null,scope:null,scoped:u,scrolling:null,seamless:i|u,selected:s|u,shape:null,size:i|p,sizes:i,span:p,spellCheck:null,src:null,srcDoc:s,srcSet:i,start:l,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:s|c,width:i,wmode:i,autoCapitalize:null,autoCorrect:null,itemProp:i,itemScope:i|u,itemType:i,itemID:i,itemRef:i,property:null,unselectable:i},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for
 ",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"encoding",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};t.exports=h},{"./DOMProperty":13,"./ExecutionEnvironment":24}],27:[function(e,t,n){"use strict";function r(e){c(null==e.props.checkedLink||null==e.props.valueLink)}function o(e){r(e),c(null==e.props.value&&null==e.props.onChange)}function a(e){r(e),c(null==e.props.checked&&null==e.props.onChange)}function i(e){this.props.valueLink.requestChange(e.target.value)}function s(e){this.props.checkedLink.requestChange(e.target.checked)}var u=e("./ReactPropTypes"),c=e("./invariant"),l={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},p={Mixin:{propTypes:{value:function(e,t,n){return!e[t]||l[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a f
 orm field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:u.func}},getValue:function(e){return e.props.valueLink?(o(e),e.props.valueLink.value):e.props.value},getChecked:function(e){return e.props.checkedLink?(a(e),e.props.checkedLink.value):e.props.checked},getOnChange:function(e){return e.props.valueLink?(o(e),i):e.props.checkedLink?(a(e),s):e.props.onChange}};t.exports=p},{"./ReactPropTypes":82,"./invariant":139}],28:[function(e,t,n){"use strict";function r(e){e.remove()}var o=e("./ReactBrowserEventEmitter"),a=e("./accumulateInto"),i=e("./forEachAccumul
 ated"),s=e("./invariant"),u={trapBubbledEvent:function(e,t){s(this.isMounted());var n=this.getDOMNode();s(n);var r=o.trapBubbledEvent(e,t,n);this._localEventListeners=a(this._localEventListeners,r)},componentWillUnmount:function(){this._localEventListeners&&i(this._localEventListeners,r)}};t.exports=u},{"./ReactBrowserEventEmitter":34,"./accumulateInto":109,"./forEachAccumulated":124,"./invariant":139}],29:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./emptyFunction"),a=r.topLevelTypes,i={eventTypes:null,extractEvents:function(e,t,n,r){if(e===a.topTouchStart){var i=r.target;i&&!i.onclick&&(i.onclick=o)}}};t.exports=i},{"./EventConstants":18,"./emptyFunction":118}],30:[function(e,t,n){"use strict";function r(e,t){if(null==e)throw new TypeError("Object.assign target cannot be null or undefined");for(var n=Object(e),r=Object.prototype.hasOwnProperty,o=1;o<arguments.length;o++){var a=arguments[o];if(null!=a){var i=Object(a);for(var s in i)r.call(i,s)&&(n[s]=i[s])}}retu
 rn n}t.exports=r},{}],31:[function(e,t,n){"use strict";var r=e("./invariant"),o=function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)},a=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},i=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},s=function(e,t,n,r,o){var a=this;if(a.instancePool.length){var i=a.instancePool.pop();return a.call(i,e,t,n,r,o),i}return new a(e,t,n,r,o)},u=function(e){var t=this;r(e instanceof t),e.destructor&&e.destructor(),t.instancePool.length<t.poolSize&&t.instancePool.push(e)},c=10,l=o,p=function(e,t){var n=e;return n.instancePool=[],n.getPooled=t||l,n.poolSize||(n.poolSize=c),n.release=u,n},d={addPoolingTo:p,oneArgumentPooler:o,twoArgumentPooler:a,threeArgumentPooler:i,fiveArgumentPooler:s};t.exports=d},{"./invariant":139}],32:[function(e,t,n){"use stric
 t";var r=e("./EventPluginUtils"),o=e("./ReactChildren"),a=e("./ReactComponent"),i=e("./ReactClass"),s=e("./ReactContext"),u=e("./ReactCurrentOwner"),c=e("./ReactElement"),l=(e("./ReactElementValidator"),e("./ReactDOM")),p=e("./ReactDOMTextComponent"),d=e("./ReactDefaultInjection"),f=e("./ReactInstanceHandles"),h=e("./ReactMount"),m=e("./ReactPerf"),v=e("./ReactPropTypes"),g=e("./ReactReconciler"),y=e("./ReactServerRendering"),E=e("./Object.assign"),C=e("./findDOMNode"),R=e("./onlyChild");d.inject();var b=c.createElement,x=c.createFactory,M=c.cloneElement,_=m.measure("React","render",h.render),O={Children:{map:o.map,forEach:o.forEach,count:o.count,only:R},Component:a,DOM:l,PropTypes:v,initializeTouchEvents:function(e){r.useTouchEvents=e},createClass:i.createClass,createElement:b,cloneElement:M,createFactory:x,createMixin:function(e){return e},constructAndRenderComponent:h.constructAndRenderComponent,constructAndRenderComponentByID:h.constructAndRenderComponentByID,findDOMNode:C,rende
 r:_,renderToString:y.renderToString,renderToStaticMarkup:y.renderToStaticMarkup,unmountComponentAtNode:h.unmountComponentAtNode,isValidElement:c.isValidElement,withContext:s.withContext,__spread:E};"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({CurrentOwner:u,InstanceHandles:f,Mount:h,Reconciler:g,TextComponent:p});O.version="0.13.3",t.exports=O},{"./EventPluginUtils":22,"./ExecutionEnvironment":24,"./Object.assign":30,"./ReactChildren":36,"./ReactClass":37,"./ReactComponent":38,"./ReactContext":42,"./ReactCurrentOwner":43,"./ReactDOM":44,"./ReactDOMTextComponent":55,"./ReactDefaultInjection":58,"./ReactElement":61,"./ReactElementValidator":62,"./ReactInstanceHandles":70,"./ReactMount":74,"./ReactPerf":79,"./ReactPropTypes":82,"./ReactReconciler":85,"./ReactServerRendering":88,"./findDOMNode":121,"./onlyChild":148}],33:[function(e,t,n){"use strict";var r=e("./findDOMNode"),o={getDOM
 Node:function(){return r(this)}};t.exports=o},{"./findDOMNode":121}],34:[function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=f++,p[e[m]]={}),p[e[m]]}var o=e("./EventConstants"),a=e("./EventPluginHub"),i=e("./EventPluginRegistry"),s=e("./ReactEventEmitterMixin"),u=e("./ViewportMetrics"),c=e("./Object.assign"),l=e("./isEventSupported"),p={},d=!1,f=0,h={topBlur:"blur",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouse
 Over:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topScroll:"scroll",topSelectionChange:"selectionchange",topTextInput:"textInput",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=c({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,a=r(n),s=i.registrationNameDependencies[e],u=o.topLevelTypes,c=0,p=s.length;p>c;c++){var d=s[c];a.hasOwnProperty(d)&&a[d]||(d===u.topWheel?l("wheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"wheel",n):l("mousewheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"mousewheel",n):v.ReactEventListener.trapBubbledEvent(u.topWhe
 el,"DOMMouseScroll",n):d===u.topScroll?l("scroll",!0)?v.ReactEventListener.trapCapturedEvent(u.topScroll,"scroll",n):v.ReactEventListener.trapBubbledEvent(u.topScroll,"scroll",v.ReactEventListener.WINDOW_HANDLE):d===u.topFocus||d===u.topBlur?(l("focus",!0)?(v.ReactEventListener.trapCapturedEvent(u.topFocus,"focus",n),v.ReactEventListener.trapCapturedEvent(u.topBlur,"blur",n)):l("focusin")&&(v.ReactEventListener.trapBubbledEvent(u.topFocus,"focusin",n),v.ReactEventListener.trapBubbledEvent(u.topBlur,"focusout",n)),a[u.topBlur]=!0,a[u.topFocus]=!0):h.hasOwnProperty(d)&&v.ReactEventListener.trapBubbledEvent(d,h[d],n),a[d]=!0)}},trapBubbledEvent:function(e,t,n){return v.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return v.ReactEventListener.trapCapturedEvent(e,t,n)},ensureScrollValueMonitoring:function(){if(!d){var e=u.refreshScrollValues;v.ReactEventListener.monitorScrollValue(e),d=!0}},eventNameDispatchConfigs:a.eventNameDispatchConfigs,registrationNa
 meModules:a.registrationNameModules,putListener:a.putListener,getListener:a.getListener,deleteListener:a.deleteListener,deleteAllListeners:a.deleteAllListeners});t.exports=v},{"./EventConstants":18,"./EventPluginHub":20,"./EventPluginRegistry":21,"./Object.assign":30,"./ReactEventEmitterMixin":65,"./ViewportMetrics":108,"./isEventSupported":140}],35:[function(e,t,n){"use strict";var r=e("./ReactReconciler"),o=e("./flattenChildren"),a=e("./instantiateReactComponent"),i=e("./shouldUpdateReactComponent"),s={instantiateChildren:function(e,t,n){var r=o(e);for(var i in r)if(r.hasOwnProperty(i)){var s=r[i],u=a(s,null);r[i]=u}return r},updateChildren:function(e,t,n,s){var u=o(t);if(!u&&!e)return null;var c;for(c in u)if(u.hasOwnProperty(c)){var l=e&&e[c],p=l&&l._currentElement,d=u[c];if(i(p,d))r.receiveComponent(l,d,n,s),u[c]=l;else{l&&r.unmountComponent(l,c);var f=a(d,null);u[c]=f}}for(c in e)!e.hasOwnProperty(c)||u&&u.hasOwnProperty(c)||r.unmountComponent(e[c]);return u},unmountChildren:f
 unction(e){for(var t in e){var n=e[t];r.unmountComponent(n)}}};t.exports=s},{"./ReactReconciler":85,"./flattenChildren":122,"./instantiateReactComponent":138,"./shouldUpdateReactComponent":155}],36:[function(e,t,n){"use strict";function r(e,t){this.forEachFunction=e,this.forEachContext=t}function o(e,t,n,r){var o=e;o.forEachFunction.call(o.forEachContext,t,r)}function a(e,t,n){if(null==e)return e;var a=r.getPooled(t,n);f(e,o,a),r.release(a)}function i(e,t,n){this.mapResult=e,this.mapFunction=t,this.mapContext=n}function s(e,t,n,r){var o=e,a=o.mapResult,i=!a.hasOwnProperty(n);if(i){var s=o.mapFunction.call(o.mapContext,t,r);a[n]=s}}function u(e,t,n){if(null==e)return e;var r={},o=i.getPooled(r,t,n);return f(e,s,o),i.release(o),d.create(r)}function c(e,t,n,r){return null}function l(e,t){return f(e,c,null)}var p=e("./PooledClass"),d=e("./ReactFragment"),f=e("./traverseAllChildren"),h=(e("./warning"),p.twoArgumentPooler),m=p.threeArgumentPooler;p.addPoolingTo(r,h),p.addPoolingTo(i,m);va
 r v={forEach:a,map:u,count:l};t.exports=v},{"./PooledClass":31,"./ReactFragment":67,"./traverseAllChildren":157,"./warning":158}],37:[function(e,t,n){"use strict";function r(e,t){var n=M.hasOwnProperty(t)?M[t]:null;O.hasOwnProperty(t)&&y(n===b.OVERRIDE_BASE),e.hasOwnProperty(t)&&y(n===b.DEFINE_MANY||n===b.DEFINE_MANY_MERGED)}function o(e,t){if(t){y("function"!=typeof t),y(!d.isValidElement(t));var n=e.prototype;t.hasOwnProperty(R)&&_.mixins(e,t.mixins);for(var o in t)if(t.hasOwnProperty(o)&&o!==R){var a=t[o];if(r(n,o),_.hasOwnProperty(o))_[o](e,a);else{var i=M.hasOwnProperty(o),c=n.hasOwnProperty(o),l=a&&a.__reactDontBind,p="function"==typeof a,f=p&&!i&&!c&&!l;if(f)n.__reactAutoBindMap||(n.__reactAutoBindMap={}),n.__reactAutoBindMap[o]=a,n[o]=a;else if(c){var h=M[o];y(i&&(h===b.DEFINE_MANY_MERGED||h===b.DEFINE_MANY)),h===b.DEFINE_MANY_MERGED?n[o]=s(n[o],a):h===b.DEFINE_MANY&&(n[o]=u(n[o],a))}else n[o]=a}}}}function a(e,t){if(t)for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){var o
 =n in _;y(!o);var a=n in e;y(!a),e[n]=r}}}function i(e,t){y(e&&t&&"object"==typeof e&&"object"==typeof t);for(var n in t)t.hasOwnProperty(n)&&(y(void 0===e[n]),e[n]=t[n]);return e}function s(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return i(o,n),i(o,r),o}}function u(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function c(e,t){var n=t.bind(e);return n}function l(e){for(var t in e.__reactAutoBindMap)if(e.__reactAutoBindMap.hasOwnProperty(t)){var n=e.__reactAutoBindMap[t];e[t]=c(e,f.guard(n,e.constructor.displayName+"."+t))}}var p=e("./ReactComponent"),d=(e("./ReactCurrentOwner"),e("./ReactElement")),f=e("./ReactErrorUtils"),h=e("./ReactInstanceMap"),m=e("./ReactLifeCycle"),v=(e("./ReactPropTypeLocations"),e("./ReactPropTypeLocationNames"),e("./ReactUpdateQueue")),g=e("./Object.assign"),y=e("./invariant"),E=e("./keyMirror"),C=e("./keyOf"),R=(e("./warning"),C({mixins:null}))
 ,b=E({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),x=[],M={mixins:b.DEFINE_MANY,statics:b.DEFINE_MANY,propTypes:b.DEFINE_MANY,contextTypes:b.DEFINE_MANY,childContextTypes:b.DEFINE_MANY,getDefaultProps:b.DEFINE_MANY_MERGED,getInitialState:b.DEFINE_MANY_MERGED,getChildContext:b.DEFINE_MANY_MERGED,render:b.DEFINE_ONCE,componentWillMount:b.DEFINE_MANY,componentDidMount:b.DEFINE_MANY,componentWillReceiveProps:b.DEFINE_MANY,shouldComponentUpdate:b.DEFINE_ONCE,componentWillUpdate:b.DEFINE_MANY,componentDidUpdate:b.DEFINE_MANY,componentWillUnmount:b.DEFINE_MANY,updateComponent:b.OVERRIDE_BASE},_={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)o(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=g({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=g({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps=e.getDefaultProps?s(e.getDefaultProps,t):t},propTypes:function(e,
 t){e.propTypes=g({},e.propTypes,t)},statics:function(e,t){a(e,t)}},O={replaceState:function(e,t){v.enqueueReplaceState(this,e),t&&v.enqueueCallback(this,t)},isMounted:function(){var e=h.get(this);return e&&e!==m.currentlyMountingInstance},setProps:function(e,t){v.enqueueSetProps(this,e),t&&v.enqueueCallback(this,t)},replaceProps:function(e,t){v.enqueueReplaceProps(this,e),t&&v.enqueueCallback(this,t)}},D=function(){};g(D.prototype,p.prototype,O);var w={createClass:function(e){var t=function(e,t){this.__reactAutoBindMap&&l(this),this.props=e,this.context=t,this.state=null;var n=this.getInitialState?this.getInitialState():null;y("object"==typeof n&&!Array.isArray(n)),this.state=n};t.prototype=new D,t.prototype.constructor=t,x.forEach(o.bind(null,t)),o(t,e),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),y(t.prototype.render);for(var n in M)t.prototype[n]||(t.prototype[n]=null);return t.type=t,t},injection:{injectMixin:function(e){x.push(e)}}};t.exports=w},{"./Object.assign":30
 ,"./ReactComponent":38,"./ReactCurrentOwner":43,"./ReactElement":61,"./ReactErrorUtils":64,"./ReactInstanceMap":71,"./ReactLifeCycle":72,"./ReactPropTypeLocationNames":80,"./ReactPropTypeLocations":81,"./ReactUpdateQueue":90,"./invariant":139,"./keyMirror":144,"./keyOf":145,"./warning":158}],38:[function(e,t,n){"use strict";function r(e,t){this.props=e,this.context=t}{var o=e("./ReactUpdateQueue"),a=e("./invariant");e("./warning")}r.prototype.setState=function(e,t){a("object"==typeof e||"function"==typeof e||null==e),o.enqueueSetState(this,e),t&&o.enqueueCallback(this,t)},r.prototype.forceUpdate=function(e){o.enqueueForceUpdate(this),e&&o.enqueueCallback(this,e)};t.exports=r},{"./ReactUpdateQueue":90,"./invariant":139,"./warning":158}],39:[function(e,t,n){"use strict";var r=e("./ReactDOMIDOperations"),o=e("./ReactMount"),a={processChildrenUpdates:r.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkupByID:r.dangerouslyReplaceNodeWithMarkupByID,unmountIDFromEnvironment:function(e){
 o.purgeID(e)}};t.exports=a},{"./ReactDOMIDOperations":48,"./ReactMount":74}],40:[function(e,t,n){"use strict";var r=e("./invariant"),o=!1,a={unmountIDFromEnvironment:null,replaceNodeWithMarkupByID:null,processChildrenUpdates:null,injection:{injectEnvironment:function(e){r(!o),a.unmountIDFromEnvironment=e.unmountIDFromEnvironment,a.replaceNodeWithMarkupByID=e.replaceNodeWithMarkupByID,a.processChildrenUpdates=e.processChildrenUpdates,o=!0}}};t.exports=a},{"./invariant":139}],41:[function(e,t,n){"use strict";function r(e){var t=e._currentElement._owner||null;if(t){var n=t.getName();if(n)return" Check the render method of `"+n+"`."}return""}var o=e("./ReactComponentEnvironment"),a=e("./ReactContext"),i=e("./ReactCurrentOwner"),s=e("./ReactElement"),u=(e("./ReactElementValidator"),e("./ReactInstanceMap")),c=e("./ReactLifeCycle"),l=e("./ReactNativeComponent"),p=e("./ReactPerf"),d=e("./ReactPropTypeLocations"),f=(e("./ReactPropTypeLocationNames"),e("./ReactReconciler")),h=e("./ReactUpdate
 s"),m=e("./Object.assign"),v=e("./emptyObject"),g=e("./invariant"),y=e("./shouldUpdateReactComponent"),E=(e("./warning"),1),C={construct:function(e){this._currentElement=e,this._rootNodeID=null,this._instance=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._isTopLevel=!1,this._pendingCallbacks=null},mountComponent:function(e,t,n){this._context=n,this._mountOrder=E++,this._rootNodeID=e;var r=this._processProps(this._currentElement.props),o=this._processContext(this._currentElement._context),a=l.getComponentClassForElement(this._currentElement),i=new a(r,o);i.props=r,i.context=o,i.refs=v,this._instance=i,u.set(i,this);var s=i.state;void 0===s&&(i.state=s=null),g("object"==typeof s&&!Array.isArray(s)),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var p,d,h=c.currentlyMountingInstance;c.currentlyMountingInsta
 nce=this;try{i.componentWillMount&&(i.componentWillMount(),this._pendingStateQueue&&(i.state=this._processPendingState(i.props,i.context))),p=this._getValidatedChildContext(n),d=this._renderValidatedComponent(p)}finally{c.currentlyMountingInstance=h}this._renderedComponent=this._instantiateReactComponent(d,this._currentElement.type);var m=f.mountComponent(this._renderedComponent,e,t,this._mergeChildContext(n,p));return i.componentDidMount&&t.getReactMountReady().enqueue(i.componentDidMount,i),m},unmountComponent:function(){var e=this._instance;if(e.componentWillUnmount){var t=c.currentlyUnmountingInstance;c.currentlyUnmountingInstance=this;try{e.componentWillUnmount()}finally{c.currentlyUnmountingInstance=t}}f.unmountComponent(this._renderedComponent),this._renderedComponent=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=null,u.remove(e)},_setPropsInt
 ernal:function(e,t){var n=this._pendingElement||this._currentElement;this._pendingElement=s.cloneAndReplaceProps(n,m({},n.props,e)),h.enqueueUpdate(this,t)},_maskContext:function(e){var t=null;if("string"==typeof this._currentElement.type)return v;var n=this._currentElement.type.contextTypes;if(!n)return v;t={};for(var r in n)t[r]=e[r];return t},_processContext:function(e){var t=this._maskContext(e);return t},_getValidatedChildContext:function(e){var t=this._instance,n=t.getChildContext&&t.getChildContext();if(n){g("object"==typeof t.constructor.childContextTypes);for(var r in n)g(r in t.constructor.childContextTypes);return n}return null},_mergeChildContext:function(e,t){return t?m({},e,t):e},_processProps:function(e){return e},_checkPropTypes:function(e,t,n){var o=this.getName();for(var a in e)if(e.hasOwnProperty(a)){var i;try{g("function"==typeof e[a]),i=e[a](t,a,o,n)}catch(s){i=s}if(i instanceof Error){{r(this)}n===d.prop}}},receiveComponent:function(e,t,n){var r=this._currentEl
 ement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement&&f.receiveComponent(this,this._pendingElement||this._currentElement,e,this._context),(null!==this._pendingStateQueue||this._pendingForceUpdate)&&this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context)},_warnIfContextsDiffer:function(e,t){e=this._maskContext(e),t=this._maskContext(t);for(var n=Object.keys(t).sort(),r=(this.getName()||"ReactCompositeComponent",0);r<n.length;r++){n[r]}},updateComponent:function(e,t,n,r,o){var a=this._instance,i=a.context,s=a.props;t!==n&&(i=this._processContext(n._context),s=this._processProps(n.props),a.componentWillReceiveProps&&a.componentWillReceiveProps(s,i));var u=this._processPendingState(s,i),c=this._pendingForceUpdate||!a.shouldComponentUpdate||a.shouldComponentUpdate(s,u,i);c?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,s,u,i,e,o)):(this._currentEl
 ement=n,this._context=o,a.props=s,a.state=u,a.context=i)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var a=m({},o?r[0]:n.state),i=o?1:0;i<r.length;i++){var s=r[i];m(a,"function"==typeof s?s.call(n,a,e,t):s)}return a},_performComponentUpdate:function(e,t,n,r,o,a){var i=this._instance,s=i.props,u=i.state,c=i.context;i.componentWillUpdate&&i.componentWillUpdate(t,n,r),this._currentElement=e,this._context=a,i.props=t,i.state=n,i.context=r,this._updateRenderedComponent(o,a),i.componentDidUpdate&&o.getReactMountReady().enqueue(i.componentDidUpdate.bind(i,s,u,c),i)},_updateRenderedComponent:function(e,t){var n=this._renderedComponent,r=n._currentElement,o=this._getValidatedChildContext(),a=this._renderValidatedComponent(o);if(y(r,a))f.receiveComponent(n,a,e,this._mergeChildContext(t,o));else{var i=this._rootNode
 ID,s=n._rootNodeID;f.unmountComponent(n),this._renderedComponent=this._instantiateReactComponent(a,this._currentElement.type);var u=f.mountComponent(this._renderedComponent,i,e,this._mergeChildContext(t,o));this._replaceNodeWithMarkupByID(s,u)}},_replaceNodeWithMarkupByID:function(e,t){o.replaceNodeWithMarkupByID(e,t)},_renderValidatedComponentWithoutOwnerOrContext:function(){var e=this._instance,t=e.render();return t},_renderValidatedComponent:function(e){var t,n=a.current;a.current=this._mergeChildContext(this._currentElement._context,e),i.current=this;try{t=this._renderValidatedComponentWithoutOwnerOrContext()}finally{a.current=n,i.current=null}return g(null===t||t===!1||s.isValidElement(t)),t},attachRef:function(e,t){var n=this.getPublicInstance(),r=n.refs===v?n.refs={}:n.refs;r[e]=t.getPublicInstance()},detachRef:function(e){var t=this.getPublicInstance().refs;delete t[e]},getName:function(){var e=this._currentElement.type,t=this._instance&&this._instance.constructor;return e.d
 isplayName||t&&t.displayName||e.name||t&&t.name||null},getPublicInstance:function(){return this._instance},_instantiateReactComponent:null};p.measureMethods(C,"ReactCompositeComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent",_renderValidatedComponent:"_renderValidatedComponent"});var R={Mixin:C};t.exports=R},{"./Object.assign":30,"./ReactComponentEnvironment":40,"./ReactContext":42,"./ReactCurrentOwner":43,"./ReactElement":61,"./ReactElementValidator":62,"./ReactInstanceMap":71,"./ReactLifeCycle":72,"./ReactNativeComponent":77,"./ReactPerf":79,"./ReactPropTypeLocationNames":80,"./ReactPropTypeLocations":81,"./ReactReconciler":85,"./ReactUpdates":91,"./emptyObject":119,"./invariant":139,"./shouldUpdateReactComponent":155,"./warning":158}],42:[function(e,t,n){"use strict";var r=e("./Object.assign"),o=e("./emptyObject"),a=(e("./warning"),{current:o,withContext:function(e,t){var n,o=a.current;a.current=r({},o,e);try{n=t()}finally{a.current=o}return n}});t.expo
 rts=a},{"./Object.assign":30,"./emptyObject":119,"./warning":158}],43:[function(e,t,n){"use strict";var r={current:null};t.exports=r},{}],44:[function(e,t,n){"use strict";function r(e){return o.createFactory(e)}var o=e("./ReactElement"),a=(e("./ReactElementValidator"),e("./mapObject")),i=a({a:"a",abbr:"abbr",address:"address",area:"area",article:"article",aside:"aside",audio:"audio",b:"b",base:"base",bdi:"bdi",bdo:"bdo",big:"big",blockquote:"blockquote",body:"body",br:"br",button:"button",canvas:"canvas",caption:"caption",cite:"cite",code:"code",col:"col",colgroup:"colgroup",data:"data",datalist:"datalist",dd:"dd",del:"del",details:"details",dfn:"dfn",dialog:"dialog",div:"div",dl:"dl",dt:"dt",em:"em",embed:"embed",fieldset:"fieldset",figcaption:"figcaption",figure:"figure",footer:"footer",form:"form",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",head:"head",header:"header",hr:"hr",html:"html",i:"i",iframe:"iframe",img:"img",input:"input",ins:"ins",kbd:"kbd",keygen:"keygen",label:"
 label",legend:"legend",li:"li",link:"link",main:"main",map:"map",mark:"mark",menu:"menu",menuitem:"menuitem",meta:"meta",meter:"meter",nav:"nav",noscript:"noscript",object:"object",ol:"ol",optgroup:"optgroup",option:"option",output:"output",p:"p",param:"param",picture:"picture",pre:"pre",progress:"progress",q:"q",rp:"rp",rt:"rt",ruby:"ruby",s:"s",samp:"samp",script:"script",section:"section",select:"select",small:"small",source:"source",span:"span",strong:"strong",style:"style",sub:"sub",summary:"summary",sup:"sup",table:"table",tbody:"tbody",td:"td",textarea:"textarea",tfoot:"tfoot",th:"th",thead:"thead",time:"time",title:"title",tr:"tr",track:"track",u:"u",ul:"ul","var":"var",video:"video",wbr:"wbr",circle:"circle",clipPath:"clipPath",defs:"defs",ellipse:"ellipse",g:"g",line:"line",linearGradient:"linearGradient",mask:"mask",path:"path",pattern:"pattern",polygon:"polygon",polyline:"polyline",radialGradient:"radialGradient",rect:"rect",stop:"stop",svg:"svg",text:"text",tspan:"tspan
 "},r);t.exports=i},{"./ReactElement":61,"./ReactElementValidator":62,"./mapObject":146}],45:[function(e,t,n){"use strict";var r=e("./AutoFocusMixin"),o=e("./ReactBrowserComponentMixin"),a=e("./ReactClass"),i=e("./ReactElement"),s=e("./keyMirror"),u=i.createFactory("button"),c=s({onClick:!0,onDoubleClick:!0,onMouseDown:!0,onMouseMove:!0,onMouseUp:!0,onClickCapture:!0,onDoubleClickCapture:!0,onMouseDownCapture:!0,onMouseMoveCapture:!0,onMouseUpCapture:!0}),l=a.createClass({displayName:"ReactDOMButton",tagName:"BUTTON",mixins:[r,o],render:function(){var e={};for(var t in this.props)!this.props.hasOwnProperty(t)||this.props.disabled&&c[t]||(e[t]=this.props[t]);return u(e,this.props.children)}});t.exports=l},{"./AutoFocusMixin":5,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61,"./keyMirror":144}],46:[function(e,t,n){"use strict";function r(e){e&&(null!=e.dangerouslySetInnerHTML&&(g(null==e.children),g("object"==typeof e.dangerouslySetInnerHTML&&"__html"in e.danger
 ouslySetInnerHTML)),g(null==e.style||"object"==typeof e.style))}function o(e,t,n,r){var o=d.findReactContainerForID(e);if(o){var a=o.nodeType===M?o.ownerDocument:o;C(t,a)}r.getPutListenerQueue().enqueuePutListener(e,t,n)}function a(e){I.call(w,e)||(g(D.test(e)),w[e]=!0)}function i(e){a(e),this._tag=e,this._renderedChildren=null,this._previousStyleCopy=null,this._rootNodeID=null}var s=e("./CSSPropertyOperations"),u=e("./DOMProperty"),c=e("./DOMPropertyOperations"),l=e("./ReactBrowserEventEmitter"),p=e("./ReactComponentBrowserEnvironment"),d=e("./ReactMount"),f=e("./ReactMultiChild"),h=e("./ReactPerf"),m=e("./Object.assign"),v=e("./escapeTextContentForBrowser"),g=e("./invariant"),y=(e("./isEventSupported"),e("./keyOf")),E=(e("./warning"),l.deleteListener),C=l.listenTo,R=l.registrationNameModules,b={string:!0,number:!0},x=y({style:null}),M=1,_=null,O={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},D=/^[a-zA-Z][a
 -zA-Z:_\.\-\d]*$/,w={},I={}.hasOwnProperty;i.displayName="ReactDOMComponent",i.Mixin={construct:function(e){
-this._currentElement=e},mountComponent:function(e,t,n){this._rootNodeID=e,r(this._currentElement.props);var o=O[this._tag]?"":"</"+this._tag+">";return this._createOpenTagMarkupAndPutListeners(t)+this._createContentMarkup(t,n)+o},_createOpenTagMarkupAndPutListeners:function(e){var t=this._currentElement.props,n="<"+this._tag;for(var r in t)if(t.hasOwnProperty(r)){var a=t[r];if(null!=a)if(R.hasOwnProperty(r))o(this._rootNodeID,r,a,e);else{r===x&&(a&&(a=this._previousStyleCopy=m({},t.style)),a=s.createMarkupForStyles(a));var i=c.createMarkupForProperty(r,a);i&&(n+=" "+i)}}if(e.renderToStaticMarkup)return n+">";var u=c.createMarkupForID(this._rootNodeID);return n+" "+u+">"},_createContentMarkup:function(e,t){var n="";("listing"===this._tag||"pre"===this._tag||"textarea"===this._tag)&&(n="\n");var r=this._currentElement.props,o=r.dangerouslySetInnerHTML;if(null!=o){if(null!=o.__html)return n+o.__html}else{var a=b[typeof r.children]?r.children:null,i=null!=a?null:r.children;if(null!=a)re
 turn n+v(a);if(null!=i){var s=this.mountChildren(i,e,t);return n+s.join("")}}return n},receiveComponent:function(e,t,n){var r=this._currentElement;this._currentElement=e,this.updateComponent(t,r,e,n)},updateComponent:function(e,t,n,o){r(this._currentElement.props),this._updateDOMProperties(t.props,e),this._updateDOMChildren(t.props,e,o)},_updateDOMProperties:function(e,t){var n,r,a,i=this._currentElement.props;for(n in e)if(!i.hasOwnProperty(n)&&e.hasOwnProperty(n))if(n===x){var s=this._previousStyleCopy;for(r in s)s.hasOwnProperty(r)&&(a=a||{},a[r]="");this._previousStyleCopy=null}else R.hasOwnProperty(n)?E(this._rootNodeID,n):(u.isStandardName[n]||u.isCustomAttribute(n))&&_.deletePropertyByID(this._rootNodeID,n);for(n in i){var c=i[n],l=n===x?this._previousStyleCopy:e[n];if(i.hasOwnProperty(n)&&c!==l)if(n===x)if(c?c=this._previousStyleCopy=m({},c):this._previousStyleCopy=null,l){for(r in l)!l.hasOwnProperty(r)||c&&c.hasOwnProperty(r)||(a=a||{},a[r]="");for(r in c)c.hasOwnProperty(
 r)&&l[r]!==c[r]&&(a=a||{},a[r]=c[r])}else a=c;else R.hasOwnProperty(n)?o(this._rootNodeID,n,c,t):(u.isStandardName[n]||u.isCustomAttribute(n))&&_.updatePropertyByID(this._rootNodeID,n,c)}a&&_.updateStylesByID(this._rootNodeID,a)},_updateDOMChildren:function(e,t,n){var r=this._currentElement.props,o=b[typeof e.children]?e.children:null,a=b[typeof r.children]?r.children:null,i=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,s=r.dangerouslySetInnerHTML&&r.dangerouslySetInnerHTML.__html,u=null!=o?null:e.children,c=null!=a?null:r.children,l=null!=o||null!=i,p=null!=a||null!=s;null!=u&&null==c?this.updateChildren(null,t,n):l&&!p&&this.updateTextContent(""),null!=a?o!==a&&this.updateTextContent(""+a):null!=s?i!==s&&_.updateInnerHTMLByID(this._rootNodeID,s):null!=c&&this.updateChildren(c,t,n)},unmountComponent:function(){this.unmountChildren(),l.deleteAllListeners(this._rootNodeID),p.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null}},h.measureMethods(i,"ReactDOMC
 omponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),m(i.prototype,i.Mixin,f.Mixin),i.injection={injectIDOperations:function(e){i.BackendIDOperations=_=e}},t.exports=i},{"./CSSPropertyOperations":8,"./DOMProperty":13,"./DOMPropertyOperations":14,"./Object.assign":30,"./ReactBrowserEventEmitter":34,"./ReactComponentBrowserEnvironment":39,"./ReactMount":74,"./ReactMultiChild":75,"./ReactPerf":79,"./escapeTextContentForBrowser":120,"./invariant":139,"./isEventSupported":140,"./keyOf":145,"./warning":158}],47:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("form"),c=i.createClass({displayName:"ReactDOMForm",tagName:"FORM",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(r.topLevelTypes.topSubmit,"submit")}});t.exports=c
 },{"./EventConstants":18,"./LocalEventTrapMixin":28,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61}],48:[function(e,t,n){"use strict";var r=e("./CSSPropertyOperations"),o=e("./DOMChildrenOperations"),a=e("./DOMPropertyOperations"),i=e("./ReactMount"),s=e("./ReactPerf"),u=e("./invariant"),c=e("./setInnerHTML"),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},p={updatePropertyByID:function(e,t,n){var r=i.getNode(e);u(!l.hasOwnProperty(t)),null!=n?a.setValueForProperty(r,t,n):a.deleteValueForProperty(r,t)},deletePropertyByID:function(e,t,n){var r=i.getNode(e);u(!l.hasOwnProperty(t)),a.deleteValueForProperty(r,t,n)},updateStylesByID:function(e,t){var n=i.getNode(e);r.setValueForStyles(n,t)},updateInnerHTMLByID:function(e,t){var n=i.getNode(e);c(n,t)},updateTextContentByID:function(e,t){var n=i.getNode(e);o.updateTextContent(n,t)},dangerouslyReplaceNodeWithMa
 rkupByID:function(e,t){var n=i.getNode(e);o.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;n<e.length;n++)e[n].parentNode=i.getNode(e[n].parentID);o.processUpdates(e,t)}};s.measureMethods(p,"ReactDOMIDOperations",{updatePropertyByID:"updatePropertyByID",deletePropertyByID:"deletePropertyByID",updateStylesByID:"updateStylesByID",updateInnerHTMLByID:"updateInnerHTMLByID",updateTextContentByID:"updateTextContentByID",dangerouslyReplaceNodeWithMarkupByID:"dangerouslyReplaceNodeWithMarkupByID",dangerouslyProcessChildrenUpdates:"dangerouslyProcessChildrenUpdates"}),t.exports=p},{"./CSSPropertyOperations":8,"./DOMChildrenOperations":12,"./DOMPropertyOperations":14,"./ReactMount":74,"./ReactPerf":79,"./invariant":139,"./setInnerHTML":152}],49:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("iframe"),c=i.cre
 ateClass({displayName:"ReactDOMIframe",tagName:"IFRAME",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topLoad,"load")}});t.exports=c},{"./EventConstants":18,"./LocalEventTrapMixin":28,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61}],50:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("img"),c=i.createClass({displayName:"ReactDOMImg",tagName:"IMG",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topLoad,"load"),this.trapBubbledEvent(r.topLevelTypes.topError,"error")}});t.exports=c},{"./EventConstants":18,"./LocalEventTrapMixin":28,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61}],51:[function(e,t,n){"use strict";function r(){this.isMounted()&&this.forceUpdate()}
 var o=e("./AutoFocusMixin"),a=e("./DOMPropertyOperations"),i=e("./LinkedValueUtils"),s=e("./ReactBrowserComponentMixin"),u=e("./ReactClass"),c=e("./ReactElement"),l=e("./ReactMount"),p=e("./ReactUpdates"),d=e("./Object.assign"),f=e("./invariant"),h=c.createFactory("input"),m={},v=u.createClass({displayName:"ReactDOMInput",tagName:"INPUT",mixins:[o,i.Mixin,s],getInitialState:function(){var e=this.props.defaultValue;return{initialChecked:this.props.defaultChecked||!1,initialValue:null!=e?e:null}},render:function(){var e=d({},this.props);e.defaultChecked=null,e.defaultValue=null;var t=i.getValue(this);e.value=null!=t?t:this.state.initialValue;var n=i.getChecked(this);return e.checked=null!=n?n:this.state.initialChecked,e.onChange=this._handleChange,h(e,this.props.children)},componentDidMount:function(){var e=l.getID(this.getDOMNode());m[e]=this},componentWillUnmount:function(){var e=this.getDOMNode(),t=l.getID(e);delete m[t]},componentDidUpdate:function(e,t,n){var r=this.getDOMNode();n
 ull!=this.props.checked&&a.setValueForProperty(r,"checked",this.props.checked||!1);var o=i.getValue(this);null!=o&&a.setValueForProperty(r,"value",""+o)},_handleChange:function(e){var t,n=i.getOnChange(this);n&&(t=n.call(this,e)),p.asap(r,this);var o=this.props.name;if("radio"===this.props.type&&null!=o){for(var a=this.getDOMNode(),s=a;s.parentNode;)s=s.parentNode;for(var u=s.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),c=0,d=u.length;d>c;c++){var h=u[c];if(h!==a&&h.form===a.form){var v=l.getID(h);f(v);var g=m[v];f(g),p.asap(r,g)}}}return t}});t.exports=v},{"./AutoFocusMixin":5,"./DOMPropertyOperations":14,"./LinkedValueUtils":27,"./Object.assign":30,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61,"./ReactMount":74,"./ReactUpdates":91,"./invariant":139}],52:[function(e,t,n){"use strict";var r=e("./ReactBrowserComponentMixin"),o=e("./ReactClass"),a=e("./ReactElement"),i=(e("./warning"),a.createFactory("option")),s=o.createClass({displ
 ayName:"ReactDOMOption",tagName:"OPTION",mixins:[r],componentWillMount:function(){},render:function(){return i(this.props,this.props.children)}});t.exports=s},{"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61,"./warning":158}],53:[function(e,t,n){"use strict";function r(){if(this._pendingUpdate){this._pendingUpdate=!1;var e=s.getValue(this);null!=e&&this.isMounted()&&a(this,e)}}function o(e,t,n){if(null==e[t])return null;if(e.multiple){if(!Array.isArray(e[t]))return new Error("The `"+t+"` prop supplied to <select> must be an array if `multiple` is true.")}else if(Array.isArray(e[t]))return new Error("The `"+t+"` prop supplied to <select> must be a scalar value if `multiple` is false.")}function a(e,t){var n,r,o,a=e.getDOMNode().options;if(e.props.multiple){for(n={},r=0,o=t.length;o>r;r++)n[""+t[r]]=!0;for(r=0,o=a.length;o>r;r++){var i=n.hasOwnProperty(a[r].value);a[r].selected!==i&&(a[r].selected=i)}}else{for(n=""+t,r=0,o=a.length;o>r;r++)if(a[r].value===n)ret
 urn void(a[r].selected=!0);a.length&&(a[0].selected=!0)}}var i=e("./AutoFocusMixin"),s=e("./LinkedValueUtils"),u=e("./ReactBrowserComponentMixin"),c=e("./ReactClass"),l=e("./ReactElement"),p=e("./ReactUpdates"),d=e("./Object.assign"),f=l.createFactory("select"),h=c.createClass({displayName:"ReactDOMSelect",tagName:"SELECT",mixins:[i,s.Mixin,u],propTypes:{defaultValue:o,value:o},render:function(){var e=d({},this.props);return e.onChange=this._handleChange,e.value=null,f(e,this.props.children)},componentWillMount:function(){this._pendingUpdate=!1},componentDidMount:function(){var e=s.getValue(this);null!=e?a(this,e):null!=this.props.defaultValue&&a(this,this.props.defaultValue)},componentDidUpdate:function(e){var t=s.getValue(this);null!=t?(this._pendingUpdate=!1,a(this,t)):!e.multiple!=!this.props.multiple&&(null!=this.props.defaultValue?a(this,this.props.defaultValue):a(this,this.props.multiple?[]:""))},_handleChange:function(e){var t,n=s.getOnChange(this);return n&&(t=n.call(this,e
 )),this._pendingUpdate=!0,p.asap(r,this),t}});t.exports=h},{"./AutoFocusMixin":5,"./LinkedValueUtils":27,"./Object.assign":30,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61,"./ReactUpdates":91}],54:[function(e,t,n){"use strict";function r(e,t,n,r){return e===n&&t===r}function o(e){var t=document.selection,n=t.createRange(),r=n.text.length,o=n.duplicate();o.moveToElementText(e),o.setEndPoint("EndToStart",n);var a=o.text.length,i=a+r;return{start:a,end:i}}function a(e){var t=window.getSelection&&window.getSelection();if(!t||0===t.rangeCount)return null;var n=t.anchorNode,o=t.anchorOffset,a=t.focusNode,i=t.focusOffset,s=t.getRangeAt(0),u=r(t.anchorNode,t.anchorOffset,t.focusNode,t.focusOffset),c=u?0:s.toString().length,l=s.cloneRange();l.selectNodeContents(e),l.setEnd(s.startContainer,s.startOffset);var p=r(l.startContainer,l.startOffset,l.endContainer,l.endOffset),d=p?0:l.toString().length,f=d+c,h=document.createRange();h.setStart(n,o),h.setEnd(a,i);var m=h.co
 llapsed;return{start:m?f:d,end:m?d:f}}function i(e,t){var n,r,o=document.selection.createRange().duplicate();"undefined"==typeof t.end?(n=t.start,r=n):t.start>t.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function s(e,t){if(window.getSelection){var n=window.getSelection(),r=e[l()].length,o=Math.min(t.start,r),a="undefined"==typeof t.end?o:Math.min(t.end,r);if(!n.extend&&o>a){var i=a;a=o,o=i}var s=c(e,o),u=c(e,a);if(s&&u){var p=document.createRange();p.setStart(s.node,s.offset),n.removeAllRanges(),o>a?(n.addRange(p),n.extend(u.node,u.offset)):(p.setEnd(u.node,u.offset),n.addRange(p))}}}var u=e("./ExecutionEnvironment"),c=e("./getNodeForCharacterOffset"),l=e("./getTextContentAccessor"),p=u.canUseDOM&&"selection"in document&&!("getSelection"in window),d={getOffsets:p?o:a,setOffsets:p?i:s};t.exports=d},{"./ExecutionEnvironment":24,"./getNodeForCharacterOffset":132,"./get
 TextContentAccessor":134}],55:[function(e,t,n){"use strict";var r=e("./DOMPropertyOperations"),o=e("./ReactComponentBrowserEnvironment"),a=e("./ReactDOMComponent"),i=e("./Object.assign"),s=e("./escapeTextContentForBrowser"),u=function(e){};i(u.prototype,{construct:function(e){this._currentElement=e,this._stringText=""+e,this._rootNodeID=null,this._mountIndex=0},mountComponent:function(e,t,n){this._rootNodeID=e;var o=s(this._stringText);return t.renderToStaticMarkup?o:"<span "+r.createMarkupForID(e)+">"+o+"</span>"},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;n!==this._stringText&&(this._stringText=n,a.BackendIDOperations.updateTextContentByID(this._rootNodeID,n))}},unmountComponent:function(){o.unmountIDFromEnvironment(this._rootNodeID)}}),t.exports=u},{"./DOMPropertyOperations":14,"./Object.assign":30,"./ReactComponentBrowserEnvironment":39,"./ReactDOMComponent":46,"./escapeTextContentForBrowser":120}],56:[function(e,t,n){"use stric
 t";function r(){this.isMounted()&&this.forceUpdate()}var o=e("./AutoFocusMixin"),a=e("./DOMPropertyOperations"),i=e("./LinkedValueUtils"),s=e("./ReactBrowserComponentMixin"),u=e("./ReactClass"),c=e("./ReactElement"),l=e("./ReactUpdates"),p=e("./Object.assign"),d=e("./invariant"),f=(e("./warning"),c.createFactory("textarea")),h=u.createClass({displayName:"ReactDOMTextarea",tagName:"TEXTAREA",mixins:[o,i.Mixin,s],getInitialState:function(){var e=this.props.defaultValue,t=this.props.children;null!=t&&(d(null==e),Array.isArray(t)&&(d(t.length<=1),t=t[0]),e=""+t),null==e&&(e="");var n=i.getValue(this);return{initialValue:""+(null!=n?n:e)}},render:function(){var e=p({},this.props);return d(null==e.dangerouslySetInnerHTML),e.defaultValue=null,e.value=null,e.onChange=this._handleChange,f(e,this.state.initialValue)},componentDidUpdate:function(e,t,n){var r=i.getValue(this);if(null!=r){var o=this.getDOMNode();a.setValueForProperty(o,"value",""+r)}},_handleChange:function(e){var t,n=i.getOnCha
 nge(this);return n&&(t=n.call(this,e)),l.asap(r,this),t}});t.exports=h},{"./AutoFocusMixin":5,"./DOMPropertyOperations":14,"./LinkedValueUtils":27,"./Object.assign":30,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactElement":61,"./ReactUpdates":91,"./invariant":139,"./warning":158}],57:[function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=e("./ReactUpdates"),a=e("./Transaction"),i=e("./Object.assign"),s=e("./emptyFunction"),u={initialize:s,close:function(){d.isBatchingUpdates=!1}},c={initialize:s,close:o.flushBatchedUpdates.bind(o)},l=[c,u];i(r.prototype,a.Mixin,{getTransactionWrappers:function(){return l}});var p=new r,d={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o){var a=d.isBatchingUpdates;d.isBatchingUpdates=!0,a?e(t,n,r,o):p.perform(e,null,t,n,r,o)}};t.exports=d},{"./Object.assign":30,"./ReactUpdates":91,"./Transaction":107,"./emptyFunction":118}],58:[function(e,t,n){"use strict";function r(e){return h.createClass({tagName:e.toUp
 perCase(),render:function(){return new w(e,null,null,null,null,this.props)}})}function o(){P.EventEmitter.injectReactEventListener(I),P.EventPluginHub.injectEventPluginOrder(u),P.EventPluginHub.injectInstanceHandle(T),P.EventPluginHub.injectMount(N),P.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:U,EnterLeaveEventPlugin:c,ChangeEventPlugin:i,MobileSafariClickEventPlugin:d,SelectEventPlugin:k,BeforeInputEventPlugin:a}),P.NativeComponent.injectGenericComponentClass(g),P.NativeComponent.injectTextComponentClass(D),P.NativeComponent.injectAutoWrapper(r),P.Class.injectMixin(f),P.NativeComponent.injectComponentClasses({button:y,form:E,iframe:b,img:C,input:x,option:M,select:_,textarea:O,html:F("html"),head:F("head"),body:F("body")}),P.DOMProperty.injectDOMPropertyConfig(p),P.DOMProperty.injectDOMPropertyConfig(L),P.EmptyComponent.injectEmptyComponent("noscript"),P.Updates.injectReconcileTransaction(S),P.Updates.injectBatchingStrategy(v),P.RootIndex.injectCreateReactRootIndex(l
 .canUseDOM?s.createReactRootIndex:A.createReactRootIndex),P.Component.injectEnvironment(m),P.DOMComponent.injectIDOperations(R)}var a=e("./BeforeInputEventPlugin"),i=e("./ChangeEventPlugin"),s=e("./ClientReactRootIndex"),u=e("./DefaultEventPluginOrder"),c=e("./EnterLeaveEventPlugin"),l=e("./ExecutionEnvironment"),p=e("./HTMLDOMPropertyConfig"),d=e("./MobileSafariClickEventPlugin"),f=e("./ReactBrowserComponentMixin"),h=e("./ReactClass"),m=e("./ReactComponentBrowserEnvironment"),v=e("./ReactDefaultBatchingStrategy"),g=e("./ReactDOMComponent"),y=e("./ReactDOMButton"),E=e("./ReactDOMForm"),C=e("./ReactDOMImg"),R=e("./ReactDOMIDOperations"),b=e("./ReactDOMIframe"),x=e("./ReactDOMInput"),M=e("./ReactDOMOption"),_=e("./ReactDOMSelect"),O=e("./ReactDOMTextarea"),D=e("./ReactDOMTextComponent"),w=e("./ReactElement"),I=e("./ReactEventListener"),P=e("./ReactInjection"),T=e("./ReactInstanceHandles"),N=e("./ReactMount"),S=e("./ReactReconcileTransaction"),k=e("./SelectEventPlugin"),A=e("./ServerRe
 actRootIndex"),U=e("./SimpleEventPlugin"),L=e("./SVGDOMPropertyConfig"),F=e("./createFullPageComponent");t.exports={inject:o}},{"./BeforeInputEventPlugin":6,"./ChangeEventPlugin":10,"./ClientReactRootIndex":11,"./DefaultEventPluginOrder":16,"./EnterLeaveEventPlugin":17,"./ExecutionEnvironment":24,"./HTMLDOMPropertyConfig":26,"./MobileSafariClickEventPlugin":29,"./ReactBrowserComponentMixin":33,"./ReactClass":37,"./ReactComponentBrowserEnvironment":39,"./ReactDOMButton":45,"./ReactDOMComponent":46,"./ReactDOMForm":47,"./ReactDOMIDOperations":48,"./ReactDOMIframe":49,"./ReactDOMImg":50,"./ReactDOMInput":51,"./ReactDOMOption":52,"./ReactDOMSelect":53,"./ReactDOMTextComponent":55,"./ReactDOMTextarea":56,"./ReactDefaultBatchingStrategy":57,"./ReactDefaultPerf":59,"./ReactElement":61,"./ReactEventListener":66,"./ReactInjection":68,"./ReactInstanceHandles":70,"./ReactMount":74,"./ReactReconcileTransaction":84,"./SVGDOMPropertyConfig":92,"./SelectEventPlugin":93,"./ServerReactRootIndex":94,
 "./SimpleEventPlugin":95,"./createFullPageComponent":115}],59:[function(e,t,n){"use strict";function r(e){return Math.floor(100*e)/100}function o(e,t,n){e[t]=(e[t]||0)+n}var a=e("./DOMProperty"),i=e("./ReactDefaultPerfAnalysis"),s=e("./ReactMount"),u=e("./ReactPerf"),c=e("./performanceNow"),l={_allMeasurements:[],_mountStack:[0],_injected:!1,start:function(){l._injected||u.injection.injectMeasure(l.measure),l._allMeasurements.length=0,u.enableMeasure=!0},stop:function(){u.enableMeasure=!1},getLastMeasurements:function(){return l._allMeasurements},printExclusive:function(e){e=e||l._allMeasurements;var t=i.getExclusiveSummary(e);console.table(t.map(function(e){return{"Component class name":e.componentName,"Total inclusive time (ms)":r(e.inclusive),"Exclusive mount time (ms)":r(e.exclusive),"Exclusive render time (ms)":r(e.render),"Mount time per instance (ms)":r(e.exclusive/e.count),"Render time per instance (ms)":r(e.render/e.count),Instances:e.count}}))},printInclusive:function(e){e
 =e||l._allMeasurements;var t=i.getInclusiveSummary(e);console.table(t.map(function(e){return{"Owner > component":e.componentName,"Inclusive time (ms)":r(e.time),Instances:e.count}})),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},getMeasurementsSummaryMap:function(e){var t=i.getInclusiveSummary(e,!0);return t.map(function(e){return{"Owner > component":e.componentName,"Wasted time (ms)":e.time,Instances:e.count}})},printWasted:function(e){e=e||l._allMeasurements,console.table(l.getMeasurementsSummaryMap(e)),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},printDOM:function(e){e=e||l._allMeasurements;var t=i.getDOMSummary(e);console.table(t.map(function(e){var t={};return t[a.ID_ATTRIBUTE_NAME]=e.id,t.type=e.type,t.args=JSON.stringify(e.args),t})),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},_recordWrite:function(e,t,n,r){var o=l._allMeasurements[l._allMeasurements.length-1].writes;o[e]=o[e]||[],o[e].push({type:t,time:n,args:r})},measure
 :function(e,t,n){return function(){for(var r=[],a=0,i=arguments.length;i>a;a++)r.push(arguments[a]);var u,p,d;if("_renderNewRootComponent"===t||"flushBatchedUpdates"===t)return l._allMeasurements.push({exclusive:{},inclusive:{},render:{},counts:{},writes:{},displayNames:{},totalTime:0}),d=c(),p=n.apply(this,r),l._allMeasurements[l._allMeasurements.length-1].totalTime=c()-d,p;if("_mountImageIntoNode"===t||"ReactDOMIDOperations"===e){if(d=c(),p=n.apply(this,r),u=c()-d,"_mountImageIntoNode"===t){var f=s.getID(r[1]);l._recordWrite(f,t,u,r[0])}else"dangerouslyProcessChildrenUpdates"===t?r[0].forEach(function(e){var t={};null!==e.fromIndex&&(t.fromIndex=e.fromIndex),null!==e.toIndex&&(t.toIndex=e.toIndex),null!==e.textContent&&(t.textContent=e.textContent),null!==e.markupIndex&&(t.markup=r[1][e.markupIndex]),l._recordWrite(e.parentID,e.type,u,t)}):l._recordWrite(r[0],t,u,Array.prototype.slice.call(r,1));return p}if("ReactCompositeComponent"!==e||"mountComponent"!==t&&"updateComponent"!==t
 &&"_renderValidatedComponent"!==t)return n.apply(this,r);if("string"==typeof this._currentElement.type)return n.apply(this,r);var h="mountComponent"===t?r[0]:this._rootNodeID,m="_renderValidatedComponent"===t,v="mountComponent"===t,g=l._mountStack,y=l._allMeasurements[l._allMeasurements.length-1];if(m?o(y.counts,h,1):v&&g.push(0),d=c(),p=n.apply(this,r),u=c()-d,m)o(y.render,h,u);else if(v){var E=g.pop();g[g.length-1]+=u,o(y.exclusive,h,u-E),o(y.inclusive,h,u)}else o(y.inclusive,h,u);return y.displayNames[h]={current:this.getName(),owner:this._currentElement._owner?this._currentElement._owner.getName():"<root>"},p}}};t.exports=l},{"./DOMProperty":13,"./ReactDefaultPerfAnalysis":60,"./ReactMount":74,"./ReactPerf":79,"./performanceNow":150}],60:[function(e,t,n){function r(e){for(var t=0,n=0;n<e.length;n++){var r=e[n];t+=r.totalTime}return t}function o(e){for(var t=[],n=0;n<e.length;n++){var r,o=e[n];for(r in o.writes)o.writes[r].forEach(function(e){t.push({id:r,type:l[e.type]||e.type,a
 rgs:e.args})})}return t}function a(e){for(var t,n={},r=0;r<e.length;r++){var o=e[r],a=u({},o.exclusive,o.inclusive);for(var i in a)t=o.displayNames[i].current,n[t]=n[t]||{componentName:t,inclusive:0,exclusive:0,render:0,count:0},o.render[i]&&(n[t].render+=o.render[i]),o.exclusive[i]&&(n[t].exclusive+=o.exclusive[i]),o.inclusive[i]&&(n[t].inclusive+=o.inclusive[i]),o.counts[i]&&(n[t].count+=o.counts[i])}var s=[];for(t in n)n[t].exclusive>=c&&s.push(n[t]);return s.sort(function(e,t){return t.exclusive-e.exclusive}),s}function i(e,t){for(var n,r={},o=0;o<e.length;o++){var a,i=e[o],l=u({},i.exclusive,i.inclusive);t&&(a=s(i));for(var p in l)if(!t||a[p]){var d=i.displayNames[p];n=d.owner+" > "+d.current,r[n]=r[n]||{componentName:n,time:0,count:0},i.inclusive[p]&&(r[n].time+=i.inclusive[p]),i.counts[p]&&(r[n].count+=i.counts[p])}}var f=[];for(n in r)r[n].time>=c&&f.push(r[n]);return f.sort(function(e,t){return t.time-e.time}),f}function s(e){var t={},n=Object.keys(e.writes),r=u({},e.exclus
 ive,e.inclusive);for(var o in r){for(var a=!1,i=0;i<n.length;i++)if(0===n[i].indexOf(o)){a=!0;break}!a&&e.counts[o]>0&&(t[o]=!0)}return t}var u=e("./Object.assign"),c=1.2,l={_mountImageIntoNode:"set innerHTML",INSERT_MARKUP:"set innerHTML",MOVE_EXISTING:"move",REMOVE_NODE:"remove",TEXT_CONTENT:"set textContent",updatePropertyByID:"update attribute",deletePropertyByID:"delete attribute",updateStylesByID:"update styles",updateInnerHTMLByID:"set innerHTML",dangerouslyReplaceNodeWithMarkupByID:"replace"},p={getExclusiveSummary:a,getInclusiveSummary:i,getDOMSummary:o,getTotalTime:r};t.exports=p},{"./Object.assign":30}],61:[function(e,t,n){"use strict";var r=e("./ReactContext"),o=e("./ReactCurrentOwner"),a=e("./Object.assign"),i=(e("./warning"),{key:!0,ref:!0}),s=function(e,t,n,r,o,a){this.type=e,this.key=t,this.ref=n,this._owner=r,this._context=o,this.props=a};s.prototype={_isReactElement:!0},s.createElement=function(e,t,n){var a,u={},c=null,l=null;if(null!=t){l=void 0===t.ref?null:t.ref
 ,c=void 0===t.key?null:""+t.key;for(a in t)t.hasOwnProperty(a)&&!i.hasOwnProperty(a)&&(u[a]=t[a])}var p=arguments.length-2;if(1===p)u.children=n;else if(p>1){for(var d=Array(p),f=0;

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/android-chrome-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/android-chrome-144x144.png b/attachments/npm/build/img/android-chrome-144x144.png
deleted file mode 100644
index dbc01df..0000000
Binary files a/attachments/npm/build/img/android-chrome-144x144.png and /dev/null differ


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[6/6] cordova-registry-web git commit: Extend grunt, add more structure, fix bugs

Posted by mu...@apache.org.
Extend grunt, add more structure, fix bugs


Project: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/commit/676d5b79
Tree: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/tree/676d5b79
Diff: http://git-wip-us.apache.org/repos/asf/cordova-registry-web/diff/676d5b79

Branch: refs/heads/master
Commit: 676d5b79600d4fc0e989b1f42f573be0c3cf9d5f
Parents: a809ee5
Author: Murat Sutunc <su...@gmail.com>
Authored: Wed Jul 15 17:32:34 2015 -0700
Committer: Murat Sutunc <su...@gmail.com>
Committed: Wed Jul 15 17:33:00 2015 -0700

----------------------------------------------------------------------
 Gruntfile.js                                    |   19 +
 README.md                                       |    3 +
 attachments/npm/assets/css/base.css             |  428 ------
 attachments/npm/assets/css/flexboxgrid.css      | 1026 ------------
 .../npm/assets/img/android-chrome-144x144.png   |  Bin 11173 -> 0 bytes
 .../npm/assets/img/android-chrome-192x192.png   |  Bin 15781 -> 0 bytes
 .../npm/assets/img/android-chrome-36x36.png     |  Bin 2380 -> 0 bytes
 .../npm/assets/img/android-chrome-48x48.png     |  Bin 3264 -> 0 bytes
 .../npm/assets/img/android-chrome-72x72.png     |  Bin 5139 -> 0 bytes
 .../npm/assets/img/android-chrome-96x96.png     |  Bin 7089 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-114x114.png |  Bin 8592 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-120x120.png |  Bin 9021 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-144x144.png |  Bin 11173 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-152x152.png |  Bin 11920 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-180x180.png |  Bin 14535 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-57x57.png   |  Bin 3950 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-60x60.png   |  Bin 4157 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-72x72.png   |  Bin 5139 -> 0 bytes
 .../npm/assets/img/apple-touch-icon-76x76.png   |  Bin 5370 -> 0 bytes
 .../assets/img/apple-touch-icon-precomposed.png |  Bin 14109 -> 0 bytes
 attachments/npm/assets/img/apple-touch-icon.png |  Bin 14535 -> 0 bytes
 attachments/npm/assets/img/browserconfig.xml    |   12 -
 attachments/npm/assets/img/favicon-16x16.png    |  Bin 1401 -> 0 bytes
 attachments/npm/assets/img/favicon-32x32.png    |  Bin 2076 -> 0 bytes
 attachments/npm/assets/img/favicon-96x96.png    |  Bin 7089 -> 0 bytes
 attachments/npm/assets/img/favicon.ico          |  Bin 15086 -> 0 bytes
 attachments/npm/assets/img/grid.png             |  Bin 1169 -> 0 bytes
 attachments/npm/assets/img/manifest.json        |   41 -
 attachments/npm/assets/img/mstile-144x144.png   |  Bin 10873 -> 0 bytes
 attachments/npm/assets/img/mstile-150x150.png   |  Bin 10291 -> 0 bytes
 attachments/npm/assets/img/mstile-310x150.png   |  Bin 11077 -> 0 bytes
 attachments/npm/assets/img/mstile-310x310.png   |  Bin 24984 -> 0 bytes
 attachments/npm/assets/img/mstile-70x70.png     |  Bin 6957 -> 0 bytes
 attachments/npm/assets/img/pluggy.png           |  Bin 16342 -> 0 bytes
 attachments/npm/assets/img/search.png           |  Bin 540 -> 0 bytes
 attachments/npm/assets/img/shadow.png           |  Bin 942 -> 0 bytes
 attachments/npm/assets/img/sprite.png           |  Bin 13702 -> 0 bytes
 attachments/npm/assets/js/app.js                |  493 ------
 .../npm/assets/js/blacklisted-plugins.json      |    7 -
 attachments/npm/assets/js/official-plugins.json |   26 -
 attachments/npm/build/app.js                    |    6 -
 .../npm/build/img/android-chrome-144x144.png    |  Bin 10659 -> 0 bytes
 .../npm/build/img/android-chrome-192x192.png    |  Bin 15007 -> 0 bytes
 .../npm/build/img/android-chrome-36x36.png      |  Bin 2157 -> 0 bytes
 .../npm/build/img/android-chrome-48x48.png      |  Bin 3015 -> 0 bytes
 .../npm/build/img/android-chrome-72x72.png      |  Bin 4860 -> 0 bytes
 .../npm/build/img/android-chrome-96x96.png      |  Bin 6726 -> 0 bytes
 .../npm/build/img/apple-touch-icon-114x114.png  |  Bin 8162 -> 0 bytes
 .../npm/build/img/apple-touch-icon-120x120.png  |  Bin 8568 -> 0 bytes
 .../npm/build/img/apple-touch-icon-144x144.png  |  Bin 10659 -> 0 bytes
 .../npm/build/img/apple-touch-icon-152x152.png  |  Bin 11324 -> 0 bytes
 .../npm/build/img/apple-touch-icon-180x180.png  |  Bin 13842 -> 0 bytes
 .../npm/build/img/apple-touch-icon-57x57.png    |  Bin 3679 -> 0 bytes
 .../npm/build/img/apple-touch-icon-60x60.png    |  Bin 3890 -> 0 bytes
 .../npm/build/img/apple-touch-icon-72x72.png    |  Bin 4860 -> 0 bytes
 .../npm/build/img/apple-touch-icon-76x76.png    |  Bin 5072 -> 0 bytes
 .../build/img/apple-touch-icon-precomposed.png  |  Bin 13417 -> 0 bytes
 attachments/npm/build/img/apple-touch-icon.png  |  Bin 13842 -> 0 bytes
 attachments/npm/build/img/favicon-16x16.png     |  Bin 1046 -> 0 bytes
 attachments/npm/build/img/favicon-32x32.png     |  Bin 1861 -> 0 bytes
 attachments/npm/build/img/favicon-96x96.png     |  Bin 6726 -> 0 bytes
 attachments/npm/build/img/grid.png              |  Bin 133 -> 0 bytes
 attachments/npm/build/img/mstile-144x144.png    |  Bin 10334 -> 0 bytes
 attachments/npm/build/img/mstile-150x150.png    |  Bin 9752 -> 0 bytes
 attachments/npm/build/img/mstile-310x150.png    |  Bin 10590 -> 0 bytes
 attachments/npm/build/img/mstile-310x310.png    |  Bin 23983 -> 0 bytes
 attachments/npm/build/img/mstile-70x70.png      |  Bin 6528 -> 0 bytes
 attachments/npm/build/img/pluggy.png            |  Bin 16302 -> 0 bytes
 attachments/npm/build/img/search.png            |  Bin 540 -> 0 bytes
 attachments/npm/build/img/shadow.png            |  Bin 96 -> 0 bytes
 attachments/npm/build/img/sprite.png            |  Bin 10708 -> 0 bytes
 attachments/npm/build/styles.css                | 1455 ------------------
 attachments/npm/css/styles.css                  | 1455 ++++++++++++++++++
 attachments/npm/developers.html                 |    2 +-
 attachments/npm/faq.html                        |    2 +-
 attachments/npm/img/android-chrome-144x144.png  |  Bin 0 -> 10659 bytes
 attachments/npm/img/android-chrome-192x192.png  |  Bin 0 -> 15007 bytes
 attachments/npm/img/android-chrome-36x36.png    |  Bin 0 -> 2157 bytes
 attachments/npm/img/android-chrome-48x48.png    |  Bin 0 -> 3015 bytes
 attachments/npm/img/android-chrome-72x72.png    |  Bin 0 -> 4860 bytes
 attachments/npm/img/android-chrome-96x96.png    |  Bin 0 -> 6726 bytes
 .../npm/img/apple-touch-icon-114x114.png        |  Bin 0 -> 8162 bytes
 .../npm/img/apple-touch-icon-120x120.png        |  Bin 0 -> 8568 bytes
 .../npm/img/apple-touch-icon-144x144.png        |  Bin 0 -> 10659 bytes
 .../npm/img/apple-touch-icon-152x152.png        |  Bin 0 -> 11324 bytes
 .../npm/img/apple-touch-icon-180x180.png        |  Bin 0 -> 13842 bytes
 attachments/npm/img/apple-touch-icon-57x57.png  |  Bin 0 -> 3679 bytes
 attachments/npm/img/apple-touch-icon-60x60.png  |  Bin 0 -> 3890 bytes
 attachments/npm/img/apple-touch-icon-72x72.png  |  Bin 0 -> 4860 bytes
 attachments/npm/img/apple-touch-icon-76x76.png  |  Bin 0 -> 5072 bytes
 .../npm/img/apple-touch-icon-precomposed.png    |  Bin 0 -> 13417 bytes
 attachments/npm/img/apple-touch-icon.png        |  Bin 0 -> 13842 bytes
 attachments/npm/img/favicon-16x16.png           |  Bin 0 -> 1046 bytes
 attachments/npm/img/favicon-32x32.png           |  Bin 0 -> 1861 bytes
 attachments/npm/img/favicon-96x96.png           |  Bin 0 -> 6726 bytes
 attachments/npm/img/grid.png                    |  Bin 0 -> 133 bytes
 attachments/npm/img/mstile-144x144.png          |  Bin 0 -> 10334 bytes
 attachments/npm/img/mstile-150x150.png          |  Bin 0 -> 9752 bytes
 attachments/npm/img/mstile-310x150.png          |  Bin 0 -> 10590 bytes
 attachments/npm/img/mstile-310x310.png          |  Bin 0 -> 23983 bytes
 attachments/npm/img/mstile-70x70.png            |  Bin 0 -> 6528 bytes
 attachments/npm/img/pluggy.png                  |  Bin 0 -> 16302 bytes
 attachments/npm/img/search.png                  |  Bin 0 -> 540 bytes
 attachments/npm/img/shadow.png                  |  Bin 0 -> 96 bytes
 attachments/npm/img/sprite.png                  |  Bin 0 -> 10708 bytes
 attachments/npm/index.html                      |   38 +-
 attachments/npm/js/app.js                       |    6 +
 npm-search/.gitignore                           |    2 +-
 npm-search/Gulpfile.js                          |   50 +-
 npm-search/assets/css/base.css                  |  428 ------
 npm-search/assets/css/flexboxgrid.css           | 1026 ------------
 .../assets/img/android-chrome-144x144.png       |  Bin 11173 -> 0 bytes
 .../assets/img/android-chrome-192x192.png       |  Bin 15781 -> 0 bytes
 npm-search/assets/img/android-chrome-36x36.png  |  Bin 2380 -> 0 bytes
 npm-search/assets/img/android-chrome-48x48.png  |  Bin 3264 -> 0 bytes
 npm-search/assets/img/android-chrome-72x72.png  |  Bin 5139 -> 0 bytes
 npm-search/assets/img/android-chrome-96x96.png  |  Bin 7089 -> 0 bytes
 .../assets/img/apple-touch-icon-114x114.png     |  Bin 8592 -> 0 bytes
 .../assets/img/apple-touch-icon-120x120.png     |  Bin 9021 -> 0 bytes
 .../assets/img/apple-touch-icon-144x144.png     |  Bin 11173 -> 0 bytes
 .../assets/img/apple-touch-icon-152x152.png     |  Bin 11920 -> 0 bytes
 .../assets/img/apple-touch-icon-180x180.png     |  Bin 14535 -> 0 bytes
 .../assets/img/apple-touch-icon-57x57.png       |  Bin 3950 -> 0 bytes
 .../assets/img/apple-touch-icon-60x60.png       |  Bin 4157 -> 0 bytes
 .../assets/img/apple-touch-icon-72x72.png       |  Bin 5139 -> 0 bytes
 .../assets/img/apple-touch-icon-76x76.png       |  Bin 5370 -> 0 bytes
 .../assets/img/apple-touch-icon-precomposed.png |  Bin 14109 -> 0 bytes
 npm-search/assets/img/apple-touch-icon.png      |  Bin 14535 -> 0 bytes
 npm-search/assets/img/browserconfig.xml         |   12 -
 npm-search/assets/img/favicon-16x16.png         |  Bin 1401 -> 0 bytes
 npm-search/assets/img/favicon-32x32.png         |  Bin 2076 -> 0 bytes
 npm-search/assets/img/favicon-96x96.png         |  Bin 7089 -> 0 bytes
 npm-search/assets/img/favicon.ico               |  Bin 15086 -> 0 bytes
 npm-search/assets/img/grid.png                  |  Bin 1169 -> 0 bytes
 npm-search/assets/img/manifest.json             |   41 -
 npm-search/assets/img/mstile-144x144.png        |  Bin 10873 -> 0 bytes
 npm-search/assets/img/mstile-150x150.png        |  Bin 10291 -> 0 bytes
 npm-search/assets/img/mstile-310x150.png        |  Bin 11077 -> 0 bytes
 npm-search/assets/img/mstile-310x310.png        |  Bin 24984 -> 0 bytes
 npm-search/assets/img/mstile-70x70.png          |  Bin 6957 -> 0 bytes
 npm-search/assets/img/pluggy.png                |  Bin 16342 -> 0 bytes
 npm-search/assets/img/search.png                |  Bin 540 -> 0 bytes
 npm-search/assets/img/shadow.png                |  Bin 942 -> 0 bytes
 npm-search/assets/img/sprite.png                |  Bin 13702 -> 0 bytes
 npm-search/assets/js/app.js                     |  493 ------
 npm-search/assets/js/blacklisted-plugins.json   |    7 -
 npm-search/assets/js/official-plugins.json      |   26 -
 npm-search/build/.gitkeep                       |    0
 npm-search/developers.html                      |   74 -
 npm-search/faq.html                             |   55 -
 npm-search/index.html                           |   62 -
 npm-search/src/css/base.css                     |  428 ++++++
 npm-search/src/css/flexboxgrid.css              | 1026 ++++++++++++
 npm-search/src/developers.html                  |   74 +
 npm-search/src/etc/browserconfig.xml            |   12 +
 npm-search/src/etc/favicon.ico                  |  Bin 0 -> 15086 bytes
 npm-search/src/etc/manifest.json                |   41 +
 npm-search/src/faq.html                         |   55 +
 npm-search/src/img/android-chrome-144x144.png   |  Bin 0 -> 11173 bytes
 npm-search/src/img/android-chrome-192x192.png   |  Bin 0 -> 15781 bytes
 npm-search/src/img/android-chrome-36x36.png     |  Bin 0 -> 2380 bytes
 npm-search/src/img/android-chrome-48x48.png     |  Bin 0 -> 3264 bytes
 npm-search/src/img/android-chrome-72x72.png     |  Bin 0 -> 5139 bytes
 npm-search/src/img/android-chrome-96x96.png     |  Bin 0 -> 7089 bytes
 npm-search/src/img/apple-touch-icon-114x114.png |  Bin 0 -> 8592 bytes
 npm-search/src/img/apple-touch-icon-120x120.png |  Bin 0 -> 9021 bytes
 npm-search/src/img/apple-touch-icon-144x144.png |  Bin 0 -> 11173 bytes
 npm-search/src/img/apple-touch-icon-152x152.png |  Bin 0 -> 11920 bytes
 npm-search/src/img/apple-touch-icon-180x180.png |  Bin 0 -> 14535 bytes
 npm-search/src/img/apple-touch-icon-57x57.png   |  Bin 0 -> 3950 bytes
 npm-search/src/img/apple-touch-icon-60x60.png   |  Bin 0 -> 4157 bytes
 npm-search/src/img/apple-touch-icon-72x72.png   |  Bin 0 -> 5139 bytes
 npm-search/src/img/apple-touch-icon-76x76.png   |  Bin 0 -> 5370 bytes
 .../src/img/apple-touch-icon-precomposed.png    |  Bin 0 -> 14109 bytes
 npm-search/src/img/apple-touch-icon.png         |  Bin 0 -> 14535 bytes
 npm-search/src/img/favicon-16x16.png            |  Bin 0 -> 1401 bytes
 npm-search/src/img/favicon-32x32.png            |  Bin 0 -> 2076 bytes
 npm-search/src/img/favicon-96x96.png            |  Bin 0 -> 7089 bytes
 npm-search/src/img/grid.png                     |  Bin 0 -> 1169 bytes
 npm-search/src/img/mstile-144x144.png           |  Bin 0 -> 10873 bytes
 npm-search/src/img/mstile-150x150.png           |  Bin 0 -> 10291 bytes
 npm-search/src/img/mstile-310x150.png           |  Bin 0 -> 11077 bytes
 npm-search/src/img/mstile-310x310.png           |  Bin 0 -> 24984 bytes
 npm-search/src/img/mstile-70x70.png             |  Bin 0 -> 6957 bytes
 npm-search/src/img/pluggy.png                   |  Bin 0 -> 16342 bytes
 npm-search/src/img/search.png                   |  Bin 0 -> 540 bytes
 npm-search/src/img/shadow.png                   |  Bin 0 -> 942 bytes
 npm-search/src/img/sprite.png                   |  Bin 0 -> 13702 bytes
 npm-search/src/index.html                       |   62 +
 npm-search/src/js/app.js                        |  493 ++++++
 npm-search/src/js/blacklisted-plugins.json      |    7 +
 npm-search/src/js/official-plugins.json         |   26 +
 package.json                                    |   13 +-
 193 files changed, 3766 insertions(+), 5766 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/Gruntfile.js
----------------------------------------------------------------------
diff --git a/Gruntfile.js b/Gruntfile.js
index 86eb1ff..c3a3377 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -104,6 +104,17 @@ module.exports = function(grunt) {
       before: {
         src: 'attachments/index.html',
         dest: './tmp/index.html'
+      },
+      npmsearch: {
+        expand: true,
+        cwd: 'npm-search/build/',
+        src: ['**', '!.gitkeep'],
+        dest: 'attachments/npm/'
+      }
+    },
+    clean: {
+      npmsearch: {
+        src: 'attachments/npm/'
       }
     }
   });
@@ -120,6 +131,13 @@ module.exports = function(grunt) {
       ]);
   });
 
+  grunt.registerTask('npmsearch', function(target) {
+      grunt.task.run([
+          'clean:npmsearch', // Deletes all files from attachments/npm 
+          'copy:npmsearch'   // Copy npm website from npm-search directory to attachments/npm
+      ])
+  });
+
   grunt.registerTask('cloudant', function (target) {
       grunt.task.run([
           'less',
@@ -129,6 +147,7 @@ module.exports = function(grunt) {
           'copy:after' //Copy index.html back to attachments, with the preprocess directives as seved.
       ]);
   });
+
   grunt.registerTask('iriscouch', function (target) {
       grunt.task.run([
           'less',

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 9ab76c2..21de2c0 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,9 @@ The site is setup to use livereload. As you modify & save files in the `attachme
 
 NOTE - The Grunt server & watch commands are set up to use livereload - this will automatically reload your browser after the server is done reloading - no more needing to click the refresh button on your browser. The livereload script is put in the HEAD of the index.html page - if you wish to not use it, you will need to comment or remove that from the index.html page.
 
+### Updating npm Search Page
+First read the README file that is located under npm-search folder. Once you make changes, run `gulp build` while on npm-search directory. In order to package npm search page with cordova registry website, run `grunt npmsearch` while on cordova-registry-web folder. After this please validate your changes with `grunt server`.
+
 ### Publish Plugins to your local instance
 ```bash
 plugman config set registry http://localhost:5984/registry/_design/app/_rewrite

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/css/base.css
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/css/base.css b/attachments/npm/assets/css/base.css
deleted file mode 100644
index 571bbc6..0000000
--- a/attachments/npm/assets/css/base.css
+++ /dev/null
@@ -1,428 +0,0 @@
-body {
-  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
-  font-size: 16px;
-  margin: 0;
-}
-
-h2 {
-    padding: 48px 0;
-    font-size: 34px;
-}
-
-/*---------------------------------------------------
-    Pluggy and msg
----------------------------------------------------*/
-#headerBackground {
-  background: url('img/grid.png');
-}
-
-#topContent {
-  margin-top: 25px;
-}
-
-#pluggy {
-  background: transparent url('img/pluggy.png') no-repeat center;
-  background-size: contain;
-  height: 200px;
-  margin-left: 25px;
-}
-
-.discover-message {
-  background-color: white;
-  font-size: 56px;
-  margin: 25px 5px 5px 5px;
-  text-align: left;
-  display: inline-block;
-  padding: 0px 8px;
-  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
-}
-
-/*---------------------------------------------------
-    Searchbox
----------------------------------------------------*/
-
-#searchwrapper {
-  margin: 25px 0px;
-  border: 2px solid gray;
-  background-color: white;
-}
-
-#searchwrapper .searchBox {
-  display: block;
-  height: 35px;
-  width: 100%;
-  border: 0;
-  background: none;
-  outline: 0;
-  font-size: 14px;
-  padding: 0 5px 0 35px;
-  color: #363636;
-  background: url('img/search.png') no-repeat;
-  background-position: 5.5px 5.5px;
-}
-
-#supportedPlatforms div {
-  margin: 12px 2px 2px 0;
-  border: 1px solid #363636;
-  border-radius: 8px;
-  padding: .4em .5em;
-  height: 11px;
-  font-size: 11px;
-  line-height: 11px;
-  display: inline-block;
-  align-items: center;
-
-}
-
-/*---------------------------------------------------
-    Plugin List
----------------------------------------------------*/
-
-.pluginList {
-  list-style-type: none;
-  padding: 0px;
-}
-
-.pluginList li {
-  margin: 0 0 60px 0;
-}
-
-/*---------------------------------------------------
-    PluginCards
----------------------------------------------------*/
-.pluginCard {
-  position: relative;
-  border: 1px solid #CDCDCD;
-  background: white;
-  min-height: 10em;
-  height: 10em;
-}
-
-.pluginCard:after {
-  z-index: -1;
-  position: absolute;
-  content: "";
-  bottom: 18px;
-  right: 2px;
-  left: auto;
-  width: 50%;
-  top: 80%;
-  max-width:300px;
-  background: #777;
-  -webkit-box-shadow: 0 15px 10px #777;
-  -moz-box-shadow: 0 15px 10px #777;
-  box-shadow: 0 15px 10px #777;
-  -webkit-transform: rotate(3deg);
-  -moz-transform: rotate(3deg);
-  -o-transform: rotate(3deg);
-  -ms-transform: rotate(3deg);
-  transform: rotate(3deg);
-}
-
-.pluginCard h3 {
-  margin: 0.2em 0.2em 0.4em 0em;
-  font-size: 1.5em;
-  display: inline-block;
-}
-
-.pluginCard a:link,
-.pluginCard a:visited {
-  text-decoration: none;
-  color: #404D58;
-}
-
-.pluginCard a:hover,
-.pluginCard a:active {
-  text-decoration: underline;
-}
-
-.featuredPlugin {
-  -webkit-box-shadow: -3px 0px 0px #4CC2E4;
-  -moz-box-shadow: -3px 0px 0px #4CC2E4;
-  box-shadow: -3px 0px 0px #4CC2E4;
-  border-left-width: 0px;
-}
-
-.pluginCardContents {
-  border: 1px solid #363636;
-  margin-bottom: 10px;
-  position: relative;
-  background: white;
-}
-
-.primaryContent {
-  display: flex;
-  display: -webkit-flex;
-  flex-direction: column;
-  -webkit-flex-direction: column;
-}
-
-.primaryContent .header small {
-  color: #83878B;
-}
-
-.primaryContent .pluginAuthor {
-  font-weight: bold;
-}
-
-.primaryContent .pluginDesc {
-  -webkit-flex-grow: 1;
-  flex-grow: 1;
-  font-size: 1em;
-  color: #404040;
-}
-
-.supportedPlatforms {
-  list-style-type: none;
-  padding: 5px 0px;
-  font-size: 0.8em;
-}
-
-.supportedPlatforms li {
-  margin: 0 5px 0 0;
-  display: inline-block;
-  border: 1px solid #F2F2F2;
-  padding: 2px 10px;
-  color: #7A828B;
-}
-
-.secondaryContent {
-  display: flex;
-  display: -webkit-flex;
-  flex-direction: column;
-  -webkit-flex-direction: column;
-  text-align: right;
-  font-size: 0.9em;
-  color: #7A828B;
-}
-
-.download {
-  -webkit-flex-grow: 1;
-  flex-grow: 1;
-}
-
-.extraInfo p {
-margin-top: 2px;
-margin-bottom: 2px;
-}
-
-.clickable {
-  cursor: pointer;
-}
-
-/*---------------------------------------------------
-    Misc
----------------------------------------------------*/
-
-.icon {
-  background: url('img/sprite.png') no-repeat;
-  background-position: 0 -220px;
-  padding-left: 78px;
-}
-.icon-about {
-  background-position: 0 -220px;
-}
-
-/*---------------------------------------------------
-    Layout - Header
----------------------------------------------------*/
-#wrap,
-.wrap {
-  width: 1008px;
-  margin: 0 auto;
-  position: relative;
-}
-
-.header-placeholder {
-  height: 90px;
-}
-#header {
-  height: 90px;
-  position: fixed;
-  z-index: 10;
-  left: 0;
-  right: 0;
-  background: #fff;
-  border-bottom: 1px solid #ddd;
-}
-#header .shadow {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: -3px;
-  height: 3px;
-  background: url('img/shadow.png');
-}
-
-.logo,
-.closing {
-  background: url('img/sprite.png') no-repeat;
-  -webkit-transition: background 0.25s linear;
-  -moz-transition: background 0.25s linear;
-  transition: background 0.25s linear;
-  background-color: #3b4854;
-  background-position: 0 0px;
-  position: absolute;
-  left: 0;
-  top: 5px;
-  width: 220px;
-  height: 75px;
-}
-.logo:hover {
-  background-color: #4cc2e4;
-}
-.menu {
-  padding: 16px 0;
-  float: right;
-}
-.menu a {
-  text-decoration: none;
-  -webkit-transition: background 0.25s linear;
-  -moz-transition: background 0.25s linear;
-  transition: background 0.25s linear;
-  padding: 8px;
-  margin: 0 8px;
-  line-height: 55px;
-}
-.menu a:hover,
-.menu a:link,
-.menu a:visited {
-  color: #4cc2e4;
-}
-.menu-dropdown {
-  display: none;
-  position: absolute;
-  right: 16px;
-  top: 32px;
-  width: 40%;
-}
-.menu-dropdown select {
-  width: 100%;
-}
-
-/*---------------------------------------------------
-    Code
----------------------------------------------------*/
-pre, code {
-  font-size: 12px;
-  font-family: Consolas, "Liberation Mono", Courier, monospace;
-}
-
-code {
-  margin: 0 0px;
-  padding: 0px 0px;
-  white-space: nowrap;
-  border: 1px solid #eaeaea;
-  background-color: #f8f8f8;
-  border-radius: 3px;
-}
-
-pre>code {
-  margin: 0;
-  padding: 0;
-  white-space: pre;
-  border: none;
-  background: transparent;
-}
-
-pre {
-  background-color: #f8f8f8;
-  border: 1px solid #ccc;
-  font-size: 13px;
-  line-height: 19px;
-  overflow: auto;
-  padding: 6px 10px;
-  border-radius: 3px;
-}
-
-pre code {
-  background-color: transparent;
-  border: none;
-}
-
-
-/*---------------------------------------------------
-    Mobile
----------------------------------------------------*/
-@media all and (max-width: 1024px) {
-  #wrap,
-  .wrap {
-    width: auto;
-    margin-left: 24px;
-    margin-right: 24px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 890px) {
-  h2 {
-    font-size: 24px;
-    padding-top: 54px;
-  }
-  .menu {
-    display: none;
-  }
-  .menu-dropdown {
-    display: block;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 720px) {
-  h2 {
-    font-size: 22px;
-    padding-top: 54px;
-  }
-  .menu-dropdown {
-    top: 16px;
-  }
-  #header,
-  .header-placeholder {
-    height: 52px;
-  }
-  .logo {
-    top: 7px;
-    width: 110px;
-    height: 37px;
-    background-size: 112px 425px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 585px) {
-  h2 {
-    letter-spacing: 0;
-  }
-  .wrap {
-    margin-left: 12px;
-    margin-right: 12px;
-  }
-  .icon {
-    background-size: 112px 425px;
-    padding: 20px 48px 20px 48px;
-    overflow: hidden;
-    display: block;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .icon-about {
-    background-position: 0 -110px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 440px) {
-  .icon {
-    padding: 22px 16px 20px 35px;
-  }
-    h2 {
-    font-size: 20px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/css/flexboxgrid.css
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/css/flexboxgrid.css b/attachments/npm/assets/css/flexboxgrid.css
deleted file mode 100644
index 68dace4..0000000
--- a/attachments/npm/assets/css/flexboxgrid.css
+++ /dev/null
@@ -1,1026 +0,0 @@
-/*
- * Copyright 2013 Kristofer Joseph
- *
- * Licensed 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.
- */
-
-/*
- *
- * Uncomment and set these variables to customize the grid.
- *
- * :root {
- *  --gutter-width: 1rem;
- *  --outer-margin: 2rem;
- *  --gutter-compensation: calc( var( --gutter-width / 2 ) * -1 );
- *  --half-gutter-width: calc( var( --gutter-width / 2 ) );
- *  --screen-xs-min: 30em;
- *  --screen-sm-min: 48em;
- *  --screen-md-min: 62em;
- *  --screen-lg-min: 75em;
- *  --container-sm: calc( 45rem + var( --gutter-width ) );
- *  --container-md: calc( 60rem + var( --gutter-width ) );
- *  --container-lg: calc( 70rem + var( --gutter-width ) );
- * }
- *
-*/
-
-.container-fluid {
-  margin-right: auto;
-  margin-left: auto;
-  padding-right: 2rem;
-  padding-left: 2rem;
-}
-
-.row {
-  box-sizing: border-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-flex: 0 1 auto;
-  -ms-flex: 0 1 auto;
-  flex: 0 1 auto;
-  -webkit-flex-direction: row;
-  -ms-flex-direction: row;
-  flex-direction: row;
-  -webkit-flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  flex-wrap: wrap;
-  margin-right: -0.5rem;
-  margin-left: -0.5rem;
-}
-
-.row.reverse {
-  -webkit-flex-direction: row-reverse;
-  -ms-flex-direction: row-reverse;
-  flex-direction: row-reverse;
-}
-
-.col.reverse {
-  -webkit-flex-direction: column-reverse;
-  -ms-flex-direction: column-reverse;
-  flex-direction: column-reverse;
-}
-
-.col-xs,
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-xs-offset-1,
-.col-xs-offset-2,
-.col-xs-offset-3,
-.col-xs-offset-4,
-.col-xs-offset-5,
-.col-xs-offset-6,
-.col-xs-offset-7,
-.col-xs-offset-8,
-.col-xs-offset-9,
-.col-xs-offset-10,
-.col-xs-offset-11,
-.col-xs-offset-12 {
-  box-sizing: border-box;
-  -webkit-flex: 0 0 auto;
-  -ms-flex: 0 0 auto;
-  flex: 0 0 auto;
-  padding-right: 0.5rem;
-  padding-left: 0.5rem;
-}
-
-.col-xs {
-  -webkit-flex-grow: 1;
-  -ms-flex-positive: 1;
-  flex-grow: 1;
-  -webkit-flex-basis: 0;
-  -ms-flex-preferred-size: 0;
-  flex-basis: 0;
-  max-width: 100%;
-}
-
-.col-xs-1 {
-  -webkit-flex-basis: 8.333%;
-  -ms-flex-preferred-size: 8.333%;
-  flex-basis: 8.333%;
-  max-width: 8.333%;
-}
-
-.col-xs-2 {
-  -webkit-flex-basis: 16.667%;
-  -ms-flex-preferred-size: 16.667%;
-  flex-basis: 16.667%;
-  max-width: 16.667%;
-}
-
-.col-xs-3 {
-  -webkit-flex-basis: 25%;
-  -ms-flex-preferred-size: 25%;
-  flex-basis: 25%;
-  max-width: 25%;
-}
-
-.col-xs-4 {
-  -webkit-flex-basis: 33.333%;
-  -ms-flex-preferred-size: 33.333%;
-  flex-basis: 33.333%;
-  max-width: 33.333%;
-}
-
-.col-xs-5 {
-  -webkit-flex-basis: 41.667%;
-  -ms-flex-preferred-size: 41.667%;
-  flex-basis: 41.667%;
-  max-width: 41.667%;
-}
-
-.col-xs-6 {
-  -webkit-flex-basis: 50%;
-  -ms-flex-preferred-size: 50%;
-  flex-basis: 50%;
-  max-width: 50%;
-}
-
-.col-xs-7 {
-  -webkit-flex-basis: 58.333%;
-  -ms-flex-preferred-size: 58.333%;
-  flex-basis: 58.333%;
-  max-width: 58.333%;
-}
-
-.col-xs-8 {
-  -webkit-flex-basis: 66.667%;
-  -ms-flex-preferred-size: 66.667%;
-  flex-basis: 66.667%;
-  max-width: 66.667%;
-}
-
-.col-xs-9 {
-  -webkit-flex-basis: 75%;
-  -ms-flex-preferred-size: 75%;
-  flex-basis: 75%;
-  max-width: 75%;
-}
-
-.col-xs-10 {
-  -webkit-flex-basis: 83.333%;
-  -ms-flex-preferred-size: 83.333%;
-  flex-basis: 83.333%;
-  max-width: 83.333%;
-}
-
-.col-xs-11 {
-  -webkit-flex-basis: 91.667%;
-  -ms-flex-preferred-size: 91.667%;
-  flex-basis: 91.667%;
-  max-width: 91.667%;
-}
-
-.col-xs-12 {
-  -webkit-flex-basis: 100%;
-  -ms-flex-preferred-size: 100%;
-  flex-basis: 100%;
-  max-width: 100%;
-}
-
-.col-xs-offset-1 {
-  margin-left: 8.333%;
-}
-
-.col-xs-offset-2 {
-  margin-left: 16.667%;
-}
-
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-
-.col-xs-offset-4 {
-  margin-left: 33.333%;
-}
-
-.col-xs-offset-5 {
-  margin-left: 41.667%;
-}
-
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-
-.col-xs-offset-7 {
-  margin-left: 58.333%;
-}
-
-.col-xs-offset-8 {
-  margin-left: 66.667%;
-}
-
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-
-.col-xs-offset-10 {
-  margin-left: 83.333%;
-}
-
-.col-xs-offset-11 {
-  margin-left: 91.667%;
-}
-
-.start-xs {
-  -webkit-justify-content: flex-start;
-  -ms-flex-pack: start;
-  justify-content: flex-start;
-  text-align: start;
-}
-
-.center-xs {
-  -webkit-justify-content: center;
-  -ms-flex-pack: center;
-  justify-content: center;
-  text-align: center;
-}
-
-.end-xs {
-  -webkit-justify-content: flex-end;
-  -ms-flex-pack: end;
-  justify-content: flex-end;
-  text-align: end;
-}
-
-.top-xs {
-  -webkit-align-items: flex-start;
-  -ms-flex-align: start;
-  align-items: flex-start;
-}
-
-.middle-xs {
-  -webkit-align-items: center;
-  -ms-flex-align: center;
-  align-items: center;
-}
-
-.bottom-xs {
-  -webkit-align-items: flex-end;
-  -ms-flex-align: end;
-  align-items: flex-end;
-}
-
-.around-xs {
-  -webkit-justify-content: space-around;
-  -ms-flex-pack: distribute;
-  justify-content: space-around;
-}
-
-.between-xs {
-  -webkit-justify-content: space-between;
-  -ms-flex-pack: justify;
-  justify-content: space-between;
-}
-
-.first-xs {
-  -webkit-order: -1;
-  -ms-flex-order: -1;
-  order: -1;
-}
-
-.last-xs {
-  -webkit-order: 1;
-  -ms-flex-order: 1;
-  order: 1;
-}
-
-@media only screen and (min-width: 48em) {
-  .container {
-    width: 46rem;
-  }
-
-  .col-sm,
-  .col-sm-1,
-  .col-sm-2,
-  .col-sm-3,
-  .col-sm-4,
-  .col-sm-5,
-  .col-sm-6,
-  .col-sm-7,
-  .col-sm-8,
-  .col-sm-9,
-  .col-sm-10,
-  .col-sm-11,
-  .col-sm-12,
-  .col-sm-offset-1,
-  .col-sm-offset-2,
-  .col-sm-offset-3,
-  .col-sm-offset-4,
-  .col-sm-offset-5,
-  .col-sm-offset-6,
-  .col-sm-offset-7,
-  .col-sm-offset-8,
-  .col-sm-offset-9,
-  .col-sm-offset-10,
-  .col-sm-offset-11,
-  .col-sm-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-sm {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-sm-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-sm-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-sm-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-sm-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-sm-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-sm-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-sm-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-sm-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-sm-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-sm-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-sm-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-sm-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-sm-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-sm-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-sm-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-sm-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-sm-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-sm-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-sm-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-sm-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-sm {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-sm {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-sm {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-sm {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-sm {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-sm {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-sm {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-sm {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-sm {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-sm {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
-
-@media only screen and (min-width: 62em) {
-  .container {
-    width: 61rem;
-  }
-
-  .col-md,
-  .col-md-1,
-  .col-md-2,
-  .col-md-3,
-  .col-md-4,
-  .col-md-5,
-  .col-md-6,
-  .col-md-7,
-  .col-md-8,
-  .col-md-9,
-  .col-md-10,
-  .col-md-11,
-  .col-md-12,
-  .col-md-offset-1,
-  .col-md-offset-2,
-  .col-md-offset-3,
-  .col-md-offset-4,
-  .col-md-offset-5,
-  .col-md-offset-6,
-  .col-md-offset-7,
-  .col-md-offset-8,
-  .col-md-offset-9,
-  .col-md-offset-10,
-  .col-md-offset-11,
-  .col-md-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-md {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-md-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-md-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-md-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-md-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-md-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-md-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-md-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-md-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-md-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-md-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-md-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-md-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-md-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-md-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-md-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-md-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-md-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-md-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-md-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-md-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-md {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-md {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-md {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-md {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-md {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-md {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-md {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-md {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-md {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-md {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
-
-@media only screen and (min-width: 75em) {
-  .container {
-    width: 71rem;
-  }
-
-  .col-lg,
-  .col-lg-1,
-  .col-lg-2,
-  .col-lg-3,
-  .col-lg-4,
-  .col-lg-5,
-  .col-lg-6,
-  .col-lg-7,
-  .col-lg-8,
-  .col-lg-9,
-  .col-lg-10,
-  .col-lg-11,
-  .col-lg-12,
-  .col-lg-offset-1,
-  .col-lg-offset-2,
-  .col-lg-offset-3,
-  .col-lg-offset-4,
-  .col-lg-offset-5,
-  .col-lg-offset-6,
-  .col-lg-offset-7,
-  .col-lg-offset-8,
-  .col-lg-offset-9,
-  .col-lg-offset-10,
-  .col-lg-offset-11,
-  .col-lg-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-lg {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-lg-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-lg-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-lg-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-lg-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-lg-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-lg-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-lg-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-lg-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-lg-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-lg-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-lg-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-lg-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-lg-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-lg-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-lg-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-lg-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-lg-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-lg-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-lg-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-lg-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-lg {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-lg {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-lg {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-lg {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-lg {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-lg {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-lg {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-lg {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-lg {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-lg {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/android-chrome-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/android-chrome-144x144.png b/attachments/npm/assets/img/android-chrome-144x144.png
deleted file mode 100644
index 70826eb..0000000
Binary files a/attachments/npm/assets/img/android-chrome-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/android-chrome-192x192.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/android-chrome-192x192.png b/attachments/npm/assets/img/android-chrome-192x192.png
deleted file mode 100644
index 728f217..0000000
Binary files a/attachments/npm/assets/img/android-chrome-192x192.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/android-chrome-36x36.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/android-chrome-36x36.png b/attachments/npm/assets/img/android-chrome-36x36.png
deleted file mode 100644
index 277efed..0000000
Binary files a/attachments/npm/assets/img/android-chrome-36x36.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/android-chrome-48x48.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/android-chrome-48x48.png b/attachments/npm/assets/img/android-chrome-48x48.png
deleted file mode 100644
index 3a84506..0000000
Binary files a/attachments/npm/assets/img/android-chrome-48x48.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/android-chrome-72x72.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/android-chrome-72x72.png b/attachments/npm/assets/img/android-chrome-72x72.png
deleted file mode 100644
index bc6a1fb..0000000
Binary files a/attachments/npm/assets/img/android-chrome-72x72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/android-chrome-96x96.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/android-chrome-96x96.png b/attachments/npm/assets/img/android-chrome-96x96.png
deleted file mode 100644
index 961d0b4..0000000
Binary files a/attachments/npm/assets/img/android-chrome-96x96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-114x114.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-114x114.png b/attachments/npm/assets/img/apple-touch-icon-114x114.png
deleted file mode 100644
index 68a5502..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-114x114.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-120x120.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-120x120.png b/attachments/npm/assets/img/apple-touch-icon-120x120.png
deleted file mode 100644
index 85a0369..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-120x120.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-144x144.png b/attachments/npm/assets/img/apple-touch-icon-144x144.png
deleted file mode 100644
index 70826eb..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-152x152.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-152x152.png b/attachments/npm/assets/img/apple-touch-icon-152x152.png
deleted file mode 100644
index 92034ec..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-152x152.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-180x180.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-180x180.png b/attachments/npm/assets/img/apple-touch-icon-180x180.png
deleted file mode 100644
index 90032cf..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-180x180.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-57x57.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-57x57.png b/attachments/npm/assets/img/apple-touch-icon-57x57.png
deleted file mode 100644
index e2f87c3..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-57x57.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-60x60.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-60x60.png b/attachments/npm/assets/img/apple-touch-icon-60x60.png
deleted file mode 100644
index 1055d9f..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-60x60.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-72x72.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-72x72.png b/attachments/npm/assets/img/apple-touch-icon-72x72.png
deleted file mode 100644
index bc6a1fb..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-72x72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-76x76.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-76x76.png b/attachments/npm/assets/img/apple-touch-icon-76x76.png
deleted file mode 100644
index 8404b3c..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-76x76.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon-precomposed.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon-precomposed.png b/attachments/npm/assets/img/apple-touch-icon-precomposed.png
deleted file mode 100644
index 4663c60..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/apple-touch-icon.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/apple-touch-icon.png b/attachments/npm/assets/img/apple-touch-icon.png
deleted file mode 100644
index 90032cf..0000000
Binary files a/attachments/npm/assets/img/apple-touch-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/browserconfig.xml
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/browserconfig.xml b/attachments/npm/assets/img/browserconfig.xml
deleted file mode 100644
index e31b3f1..0000000
--- a/attachments/npm/assets/img/browserconfig.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
-  <msapplication>
-    <tile>
-      <square70x70logo src="/assets/img/mstile-70x70.png"/>
-      <square150x150logo src="/assets/img/mstile-150x150.png"/>
-      <square310x310logo src="/assets/img/mstile-310x310.png"/>
-      <wide310x150logo src="/assets/img/mstile-310x150.png"/>
-      <TileColor>#da532c</TileColor>
-    </tile>
-  </msapplication>
-</browserconfig>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/favicon-16x16.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/favicon-16x16.png b/attachments/npm/assets/img/favicon-16x16.png
deleted file mode 100644
index f7667c5..0000000
Binary files a/attachments/npm/assets/img/favicon-16x16.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/favicon-32x32.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/favicon-32x32.png b/attachments/npm/assets/img/favicon-32x32.png
deleted file mode 100644
index 249dbc1..0000000
Binary files a/attachments/npm/assets/img/favicon-32x32.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/favicon-96x96.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/favicon-96x96.png b/attachments/npm/assets/img/favicon-96x96.png
deleted file mode 100644
index 961d0b4..0000000
Binary files a/attachments/npm/assets/img/favicon-96x96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/favicon.ico
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/favicon.ico b/attachments/npm/assets/img/favicon.ico
deleted file mode 100644
index 365e772..0000000
Binary files a/attachments/npm/assets/img/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/grid.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/grid.png b/attachments/npm/assets/img/grid.png
deleted file mode 100644
index 5d97586..0000000
Binary files a/attachments/npm/assets/img/grid.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/manifest.json
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/manifest.json b/attachments/npm/assets/img/manifest.json
deleted file mode 100644
index 6a74e8f..0000000
--- a/attachments/npm/assets/img/manifest.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-	"name": "My app",
-	"icons": [
-		{
-			"src": "\/assets\/img\/android-chrome-36x36.png",
-			"sizes": "36x36",
-			"type": "image\/png",
-			"density": "0.75"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-48x48.png",
-			"sizes": "48x48",
-			"type": "image\/png",
-			"density": "1.0"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-72x72.png",
-			"sizes": "72x72",
-			"type": "image\/png",
-			"density": "1.5"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-96x96.png",
-			"sizes": "96x96",
-			"type": "image\/png",
-			"density": "2.0"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-144x144.png",
-			"sizes": "144x144",
-			"type": "image\/png",
-			"density": "3.0"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-192x192.png",
-			"sizes": "192x192",
-			"type": "image\/png",
-			"density": "4.0"
-		}
-	]
-}

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/mstile-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/mstile-144x144.png b/attachments/npm/assets/img/mstile-144x144.png
deleted file mode 100644
index d648b83..0000000
Binary files a/attachments/npm/assets/img/mstile-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/mstile-150x150.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/mstile-150x150.png b/attachments/npm/assets/img/mstile-150x150.png
deleted file mode 100644
index 3e2de8a..0000000
Binary files a/attachments/npm/assets/img/mstile-150x150.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/mstile-310x150.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/mstile-310x150.png b/attachments/npm/assets/img/mstile-310x150.png
deleted file mode 100644
index 636fa5e..0000000
Binary files a/attachments/npm/assets/img/mstile-310x150.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/mstile-310x310.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/mstile-310x310.png b/attachments/npm/assets/img/mstile-310x310.png
deleted file mode 100644
index 17bc907..0000000
Binary files a/attachments/npm/assets/img/mstile-310x310.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/mstile-70x70.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/mstile-70x70.png b/attachments/npm/assets/img/mstile-70x70.png
deleted file mode 100644
index 6b4314f..0000000
Binary files a/attachments/npm/assets/img/mstile-70x70.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/pluggy.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/pluggy.png b/attachments/npm/assets/img/pluggy.png
deleted file mode 100644
index 1317585..0000000
Binary files a/attachments/npm/assets/img/pluggy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/search.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/search.png b/attachments/npm/assets/img/search.png
deleted file mode 100644
index 9fb799b..0000000
Binary files a/attachments/npm/assets/img/search.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/shadow.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/shadow.png b/attachments/npm/assets/img/shadow.png
deleted file mode 100644
index 8c5ba5f..0000000
Binary files a/attachments/npm/assets/img/shadow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/img/sprite.png
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/img/sprite.png b/attachments/npm/assets/img/sprite.png
deleted file mode 100644
index 7195426..0000000
Binary files a/attachments/npm/assets/img/sprite.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/js/app.js
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/js/app.js b/attachments/npm/assets/js/app.js
deleted file mode 100644
index 278f5ef..0000000
--- a/attachments/npm/assets/js/app.js
+++ /dev/null
@@ -1,493 +0,0 @@
-var React    = window.React = require('react'), // assign it to window for react chrome extension
-    classNames = require('classnames'),
-    App = {};
-
-var Constants = {
-    DownloadCountBatch: 100,
-    NpmSearchInitialSize: 500
-}
-
-var OfficialPlugin = React.createClass({
-    render: function() {
-        return (
-            <div id="featured"></div>
-        );
-    }
-});
-
-var PlatformButton = React.createClass({
-    onClick: function() {
-        var appInstance = React.render(<App />, document.getElementById('container'));
-        appInstance.addCondition("platform:" + this.props.platform);
-    },
-    render: function() {
-        return (
-            <li className = "clickable" onClick={this.onClick}> {this.props.platform} </li>
-        );
-    }
-});
-
-var SupportedPlatforms = React.createClass({
-    getInitialState: function() {
-        return {
-            moreClicked: false
-        };
-    },
-    onClick: function() {
-        this.setState({
-            moreClicked: true
-        });
-    },
-    render: function() {
-        var keywords = this.props.keywords;
-        var sortedMajorPlatforms = [{present:false, text: "Android"}, {present:false, text: "iOS"}, {present:false, text: "Windows"}, {present:false, text: "Blackberry10"}];
-        var majorPlatformsSupported = [];
-        var otherPlatformsSupported = [];
-        // remove windows8 & windows dupe
-        if (keywords.indexOf('cordova-windows') > -1 && keywords.indexOf('cordova-windows8') > -1) {
-            keywords.splice(keywords.indexOf('cordova-windows8'), 1);
-        }
-        keywords.forEach(function(keyword) {
-            switch (keyword) {
-                case 'cordova-firefoxos':
-                    otherPlatformsSupported.push(<PlatformButton platform="FirefoxOS" />);
-                    break;
-                case 'cordova-android':
-                    sortedMajorPlatforms[0].present = true;
-                    break;
-                case 'cordova-amazon-fireos':
-                    otherPlatformsSupported.push(<PlatformButton platform="FireOS" />);
-                    break;
-                case 'cordova-ubuntu':
-                    otherPlatformsSupported.push(<PlatformButton platform="Ubuntu" />);
-                    break;
-                case 'cordova-ios':
-                    sortedMajorPlatforms[1].present = true;
-                    break;
-                case 'cordova-blackberry10':
-                    sortedMajorPlatforms[3].present = true;
-                    break;
-                case 'cordova-wp8':
-                    otherPlatformsSupported.push(<PlatformButton platform="Windows Phone 8" />);
-                    break;
-                case 'cordova-windows8':
-                case 'cordova-windows':
-                    sortedMajorPlatforms[2].present = true;
-                    break;
-                case 'cordova-browser':
-                    otherPlatformsSupported.push(<PlatformButton platform="Browser" />);
-                    break;
-            }
-        });
-
-        sortedMajorPlatforms.forEach(function(platform) {
-            if(platform.present) {
-                majorPlatformsSupported.push(<PlatformButton platform={platform.text} />)
-            }
-        });
-        while(majorPlatformsSupported.length < 4 && otherPlatformsSupported.length > 0) {
-            majorPlatformsSupported.push(otherPlatformsSupported.shift());
-        }
-
-        var moreButton;
-        if(otherPlatformsSupported.length > 0 && !this.state.moreClicked) {
-            moreButton = <li className="clickable" onClick={this.onClick}>...</li>
-        }
-        if (!this.state.moreClicked) {
-            otherPlatformsSupported = null;
-        }
-        return (
-            <ul className="supportedPlatforms">
-                {majorPlatformsSupported}
-                {moreButton}
-                {otherPlatformsSupported}
-            </ul>
-        );
-    }
-});
-
-var SearchBar = React.createClass({
-    handleChange: function() {
-        this.props.onUserInput(
-            this.refs.filterTextInput.getDOMNode().value
-        )
-    },
-    render: function() {
-        return (
-            <div className="col-xs-offset-2 col-xs-8">
-                <div id="searchwrapper">
-                    <input
-                        className="searchBox"
-                        type="search"
-                        autoComplete="off"
-                        placeholder={this.props.placeHolderText}
-                        value={this.props.filterText}
-                        ref="filterTextInput"
-                        onChange={this.handleChange}
-                    />
-                </div>
-            </div>
-        );
-    }
-});
-
-var Plugin = React.createClass({
-    shouldComponentUpdate: function(nextProps, nextState) {
-        return this.props.plugin !== nextProps.plugin;
-    },
-    render: function() {
-        var license = this.props.plugin.license;
-        if (license && license.length > 1) {
-            license = license[0];
-        }
-        var downloadField;
-
-        var classes = classNames({
-            'pluginCard': true,
-            'featuredPlugin': this.props.plugin.isOfficial,
-            'row': true
-        });
-
-        if(this.props.plugin.downloadCount) {
-            var downloadCount = this.props.plugin.downloadCount.toLocaleString();
-            downloadField = <p><small> {downloadCount} downloads last month</small></p>;
-        }
-        return (
-            <li>
-                <div className={classes}>
-                    <div className="primaryContent col-xs-9">
-                        <div className="header">
-                            <h3><a href={'https://www.npmjs.com/package/' + this.props.plugin.name} target="_blank">{this.props.plugin.name}</a></h3>
-                            <small className="pluginVersion">v{this.props.plugin.version}</small>
-                            <small> by </small>
-                            <small className="pluginAuthor">{this.props.plugin.author}</small>
-                        </div>
-                        <div className="pluginDesc">{this.props.plugin.description}</div>
-                        <SupportedPlatforms keywords={this.props.plugin.keywords}/>
-                        </div>
-                        <div className="secondaryContent col-xs-3">
-                        <div className="download">
-                            <p></p>
-                        </div>
-                        <div className="extraInfo">
-                            <p><small><strong>License:</strong> {license}</small></p>
-                            {downloadField}
-                            <p><small><em>Last updated {this.props.plugin.modified} days ago</em></small></p>
-                        </div>
-                    </div>
-                </div>
-            </li>
-        )
-    }
-});
-
-var timer=null;
-
-window.addEventListener('popstate', function(e) {
-    if(e.state) {
-        var appInstance = React.render(<App />, document.getElementById('container'));
-        appInstance.loadFilterText(e.state.filterText);
-    }
-});
-
-var PluginList = React.createClass({
-    statics: {
-        contains: function(values, pluginInfo) {
-            var allValuesPresent = true;
-            if(values.length == 0) {
-                return allValuesPresent;
-            }
-            if(!pluginInfo) {
-                return false;
-            }
-            values.forEach(function(value) {
-                var valuePresent = false;
-                for(var index=0; index < pluginInfo.length; index++) {
-                    if(pluginInfo[index] && pluginInfo[index].toLowerCase().indexOf(value) > -1) {
-                        valuePresent = true;
-                    }
-                }
-                if(!valuePresent) {
-                    allValuesPresent = false;
-                }
-            });
-            return allValuesPresent;
-        },
-        populateFilters: function(filterText)
-        {
-            var searchStrings = filterText.split(" ");
-            var filters = [];
-            filters['platforms'] = [];
-            filters['authors'] = [];
-            filters['licenses'] = [];
-            filters['searchWords'] = [];
-
-            searchStrings.forEach(function(searchString) {
-                var keywords = searchString.split(":");
-                if(keywords.length == 1) {
-                    var param = keywords[0].trim();
-                    if(param) {
-                        filters['searchWords'].push(param);
-                    }
-                }
-                else if(keywords[1].trim()) {
-                    var param = keywords[1].trim();
-                    switch(keywords[0]) {
-                        case 'platform':
-                            filters['platforms'].push(param);
-                            break;
-                        case 'author':
-                            filters['authors'].push(param);
-                            break;
-                        case 'license':
-                            filters['licenses'].push(param);
-                            break;
-                        default:
-                            filters['searchWords'].push(searchString);
-                    }
-                }
-                else {
-                    filters['searchWords'].push(searchString);
-                }
-            });
-            return filters;
-        }
-    },
-    render: function() {
-        var plugins = [],
-            filterText = this.props.filterText.toLowerCase();
-
-        var delay = (function(){
-          return function(callback, ms){
-            clearTimeout (timer);
-            timer = setTimeout(callback, ms);
-          };
-        })();
-
-        delay(function(){
-                    window.history.pushState({"filterText":filterText}, "", "?q=" + filterText);
-            }, 2000 );
-
-        var filters = PluginList.populateFilters(filterText);
-
-        this.props.plugins.forEach(function(plugin) {
-            var fullPluginText = plugin.name.concat(plugin.author, plugin.keywords, plugin.license, plugin.description);
-            if(PluginList.contains(filters['platforms'], plugin.keywords)
-                && PluginList.contains(filters['authors'], plugin.author)
-                && PluginList.contains(filters['licenses'], plugin.license)
-                && PluginList.contains(filters['searchWords'], fullPluginText)) {
-                    plugins.push(<Plugin plugin={plugin} key={plugin.author + plugin.name}/>);
-            }
-        }.bind(this));
-        return (
-            <div className="col-xs-offset-2 col-xs-8">
-                <ul className="pluginList">
-                    {plugins}
-                </ul>
-            </div>
-        );
-    }
-});
-
-
-var App = React.createClass({
-    getInitialState: function() {
-        return {
-            plugins: [],
-            filterText: '',
-            placeHolderText: 'Loading...'
-        };
-    },
-    handleUserInput: function(filterText) {
-        this.setState({
-            filterText: filterText
-        });
-    },
-    addCondition: function(condition) {
-        this.setState(function(previousState, currentProps) {
-            if(previousState.filterText.indexOf(condition) > -1) {
-                return {
-                    filterText: previousState.filterText,
-                    plugins: previousState.plugins
-                };
-            }
-            else {
-                return {
-                    filterText: previousState.filterText.trim() + ' ' + condition + ' ',
-                    plugins: previousState.plugins
-                };
-            }
-        });
-    },
-    loadFilterText : function(filterText) {
-        this.setState(function(previousState, currentProps) {
-            return {
-                filterText: filterText,
-                plugins: previousState.plugins
-            };
-        });
-    },
-    statics: {
-        getURLParameter : function(name) {
-            return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)
-                ||[,""])[1].replace(/\+/g, '%20'))||null;
-        },
-        shallowCopy: function(src) {
-            var dst = {};
-            for(var i in src) {
-                if(src.hasOwnProperty(i)) {
-                    dst[i] = src[i];
-                }
-            }
-            return dst;
-        }
-    },
-    componentDidMount: function() {
-        var plugins = [],
-            officialPlugins = require('./official-plugins.json').plugins,
-            blacklistedPlugins = require('./blacklisted-plugins.json').plugins,
-            pluginCount = 0,
-            self = this,
-            queryHost = "http://npmsearch.com/query",
-            queryFields = "fields=name,keywords,license,description,author,modified,homepage,version",
-            queryKeywords = "q=keywords:%22ecosystem:cordova%22",
-            queryInitialSize = Constants.NpmSearchInitialSize;
-
-        xhrRequest(queryHost + "?" + queryFields + "&" + queryKeywords + "&size=" + queryInitialSize + "&start=0", function(xhrResult) {
-            plugins = xhrResult.results;
-            pluginCount = xhrResult.total;
-            if (pluginCount <= queryInitialSize) {
-                processPlugins.bind(self, officialPlugins, plugins)();
-            } else {
-                xhrRequest(queryHost + "?" + queryFields + "&" + queryKeywords + "&size=" + (pluginCount - queryInitialSize) + "&start=" + queryInitialSize, function(xhrResult) {
-                        plugins = [].concat(plugins, xhrResult.results);
-                        processPlugins.bind(self, officialPlugins, plugins)();
-                }, function() { console.log('xhr err'); });
-            }
-        }, function() { console.log('xhr err'); });
-
-        var getDownloadCount = function(plugins, that) {
-            var packageNames = "";
-            for(var index=0; index < plugins.length; index++) {
-                packageNames += plugins[index].name + ",";
-                if(index % Constants.DownloadCountBatch === 0 || index === plugins.length -1) {
-                    xhrRequest("https://api.npmjs.org/downloads/point/last-month/" + packageNames, function(xhrResult) {
-                        for(var j = 0; j < plugins.length; j++) {
-                            if(xhrResult[plugins[j].name]) {
-                                plugins[j] = App.shallowCopy(plugins[j]);
-                                plugins[j].downloadCount = xhrResult[plugins[j].name].downloads;
-                            }
-                        }
-                        that.setState({
-                            plugins: plugins
-                        });
-                    }.bind(self), function() { console.log('xhr err'); });
-                    packageNames = "";
-                }
-            }
-        }
-
-        function processPlugins(officialPlugins, plugins) {
-            var pluginCount = plugins.length,
-                dateNow = new Date(),
-                oneDay = 1000*60*60*24;
-
-            officialPlugins.forEach(function(plugin) {
-                for (var i = 0; i < plugins.length; i++) {
-                    // Check if plugin name is in official list
-                    if (plugins[i].name[0] === plugin) {
-                        plugins[i].isOfficial = true;
-                        return;
-                    }
-                };
-            });
-
-            for(var i = plugins.length -1; i >= 0 ; i--)
-            {
-                for(var j = 0; j < blacklistedPlugins.length; j++)
-                {
-                    if(plugins[i].name[0] === blacklistedPlugins[j])
-                    {
-                        plugins.splice(i, 1);
-                        break;
-                    }
-                }
-            }
-
-            for (var i = 0; i < plugins.length; i++) {
-                // Calculate last time plugin is modified (in days)
-                plugins[i].modified = Math.ceil((dateNow - new Date(plugins[i].modified)) / oneDay);
-            };
-
-            if (this.isMounted()) {
-                var q = App.getURLParameter('q');
-                if(q) {
-                    this.setState({
-                        plugins: plugins,
-                        filterText: q
-                    });
-                }
-                else {
-                    this.setState({
-                        plugins: plugins,
-                        placeHolderText: 'Search ' + pluginCount + ' plugins...'
-                    });
-                }
-                getDownloadCount(plugins,this);
-            }
-        }
-    },
-    render: function() {
-        return (
-            <div>
-                <div className="row" id="headerBackground">
-                    <div className="col-xs-offset-2 col-xs-8">
-                        <div id="topContent" className="row">
-                            <div className="col-xs-3">
-                                <div id="pluggy"></div>
-                            </div>
-                            <div className="col-xs-9">
-                                <h1><p className="discover-message">Search Cordova Plugins</p></h1>
-                            </div>
-                        </div>
-                    </div>
-                    <SearchBar
-                        filterText={this.state.filterText}
-                        placeHolderText={this.state.placeHolderText}
-                        onUserInput={this.handleUserInput}
-                    />
-                </div>
-                <div className="row">
-                    <PluginList
-                        plugins={this.state.plugins}
-                        filterText={this.state.filterText}
-                    />
-                </div>
-            </div>
-        );
-    }
-});
-
-App.start = function() {
-    React.render(<App />, document.getElementById('container'));
-};
-
-function xhrRequest(url, success, fail) {
-    var xhr = new XMLHttpRequest();
-    xhr.onreadystatechange = function() {
-        if (xhr.readyState == XMLHttpRequest.DONE ) {
-            if(xhr.status == 200){
-                success(JSON.parse(xhr.responseText));
-                return;
-            } else {
-                fail();
-                return;
-            }
-        }
-    }.bind(this)
-    xhr.open("GET", url, true);
-    xhr.send();
-}
-
-
-module.exports = window.App = App;

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/js/blacklisted-plugins.json
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/js/blacklisted-plugins.json b/attachments/npm/assets/js/blacklisted-plugins.json
deleted file mode 100644
index f0108ab..0000000
--- a/attachments/npm/assets/js/blacklisted-plugins.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "plugins" : [
-        "cordova-wp8",
-        "cordova-wp8-testtest",
-        "cordova-app-hello-world"
-    ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/assets/js/official-plugins.json
----------------------------------------------------------------------
diff --git a/attachments/npm/assets/js/official-plugins.json b/attachments/npm/assets/js/official-plugins.json
deleted file mode 100644
index d220cfb..0000000
--- a/attachments/npm/assets/js/official-plugins.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "plugins" : [
-        "cordova-plugin-battery-status",
-        "cordova-plugin-camera",
-        "cordova-plugin-console",
-        "cordova-plugin-contacts",
-        "cordova-plugin-device",
-        "cordova-plugin-device-motion",
-        "cordova-plugin-device-orientation",
-        "cordova-plugin-dialogs",
-        "cordova-plugin-file",
-        "cordova-plugin-file-transfer",
-        "cordova-plugin-geolocation",
-        "cordova-plugin-globalization",
-        "cordova-plugin-inappbrowser",
-        "cordova-plugin-legacy-whitelist",
-        "cordova-plugin-media",
-        "cordova-plugin-media-capture",
-        "cordova-plugin-ms-appinsights",
-        "cordova-plugin-network-information",
-        "cordova-plugin-splashscreen",
-        "cordova-plugin-statusbar",
-        "cordova-plugin-vibration",
-        "cordova-plugin-whitelist"
-    ]
-}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[3/6] cordova-registry-web git commit: Extend grunt, add more structure, fix bugs

Posted by mu...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/js/app.js
----------------------------------------------------------------------
diff --git a/attachments/npm/js/app.js b/attachments/npm/js/app.js
new file mode 100644
index 0000000..f6aaec5
--- /dev/null
+++ b/attachments/npm/js/app.js
@@ -0,0 +1,6 @@
+!function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var u="function"==typeof require&&require;if(!s&&u)return u(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[i]={exports:{}};t[i][0].call(l.exports,function(e){var n=t[i][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)o(r[i]);return o}({1:[function(e,t,n){!function(){"use strict";function e(){for(var t="",n=0;n<arguments.length;n++){var r=arguments[n];if(r){var o=typeof r;if("string"===o||"number"===o)t+=" "+r;else if(Array.isArray(r))t+=" "+e.apply(null,r);else if("object"===o)for(var a in r)r.hasOwnProperty(a)&&r[a]&&(t+=" "+a)}}return t.substr(1)}"undefined"!=typeof t&&t.exports?t.exports=e:"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return e}):window.classNames=e}()},{}],2:[function(e,t,n){"use strict";var r=e("./focusNode"),o={componentDid
 Mount:function(){this.props.autoFocus&&r(this.getDOMNode())}};t.exports=o},{"./focusNode":120}],3:[function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function a(e){switch(e){case w.topCompositionStart:return I.compositionStart;case w.topCompositionEnd:return I.compositionEnd;case w.topCompositionUpdate:return I.compositionUpdate}}function i(e,t){return e===w.topKeyDown&&t.keyCode===R}function s(e,t){switch(e){case w.topKeyUp:return-1!==C.indexOf(t.keyCode);case w.topKeyDown:return t.keyCode!==R;case w.topKeyPress:case w.topMouseDown:case w.topBlur:return!0;default:return!1}}function u(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function c(e,t,n,r){var o,c;if(b?o=a(e):T?s(e,r)&&(o=I.compositionEnd):i(e,r)&&(o=I.compositionStart),!o)return null;_&&(T||o!==I.compositionStart?o===I.compositionEn
 d&&T&&(c=T.getData()):T=v.getPooled(t));var l=g.getPooled(o,n,r);if(c)l.data=c;else{var p=u(r);null!==p&&(l.data=p)}return h.accumulateTwoPhaseDispatches(l),l}function l(e,t){switch(e){case w.topCompositionEnd:return u(t);case w.topKeyPress:var n=t.which;return n!==O?null:(P=!0,D);case w.topTextInput:var r=t.data;return r===D&&P?null:r;default:return null}}function p(e,t){if(T){if(e===w.topCompositionEnd||s(e,t)){var n=T.getData();return v.release(T),T=null,n}return null}switch(e){case w.topPaste:return null;case w.topKeyPress:return t.which&&!o(t)?String.fromCharCode(t.which):null;case w.topCompositionEnd:return _?null:t.data;default:return null}}function d(e,t,n,r){var o;if(o=M?l(e,r):p(e,r),!o)return null;var a=y.getPooled(I.beforeInput,n,r);return a.data=o,h.accumulateTwoPhaseDispatches(a),a}var f=e("./EventConstants"),h=e("./EventPropagators"),m=e("./ExecutionEnvironment"),v=e("./FallbackCompositionState"),g=e("./SyntheticCompositionEvent"),y=e("./SyntheticInputEvent"),E=e("./k
 eyOf"),C=[9,13,27,32],R=229,b=m.canUseDOM&&"CompositionEvent"in window,x=null;m.canUseDOM&&"documentMode"in document&&(x=document.documentMode);var M=m.canUseDOM&&"TextEvent"in window&&!x&&!r(),_=m.canUseDOM&&(!b||x&&x>8&&11>=x),O=32,D=String.fromCharCode(O),w=f.topLevelTypes,I={beforeInput:{phasedRegistrationNames:{bubbled:E({onBeforeInput:null}),captured:E({onBeforeInputCapture:null})},dependencies:[w.topCompositionEnd,w.topKeyPress,w.topTextInput,w.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:E({onCompositionEnd:null}),captured:E({onCompositionEndCapture:null})},dependencies:[w.topBlur,w.topCompositionEnd,w.topKeyDown,w.topKeyPress,w.topKeyUp,w.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:E({onCompositionStart:null}),captured:E({onCompositionStartCapture:null})},dependencies:[w.topBlur,w.topCompositionStart,w.topKeyDown,w.topKeyPress,w.topKeyUp,w.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:E({onCompositionUpdate:null}),ca
 ptured:E({onCompositionUpdateCapture:null})},dependencies:[w.topBlur,w.topCompositionUpdate,w.topKeyDown,w.topKeyPress,w.topKeyUp,w.topMouseDown]}},P=!1,T=null,N={eventTypes:I,extractEvents:function(e,t,n,r){return[c(e,t,n,r),d(e,t,n,r)]}};t.exports=N},{"./EventConstants":15,"./EventPropagators":20,"./ExecutionEnvironment":21,"./FallbackCompositionState":22,"./SyntheticCompositionEvent":94,"./SyntheticInputEvent":98,"./keyOf":142}],4:[function(e,t,n){"use strict";function r(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var o={boxFlex:!0,boxFlexGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0},a=["Webkit","ms","Moz","O"];Object.keys(o).forEach(function(e){a.forEach(function(t){o[r(t,e)]=o[e]})});var i={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat
 :!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},s={isUnitlessNumber:o,shorthandPropertyExpansions:i};t.exports=s},{}],5:[function(e,t,n){"use strict";var r=e("./CSSProperty"),o=e("./ExecutionEnvironment"),a=(e("./camelizeStyleName"),e("./dangerousStyleValue")),i=e("./hyphenateStyleName"),s=e("./memoizeStringOnly"),u=(e("./warning"),s(function(e){return i(e)})),c="cssFloat";o.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(c="styleFloat");var l={createMarkupForStyles:function(e){var t="";for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];null!=r&&(t+=u(n)+":",t+=a(n,r)+"
 ;")}return t||null},setValueForStyles:function(e,t){var n=e.style;for(var o in t)if(t.hasOwnProperty(o)){var i=a(o,t[o]);if("float"===o&&(o=c),i)n[o]=i;else{var s=r.shorthandPropertyExpansions[o];if(s)for(var u in s)n[u]="";else n[o]=""}}}};t.exports=l},{"./CSSProperty":4,"./ExecutionEnvironment":21,"./camelizeStyleName":109,"./dangerousStyleValue":114,"./hyphenateStyleName":134,"./memoizeStringOnly":144,"./warning":155}],6:[function(e,t,n){"use strict";function r(){this._callbacks=null,this._contexts=null}var o=e("./PooledClass"),a=e("./Object.assign"),i=e("./invariant");a(r.prototype,{enqueue:function(e,t){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(e),this._contexts.push(t)},notifyAll:function(){var e=this._callbacks,t=this._contexts;if(e){i(e.length===t.length),this._callbacks=null,this._contexts=null;for(var n=0,r=e.length;r>n;n++)e[n].call(t[n]);e.length=0,t.length=0}},reset:function(){this._callbacks=null,this._contexts=null},des
 tructor:function(){this.reset()}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":27,"./PooledClass":28,"./invariant":136}],7:[function(e,t,n){"use strict";function r(e){return"SELECT"===e.nodeName||"INPUT"===e.nodeName&&"file"===e.type}function o(e){var t=x.getPooled(w.change,P,e);C.accumulateTwoPhaseDispatches(t),b.batchedUpdates(a,t)}function a(e){E.enqueueEvents(e),E.processEventQueue()}function i(e,t){I=e,P=t,I.attachEvent("onchange",o)}function s(){I&&(I.detachEvent("onchange",o),I=null,P=null)}function u(e,t,n){return e===D.topChange?n:void 0}function c(e,t,n){e===D.topFocus?(s(),i(t,n)):e===D.topBlur&&s()}function l(e,t){I=e,P=t,T=e.value,N=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(I,"value",A),I.attachEvent("onpropertychange",d)}function p(){I&&(delete I.value,I.detachEvent("onpropertychange",d),I=null,P=null,T=null,N=null)}function d(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==T&&(T=t,o(e))}}function f(e,t,n)
 {return e===D.topInput?n:void 0}function h(e,t,n){e===D.topFocus?(p(),l(t,n)):e===D.topBlur&&p()}function m(e,t,n){return e!==D.topSelectionChange&&e!==D.topKeyUp&&e!==D.topKeyDown||!I||I.value===T?void 0:(T=I.value,P)}function v(e){return"INPUT"===e.nodeName&&("checkbox"===e.type||"radio"===e.type)}function g(e,t,n){return e===D.topClick?n:void 0}var y=e("./EventConstants"),E=e("./EventPluginHub"),C=e("./EventPropagators"),R=e("./ExecutionEnvironment"),b=e("./ReactUpdates"),x=e("./SyntheticEvent"),M=e("./isEventSupported"),_=e("./isTextInputElement"),O=e("./keyOf"),D=y.topLevelTypes,w={change:{phasedRegistrationNames:{bubbled:O({onChange:null}),captured:O({onChangeCapture:null})},dependencies:[D.topBlur,D.topChange,D.topClick,D.topFocus,D.topInput,D.topKeyDown,D.topKeyUp,D.topSelectionChange]}},I=null,P=null,T=null,N=null,S=!1;R.canUseDOM&&(S=M("change")&&(!("documentMode"in document)||document.documentMode>8));var k=!1;R.canUseDOM&&(k=M("input")&&(!("documentMode"in document)||doc
 ument.documentMode>9));var A={get:function(){return N.get.call(this)},set:function(e){T=""+e,N.set.call(this,e)}},U={eventTypes:w,extractEvents:function(e,t,n,o){var a,i;if(r(t)?S?a=u:i=c:_(t)?k?a=f:(a=m,i=h):v(t)&&(a=g),a){var s=a(e,t,n);if(s){var l=x.getPooled(w.change,s,o);return C.accumulateTwoPhaseDispatches(l),l}}i&&i(e,t,n)}};t.exports=U},{"./EventConstants":15,"./EventPluginHub":17,"./EventPropagators":20,"./ExecutionEnvironment":21,"./ReactUpdates":88,"./SyntheticEvent":96,"./isEventSupported":137,"./isTextInputElement":139,"./keyOf":142}],8:[function(e,t,n){"use strict";var r=0,o={createReactRootIndex:function(){return r++}};t.exports=o},{}],9:[function(e,t,n){"use strict";function r(e,t,n){e.insertBefore(t,e.childNodes[n]||null)}var o=e("./Danger"),a=e("./ReactMultiChildUpdateTypes"),i=e("./setTextContent"),s=e("./invariant"),u={dangerouslyReplaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup,updateTextContent:i,processUpdates:function(e,t){for(var n,u=null,c=null,l=0;
 l<e.length;l++)if(n=e[l],n.type===a.MOVE_EXISTING||n.type===a.REMOVE_NODE){var p=n.fromIndex,d=n.parentNode.childNodes[p],f=n.parentID;s(d),u=u||{},u[f]=u[f]||[],u[f][p]=d,c=c||[],c.push(d)}var h=o.dangerouslyRenderMarkup(t);if(c)for(var m=0;m<c.length;m++)c[m].parentNode.removeChild(c[m]);for(var v=0;v<e.length;v++)switch(n=e[v],n.type){case a.INSERT_MARKUP:r(n.parentNode,h[n.markupIndex],n.toIndex);break;case a.MOVE_EXISTING:r(n.parentNode,u[n.parentID][n.fromIndex],n.toIndex);break;case a.TEXT_CONTENT:i(n.parentNode,n.textContent);break;case a.REMOVE_NODE:}}};t.exports=u},{"./Danger":12,"./ReactMultiChildUpdateTypes":73,"./invariant":136,"./setTextContent":150}],10:[function(e,t,n){"use strict";function r(e,t){return(e&t)===t}var o=e("./invariant"),a={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(e){var t=e.Properties||{},n=e.DOMAtt
 ributeNames||{},i=e.DOMPropertyNames||{},u=e.DOMMutationMethods||{};e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var c in t){o(!s.isStandardName.hasOwnProperty(c)),s.isStandardName[c]=!0;var l=c.toLowerCase();if(s.getPossibleStandardName[l]=c,n.hasOwnProperty(c)){var p=n[c];s.getPossibleStandardName[p]=c,s.getAttributeName[c]=p}else s.getAttributeName[c]=l;s.getPropertyName[c]=i.hasOwnProperty(c)?i[c]:c,s.getMutationMethod[c]=u.hasOwnProperty(c)?u[c]:null;var d=t[c];s.mustUseAttribute[c]=r(d,a.MUST_USE_ATTRIBUTE),s.mustUseProperty[c]=r(d,a.MUST_USE_PROPERTY),s.hasSideEffects[c]=r(d,a.HAS_SIDE_EFFECTS),s.hasBooleanValue[c]=r(d,a.HAS_BOOLEAN_VALUE),s.hasNumericValue[c]=r(d,a.HAS_NUMERIC_VALUE),s.hasPositiveNumericValue[c]=r(d,a.HAS_POSITIVE_NUMERIC_VALUE),s.hasOverloadedBooleanValue[c]=r(d,a.HAS_OVERLOADED_BOOLEAN_VALUE),o(!s.mustUseAttribute[c]||!s.mustUseProperty[c]),o(s.mustUseProperty[c]||!s.hasSideEffects[c]),o(!!s.hasBooleanValue[c]+!!s.hasNum
 ericValue[c]+!!s.hasOverloadedBooleanValue[c]<=1)}}},i={},s={ID_ATTRIBUTE_NAME:"data-reactid",isStandardName:{},getPossibleStandardName:{},getAttributeName:{},getPropertyName:{},getMutationMethod:{},mustUseAttribute:{},mustUseProperty:{},hasSideEffects:{},hasBooleanValue:{},hasNumericValue:{},hasPositiveNumericValue:{},hasOverloadedBooleanValue:{},_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t<s._isCustomAttributeFunctions.length;t++){var n=s._isCustomAttributeFunctions[t];if(n(e))return!0}return!1},getDefaultValueForProperty:function(e,t){var n,r=i[e];return r||(i[e]=r={}),t in r||(n=document.createElement(e),r[t]=n[t]),r[t]},injection:a};t.exports=s},{"./invariant":136}],11:[function(e,t,n){"use strict";function r(e,t){return null==t||o.hasBooleanValue[e]&&!t||o.hasNumericValue[e]&&isNaN(t)||o.hasPositiveNumericValue[e]&&1>t||o.hasOverloadedBooleanValue[e]&&t===!1}var o=e("./DOMProperty"),a=e("./quoteAttributeValueForBrowser"),i=(e("./warning"),{createM
 arkupForID:function(e){return o.ID_ATTRIBUTE_NAME+"="+a(e)},createMarkupForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(e)&&o.isStandardName[e]){if(r(e,t))return"";var n=o.getAttributeName[e];return o.hasBooleanValue[e]||o.hasOverloadedBooleanValue[e]&&t===!0?n:n+"="+a(t)}return o.isCustomAttribute(e)?null==t?"":e+"="+a(t):null},setValueForProperty:function(e,t,n){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var a=o.getMutationMethod[t];if(a)a(e,n);else if(r(t,n))this.deleteValueForProperty(e,t);else if(o.mustUseAttribute[t])e.setAttribute(o.getAttributeName[t],""+n);else{var i=o.getPropertyName[t];o.hasSideEffects[t]&&""+e[i]==""+n||(e[i]=n)}}else o.isCustomAttribute(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForProperty:function(e,t){if(o.isStandardName.hasOwnProperty(t)&&o.isStandardName[t]){var n=o.getMutationMethod[t];if(n)n(e,void 0);else if(o.mustUseAttribute[t])e.removeAttribute(o.getAttributeName[t]);else{var r=o.getPro
 pertyName[t],a=o.getDefaultValueForProperty(e.nodeName,r);o.hasSideEffects[t]&&""+e[r]===a||(e[r]=a)}}else o.isCustomAttribute(t)&&e.removeAttribute(t)}});t.exports=i},{"./DOMProperty":10,"./quoteAttributeValueForBrowser":148,"./warning":155}],12:[function(e,t,n){"use strict";function r(e){return e.substring(1,e.indexOf(" "))}var o=e("./ExecutionEnvironment"),a=e("./createNodesFromMarkup"),i=e("./emptyFunction"),s=e("./getMarkupWrap"),u=e("./invariant"),c=/^(<[^ \/>]+)/,l="data-danger-index",p={dangerouslyRenderMarkup:function(e){u(o.canUseDOM);for(var t,n={},p=0;p<e.length;p++)u(e[p]),t=r(e[p]),t=s(t)?t:"*",n[t]=n[t]||[],n[t][p]=e[p];var d=[],f=0;for(t in n)if(n.hasOwnProperty(t)){var h,m=n[t];for(h in m)if(m.hasOwnProperty(h)){var v=m[h];m[h]=v.replace(c,"$1 "+l+'="'+h+'" ')}for(var g=a(m.join(""),i),y=0;y<g.length;++y){var E=g[y];E.hasAttribute&&E.hasAttribute(l)&&(h=+E.getAttribute(l),E.removeAttribute(l),u(!d.hasOwnProperty(h)),d[h]=E,f+=1)}}return u(f===d.length),u(d.length===
 e.length),d},dangerouslyReplaceNodeWithMarkup:function(e,t){u(o.canUseDOM),u(t),u("html"!==e.tagName.toLowerCase());var n=a(t,i)[0];e.parentNode.replaceChild(n,e)}};t.exports=p},{"./ExecutionEnvironment":21,"./createNodesFromMarkup":113,"./emptyFunction":115,"./getMarkupWrap":128,"./invariant":136}],13:[function(e,t,n){"use strict";var r=e("./keyOf"),o=[r({ResponderEventPlugin:null}),r({SimpleEventPlugin:null}),r({TapEventPlugin:null}),r({EnterLeaveEventPlugin:null}),r({ChangeEventPlugin:null}),r({SelectEventPlugin:null}),r({BeforeInputEventPlugin:null}),r({AnalyticsEventPlugin:null}),r({MobileSafariClickEventPlugin:null})];t.exports=o},{"./keyOf":142}],14:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./EventPropagators"),a=e("./SyntheticMouseEvent"),i=e("./ReactMount"),s=e("./keyOf"),u=r.topLevelTypes,c=i.getFirstReactDOM,l={mouseEnter:{registrationName:s({onMouseEnter:null}),dependencies:[u.topMouseOut,u.topMouseOver]},mouseLeave:{registrationName:s({onMouseLeave:
 null}),dependencies:[u.topMouseOut,u.topMouseOver]}},p=[null,null],d={eventTypes:l,extractEvents:function(e,t,n,r){if(e===u.topMouseOver&&(r.relatedTarget||r.fromElement))return null;if(e!==u.topMouseOut&&e!==u.topMouseOver)return null;var s;if(t.window===t)s=t;else{var d=t.ownerDocument;s=d?d.defaultView||d.parentWindow:window}var f,h;if(e===u.topMouseOut?(f=t,h=c(r.relatedTarget||r.toElement)||s):(f=s,h=t),f===h)return null;var m=f?i.getID(f):"",v=h?i.getID(h):"",g=a.getPooled(l.mouseLeave,m,r);g.type="mouseleave",g.target=f,g.relatedTarget=h;var y=a.getPooled(l.mouseEnter,v,r);return y.type="mouseenter",y.target=h,y.relatedTarget=f,o.accumulateEnterLeaveDispatches(g,y,m,v),p[0]=g,p[1]=y,p}};t.exports=d},{"./EventConstants":15,"./EventPropagators":20,"./ReactMount":71,"./SyntheticMouseEvent":100,"./keyOf":142}],15:[function(e,t,n){"use strict";var r=e("./keyMirror"),o=r({bubbled:null,captured:null}),a=r({topBlur:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositi
 onStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topError:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topReset:null,topScroll:null,topSelectionChange:null,topSubmit:null,topTextInput:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topWheel:null}),i={topLevelTypes:a,PropagationPhases:o};t.exports=i},{"./keyMirror":141}],16:[function(e,t,n){var r=e("./emptyFunction"),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEv
 entListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};t.exports=o},{"./emptyFunction":115}],17:[function(e,t,n){"use strict";var r=e("./EventPluginRegistry"),o=e("./EventPluginUtils"),a=e("./accumulateInto"),i=e("./forEachAccumulated"),s=e("./invariant"),u={},c=null,l=function(e){if(e){var t=o.executeDispatch,n=r.getPluginModuleForEvent(e);n&&n.executeDispatch&&(t=n.executeDispatch),o.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e)}},p=null,d={injection:{injectMount:o.injection.injectMount,injectInstanceHandle:function(e){p=e},getInstanceHandle:function(){return p},injectEventPluginOrder:r.injectEventPluginOrder,injectEventPluginsByName:r.injectEventPluginsByName},eventNameDispatchConfigs:r.eventNameDispatchConfigs,registrationNameModules:r.registrationNameModules,putListener:function(e,t,n){s(!n||"function"==typeof n);var r=u[t]||(u[t]={});r[e]=n},getListener:function(e,t){var n
 =u[t];return n&&n[e]},deleteListener:function(e,t){var n=u[t];n&&delete n[e]},deleteAllListeners:function(e){for(var t in u)delete u[t][e]},extractEvents:function(e,t,n,o){for(var i,s=r.plugins,u=0,c=s.length;c>u;u++){var l=s[u];if(l){var p=l.extractEvents(e,t,n,o);p&&(i=a(i,p))}}return i},enqueueEvents:function(e){e&&(c=a(c,e))},processEventQueue:function(){var e=c;c=null,i(e,l),s(!c)},__purge:function(){u={}},__getListenerBank:function(){return u}};t.exports=d},{"./EventPluginRegistry":18,"./EventPluginUtils":19,"./accumulateInto":106,"./forEachAccumulated":121,"./invariant":136}],18:[function(e,t,n){"use strict";function r(){if(s)for(var e in u){var t=u[e],n=s.indexOf(e);if(i(n>-1),!c.plugins[n]){i(t.extractEvents),c.plugins[n]=t;var r=t.eventTypes;for(var a in r)i(o(r[a],t,a))}}}function o(e,t,n){i(!c.eventNameDispatchConfigs.hasOwnProperty(n)),c.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var s=r[o];a(s,t,n)}return!
 0}return e.registrationName?(a(e.registrationName,t,n),!0):!1}function a(e,t,n){i(!c.registrationNameModules[e]),c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=e("./invariant"),s=null,u={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){i(!s),s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];u.hasOwnProperty(n)&&u[n]===o||(i(!u[n]),u[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=c.registrationNameModules[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){s=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];c.plugins.length=
 0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=c.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};t.exports=c},{"./invariant":136}],19:[function(e,t,n){"use strict";function r(e){return e===v.topMouseUp||e===v.topTouchEnd||e===v.topTouchCancel}function o(e){return e===v.topMouseMove||e===v.topTouchMove}function a(e){return e===v.topMouseDown||e===v.topTouchStart}function i(e,t){var n=e._dispatchListeners,r=e._dispatchIDs;if(Array.isArray(n))for(var o=0;o<n.length&&!e.isPropagationStopped();o++)t(e,n[o],r[o]);else n&&t(e,n,r)}function s(e,t,n){e.currentTarget=m.Mount.getNode(n);var r=t(e,n);return e.currentTarget=null,r}function u(e,t){i(e,t),e._dispatchListeners=null,e._dispatchIDs=null}function c(e){var t=e._dispatchListeners,n=e._dispatchIDs;if(Array.isArray(t)){for(var r=0;r<t.length&&!e.isPropagationStopped();r++)if(t[r](e,n[r]))return n[r]}else if(t&&t(e,n))return n;return null}function l(e){var t=c(e);return e.
 _dispatchIDs=null,e._dispatchListeners=null,t}function p(e){var t=e._dispatchListeners,n=e._dispatchIDs;h(!Array.isArray(t));var r=t?t(e,n):null;return e._dispatchListeners=null,e._dispatchIDs=null,r}function d(e){return!!e._dispatchListeners}var f=e("./EventConstants"),h=e("./invariant"),m={Mount:null,injectMount:function(e){m.Mount=e}},v=f.topLevelTypes,g={isEndish:r,isMoveish:o,isStartish:a,executeDirectDispatch:p,executeDispatch:s,executeDispatchesInOrder:u,executeDispatchesInOrderStopAtTrue:l,hasDispatches:d,injection:m,useTouchEvents:!1};t.exports=g},{"./EventConstants":15,"./invariant":136}],20:[function(e,t,n){"use strict";function r(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return v(e,r)}function o(e,t,n){var o=t?m.bubbled:m.captured,a=r(e,n,o);a&&(n._dispatchListeners=f(n._dispatchListeners,a),n._dispatchIDs=f(n._dispatchIDs,e))}function a(e){e&&e.dispatchConfig.phasedRegistrationNames&&d.injection.getInstanceHandle().traverseTwoPhase(e.dispatchMarker,o,e)}f
 unction i(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=v(e,r);o&&(n._dispatchListeners=f(n._dispatchListeners,o),n._dispatchIDs=f(n._dispatchIDs,e))}}function s(e){e&&e.dispatchConfig.registrationName&&i(e.dispatchMarker,null,e)}function u(e){h(e,a)}function c(e,t,n,r){d.injection.getInstanceHandle().traverseEnterLeave(n,r,i,e,t)}function l(e){h(e,s)}var p=e("./EventConstants"),d=e("./EventPluginHub"),f=e("./accumulateInto"),h=e("./forEachAccumulated"),m=p.PropagationPhases,v=d.getListener,g={accumulateTwoPhaseDispatches:u,accumulateDirectDispatches:l,accumulateEnterLeaveDispatches:c};t.exports=g},{"./EventConstants":15,"./EventPluginHub":17,"./accumulateInto":106,"./forEachAccumulated":121}],21:[function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),ca
 nUseViewport:r&&!!window.screen,isInWorker:!r};t.exports=o},{}],22:[function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=e("./PooledClass"),a=e("./Object.assign"),i=e("./getTextContentAccessor");a(r.prototype,{getText:function(){return"value"in this._root?this._root.value:this._root[i()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),a=o.length;for(e=0;r>e&&n[e]===o[e];e++);var i=r-e;for(t=1;i>=t&&n[r-t]===o[a-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),o.addPoolingTo(r),t.exports=r},{"./Object.assign":27,"./PooledClass":28,"./getTextContentAccessor":131}],23:[function(e,t,n){"use strict";var r,o=e("./DOMProperty"),a=e("./ExecutionEnvironment"),i=o.injection.MUST_USE_ATTRIBUTE,s=o.injection.MUST_USE_PROPERTY,u=o.injection.HAS_BOOLEAN_VALUE,c=o.injection.HAS_SIDE_EFFECTS,l=o.injection.HAS_NUMERIC_VALUE
 ,p=o.injection.HAS_POSITIVE_NUMERIC_VALUE,d=o.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(a.canUseDOM){var f=document.implementation;r=f&&f.hasFeature&&f.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var h={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|u,allowTransparency:i,alt:null,async:u,autoComplete:null,autoPlay:u,cellPadding:null,cellSpacing:null,charSet:i,checked:s|u,classID:i,className:r?i:s,cols:i|p,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:s|u,coords:null,crossOrigin:null,data:null,dateTime:i,defer:u,dir:null,disabled:i|u,download:d,draggable:null,encType:null,form:i,formAction:i,formEncType:i,formMethod:i,formNoValidate:u,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|u,high:null,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:s,label:null,lang:null,list:i,loop:s|u,low:null,
 manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,multiple:s|u,muted:s|u,name:null,noValidate:u,open:u,optimum:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:s|u,rel:null,required:u,role:i,rows:i|p,rowSpan:null,sandbox:null,scope:null,scoped:u,scrolling:null,seamless:i|u,selected:s|u,shape:null,size:i|p,sizes:i,span:p,spellCheck:null,src:null,srcDoc:s,srcSet:i,start:l,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:s|c,width:i,wmode:i,autoCapitalize:null,autoCorrect:null,itemProp:i,itemScope:i|u,itemType:i,itemID:i,itemRef:i,property:null,unselectable:i},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"encoding",hrefLang:"hreflang",radioGr
 oup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};t.exports=h},{"./DOMProperty":10,"./ExecutionEnvironment":21}],24:[function(e,t,n){"use strict";function r(e){c(null==e.props.checkedLink||null==e.props.valueLink)}function o(e){r(e),c(null==e.props.value&&null==e.props.onChange)}function a(e){r(e),c(null==e.props.checked&&null==e.props.onChange)}function i(e){this.props.valueLink.requestChange(e.target.value)}function s(e){this.props.checkedLink.requestChange(e.target.checked)}var u=e("./ReactPropTypes"),c=e("./invariant"),l={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},p={Mixin:{propTypes:{value:function(e,t,n){return!e[t]||l[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.
 onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:u.func}},getValue:function(e){return e.props.valueLink?(o(e),e.props.valueLink.value):e.props.value},getChecked:function(e){return e.props.checkedLink?(a(e),e.props.checkedLink.value):e.props.checked},getOnChange:function(e){return e.props.valueLink?(o(e),i):e.props.checkedLink?(a(e),s):e.props.onChange}};t.exports=p},{"./ReactPropTypes":79,"./invariant":136}],25:[function(e,t,n){"use strict";function r(e){e.remove()}var o=e("./ReactBrowserEventEmitter"),a=e("./accumulateInto"),i=e("./forEachAccumulated"),s=e("./invariant"),u={trapBubbledEvent:function(e,t){s(this.isMounted());var n=this.getDOMNode();s(n);var r=o.trapBubbledEvent(e,t,n);this._localEventListeners=a(this._localEventListeners,r)},componentWillUnmoun
 t:function(){this._localEventListeners&&i(this._localEventListeners,r)}};t.exports=u},{"./ReactBrowserEventEmitter":31,"./accumulateInto":106,"./forEachAccumulated":121,"./invariant":136}],26:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./emptyFunction"),a=r.topLevelTypes,i={eventTypes:null,extractEvents:function(e,t,n,r){if(e===a.topTouchStart){var i=r.target;i&&!i.onclick&&(i.onclick=o)}}};t.exports=i},{"./EventConstants":15,"./emptyFunction":115}],27:[function(e,t,n){"use strict";function r(e,t){if(null==e)throw new TypeError("Object.assign target cannot be null or undefined");for(var n=Object(e),r=Object.prototype.hasOwnProperty,o=1;o<arguments.length;o++){var a=arguments[o];if(null!=a){var i=Object(a);for(var s in i)r.call(i,s)&&(n[s]=i[s])}}return n}t.exports=r},{}],28:[function(e,t,n){"use strict";var r=e("./invariant"),o=function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)},a=function(e,t){var n=th
 is;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},i=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},s=function(e,t,n,r,o){var a=this;if(a.instancePool.length){var i=a.instancePool.pop();return a.call(i,e,t,n,r,o),i}return new a(e,t,n,r,o)},u=function(e){var t=this;r(e instanceof t),e.destructor&&e.destructor(),t.instancePool.length<t.poolSize&&t.instancePool.push(e)},c=10,l=o,p=function(e,t){var n=e;return n.instancePool=[],n.getPooled=t||l,n.poolSize||(n.poolSize=c),n.release=u,n},d={addPoolingTo:p,oneArgumentPooler:o,twoArgumentPooler:a,threeArgumentPooler:i,fiveArgumentPooler:s};t.exports=d},{"./invariant":136}],29:[function(e,t,n){"use strict";var r=e("./EventPluginUtils"),o=e("./ReactChildren"),a=e("./ReactComponent"),i=e("./ReactClass"),s=e("./ReactContext"),u=e("./ReactCurrentOwner"),c=e("./ReactElement"),l=(e("./ReactElementValidator"),e("./ReactDOM")
 ),p=e("./ReactDOMTextComponent"),d=e("./ReactDefaultInjection"),f=e("./ReactInstanceHandles"),h=e("./ReactMount"),m=e("./ReactPerf"),v=e("./ReactPropTypes"),g=e("./ReactReconciler"),y=e("./ReactServerRendering"),E=e("./Object.assign"),C=e("./findDOMNode"),R=e("./onlyChild");d.inject();var b=c.createElement,x=c.createFactory,M=c.cloneElement,_=m.measure("React","render",h.render),O={Children:{map:o.map,forEach:o.forEach,count:o.count,only:R},Component:a,DOM:l,PropTypes:v,initializeTouchEvents:function(e){r.useTouchEvents=e},createClass:i.createClass,createElement:b,cloneElement:M,createFactory:x,createMixin:function(e){return e},constructAndRenderComponent:h.constructAndRenderComponent,constructAndRenderComponentByID:h.constructAndRenderComponentByID,findDOMNode:C,render:_,renderToString:y.renderToString,renderToStaticMarkup:y.renderToStaticMarkup,unmountComponentAtNode:h.unmountComponentAtNode,isValidElement:c.isValidElement,withContext:s.withContext,__spread:E};"undefined"!=typeof 
 __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
+CurrentOwner:u,InstanceHandles:f,Mount:h,Reconciler:g,TextComponent:p});O.version="0.13.3",t.exports=O},{"./EventPluginUtils":19,"./ExecutionEnvironment":21,"./Object.assign":27,"./ReactChildren":33,"./ReactClass":34,"./ReactComponent":35,"./ReactContext":39,"./ReactCurrentOwner":40,"./ReactDOM":41,"./ReactDOMTextComponent":52,"./ReactDefaultInjection":55,"./ReactElement":58,"./ReactElementValidator":59,"./ReactInstanceHandles":67,"./ReactMount":71,"./ReactPerf":76,"./ReactPropTypes":79,"./ReactReconciler":82,"./ReactServerRendering":85,"./findDOMNode":118,"./onlyChild":145}],30:[function(e,t,n){"use strict";var r=e("./findDOMNode"),o={getDOMNode:function(){return r(this)}};t.exports=o},{"./findDOMNode":118}],31:[function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=f++,p[e[m]]={}),p[e[m]]}var o=e("./EventConstants"),a=e("./EventPluginHub"),i=e("./EventPluginRegistry"),s=e("./ReactEventEmitterMixin"),u=e("./ViewportMetrics"),c=e("./Object
 .assign"),l=e("./isEventSupported"),p={},d=!1,f=0,h={topBlur:"blur",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topScroll:"scroll",topSelectionChange:"selectionchange",topTextInput:"textInput",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=c({},s,{ReactEventListener:null,in
 jection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,a=r(n),s=i.registrationNameDependencies[e],u=o.topLevelTypes,c=0,p=s.length;p>c;c++){var d=s[c];a.hasOwnProperty(d)&&a[d]||(d===u.topWheel?l("wheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"wheel",n):l("mousewheel")?v.ReactEventListener.trapBubbledEvent(u.topWheel,"mousewheel",n):v.ReactEventListener.trapBubbledEvent(u.topWheel,"DOMMouseScroll",n):d===u.topScroll?l("scroll",!0)?v.ReactEventListener.trapCapturedEvent(u.topScroll,"scroll",n):v.ReactEventListener.trapBubbledEvent(u.topScroll,"scroll",v.ReactEventListener.WINDOW_HANDLE):d===u.topFocus||d===u.topBlur?(l("focus",!0)?(v.ReactEventListener.trapCapturedEvent(u.topFocus,"focus",n),v.ReactEventListener.trapCap
 turedEvent(u.topBlur,"blur",n)):l("focusin")&&(v.ReactEventListener.trapBubbledEvent(u.topFocus,"focusin",n),v.ReactEventListener.trapBubbledEvent(u.topBlur,"focusout",n)),a[u.topBlur]=!0,a[u.topFocus]=!0):h.hasOwnProperty(d)&&v.ReactEventListener.trapBubbledEvent(d,h[d],n),a[d]=!0)}},trapBubbledEvent:function(e,t,n){return v.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return v.ReactEventListener.trapCapturedEvent(e,t,n)},ensureScrollValueMonitoring:function(){if(!d){var e=u.refreshScrollValues;v.ReactEventListener.monitorScrollValue(e),d=!0}},eventNameDispatchConfigs:a.eventNameDispatchConfigs,registrationNameModules:a.registrationNameModules,putListener:a.putListener,getListener:a.getListener,deleteListener:a.deleteListener,deleteAllListeners:a.deleteAllListeners});t.exports=v},{"./EventConstants":15,"./EventPluginHub":17,"./EventPluginRegistry":18,"./Object.assign":27,"./ReactEventEmitterMixin":62,"./ViewportMetrics":105,"./isEventSupported":137}
 ],32:[function(e,t,n){"use strict";var r=e("./ReactReconciler"),o=e("./flattenChildren"),a=e("./instantiateReactComponent"),i=e("./shouldUpdateReactComponent"),s={instantiateChildren:function(e,t,n){var r=o(e);for(var i in r)if(r.hasOwnProperty(i)){var s=r[i],u=a(s,null);r[i]=u}return r},updateChildren:function(e,t,n,s){var u=o(t);if(!u&&!e)return null;var c;for(c in u)if(u.hasOwnProperty(c)){var l=e&&e[c],p=l&&l._currentElement,d=u[c];if(i(p,d))r.receiveComponent(l,d,n,s),u[c]=l;else{l&&r.unmountComponent(l,c);var f=a(d,null);u[c]=f}}for(c in e)!e.hasOwnProperty(c)||u&&u.hasOwnProperty(c)||r.unmountComponent(e[c]);return u},unmountChildren:function(e){for(var t in e){var n=e[t];r.unmountComponent(n)}}};t.exports=s},{"./ReactReconciler":82,"./flattenChildren":119,"./instantiateReactComponent":135,"./shouldUpdateReactComponent":152}],33:[function(e,t,n){"use strict";function r(e,t){this.forEachFunction=e,this.forEachContext=t}function o(e,t,n,r){var o=e;o.forEachFunction.call(o.forEa
 chContext,t,r)}function a(e,t,n){if(null==e)return e;var a=r.getPooled(t,n);f(e,o,a),r.release(a)}function i(e,t,n){this.mapResult=e,this.mapFunction=t,this.mapContext=n}function s(e,t,n,r){var o=e,a=o.mapResult,i=!a.hasOwnProperty(n);if(i){var s=o.mapFunction.call(o.mapContext,t,r);a[n]=s}}function u(e,t,n){if(null==e)return e;var r={},o=i.getPooled(r,t,n);return f(e,s,o),i.release(o),d.create(r)}function c(e,t,n,r){return null}function l(e,t){return f(e,c,null)}var p=e("./PooledClass"),d=e("./ReactFragment"),f=e("./traverseAllChildren"),h=(e("./warning"),p.twoArgumentPooler),m=p.threeArgumentPooler;p.addPoolingTo(r,h),p.addPoolingTo(i,m);var v={forEach:a,map:u,count:l};t.exports=v},{"./PooledClass":28,"./ReactFragment":64,"./traverseAllChildren":154,"./warning":155}],34:[function(e,t,n){"use strict";function r(e,t){var n=M.hasOwnProperty(t)?M[t]:null;O.hasOwnProperty(t)&&y(n===b.OVERRIDE_BASE),e.hasOwnProperty(t)&&y(n===b.DEFINE_MANY||n===b.DEFINE_MANY_MERGED)}function o(e,t){if(t
 ){y("function"!=typeof t),y(!d.isValidElement(t));var n=e.prototype;t.hasOwnProperty(R)&&_.mixins(e,t.mixins);for(var o in t)if(t.hasOwnProperty(o)&&o!==R){var a=t[o];if(r(n,o),_.hasOwnProperty(o))_[o](e,a);else{var i=M.hasOwnProperty(o),c=n.hasOwnProperty(o),l=a&&a.__reactDontBind,p="function"==typeof a,f=p&&!i&&!c&&!l;if(f)n.__reactAutoBindMap||(n.__reactAutoBindMap={}),n.__reactAutoBindMap[o]=a,n[o]=a;else if(c){var h=M[o];y(i&&(h===b.DEFINE_MANY_MERGED||h===b.DEFINE_MANY)),h===b.DEFINE_MANY_MERGED?n[o]=s(n[o],a):h===b.DEFINE_MANY&&(n[o]=u(n[o],a))}else n[o]=a}}}}function a(e,t){if(t)for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){var o=n in _;y(!o);var a=n in e;y(!a),e[n]=r}}}function i(e,t){y(e&&t&&"object"==typeof e&&"object"==typeof t);for(var n in t)t.hasOwnProperty(n)&&(y(void 0===e[n]),e[n]=t[n]);return e}function s(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return i(o,n),i(o,r),o}}func
 tion u(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function c(e,t){var n=t.bind(e);return n}function l(e){for(var t in e.__reactAutoBindMap)if(e.__reactAutoBindMap.hasOwnProperty(t)){var n=e.__reactAutoBindMap[t];e[t]=c(e,f.guard(n,e.constructor.displayName+"."+t))}}var p=e("./ReactComponent"),d=(e("./ReactCurrentOwner"),e("./ReactElement")),f=e("./ReactErrorUtils"),h=e("./ReactInstanceMap"),m=e("./ReactLifeCycle"),v=(e("./ReactPropTypeLocations"),e("./ReactPropTypeLocationNames"),e("./ReactUpdateQueue")),g=e("./Object.assign"),y=e("./invariant"),E=e("./keyMirror"),C=e("./keyOf"),R=(e("./warning"),C({mixins:null})),b=E({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),x=[],M={mixins:b.DEFINE_MANY,statics:b.DEFINE_MANY,propTypes:b.DEFINE_MANY,contextTypes:b.DEFINE_MANY,childContextTypes:b.DEFINE_MANY,getDefaultProps:b.DEFINE_MANY_MERGED,getInitialState:b.DEFINE_MANY_MERGED,getChildContext:b.DEFINE_MANY_MERGED,render:b.DEFINE_O
 NCE,componentWillMount:b.DEFINE_MANY,componentDidMount:b.DEFINE_MANY,componentWillReceiveProps:b.DEFINE_MANY,shouldComponentUpdate:b.DEFINE_ONCE,componentWillUpdate:b.DEFINE_MANY,componentDidUpdate:b.DEFINE_MANY,componentWillUnmount:b.DEFINE_MANY,updateComponent:b.OVERRIDE_BASE},_={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)o(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=g({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=g({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps=e.getDefaultProps?s(e.getDefaultProps,t):t},propTypes:function(e,t){e.propTypes=g({},e.propTypes,t)},statics:function(e,t){a(e,t)}},O={replaceState:function(e,t){v.enqueueReplaceState(this,e),t&&v.enqueueCallback(this,t)},isMounted:function(){var e=h.get(this);return e&&e!==m.currentlyMountingInstance},setProps:function(e,t){v.enqueueSetProps(this,e),t&&v.enqueueCallback(this,t)},replaceProps:function(e,t){v.
 enqueueReplaceProps(this,e),t&&v.enqueueCallback(this,t)}},D=function(){};g(D.prototype,p.prototype,O);var w={createClass:function(e){var t=function(e,t){this.__reactAutoBindMap&&l(this),this.props=e,this.context=t,this.state=null;var n=this.getInitialState?this.getInitialState():null;y("object"==typeof n&&!Array.isArray(n)),this.state=n};t.prototype=new D,t.prototype.constructor=t,x.forEach(o.bind(null,t)),o(t,e),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),y(t.prototype.render);for(var n in M)t.prototype[n]||(t.prototype[n]=null);return t.type=t,t},injection:{injectMixin:function(e){x.push(e)}}};t.exports=w},{"./Object.assign":27,"./ReactComponent":35,"./ReactCurrentOwner":40,"./ReactElement":58,"./ReactErrorUtils":61,"./ReactInstanceMap":68,"./ReactLifeCycle":69,"./ReactPropTypeLocationNames":77,"./ReactPropTypeLocations":78,"./ReactUpdateQueue":87,"./invariant":136,"./keyMirror":141,"./keyOf":142,"./warning":155}],35:[function(e,t,n){"use strict";function r(e,t){this.
 props=e,this.context=t}{var o=e("./ReactUpdateQueue"),a=e("./invariant");e("./warning")}r.prototype.setState=function(e,t){a("object"==typeof e||"function"==typeof e||null==e),o.enqueueSetState(this,e),t&&o.enqueueCallback(this,t)},r.prototype.forceUpdate=function(e){o.enqueueForceUpdate(this),e&&o.enqueueCallback(this,e)};t.exports=r},{"./ReactUpdateQueue":87,"./invariant":136,"./warning":155}],36:[function(e,t,n){"use strict";var r=e("./ReactDOMIDOperations"),o=e("./ReactMount"),a={processChildrenUpdates:r.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkupByID:r.dangerouslyReplaceNodeWithMarkupByID,unmountIDFromEnvironment:function(e){o.purgeID(e)}};t.exports=a},{"./ReactDOMIDOperations":45,"./ReactMount":71}],37:[function(e,t,n){"use strict";var r=e("./invariant"),o=!1,a={unmountIDFromEnvironment:null,replaceNodeWithMarkupByID:null,processChildrenUpdates:null,injection:{injectEnvironment:function(e){r(!o),a.unmountIDFromEnvironment=e.unmountIDFromEnvironment,a.replaceNodeWit
 hMarkupByID=e.replaceNodeWithMarkupByID,a.processChildrenUpdates=e.processChildrenUpdates,o=!0}}};t.exports=a},{"./invariant":136}],38:[function(e,t,n){"use strict";function r(e){var t=e._currentElement._owner||null;if(t){var n=t.getName();if(n)return" Check the render method of `"+n+"`."}return""}var o=e("./ReactComponentEnvironment"),a=e("./ReactContext"),i=e("./ReactCurrentOwner"),s=e("./ReactElement"),u=(e("./ReactElementValidator"),e("./ReactInstanceMap")),c=e("./ReactLifeCycle"),l=e("./ReactNativeComponent"),p=e("./ReactPerf"),d=e("./ReactPropTypeLocations"),f=(e("./ReactPropTypeLocationNames"),e("./ReactReconciler")),h=e("./ReactUpdates"),m=e("./Object.assign"),v=e("./emptyObject"),g=e("./invariant"),y=e("./shouldUpdateReactComponent"),E=(e("./warning"),1),C={construct:function(e){this._currentElement=e,this._rootNodeID=null,this._instance=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedCompone
 nt=null,this._context=null,this._mountOrder=0,this._isTopLevel=!1,this._pendingCallbacks=null},mountComponent:function(e,t,n){this._context=n,this._mountOrder=E++,this._rootNodeID=e;var r=this._processProps(this._currentElement.props),o=this._processContext(this._currentElement._context),a=l.getComponentClassForElement(this._currentElement),i=new a(r,o);i.props=r,i.context=o,i.refs=v,this._instance=i,u.set(i,this);var s=i.state;void 0===s&&(i.state=s=null),g("object"==typeof s&&!Array.isArray(s)),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var p,d,h=c.currentlyMountingInstance;c.currentlyMountingInstance=this;try{i.componentWillMount&&(i.componentWillMount(),this._pendingStateQueue&&(i.state=this._processPendingState(i.props,i.context))),p=this._getValidatedChildContext(n),d=this._renderValidatedComponent(p)}finally{c.currentlyMountingInstance=h}this._renderedComponent=this._instantiateReactComponent(d,this._currentElement.type);var m=f.moun
 tComponent(this._renderedComponent,e,t,this._mergeChildContext(n,p));return i.componentDidMount&&t.getReactMountReady().enqueue(i.componentDidMount,i),m},unmountComponent:function(){var e=this._instance;if(e.componentWillUnmount){var t=c.currentlyUnmountingInstance;c.currentlyUnmountingInstance=this;try{e.componentWillUnmount()}finally{c.currentlyUnmountingInstance=t}}f.unmountComponent(this._renderedComponent),this._renderedComponent=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=null,u.remove(e)},_setPropsInternal:function(e,t){var n=this._pendingElement||this._currentElement;this._pendingElement=s.cloneAndReplaceProps(n,m({},n.props,e)),h.enqueueUpdate(this,t)},_maskContext:function(e){var t=null;if("string"==typeof this._currentElement.type)return v;var n=this._currentElement.type.contextTypes;if(!n)return v;t={};for(var r in n)t[r]=e[r];return t}
 ,_processContext:function(e){var t=this._maskContext(e);return t},_getValidatedChildContext:function(e){var t=this._instance,n=t.getChildContext&&t.getChildContext();if(n){g("object"==typeof t.constructor.childContextTypes);for(var r in n)g(r in t.constructor.childContextTypes);return n}return null},_mergeChildContext:function(e,t){return t?m({},e,t):e},_processProps:function(e){return e},_checkPropTypes:function(e,t,n){var o=this.getName();for(var a in e)if(e.hasOwnProperty(a)){var i;try{g("function"==typeof e[a]),i=e[a](t,a,o,n)}catch(s){i=s}if(i instanceof Error){{r(this)}n===d.prop}}},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement&&f.receiveComponent(this,this._pendingElement||this._currentElement,e,this._context),(null!==this._pendingStateQueue||this._pendingForceUpdate)&&this.updateComponent(e,this._currentElement,this._current
 Element,this._context,this._context)},_warnIfContextsDiffer:function(e,t){e=this._maskContext(e),t=this._maskContext(t);for(var n=Object.keys(t).sort(),r=(this.getName()||"ReactCompositeComponent",0);r<n.length;r++){n[r]}},updateComponent:function(e,t,n,r,o){var a=this._instance,i=a.context,s=a.props;t!==n&&(i=this._processContext(n._context),s=this._processProps(n.props),a.componentWillReceiveProps&&a.componentWillReceiveProps(s,i));var u=this._processPendingState(s,i),c=this._pendingForceUpdate||!a.shouldComponentUpdate||a.shouldComponentUpdate(s,u,i);c?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,s,u,i,e,o)):(this._currentElement=n,this._context=o,a.props=s,a.state=u,a.context=i)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var a=m({},o?r[0]:n.state),i=o?1:0;i<r.length;i++){var s=r[i];m(a
 ,"function"==typeof s?s.call(n,a,e,t):s)}return a},_performComponentUpdate:function(e,t,n,r,o,a){var i=this._instance,s=i.props,u=i.state,c=i.context;i.componentWillUpdate&&i.componentWillUpdate(t,n,r),this._currentElement=e,this._context=a,i.props=t,i.state=n,i.context=r,this._updateRenderedComponent(o,a),i.componentDidUpdate&&o.getReactMountReady().enqueue(i.componentDidUpdate.bind(i,s,u,c),i)},_updateRenderedComponent:function(e,t){var n=this._renderedComponent,r=n._currentElement,o=this._getValidatedChildContext(),a=this._renderValidatedComponent(o);if(y(r,a))f.receiveComponent(n,a,e,this._mergeChildContext(t,o));else{var i=this._rootNodeID,s=n._rootNodeID;f.unmountComponent(n),this._renderedComponent=this._instantiateReactComponent(a,this._currentElement.type);var u=f.mountComponent(this._renderedComponent,i,e,this._mergeChildContext(t,o));this._replaceNodeWithMarkupByID(s,u)}},_replaceNodeWithMarkupByID:function(e,t){o.replaceNodeWithMarkupByID(e,t)},_renderValidatedComponentW
 ithoutOwnerOrContext:function(){var e=this._instance,t=e.render();return t},_renderValidatedComponent:function(e){var t,n=a.current;a.current=this._mergeChildContext(this._currentElement._context,e),i.current=this;try{t=this._renderValidatedComponentWithoutOwnerOrContext()}finally{a.current=n,i.current=null}return g(null===t||t===!1||s.isValidElement(t)),t},attachRef:function(e,t){var n=this.getPublicInstance(),r=n.refs===v?n.refs={}:n.refs;r[e]=t.getPublicInstance()},detachRef:function(e){var t=this.getPublicInstance().refs;delete t[e]},getName:function(){var e=this._currentElement.type,t=this._instance&&this._instance.constructor;return e.displayName||t&&t.displayName||e.name||t&&t.name||null},getPublicInstance:function(){return this._instance},_instantiateReactComponent:null};p.measureMethods(C,"ReactCompositeComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent",_renderValidatedComponent:"_renderValidatedComponent"});var R={Mixin:C};t.exports=R},{"./Object
 .assign":27,"./ReactComponentEnvironment":37,"./ReactContext":39,"./ReactCurrentOwner":40,"./ReactElement":58,"./ReactElementValidator":59,"./ReactInstanceMap":68,"./ReactLifeCycle":69,"./ReactNativeComponent":74,"./ReactPerf":76,"./ReactPropTypeLocationNames":77,"./ReactPropTypeLocations":78,"./ReactReconciler":82,"./ReactUpdates":88,"./emptyObject":116,"./invariant":136,"./shouldUpdateReactComponent":152,"./warning":155}],39:[function(e,t,n){"use strict";var r=e("./Object.assign"),o=e("./emptyObject"),a=(e("./warning"),{current:o,withContext:function(e,t){var n,o=a.current;a.current=r({},o,e);try{n=t()}finally{a.current=o}return n}});t.exports=a},{"./Object.assign":27,"./emptyObject":116,"./warning":155}],40:[function(e,t,n){"use strict";var r={current:null};t.exports=r},{}],41:[function(e,t,n){"use strict";function r(e){return o.createFactory(e)}var o=e("./ReactElement"),a=(e("./ReactElementValidator"),e("./mapObject")),i=a({a:"a",abbr:"abbr",address:"address",area:"area",article
 :"article",aside:"aside",audio:"audio",b:"b",base:"base",bdi:"bdi",bdo:"bdo",big:"big",blockquote:"blockquote",body:"body",br:"br",button:"button",canvas:"canvas",caption:"caption",cite:"cite",code:"code",col:"col",colgroup:"colgroup",data:"data",datalist:"datalist",dd:"dd",del:"del",details:"details",dfn:"dfn",dialog:"dialog",div:"div",dl:"dl",dt:"dt",em:"em",embed:"embed",fieldset:"fieldset",figcaption:"figcaption",figure:"figure",footer:"footer",form:"form",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",head:"head",header:"header",hr:"hr",html:"html",i:"i",iframe:"iframe",img:"img",input:"input",ins:"ins",kbd:"kbd",keygen:"keygen",label:"label",legend:"legend",li:"li",link:"link",main:"main",map:"map",mark:"mark",menu:"menu",menuitem:"menuitem",meta:"meta",meter:"meter",nav:"nav",noscript:"noscript",object:"object",ol:"ol",optgroup:"optgroup",option:"option",output:"output",p:"p",param:"param",picture:"picture",pre:"pre",progress:"progress",q:"q",rp:"rp",rt:"rt",ruby:"ruby",s:"s
 ",samp:"samp",script:"script",section:"section",select:"select",small:"small",source:"source",span:"span",strong:"strong",style:"style",sub:"sub",summary:"summary",sup:"sup",table:"table",tbody:"tbody",td:"td",textarea:"textarea",tfoot:"tfoot",th:"th",thead:"thead",time:"time",title:"title",tr:"tr",track:"track",u:"u",ul:"ul","var":"var",video:"video",wbr:"wbr",circle:"circle",clipPath:"clipPath",defs:"defs",ellipse:"ellipse",g:"g",line:"line",linearGradient:"linearGradient",mask:"mask",path:"path",pattern:"pattern",polygon:"polygon",polyline:"polyline",radialGradient:"radialGradient",rect:"rect",stop:"stop",svg:"svg",text:"text",tspan:"tspan"},r);t.exports=i},{"./ReactElement":58,"./ReactElementValidator":59,"./mapObject":143}],42:[function(e,t,n){"use strict";var r=e("./AutoFocusMixin"),o=e("./ReactBrowserComponentMixin"),a=e("./ReactClass"),i=e("./ReactElement"),s=e("./keyMirror"),u=i.createFactory("button"),c=s({onClick:!0,onDoubleClick:!0,onMouseDown:!0,onMouseMove:!0,onMouseUp
 :!0,onClickCapture:!0,onDoubleClickCapture:!0,onMouseDownCapture:!0,onMouseMoveCapture:!0,onMouseUpCapture:!0}),l=a.createClass({displayName:"ReactDOMButton",tagName:"BUTTON",mixins:[r,o],render:function(){var e={};for(var t in this.props)!this.props.hasOwnProperty(t)||this.props.disabled&&c[t]||(e[t]=this.props[t]);return u(e,this.props.children)}});t.exports=l},{"./AutoFocusMixin":2,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./keyMirror":141}],43:[function(e,t,n){"use strict";function r(e){e&&(null!=e.dangerouslySetInnerHTML&&(g(null==e.children),g("object"==typeof e.dangerouslySetInnerHTML&&"__html"in e.dangerouslySetInnerHTML)),g(null==e.style||"object"==typeof e.style))}function o(e,t,n,r){var o=d.findReactContainerForID(e);if(o){var a=o.nodeType===M?o.ownerDocument:o;C(t,a)}r.getPutListenerQueue().enqueuePutListener(e,t,n)}function a(e){I.call(w,e)||(g(D.test(e)),w[e]=!0)}function i(e){a(e),this._tag=e,this._renderedChildren=null,this._previousSty
 leCopy=null,this._rootNodeID=null}var s=e("./CSSPropertyOperations"),u=e("./DOMProperty"),c=e("./DOMPropertyOperations"),l=e("./ReactBrowserEventEmitter"),p=e("./ReactComponentBrowserEnvironment"),d=e("./ReactMount"),f=e("./ReactMultiChild"),h=e("./ReactPerf"),m=e("./Object.assign"),v=e("./escapeTextContentForBrowser"),g=e("./invariant"),y=(e("./isEventSupported"),e("./keyOf")),E=(e("./warning"),l.deleteListener),C=l.listenTo,R=l.registrationNameModules,b={string:!0,number:!0},x=y({style:null}),M=1,_=null,O={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},D=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,w={},I={}.hasOwnProperty;i.displayName="ReactDOMComponent",i.Mixin={construct:function(e){this._currentElement=e},mountComponent:function(e,t,n){this._rootNodeID=e,r(this._currentElement.props);var o=O[this._tag]?"":"</"+this._tag+">";return this._createOpenTagMarkupAndPutListeners(t)+this._createContentMarkup(t,n)+o},_createOp
 enTagMarkupAndPutListeners:function(e){var t=this._currentElement.props,n="<"+this._tag;for(var r in t)if(t.hasOwnProperty(r)){var a=t[r];if(null!=a)if(R.hasOwnProperty(r))o(this._rootNodeID,r,a,e);else{r===x&&(a&&(a=this._previousStyleCopy=m({},t.style)),a=s.createMarkupForStyles(a));var i=c.createMarkupForProperty(r,a);i&&(n+=" "+i)}}if(e.renderToStaticMarkup)return n+">";var u=c.createMarkupForID(this._rootNodeID);return n+" "+u+">"},_createContentMarkup:function(e,t){var n="";("listing"===this._tag||"pre"===this._tag||"textarea"===this._tag)&&(n="\n");var r=this._currentElement.props,o=r.dangerouslySetInnerHTML;if(null!=o){if(null!=o.__html)return n+o.__html}else{var a=b[typeof r.children]?r.children:null,i=null!=a?null:r.children;if(null!=a)return n+v(a);if(null!=i){var s=this.mountChildren(i,e,t);return n+s.join("")}}return n},receiveComponent:function(e,t,n){var r=this._currentElement;this._currentElement=e,this.updateComponent(t,r,e,n)},updateComponent:function(e,t,n,o){r(th
 is._currentElement.props),this._updateDOMProperties(t.props,e),this._updateDOMChildren(t.props,e,o)},_updateDOMProperties:function(e,t){var n,r,a,i=this._currentElement.props;for(n in e)if(!i.hasOwnProperty(n)&&e.hasOwnProperty(n))if(n===x){var s=this._previousStyleCopy;for(r in s)s.hasOwnProperty(r)&&(a=a||{},a[r]="");this._previousStyleCopy=null}else R.hasOwnProperty(n)?E(this._rootNodeID,n):(u.isStandardName[n]||u.isCustomAttribute(n))&&_.deletePropertyByID(this._rootNodeID,n);for(n in i){var c=i[n],l=n===x?this._previousStyleCopy:e[n];if(i.hasOwnProperty(n)&&c!==l)if(n===x)if(c?c=this._previousStyleCopy=m({},c):this._previousStyleCopy=null,l){for(r in l)!l.hasOwnProperty(r)||c&&c.hasOwnProperty(r)||(a=a||{},a[r]="");for(r in c)c.hasOwnProperty(r)&&l[r]!==c[r]&&(a=a||{},a[r]=c[r])}else a=c;else R.hasOwnProperty(n)?o(this._rootNodeID,n,c,t):(u.isStandardName[n]||u.isCustomAttribute(n))&&_.updatePropertyByID(this._rootNodeID,n,c)}a&&_.updateStylesByID(this._rootNodeID,a)},_updateDO
 MChildren:function(e,t,n){var r=this._currentElement.props,o=b[typeof e.children]?e.children:null,a=b[typeof r.children]?r.children:null,i=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,s=r.dangerouslySetInnerHTML&&r.dangerouslySetInnerHTML.__html,u=null!=o?null:e.children,c=null!=a?null:r.children,l=null!=o||null!=i,p=null!=a||null!=s;null!=u&&null==c?this.updateChildren(null,t,n):l&&!p&&this.updateTextContent(""),null!=a?o!==a&&this.updateTextContent(""+a):null!=s?i!==s&&_.updateInnerHTMLByID(this._rootNodeID,s):null!=c&&this.updateChildren(c,t,n)},unmountComponent:function(){this.unmountChildren(),l.deleteAllListeners(this._rootNodeID),p.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null}},h.measureMethods(i,"ReactDOMComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),m(i.prototype,i.Mixin,f.Mixin),i.injection={injectIDOperations:function(e){i.BackendIDOperations=_=e}},t.exports=i},{"./CSSPropertyOperations":5,"./DOMProperty"
 :10,"./DOMPropertyOperations":11,"./Object.assign":27,"./ReactBrowserEventEmitter":31,"./ReactComponentBrowserEnvironment":36,"./ReactMount":71,"./ReactMultiChild":72,"./ReactPerf":76,"./escapeTextContentForBrowser":117,"./invariant":136,"./isEventSupported":137,"./keyOf":142,"./warning":155}],44:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("form"),c=i.createClass({displayName:"ReactDOMForm",tagName:"FORM",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(r.topLevelTypes.topSubmit,"submit")}});t.exports=c},{"./EventConstants":15,"./LocalEventTrapMixin":25,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58}],45:[function(e,t,n){"use strict";var r=e("./CSSPropertyOperations"),o=e("./DOMChildrenOperations"),a=e("./DOMProp
 ertyOperations"),i=e("./ReactMount"),s=e("./ReactPerf"),u=e("./invariant"),c=e("./setInnerHTML"),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},p={updatePropertyByID:function(e,t,n){var r=i.getNode(e);u(!l.hasOwnProperty(t)),null!=n?a.setValueForProperty(r,t,n):a.deleteValueForProperty(r,t)},deletePropertyByID:function(e,t,n){var r=i.getNode(e);u(!l.hasOwnProperty(t)),a.deleteValueForProperty(r,t,n)},updateStylesByID:function(e,t){var n=i.getNode(e);r.setValueForStyles(n,t)},updateInnerHTMLByID:function(e,t){var n=i.getNode(e);c(n,t)},updateTextContentByID:function(e,t){var n=i.getNode(e);o.updateTextContent(n,t)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=i.getNode(e);o.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;n<e.length;n++)e[n].parentNode=i.getNode(e[n].parentID);o.processUpdates(e,t)}};s.measureMethods
 (p,"ReactDOMIDOperations",{updatePropertyByID:"updatePropertyByID",deletePropertyByID:"deletePropertyByID",updateStylesByID:"updateStylesByID",updateInnerHTMLByID:"updateInnerHTMLByID",updateTextContentByID:"updateTextContentByID",dangerouslyReplaceNodeWithMarkupByID:"dangerouslyReplaceNodeWithMarkupByID",dangerouslyProcessChildrenUpdates:"dangerouslyProcessChildrenUpdates"}),t.exports=p},{"./CSSPropertyOperations":5,"./DOMChildrenOperations":9,"./DOMPropertyOperations":11,"./ReactMount":71,"./ReactPerf":76,"./invariant":136,"./setInnerHTML":149}],46:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("iframe"),c=i.createClass({displayName:"ReactDOMIframe",tagName:"IFRAME",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topLoad,"load")}});t.exports=c},{"./EventConstants":15,"./LocalE
 ventTrapMixin":25,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58}],47:[function(e,t,n){"use strict";var r=e("./EventConstants"),o=e("./LocalEventTrapMixin"),a=e("./ReactBrowserComponentMixin"),i=e("./ReactClass"),s=e("./ReactElement"),u=s.createFactory("img"),c=i.createClass({displayName:"ReactDOMImg",tagName:"IMG",mixins:[a,o],render:function(){return u(this.props)},componentDidMount:function(){this.trapBubbledEvent(r.topLevelTypes.topLoad,"load"),this.trapBubbledEvent(r.topLevelTypes.topError,"error")}});t.exports=c},{"./EventConstants":15,"./LocalEventTrapMixin":25,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58}],48:[function(e,t,n){"use strict";function r(){this.isMounted()&&this.forceUpdate()}var o=e("./AutoFocusMixin"),a=e("./DOMPropertyOperations"),i=e("./LinkedValueUtils"),s=e("./ReactBrowserComponentMixin"),u=e("./ReactClass"),c=e("./ReactElement"),l=e("./ReactMount"),p=e("./ReactUpdates"),d=e("./Object.assign"),f=e("./invar
 iant"),h=c.createFactory("input"),m={},v=u.createClass({displayName:"ReactDOMInput",tagName:"INPUT",mixins:[o,i.Mixin,s],getInitialState:function(){var e=this.props.defaultValue;return{initialChecked:this.props.defaultChecked||!1,initialValue:null!=e?e:null}},render:function(){var e=d({},this.props);e.defaultChecked=null,e.defaultValue=null;var t=i.getValue(this);e.value=null!=t?t:this.state.initialValue;var n=i.getChecked(this);return e.checked=null!=n?n:this.state.initialChecked,e.onChange=this._handleChange,h(e,this.props.children)},componentDidMount:function(){var e=l.getID(this.getDOMNode());m[e]=this},componentWillUnmount:function(){var e=this.getDOMNode(),t=l.getID(e);delete m[t]},componentDidUpdate:function(e,t,n){var r=this.getDOMNode();null!=this.props.checked&&a.setValueForProperty(r,"checked",this.props.checked||!1);var o=i.getValue(this);null!=o&&a.setValueForProperty(r,"value",""+o)},_handleChange:function(e){var t,n=i.getOnChange(this);n&&(t=n.call(this,e)),p.asap(r,t
 his);var o=this.props.name;if("radio"===this.props.type&&null!=o){for(var a=this.getDOMNode(),s=a;s.parentNode;)s=s.parentNode;for(var u=s.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),c=0,d=u.length;d>c;c++){var h=u[c];if(h!==a&&h.form===a.form){var v=l.getID(h);f(v);var g=m[v];f(g),p.asap(r,g)}}}return t}});t.exports=v},{"./AutoFocusMixin":2,"./DOMPropertyOperations":11,"./LinkedValueUtils":24,"./Object.assign":27,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./ReactMount":71,"./ReactUpdates":88,"./invariant":136}],49:[function(e,t,n){"use strict";var r=e("./ReactBrowserComponentMixin"),o=e("./ReactClass"),a=e("./ReactElement"),i=(e("./warning"),a.createFactory("option")),s=o.createClass({displayName:"ReactDOMOption",tagName:"OPTION",mixins:[r],componentWillMount:function(){},render:function(){return i(this.props,this.props.children)}});t.exports=s},{"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./warni
 ng":155}],50:[function(e,t,n){"use strict";function r(){if(this._pendingUpdate){this._pendingUpdate=!1;
+
+var e=s.getValue(this);null!=e&&this.isMounted()&&a(this,e)}}function o(e,t,n){if(null==e[t])return null;if(e.multiple){if(!Array.isArray(e[t]))return new Error("The `"+t+"` prop supplied to <select> must be an array if `multiple` is true.")}else if(Array.isArray(e[t]))return new Error("The `"+t+"` prop supplied to <select> must be a scalar value if `multiple` is false.")}function a(e,t){var n,r,o,a=e.getDOMNode().options;if(e.props.multiple){for(n={},r=0,o=t.length;o>r;r++)n[""+t[r]]=!0;for(r=0,o=a.length;o>r;r++){var i=n.hasOwnProperty(a[r].value);a[r].selected!==i&&(a[r].selected=i)}}else{for(n=""+t,r=0,o=a.length;o>r;r++)if(a[r].value===n)return void(a[r].selected=!0);a.length&&(a[0].selected=!0)}}var i=e("./AutoFocusMixin"),s=e("./LinkedValueUtils"),u=e("./ReactBrowserComponentMixin"),c=e("./ReactClass"),l=e("./ReactElement"),p=e("./ReactUpdates"),d=e("./Object.assign"),f=l.createFactory("select"),h=c.createClass({displayName:"ReactDOMSelect",tagName:"SELECT",mixins:[i,s.Mixin,
 u],propTypes:{defaultValue:o,value:o},render:function(){var e=d({},this.props);return e.onChange=this._handleChange,e.value=null,f(e,this.props.children)},componentWillMount:function(){this._pendingUpdate=!1},componentDidMount:function(){var e=s.getValue(this);null!=e?a(this,e):null!=this.props.defaultValue&&a(this,this.props.defaultValue)},componentDidUpdate:function(e){var t=s.getValue(this);null!=t?(this._pendingUpdate=!1,a(this,t)):!e.multiple!=!this.props.multiple&&(null!=this.props.defaultValue?a(this,this.props.defaultValue):a(this,this.props.multiple?[]:""))},_handleChange:function(e){var t,n=s.getOnChange(this);return n&&(t=n.call(this,e)),this._pendingUpdate=!0,p.asap(r,this),t}});t.exports=h},{"./AutoFocusMixin":2,"./LinkedValueUtils":24,"./Object.assign":27,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./ReactUpdates":88}],51:[function(e,t,n){"use strict";function r(e,t,n,r){return e===n&&t===r}function o(e){var t=document.selection,n=t.createR
 ange(),r=n.text.length,o=n.duplicate();o.moveToElementText(e),o.setEndPoint("EndToStart",n);var a=o.text.length,i=a+r;return{start:a,end:i}}function a(e){var t=window.getSelection&&window.getSelection();if(!t||0===t.rangeCount)return null;var n=t.anchorNode,o=t.anchorOffset,a=t.focusNode,i=t.focusOffset,s=t.getRangeAt(0),u=r(t.anchorNode,t.anchorOffset,t.focusNode,t.focusOffset),c=u?0:s.toString().length,l=s.cloneRange();l.selectNodeContents(e),l.setEnd(s.startContainer,s.startOffset);var p=r(l.startContainer,l.startOffset,l.endContainer,l.endOffset),d=p?0:l.toString().length,f=d+c,h=document.createRange();h.setStart(n,o),h.setEnd(a,i);var m=h.collapsed;return{start:m?f:d,end:m?d:f}}function i(e,t){var n,r,o=document.selection.createRange().duplicate();"undefined"==typeof t.end?(n=t.start,r=n):t.start>t.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function s(e,t){if(w
 indow.getSelection){var n=window.getSelection(),r=e[l()].length,o=Math.min(t.start,r),a="undefined"==typeof t.end?o:Math.min(t.end,r);if(!n.extend&&o>a){var i=a;a=o,o=i}var s=c(e,o),u=c(e,a);if(s&&u){var p=document.createRange();p.setStart(s.node,s.offset),n.removeAllRanges(),o>a?(n.addRange(p),n.extend(u.node,u.offset)):(p.setEnd(u.node,u.offset),n.addRange(p))}}}var u=e("./ExecutionEnvironment"),c=e("./getNodeForCharacterOffset"),l=e("./getTextContentAccessor"),p=u.canUseDOM&&"selection"in document&&!("getSelection"in window),d={getOffsets:p?o:a,setOffsets:p?i:s};t.exports=d},{"./ExecutionEnvironment":21,"./getNodeForCharacterOffset":129,"./getTextContentAccessor":131}],52:[function(e,t,n){"use strict";var r=e("./DOMPropertyOperations"),o=e("./ReactComponentBrowserEnvironment"),a=e("./ReactDOMComponent"),i=e("./Object.assign"),s=e("./escapeTextContentForBrowser"),u=function(e){};i(u.prototype,{construct:function(e){this._currentElement=e,this._stringText=""+e,this._rootNodeID=null
 ,this._mountIndex=0},mountComponent:function(e,t,n){this._rootNodeID=e;var o=s(this._stringText);return t.renderToStaticMarkup?o:"<span "+r.createMarkupForID(e)+">"+o+"</span>"},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;n!==this._stringText&&(this._stringText=n,a.BackendIDOperations.updateTextContentByID(this._rootNodeID,n))}},unmountComponent:function(){o.unmountIDFromEnvironment(this._rootNodeID)}}),t.exports=u},{"./DOMPropertyOperations":11,"./Object.assign":27,"./ReactComponentBrowserEnvironment":36,"./ReactDOMComponent":43,"./escapeTextContentForBrowser":117}],53:[function(e,t,n){"use strict";function r(){this.isMounted()&&this.forceUpdate()}var o=e("./AutoFocusMixin"),a=e("./DOMPropertyOperations"),i=e("./LinkedValueUtils"),s=e("./ReactBrowserComponentMixin"),u=e("./ReactClass"),c=e("./ReactElement"),l=e("./ReactUpdates"),p=e("./Object.assign"),d=e("./invariant"),f=(e("./warning"),c.createFactory("textarea")),h=u.createClass(
 {displayName:"ReactDOMTextarea",tagName:"TEXTAREA",mixins:[o,i.Mixin,s],getInitialState:function(){var e=this.props.defaultValue,t=this.props.children;null!=t&&(d(null==e),Array.isArray(t)&&(d(t.length<=1),t=t[0]),e=""+t),null==e&&(e="");var n=i.getValue(this);return{initialValue:""+(null!=n?n:e)}},render:function(){var e=p({},this.props);return d(null==e.dangerouslySetInnerHTML),e.defaultValue=null,e.value=null,e.onChange=this._handleChange,f(e,this.state.initialValue)},componentDidUpdate:function(e,t,n){var r=i.getValue(this);if(null!=r){var o=this.getDOMNode();a.setValueForProperty(o,"value",""+r)}},_handleChange:function(e){var t,n=i.getOnChange(this);return n&&(t=n.call(this,e)),l.asap(r,this),t}});t.exports=h},{"./AutoFocusMixin":2,"./DOMPropertyOperations":11,"./LinkedValueUtils":24,"./Object.assign":27,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactElement":58,"./ReactUpdates":88,"./invariant":136,"./warning":155}],54:[function(e,t,n){"use strict";function r(){t
 his.reinitializeTransaction()}var o=e("./ReactUpdates"),a=e("./Transaction"),i=e("./Object.assign"),s=e("./emptyFunction"),u={initialize:s,close:function(){d.isBatchingUpdates=!1}},c={initialize:s,close:o.flushBatchedUpdates.bind(o)},l=[c,u];i(r.prototype,a.Mixin,{getTransactionWrappers:function(){return l}});var p=new r,d={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o){var a=d.isBatchingUpdates;d.isBatchingUpdates=!0,a?e(t,n,r,o):p.perform(e,null,t,n,r,o)}};t.exports=d},{"./Object.assign":27,"./ReactUpdates":88,"./Transaction":104,"./emptyFunction":115}],55:[function(e,t,n){"use strict";function r(e){return h.createClass({tagName:e.toUpperCase(),render:function(){return new w(e,null,null,null,null,this.props)}})}function o(){P.EventEmitter.injectReactEventListener(I),P.EventPluginHub.injectEventPluginOrder(u),P.EventPluginHub.injectInstanceHandle(T),P.EventPluginHub.injectMount(N),P.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:U,EnterLeaveEventPlugin:c,Change
 EventPlugin:i,MobileSafariClickEventPlugin:d,SelectEventPlugin:k,BeforeInputEventPlugin:a}),P.NativeComponent.injectGenericComponentClass(g),P.NativeComponent.injectTextComponentClass(D),P.NativeComponent.injectAutoWrapper(r),P.Class.injectMixin(f),P.NativeComponent.injectComponentClasses({button:y,form:E,iframe:b,img:C,input:x,option:M,select:_,textarea:O,html:F("html"),head:F("head"),body:F("body")}),P.DOMProperty.injectDOMPropertyConfig(p),P.DOMProperty.injectDOMPropertyConfig(L),P.EmptyComponent.injectEmptyComponent("noscript"),P.Updates.injectReconcileTransaction(S),P.Updates.injectBatchingStrategy(v),P.RootIndex.injectCreateReactRootIndex(l.canUseDOM?s.createReactRootIndex:A.createReactRootIndex),P.Component.injectEnvironment(m),P.DOMComponent.injectIDOperations(R)}var a=e("./BeforeInputEventPlugin"),i=e("./ChangeEventPlugin"),s=e("./ClientReactRootIndex"),u=e("./DefaultEventPluginOrder"),c=e("./EnterLeaveEventPlugin"),l=e("./ExecutionEnvironment"),p=e("./HTMLDOMPropertyConfig
 "),d=e("./MobileSafariClickEventPlugin"),f=e("./ReactBrowserComponentMixin"),h=e("./ReactClass"),m=e("./ReactComponentBrowserEnvironment"),v=e("./ReactDefaultBatchingStrategy"),g=e("./ReactDOMComponent"),y=e("./ReactDOMButton"),E=e("./ReactDOMForm"),C=e("./ReactDOMImg"),R=e("./ReactDOMIDOperations"),b=e("./ReactDOMIframe"),x=e("./ReactDOMInput"),M=e("./ReactDOMOption"),_=e("./ReactDOMSelect"),O=e("./ReactDOMTextarea"),D=e("./ReactDOMTextComponent"),w=e("./ReactElement"),I=e("./ReactEventListener"),P=e("./ReactInjection"),T=e("./ReactInstanceHandles"),N=e("./ReactMount"),S=e("./ReactReconcileTransaction"),k=e("./SelectEventPlugin"),A=e("./ServerReactRootIndex"),U=e("./SimpleEventPlugin"),L=e("./SVGDOMPropertyConfig"),F=e("./createFullPageComponent");t.exports={inject:o}},{"./BeforeInputEventPlugin":3,"./ChangeEventPlugin":7,"./ClientReactRootIndex":8,"./DefaultEventPluginOrder":13,"./EnterLeaveEventPlugin":14,"./ExecutionEnvironment":21,"./HTMLDOMPropertyConfig":23,"./MobileSafariCli
 ckEventPlugin":26,"./ReactBrowserComponentMixin":30,"./ReactClass":34,"./ReactComponentBrowserEnvironment":36,"./ReactDOMButton":42,"./ReactDOMComponent":43,"./ReactDOMForm":44,"./ReactDOMIDOperations":45,"./ReactDOMIframe":46,"./ReactDOMImg":47,"./ReactDOMInput":48,"./ReactDOMOption":49,"./ReactDOMSelect":50,"./ReactDOMTextComponent":52,"./ReactDOMTextarea":53,"./ReactDefaultBatchingStrategy":54,"./ReactDefaultPerf":56,"./ReactElement":58,"./ReactEventListener":63,"./ReactInjection":65,"./ReactInstanceHandles":67,"./ReactMount":71,"./ReactReconcileTransaction":81,"./SVGDOMPropertyConfig":89,"./SelectEventPlugin":90,"./ServerReactRootIndex":91,"./SimpleEventPlugin":92,"./createFullPageComponent":112}],56:[function(e,t,n){"use strict";function r(e){return Math.floor(100*e)/100}function o(e,t,n){e[t]=(e[t]||0)+n}var a=e("./DOMProperty"),i=e("./ReactDefaultPerfAnalysis"),s=e("./ReactMount"),u=e("./ReactPerf"),c=e("./performanceNow"),l={_allMeasurements:[],_mountStack:[0],_injected:!1,s
 tart:function(){l._injected||u.injection.injectMeasure(l.measure),l._allMeasurements.length=0,u.enableMeasure=!0},stop:function(){u.enableMeasure=!1},getLastMeasurements:function(){return l._allMeasurements},printExclusive:function(e){e=e||l._allMeasurements;var t=i.getExclusiveSummary(e);console.table(t.map(function(e){return{"Component class name":e.componentName,"Total inclusive time (ms)":r(e.inclusive),"Exclusive mount time (ms)":r(e.exclusive),"Exclusive render time (ms)":r(e.render),"Mount time per instance (ms)":r(e.exclusive/e.count),"Render time per instance (ms)":r(e.render/e.count),Instances:e.count}}))},printInclusive:function(e){e=e||l._allMeasurements;var t=i.getInclusiveSummary(e);console.table(t.map(function(e){return{"Owner > component":e.componentName,"Inclusive time (ms)":r(e.time),Instances:e.count}})),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},getMeasurementsSummaryMap:function(e){var t=i.getInclusiveSummary(e,!0);return t.map(function(e){re
 turn{"Owner > component":e.componentName,"Wasted time (ms)":e.time,Instances:e.count}})},printWasted:function(e){e=e||l._allMeasurements,console.table(l.getMeasurementsSummaryMap(e)),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},printDOM:function(e){e=e||l._allMeasurements;var t=i.getDOMSummary(e);console.table(t.map(function(e){var t={};return t[a.ID_ATTRIBUTE_NAME]=e.id,t.type=e.type,t.args=JSON.stringify(e.args),t})),console.log("Total time:",i.getTotalTime(e).toFixed(2)+" ms")},_recordWrite:function(e,t,n,r){var o=l._allMeasurements[l._allMeasurements.length-1].writes;o[e]=o[e]||[],o[e].push({type:t,time:n,args:r})},measure:function(e,t,n){return function(){for(var r=[],a=0,i=arguments.length;i>a;a++)r.push(arguments[a]);var u,p,d;if("_renderNewRootComponent"===t||"flushBatchedUpdates"===t)return l._allMeasurements.push({exclusive:{},inclusive:{},render:{},counts:{},writes:{},displayNames:{},totalTime:0}),d=c(),p=n.apply(this,r),l._allMeasurements[l._allMeasurem
 ents.length-1].totalTime=c()-d,p;if("_mountImageIntoNode"===t||"ReactDOMIDOperations"===e){if(d=c(),p=n.apply(this,r),u=c()-d,"_mountImageIntoNode"===t){var f=s.getID(r[1]);l._recordWrite(f,t,u,r[0])}else"dangerouslyProcessChildrenUpdates"===t?r[0].forEach(function(e){var t={};null!==e.fromIndex&&(t.fromIndex=e.fromIndex),null!==e.toIndex&&(t.toIndex=e.toIndex),null!==e.textContent&&(t.textContent=e.textContent),null!==e.markupIndex&&(t.markup=r[1][e.markupIndex]),l._recordWrite(e.parentID,e.type,u,t)}):l._recordWrite(r[0],t,u,Array.prototype.slice.call(r,1));return p}if("ReactCompositeComponent"!==e||"mountComponent"!==t&&"updateComponent"!==t&&"_renderValidatedComponent"!==t)return n.apply(this,r);if("string"==typeof this._currentElement.type)return n.apply(this,r);var h="mountComponent"===t?r[0]:this._rootNodeID,m="_renderValidatedComponent"===t,v="mountComponent"===t,g=l._mountStack,y=l._allMeasurements[l._allMeasurements.length-1];if(m?o(y.counts,h,1):v&&g.push(0),d=c(),p=n.app
 ly(this,r),u=c()-d,m)o(y.render,h,u);else if(v){var E=g.pop();g[g.length-1]+=u,o(y.exclusive,h,u-E),o(y.inclusive,h,u)}else o(y.inclusive,h,u);return y.displayNames[h]={current:this.getName(),owner:this._currentElement._owner?this._currentElement._owner.getName():"<root>"},p}}};t.exports=l},{"./DOMProperty":10,"./ReactDefaultPerfAnalysis":57,"./ReactMount":71,"./ReactPerf":76,"./performanceNow":147}],57:[function(e,t,n){function r(e){for(var t=0,n=0;n<e.length;n++){var r=e[n];t+=r.totalTime}return t}function o(e){for(var t=[],n=0;n<e.length;n++){var r,o=e[n];for(r in o.writes)o.writes[r].forEach(function(e){t.push({id:r,type:l[e.type]||e.type,args:e.args})})}return t}function a(e){for(var t,n={},r=0;r<e.length;r++){var o=e[r],a=u({},o.exclusive,o.inclusive);for(var i in a)t=o.displayNames[i].current,n[t]=n[t]||{componentName:t,inclusive:0,exclusive:0,render:0,count:0},o.render[i]&&(n[t].render+=o.render[i]),o.exclusive[i]&&(n[t].exclusive+=o.exclusive[i]),o.inclusive[i]&&(n[t].inclu
 sive+=o.inclusive[i]),o.counts[i]&&(n[t].count+=o.counts[i])}var s=[];for(t in n)n[t].exclusive>=c&&s.push(n[t]);return s.sort(function(e,t){return t.exclusive-e.exclusive}),s}function i(e,t){for(var n,r={},o=0;o<e.length;o++){var a,i=e[o],l=u({},i.exclusive,i.inclusive);t&&(a=s(i));for(var p in l)if(!t||a[p]){var d=i.displayNames[p];n=d.owner+" > "+d.current,r[n]=r[n]||{componentName:n,time:0,count:0},i.inclusive[p]&&(r[n].time+=i.inclusive[p]),i.counts[p]&&(r[n].count+=i.counts[p])}}var f=[];for(n in r)r[n].time>=c&&f.push(r[n]);return f.sort(function(e,t){return t.time-e.time}),f}function s(e){var t={},n=Object.keys(e.writes),r=u({},e.exclusive,e.inclusive);for(var o in r){for(var a=!1,i=0;i<n.length;i++)if(0===n[i].indexOf(o)){a=!0;break}!a&&e.counts[o]>0&&(t[o]=!0)}return t}var u=e("./Object.assign"),c=1.2,l={_mountImageIntoNode:"set innerHTML",INSERT_MARKUP:"set innerHTML",MOVE_EXISTING:"move",REMOVE_NODE:"remove",TEXT_CONTENT:"set textContent",updatePropertyByID:"update attri
 bute",deletePropertyByID:"delete attribute",updateStylesByID:"update styles",updateInnerHTMLByID:"set innerHTML",dangerouslyReplaceNodeWithMarkupByID:"replace"},p={getExclusiveSummary:a,getInclusiveSummary:i,getDOMSummary:o,getTotalTime:r};t.exports=p},{"./Object.assign":27}],58:[function(e,t,n){"use strict";var r=e("./ReactContext"),o=e("./ReactCurrentOwner"),a=e("./Object.assign"),i=(e("./warning"),{key:!0,ref:!0}),s=function(e,t,n,r,o,a){this.type=e,this.key=t,this.ref=n,this._owner=r,this._context=o,this.props=a};s.prototype={_isReactElement:!0},s.createElement=function(e,t,n){var a,u={},c=null,l=null;if(null!=t){l=void 0===t.ref?null:t.ref,c=void 0===t.key?null:""+t.key;for(a in t)t.hasOwnProperty(a)&&!i.hasOwnProperty(a)&&(u[a]=t[a])}var p=arguments.length-2;if(1===p)u.children=n;else if(p>1){for(var d=Array(p),f=0;p>f;f++)d[f]=arguments[f+2];u.children=d}if(e&&e.defaultProps){var h=e.defaultProps;for(a in h)"undefined"==typeof u[a]&&(u[a]=h[a])}return new s(e,c,l,o.current,r.
 current,u)},s.createFactory=function(e){var t=s.createElement.bind(null,e);return t.type=e,t},s.cloneAndReplaceProps=function(e,t){var n=new s(e.type,e.key,e.ref,e._owner,e._context,t);return n},s.cloneElement=function(e,t,n){var r,u=a({},e.props),c=e.key,l=e.ref,p=e._owner;if(null!=t){void 0!==t.ref&&(l=t.ref,p=o.current),void 0!==t.key&&(c=""+t.key);for(r in t)t.hasOwnProperty(r)&&!i.hasOwnProperty(r)&&(u[r]=t[r])}var d=arguments.length-2;if(1===d)u.children=n;else if(d>1){for(var f=Array(d),h=0;d>h;h++)f[h]=arguments[h+2];u.children=f}return new s(e.type,c,l,p,e._context,u)},s.isValidElement=function(e){var t=!(!e||!e._isReactElement);return t},t.exports=s},{"./Object.assign":27,"./ReactContext":39,"./ReactCurrentOwner":40,"./warning":155}],59:[function(e,t,n){"use strict";function r(){if(y.current){var e=y.current.getName();if(e)return" Check the render method of `"+e+"`."}return""}function o(e){var t=e&&e.getPublicInstance();if(!t)return void 0;var n=t.constructor;return n?n.di
 splayName||n.name||void 0:void 0}function a(){var e=y.current;return e&&o(e)||void 0}function i(e,t){e._store.validated||null!=e.key||(e._store.validated=!0,u('Each child in an array or iterator should have a unique "key" prop.',e,t))}function s(e,t,n){M.test(e)&&u("Child objects should have non-numeric keys so ordering is preserved.",t,n)}function u(e,t,n){var r=a(),i="string"==typeof n?n:n.displayName||n.name,s=r||i,u=b[e]||(b[e]={});if(!u.hasOwnProperty(s)){u[s]=!0;var c="";if(t&&t._owner&&t._owner!==y.current){var l=o(t._owner);c=" It was passed a child from "+l+"."}}}function c(e,t){if(Array.isArray(e))for(var n=0;n<e.length;n++){var r=e[n];m.isValidElement(r)&&i(r,t)}else if(m.isValidElement(e))e._store.validated=!0;else if(e){var o=C(e);if(o){if(o!==e.entries)for(var a,u=o.call(e);!(a=u.next()).done;)m.isValidElement(a.value)&&i(a.value,t)}else if("object"==typeof e){var c=v.extractIfFragment(e);for(var l in c)c.hasOwnProperty(l)&&s(l,c[l],t)}}}function l(e,t,n,o){for(var a i
 n t)if(t.hasOwnProperty(a)){var i;try{R("function"==typeof t[a]),i=t[a](n,a,e,o)}catch(s){i=s}if(i instanceof Error&&!(i.message in x)){x[i.message]=!0;{r(this)}}}}function p(e,t){var n=t.type,r="string"==typeof n?n:n.displayName,o=t._owner?t._owner.getPublicInstance().constructor.displayName:null,a=e+"|"+r+"|"+o;if(!_.hasOwnProperty(a)){_[a]=!0;var i="";r&&(i=" <"+r+" />");var s="";o&&(s=" The element was created by "+o+".")}}function d(e,t){return e!==e?t!==t:0===e&&0===t?1/e===1/t:e===t}function f(e){if(e._store){var t=e._store.originalProps,n=e.props;for(var r in n)n.hasOwnProperty(r)&&(t.hasOwnProperty(r)&&d(t[r],n[r])||(p(r,e),t[r]=n[r]))}}function h(e){if(null!=e.type){var t=E.getComponentClassForElement(e),n=t.displayName||t.name;t.propTypes&&l(n,t.propTypes,e.props,g.prop),"function"==typeof t.getDefaultProps}}var m=e("./ReactElement"),v=e("./ReactFragment"),g=e("./ReactPropTypeLocations"),y=(e("./ReactPropTypeLocationNames"),e("./ReactCurrentOwner")),E=e("./ReactNativeComp
 onent"),C=e("./getIteratorFn"),R=e("./invariant"),b=(e("./warning"),{}),x={},M=/^\d+$/,_={},O={checkAndWarnForMutatedProps:f,createElement:function(e,t,n){var r=m.createElement.apply(this,arguments);if(null==r)return r;for(var o=2;o<arguments.length;o++)c(arguments[o],e);return h(r),r},createFactory:function(e){var t=O.createElement.bind(null,e);return t.type=e,t},cloneElement:function(e,t,n){for(var r=m.cloneElement.apply(this,arguments),o=2;o<arguments.length;o++)c(arguments[o],r.type);return h(r),r}};t.exports=O},{"./ReactCurrentOwner":40,"./ReactElement":58,"./ReactFragment":64,"./ReactNativeComponent":74,"./ReactPropTypeLocationNames":77,"./ReactPropTypeLocations":78,"./getIteratorFn":127,"./invariant":136,"./warning":155}],60:[function(e,t,n){"use strict";function r(e){l[e]=!0}function o(e){delete l[e]}function a(e){return!!l[e]}var i,s=e("./ReactElement"),u=e("./ReactInstanceMap"),c=e("./invariant"),l={},p={injectEmptyComponent:function(e){i=s.createFactory(e)}},d=function(){
 };d.prototype.componentDidMount=function(){var e=u.get(this);e&&r(e._rootNodeID)},d.prototype.componentWillUnmount=function(){var e=u.get(this);e&&o(e._rootNodeID)},d.prototype.render=function(){return c(i),i()};var f=s.createElement(d),h={emptyElement:f,injection:p,isNullComponentID:a};t.exports=h},{"./ReactElement":58,"./ReactInstanceMap":68,"./invariant":136}],61:[function(e,t,n){"use strict";var r={guard:function(e,t){return e}};t.exports=r},{}],62:[function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue()}var o=e("./EventPluginHub"),a={handleTopLevel:function(e,t,n,a){var i=o.extractEvents(e,t,n,a);r(i)}};t.exports=a},{"./EventPluginHub":17}],63:[function(e,t,n){"use strict";function r(e){var t=p.getID(e),n=l.getReactRootIDFromNodeID(t),r=p.findReactContainerForID(n),o=p.getFirstReactDOM(r);return o}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function a(e){for(var t=p.getFirstReactDOM(h(e.nativeEvent))||window,n=t;n;)e.ance
 stors.push(n),n=r(n);for(var o=0,a=e.ancestors.length;a>o;o++){t=e.ancestors[o];var i=p.getID(t)||"";v._handleTopLevel(e.topLevelType,t,i,e.nativeEvent)}}function i(e){var t=m(window);e(t)}var s=e("./EventListener"),u=e("./ExecutionEnvironment"),c=e("./PooledClass"),l=e("./ReactInstanceHandles"),p=e("./ReactMount"),d=e("./ReactUpdates"),f=e("./Object.assign"),h=e("./getEventTarget"),m=e("./getUnboundedScrollPosition");f(o.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),c.addPoolingTo(o,c.twoArgumentPooler);var v={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:u.canUseDOM?window:null,setHandleTopLevel:function(e){v._handleTopLevel=e},setEnabled:function(e){v._enabled=!!e},isEnabled:function(){return v._enabled},trapBubbledEvent:function(e,t,n){var r=n;return r?s.listen(r,t,v.dispatchEvent.bind(null,e)):null},trapCapturedEvent:function(e,t,n){var r=n;return r?s.capture(r,t,v.dispatchEvent.bind(null,e)):null},monitorScrollValue:f
 unction(e){var t=i.bind(null,e);s.listen(window,"scroll",t)},dispatchEvent:function(e,t){if(v._enabled){var n=o.getPooled(e,t);try{d.batchedUpdates(a,n)}finally{o.release(n)}}}};t.exports=v},{"./EventListener":16,"./ExecutionEnvironment":21,"./Object.assign":27,"./PooledClass":28,"./ReactInstanceHandles":67,"./ReactMount":71,"./ReactUpdates":88,"./getEventTarget":126,"./getUnboundedScrollPosition":132}],64:[function(e,t,n){"use strict";var r=(e("./ReactElement"),e("./warning"),{create:function(e){return e},extract:function(e){return e},extractIfFragment:function(e){return e}});t.exports=r},{"./ReactElement":58,"./warning":155}],65:[function(e,t,n){"use strict";var r=e("./DOMProperty"),o=e("./EventPluginHub"),a=e("./ReactComponentEnvironment"),i=e("./ReactClass"),s=e("./ReactEmptyComponent"),u=e("./ReactBrowserEventEmitter"),c=e("./ReactNativeComponent"),l=e("./ReactDOMComponent"),p=e("./ReactPerf"),d=e("./ReactRootIndex"),f=e("./ReactUpdates"),h={Component:a.injection,Class:i.inject
 ion,DOMComponent:l.injection,DOMProperty:r.injection,EmptyComponent:s.injection,EventPluginHub:o.injection,EventEmitter:u.injection,NativeComponent:c.injection,Perf:p.injection,RootIndex:d.injection,Updates:f.injection};t.exports=h},{"./DOMProperty":10,"./EventPluginHub":17,"./ReactBrowserEventEmitter":31,"./ReactClass":34,"./ReactComponentEnvironment":37,"./ReactDOMComponent":43,"./ReactEmptyComponent":60,"./ReactNativeComponent":74,"./ReactPerf":76,"./ReactRootIndex":84,"./ReactUpdates":88}],66:[function(e,t,n){"use strict";function r(e){return a(document.documentElement,e)}var o=e("./ReactDOMSelection"),a=e("./containsNode"),i=e("./focusNode"),s=e("./getActiveElement"),u={hasSelectionCapabilities:function(e){return e&&("INPUT"===e.nodeName&&"text"===e.type||"TEXTAREA"===e.nodeName||"true"===e.contentEditable)},getSelectionInformation:function(){var e=s();return{focusedElem:e,selectionRange:u.hasSelectionCapabilities(e)?u.getSelection(e):null}},restoreSelection:function(e){var t=s
 (),n=e.focusedElem,o=e.selectionRange;t!==n&&r(n)&&(u.hasSelectionCapabilities(n)&&u.setSelection(n,o),i(n))},getSelection:function(e){var t;if("selectionStart"in e)t={start:e.selectionStart,end:e.selectionEnd};else if(document.selection&&"INPUT"===e.nodeName){var n=document.selection.createRange();n.parentElement()===e&&(t={start:-n.moveStart("character",-e.value.length),end:-n.moveEnd("character",-e.value.length)})}else t=o.getOffsets(e);return t||{start:0,end:0}},setSelection:function(e,t){var n=t.start,r=t.end;if("undefined"==typeof r&&(r=n),"selectionStart"in e)e.selectionStart=n,e.selectionEnd=Math.min(r,e.value.length);else if(document.selection&&"INPUT"===e.nodeName){var a=e.createTextRange();a.collapse(!0),a.moveStart("character",n),a.moveEnd("character",r-n),a.select()}else o.setOffsets(e,t)}};t.exports=u},{"./ReactDOMSelection":51,"./containsNode":110,"./focusNode":120,"./getActiveElement":122}],67:[function(e,t,n){"use strict";function r(e){return f+e.toString(36)}functi
 on o(e,t){return e.charAt(t)===f||t===e.length}function a(e){return""===e||e.charAt(0)===f&&e.charAt(e.length-1)!==f}function i(e,t){return 0===t.indexOf(e)&&o(t,e.length)}

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/.gitignore
----------------------------------------------------------------------
diff --git a/npm-search/.gitignore b/npm-search/.gitignore
index f1ce98d..15acdb5 100644
--- a/npm-search/.gitignore
+++ b/npm-search/.gitignore
@@ -7,4 +7,4 @@ Thumbs.db
 .DS_Store
 
 # ignores specific to this repo
-build/
+build/**


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[2/6] cordova-registry-web git commit: Extend grunt, add more structure, fix bugs

Posted by mu...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/Gulpfile.js
----------------------------------------------------------------------
diff --git a/npm-search/Gulpfile.js b/npm-search/Gulpfile.js
index adf1754..66d850f 100644
--- a/npm-search/Gulpfile.js
+++ b/npm-search/Gulpfile.js
@@ -13,16 +13,15 @@ var gulp       = require('gulp'),
     envify      = require('envify');
 
 gulp.task('styles', function () {
-    gulp.src(['assets/css/base.css', 'assets/css/flexboxgrid.css'])
+    gulp.src(['src/css/base.css', 'src/css/flexboxgrid.css'])
         .pipe(concat('styles.css'))
-        .pipe(gulp.dest('./build/'));
-
+        .pipe(gulp.dest('./build/css/'));
 });
 
 gulp.task('scripts', function () {
     // This is needed for envify to remove debug only code from REACT
     process.env.NODE_ENV = argv.debug ? '' : 'production';
-    browserify('./assets/js/app.js', { debug: argv.debug ? true : false })
+    browserify('./src/js/app.js', { debug: argv.debug ? true : false })
         .transform(reactify)
         .transform(envify)
         .bundle()
@@ -31,37 +30,48 @@ gulp.task('scripts', function () {
         .pipe(buffer())
         .pipe(gulpif(!argv.debug, uglify())) // minify only if not debug build.
         .on('error', gutil.log)
-        .pipe(gulp.dest('./build/'));
+        .pipe(gulp.dest('./build/js/'));
 });
 
 gulp.task('images', function () {
-    gulp.src(['assets/img/**/*.png', 'assets/img/**/*.gif'])
+    gulp.src(['src/img/**/*.png', 'src/img/**/*.gif'])
         .pipe(imagemin())
-        .pipe(gulp.dest('build/img/'));
-    gulp.src(['assets/img/**/*.svg'])
-        .pipe(gulp.dest('build/img'));
+        .pipe(gulp.dest('./build/img/'));
+    gulp.src(['src/img/**/*.svg'])
+        .pipe(gulp.dest('./build/img'));
 });
 
-gulp.task('dev', ['build'], function () {
-    gulp.watch(['assets/js/**/*.js', 'assets/js/*.json'], [ 'scripts' ]);
-    gulp.watch('assets/css/**/*.css', [ 'styles' ]);
-    gulp.watch('assets/img/**/*', [ 'images' ]);
+gulp.task('html', function () {
+    gulp.src(['src/*.html'])
+        .pipe(gulp.dest('./build/'));
+});
+
+gulp.task('etc', function () {
+    gulp.src(['src/etc/*'])
+        .pipe(gulp.dest('./build/etc'));
+})
 
+gulp.task('dev', ['build'], function () {
+    gulp.watch(['src/js/**/*.js', 'src/js/*.json'], [ 'scripts' ]);
+    gulp.watch('src/css/**/*.css', [ 'styles' ]);
+    gulp.watch('src/img/**', [ 'images' ]);
+    gulp.watch('src/*.html', ['html']);
+    gulp.watch('src/etc/**', ['etc']);
 });
 
 gulp.task('serve', ['dev'], function() {
   browserSync({
     server: {
-      baseDir: '.'
+      baseDir: './build'
     },
     files: [
-      '*.html',
-      './build/*.css',
-      './build/*.js'
+      './build/*.html',
+      './build/img/**',
+      './build/css/*.css',
+      './build/js/*.js',
+      './build/etc/**'
     ]
   });
 });
 
-
-
-gulp.task('build', [ 'styles', 'scripts', 'images' ]);
+gulp.task('build', [ 'styles', 'scripts', 'images', 'html', 'etc' ]);

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/css/base.css
----------------------------------------------------------------------
diff --git a/npm-search/assets/css/base.css b/npm-search/assets/css/base.css
deleted file mode 100644
index 571bbc6..0000000
--- a/npm-search/assets/css/base.css
+++ /dev/null
@@ -1,428 +0,0 @@
-body {
-  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
-  font-size: 16px;
-  margin: 0;
-}
-
-h2 {
-    padding: 48px 0;
-    font-size: 34px;
-}
-
-/*---------------------------------------------------
-    Pluggy and msg
----------------------------------------------------*/
-#headerBackground {
-  background: url('img/grid.png');
-}
-
-#topContent {
-  margin-top: 25px;
-}
-
-#pluggy {
-  background: transparent url('img/pluggy.png') no-repeat center;
-  background-size: contain;
-  height: 200px;
-  margin-left: 25px;
-}
-
-.discover-message {
-  background-color: white;
-  font-size: 56px;
-  margin: 25px 5px 5px 5px;
-  text-align: left;
-  display: inline-block;
-  padding: 0px 8px;
-  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
-}
-
-/*---------------------------------------------------
-    Searchbox
----------------------------------------------------*/
-
-#searchwrapper {
-  margin: 25px 0px;
-  border: 2px solid gray;
-  background-color: white;
-}
-
-#searchwrapper .searchBox {
-  display: block;
-  height: 35px;
-  width: 100%;
-  border: 0;
-  background: none;
-  outline: 0;
-  font-size: 14px;
-  padding: 0 5px 0 35px;
-  color: #363636;
-  background: url('img/search.png') no-repeat;
-  background-position: 5.5px 5.5px;
-}
-
-#supportedPlatforms div {
-  margin: 12px 2px 2px 0;
-  border: 1px solid #363636;
-  border-radius: 8px;
-  padding: .4em .5em;
-  height: 11px;
-  font-size: 11px;
-  line-height: 11px;
-  display: inline-block;
-  align-items: center;
-
-}
-
-/*---------------------------------------------------
-    Plugin List
----------------------------------------------------*/
-
-.pluginList {
-  list-style-type: none;
-  padding: 0px;
-}
-
-.pluginList li {
-  margin: 0 0 60px 0;
-}
-
-/*---------------------------------------------------
-    PluginCards
----------------------------------------------------*/
-.pluginCard {
-  position: relative;
-  border: 1px solid #CDCDCD;
-  background: white;
-  min-height: 10em;
-  height: 10em;
-}
-
-.pluginCard:after {
-  z-index: -1;
-  position: absolute;
-  content: "";
-  bottom: 18px;
-  right: 2px;
-  left: auto;
-  width: 50%;
-  top: 80%;
-  max-width:300px;
-  background: #777;
-  -webkit-box-shadow: 0 15px 10px #777;
-  -moz-box-shadow: 0 15px 10px #777;
-  box-shadow: 0 15px 10px #777;
-  -webkit-transform: rotate(3deg);
-  -moz-transform: rotate(3deg);
-  -o-transform: rotate(3deg);
-  -ms-transform: rotate(3deg);
-  transform: rotate(3deg);
-}
-
-.pluginCard h3 {
-  margin: 0.2em 0.2em 0.4em 0em;
-  font-size: 1.5em;
-  display: inline-block;
-}
-
-.pluginCard a:link,
-.pluginCard a:visited {
-  text-decoration: none;
-  color: #404D58;
-}
-
-.pluginCard a:hover,
-.pluginCard a:active {
-  text-decoration: underline;
-}
-
-.featuredPlugin {
-  -webkit-box-shadow: -3px 0px 0px #4CC2E4;
-  -moz-box-shadow: -3px 0px 0px #4CC2E4;
-  box-shadow: -3px 0px 0px #4CC2E4;
-  border-left-width: 0px;
-}
-
-.pluginCardContents {
-  border: 1px solid #363636;
-  margin-bottom: 10px;
-  position: relative;
-  background: white;
-}
-
-.primaryContent {
-  display: flex;
-  display: -webkit-flex;
-  flex-direction: column;
-  -webkit-flex-direction: column;
-}
-
-.primaryContent .header small {
-  color: #83878B;
-}
-
-.primaryContent .pluginAuthor {
-  font-weight: bold;
-}
-
-.primaryContent .pluginDesc {
-  -webkit-flex-grow: 1;
-  flex-grow: 1;
-  font-size: 1em;
-  color: #404040;
-}
-
-.supportedPlatforms {
-  list-style-type: none;
-  padding: 5px 0px;
-  font-size: 0.8em;
-}
-
-.supportedPlatforms li {
-  margin: 0 5px 0 0;
-  display: inline-block;
-  border: 1px solid #F2F2F2;
-  padding: 2px 10px;
-  color: #7A828B;
-}
-
-.secondaryContent {
-  display: flex;
-  display: -webkit-flex;
-  flex-direction: column;
-  -webkit-flex-direction: column;
-  text-align: right;
-  font-size: 0.9em;
-  color: #7A828B;
-}
-
-.download {
-  -webkit-flex-grow: 1;
-  flex-grow: 1;
-}
-
-.extraInfo p {
-margin-top: 2px;
-margin-bottom: 2px;
-}
-
-.clickable {
-  cursor: pointer;
-}
-
-/*---------------------------------------------------
-    Misc
----------------------------------------------------*/
-
-.icon {
-  background: url('img/sprite.png') no-repeat;
-  background-position: 0 -220px;
-  padding-left: 78px;
-}
-.icon-about {
-  background-position: 0 -220px;
-}
-
-/*---------------------------------------------------
-    Layout - Header
----------------------------------------------------*/
-#wrap,
-.wrap {
-  width: 1008px;
-  margin: 0 auto;
-  position: relative;
-}
-
-.header-placeholder {
-  height: 90px;
-}
-#header {
-  height: 90px;
-  position: fixed;
-  z-index: 10;
-  left: 0;
-  right: 0;
-  background: #fff;
-  border-bottom: 1px solid #ddd;
-}
-#header .shadow {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: -3px;
-  height: 3px;
-  background: url('img/shadow.png');
-}
-
-.logo,
-.closing {
-  background: url('img/sprite.png') no-repeat;
-  -webkit-transition: background 0.25s linear;
-  -moz-transition: background 0.25s linear;
-  transition: background 0.25s linear;
-  background-color: #3b4854;
-  background-position: 0 0px;
-  position: absolute;
-  left: 0;
-  top: 5px;
-  width: 220px;
-  height: 75px;
-}
-.logo:hover {
-  background-color: #4cc2e4;
-}
-.menu {
-  padding: 16px 0;
-  float: right;
-}
-.menu a {
-  text-decoration: none;
-  -webkit-transition: background 0.25s linear;
-  -moz-transition: background 0.25s linear;
-  transition: background 0.25s linear;
-  padding: 8px;
-  margin: 0 8px;
-  line-height: 55px;
-}
-.menu a:hover,
-.menu a:link,
-.menu a:visited {
-  color: #4cc2e4;
-}
-.menu-dropdown {
-  display: none;
-  position: absolute;
-  right: 16px;
-  top: 32px;
-  width: 40%;
-}
-.menu-dropdown select {
-  width: 100%;
-}
-
-/*---------------------------------------------------
-    Code
----------------------------------------------------*/
-pre, code {
-  font-size: 12px;
-  font-family: Consolas, "Liberation Mono", Courier, monospace;
-}
-
-code {
-  margin: 0 0px;
-  padding: 0px 0px;
-  white-space: nowrap;
-  border: 1px solid #eaeaea;
-  background-color: #f8f8f8;
-  border-radius: 3px;
-}
-
-pre>code {
-  margin: 0;
-  padding: 0;
-  white-space: pre;
-  border: none;
-  background: transparent;
-}
-
-pre {
-  background-color: #f8f8f8;
-  border: 1px solid #ccc;
-  font-size: 13px;
-  line-height: 19px;
-  overflow: auto;
-  padding: 6px 10px;
-  border-radius: 3px;
-}
-
-pre code {
-  background-color: transparent;
-  border: none;
-}
-
-
-/*---------------------------------------------------
-    Mobile
----------------------------------------------------*/
-@media all and (max-width: 1024px) {
-  #wrap,
-  .wrap {
-    width: auto;
-    margin-left: 24px;
-    margin-right: 24px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 890px) {
-  h2 {
-    font-size: 24px;
-    padding-top: 54px;
-  }
-  .menu {
-    display: none;
-  }
-  .menu-dropdown {
-    display: block;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 720px) {
-  h2 {
-    font-size: 22px;
-    padding-top: 54px;
-  }
-  .menu-dropdown {
-    top: 16px;
-  }
-  #header,
-  .header-placeholder {
-    height: 52px;
-  }
-  .logo {
-    top: 7px;
-    width: 110px;
-    height: 37px;
-    background-size: 112px 425px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 585px) {
-  h2 {
-    letter-spacing: 0;
-  }
-  .wrap {
-    margin-left: 12px;
-    margin-right: 12px;
-  }
-  .icon {
-    background-size: 112px 425px;
-    padding: 20px 48px 20px 48px;
-    overflow: hidden;
-    display: block;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .icon-about {
-    background-position: 0 -110px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 440px) {
-  .icon {
-    padding: 22px 16px 20px 35px;
-  }
-    h2 {
-    font-size: 20px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/css/flexboxgrid.css
----------------------------------------------------------------------
diff --git a/npm-search/assets/css/flexboxgrid.css b/npm-search/assets/css/flexboxgrid.css
deleted file mode 100644
index 68dace4..0000000
--- a/npm-search/assets/css/flexboxgrid.css
+++ /dev/null
@@ -1,1026 +0,0 @@
-/*
- * Copyright 2013 Kristofer Joseph
- *
- * Licensed 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.
- */
-
-/*
- *
- * Uncomment and set these variables to customize the grid.
- *
- * :root {
- *  --gutter-width: 1rem;
- *  --outer-margin: 2rem;
- *  --gutter-compensation: calc( var( --gutter-width / 2 ) * -1 );
- *  --half-gutter-width: calc( var( --gutter-width / 2 ) );
- *  --screen-xs-min: 30em;
- *  --screen-sm-min: 48em;
- *  --screen-md-min: 62em;
- *  --screen-lg-min: 75em;
- *  --container-sm: calc( 45rem + var( --gutter-width ) );
- *  --container-md: calc( 60rem + var( --gutter-width ) );
- *  --container-lg: calc( 70rem + var( --gutter-width ) );
- * }
- *
-*/
-
-.container-fluid {
-  margin-right: auto;
-  margin-left: auto;
-  padding-right: 2rem;
-  padding-left: 2rem;
-}
-
-.row {
-  box-sizing: border-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-flex: 0 1 auto;
-  -ms-flex: 0 1 auto;
-  flex: 0 1 auto;
-  -webkit-flex-direction: row;
-  -ms-flex-direction: row;
-  flex-direction: row;
-  -webkit-flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  flex-wrap: wrap;
-  margin-right: -0.5rem;
-  margin-left: -0.5rem;
-}
-
-.row.reverse {
-  -webkit-flex-direction: row-reverse;
-  -ms-flex-direction: row-reverse;
-  flex-direction: row-reverse;
-}
-
-.col.reverse {
-  -webkit-flex-direction: column-reverse;
-  -ms-flex-direction: column-reverse;
-  flex-direction: column-reverse;
-}
-
-.col-xs,
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-xs-offset-1,
-.col-xs-offset-2,
-.col-xs-offset-3,
-.col-xs-offset-4,
-.col-xs-offset-5,
-.col-xs-offset-6,
-.col-xs-offset-7,
-.col-xs-offset-8,
-.col-xs-offset-9,
-.col-xs-offset-10,
-.col-xs-offset-11,
-.col-xs-offset-12 {
-  box-sizing: border-box;
-  -webkit-flex: 0 0 auto;
-  -ms-flex: 0 0 auto;
-  flex: 0 0 auto;
-  padding-right: 0.5rem;
-  padding-left: 0.5rem;
-}
-
-.col-xs {
-  -webkit-flex-grow: 1;
-  -ms-flex-positive: 1;
-  flex-grow: 1;
-  -webkit-flex-basis: 0;
-  -ms-flex-preferred-size: 0;
-  flex-basis: 0;
-  max-width: 100%;
-}
-
-.col-xs-1 {
-  -webkit-flex-basis: 8.333%;
-  -ms-flex-preferred-size: 8.333%;
-  flex-basis: 8.333%;
-  max-width: 8.333%;
-}
-
-.col-xs-2 {
-  -webkit-flex-basis: 16.667%;
-  -ms-flex-preferred-size: 16.667%;
-  flex-basis: 16.667%;
-  max-width: 16.667%;
-}
-
-.col-xs-3 {
-  -webkit-flex-basis: 25%;
-  -ms-flex-preferred-size: 25%;
-  flex-basis: 25%;
-  max-width: 25%;
-}
-
-.col-xs-4 {
-  -webkit-flex-basis: 33.333%;
-  -ms-flex-preferred-size: 33.333%;
-  flex-basis: 33.333%;
-  max-width: 33.333%;
-}
-
-.col-xs-5 {
-  -webkit-flex-basis: 41.667%;
-  -ms-flex-preferred-size: 41.667%;
-  flex-basis: 41.667%;
-  max-width: 41.667%;
-}
-
-.col-xs-6 {
-  -webkit-flex-basis: 50%;
-  -ms-flex-preferred-size: 50%;
-  flex-basis: 50%;
-  max-width: 50%;
-}
-
-.col-xs-7 {
-  -webkit-flex-basis: 58.333%;
-  -ms-flex-preferred-size: 58.333%;
-  flex-basis: 58.333%;
-  max-width: 58.333%;
-}
-
-.col-xs-8 {
-  -webkit-flex-basis: 66.667%;
-  -ms-flex-preferred-size: 66.667%;
-  flex-basis: 66.667%;
-  max-width: 66.667%;
-}
-
-.col-xs-9 {
-  -webkit-flex-basis: 75%;
-  -ms-flex-preferred-size: 75%;
-  flex-basis: 75%;
-  max-width: 75%;
-}
-
-.col-xs-10 {
-  -webkit-flex-basis: 83.333%;
-  -ms-flex-preferred-size: 83.333%;
-  flex-basis: 83.333%;
-  max-width: 83.333%;
-}
-
-.col-xs-11 {
-  -webkit-flex-basis: 91.667%;
-  -ms-flex-preferred-size: 91.667%;
-  flex-basis: 91.667%;
-  max-width: 91.667%;
-}
-
-.col-xs-12 {
-  -webkit-flex-basis: 100%;
-  -ms-flex-preferred-size: 100%;
-  flex-basis: 100%;
-  max-width: 100%;
-}
-
-.col-xs-offset-1 {
-  margin-left: 8.333%;
-}
-
-.col-xs-offset-2 {
-  margin-left: 16.667%;
-}
-
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-
-.col-xs-offset-4 {
-  margin-left: 33.333%;
-}
-
-.col-xs-offset-5 {
-  margin-left: 41.667%;
-}
-
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-
-.col-xs-offset-7 {
-  margin-left: 58.333%;
-}
-
-.col-xs-offset-8 {
-  margin-left: 66.667%;
-}
-
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-
-.col-xs-offset-10 {
-  margin-left: 83.333%;
-}
-
-.col-xs-offset-11 {
-  margin-left: 91.667%;
-}
-
-.start-xs {
-  -webkit-justify-content: flex-start;
-  -ms-flex-pack: start;
-  justify-content: flex-start;
-  text-align: start;
-}
-
-.center-xs {
-  -webkit-justify-content: center;
-  -ms-flex-pack: center;
-  justify-content: center;
-  text-align: center;
-}
-
-.end-xs {
-  -webkit-justify-content: flex-end;
-  -ms-flex-pack: end;
-  justify-content: flex-end;
-  text-align: end;
-}
-
-.top-xs {
-  -webkit-align-items: flex-start;
-  -ms-flex-align: start;
-  align-items: flex-start;
-}
-
-.middle-xs {
-  -webkit-align-items: center;
-  -ms-flex-align: center;
-  align-items: center;
-}
-
-.bottom-xs {
-  -webkit-align-items: flex-end;
-  -ms-flex-align: end;
-  align-items: flex-end;
-}
-
-.around-xs {
-  -webkit-justify-content: space-around;
-  -ms-flex-pack: distribute;
-  justify-content: space-around;
-}
-
-.between-xs {
-  -webkit-justify-content: space-between;
-  -ms-flex-pack: justify;
-  justify-content: space-between;
-}
-
-.first-xs {
-  -webkit-order: -1;
-  -ms-flex-order: -1;
-  order: -1;
-}
-
-.last-xs {
-  -webkit-order: 1;
-  -ms-flex-order: 1;
-  order: 1;
-}
-
-@media only screen and (min-width: 48em) {
-  .container {
-    width: 46rem;
-  }
-
-  .col-sm,
-  .col-sm-1,
-  .col-sm-2,
-  .col-sm-3,
-  .col-sm-4,
-  .col-sm-5,
-  .col-sm-6,
-  .col-sm-7,
-  .col-sm-8,
-  .col-sm-9,
-  .col-sm-10,
-  .col-sm-11,
-  .col-sm-12,
-  .col-sm-offset-1,
-  .col-sm-offset-2,
-  .col-sm-offset-3,
-  .col-sm-offset-4,
-  .col-sm-offset-5,
-  .col-sm-offset-6,
-  .col-sm-offset-7,
-  .col-sm-offset-8,
-  .col-sm-offset-9,
-  .col-sm-offset-10,
-  .col-sm-offset-11,
-  .col-sm-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-sm {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-sm-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-sm-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-sm-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-sm-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-sm-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-sm-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-sm-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-sm-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-sm-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-sm-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-sm-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-sm-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-sm-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-sm-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-sm-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-sm-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-sm-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-sm-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-sm-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-sm-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-sm {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-sm {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-sm {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-sm {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-sm {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-sm {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-sm {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-sm {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-sm {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-sm {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
-
-@media only screen and (min-width: 62em) {
-  .container {
-    width: 61rem;
-  }
-
-  .col-md,
-  .col-md-1,
-  .col-md-2,
-  .col-md-3,
-  .col-md-4,
-  .col-md-5,
-  .col-md-6,
-  .col-md-7,
-  .col-md-8,
-  .col-md-9,
-  .col-md-10,
-  .col-md-11,
-  .col-md-12,
-  .col-md-offset-1,
-  .col-md-offset-2,
-  .col-md-offset-3,
-  .col-md-offset-4,
-  .col-md-offset-5,
-  .col-md-offset-6,
-  .col-md-offset-7,
-  .col-md-offset-8,
-  .col-md-offset-9,
-  .col-md-offset-10,
-  .col-md-offset-11,
-  .col-md-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-md {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-md-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-md-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-md-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-md-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-md-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-md-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-md-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-md-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-md-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-md-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-md-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-md-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-md-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-md-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-md-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-md-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-md-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-md-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-md-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-md-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-md {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-md {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-md {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-md {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-md {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-md {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-md {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-md {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-md {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-md {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
-
-@media only screen and (min-width: 75em) {
-  .container {
-    width: 71rem;
-  }
-
-  .col-lg,
-  .col-lg-1,
-  .col-lg-2,
-  .col-lg-3,
-  .col-lg-4,
-  .col-lg-5,
-  .col-lg-6,
-  .col-lg-7,
-  .col-lg-8,
-  .col-lg-9,
-  .col-lg-10,
-  .col-lg-11,
-  .col-lg-12,
-  .col-lg-offset-1,
-  .col-lg-offset-2,
-  .col-lg-offset-3,
-  .col-lg-offset-4,
-  .col-lg-offset-5,
-  .col-lg-offset-6,
-  .col-lg-offset-7,
-  .col-lg-offset-8,
-  .col-lg-offset-9,
-  .col-lg-offset-10,
-  .col-lg-offset-11,
-  .col-lg-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-lg {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-lg-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-lg-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-lg-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-lg-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-lg-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-lg-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-lg-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-lg-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-lg-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-lg-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-lg-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-lg-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-lg-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-lg-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-lg-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-lg-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-lg-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-lg-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-lg-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-lg-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-lg {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-lg {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-lg {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-lg {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-lg {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-lg {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-lg {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-lg {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-lg {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-lg {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/android-chrome-144x144.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/android-chrome-144x144.png b/npm-search/assets/img/android-chrome-144x144.png
deleted file mode 100644
index 70826eb..0000000
Binary files a/npm-search/assets/img/android-chrome-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/android-chrome-192x192.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/android-chrome-192x192.png b/npm-search/assets/img/android-chrome-192x192.png
deleted file mode 100644
index 728f217..0000000
Binary files a/npm-search/assets/img/android-chrome-192x192.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/android-chrome-36x36.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/android-chrome-36x36.png b/npm-search/assets/img/android-chrome-36x36.png
deleted file mode 100644
index 277efed..0000000
Binary files a/npm-search/assets/img/android-chrome-36x36.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/android-chrome-48x48.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/android-chrome-48x48.png b/npm-search/assets/img/android-chrome-48x48.png
deleted file mode 100644
index 3a84506..0000000
Binary files a/npm-search/assets/img/android-chrome-48x48.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/android-chrome-72x72.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/android-chrome-72x72.png b/npm-search/assets/img/android-chrome-72x72.png
deleted file mode 100644
index bc6a1fb..0000000
Binary files a/npm-search/assets/img/android-chrome-72x72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/android-chrome-96x96.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/android-chrome-96x96.png b/npm-search/assets/img/android-chrome-96x96.png
deleted file mode 100644
index 961d0b4..0000000
Binary files a/npm-search/assets/img/android-chrome-96x96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-114x114.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-114x114.png b/npm-search/assets/img/apple-touch-icon-114x114.png
deleted file mode 100644
index 68a5502..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-114x114.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-120x120.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-120x120.png b/npm-search/assets/img/apple-touch-icon-120x120.png
deleted file mode 100644
index 85a0369..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-120x120.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-144x144.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-144x144.png b/npm-search/assets/img/apple-touch-icon-144x144.png
deleted file mode 100644
index 70826eb..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-152x152.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-152x152.png b/npm-search/assets/img/apple-touch-icon-152x152.png
deleted file mode 100644
index 92034ec..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-152x152.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-180x180.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-180x180.png b/npm-search/assets/img/apple-touch-icon-180x180.png
deleted file mode 100644
index 90032cf..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-180x180.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-57x57.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-57x57.png b/npm-search/assets/img/apple-touch-icon-57x57.png
deleted file mode 100644
index e2f87c3..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-57x57.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-60x60.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-60x60.png b/npm-search/assets/img/apple-touch-icon-60x60.png
deleted file mode 100644
index 1055d9f..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-60x60.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-72x72.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-72x72.png b/npm-search/assets/img/apple-touch-icon-72x72.png
deleted file mode 100644
index bc6a1fb..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-72x72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-76x76.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-76x76.png b/npm-search/assets/img/apple-touch-icon-76x76.png
deleted file mode 100644
index 8404b3c..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-76x76.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon-precomposed.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon-precomposed.png b/npm-search/assets/img/apple-touch-icon-precomposed.png
deleted file mode 100644
index 4663c60..0000000
Binary files a/npm-search/assets/img/apple-touch-icon-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/apple-touch-icon.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/apple-touch-icon.png b/npm-search/assets/img/apple-touch-icon.png
deleted file mode 100644
index 90032cf..0000000
Binary files a/npm-search/assets/img/apple-touch-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/browserconfig.xml
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/browserconfig.xml b/npm-search/assets/img/browserconfig.xml
deleted file mode 100644
index e31b3f1..0000000
--- a/npm-search/assets/img/browserconfig.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
-  <msapplication>
-    <tile>
-      <square70x70logo src="/assets/img/mstile-70x70.png"/>
-      <square150x150logo src="/assets/img/mstile-150x150.png"/>
-      <square310x310logo src="/assets/img/mstile-310x310.png"/>
-      <wide310x150logo src="/assets/img/mstile-310x150.png"/>
-      <TileColor>#da532c</TileColor>
-    </tile>
-  </msapplication>
-</browserconfig>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/favicon-16x16.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/favicon-16x16.png b/npm-search/assets/img/favicon-16x16.png
deleted file mode 100644
index f7667c5..0000000
Binary files a/npm-search/assets/img/favicon-16x16.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/favicon-32x32.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/favicon-32x32.png b/npm-search/assets/img/favicon-32x32.png
deleted file mode 100644
index 249dbc1..0000000
Binary files a/npm-search/assets/img/favicon-32x32.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/favicon-96x96.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/favicon-96x96.png b/npm-search/assets/img/favicon-96x96.png
deleted file mode 100644
index 961d0b4..0000000
Binary files a/npm-search/assets/img/favicon-96x96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/favicon.ico
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/favicon.ico b/npm-search/assets/img/favicon.ico
deleted file mode 100644
index 365e772..0000000
Binary files a/npm-search/assets/img/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/grid.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/grid.png b/npm-search/assets/img/grid.png
deleted file mode 100644
index 5d97586..0000000
Binary files a/npm-search/assets/img/grid.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/manifest.json
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/manifest.json b/npm-search/assets/img/manifest.json
deleted file mode 100644
index 6a74e8f..0000000
--- a/npm-search/assets/img/manifest.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-	"name": "My app",
-	"icons": [
-		{
-			"src": "\/assets\/img\/android-chrome-36x36.png",
-			"sizes": "36x36",
-			"type": "image\/png",
-			"density": "0.75"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-48x48.png",
-			"sizes": "48x48",
-			"type": "image\/png",
-			"density": "1.0"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-72x72.png",
-			"sizes": "72x72",
-			"type": "image\/png",
-			"density": "1.5"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-96x96.png",
-			"sizes": "96x96",
-			"type": "image\/png",
-			"density": "2.0"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-144x144.png",
-			"sizes": "144x144",
-			"type": "image\/png",
-			"density": "3.0"
-		},
-		{
-			"src": "\/assets\/img\/android-chrome-192x192.png",
-			"sizes": "192x192",
-			"type": "image\/png",
-			"density": "4.0"
-		}
-	]
-}

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/mstile-144x144.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/mstile-144x144.png b/npm-search/assets/img/mstile-144x144.png
deleted file mode 100644
index d648b83..0000000
Binary files a/npm-search/assets/img/mstile-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/mstile-150x150.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/mstile-150x150.png b/npm-search/assets/img/mstile-150x150.png
deleted file mode 100644
index 3e2de8a..0000000
Binary files a/npm-search/assets/img/mstile-150x150.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/mstile-310x150.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/mstile-310x150.png b/npm-search/assets/img/mstile-310x150.png
deleted file mode 100644
index 636fa5e..0000000
Binary files a/npm-search/assets/img/mstile-310x150.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/mstile-310x310.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/mstile-310x310.png b/npm-search/assets/img/mstile-310x310.png
deleted file mode 100644
index 17bc907..0000000
Binary files a/npm-search/assets/img/mstile-310x310.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/mstile-70x70.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/mstile-70x70.png b/npm-search/assets/img/mstile-70x70.png
deleted file mode 100644
index 6b4314f..0000000
Binary files a/npm-search/assets/img/mstile-70x70.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/pluggy.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/pluggy.png b/npm-search/assets/img/pluggy.png
deleted file mode 100644
index 1317585..0000000
Binary files a/npm-search/assets/img/pluggy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/search.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/search.png b/npm-search/assets/img/search.png
deleted file mode 100644
index 9fb799b..0000000
Binary files a/npm-search/assets/img/search.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/shadow.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/shadow.png b/npm-search/assets/img/shadow.png
deleted file mode 100644
index 8c5ba5f..0000000
Binary files a/npm-search/assets/img/shadow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/img/sprite.png
----------------------------------------------------------------------
diff --git a/npm-search/assets/img/sprite.png b/npm-search/assets/img/sprite.png
deleted file mode 100644
index 7195426..0000000
Binary files a/npm-search/assets/img/sprite.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/js/app.js
----------------------------------------------------------------------
diff --git a/npm-search/assets/js/app.js b/npm-search/assets/js/app.js
deleted file mode 100644
index 278f5ef..0000000
--- a/npm-search/assets/js/app.js
+++ /dev/null
@@ -1,493 +0,0 @@
-var React    = window.React = require('react'), // assign it to window for react chrome extension
-    classNames = require('classnames'),
-    App = {};
-
-var Constants = {
-    DownloadCountBatch: 100,
-    NpmSearchInitialSize: 500
-}
-
-var OfficialPlugin = React.createClass({
-    render: function() {
-        return (
-            <div id="featured"></div>
-        );
-    }
-});
-
-var PlatformButton = React.createClass({
-    onClick: function() {
-        var appInstance = React.render(<App />, document.getElementById('container'));
-        appInstance.addCondition("platform:" + this.props.platform);
-    },
-    render: function() {
-        return (
-            <li className = "clickable" onClick={this.onClick}> {this.props.platform} </li>
-        );
-    }
-});
-
-var SupportedPlatforms = React.createClass({
-    getInitialState: function() {
-        return {
-            moreClicked: false
-        };
-    },
-    onClick: function() {
-        this.setState({
-            moreClicked: true
-        });
-    },
-    render: function() {
-        var keywords = this.props.keywords;
-        var sortedMajorPlatforms = [{present:false, text: "Android"}, {present:false, text: "iOS"}, {present:false, text: "Windows"}, {present:false, text: "Blackberry10"}];
-        var majorPlatformsSupported = [];
-        var otherPlatformsSupported = [];
-        // remove windows8 & windows dupe
-        if (keywords.indexOf('cordova-windows') > -1 && keywords.indexOf('cordova-windows8') > -1) {
-            keywords.splice(keywords.indexOf('cordova-windows8'), 1);
-        }
-        keywords.forEach(function(keyword) {
-            switch (keyword) {
-                case 'cordova-firefoxos':
-                    otherPlatformsSupported.push(<PlatformButton platform="FirefoxOS" />);
-                    break;
-                case 'cordova-android':
-                    sortedMajorPlatforms[0].present = true;
-                    break;
-                case 'cordova-amazon-fireos':
-                    otherPlatformsSupported.push(<PlatformButton platform="FireOS" />);
-                    break;
-                case 'cordova-ubuntu':
-                    otherPlatformsSupported.push(<PlatformButton platform="Ubuntu" />);
-                    break;
-                case 'cordova-ios':
-                    sortedMajorPlatforms[1].present = true;
-                    break;
-                case 'cordova-blackberry10':
-                    sortedMajorPlatforms[3].present = true;
-                    break;
-                case 'cordova-wp8':
-                    otherPlatformsSupported.push(<PlatformButton platform="Windows Phone 8" />);
-                    break;
-                case 'cordova-windows8':
-                case 'cordova-windows':
-                    sortedMajorPlatforms[2].present = true;
-                    break;
-                case 'cordova-browser':
-                    otherPlatformsSupported.push(<PlatformButton platform="Browser" />);
-                    break;
-            }
-        });
-
-        sortedMajorPlatforms.forEach(function(platform) {
-            if(platform.present) {
-                majorPlatformsSupported.push(<PlatformButton platform={platform.text} />)
-            }
-        });
-        while(majorPlatformsSupported.length < 4 && otherPlatformsSupported.length > 0) {
-            majorPlatformsSupported.push(otherPlatformsSupported.shift());
-        }
-
-        var moreButton;
-        if(otherPlatformsSupported.length > 0 && !this.state.moreClicked) {
-            moreButton = <li className="clickable" onClick={this.onClick}>...</li>
-        }
-        if (!this.state.moreClicked) {
-            otherPlatformsSupported = null;
-        }
-        return (
-            <ul className="supportedPlatforms">
-                {majorPlatformsSupported}
-                {moreButton}
-                {otherPlatformsSupported}
-            </ul>
-        );
-    }
-});
-
-var SearchBar = React.createClass({
-    handleChange: function() {
-        this.props.onUserInput(
-            this.refs.filterTextInput.getDOMNode().value
-        )
-    },
-    render: function() {
-        return (
-            <div className="col-xs-offset-2 col-xs-8">
-                <div id="searchwrapper">
-                    <input
-                        className="searchBox"
-                        type="search"
-                        autoComplete="off"
-                        placeholder={this.props.placeHolderText}
-                        value={this.props.filterText}
-                        ref="filterTextInput"
-                        onChange={this.handleChange}
-                    />
-                </div>
-            </div>
-        );
-    }
-});
-
-var Plugin = React.createClass({
-    shouldComponentUpdate: function(nextProps, nextState) {
-        return this.props.plugin !== nextProps.plugin;
-    },
-    render: function() {
-        var license = this.props.plugin.license;
-        if (license && license.length > 1) {
-            license = license[0];
-        }
-        var downloadField;
-
-        var classes = classNames({
-            'pluginCard': true,
-            'featuredPlugin': this.props.plugin.isOfficial,
-            'row': true
-        });
-
-        if(this.props.plugin.downloadCount) {
-            var downloadCount = this.props.plugin.downloadCount.toLocaleString();
-            downloadField = <p><small> {downloadCount} downloads last month</small></p>;
-        }
-        return (
-            <li>
-                <div className={classes}>
-                    <div className="primaryContent col-xs-9">
-                        <div className="header">
-                            <h3><a href={'https://www.npmjs.com/package/' + this.props.plugin.name} target="_blank">{this.props.plugin.name}</a></h3>
-                            <small className="pluginVersion">v{this.props.plugin.version}</small>
-                            <small> by </small>
-                            <small className="pluginAuthor">{this.props.plugin.author}</small>
-                        </div>
-                        <div className="pluginDesc">{this.props.plugin.description}</div>
-                        <SupportedPlatforms keywords={this.props.plugin.keywords}/>
-                        </div>
-                        <div className="secondaryContent col-xs-3">
-                        <div className="download">
-                            <p></p>
-                        </div>
-                        <div className="extraInfo">
-                            <p><small><strong>License:</strong> {license}</small></p>
-                            {downloadField}
-                            <p><small><em>Last updated {this.props.plugin.modified} days ago</em></small></p>
-                        </div>
-                    </div>
-                </div>
-            </li>
-        )
-    }
-});
-
-var timer=null;
-
-window.addEventListener('popstate', function(e) {
-    if(e.state) {
-        var appInstance = React.render(<App />, document.getElementById('container'));
-        appInstance.loadFilterText(e.state.filterText);
-    }
-});
-
-var PluginList = React.createClass({
-    statics: {
-        contains: function(values, pluginInfo) {
-            var allValuesPresent = true;
-            if(values.length == 0) {
-                return allValuesPresent;
-            }
-            if(!pluginInfo) {
-                return false;
-            }
-            values.forEach(function(value) {
-                var valuePresent = false;
-                for(var index=0; index < pluginInfo.length; index++) {
-                    if(pluginInfo[index] && pluginInfo[index].toLowerCase().indexOf(value) > -1) {
-                        valuePresent = true;
-                    }
-                }
-                if(!valuePresent) {
-                    allValuesPresent = false;
-                }
-            });
-            return allValuesPresent;
-        },
-        populateFilters: function(filterText)
-        {
-            var searchStrings = filterText.split(" ");
-            var filters = [];
-            filters['platforms'] = [];
-            filters['authors'] = [];
-            filters['licenses'] = [];
-            filters['searchWords'] = [];
-
-            searchStrings.forEach(function(searchString) {
-                var keywords = searchString.split(":");
-                if(keywords.length == 1) {
-                    var param = keywords[0].trim();
-                    if(param) {
-                        filters['searchWords'].push(param);
-                    }
-                }
-                else if(keywords[1].trim()) {
-                    var param = keywords[1].trim();
-                    switch(keywords[0]) {
-                        case 'platform':
-                            filters['platforms'].push(param);
-                            break;
-                        case 'author':
-                            filters['authors'].push(param);
-                            break;
-                        case 'license':
-                            filters['licenses'].push(param);
-                            break;
-                        default:
-                            filters['searchWords'].push(searchString);
-                    }
-                }
-                else {
-                    filters['searchWords'].push(searchString);
-                }
-            });
-            return filters;
-        }
-    },
-    render: function() {
-        var plugins = [],
-            filterText = this.props.filterText.toLowerCase();
-
-        var delay = (function(){
-          return function(callback, ms){
-            clearTimeout (timer);
-            timer = setTimeout(callback, ms);
-          };
-        })();
-
-        delay(function(){
-                    window.history.pushState({"filterText":filterText}, "", "?q=" + filterText);
-            }, 2000 );
-
-        var filters = PluginList.populateFilters(filterText);
-
-        this.props.plugins.forEach(function(plugin) {
-            var fullPluginText = plugin.name.concat(plugin.author, plugin.keywords, plugin.license, plugin.description);
-            if(PluginList.contains(filters['platforms'], plugin.keywords)
-                && PluginList.contains(filters['authors'], plugin.author)
-                && PluginList.contains(filters['licenses'], plugin.license)
-                && PluginList.contains(filters['searchWords'], fullPluginText)) {
-                    plugins.push(<Plugin plugin={plugin} key={plugin.author + plugin.name}/>);
-            }
-        }.bind(this));
-        return (
-            <div className="col-xs-offset-2 col-xs-8">
-                <ul className="pluginList">
-                    {plugins}
-                </ul>
-            </div>
-        );
-    }
-});
-
-
-var App = React.createClass({
-    getInitialState: function() {
-        return {
-            plugins: [],
-            filterText: '',
-            placeHolderText: 'Loading...'
-        };
-    },
-    handleUserInput: function(filterText) {
-        this.setState({
-            filterText: filterText
-        });
-    },
-    addCondition: function(condition) {
-        this.setState(function(previousState, currentProps) {
-            if(previousState.filterText.indexOf(condition) > -1) {
-                return {
-                    filterText: previousState.filterText,
-                    plugins: previousState.plugins
-                };
-            }
-            else {
-                return {
-                    filterText: previousState.filterText.trim() + ' ' + condition + ' ',
-                    plugins: previousState.plugins
-                };
-            }
-        });
-    },
-    loadFilterText : function(filterText) {
-        this.setState(function(previousState, currentProps) {
-            return {
-                filterText: filterText,
-                plugins: previousState.plugins
-            };
-        });
-    },
-    statics: {
-        getURLParameter : function(name) {
-            return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)
-                ||[,""])[1].replace(/\+/g, '%20'))||null;
-        },
-        shallowCopy: function(src) {
-            var dst = {};
-            for(var i in src) {
-                if(src.hasOwnProperty(i)) {
-                    dst[i] = src[i];
-                }
-            }
-            return dst;
-        }
-    },
-    componentDidMount: function() {
-        var plugins = [],
-            officialPlugins = require('./official-plugins.json').plugins,
-            blacklistedPlugins = require('./blacklisted-plugins.json').plugins,
-            pluginCount = 0,
-            self = this,
-            queryHost = "http://npmsearch.com/query",
-            queryFields = "fields=name,keywords,license,description,author,modified,homepage,version",
-            queryKeywords = "q=keywords:%22ecosystem:cordova%22",
-            queryInitialSize = Constants.NpmSearchInitialSize;
-
-        xhrRequest(queryHost + "?" + queryFields + "&" + queryKeywords + "&size=" + queryInitialSize + "&start=0", function(xhrResult) {
-            plugins = xhrResult.results;
-            pluginCount = xhrResult.total;
-            if (pluginCount <= queryInitialSize) {
-                processPlugins.bind(self, officialPlugins, plugins)();
-            } else {
-                xhrRequest(queryHost + "?" + queryFields + "&" + queryKeywords + "&size=" + (pluginCount - queryInitialSize) + "&start=" + queryInitialSize, function(xhrResult) {
-                        plugins = [].concat(plugins, xhrResult.results);
-                        processPlugins.bind(self, officialPlugins, plugins)();
-                }, function() { console.log('xhr err'); });
-            }
-        }, function() { console.log('xhr err'); });
-
-        var getDownloadCount = function(plugins, that) {
-            var packageNames = "";
-            for(var index=0; index < plugins.length; index++) {
-                packageNames += plugins[index].name + ",";
-                if(index % Constants.DownloadCountBatch === 0 || index === plugins.length -1) {
-                    xhrRequest("https://api.npmjs.org/downloads/point/last-month/" + packageNames, function(xhrResult) {
-                        for(var j = 0; j < plugins.length; j++) {
-                            if(xhrResult[plugins[j].name]) {
-                                plugins[j] = App.shallowCopy(plugins[j]);
-                                plugins[j].downloadCount = xhrResult[plugins[j].name].downloads;
-                            }
-                        }
-                        that.setState({
-                            plugins: plugins
-                        });
-                    }.bind(self), function() { console.log('xhr err'); });
-                    packageNames = "";
-                }
-            }
-        }
-
-        function processPlugins(officialPlugins, plugins) {
-            var pluginCount = plugins.length,
-                dateNow = new Date(),
-                oneDay = 1000*60*60*24;
-
-            officialPlugins.forEach(function(plugin) {
-                for (var i = 0; i < plugins.length; i++) {
-                    // Check if plugin name is in official list
-                    if (plugins[i].name[0] === plugin) {
-                        plugins[i].isOfficial = true;
-                        return;
-                    }
-                };
-            });
-
-            for(var i = plugins.length -1; i >= 0 ; i--)
-            {
-                for(var j = 0; j < blacklistedPlugins.length; j++)
-                {
-                    if(plugins[i].name[0] === blacklistedPlugins[j])
-                    {
-                        plugins.splice(i, 1);
-                        break;
-                    }
-                }
-            }
-
-            for (var i = 0; i < plugins.length; i++) {
-                // Calculate last time plugin is modified (in days)
-                plugins[i].modified = Math.ceil((dateNow - new Date(plugins[i].modified)) / oneDay);
-            };
-
-            if (this.isMounted()) {
-                var q = App.getURLParameter('q');
-                if(q) {
-                    this.setState({
-                        plugins: plugins,
-                        filterText: q
-                    });
-                }
-                else {
-                    this.setState({
-                        plugins: plugins,
-                        placeHolderText: 'Search ' + pluginCount + ' plugins...'
-                    });
-                }
-                getDownloadCount(plugins,this);
-            }
-        }
-    },
-    render: function() {
-        return (
-            <div>
-                <div className="row" id="headerBackground">
-                    <div className="col-xs-offset-2 col-xs-8">
-                        <div id="topContent" className="row">
-                            <div className="col-xs-3">
-                                <div id="pluggy"></div>
-                            </div>
-                            <div className="col-xs-9">
-                                <h1><p className="discover-message">Search Cordova Plugins</p></h1>
-                            </div>
-                        </div>
-                    </div>
-                    <SearchBar
-                        filterText={this.state.filterText}
-                        placeHolderText={this.state.placeHolderText}
-                        onUserInput={this.handleUserInput}
-                    />
-                </div>
-                <div className="row">
-                    <PluginList
-                        plugins={this.state.plugins}
-                        filterText={this.state.filterText}
-                    />
-                </div>
-            </div>
-        );
-    }
-});
-
-App.start = function() {
-    React.render(<App />, document.getElementById('container'));
-};
-
-function xhrRequest(url, success, fail) {
-    var xhr = new XMLHttpRequest();
-    xhr.onreadystatechange = function() {
-        if (xhr.readyState == XMLHttpRequest.DONE ) {
-            if(xhr.status == 200){
-                success(JSON.parse(xhr.responseText));
-                return;
-            } else {
-                fail();
-                return;
-            }
-        }
-    }.bind(this)
-    xhr.open("GET", url, true);
-    xhr.send();
-}
-
-
-module.exports = window.App = App;

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/js/blacklisted-plugins.json
----------------------------------------------------------------------
diff --git a/npm-search/assets/js/blacklisted-plugins.json b/npm-search/assets/js/blacklisted-plugins.json
deleted file mode 100644
index f0108ab..0000000
--- a/npm-search/assets/js/blacklisted-plugins.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "plugins" : [
-        "cordova-wp8",
-        "cordova-wp8-testtest",
-        "cordova-app-hello-world"
-    ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/assets/js/official-plugins.json
----------------------------------------------------------------------
diff --git a/npm-search/assets/js/official-plugins.json b/npm-search/assets/js/official-plugins.json
deleted file mode 100644
index d220cfb..0000000
--- a/npm-search/assets/js/official-plugins.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "plugins" : [
-        "cordova-plugin-battery-status",
-        "cordova-plugin-camera",
-        "cordova-plugin-console",
-        "cordova-plugin-contacts",
-        "cordova-plugin-device",
-        "cordova-plugin-device-motion",
-        "cordova-plugin-device-orientation",
-        "cordova-plugin-dialogs",
-        "cordova-plugin-file",
-        "cordova-plugin-file-transfer",
-        "cordova-plugin-geolocation",
-        "cordova-plugin-globalization",
-        "cordova-plugin-inappbrowser",
-        "cordova-plugin-legacy-whitelist",
-        "cordova-plugin-media",
-        "cordova-plugin-media-capture",
-        "cordova-plugin-ms-appinsights",
-        "cordova-plugin-network-information",
-        "cordova-plugin-splashscreen",
-        "cordova-plugin-statusbar",
-        "cordova-plugin-vibration",
-        "cordova-plugin-whitelist"
-    ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/build/.gitkeep
----------------------------------------------------------------------
diff --git a/npm-search/build/.gitkeep b/npm-search/build/.gitkeep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/developers.html
----------------------------------------------------------------------
diff --git a/npm-search/developers.html b/npm-search/developers.html
deleted file mode 100644
index 59f6e1c..0000000
--- a/npm-search/developers.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
-    <title>Cordova Search Website</title>
-    <link rel="stylesheet" href="build/styles.css" />
-  </head>
-
-  <body>
-    <div id="header">
-      <div class="wrap">
-          <a class="logo" href="//cordova.apache.org/"></a>
-          <div class="menu">
-              <a href="index.html">Home</a>
-              <a href="developers.html">Developers</a>
-              <a href="faq.html">FAQ</a>
-          </div>
-          <form class="menu-dropdown">
-              <select onchange="location = this.options[this.selectedIndex].value;">
-                  <option value="index.html">Home</option>
-                  <option value="developers.html">Developers</option>
-                  <option value="faq.html">FAQ</option>
-              </select>
-          </form>
-      </div>
-      <div class="shadow"></div>
-    </div>
-    <div class="header-placeholder"></div>
-    <div class="wrap">
-      <h2 class="icon icon-about">npm Plugin Search for Plugin Developers</h2>
-      <h4>How do I add a new plugin to Plugin Search?</h4>
-      <p>If you want your Cordova Plugin to show up in search, simply add <code>ecosystem:cordova</code> keyword to the <code>package.json</code> file of your plugin and publish it to npm registry.</p>
-      <h4>How can I tag supported platforms for my plugin?</h4>
-      <p>Similar to <code>ecosystem:cordova</code>, platform support too uses keywords. Just add the platform name prefixed with "<strong>cordova-</strong>" to plugins list of keywords. E.g.</p>
-      <pre><code>  "keywords": [
-          "ecosystem:cordova",
-          "cordova-android",
-          "cordova-ios",
-          "cordova-windows"
-        ]</code></pre>
-      <h4>My plugin is in plugins.cordova.io but I want to publish to npm. How do I do that?</h4>
-      <ol>
-        <li>
-          <strong>Optional</strong> Decide if you want to change your plugin’s id. If you decide to change it,
-          <ol>
-            <li>Update the id in plugin.xml and update your readme with the new id.</li>
-            <li>Send a pull request adding your new id and old id to Cordova Registry Mapper.</li>
-            <li>We integrate that module into the Cordova CLI to warn users to use the new id when adding plugins to their projects.</li>
-          </ol>
-        </li>
-        <li>Add a <code>package.json</code> to your plugins,
-          <ul>
-            <li>
-              <strong>Note</strong>: To keep things simple, please make sure your <code>id</code> in <code>plugin.xml</code> is the same as your <code>package-name</code> in <code>package.json</code>.</li>
-            <li>Use <code>plugman createpackagejson [PLUGIN DIRECTORY]</code> to create <code>package.json</code>.
-              <ul>
-                <li>This will create defaults based on existing values in your <code>plugin.xml</code>.</li>
-                <li>It will also automatically add the keyword <code>ecosystem:cordova</code> to your newly generated package.json file.</li>
-                <li>In addition, a cordova key will be added to your <code>package.json</code> which we plan to use in future updates of the tooling.</li>
-              </ul>
-            </li>
-            <li>View the <code>package.json</code> of <a href="https://github.com/apache/cordova-plugin-device/blob/master/package.json" target="_blank">cordova-plugin-device</a> to see an example of what your <code>package.json</code> should look like after running <code>plugman createpackagejson [PLUGIN DIRECTORY]</code> command.</li>
-            <li>Plugins still require a <code>plugin.xml</code> to be installed into <strong>Cordova</strong> projects.</li>
-          </ul>
-        </li>
-        <li>Publish your plugin to npm using the <code>npm publish [PLUGIN DIRECTORY]</code>.</li>
-      </ol>
-      <h4>Are there any additional documents to assist me with plugins?</h4>
-      <p>Yes there are. Please take a look at <a href="http://cordova.apache.org/docs/en/edge/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide" target="_blank">Plugin Development Guide</a> for a more detailed guide.</p>
-      <h4>I don't like X. How can I help improve the website?</h4>
-      <p>You can help improving this site by opening bugs on <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20%22Registry%20Web%22" target="_blank">JIRA</a> or by sending PRs on <a href="https://github.com/apache/cordova-registry-web" target="_blank">GitHub</a>.</p>
-    </div>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/faq.html
----------------------------------------------------------------------
diff --git a/npm-search/faq.html b/npm-search/faq.html
deleted file mode 100644
index 0f97e9c..0000000
--- a/npm-search/faq.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
-    <title>Cordova Search Website</title>
-    <link rel="stylesheet" href="build/styles.css" />
-  </head>
-
-  <body>
-    <div id="header">
-      <div class="wrap">
-          <a class="logo" href="//cordova.apache.org/"></a>
-          <div class="menu">
-              <a href="index.html">Home</a>
-              <a href="developers.html">Developers</a>
-              <a href="faq.html">FAQ</a>
-          </div>
-          <form class="menu-dropdown">
-              <select onchange="location = this.options[this.selectedIndex].value;">
-                  <option value="index.html">Home</option>
-                  <option value="developers.html">Developers</option>
-                  <option value="faq.html">FAQ</option>
-              </select>
-          </form>
-      </div>
-      <div class="shadow"></div>
-    </div>
-    <div class="header-placeholder"></div>
-    <div class="wrap">
-      <h2 class="icon icon-about">npm Plugin Search FAQ</h2>
-      <h4>What is npm Plugin Search?</h4>
-      <p>On April 21 2015, Cordova team announced plans to move core and 3rd party plugins to npm ecosystem. npm Plugin Search page offers an easy and user friendly way to browse plugins that have completed this transition.</p>
-      <h4>What version of Cordova do I need to use npm?</h4>
-      <p>To start using plugins from npm, Cordova CLI version 5.0.0 or higher is required.</p>
-      <h4>How do I install plugins from npm?</h4>
-      <p>Cordova team decided to change official plugin IDs from org.apache.cordova.* to cordova-plugin-* to better fit within the npm ecosystem. Developers can install a plugin using the command <code>cordova plugin add cordova-plugin-device</code>.</p>
-      <h4>How do I know which platforms are supported for a plugin?</h4>
-      <p>Plugin Search displays plugins in form of cards. Each card contains important information about the plugin. Supported platforms is represented in form of platform tags. </p>
-      <h4>How can I identify official core plugins?</h4>
-      <p>Core plugins have a blue strip on the left side of their card.</p>
-      <h4>Can I still download plugins if I'm using Cordova CLI 4.3.0 or lower?</h4>
-      <p>Yes! You can use Cordova Plugins from the <a href="http://plugins.cordova.io/" target="_blank">old plugin registry</a>.</p>
-      <h4>What’s happening to the old plugin registry?</h4>
-      <p>See Cordova <a href="http://cordova.apache.org/announcements/2015/04/21/plugins-release-and-move-to-npm.html" target="_blank">blog</a> for more details. It’s being phased out:</p>
-      <ul>
-      <li>  Read-only after July 15th</li>
-      <li>  End of support after October 15th</li>
-      </ul>
-      <h4>Are there any additional documents to assist me with plugins?</h4>
-      <p>Yes there are. Please take a look at <a href="http://cordova.apache.org/docs/en/edge/guide_cli_index.md.html#The%20Command-Line%20Interface_add_plugin_features" target="_blank">Add Plugin Features</a> for a more detailed guide.</p>
-      <h4>I don't like X. How can I help improve the website?</h4>
-      <p>You can help improving this site by opening bugs on <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20%22Registry%20Web%22" target="_blank">JIRA</a> or by sending PRs on <a href="https://github.com/apache/cordova-registry-web" target="_blank">GitHub</a>.</p>
-    </div>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/index.html
----------------------------------------------------------------------
diff --git a/npm-search/index.html b/npm-search/index.html
deleted file mode 100644
index d300a4e..0000000
--- a/npm-search/index.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
-    <meta name='description' content='This website is used to search the apache cordova plugins hosted on npm. The plugins can be searched across titles, descriptions, authors, platforms and licenses. You can also view the download counts for each plugin. The page also displays platforms supported, version and last updated day for the cordova plugins.'>
-    <title>Cordova Plugin NPM Search</title>
-    <link rel="stylesheet" href="build/styles.css" />
-    <link rel="apple-touch-icon" sizes="57x57" href="assets/img/apple-touch-icon-57x57.png">
-    <link rel="apple-touch-icon" sizes="60x60" href="assets/img/apple-touch-icon-60x60.png">
-    <link rel="apple-touch-icon" sizes="72x72" href="assets/img/apple-touch-icon-72x72.png">
-    <link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-touch-icon-76x76.png">
-    <link rel="apple-touch-icon" sizes="114x114" href="assets/img/apple-touch-icon-114x114.png">
-    <link rel="apple-touch-icon" sizes="120x120" href="assets/img/apple-touch-icon-120x120.png">
-    <link rel="apple-touch-icon" sizes="144x144" href="assets/img/apple-touch-icon-144x144.png">
-    <link rel="apple-touch-icon" sizes="152x152" href="assets/img/apple-touch-icon-152x152.png">
-    <link rel="apple-touch-icon" sizes="180x180" href="assets/img/apple-touch-icon-180x180.png">
-    <link rel="icon" type="image/png" href="assets/img/favicon-32x32.png" sizes="32x32">
-    <link rel="icon" type="image/png" href="assets/img/android-chrome-192x192.png" sizes="192x192">
-    <link rel="icon" type="image/png" href="assets/img/favicon-96x96.png" sizes="96x96">
-    <link rel="icon" type="image/png" href="assets/img/favicon-16x16.png" sizes="16x16">
-    <link rel="manifest" href="assets/img/manifest.json">
-    <link rel="shortcut icon" href="assets/img/favicon.ico">
-    <meta name="msapplication-TileColor" content="#da532c">
-    <meta name="msapplication-TileImage" content="assets/img/mstile-144x144.png">
-    <meta name="msapplication-config" content="assets/img/browserconfig.xml">
-    <meta name="theme-color" content="#ffffff">
-  </head>
-
-  <body>
-    <div id="header">
-      <div class="wrap">
-          <a class="logo" href="//cordova.apache.org/"></a>
-          <div class="menu">
-              <a href="index.html">Home</a>
-              <a href="developers.html">Developers</a>
-              <a href="faq.html">FAQ</a>
-          </div>
-          <form class="menu-dropdown">
-              <select onchange="location = this.options[this.selectedIndex].value;">
-                  <option value="index.html">Home</option>
-                  <option value="developers.html">Developers</option>
-                  <option value="faq.html">FAQ</option>
-              </select>
-          </form>
-      </div>
-      <div class="shadow"></div>
-    </div>
-    <div class="header-placeholder"></div>
-    <div id="container"></div>
-    <script src="build/app.js"></script>
-    <script>
-      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-      ga('create', 'UA-64283057-2', 'auto');
-      ga('send', 'pageview');
-    </script>
-    <script>App.start();</script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/npm-search/src/css/base.css
----------------------------------------------------------------------
diff --git a/npm-search/src/css/base.css b/npm-search/src/css/base.css
new file mode 100644
index 0000000..c58ef95
--- /dev/null
+++ b/npm-search/src/css/base.css
@@ -0,0 +1,428 @@
+body {
+  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+  font-size: 16px;
+  margin: 0;
+}
+
+h2 {
+    padding: 48px 0;
+    font-size: 34px;
+}
+
+/*---------------------------------------------------
+    Pluggy and msg
+---------------------------------------------------*/
+#headerBackground {
+  background: url('../img/grid.png');
+}
+
+#topContent {
+  margin-top: 25px;
+}
+
+#pluggy {
+  background: transparent url('../img/pluggy.png') no-repeat center;
+  background-size: contain;
+  height: 200px;
+  margin-left: 25px;
+}
+
+.discover-message {
+  background-color: white;
+  font-size: 56px;
+  margin: 25px 5px 5px 5px;
+  text-align: left;
+  display: inline-block;
+  padding: 0px 8px;
+  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+}
+
+/*---------------------------------------------------
+    Searchbox
+---------------------------------------------------*/
+
+#searchwrapper {
+  margin: 25px 0px;
+  border: 2px solid gray;
+  background-color: white;
+}
+
+#searchwrapper .searchBox {
+  display: block;
+  height: 35px;
+  width: 100%;
+  border: 0;
+  background: none;
+  outline: 0;
+  font-size: 14px;
+  padding: 0 5px 0 35px;
+  color: #363636;
+  background: url('../img/search.png') no-repeat;
+  background-position: 5.5px 5.5px;
+}
+
+#supportedPlatforms div {
+  margin: 12px 2px 2px 0;
+  border: 1px solid #363636;
+  border-radius: 8px;
+  padding: .4em .5em;
+  height: 11px;
+  font-size: 11px;
+  line-height: 11px;
+  display: inline-block;
+  align-items: center;
+
+}
+
+/*---------------------------------------------------
+    Plugin List
+---------------------------------------------------*/
+
+.pluginList {
+  list-style-type: none;
+  padding: 0px;
+}
+
+.pluginList li {
+  margin: 0 0 60px 0;
+}
+
+/*---------------------------------------------------
+    PluginCards
+---------------------------------------------------*/
+.pluginCard {
+  position: relative;
+  border: 1px solid #CDCDCD;
+  background: white;
+  min-height: 10em;
+  height: 10em;
+}
+
+.pluginCard:after {
+  z-index: -1;
+  position: absolute;
+  content: "";
+  bottom: 18px;
+  right: 2px;
+  left: auto;
+  width: 50%;
+  top: 80%;
+  max-width:300px;
+  background: #777;
+  -webkit-box-shadow: 0 15px 10px #777;
+  -moz-box-shadow: 0 15px 10px #777;
+  box-shadow: 0 15px 10px #777;
+  -webkit-transform: rotate(3deg);
+  -moz-transform: rotate(3deg);
+  -o-transform: rotate(3deg);
+  -ms-transform: rotate(3deg);
+  transform: rotate(3deg);
+}
+
+.pluginCard h3 {
+  margin: 0.2em 0.2em 0.4em 0em;
+  font-size: 1.5em;
+  display: inline-block;
+}
+
+.pluginCard a:link,
+.pluginCard a:visited {
+  text-decoration: none;
+  color: #404D58;
+}
+
+.pluginCard a:hover,
+.pluginCard a:active {
+  text-decoration: underline;
+}
+
+.featuredPlugin {
+  -webkit-box-shadow: -3px 0px 0px #4CC2E4;
+  -moz-box-shadow: -3px 0px 0px #4CC2E4;
+  box-shadow: -3px 0px 0px #4CC2E4;
+  border-left-width: 0px;
+}
+
+.pluginCardContents {
+  border: 1px solid #363636;
+  margin-bottom: 10px;
+  position: relative;
+  background: white;
+}
+
+.primaryContent {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+}
+
+.primaryContent .header small {
+  color: #83878B;
+}
+
+.primaryContent .pluginAuthor {
+  font-weight: bold;
+}
+
+.primaryContent .pluginDesc {
+  -webkit-flex-grow: 1;
+  flex-grow: 1;
+  font-size: 1em;
+  color: #404040;
+}
+
+.supportedPlatforms {
+  list-style-type: none;
+  padding: 5px 0px;
+  font-size: 0.8em;
+}
+
+.supportedPlatforms li {
+  margin: 0 5px 0 0;
+  display: inline-block;
+  border: 1px solid #F2F2F2;
+  padding: 2px 10px;
+  color: #7A828B;
+}
+
+.secondaryContent {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  text-align: right;
+  font-size: 0.9em;
+  color: #7A828B;
+}
+
+.download {
+  -webkit-flex-grow: 1;
+  flex-grow: 1;
+}
+
+.extraInfo p {
+margin-top: 2px;
+margin-bottom: 2px;
+}
+
+.clickable {
+  cursor: pointer;
+}
+
+/*---------------------------------------------------
+    Misc
+---------------------------------------------------*/
+
+.icon {
+  background: url('../img/sprite.png') no-repeat;
+  background-position: 0 -220px;
+  padding-left: 78px;
+}
+.icon-about {
+  background-position: 0 -220px;
+}
+
+/*---------------------------------------------------
+    Layout - Header
+---------------------------------------------------*/
+#wrap,
+.wrap {
+  width: 1008px;
+  margin: 0 auto;
+  position: relative;
+}
+
+.header-placeholder {
+  height: 90px;
+}
+#header {
+  height: 90px;
+  position: fixed;
+  z-index: 10;
+  left: 0;
+  right: 0;
+  background: #fff;
+  border-bottom: 1px solid #ddd;
+}
+#header .shadow {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: -3px;
+  height: 3px;
+  background: url('../img/shadow.png');
+}
+
+.logo,
+.closing {
+  background: url('../img/sprite.png') no-repeat;
+  -webkit-transition: background 0.25s linear;
+  -moz-transition: background 0.25s linear;
+  transition: background 0.25s linear;
+  background-color: #3b4854;
+  background-position: 0 0px;
+  position: absolute;
+  left: 0;
+  top: 5px;
+  width: 220px;
+  height: 75px;
+}
+.logo:hover {
+  background-color: #4cc2e4;
+}
+.menu {
+  padding: 16px 0;
+  float: right;
+}
+.menu a {
+  text-decoration: none;
+  -webkit-transition: background 0.25s linear;
+  -moz-transition: background 0.25s linear;
+  transition: background 0.25s linear;
+  padding: 8px;
+  margin: 0 8px;
+  line-height: 55px;
+}
+.menu a:hover,
+.menu a:link,
+.menu a:visited {
+  color: #4cc2e4;
+}
+.menu-dropdown {
+  display: none;
+  position: absolute;
+  right: 16px;
+  top: 32px;
+  width: 40%;
+}
+.menu-dropdown select {
+  width: 100%;
+}
+
+/*---------------------------------------------------
+    Code
+---------------------------------------------------*/
+pre, code {
+  font-size: 12px;
+  font-family: Consolas, "Liberation Mono", Courier, monospace;
+}
+
+code {
+  margin: 0 0px;
+  padding: 0px 0px;
+  white-space: nowrap;
+  border: 1px solid #eaeaea;
+  background-color: #f8f8f8;
+  border-radius: 3px;
+}
+
+pre>code {
+  margin: 0;
+  padding: 0;
+  white-space: pre;
+  border: none;
+  background: transparent;
+}
+
+pre {
+  background-color: #f8f8f8;
+  border: 1px solid #ccc;
+  font-size: 13px;
+  line-height: 19px;
+  overflow: auto;
+  padding: 6px 10px;
+  border-radius: 3px;
+}
+
+pre code {
+  background-color: transparent;
+  border: none;
+}
+
+
+/*---------------------------------------------------
+    Mobile
+---------------------------------------------------*/
+@media all and (max-width: 1024px) {
+  #wrap,
+  .wrap {
+    width: auto;
+    margin-left: 24px;
+    margin-right: 24px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 890px) {
+  h2 {
+    font-size: 24px;
+    padding-top: 54px;
+  }
+  .menu {
+    display: none;
+  }
+  .menu-dropdown {
+    display: block;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 720px) {
+  h2 {
+    font-size: 22px;
+    padding-top: 54px;
+  }
+  .menu-dropdown {
+    top: 16px;
+  }
+  #header,
+  .header-placeholder {
+    height: 52px;
+  }
+  .logo {
+    top: 7px;
+    width: 110px;
+    height: 37px;
+    background-size: 112px 425px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 585px) {
+  h2 {
+    letter-spacing: 0;
+  }
+  .wrap {
+    margin-left: 12px;
+    margin-right: 12px;
+  }
+  .icon {
+    background-size: 112px 425px;
+    padding: 20px 48px 20px 48px;
+    overflow: hidden;
+    display: block;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .icon-about {
+    background-position: 0 -110px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 440px) {
+  .icon {
+    padding: 22px 16px 20px 35px;
+  }
+    h2 {
+    font-size: 20px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


[4/6] cordova-registry-web git commit: Extend grunt, add more structure, fix bugs

Posted by mu...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/android-chrome-192x192.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/android-chrome-192x192.png b/attachments/npm/build/img/android-chrome-192x192.png
deleted file mode 100644
index 02d4821..0000000
Binary files a/attachments/npm/build/img/android-chrome-192x192.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/android-chrome-36x36.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/android-chrome-36x36.png b/attachments/npm/build/img/android-chrome-36x36.png
deleted file mode 100644
index 191972f..0000000
Binary files a/attachments/npm/build/img/android-chrome-36x36.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/android-chrome-48x48.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/android-chrome-48x48.png b/attachments/npm/build/img/android-chrome-48x48.png
deleted file mode 100644
index f23fb1e..0000000
Binary files a/attachments/npm/build/img/android-chrome-48x48.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/android-chrome-72x72.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/android-chrome-72x72.png b/attachments/npm/build/img/android-chrome-72x72.png
deleted file mode 100644
index fea3215..0000000
Binary files a/attachments/npm/build/img/android-chrome-72x72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/android-chrome-96x96.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/android-chrome-96x96.png b/attachments/npm/build/img/android-chrome-96x96.png
deleted file mode 100644
index 193f1ce..0000000
Binary files a/attachments/npm/build/img/android-chrome-96x96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-114x114.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-114x114.png b/attachments/npm/build/img/apple-touch-icon-114x114.png
deleted file mode 100644
index f0851d4..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-114x114.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-120x120.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-120x120.png b/attachments/npm/build/img/apple-touch-icon-120x120.png
deleted file mode 100644
index 00197f1..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-120x120.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-144x144.png b/attachments/npm/build/img/apple-touch-icon-144x144.png
deleted file mode 100644
index dbc01df..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-152x152.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-152x152.png b/attachments/npm/build/img/apple-touch-icon-152x152.png
deleted file mode 100644
index 25e3d11..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-152x152.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-180x180.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-180x180.png b/attachments/npm/build/img/apple-touch-icon-180x180.png
deleted file mode 100644
index 71d5128..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-180x180.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-57x57.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-57x57.png b/attachments/npm/build/img/apple-touch-icon-57x57.png
deleted file mode 100644
index c60ca48..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-57x57.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-60x60.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-60x60.png b/attachments/npm/build/img/apple-touch-icon-60x60.png
deleted file mode 100644
index 98656f1..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-60x60.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-72x72.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-72x72.png b/attachments/npm/build/img/apple-touch-icon-72x72.png
deleted file mode 100644
index fea3215..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-72x72.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-76x76.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-76x76.png b/attachments/npm/build/img/apple-touch-icon-76x76.png
deleted file mode 100644
index fdd736a..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-76x76.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon-precomposed.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon-precomposed.png b/attachments/npm/build/img/apple-touch-icon-precomposed.png
deleted file mode 100644
index 78904ea..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon-precomposed.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/apple-touch-icon.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/apple-touch-icon.png b/attachments/npm/build/img/apple-touch-icon.png
deleted file mode 100644
index 71d5128..0000000
Binary files a/attachments/npm/build/img/apple-touch-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/favicon-16x16.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/favicon-16x16.png b/attachments/npm/build/img/favicon-16x16.png
deleted file mode 100644
index 7705283..0000000
Binary files a/attachments/npm/build/img/favicon-16x16.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/favicon-32x32.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/favicon-32x32.png b/attachments/npm/build/img/favicon-32x32.png
deleted file mode 100644
index 290901d..0000000
Binary files a/attachments/npm/build/img/favicon-32x32.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/favicon-96x96.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/favicon-96x96.png b/attachments/npm/build/img/favicon-96x96.png
deleted file mode 100644
index 193f1ce..0000000
Binary files a/attachments/npm/build/img/favicon-96x96.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/grid.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/grid.png b/attachments/npm/build/img/grid.png
deleted file mode 100644
index 45ca636..0000000
Binary files a/attachments/npm/build/img/grid.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/mstile-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/mstile-144x144.png b/attachments/npm/build/img/mstile-144x144.png
deleted file mode 100644
index 3f633d9..0000000
Binary files a/attachments/npm/build/img/mstile-144x144.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/mstile-150x150.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/mstile-150x150.png b/attachments/npm/build/img/mstile-150x150.png
deleted file mode 100644
index 1c03e52..0000000
Binary files a/attachments/npm/build/img/mstile-150x150.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/mstile-310x150.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/mstile-310x150.png b/attachments/npm/build/img/mstile-310x150.png
deleted file mode 100644
index 15f4d19..0000000
Binary files a/attachments/npm/build/img/mstile-310x150.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/mstile-310x310.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/mstile-310x310.png b/attachments/npm/build/img/mstile-310x310.png
deleted file mode 100644
index cabe7d1..0000000
Binary files a/attachments/npm/build/img/mstile-310x310.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/mstile-70x70.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/mstile-70x70.png b/attachments/npm/build/img/mstile-70x70.png
deleted file mode 100644
index d9f409a..0000000
Binary files a/attachments/npm/build/img/mstile-70x70.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/pluggy.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/pluggy.png b/attachments/npm/build/img/pluggy.png
deleted file mode 100644
index f711c2c..0000000
Binary files a/attachments/npm/build/img/pluggy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/search.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/search.png b/attachments/npm/build/img/search.png
deleted file mode 100644
index 9fb799b..0000000
Binary files a/attachments/npm/build/img/search.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/shadow.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/shadow.png b/attachments/npm/build/img/shadow.png
deleted file mode 100644
index ea1c0b0..0000000
Binary files a/attachments/npm/build/img/shadow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/img/sprite.png
----------------------------------------------------------------------
diff --git a/attachments/npm/build/img/sprite.png b/attachments/npm/build/img/sprite.png
deleted file mode 100644
index 77d1f45..0000000
Binary files a/attachments/npm/build/img/sprite.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/build/styles.css
----------------------------------------------------------------------
diff --git a/attachments/npm/build/styles.css b/attachments/npm/build/styles.css
deleted file mode 100644
index 77e7cd2..0000000
--- a/attachments/npm/build/styles.css
+++ /dev/null
@@ -1,1455 +0,0 @@
-body {
-  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
-  font-size: 16px;
-  margin: 0;
-}
-
-h2 {
-    padding: 48px 0;
-    font-size: 34px;
-}
-
-/*---------------------------------------------------
-    Pluggy and msg
----------------------------------------------------*/
-#headerBackground {
-  background: url('img/grid.png');
-}
-
-#topContent {
-  margin-top: 25px;
-}
-
-#pluggy {
-  background: transparent url('img/pluggy.png') no-repeat center;
-  background-size: contain;
-  height: 200px;
-  margin-left: 25px;
-}
-
-.discover-message {
-  background-color: white;
-  font-size: 56px;
-  margin: 25px 5px 5px 5px;
-  text-align: left;
-  display: inline-block;
-  padding: 0px 8px;
-  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
-}
-
-/*---------------------------------------------------
-    Searchbox
----------------------------------------------------*/
-
-#searchwrapper {
-  margin: 25px 0px;
-  border: 2px solid gray;
-  background-color: white;
-}
-
-#searchwrapper .searchBox {
-  display: block;
-  height: 35px;
-  width: 100%;
-  border: 0;
-  background: none;
-  outline: 0;
-  font-size: 14px;
-  padding: 0 5px 0 35px;
-  color: #363636;
-  background: url('img/search.png') no-repeat;
-  background-position: 5.5px 5.5px;
-}
-
-#supportedPlatforms div {
-  margin: 12px 2px 2px 0;
-  border: 1px solid #363636;
-  border-radius: 8px;
-  padding: .4em .5em;
-  height: 11px;
-  font-size: 11px;
-  line-height: 11px;
-  display: inline-block;
-  align-items: center;
-
-}
-
-/*---------------------------------------------------
-    Plugin List
----------------------------------------------------*/
-
-.pluginList {
-  list-style-type: none;
-  padding: 0px;
-}
-
-.pluginList li {
-  margin: 0 0 60px 0;
-}
-
-/*---------------------------------------------------
-    PluginCards
----------------------------------------------------*/
-.pluginCard {
-  position: relative;
-  border: 1px solid #CDCDCD;
-  background: white;
-  min-height: 10em;
-  height: 10em;
-}
-
-.pluginCard:after {
-  z-index: -1;
-  position: absolute;
-  content: "";
-  bottom: 18px;
-  right: 2px;
-  left: auto;
-  width: 50%;
-  top: 80%;
-  max-width:300px;
-  background: #777;
-  -webkit-box-shadow: 0 15px 10px #777;
-  -moz-box-shadow: 0 15px 10px #777;
-  box-shadow: 0 15px 10px #777;
-  -webkit-transform: rotate(3deg);
-  -moz-transform: rotate(3deg);
-  -o-transform: rotate(3deg);
-  -ms-transform: rotate(3deg);
-  transform: rotate(3deg);
-}
-
-.pluginCard h3 {
-  margin: 0.2em 0.2em 0.4em 0em;
-  font-size: 1.5em;
-  display: inline-block;
-}
-
-.pluginCard a:link,
-.pluginCard a:visited {
-  text-decoration: none;
-  color: #404D58;
-}
-
-.pluginCard a:hover,
-.pluginCard a:active {
-  text-decoration: underline;
-}
-
-.featuredPlugin {
-  -webkit-box-shadow: -3px 0px 0px #4CC2E4;
-  -moz-box-shadow: -3px 0px 0px #4CC2E4;
-  box-shadow: -3px 0px 0px #4CC2E4;
-  border-left-width: 0px;
-}
-
-.pluginCardContents {
-  border: 1px solid #363636;
-  margin-bottom: 10px;
-  position: relative;
-  background: white;
-}
-
-.primaryContent {
-  display: flex;
-  display: -webkit-flex;
-  flex-direction: column;
-  -webkit-flex-direction: column;
-}
-
-.primaryContent .header small {
-  color: #83878B;
-}
-
-.primaryContent .pluginAuthor {
-  font-weight: bold;
-}
-
-.primaryContent .pluginDesc {
-  -webkit-flex-grow: 1;
-  flex-grow: 1;
-  font-size: 1em;
-  color: #404040;
-}
-
-.supportedPlatforms {
-  list-style-type: none;
-  padding: 5px 0px;
-  font-size: 0.8em;
-}
-
-.supportedPlatforms li {
-  margin: 0 5px 0 0;
-  display: inline-block;
-  border: 1px solid #F2F2F2;
-  padding: 2px 10px;
-  color: #7A828B;
-}
-
-.secondaryContent {
-  display: flex;
-  display: -webkit-flex;
-  flex-direction: column;
-  -webkit-flex-direction: column;
-  text-align: right;
-  font-size: 0.9em;
-  color: #7A828B;
-}
-
-.download {
-  -webkit-flex-grow: 1;
-  flex-grow: 1;
-}
-
-.extraInfo p {
-margin-top: 2px;
-margin-bottom: 2px;
-}
-
-.clickable {
-  cursor: pointer;
-}
-
-/*---------------------------------------------------
-    Misc
----------------------------------------------------*/
-
-.icon {
-  background: url('img/sprite.png') no-repeat;
-  background-position: 0 -220px;
-  padding-left: 78px;
-}
-.icon-about {
-  background-position: 0 -220px;
-}
-
-/*---------------------------------------------------
-    Layout - Header
----------------------------------------------------*/
-#wrap,
-.wrap {
-  width: 1008px;
-  margin: 0 auto;
-  position: relative;
-}
-
-.header-placeholder {
-  height: 90px;
-}
-#header {
-  height: 90px;
-  position: fixed;
-  z-index: 10;
-  left: 0;
-  right: 0;
-  background: #fff;
-  border-bottom: 1px solid #ddd;
-}
-#header .shadow {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: -3px;
-  height: 3px;
-  background: url('img/shadow.png');
-}
-
-.logo,
-.closing {
-  background: url('img/sprite.png') no-repeat;
-  -webkit-transition: background 0.25s linear;
-  -moz-transition: background 0.25s linear;
-  transition: background 0.25s linear;
-  background-color: #3b4854;
-  background-position: 0 0px;
-  position: absolute;
-  left: 0;
-  top: 5px;
-  width: 220px;
-  height: 75px;
-}
-.logo:hover {
-  background-color: #4cc2e4;
-}
-.menu {
-  padding: 16px 0;
-  float: right;
-}
-.menu a {
-  text-decoration: none;
-  -webkit-transition: background 0.25s linear;
-  -moz-transition: background 0.25s linear;
-  transition: background 0.25s linear;
-  padding: 8px;
-  margin: 0 8px;
-  line-height: 55px;
-}
-.menu a:hover,
-.menu a:link,
-.menu a:visited {
-  color: #4cc2e4;
-}
-.menu-dropdown {
-  display: none;
-  position: absolute;
-  right: 16px;
-  top: 32px;
-  width: 40%;
-}
-.menu-dropdown select {
-  width: 100%;
-}
-
-/*---------------------------------------------------
-    Code
----------------------------------------------------*/
-pre, code {
-  font-size: 12px;
-  font-family: Consolas, "Liberation Mono", Courier, monospace;
-}
-
-code {
-  margin: 0 0px;
-  padding: 0px 0px;
-  white-space: nowrap;
-  border: 1px solid #eaeaea;
-  background-color: #f8f8f8;
-  border-radius: 3px;
-}
-
-pre>code {
-  margin: 0;
-  padding: 0;
-  white-space: pre;
-  border: none;
-  background: transparent;
-}
-
-pre {
-  background-color: #f8f8f8;
-  border: 1px solid #ccc;
-  font-size: 13px;
-  line-height: 19px;
-  overflow: auto;
-  padding: 6px 10px;
-  border-radius: 3px;
-}
-
-pre code {
-  background-color: transparent;
-  border: none;
-}
-
-
-/*---------------------------------------------------
-    Mobile
----------------------------------------------------*/
-@media all and (max-width: 1024px) {
-  #wrap,
-  .wrap {
-    width: auto;
-    margin-left: 24px;
-    margin-right: 24px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 890px) {
-  h2 {
-    font-size: 24px;
-    padding-top: 54px;
-  }
-  .menu {
-    display: none;
-  }
-  .menu-dropdown {
-    display: block;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 720px) {
-  h2 {
-    font-size: 22px;
-    padding-top: 54px;
-  }
-  .menu-dropdown {
-    top: 16px;
-  }
-  #header,
-  .header-placeholder {
-    height: 52px;
-  }
-  .logo {
-    top: 7px;
-    width: 110px;
-    height: 37px;
-    background-size: 112px 425px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 585px) {
-  h2 {
-    letter-spacing: 0;
-  }
-  .wrap {
-    margin-left: 12px;
-    margin-right: 12px;
-  }
-  .icon {
-    background-size: 112px 425px;
-    padding: 20px 48px 20px 48px;
-    overflow: hidden;
-    display: block;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .icon-about {
-    background-position: 0 -110px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-@media all and (max-width: 440px) {
-  .icon {
-    padding: 22px 16px 20px 35px;
-  }
-    h2 {
-    font-size: 20px;
-  }
-  .pluginCard {
-    height: auto;
-  }
-}
-
-/*
- * Copyright 2013 Kristofer Joseph
- *
- * Licensed 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.
- */
-
-/*
- *
- * Uncomment and set these variables to customize the grid.
- *
- * :root {
- *  --gutter-width: 1rem;
- *  --outer-margin: 2rem;
- *  --gutter-compensation: calc( var( --gutter-width / 2 ) * -1 );
- *  --half-gutter-width: calc( var( --gutter-width / 2 ) );
- *  --screen-xs-min: 30em;
- *  --screen-sm-min: 48em;
- *  --screen-md-min: 62em;
- *  --screen-lg-min: 75em;
- *  --container-sm: calc( 45rem + var( --gutter-width ) );
- *  --container-md: calc( 60rem + var( --gutter-width ) );
- *  --container-lg: calc( 70rem + var( --gutter-width ) );
- * }
- *
-*/
-
-.container-fluid {
-  margin-right: auto;
-  margin-left: auto;
-  padding-right: 2rem;
-  padding-left: 2rem;
-}
-
-.row {
-  box-sizing: border-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-flex: 0 1 auto;
-  -ms-flex: 0 1 auto;
-  flex: 0 1 auto;
-  -webkit-flex-direction: row;
-  -ms-flex-direction: row;
-  flex-direction: row;
-  -webkit-flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  flex-wrap: wrap;
-  margin-right: -0.5rem;
-  margin-left: -0.5rem;
-}
-
-.row.reverse {
-  -webkit-flex-direction: row-reverse;
-  -ms-flex-direction: row-reverse;
-  flex-direction: row-reverse;
-}
-
-.col.reverse {
-  -webkit-flex-direction: column-reverse;
-  -ms-flex-direction: column-reverse;
-  flex-direction: column-reverse;
-}
-
-.col-xs,
-.col-xs-1,
-.col-xs-2,
-.col-xs-3,
-.col-xs-4,
-.col-xs-5,
-.col-xs-6,
-.col-xs-7,
-.col-xs-8,
-.col-xs-9,
-.col-xs-10,
-.col-xs-11,
-.col-xs-12,
-.col-xs-offset-1,
-.col-xs-offset-2,
-.col-xs-offset-3,
-.col-xs-offset-4,
-.col-xs-offset-5,
-.col-xs-offset-6,
-.col-xs-offset-7,
-.col-xs-offset-8,
-.col-xs-offset-9,
-.col-xs-offset-10,
-.col-xs-offset-11,
-.col-xs-offset-12 {
-  box-sizing: border-box;
-  -webkit-flex: 0 0 auto;
-  -ms-flex: 0 0 auto;
-  flex: 0 0 auto;
-  padding-right: 0.5rem;
-  padding-left: 0.5rem;
-}
-
-.col-xs {
-  -webkit-flex-grow: 1;
-  -ms-flex-positive: 1;
-  flex-grow: 1;
-  -webkit-flex-basis: 0;
-  -ms-flex-preferred-size: 0;
-  flex-basis: 0;
-  max-width: 100%;
-}
-
-.col-xs-1 {
-  -webkit-flex-basis: 8.333%;
-  -ms-flex-preferred-size: 8.333%;
-  flex-basis: 8.333%;
-  max-width: 8.333%;
-}
-
-.col-xs-2 {
-  -webkit-flex-basis: 16.667%;
-  -ms-flex-preferred-size: 16.667%;
-  flex-basis: 16.667%;
-  max-width: 16.667%;
-}
-
-.col-xs-3 {
-  -webkit-flex-basis: 25%;
-  -ms-flex-preferred-size: 25%;
-  flex-basis: 25%;
-  max-width: 25%;
-}
-
-.col-xs-4 {
-  -webkit-flex-basis: 33.333%;
-  -ms-flex-preferred-size: 33.333%;
-  flex-basis: 33.333%;
-  max-width: 33.333%;
-}
-
-.col-xs-5 {
-  -webkit-flex-basis: 41.667%;
-  -ms-flex-preferred-size: 41.667%;
-  flex-basis: 41.667%;
-  max-width: 41.667%;
-}
-
-.col-xs-6 {
-  -webkit-flex-basis: 50%;
-  -ms-flex-preferred-size: 50%;
-  flex-basis: 50%;
-  max-width: 50%;
-}
-
-.col-xs-7 {
-  -webkit-flex-basis: 58.333%;
-  -ms-flex-preferred-size: 58.333%;
-  flex-basis: 58.333%;
-  max-width: 58.333%;
-}
-
-.col-xs-8 {
-  -webkit-flex-basis: 66.667%;
-  -ms-flex-preferred-size: 66.667%;
-  flex-basis: 66.667%;
-  max-width: 66.667%;
-}
-
-.col-xs-9 {
-  -webkit-flex-basis: 75%;
-  -ms-flex-preferred-size: 75%;
-  flex-basis: 75%;
-  max-width: 75%;
-}
-
-.col-xs-10 {
-  -webkit-flex-basis: 83.333%;
-  -ms-flex-preferred-size: 83.333%;
-  flex-basis: 83.333%;
-  max-width: 83.333%;
-}
-
-.col-xs-11 {
-  -webkit-flex-basis: 91.667%;
-  -ms-flex-preferred-size: 91.667%;
-  flex-basis: 91.667%;
-  max-width: 91.667%;
-}
-
-.col-xs-12 {
-  -webkit-flex-basis: 100%;
-  -ms-flex-preferred-size: 100%;
-  flex-basis: 100%;
-  max-width: 100%;
-}
-
-.col-xs-offset-1 {
-  margin-left: 8.333%;
-}
-
-.col-xs-offset-2 {
-  margin-left: 16.667%;
-}
-
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-
-.col-xs-offset-4 {
-  margin-left: 33.333%;
-}
-
-.col-xs-offset-5 {
-  margin-left: 41.667%;
-}
-
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-
-.col-xs-offset-7 {
-  margin-left: 58.333%;
-}
-
-.col-xs-offset-8 {
-  margin-left: 66.667%;
-}
-
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-
-.col-xs-offset-10 {
-  margin-left: 83.333%;
-}
-
-.col-xs-offset-11 {
-  margin-left: 91.667%;
-}
-
-.start-xs {
-  -webkit-justify-content: flex-start;
-  -ms-flex-pack: start;
-  justify-content: flex-start;
-  text-align: start;
-}
-
-.center-xs {
-  -webkit-justify-content: center;
-  -ms-flex-pack: center;
-  justify-content: center;
-  text-align: center;
-}
-
-.end-xs {
-  -webkit-justify-content: flex-end;
-  -ms-flex-pack: end;
-  justify-content: flex-end;
-  text-align: end;
-}
-
-.top-xs {
-  -webkit-align-items: flex-start;
-  -ms-flex-align: start;
-  align-items: flex-start;
-}
-
-.middle-xs {
-  -webkit-align-items: center;
-  -ms-flex-align: center;
-  align-items: center;
-}
-
-.bottom-xs {
-  -webkit-align-items: flex-end;
-  -ms-flex-align: end;
-  align-items: flex-end;
-}
-
-.around-xs {
-  -webkit-justify-content: space-around;
-  -ms-flex-pack: distribute;
-  justify-content: space-around;
-}
-
-.between-xs {
-  -webkit-justify-content: space-between;
-  -ms-flex-pack: justify;
-  justify-content: space-between;
-}
-
-.first-xs {
-  -webkit-order: -1;
-  -ms-flex-order: -1;
-  order: -1;
-}
-
-.last-xs {
-  -webkit-order: 1;
-  -ms-flex-order: 1;
-  order: 1;
-}
-
-@media only screen and (min-width: 48em) {
-  .container {
-    width: 46rem;
-  }
-
-  .col-sm,
-  .col-sm-1,
-  .col-sm-2,
-  .col-sm-3,
-  .col-sm-4,
-  .col-sm-5,
-  .col-sm-6,
-  .col-sm-7,
-  .col-sm-8,
-  .col-sm-9,
-  .col-sm-10,
-  .col-sm-11,
-  .col-sm-12,
-  .col-sm-offset-1,
-  .col-sm-offset-2,
-  .col-sm-offset-3,
-  .col-sm-offset-4,
-  .col-sm-offset-5,
-  .col-sm-offset-6,
-  .col-sm-offset-7,
-  .col-sm-offset-8,
-  .col-sm-offset-9,
-  .col-sm-offset-10,
-  .col-sm-offset-11,
-  .col-sm-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-sm {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-sm-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-sm-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-sm-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-sm-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-sm-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-sm-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-sm-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-sm-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-sm-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-sm-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-sm-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-sm-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-sm-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-sm-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-sm-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-sm-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-sm-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-sm-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-sm-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-sm-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-sm {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-sm {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-sm {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-sm {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-sm {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-sm {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-sm {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-sm {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-sm {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-sm {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
-
-@media only screen and (min-width: 62em) {
-  .container {
-    width: 61rem;
-  }
-
-  .col-md,
-  .col-md-1,
-  .col-md-2,
-  .col-md-3,
-  .col-md-4,
-  .col-md-5,
-  .col-md-6,
-  .col-md-7,
-  .col-md-8,
-  .col-md-9,
-  .col-md-10,
-  .col-md-11,
-  .col-md-12,
-  .col-md-offset-1,
-  .col-md-offset-2,
-  .col-md-offset-3,
-  .col-md-offset-4,
-  .col-md-offset-5,
-  .col-md-offset-6,
-  .col-md-offset-7,
-  .col-md-offset-8,
-  .col-md-offset-9,
-  .col-md-offset-10,
-  .col-md-offset-11,
-  .col-md-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-md {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-md-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-md-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-md-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-md-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-md-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-md-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-md-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-md-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-md-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-md-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-md-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-md-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-md-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-md-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-md-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-md-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-md-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-md-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-md-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-md-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-md {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-md {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-md {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-md {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-md {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-md {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-md {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-md {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-md {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-md {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
-
-@media only screen and (min-width: 75em) {
-  .container {
-    width: 71rem;
-  }
-
-  .col-lg,
-  .col-lg-1,
-  .col-lg-2,
-  .col-lg-3,
-  .col-lg-4,
-  .col-lg-5,
-  .col-lg-6,
-  .col-lg-7,
-  .col-lg-8,
-  .col-lg-9,
-  .col-lg-10,
-  .col-lg-11,
-  .col-lg-12,
-  .col-lg-offset-1,
-  .col-lg-offset-2,
-  .col-lg-offset-3,
-  .col-lg-offset-4,
-  .col-lg-offset-5,
-  .col-lg-offset-6,
-  .col-lg-offset-7,
-  .col-lg-offset-8,
-  .col-lg-offset-9,
-  .col-lg-offset-10,
-  .col-lg-offset-11,
-  .col-lg-offset-12 {
-    box-sizing: border-box;
-    -webkit-flex: 0 0 auto;
-    -ms-flex: 0 0 auto;
-    flex: 0 0 auto;
-    padding-right: 0.5rem;
-    padding-left: 0.5rem;
-  }
-
-  .col-lg {
-    -webkit-flex-grow: 1;
-    -ms-flex-positive: 1;
-    flex-grow: 1;
-    -webkit-flex-basis: 0;
-    -ms-flex-preferred-size: 0;
-    flex-basis: 0;
-    max-width: 100%;
-  }
-
-  .col-lg-1 {
-    -webkit-flex-basis: 8.333%;
-    -ms-flex-preferred-size: 8.333%;
-    flex-basis: 8.333%;
-    max-width: 8.333%;
-  }
-
-  .col-lg-2 {
-    -webkit-flex-basis: 16.667%;
-    -ms-flex-preferred-size: 16.667%;
-    flex-basis: 16.667%;
-    max-width: 16.667%;
-  }
-
-  .col-lg-3 {
-    -webkit-flex-basis: 25%;
-    -ms-flex-preferred-size: 25%;
-    flex-basis: 25%;
-    max-width: 25%;
-  }
-
-  .col-lg-4 {
-    -webkit-flex-basis: 33.333%;
-    -ms-flex-preferred-size: 33.333%;
-    flex-basis: 33.333%;
-    max-width: 33.333%;
-  }
-
-  .col-lg-5 {
-    -webkit-flex-basis: 41.667%;
-    -ms-flex-preferred-size: 41.667%;
-    flex-basis: 41.667%;
-    max-width: 41.667%;
-  }
-
-  .col-lg-6 {
-    -webkit-flex-basis: 50%;
-    -ms-flex-preferred-size: 50%;
-    flex-basis: 50%;
-    max-width: 50%;
-  }
-
-  .col-lg-7 {
-    -webkit-flex-basis: 58.333%;
-    -ms-flex-preferred-size: 58.333%;
-    flex-basis: 58.333%;
-    max-width: 58.333%;
-  }
-
-  .col-lg-8 {
-    -webkit-flex-basis: 66.667%;
-    -ms-flex-preferred-size: 66.667%;
-    flex-basis: 66.667%;
-    max-width: 66.667%;
-  }
-
-  .col-lg-9 {
-    -webkit-flex-basis: 75%;
-    -ms-flex-preferred-size: 75%;
-    flex-basis: 75%;
-    max-width: 75%;
-  }
-
-  .col-lg-10 {
-    -webkit-flex-basis: 83.333%;
-    -ms-flex-preferred-size: 83.333%;
-    flex-basis: 83.333%;
-    max-width: 83.333%;
-  }
-
-  .col-lg-11 {
-    -webkit-flex-basis: 91.667%;
-    -ms-flex-preferred-size: 91.667%;
-    flex-basis: 91.667%;
-    max-width: 91.667%;
-  }
-
-  .col-lg-12 {
-    -webkit-flex-basis: 100%;
-    -ms-flex-preferred-size: 100%;
-    flex-basis: 100%;
-    max-width: 100%;
-  }
-
-  .col-lg-offset-1 {
-    margin-left: 8.333%;
-  }
-
-  .col-lg-offset-2 {
-    margin-left: 16.667%;
-  }
-
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-
-  .col-lg-offset-4 {
-    margin-left: 33.333%;
-  }
-
-  .col-lg-offset-5 {
-    margin-left: 41.667%;
-  }
-
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-
-  .col-lg-offset-7 {
-    margin-left: 58.333%;
-  }
-
-  .col-lg-offset-8 {
-    margin-left: 66.667%;
-  }
-
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-
-  .col-lg-offset-10 {
-    margin-left: 83.333%;
-  }
-
-  .col-lg-offset-11 {
-    margin-left: 91.667%;
-  }
-
-  .start-lg {
-    -webkit-justify-content: flex-start;
-    -ms-flex-pack: start;
-    justify-content: flex-start;
-    text-align: start;
-  }
-
-  .center-lg {
-    -webkit-justify-content: center;
-    -ms-flex-pack: center;
-    justify-content: center;
-    text-align: center;
-  }
-
-  .end-lg {
-    -webkit-justify-content: flex-end;
-    -ms-flex-pack: end;
-    justify-content: flex-end;
-    text-align: end;
-  }
-
-  .top-lg {
-    -webkit-align-items: flex-start;
-    -ms-flex-align: start;
-    align-items: flex-start;
-  }
-
-  .middle-lg {
-    -webkit-align-items: center;
-    -ms-flex-align: center;
-    align-items: center;
-  }
-
-  .bottom-lg {
-    -webkit-align-items: flex-end;
-    -ms-flex-align: end;
-    align-items: flex-end;
-  }
-
-  .around-lg {
-    -webkit-justify-content: space-around;
-    -ms-flex-pack: distribute;
-    justify-content: space-around;
-  }
-
-  .between-lg {
-    -webkit-justify-content: space-between;
-    -ms-flex-pack: justify;
-    justify-content: space-between;
-  }
-
-  .first-lg {
-    -webkit-order: -1;
-    -ms-flex-order: -1;
-    order: -1;
-  }
-
-  .last-lg {
-    -webkit-order: 1;
-    -ms-flex-order: 1;
-    order: 1;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/css/styles.css
----------------------------------------------------------------------
diff --git a/attachments/npm/css/styles.css b/attachments/npm/css/styles.css
new file mode 100644
index 0000000..5fd9b34
--- /dev/null
+++ b/attachments/npm/css/styles.css
@@ -0,0 +1,1455 @@
+body {
+  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+  font-size: 16px;
+  margin: 0;
+}
+
+h2 {
+    padding: 48px 0;
+    font-size: 34px;
+}
+
+/*---------------------------------------------------
+    Pluggy and msg
+---------------------------------------------------*/
+#headerBackground {
+  background: url('../img/grid.png');
+}
+
+#topContent {
+  margin-top: 25px;
+}
+
+#pluggy {
+  background: transparent url('../img/pluggy.png') no-repeat center;
+  background-size: contain;
+  height: 200px;
+  margin-left: 25px;
+}
+
+.discover-message {
+  background-color: white;
+  font-size: 56px;
+  margin: 25px 5px 5px 5px;
+  text-align: left;
+  display: inline-block;
+  padding: 0px 8px;
+  font-family: 'Segoe UI', tahoma, arial, helvetica, sans-serif;
+}
+
+/*---------------------------------------------------
+    Searchbox
+---------------------------------------------------*/
+
+#searchwrapper {
+  margin: 25px 0px;
+  border: 2px solid gray;
+  background-color: white;
+}
+
+#searchwrapper .searchBox {
+  display: block;
+  height: 35px;
+  width: 100%;
+  border: 0;
+  background: none;
+  outline: 0;
+  font-size: 14px;
+  padding: 0 5px 0 35px;
+  color: #363636;
+  background: url('../img/search.png') no-repeat;
+  background-position: 5.5px 5.5px;
+}
+
+#supportedPlatforms div {
+  margin: 12px 2px 2px 0;
+  border: 1px solid #363636;
+  border-radius: 8px;
+  padding: .4em .5em;
+  height: 11px;
+  font-size: 11px;
+  line-height: 11px;
+  display: inline-block;
+  align-items: center;
+
+}
+
+/*---------------------------------------------------
+    Plugin List
+---------------------------------------------------*/
+
+.pluginList {
+  list-style-type: none;
+  padding: 0px;
+}
+
+.pluginList li {
+  margin: 0 0 60px 0;
+}
+
+/*---------------------------------------------------
+    PluginCards
+---------------------------------------------------*/
+.pluginCard {
+  position: relative;
+  border: 1px solid #CDCDCD;
+  background: white;
+  min-height: 10em;
+  height: 10em;
+}
+
+.pluginCard:after {
+  z-index: -1;
+  position: absolute;
+  content: "";
+  bottom: 18px;
+  right: 2px;
+  left: auto;
+  width: 50%;
+  top: 80%;
+  max-width:300px;
+  background: #777;
+  -webkit-box-shadow: 0 15px 10px #777;
+  -moz-box-shadow: 0 15px 10px #777;
+  box-shadow: 0 15px 10px #777;
+  -webkit-transform: rotate(3deg);
+  -moz-transform: rotate(3deg);
+  -o-transform: rotate(3deg);
+  -ms-transform: rotate(3deg);
+  transform: rotate(3deg);
+}
+
+.pluginCard h3 {
+  margin: 0.2em 0.2em 0.4em 0em;
+  font-size: 1.5em;
+  display: inline-block;
+}
+
+.pluginCard a:link,
+.pluginCard a:visited {
+  text-decoration: none;
+  color: #404D58;
+}
+
+.pluginCard a:hover,
+.pluginCard a:active {
+  text-decoration: underline;
+}
+
+.featuredPlugin {
+  -webkit-box-shadow: -3px 0px 0px #4CC2E4;
+  -moz-box-shadow: -3px 0px 0px #4CC2E4;
+  box-shadow: -3px 0px 0px #4CC2E4;
+  border-left-width: 0px;
+}
+
+.pluginCardContents {
+  border: 1px solid #363636;
+  margin-bottom: 10px;
+  position: relative;
+  background: white;
+}
+
+.primaryContent {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+}
+
+.primaryContent .header small {
+  color: #83878B;
+}
+
+.primaryContent .pluginAuthor {
+  font-weight: bold;
+}
+
+.primaryContent .pluginDesc {
+  -webkit-flex-grow: 1;
+  flex-grow: 1;
+  font-size: 1em;
+  color: #404040;
+}
+
+.supportedPlatforms {
+  list-style-type: none;
+  padding: 5px 0px;
+  font-size: 0.8em;
+}
+
+.supportedPlatforms li {
+  margin: 0 5px 0 0;
+  display: inline-block;
+  border: 1px solid #F2F2F2;
+  padding: 2px 10px;
+  color: #7A828B;
+}
+
+.secondaryContent {
+  display: flex;
+  display: -webkit-flex;
+  flex-direction: column;
+  -webkit-flex-direction: column;
+  text-align: right;
+  font-size: 0.9em;
+  color: #7A828B;
+}
+
+.download {
+  -webkit-flex-grow: 1;
+  flex-grow: 1;
+}
+
+.extraInfo p {
+margin-top: 2px;
+margin-bottom: 2px;
+}
+
+.clickable {
+  cursor: pointer;
+}
+
+/*---------------------------------------------------
+    Misc
+---------------------------------------------------*/
+
+.icon {
+  background: url('../img/sprite.png') no-repeat;
+  background-position: 0 -220px;
+  padding-left: 78px;
+}
+.icon-about {
+  background-position: 0 -220px;
+}
+
+/*---------------------------------------------------
+    Layout - Header
+---------------------------------------------------*/
+#wrap,
+.wrap {
+  width: 1008px;
+  margin: 0 auto;
+  position: relative;
+}
+
+.header-placeholder {
+  height: 90px;
+}
+#header {
+  height: 90px;
+  position: fixed;
+  z-index: 10;
+  left: 0;
+  right: 0;
+  background: #fff;
+  border-bottom: 1px solid #ddd;
+}
+#header .shadow {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: -3px;
+  height: 3px;
+  background: url('../img/shadow.png');
+}
+
+.logo,
+.closing {
+  background: url('../img/sprite.png') no-repeat;
+  -webkit-transition: background 0.25s linear;
+  -moz-transition: background 0.25s linear;
+  transition: background 0.25s linear;
+  background-color: #3b4854;
+  background-position: 0 0px;
+  position: absolute;
+  left: 0;
+  top: 5px;
+  width: 220px;
+  height: 75px;
+}
+.logo:hover {
+  background-color: #4cc2e4;
+}
+.menu {
+  padding: 16px 0;
+  float: right;
+}
+.menu a {
+  text-decoration: none;
+  -webkit-transition: background 0.25s linear;
+  -moz-transition: background 0.25s linear;
+  transition: background 0.25s linear;
+  padding: 8px;
+  margin: 0 8px;
+  line-height: 55px;
+}
+.menu a:hover,
+.menu a:link,
+.menu a:visited {
+  color: #4cc2e4;
+}
+.menu-dropdown {
+  display: none;
+  position: absolute;
+  right: 16px;
+  top: 32px;
+  width: 40%;
+}
+.menu-dropdown select {
+  width: 100%;
+}
+
+/*---------------------------------------------------
+    Code
+---------------------------------------------------*/
+pre, code {
+  font-size: 12px;
+  font-family: Consolas, "Liberation Mono", Courier, monospace;
+}
+
+code {
+  margin: 0 0px;
+  padding: 0px 0px;
+  white-space: nowrap;
+  border: 1px solid #eaeaea;
+  background-color: #f8f8f8;
+  border-radius: 3px;
+}
+
+pre>code {
+  margin: 0;
+  padding: 0;
+  white-space: pre;
+  border: none;
+  background: transparent;
+}
+
+pre {
+  background-color: #f8f8f8;
+  border: 1px solid #ccc;
+  font-size: 13px;
+  line-height: 19px;
+  overflow: auto;
+  padding: 6px 10px;
+  border-radius: 3px;
+}
+
+pre code {
+  background-color: transparent;
+  border: none;
+}
+
+
+/*---------------------------------------------------
+    Mobile
+---------------------------------------------------*/
+@media all and (max-width: 1024px) {
+  #wrap,
+  .wrap {
+    width: auto;
+    margin-left: 24px;
+    margin-right: 24px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 890px) {
+  h2 {
+    font-size: 24px;
+    padding-top: 54px;
+  }
+  .menu {
+    display: none;
+  }
+  .menu-dropdown {
+    display: block;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 720px) {
+  h2 {
+    font-size: 22px;
+    padding-top: 54px;
+  }
+  .menu-dropdown {
+    top: 16px;
+  }
+  #header,
+  .header-placeholder {
+    height: 52px;
+  }
+  .logo {
+    top: 7px;
+    width: 110px;
+    height: 37px;
+    background-size: 112px 425px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 585px) {
+  h2 {
+    letter-spacing: 0;
+  }
+  .wrap {
+    margin-left: 12px;
+    margin-right: 12px;
+  }
+  .icon {
+    background-size: 112px 425px;
+    padding: 20px 48px 20px 48px;
+    overflow: hidden;
+    display: block;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .icon-about {
+    background-position: 0 -110px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+@media all and (max-width: 440px) {
+  .icon {
+    padding: 22px 16px 20px 35px;
+  }
+    h2 {
+    font-size: 20px;
+  }
+  .pluginCard {
+    height: auto;
+  }
+}
+
+/*
+ * Copyright 2013 Kristofer Joseph
+ *
+ * Licensed 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.
+ */
+
+/*
+ *
+ * Uncomment and set these variables to customize the grid.
+ *
+ * :root {
+ *  --gutter-width: 1rem;
+ *  --outer-margin: 2rem;
+ *  --gutter-compensation: calc( var( --gutter-width / 2 ) * -1 );
+ *  --half-gutter-width: calc( var( --gutter-width / 2 ) );
+ *  --screen-xs-min: 30em;
+ *  --screen-sm-min: 48em;
+ *  --screen-md-min: 62em;
+ *  --screen-lg-min: 75em;
+ *  --container-sm: calc( 45rem + var( --gutter-width ) );
+ *  --container-md: calc( 60rem + var( --gutter-width ) );
+ *  --container-lg: calc( 70rem + var( --gutter-width ) );
+ * }
+ *
+*/
+
+.container-fluid {
+  margin-right: auto;
+  margin-left: auto;
+  padding-right: 2rem;
+  padding-left: 2rem;
+}
+
+.row {
+  box-sizing: border-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-flex: 0 1 auto;
+  -ms-flex: 0 1 auto;
+  flex: 0 1 auto;
+  -webkit-flex-direction: row;
+  -ms-flex-direction: row;
+  flex-direction: row;
+  -webkit-flex-wrap: wrap;
+  -ms-flex-wrap: wrap;
+  flex-wrap: wrap;
+  margin-right: -0.5rem;
+  margin-left: -0.5rem;
+}
+
+.row.reverse {
+  -webkit-flex-direction: row-reverse;
+  -ms-flex-direction: row-reverse;
+  flex-direction: row-reverse;
+}
+
+.col.reverse {
+  -webkit-flex-direction: column-reverse;
+  -ms-flex-direction: column-reverse;
+  flex-direction: column-reverse;
+}
+
+.col-xs,
+.col-xs-1,
+.col-xs-2,
+.col-xs-3,
+.col-xs-4,
+.col-xs-5,
+.col-xs-6,
+.col-xs-7,
+.col-xs-8,
+.col-xs-9,
+.col-xs-10,
+.col-xs-11,
+.col-xs-12,
+.col-xs-offset-1,
+.col-xs-offset-2,
+.col-xs-offset-3,
+.col-xs-offset-4,
+.col-xs-offset-5,
+.col-xs-offset-6,
+.col-xs-offset-7,
+.col-xs-offset-8,
+.col-xs-offset-9,
+.col-xs-offset-10,
+.col-xs-offset-11,
+.col-xs-offset-12 {
+  box-sizing: border-box;
+  -webkit-flex: 0 0 auto;
+  -ms-flex: 0 0 auto;
+  flex: 0 0 auto;
+  padding-right: 0.5rem;
+  padding-left: 0.5rem;
+}
+
+.col-xs {
+  -webkit-flex-grow: 1;
+  -ms-flex-positive: 1;
+  flex-grow: 1;
+  -webkit-flex-basis: 0;
+  -ms-flex-preferred-size: 0;
+  flex-basis: 0;
+  max-width: 100%;
+}
+
+.col-xs-1 {
+  -webkit-flex-basis: 8.333%;
+  -ms-flex-preferred-size: 8.333%;
+  flex-basis: 8.333%;
+  max-width: 8.333%;
+}
+
+.col-xs-2 {
+  -webkit-flex-basis: 16.667%;
+  -ms-flex-preferred-size: 16.667%;
+  flex-basis: 16.667%;
+  max-width: 16.667%;
+}
+
+.col-xs-3 {
+  -webkit-flex-basis: 25%;
+  -ms-flex-preferred-size: 25%;
+  flex-basis: 25%;
+  max-width: 25%;
+}
+
+.col-xs-4 {
+  -webkit-flex-basis: 33.333%;
+  -ms-flex-preferred-size: 33.333%;
+  flex-basis: 33.333%;
+  max-width: 33.333%;
+}
+
+.col-xs-5 {
+  -webkit-flex-basis: 41.667%;
+  -ms-flex-preferred-size: 41.667%;
+  flex-basis: 41.667%;
+  max-width: 41.667%;
+}
+
+.col-xs-6 {
+  -webkit-flex-basis: 50%;
+  -ms-flex-preferred-size: 50%;
+  flex-basis: 50%;
+  max-width: 50%;
+}
+
+.col-xs-7 {
+  -webkit-flex-basis: 58.333%;
+  -ms-flex-preferred-size: 58.333%;
+  flex-basis: 58.333%;
+  max-width: 58.333%;
+}
+
+.col-xs-8 {
+  -webkit-flex-basis: 66.667%;
+  -ms-flex-preferred-size: 66.667%;
+  flex-basis: 66.667%;
+  max-width: 66.667%;
+}
+
+.col-xs-9 {
+  -webkit-flex-basis: 75%;
+  -ms-flex-preferred-size: 75%;
+  flex-basis: 75%;
+  max-width: 75%;
+}
+
+.col-xs-10 {
+  -webkit-flex-basis: 83.333%;
+  -ms-flex-preferred-size: 83.333%;
+  flex-basis: 83.333%;
+  max-width: 83.333%;
+}
+
+.col-xs-11 {
+  -webkit-flex-basis: 91.667%;
+  -ms-flex-preferred-size: 91.667%;
+  flex-basis: 91.667%;
+  max-width: 91.667%;
+}
+
+.col-xs-12 {
+  -webkit-flex-basis: 100%;
+  -ms-flex-preferred-size: 100%;
+  flex-basis: 100%;
+  max-width: 100%;
+}
+
+.col-xs-offset-1 {
+  margin-left: 8.333%;
+}
+
+.col-xs-offset-2 {
+  margin-left: 16.667%;
+}
+
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+
+.col-xs-offset-4 {
+  margin-left: 33.333%;
+}
+
+.col-xs-offset-5 {
+  margin-left: 41.667%;
+}
+
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+
+.col-xs-offset-7 {
+  margin-left: 58.333%;
+}
+
+.col-xs-offset-8 {
+  margin-left: 66.667%;
+}
+
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+
+.col-xs-offset-10 {
+  margin-left: 83.333%;
+}
+
+.col-xs-offset-11 {
+  margin-left: 91.667%;
+}
+
+.start-xs {
+  -webkit-justify-content: flex-start;
+  -ms-flex-pack: start;
+  justify-content: flex-start;
+  text-align: start;
+}
+
+.center-xs {
+  -webkit-justify-content: center;
+  -ms-flex-pack: center;
+  justify-content: center;
+  text-align: center;
+}
+
+.end-xs {
+  -webkit-justify-content: flex-end;
+  -ms-flex-pack: end;
+  justify-content: flex-end;
+  text-align: end;
+}
+
+.top-xs {
+  -webkit-align-items: flex-start;
+  -ms-flex-align: start;
+  align-items: flex-start;
+}
+
+.middle-xs {
+  -webkit-align-items: center;
+  -ms-flex-align: center;
+  align-items: center;
+}
+
+.bottom-xs {
+  -webkit-align-items: flex-end;
+  -ms-flex-align: end;
+  align-items: flex-end;
+}
+
+.around-xs {
+  -webkit-justify-content: space-around;
+  -ms-flex-pack: distribute;
+  justify-content: space-around;
+}
+
+.between-xs {
+  -webkit-justify-content: space-between;
+  -ms-flex-pack: justify;
+  justify-content: space-between;
+}
+
+.first-xs {
+  -webkit-order: -1;
+  -ms-flex-order: -1;
+  order: -1;
+}
+
+.last-xs {
+  -webkit-order: 1;
+  -ms-flex-order: 1;
+  order: 1;
+}
+
+@media only screen and (min-width: 48em) {
+  .container {
+    width: 46rem;
+  }
+
+  .col-sm,
+  .col-sm-1,
+  .col-sm-2,
+  .col-sm-3,
+  .col-sm-4,
+  .col-sm-5,
+  .col-sm-6,
+  .col-sm-7,
+  .col-sm-8,
+  .col-sm-9,
+  .col-sm-10,
+  .col-sm-11,
+  .col-sm-12,
+  .col-sm-offset-1,
+  .col-sm-offset-2,
+  .col-sm-offset-3,
+  .col-sm-offset-4,
+  .col-sm-offset-5,
+  .col-sm-offset-6,
+  .col-sm-offset-7,
+  .col-sm-offset-8,
+  .col-sm-offset-9,
+  .col-sm-offset-10,
+  .col-sm-offset-11,
+  .col-sm-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-sm {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-sm-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-sm-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-sm-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-sm-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-sm-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-sm-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-sm-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-sm-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-sm-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-sm-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-sm-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-sm-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-sm-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-sm-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-sm-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-sm-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-sm-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-sm-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-sm-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-sm-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-sm {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-sm {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-sm {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-sm {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-sm {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-sm {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-sm {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-sm {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-sm {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-sm {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
+
+@media only screen and (min-width: 62em) {
+  .container {
+    width: 61rem;
+  }
+
+  .col-md,
+  .col-md-1,
+  .col-md-2,
+  .col-md-3,
+  .col-md-4,
+  .col-md-5,
+  .col-md-6,
+  .col-md-7,
+  .col-md-8,
+  .col-md-9,
+  .col-md-10,
+  .col-md-11,
+  .col-md-12,
+  .col-md-offset-1,
+  .col-md-offset-2,
+  .col-md-offset-3,
+  .col-md-offset-4,
+  .col-md-offset-5,
+  .col-md-offset-6,
+  .col-md-offset-7,
+  .col-md-offset-8,
+  .col-md-offset-9,
+  .col-md-offset-10,
+  .col-md-offset-11,
+  .col-md-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-md {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-md-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-md-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-md-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-md-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-md-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-md-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-md-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-md-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-md-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-md-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-md-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-md-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-md-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-md-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-md-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-md-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-md-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-md-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-md-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-md-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-md {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-md {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-md {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-md {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-md {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-md {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-md {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-md {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-md {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-md {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
+
+@media only screen and (min-width: 75em) {
+  .container {
+    width: 71rem;
+  }
+
+  .col-lg,
+  .col-lg-1,
+  .col-lg-2,
+  .col-lg-3,
+  .col-lg-4,
+  .col-lg-5,
+  .col-lg-6,
+  .col-lg-7,
+  .col-lg-8,
+  .col-lg-9,
+  .col-lg-10,
+  .col-lg-11,
+  .col-lg-12,
+  .col-lg-offset-1,
+  .col-lg-offset-2,
+  .col-lg-offset-3,
+  .col-lg-offset-4,
+  .col-lg-offset-5,
+  .col-lg-offset-6,
+  .col-lg-offset-7,
+  .col-lg-offset-8,
+  .col-lg-offset-9,
+  .col-lg-offset-10,
+  .col-lg-offset-11,
+  .col-lg-offset-12 {
+    box-sizing: border-box;
+    -webkit-flex: 0 0 auto;
+    -ms-flex: 0 0 auto;
+    flex: 0 0 auto;
+    padding-right: 0.5rem;
+    padding-left: 0.5rem;
+  }
+
+  .col-lg {
+    -webkit-flex-grow: 1;
+    -ms-flex-positive: 1;
+    flex-grow: 1;
+    -webkit-flex-basis: 0;
+    -ms-flex-preferred-size: 0;
+    flex-basis: 0;
+    max-width: 100%;
+  }
+
+  .col-lg-1 {
+    -webkit-flex-basis: 8.333%;
+    -ms-flex-preferred-size: 8.333%;
+    flex-basis: 8.333%;
+    max-width: 8.333%;
+  }
+
+  .col-lg-2 {
+    -webkit-flex-basis: 16.667%;
+    -ms-flex-preferred-size: 16.667%;
+    flex-basis: 16.667%;
+    max-width: 16.667%;
+  }
+
+  .col-lg-3 {
+    -webkit-flex-basis: 25%;
+    -ms-flex-preferred-size: 25%;
+    flex-basis: 25%;
+    max-width: 25%;
+  }
+
+  .col-lg-4 {
+    -webkit-flex-basis: 33.333%;
+    -ms-flex-preferred-size: 33.333%;
+    flex-basis: 33.333%;
+    max-width: 33.333%;
+  }
+
+  .col-lg-5 {
+    -webkit-flex-basis: 41.667%;
+    -ms-flex-preferred-size: 41.667%;
+    flex-basis: 41.667%;
+    max-width: 41.667%;
+  }
+
+  .col-lg-6 {
+    -webkit-flex-basis: 50%;
+    -ms-flex-preferred-size: 50%;
+    flex-basis: 50%;
+    max-width: 50%;
+  }
+
+  .col-lg-7 {
+    -webkit-flex-basis: 58.333%;
+    -ms-flex-preferred-size: 58.333%;
+    flex-basis: 58.333%;
+    max-width: 58.333%;
+  }
+
+  .col-lg-8 {
+    -webkit-flex-basis: 66.667%;
+    -ms-flex-preferred-size: 66.667%;
+    flex-basis: 66.667%;
+    max-width: 66.667%;
+  }
+
+  .col-lg-9 {
+    -webkit-flex-basis: 75%;
+    -ms-flex-preferred-size: 75%;
+    flex-basis: 75%;
+    max-width: 75%;
+  }
+
+  .col-lg-10 {
+    -webkit-flex-basis: 83.333%;
+    -ms-flex-preferred-size: 83.333%;
+    flex-basis: 83.333%;
+    max-width: 83.333%;
+  }
+
+  .col-lg-11 {
+    -webkit-flex-basis: 91.667%;
+    -ms-flex-preferred-size: 91.667%;
+    flex-basis: 91.667%;
+    max-width: 91.667%;
+  }
+
+  .col-lg-12 {
+    -webkit-flex-basis: 100%;
+    -ms-flex-preferred-size: 100%;
+    flex-basis: 100%;
+    max-width: 100%;
+  }
+
+  .col-lg-offset-1 {
+    margin-left: 8.333%;
+  }
+
+  .col-lg-offset-2 {
+    margin-left: 16.667%;
+  }
+
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+
+  .col-lg-offset-4 {
+    margin-left: 33.333%;
+  }
+
+  .col-lg-offset-5 {
+    margin-left: 41.667%;
+  }
+
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+
+  .col-lg-offset-7 {
+    margin-left: 58.333%;
+  }
+
+  .col-lg-offset-8 {
+    margin-left: 66.667%;
+  }
+
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+
+  .col-lg-offset-10 {
+    margin-left: 83.333%;
+  }
+
+  .col-lg-offset-11 {
+    margin-left: 91.667%;
+  }
+
+  .start-lg {
+    -webkit-justify-content: flex-start;
+    -ms-flex-pack: start;
+    justify-content: flex-start;
+    text-align: start;
+  }
+
+  .center-lg {
+    -webkit-justify-content: center;
+    -ms-flex-pack: center;
+    justify-content: center;
+    text-align: center;
+  }
+
+  .end-lg {
+    -webkit-justify-content: flex-end;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    text-align: end;
+  }
+
+  .top-lg {
+    -webkit-align-items: flex-start;
+    -ms-flex-align: start;
+    align-items: flex-start;
+  }
+
+  .middle-lg {
+    -webkit-align-items: center;
+    -ms-flex-align: center;
+    align-items: center;
+  }
+
+  .bottom-lg {
+    -webkit-align-items: flex-end;
+    -ms-flex-align: end;
+    align-items: flex-end;
+  }
+
+  .around-lg {
+    -webkit-justify-content: space-around;
+    -ms-flex-pack: distribute;
+    justify-content: space-around;
+  }
+
+  .between-lg {
+    -webkit-justify-content: space-between;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+  }
+
+  .first-lg {
+    -webkit-order: -1;
+    -ms-flex-order: -1;
+    order: -1;
+  }
+
+  .last-lg {
+    -webkit-order: 1;
+    -ms-flex-order: 1;
+    order: 1;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/developers.html
----------------------------------------------------------------------
diff --git a/attachments/npm/developers.html b/attachments/npm/developers.html
index 59f6e1c..edb1762 100644
--- a/attachments/npm/developers.html
+++ b/attachments/npm/developers.html
@@ -3,7 +3,7 @@
   <head>
     <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
     <title>Cordova Search Website</title>
-    <link rel="stylesheet" href="build/styles.css" />
+    <link rel="stylesheet" href="/css/styles.css" />
   </head>
 
   <body>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/faq.html
----------------------------------------------------------------------
diff --git a/attachments/npm/faq.html b/attachments/npm/faq.html
index 0f97e9c..53854f9 100644
--- a/attachments/npm/faq.html
+++ b/attachments/npm/faq.html
@@ -3,7 +3,7 @@
   <head>
     <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
     <title>Cordova Search Website</title>
-    <link rel="stylesheet" href="build/styles.css" />
+    <link rel="stylesheet" href="/css/styles.css" />
   </head>
 
   <body>

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/android-chrome-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/android-chrome-144x144.png b/attachments/npm/img/android-chrome-144x144.png
new file mode 100644
index 0000000..dbc01df
Binary files /dev/null and b/attachments/npm/img/android-chrome-144x144.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/android-chrome-192x192.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/android-chrome-192x192.png b/attachments/npm/img/android-chrome-192x192.png
new file mode 100644
index 0000000..02d4821
Binary files /dev/null and b/attachments/npm/img/android-chrome-192x192.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/android-chrome-36x36.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/android-chrome-36x36.png b/attachments/npm/img/android-chrome-36x36.png
new file mode 100644
index 0000000..191972f
Binary files /dev/null and b/attachments/npm/img/android-chrome-36x36.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/android-chrome-48x48.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/android-chrome-48x48.png b/attachments/npm/img/android-chrome-48x48.png
new file mode 100644
index 0000000..f23fb1e
Binary files /dev/null and b/attachments/npm/img/android-chrome-48x48.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/android-chrome-72x72.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/android-chrome-72x72.png b/attachments/npm/img/android-chrome-72x72.png
new file mode 100644
index 0000000..fea3215
Binary files /dev/null and b/attachments/npm/img/android-chrome-72x72.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/android-chrome-96x96.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/android-chrome-96x96.png b/attachments/npm/img/android-chrome-96x96.png
new file mode 100644
index 0000000..193f1ce
Binary files /dev/null and b/attachments/npm/img/android-chrome-96x96.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-114x114.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-114x114.png b/attachments/npm/img/apple-touch-icon-114x114.png
new file mode 100644
index 0000000..f0851d4
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-114x114.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-120x120.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-120x120.png b/attachments/npm/img/apple-touch-icon-120x120.png
new file mode 100644
index 0000000..00197f1
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-120x120.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-144x144.png b/attachments/npm/img/apple-touch-icon-144x144.png
new file mode 100644
index 0000000..dbc01df
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-144x144.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-152x152.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-152x152.png b/attachments/npm/img/apple-touch-icon-152x152.png
new file mode 100644
index 0000000..25e3d11
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-152x152.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-180x180.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-180x180.png b/attachments/npm/img/apple-touch-icon-180x180.png
new file mode 100644
index 0000000..71d5128
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-180x180.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-57x57.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-57x57.png b/attachments/npm/img/apple-touch-icon-57x57.png
new file mode 100644
index 0000000..c60ca48
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-57x57.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-60x60.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-60x60.png b/attachments/npm/img/apple-touch-icon-60x60.png
new file mode 100644
index 0000000..98656f1
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-60x60.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-72x72.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-72x72.png b/attachments/npm/img/apple-touch-icon-72x72.png
new file mode 100644
index 0000000..fea3215
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-72x72.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-76x76.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-76x76.png b/attachments/npm/img/apple-touch-icon-76x76.png
new file mode 100644
index 0000000..fdd736a
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-76x76.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon-precomposed.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon-precomposed.png b/attachments/npm/img/apple-touch-icon-precomposed.png
new file mode 100644
index 0000000..78904ea
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon-precomposed.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/apple-touch-icon.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/apple-touch-icon.png b/attachments/npm/img/apple-touch-icon.png
new file mode 100644
index 0000000..71d5128
Binary files /dev/null and b/attachments/npm/img/apple-touch-icon.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/favicon-16x16.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/favicon-16x16.png b/attachments/npm/img/favicon-16x16.png
new file mode 100644
index 0000000..7705283
Binary files /dev/null and b/attachments/npm/img/favicon-16x16.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/favicon-32x32.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/favicon-32x32.png b/attachments/npm/img/favicon-32x32.png
new file mode 100644
index 0000000..290901d
Binary files /dev/null and b/attachments/npm/img/favicon-32x32.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/favicon-96x96.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/favicon-96x96.png b/attachments/npm/img/favicon-96x96.png
new file mode 100644
index 0000000..193f1ce
Binary files /dev/null and b/attachments/npm/img/favicon-96x96.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/grid.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/grid.png b/attachments/npm/img/grid.png
new file mode 100644
index 0000000..45ca636
Binary files /dev/null and b/attachments/npm/img/grid.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/mstile-144x144.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/mstile-144x144.png b/attachments/npm/img/mstile-144x144.png
new file mode 100644
index 0000000..3f633d9
Binary files /dev/null and b/attachments/npm/img/mstile-144x144.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/mstile-150x150.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/mstile-150x150.png b/attachments/npm/img/mstile-150x150.png
new file mode 100644
index 0000000..1c03e52
Binary files /dev/null and b/attachments/npm/img/mstile-150x150.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/mstile-310x150.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/mstile-310x150.png b/attachments/npm/img/mstile-310x150.png
new file mode 100644
index 0000000..15f4d19
Binary files /dev/null and b/attachments/npm/img/mstile-310x150.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/mstile-310x310.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/mstile-310x310.png b/attachments/npm/img/mstile-310x310.png
new file mode 100644
index 0000000..cabe7d1
Binary files /dev/null and b/attachments/npm/img/mstile-310x310.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/mstile-70x70.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/mstile-70x70.png b/attachments/npm/img/mstile-70x70.png
new file mode 100644
index 0000000..d9f409a
Binary files /dev/null and b/attachments/npm/img/mstile-70x70.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/pluggy.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/pluggy.png b/attachments/npm/img/pluggy.png
new file mode 100644
index 0000000..f711c2c
Binary files /dev/null and b/attachments/npm/img/pluggy.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/search.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/search.png b/attachments/npm/img/search.png
new file mode 100644
index 0000000..9fb799b
Binary files /dev/null and b/attachments/npm/img/search.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/shadow.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/shadow.png b/attachments/npm/img/shadow.png
new file mode 100644
index 0000000..ea1c0b0
Binary files /dev/null and b/attachments/npm/img/shadow.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/img/sprite.png
----------------------------------------------------------------------
diff --git a/attachments/npm/img/sprite.png b/attachments/npm/img/sprite.png
new file mode 100644
index 0000000..77d1f45
Binary files /dev/null and b/attachments/npm/img/sprite.png differ

http://git-wip-us.apache.org/repos/asf/cordova-registry-web/blob/676d5b79/attachments/npm/index.html
----------------------------------------------------------------------
diff --git a/attachments/npm/index.html b/attachments/npm/index.html
index d300a4e..51e974f 100644
--- a/attachments/npm/index.html
+++ b/attachments/npm/index.html
@@ -4,25 +4,25 @@
     <meta http-equiv='Content-type' content='text/html; charset=utf-8'>
     <meta name='description' content='This website is used to search the apache cordova plugins hosted on npm. The plugins can be searched across titles, descriptions, authors, platforms and licenses. You can also view the download counts for each plugin. The page also displays platforms supported, version and last updated day for the cordova plugins.'>
     <title>Cordova Plugin NPM Search</title>
-    <link rel="stylesheet" href="build/styles.css" />
-    <link rel="apple-touch-icon" sizes="57x57" href="assets/img/apple-touch-icon-57x57.png">
-    <link rel="apple-touch-icon" sizes="60x60" href="assets/img/apple-touch-icon-60x60.png">
-    <link rel="apple-touch-icon" sizes="72x72" href="assets/img/apple-touch-icon-72x72.png">
-    <link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-touch-icon-76x76.png">
-    <link rel="apple-touch-icon" sizes="114x114" href="assets/img/apple-touch-icon-114x114.png">
-    <link rel="apple-touch-icon" sizes="120x120" href="assets/img/apple-touch-icon-120x120.png">
-    <link rel="apple-touch-icon" sizes="144x144" href="assets/img/apple-touch-icon-144x144.png">
-    <link rel="apple-touch-icon" sizes="152x152" href="assets/img/apple-touch-icon-152x152.png">
-    <link rel="apple-touch-icon" sizes="180x180" href="assets/img/apple-touch-icon-180x180.png">
-    <link rel="icon" type="image/png" href="assets/img/favicon-32x32.png" sizes="32x32">
-    <link rel="icon" type="image/png" href="assets/img/android-chrome-192x192.png" sizes="192x192">
-    <link rel="icon" type="image/png" href="assets/img/favicon-96x96.png" sizes="96x96">
-    <link rel="icon" type="image/png" href="assets/img/favicon-16x16.png" sizes="16x16">
-    <link rel="manifest" href="assets/img/manifest.json">
-    <link rel="shortcut icon" href="assets/img/favicon.ico">
+    <link rel="stylesheet" href="/css/styles.css" />
+    <link rel="apple-touch-icon" sizes="57x57" href="/img/apple-touch-icon-57x57.png">
+    <link rel="apple-touch-icon" sizes="60x60" href="/img/apple-touch-icon-60x60.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="/img/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="76x76" href="/img/apple-touch-icon-76x76.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="/img/apple-touch-icon-114x114.png">
+    <link rel="apple-touch-icon" sizes="120x120" href="/img/apple-touch-icon-120x120.png">
+    <link rel="apple-touch-icon" sizes="144x144" href="/img/apple-touch-icon-144x144.png">
+    <link rel="apple-touch-icon" sizes="152x152" href="/img/apple-touch-icon-152x152.png">
+    <link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon-180x180.png">
+    <link rel="icon" type="image/png" href="/img/favicon-32x32.png" sizes="32x32">
+    <link rel="icon" type="image/png" href="/img/android-chrome-192x192.png" sizes="192x192">
+    <link rel="icon" type="image/png" href="/img/favicon-96x96.png" sizes="96x96">
+    <link rel="icon" type="image/png" href="/img/favicon-16x16.png" sizes="16x16">
+    <link rel="manifest" href="/img/manifest.json">
+    <link rel="shortcut icon" href="/img/favicon.ico">
     <meta name="msapplication-TileColor" content="#da532c">
-    <meta name="msapplication-TileImage" content="assets/img/mstile-144x144.png">
-    <meta name="msapplication-config" content="assets/img/browserconfig.xml">
+    <meta name="msapplication-TileImage" content="/img/mstile-144x144.png">
+    <meta name="msapplication-config" content="/img/browserconfig.xml">
     <meta name="theme-color" content="#ffffff">
   </head>
 
@@ -47,7 +47,7 @@
     </div>
     <div class="header-placeholder"></div>
     <div id="container"></div>
-    <script src="build/app.js"></script>
+    <script src="/js/app.js"></script>
     <script>
       (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
       (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org