--- /dev/null
+meta.foundation-version {
+ font-family: "/5.5.3/"; }
+
+meta.foundation-mq-small {
+ font-family: "/only screen/";
+ width: 0em; }
+
+meta.foundation-mq-small-only {
+ font-family: "/only screen and (max-width: 40em)/";
+ width: 0em; }
+
+meta.foundation-mq-medium {
+ font-family: "/only screen and (min-width:40.063em)/";
+ width: 40.063em; }
+
+meta.foundation-mq-medium-only {
+ font-family: "/only screen and (min-width:40.063em) and (max-width:64em)/";
+ width: 40.063em; }
+
+meta.foundation-mq-large {
+ font-family: "/only screen and (min-width:64.063em)/";
+ width: 64.063em; }
+
+meta.foundation-mq-large-only {
+ font-family: "/only screen and (min-width:64.063em) and (max-width:90em)/";
+ width: 64.063em; }
+
+meta.foundation-mq-xlarge {
+ font-family: "/only screen and (min-width:90.063em)/";
+ width: 90.063em; }
+
+meta.foundation-mq-xlarge-only {
+ font-family: "/only screen and (min-width:90.063em) and (max-width:120em)/";
+ width: 90.063em; }
+
+meta.foundation-mq-xxlarge {
+ font-family: "/only screen and (min-width:120.063em)/";
+ width: 120.063em; }
+
+meta.foundation-data-attribute-namespace {
+ font-family: false; }
+
+html, body {
+ height: 100%; }
+
+*, *:before, *:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box; }
+
+html, body {
+ font-size: 100%; }
+
+body {
+ background: #fff;
+ color: #000000;
+ cursor: auto;
+ font-family: "Open Sans", sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 150%;
+ margin: 0;
+ padding: 0;
+ position: relative; }
+
+a:hover {
+ cursor: pointer; }
+
+img {
+ max-width: 100%;
+ height: auto; }
+
+img {
+ -ms-interpolation-mode: bicubic; }
+
+#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object, .mqa-display img, .mqa-display embed, .mqa-display object {
+ max-width: none !important; }
+
+.left {
+ float: left !important; }
+
+.right {
+ float: right !important; }
+
+.clearfix:before, .clearfix:after {
+ content: " ";
+ display: table; }
+.clearfix:after {
+ clear: both; }
+
+.hide {
+ display: none; }
+
+.invisible {
+ visibility: hidden; }
+
+.antialiased {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale; }
+
+img {
+ display: inline-block;
+ vertical-align: middle; }
+
+textarea {
+ height: auto;
+ min-height: 50px; }
+
+select {
+ width: 100%; }
+
+.row {
+ margin: 0 auto;
+ max-width: 62.5rem;
+ width: 100%; }
+ .row:before, .row:after {
+ content: " ";
+ display: table; }
+ .row:after {
+ clear: both; }
+ .row.collapse > .column, .row.collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .row.collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+ .row .row {
+ margin: 0 -0.9375rem;
+ max-width: none;
+ width: auto; }
+ .row .row:before, .row .row:after {
+ content: " ";
+ display: table; }
+ .row .row:after {
+ clear: both; }
+ .row .row.collapse {
+ margin: 0;
+ max-width: none;
+ width: auto; }
+ .row .row.collapse:before, .row .row.collapse:after {
+ content: " ";
+ display: table; }
+ .row .row.collapse:after {
+ clear: both; }
+
+.column, .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ width: 100%;
+ float: left; }
+
+.column + .column:last-child, .columns + .columns:last-child {
+ float: right; }
+.column + .column.end, .columns + .columns.end {
+ float: left; }
+
+@media only screen {
+ .small-push-0 {
+ position: relative;
+ left: 0;
+ right: auto; }
+ .small-pull-0 {
+ position: relative;
+ right: 0;
+ left: auto; }
+ .small-push-1 {
+ position: relative;
+ left: 8.3333333333%;
+ right: auto; }
+ .small-pull-1 {
+ position: relative;
+ right: 8.3333333333%;
+ left: auto; }
+ .small-push-2 {
+ position: relative;
+ left: 16.6666666667%;
+ right: auto; }
+ .small-pull-2 {
+ position: relative;
+ right: 16.6666666667%;
+ left: auto; }
+ .small-push-3 {
+ position: relative;
+ left: 25%;
+ right: auto; }
+ .small-pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto; }
+ .small-push-4 {
+ position: relative;
+ left: 33.3333333333%;
+ right: auto; }
+ .small-pull-4 {
+ position: relative;
+ right: 33.3333333333%;
+ left: auto; }
+ .small-push-5 {
+ position: relative;
+ left: 41.6666666667%;
+ right: auto; }
+ .small-pull-5 {
+ position: relative;
+ right: 41.6666666667%;
+ left: auto; }
+ .small-push-6 {
+ position: relative;
+ left: 50%;
+ right: auto; }
+ .small-pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto; }
+ .small-push-7 {
+ position: relative;
+ left: 58.3333333333%;
+ right: auto; }
+ .small-pull-7 {
+ position: relative;
+ right: 58.3333333333%;
+ left: auto; }
+ .small-push-8 {
+ position: relative;
+ left: 66.6666666667%;
+ right: auto; }
+ .small-pull-8 {
+ position: relative;
+ right: 66.6666666667%;
+ left: auto; }
+ .small-push-9 {
+ position: relative;
+ left: 75%;
+ right: auto; }
+ .small-pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto; }
+ .small-push-10 {
+ position: relative;
+ left: 83.3333333333%;
+ right: auto; }
+ .small-pull-10 {
+ position: relative;
+ right: 83.3333333333%;
+ left: auto; }
+ .small-push-11 {
+ position: relative;
+ left: 91.6666666667%;
+ right: auto; }
+ .small-pull-11 {
+ position: relative;
+ right: 91.6666666667%;
+ left: auto; }
+ .column, .columns {
+ position: relative;
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ float: left; }
+ .small-1 {
+ width: 8.3333333333%; }
+ .small-2 {
+ width: 16.6666666667%; }
+ .small-3 {
+ width: 25%; }
+ .small-4 {
+ width: 33.3333333333%; }
+ .small-5 {
+ width: 41.6666666667%; }
+ .small-6 {
+ width: 50%; }
+ .small-7 {
+ width: 58.3333333333%; }
+ .small-8 {
+ width: 66.6666666667%; }
+ .small-9 {
+ width: 75%; }
+ .small-10 {
+ width: 83.3333333333%; }
+ .small-11 {
+ width: 91.6666666667%; }
+ .small-12 {
+ width: 100%; }
+ .small-offset-0 {
+ margin-left: 0 !important; }
+ .small-offset-1 {
+ margin-left: 8.3333333333% !important; }
+ .small-offset-2 {
+ margin-left: 16.6666666667% !important; }
+ .small-offset-3 {
+ margin-left: 25% !important; }
+ .small-offset-4 {
+ margin-left: 33.3333333333% !important; }
+ .small-offset-5 {
+ margin-left: 41.6666666667% !important; }
+ .small-offset-6 {
+ margin-left: 50% !important; }
+ .small-offset-7 {
+ margin-left: 58.3333333333% !important; }
+ .small-offset-8 {
+ margin-left: 66.6666666667% !important; }
+ .small-offset-9 {
+ margin-left: 75% !important; }
+ .small-offset-10 {
+ margin-left: 83.3333333333% !important; }
+ .small-offset-11 {
+ margin-left: 91.6666666667% !important; }
+ .small-reset-order {
+ float: left;
+ left: auto;
+ margin-left: 0;
+ margin-right: 0;
+ right: auto; }
+ .column.small-centered, .columns.small-centered {
+ margin-left: auto;
+ margin-right: auto;
+ float: none; }
+ .column.small-uncentered, .columns.small-uncentered {
+ float: left;
+ margin-left: 0;
+ margin-right: 0; }
+ .column.small-centered:last-child, .columns.small-centered:last-child {
+ float: none; }
+ .column.small-uncentered:last-child, .columns.small-uncentered:last-child {
+ float: left; }
+ .column.small-uncentered.opposite, .columns.small-uncentered.opposite {
+ float: right; }
+ .row.small-collapse > .column, .row.small-collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .row.small-collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+ .row.small-uncollapse > .column, .row.small-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ float: left; } }
+
+@media only screen and (min-width:40.063em) {
+ .medium-push-0 {
+ position: relative;
+ left: 0;
+ right: auto; }
+ .medium-pull-0 {
+ position: relative;
+ right: 0;
+ left: auto; }
+ .medium-push-1 {
+ position: relative;
+ left: 8.3333333333%;
+ right: auto; }
+ .medium-pull-1 {
+ position: relative;
+ right: 8.3333333333%;
+ left: auto; }
+ .medium-push-2 {
+ position: relative;
+ left: 16.6666666667%;
+ right: auto; }
+ .medium-pull-2 {
+ position: relative;
+ right: 16.6666666667%;
+ left: auto; }
+ .medium-push-3 {
+ position: relative;
+ left: 25%;
+ right: auto; }
+ .medium-pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto; }
+ .medium-push-4 {
+ position: relative;
+ left: 33.3333333333%;
+ right: auto; }
+ .medium-pull-4 {
+ position: relative;
+ right: 33.3333333333%;
+ left: auto; }
+ .medium-push-5 {
+ position: relative;
+ left: 41.6666666667%;
+ right: auto; }
+ .medium-pull-5 {
+ position: relative;
+ right: 41.6666666667%;
+ left: auto; }
+ .medium-push-6 {
+ position: relative;
+ left: 50%;
+ right: auto; }
+ .medium-pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto; }
+ .medium-push-7 {
+ position: relative;
+ left: 58.3333333333%;
+ right: auto; }
+ .medium-pull-7 {
+ position: relative;
+ right: 58.3333333333%;
+ left: auto; }
+ .medium-push-8 {
+ position: relative;
+ left: 66.6666666667%;
+ right: auto; }
+ .medium-pull-8 {
+ position: relative;
+ right: 66.6666666667%;
+ left: auto; }
+ .medium-push-9 {
+ position: relative;
+ left: 75%;
+ right: auto; }
+ .medium-pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto; }
+ .medium-push-10 {
+ position: relative;
+ left: 83.3333333333%;
+ right: auto; }
+ .medium-pull-10 {
+ position: relative;
+ right: 83.3333333333%;
+ left: auto; }
+ .medium-push-11 {
+ position: relative;
+ left: 91.6666666667%;
+ right: auto; }
+ .medium-pull-11 {
+ position: relative;
+ right: 91.6666666667%;
+ left: auto; }
+ .column, .columns {
+ position: relative;
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ float: left; }
+ .medium-1 {
+ width: 8.3333333333%; }
+ .medium-2 {
+ width: 16.6666666667%; }
+ .medium-3 {
+ width: 25%; }
+ .medium-4 {
+ width: 33.3333333333%; }
+ .medium-5 {
+ width: 41.6666666667%; }
+ .medium-6 {
+ width: 50%; }
+ .medium-7 {
+ width: 58.3333333333%; }
+ .medium-8 {
+ width: 66.6666666667%; }
+ .medium-9 {
+ width: 75%; }
+ .medium-10 {
+ width: 83.3333333333%; }
+ .medium-11 {
+ width: 91.6666666667%; }
+ .medium-12 {
+ width: 100%; }
+ .medium-offset-0 {
+ margin-left: 0 !important; }
+ .medium-offset-1 {
+ margin-left: 8.3333333333% !important; }
+ .medium-offset-2 {
+ margin-left: 16.6666666667% !important; }
+ .medium-offset-3 {
+ margin-left: 25% !important; }
+ .medium-offset-4 {
+ margin-left: 33.3333333333% !important; }
+ .medium-offset-5 {
+ margin-left: 41.6666666667% !important; }
+ .medium-offset-6 {
+ margin-left: 50% !important; }
+ .medium-offset-7 {
+ margin-left: 58.3333333333% !important; }
+ .medium-offset-8 {
+ margin-left: 66.6666666667% !important; }
+ .medium-offset-9 {
+ margin-left: 75% !important; }
+ .medium-offset-10 {
+ margin-left: 83.3333333333% !important; }
+ .medium-offset-11 {
+ margin-left: 91.6666666667% !important; }
+ .medium-reset-order {
+ float: left;
+ left: auto;
+ margin-left: 0;
+ margin-right: 0;
+ right: auto; }
+ .column.medium-centered, .columns.medium-centered {
+ margin-left: auto;
+ margin-right: auto;
+ float: none; }
+ .column.medium-uncentered, .columns.medium-uncentered {
+ float: left;
+ margin-left: 0;
+ margin-right: 0; }
+ .column.medium-centered:last-child, .columns.medium-centered:last-child {
+ float: none; }
+ .column.medium-uncentered:last-child, .columns.medium-uncentered:last-child {
+ float: left; }
+ .column.medium-uncentered.opposite, .columns.medium-uncentered.opposite {
+ float: right; }
+ .row.medium-collapse > .column, .row.medium-collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .row.medium-collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+ .row.medium-uncollapse > .column, .row.medium-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ float: left; }
+ .push-0 {
+ position: relative;
+ left: 0;
+ right: auto; }
+ .pull-0 {
+ position: relative;
+ right: 0;
+ left: auto; }
+ .push-1 {
+ position: relative;
+ left: 8.3333333333%;
+ right: auto; }
+ .pull-1 {
+ position: relative;
+ right: 8.3333333333%;
+ left: auto; }
+ .push-2 {
+ position: relative;
+ left: 16.6666666667%;
+ right: auto; }
+ .pull-2 {
+ position: relative;
+ right: 16.6666666667%;
+ left: auto; }
+ .push-3 {
+ position: relative;
+ left: 25%;
+ right: auto; }
+ .pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto; }
+ .push-4 {
+ position: relative;
+ left: 33.3333333333%;
+ right: auto; }
+ .pull-4 {
+ position: relative;
+ right: 33.3333333333%;
+ left: auto; }
+ .push-5 {
+ position: relative;
+ left: 41.6666666667%;
+ right: auto; }
+ .pull-5 {
+ position: relative;
+ right: 41.6666666667%;
+ left: auto; }
+ .push-6 {
+ position: relative;
+ left: 50%;
+ right: auto; }
+ .pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto; }
+ .push-7 {
+ position: relative;
+ left: 58.3333333333%;
+ right: auto; }
+ .pull-7 {
+ position: relative;
+ right: 58.3333333333%;
+ left: auto; }
+ .push-8 {
+ position: relative;
+ left: 66.6666666667%;
+ right: auto; }
+ .pull-8 {
+ position: relative;
+ right: 66.6666666667%;
+ left: auto; }
+ .push-9 {
+ position: relative;
+ left: 75%;
+ right: auto; }
+ .pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto; }
+ .push-10 {
+ position: relative;
+ left: 83.3333333333%;
+ right: auto; }
+ .pull-10 {
+ position: relative;
+ right: 83.3333333333%;
+ left: auto; }
+ .push-11 {
+ position: relative;
+ left: 91.6666666667%;
+ right: auto; }
+ .pull-11 {
+ position: relative;
+ right: 91.6666666667%;
+ left: auto; } }
+
+@media only screen and (min-width:64.063em) {
+ .large-push-0 {
+ position: relative;
+ left: 0;
+ right: auto; }
+ .large-pull-0 {
+ position: relative;
+ right: 0;
+ left: auto; }
+ .large-push-1 {
+ position: relative;
+ left: 8.3333333333%;
+ right: auto; }
+ .large-pull-1 {
+ position: relative;
+ right: 8.3333333333%;
+ left: auto; }
+ .large-push-2 {
+ position: relative;
+ left: 16.6666666667%;
+ right: auto; }
+ .large-pull-2 {
+ position: relative;
+ right: 16.6666666667%;
+ left: auto; }
+ .large-push-3 {
+ position: relative;
+ left: 25%;
+ right: auto; }
+ .large-pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto; }
+ .large-push-4 {
+ position: relative;
+ left: 33.3333333333%;
+ right: auto; }
+ .large-pull-4 {
+ position: relative;
+ right: 33.3333333333%;
+ left: auto; }
+ .large-push-5 {
+ position: relative;
+ left: 41.6666666667%;
+ right: auto; }
+ .large-pull-5 {
+ position: relative;
+ right: 41.6666666667%;
+ left: auto; }
+ .large-push-6 {
+ position: relative;
+ left: 50%;
+ right: auto; }
+ .large-pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto; }
+ .large-push-7 {
+ position: relative;
+ left: 58.3333333333%;
+ right: auto; }
+ .large-pull-7 {
+ position: relative;
+ right: 58.3333333333%;
+ left: auto; }
+ .large-push-8 {
+ position: relative;
+ left: 66.6666666667%;
+ right: auto; }
+ .large-pull-8 {
+ position: relative;
+ right: 66.6666666667%;
+ left: auto; }
+ .large-push-9 {
+ position: relative;
+ left: 75%;
+ right: auto; }
+ .large-pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto; }
+ .large-push-10 {
+ position: relative;
+ left: 83.3333333333%;
+ right: auto; }
+ .large-pull-10 {
+ position: relative;
+ right: 83.3333333333%;
+ left: auto; }
+ .large-push-11 {
+ position: relative;
+ left: 91.6666666667%;
+ right: auto; }
+ .large-pull-11 {
+ position: relative;
+ right: 91.6666666667%;
+ left: auto; }
+ .column, .columns {
+ position: relative;
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ float: left; }
+ .large-1 {
+ width: 8.3333333333%; }
+ .large-2 {
+ width: 16.6666666667%; }
+ .large-3 {
+ width: 25%; }
+ .large-4 {
+ width: 33.3333333333%; }
+ .large-5 {
+ width: 41.6666666667%; }
+ .large-6 {
+ width: 50%; }
+ .large-7 {
+ width: 58.3333333333%; }
+ .large-8 {
+ width: 66.6666666667%; }
+ .large-9 {
+ width: 75%; }
+ .large-10 {
+ width: 83.3333333333%; }
+ .large-11 {
+ width: 91.6666666667%; }
+ .large-12 {
+ width: 100%; }
+ .large-offset-0 {
+ margin-left: 0 !important; }
+ .large-offset-1 {
+ margin-left: 8.3333333333% !important; }
+ .large-offset-2 {
+ margin-left: 16.6666666667% !important; }
+ .large-offset-3 {
+ margin-left: 25% !important; }
+ .large-offset-4 {
+ margin-left: 33.3333333333% !important; }
+ .large-offset-5 {
+ margin-left: 41.6666666667% !important; }
+ .large-offset-6 {
+ margin-left: 50% !important; }
+ .large-offset-7 {
+ margin-left: 58.3333333333% !important; }
+ .large-offset-8 {
+ margin-left: 66.6666666667% !important; }
+ .large-offset-9 {
+ margin-left: 75% !important; }
+ .large-offset-10 {
+ margin-left: 83.3333333333% !important; }
+ .large-offset-11 {
+ margin-left: 91.6666666667% !important; }
+ .large-reset-order {
+ float: left;
+ left: auto;
+ margin-left: 0;
+ margin-right: 0;
+ right: auto; }
+ .column.large-centered, .columns.large-centered {
+ margin-left: auto;
+ margin-right: auto;
+ float: none; }
+ .column.large-uncentered, .columns.large-uncentered {
+ float: left;
+ margin-left: 0;
+ margin-right: 0; }
+ .column.large-centered:last-child, .columns.large-centered:last-child {
+ float: none; }
+ .column.large-uncentered:last-child, .columns.large-uncentered:last-child {
+ float: left; }
+ .column.large-uncentered.opposite, .columns.large-uncentered.opposite {
+ float: right; }
+ .row.large-collapse > .column, .row.large-collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .row.large-collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+ .row.large-uncollapse > .column, .row.large-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem;
+ float: left; }
+ .push-0 {
+ position: relative;
+ left: 0;
+ right: auto; }
+ .pull-0 {
+ position: relative;
+ right: 0;
+ left: auto; }
+ .push-1 {
+ position: relative;
+ left: 8.3333333333%;
+ right: auto; }
+ .pull-1 {
+ position: relative;
+ right: 8.3333333333%;
+ left: auto; }
+ .push-2 {
+ position: relative;
+ left: 16.6666666667%;
+ right: auto; }
+ .pull-2 {
+ position: relative;
+ right: 16.6666666667%;
+ left: auto; }
+ .push-3 {
+ position: relative;
+ left: 25%;
+ right: auto; }
+ .pull-3 {
+ position: relative;
+ right: 25%;
+ left: auto; }
+ .push-4 {
+ position: relative;
+ left: 33.3333333333%;
+ right: auto; }
+ .pull-4 {
+ position: relative;
+ right: 33.3333333333%;
+ left: auto; }
+ .push-5 {
+ position: relative;
+ left: 41.6666666667%;
+ right: auto; }
+ .pull-5 {
+ position: relative;
+ right: 41.6666666667%;
+ left: auto; }
+ .push-6 {
+ position: relative;
+ left: 50%;
+ right: auto; }
+ .pull-6 {
+ position: relative;
+ right: 50%;
+ left: auto; }
+ .push-7 {
+ position: relative;
+ left: 58.3333333333%;
+ right: auto; }
+ .pull-7 {
+ position: relative;
+ right: 58.3333333333%;
+ left: auto; }
+ .push-8 {
+ position: relative;
+ left: 66.6666666667%;
+ right: auto; }
+ .pull-8 {
+ position: relative;
+ right: 66.6666666667%;
+ left: auto; }
+ .push-9 {
+ position: relative;
+ left: 75%;
+ right: auto; }
+ .pull-9 {
+ position: relative;
+ right: 75%;
+ left: auto; }
+ .push-10 {
+ position: relative;
+ left: 83.3333333333%;
+ right: auto; }
+ .pull-10 {
+ position: relative;
+ right: 83.3333333333%;
+ left: auto; }
+ .push-11 {
+ position: relative;
+ left: 91.6666666667%;
+ right: auto; }
+ .pull-11 {
+ position: relative;
+ right: 91.6666666667%;
+ left: auto; } }
+
+.accordion {
+ margin-bottom: 0;
+ margin-left: 0; }
+ .accordion:before, .accordion:after {
+ content: " ";
+ display: table; }
+ .accordion:after {
+ clear: both; }
+ .accordion .accordion-navigation, .accordion dd {
+ display: block;
+ margin-bottom: 0 !important; }
+ .accordion .accordion-navigation.active > a, .accordion dd.active > a {
+ background: #e8e8e8;
+ color: #222222; }
+ .accordion .accordion-navigation > a, .accordion dd > a {
+ background: #EFEFEF;
+ color: #222222;
+ display: block;
+ font-family: "Open Sans", sans-serif;
+ font-size: 1rem;
+ padding: 1rem; }
+ .accordion .accordion-navigation > a:hover, .accordion dd > a:hover {
+ background: #e3e3e3; }
+ .accordion .accordion-navigation > .content, .accordion dd > .content {
+ display: none;
+ padding: 0.9375rem; }
+ .accordion .accordion-navigation > .content.active, .accordion dd > .content.active {
+ background: #FFFFFF;
+ display: block; }
+
+.alert-box {
+ border-style: solid;
+ border-width: 1px;
+ display: block;
+ font-size: 0.8125rem;
+ font-weight: normal;
+ margin-bottom: 1.25rem;
+ padding: 0.875rem 1.5rem 0.875rem 0.875rem;
+ position: relative;
+ transition: opacity 300ms ease-out;
+ background-color: #008CBA;
+ border-color: #0078a0;
+ color: #FFFFFF; }
+ .alert-box .close {
+ right: 0.25rem;
+ background: inherit;
+ color: #333333;
+ font-size: 1.375rem;
+ line-height: .9;
+ margin-top: -0.6875rem;
+ opacity: 0.3;
+ padding: 0 6px 4px;
+ position: absolute;
+ top: 50%; }
+ .alert-box .close:hover, .alert-box .close:focus {
+ opacity: 0.5; }
+ .alert-box.radius {
+ border-radius: 3px; }
+ .alert-box.round {
+ border-radius: 1000px; }
+ .alert-box.success {
+ background-color: #43AC6A;
+ border-color: #3a945b;
+ color: #FFFFFF; }
+ .alert-box.alert {
+ background-color: #f04124;
+ border-color: #de2d0f;
+ color: #FFFFFF; }
+ .alert-box.secondary {
+ background-color: #e7e7e7;
+ border-color: #c7c7c7;
+ color: #4f4f4f; }
+ .alert-box.warning {
+ background-color: #f08a24;
+ border-color: #de770f;
+ color: #FFFFFF; }
+ .alert-box.info {
+ background-color: #a0d3e8;
+ border-color: #74bfdd;
+ color: #4f4f4f; }
+ .alert-box.alert-close {
+ opacity: 0; }
+
+[class*="block-grid-"] {
+ display: block;
+ padding: 0;
+ margin: 0; }
+ [class*="block-grid-"]:before, [class*="block-grid-"]:after {
+ content: " ";
+ display: table; }
+ [class*="block-grid-"]:after {
+ clear: both; }
+ [class*="block-grid-"] > li {
+ display: block;
+ float: left;
+ height: auto;
+ padding: 0 0.9375rem 1.875rem; }
+
+@media only screen {
+ .small-block-grid-1 > li {
+ list-style: none;
+ width: 100%; }
+ .small-block-grid-1 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-1 > li:nth-of-type(1n+1) {
+ clear: both; }
+ .small-block-grid-1 > li:nth-of-type(1n) {
+ padding-left: 0rem;
+ padding-right: 0rem; }
+ .small-block-grid-2 > li {
+ list-style: none;
+ width: 50%; }
+ .small-block-grid-2 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-2 > li:nth-of-type(2n+1) {
+ clear: both; }
+ .small-block-grid-2 > li:nth-of-type(2n+1) {
+ padding-left: 0rem;
+ padding-right: 0.9375rem; }
+ .small-block-grid-2 > li:nth-of-type(2n) {
+ padding-left: 0.9375rem;
+ padding-right: 0rem; }
+ .small-block-grid-3 > li {
+ list-style: none;
+ width: 33.3333333333%; }
+ .small-block-grid-3 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-3 > li:nth-of-type(3n+1) {
+ clear: both; }
+ .small-block-grid-3 > li:nth-of-type(3n+1) {
+ padding-left: 0rem;
+ padding-right: 1.25rem; }
+ .small-block-grid-3 > li:nth-of-type(3n+2) {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem; }
+ .small-block-grid-3 > li:nth-of-type(3n) {
+ padding-left: 1.25rem;
+ padding-right: 0rem; }
+ .small-block-grid-4 > li {
+ list-style: none;
+ width: 25%; }
+ .small-block-grid-4 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-4 > li:nth-of-type(4n+1) {
+ clear: both; }
+ .small-block-grid-4 > li:nth-of-type(4n+1) {
+ padding-left: 0rem;
+ padding-right: 1.40625rem; }
+ .small-block-grid-4 > li:nth-of-type(4n+2) {
+ padding-left: 0.46875rem;
+ padding-right: 0.9375rem; }
+ .small-block-grid-4 > li:nth-of-type(4n+3) {
+ padding-left: 0.9375rem;
+ padding-right: 0.46875rem; }
+ .small-block-grid-4 > li:nth-of-type(4n) {
+ padding-left: 1.40625rem;
+ padding-right: 0rem; }
+ .small-block-grid-5 > li {
+ list-style: none;
+ width: 20%; }
+ .small-block-grid-5 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-5 > li:nth-of-type(5n+1) {
+ clear: both; }
+ .small-block-grid-5 > li:nth-of-type(5n+1) {
+ padding-left: 0rem;
+ padding-right: 1.5rem; }
+ .small-block-grid-5 > li:nth-of-type(5n+2) {
+ padding-left: 0.375rem;
+ padding-right: 1.125rem; }
+ .small-block-grid-5 > li:nth-of-type(5n+3) {
+ padding-left: 0.75rem;
+ padding-right: 0.75rem; }
+ .small-block-grid-5 > li:nth-of-type(5n+4) {
+ padding-left: 1.125rem;
+ padding-right: 0.375rem; }
+ .small-block-grid-5 > li:nth-of-type(5n) {
+ padding-left: 1.5rem;
+ padding-right: 0rem; }
+ .small-block-grid-6 > li {
+ list-style: none;
+ width: 16.6666666667%; }
+ .small-block-grid-6 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-6 > li:nth-of-type(6n+1) {
+ clear: both; }
+ .small-block-grid-6 > li:nth-of-type(6n+1) {
+ padding-left: 0rem;
+ padding-right: 1.5625rem; }
+ .small-block-grid-6 > li:nth-of-type(6n+2) {
+ padding-left: 0.3125rem;
+ padding-right: 1.25rem; }
+ .small-block-grid-6 > li:nth-of-type(6n+3) {
+ padding-left: 0.625rem;
+ padding-right: 0.9375rem; }
+ .small-block-grid-6 > li:nth-of-type(6n+4) {
+ padding-left: 0.9375rem;
+ padding-right: 0.625rem; }
+ .small-block-grid-6 > li:nth-of-type(6n+5) {
+ padding-left: 1.25rem;
+ padding-right: 0.3125rem; }
+ .small-block-grid-6 > li:nth-of-type(6n) {
+ padding-left: 1.5625rem;
+ padding-right: 0rem; }
+ .small-block-grid-7 > li {
+ list-style: none;
+ width: 14.2857142857%; }
+ .small-block-grid-7 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-7 > li:nth-of-type(7n+1) {
+ clear: both; }
+ .small-block-grid-7 > li:nth-of-type(7n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6071428571rem; }
+ .small-block-grid-7 > li:nth-of-type(7n+2) {
+ padding-left: 0.2678571429rem;
+ padding-right: 1.3392857143rem; }
+ .small-block-grid-7 > li:nth-of-type(7n+3) {
+ padding-left: 0.5357142857rem;
+ padding-right: 1.0714285714rem; }
+ .small-block-grid-7 > li:nth-of-type(7n+4) {
+ padding-left: 0.8035714286rem;
+ padding-right: 0.8035714286rem; }
+ .small-block-grid-7 > li:nth-of-type(7n+5) {
+ padding-left: 1.0714285714rem;
+ padding-right: 0.5357142857rem; }
+ .small-block-grid-7 > li:nth-of-type(7n+6) {
+ padding-left: 1.3392857143rem;
+ padding-right: 0.2678571429rem; }
+ .small-block-grid-7 > li:nth-of-type(7n) {
+ padding-left: 1.6071428571rem;
+ padding-right: 0rem; }
+ .small-block-grid-8 > li {
+ list-style: none;
+ width: 12.5%; }
+ .small-block-grid-8 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-8 > li:nth-of-type(8n+1) {
+ clear: both; }
+ .small-block-grid-8 > li:nth-of-type(8n+1) {
+ padding-left: 0rem;
+ padding-right: 1.640625rem; }
+ .small-block-grid-8 > li:nth-of-type(8n+2) {
+ padding-left: 0.234375rem;
+ padding-right: 1.40625rem; }
+ .small-block-grid-8 > li:nth-of-type(8n+3) {
+ padding-left: 0.46875rem;
+ padding-right: 1.171875rem; }
+ .small-block-grid-8 > li:nth-of-type(8n+4) {
+ padding-left: 0.703125rem;
+ padding-right: 0.9375rem; }
+ .small-block-grid-8 > li:nth-of-type(8n+5) {
+ padding-left: 0.9375rem;
+ padding-right: 0.703125rem; }
+ .small-block-grid-8 > li:nth-of-type(8n+6) {
+ padding-left: 1.171875rem;
+ padding-right: 0.46875rem; }
+ .small-block-grid-8 > li:nth-of-type(8n+7) {
+ padding-left: 1.40625rem;
+ padding-right: 0.234375rem; }
+ .small-block-grid-8 > li:nth-of-type(8n) {
+ padding-left: 1.640625rem;
+ padding-right: 0rem; }
+ .small-block-grid-9 > li {
+ list-style: none;
+ width: 11.1111111111%; }
+ .small-block-grid-9 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-9 > li:nth-of-type(9n+1) {
+ clear: both; }
+ .small-block-grid-9 > li:nth-of-type(9n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6666666667rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+2) {
+ padding-left: 0.2083333333rem;
+ padding-right: 1.4583333333rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+3) {
+ padding-left: 0.4166666667rem;
+ padding-right: 1.25rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+4) {
+ padding-left: 0.625rem;
+ padding-right: 1.0416666667rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+5) {
+ padding-left: 0.8333333333rem;
+ padding-right: 0.8333333333rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+6) {
+ padding-left: 1.0416666667rem;
+ padding-right: 0.625rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+7) {
+ padding-left: 1.25rem;
+ padding-right: 0.4166666667rem; }
+ .small-block-grid-9 > li:nth-of-type(9n+8) {
+ padding-left: 1.4583333333rem;
+ padding-right: 0.2083333333rem; }
+ .small-block-grid-9 > li:nth-of-type(9n) {
+ padding-left: 1.6666666667rem;
+ padding-right: 0rem; }
+ .small-block-grid-10 > li {
+ list-style: none;
+ width: 10%; }
+ .small-block-grid-10 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-10 > li:nth-of-type(10n+1) {
+ clear: both; }
+ .small-block-grid-10 > li:nth-of-type(10n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6875rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+2) {
+ padding-left: 0.1875rem;
+ padding-right: 1.5rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+3) {
+ padding-left: 0.375rem;
+ padding-right: 1.3125rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+4) {
+ padding-left: 0.5625rem;
+ padding-right: 1.125rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+5) {
+ padding-left: 0.75rem;
+ padding-right: 0.9375rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+6) {
+ padding-left: 0.9375rem;
+ padding-right: 0.75rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+7) {
+ padding-left: 1.125rem;
+ padding-right: 0.5625rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+8) {
+ padding-left: 1.3125rem;
+ padding-right: 0.375rem; }
+ .small-block-grid-10 > li:nth-of-type(10n+9) {
+ padding-left: 1.5rem;
+ padding-right: 0.1875rem; }
+ .small-block-grid-10 > li:nth-of-type(10n) {
+ padding-left: 1.6875rem;
+ padding-right: 0rem; }
+ .small-block-grid-11 > li {
+ list-style: none;
+ width: 9.0909090909%; }
+ .small-block-grid-11 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-11 > li:nth-of-type(11n+1) {
+ clear: both; }
+ .small-block-grid-11 > li:nth-of-type(11n+1) {
+ padding-left: 0.0rem;
+ padding-right: 1.7045454545rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+2) {
+ padding-left: 0.1704545455rem;
+ padding-right: 1.5340909091rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+3) {
+ padding-left: 0.3409090909rem;
+ padding-right: 1.3636363636rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+4) {
+ padding-left: 0.5113636364rem;
+ padding-right: 1.1931818182rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+5) {
+ padding-left: 0.6818181818rem;
+ padding-right: 1.0227272727rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+6) {
+ padding-left: 0.8522727273rem;
+ padding-right: 0.8522727273rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+7) {
+ padding-left: 1.0227272727rem;
+ padding-right: 0.6818181818rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+8) {
+ padding-left: 1.1931818182rem;
+ padding-right: 0.5113636364rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+9) {
+ padding-left: 1.3636363636rem;
+ padding-right: 0.3409090909rem; }
+ .small-block-grid-11 > li:nth-of-type(11n+10) {
+ padding-left: 1.5340909091rem;
+ padding-right: 0.1704545455rem; }
+ .small-block-grid-11 > li:nth-of-type(11n) {
+ padding-left: 1.7045454545rem;
+ padding-right: 0.0rem; }
+ .small-block-grid-12 > li {
+ list-style: none;
+ width: 8.3333333333%; }
+ .small-block-grid-12 > li:nth-of-type(1n) {
+ clear: none; }
+ .small-block-grid-12 > li:nth-of-type(12n+1) {
+ clear: both; }
+ .small-block-grid-12 > li:nth-of-type(12n+1) {
+ padding-left: 0rem;
+ padding-right: 1.71875rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+2) {
+ padding-left: 0.15625rem;
+ padding-right: 1.5625rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+3) {
+ padding-left: 0.3125rem;
+ padding-right: 1.40625rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+4) {
+ padding-left: 0.46875rem;
+ padding-right: 1.25rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+5) {
+ padding-left: 0.625rem;
+ padding-right: 1.09375rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+6) {
+ padding-left: 0.78125rem;
+ padding-right: 0.9375rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+7) {
+ padding-left: 0.9375rem;
+ padding-right: 0.78125rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+8) {
+ padding-left: 1.09375rem;
+ padding-right: 0.625rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+9) {
+ padding-left: 1.25rem;
+ padding-right: 0.46875rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+10) {
+ padding-left: 1.40625rem;
+ padding-right: 0.3125rem; }
+ .small-block-grid-12 > li:nth-of-type(12n+11) {
+ padding-left: 1.5625rem;
+ padding-right: 0.15625rem; }
+ .small-block-grid-12 > li:nth-of-type(12n) {
+ padding-left: 1.71875rem;
+ padding-right: 0rem; } }
+
+@media only screen and (min-width:40.063em) {
+ .medium-block-grid-1 > li {
+ list-style: none;
+ width: 100%; }
+ .medium-block-grid-1 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-1 > li:nth-of-type(1n+1) {
+ clear: both; }
+ .medium-block-grid-1 > li:nth-of-type(1n) {
+ padding-left: 0rem;
+ padding-right: 0rem; }
+ .medium-block-grid-2 > li {
+ list-style: none;
+ width: 50%; }
+ .medium-block-grid-2 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-2 > li:nth-of-type(2n+1) {
+ clear: both; }
+ .medium-block-grid-2 > li:nth-of-type(2n+1) {
+ padding-left: 0rem;
+ padding-right: 0.9375rem; }
+ .medium-block-grid-2 > li:nth-of-type(2n) {
+ padding-left: 0.9375rem;
+ padding-right: 0rem; }
+ .medium-block-grid-3 > li {
+ list-style: none;
+ width: 33.3333333333%; }
+ .medium-block-grid-3 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-3 > li:nth-of-type(3n+1) {
+ clear: both; }
+ .medium-block-grid-3 > li:nth-of-type(3n+1) {
+ padding-left: 0rem;
+ padding-right: 1.25rem; }
+ .medium-block-grid-3 > li:nth-of-type(3n+2) {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem; }
+ .medium-block-grid-3 > li:nth-of-type(3n) {
+ padding-left: 1.25rem;
+ padding-right: 0rem; }
+ .medium-block-grid-4 > li {
+ list-style: none;
+ width: 25%; }
+ .medium-block-grid-4 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-4 > li:nth-of-type(4n+1) {
+ clear: both; }
+ .medium-block-grid-4 > li:nth-of-type(4n+1) {
+ padding-left: 0rem;
+ padding-right: 1.40625rem; }
+ .medium-block-grid-4 > li:nth-of-type(4n+2) {
+ padding-left: 0.46875rem;
+ padding-right: 0.9375rem; }
+ .medium-block-grid-4 > li:nth-of-type(4n+3) {
+ padding-left: 0.9375rem;
+ padding-right: 0.46875rem; }
+ .medium-block-grid-4 > li:nth-of-type(4n) {
+ padding-left: 1.40625rem;
+ padding-right: 0rem; }
+ .medium-block-grid-5 > li {
+ list-style: none;
+ width: 20%; }
+ .medium-block-grid-5 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-5 > li:nth-of-type(5n+1) {
+ clear: both; }
+ .medium-block-grid-5 > li:nth-of-type(5n+1) {
+ padding-left: 0rem;
+ padding-right: 1.5rem; }
+ .medium-block-grid-5 > li:nth-of-type(5n+2) {
+ padding-left: 0.375rem;
+ padding-right: 1.125rem; }
+ .medium-block-grid-5 > li:nth-of-type(5n+3) {
+ padding-left: 0.75rem;
+ padding-right: 0.75rem; }
+ .medium-block-grid-5 > li:nth-of-type(5n+4) {
+ padding-left: 1.125rem;
+ padding-right: 0.375rem; }
+ .medium-block-grid-5 > li:nth-of-type(5n) {
+ padding-left: 1.5rem;
+ padding-right: 0rem; }
+ .medium-block-grid-6 > li {
+ list-style: none;
+ width: 16.6666666667%; }
+ .medium-block-grid-6 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-6 > li:nth-of-type(6n+1) {
+ clear: both; }
+ .medium-block-grid-6 > li:nth-of-type(6n+1) {
+ padding-left: 0rem;
+ padding-right: 1.5625rem; }
+ .medium-block-grid-6 > li:nth-of-type(6n+2) {
+ padding-left: 0.3125rem;
+ padding-right: 1.25rem; }
+ .medium-block-grid-6 > li:nth-of-type(6n+3) {
+ padding-left: 0.625rem;
+ padding-right: 0.9375rem; }
+ .medium-block-grid-6 > li:nth-of-type(6n+4) {
+ padding-left: 0.9375rem;
+ padding-right: 0.625rem; }
+ .medium-block-grid-6 > li:nth-of-type(6n+5) {
+ padding-left: 1.25rem;
+ padding-right: 0.3125rem; }
+ .medium-block-grid-6 > li:nth-of-type(6n) {
+ padding-left: 1.5625rem;
+ padding-right: 0rem; }
+ .medium-block-grid-7 > li {
+ list-style: none;
+ width: 14.2857142857%; }
+ .medium-block-grid-7 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-7 > li:nth-of-type(7n+1) {
+ clear: both; }
+ .medium-block-grid-7 > li:nth-of-type(7n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6071428571rem; }
+ .medium-block-grid-7 > li:nth-of-type(7n+2) {
+ padding-left: 0.2678571429rem;
+ padding-right: 1.3392857143rem; }
+ .medium-block-grid-7 > li:nth-of-type(7n+3) {
+ padding-left: 0.5357142857rem;
+ padding-right: 1.0714285714rem; }
+ .medium-block-grid-7 > li:nth-of-type(7n+4) {
+ padding-left: 0.8035714286rem;
+ padding-right: 0.8035714286rem; }
+ .medium-block-grid-7 > li:nth-of-type(7n+5) {
+ padding-left: 1.0714285714rem;
+ padding-right: 0.5357142857rem; }
+ .medium-block-grid-7 > li:nth-of-type(7n+6) {
+ padding-left: 1.3392857143rem;
+ padding-right: 0.2678571429rem; }
+ .medium-block-grid-7 > li:nth-of-type(7n) {
+ padding-left: 1.6071428571rem;
+ padding-right: 0rem; }
+ .medium-block-grid-8 > li {
+ list-style: none;
+ width: 12.5%; }
+ .medium-block-grid-8 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-8 > li:nth-of-type(8n+1) {
+ clear: both; }
+ .medium-block-grid-8 > li:nth-of-type(8n+1) {
+ padding-left: 0rem;
+ padding-right: 1.640625rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n+2) {
+ padding-left: 0.234375rem;
+ padding-right: 1.40625rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n+3) {
+ padding-left: 0.46875rem;
+ padding-right: 1.171875rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n+4) {
+ padding-left: 0.703125rem;
+ padding-right: 0.9375rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n+5) {
+ padding-left: 0.9375rem;
+ padding-right: 0.703125rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n+6) {
+ padding-left: 1.171875rem;
+ padding-right: 0.46875rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n+7) {
+ padding-left: 1.40625rem;
+ padding-right: 0.234375rem; }
+ .medium-block-grid-8 > li:nth-of-type(8n) {
+ padding-left: 1.640625rem;
+ padding-right: 0rem; }
+ .medium-block-grid-9 > li {
+ list-style: none;
+ width: 11.1111111111%; }
+ .medium-block-grid-9 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-9 > li:nth-of-type(9n+1) {
+ clear: both; }
+ .medium-block-grid-9 > li:nth-of-type(9n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6666666667rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+2) {
+ padding-left: 0.2083333333rem;
+ padding-right: 1.4583333333rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+3) {
+ padding-left: 0.4166666667rem;
+ padding-right: 1.25rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+4) {
+ padding-left: 0.625rem;
+ padding-right: 1.0416666667rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+5) {
+ padding-left: 0.8333333333rem;
+ padding-right: 0.8333333333rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+6) {
+ padding-left: 1.0416666667rem;
+ padding-right: 0.625rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+7) {
+ padding-left: 1.25rem;
+ padding-right: 0.4166666667rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n+8) {
+ padding-left: 1.4583333333rem;
+ padding-right: 0.2083333333rem; }
+ .medium-block-grid-9 > li:nth-of-type(9n) {
+ padding-left: 1.6666666667rem;
+ padding-right: 0rem; }
+ .medium-block-grid-10 > li {
+ list-style: none;
+ width: 10%; }
+ .medium-block-grid-10 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-10 > li:nth-of-type(10n+1) {
+ clear: both; }
+ .medium-block-grid-10 > li:nth-of-type(10n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6875rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+2) {
+ padding-left: 0.1875rem;
+ padding-right: 1.5rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+3) {
+ padding-left: 0.375rem;
+ padding-right: 1.3125rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+4) {
+ padding-left: 0.5625rem;
+ padding-right: 1.125rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+5) {
+ padding-left: 0.75rem;
+ padding-right: 0.9375rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+6) {
+ padding-left: 0.9375rem;
+ padding-right: 0.75rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+7) {
+ padding-left: 1.125rem;
+ padding-right: 0.5625rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+8) {
+ padding-left: 1.3125rem;
+ padding-right: 0.375rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n+9) {
+ padding-left: 1.5rem;
+ padding-right: 0.1875rem; }
+ .medium-block-grid-10 > li:nth-of-type(10n) {
+ padding-left: 1.6875rem;
+ padding-right: 0rem; }
+ .medium-block-grid-11 > li {
+ list-style: none;
+ width: 9.0909090909%; }
+ .medium-block-grid-11 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-11 > li:nth-of-type(11n+1) {
+ clear: both; }
+ .medium-block-grid-11 > li:nth-of-type(11n+1) {
+ padding-left: 0.0rem;
+ padding-right: 1.7045454545rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+2) {
+ padding-left: 0.1704545455rem;
+ padding-right: 1.5340909091rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+3) {
+ padding-left: 0.3409090909rem;
+ padding-right: 1.3636363636rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+4) {
+ padding-left: 0.5113636364rem;
+ padding-right: 1.1931818182rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+5) {
+ padding-left: 0.6818181818rem;
+ padding-right: 1.0227272727rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+6) {
+ padding-left: 0.8522727273rem;
+ padding-right: 0.8522727273rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+7) {
+ padding-left: 1.0227272727rem;
+ padding-right: 0.6818181818rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+8) {
+ padding-left: 1.1931818182rem;
+ padding-right: 0.5113636364rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+9) {
+ padding-left: 1.3636363636rem;
+ padding-right: 0.3409090909rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n+10) {
+ padding-left: 1.5340909091rem;
+ padding-right: 0.1704545455rem; }
+ .medium-block-grid-11 > li:nth-of-type(11n) {
+ padding-left: 1.7045454545rem;
+ padding-right: 0.0rem; }
+ .medium-block-grid-12 > li {
+ list-style: none;
+ width: 8.3333333333%; }
+ .medium-block-grid-12 > li:nth-of-type(1n) {
+ clear: none; }
+ .medium-block-grid-12 > li:nth-of-type(12n+1) {
+ clear: both; }
+ .medium-block-grid-12 > li:nth-of-type(12n+1) {
+ padding-left: 0rem;
+ padding-right: 1.71875rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+2) {
+ padding-left: 0.15625rem;
+ padding-right: 1.5625rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+3) {
+ padding-left: 0.3125rem;
+ padding-right: 1.40625rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+4) {
+ padding-left: 0.46875rem;
+ padding-right: 1.25rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+5) {
+ padding-left: 0.625rem;
+ padding-right: 1.09375rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+6) {
+ padding-left: 0.78125rem;
+ padding-right: 0.9375rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+7) {
+ padding-left: 0.9375rem;
+ padding-right: 0.78125rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+8) {
+ padding-left: 1.09375rem;
+ padding-right: 0.625rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+9) {
+ padding-left: 1.25rem;
+ padding-right: 0.46875rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+10) {
+ padding-left: 1.40625rem;
+ padding-right: 0.3125rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n+11) {
+ padding-left: 1.5625rem;
+ padding-right: 0.15625rem; }
+ .medium-block-grid-12 > li:nth-of-type(12n) {
+ padding-left: 1.71875rem;
+ padding-right: 0rem; } }
+
+@media only screen and (min-width:64.063em) {
+ .large-block-grid-1 > li {
+ list-style: none;
+ width: 100%; }
+ .large-block-grid-1 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-1 > li:nth-of-type(1n+1) {
+ clear: both; }
+ .large-block-grid-1 > li:nth-of-type(1n) {
+ padding-left: 0rem;
+ padding-right: 0rem; }
+ .large-block-grid-2 > li {
+ list-style: none;
+ width: 50%; }
+ .large-block-grid-2 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-2 > li:nth-of-type(2n+1) {
+ clear: both; }
+ .large-block-grid-2 > li:nth-of-type(2n+1) {
+ padding-left: 0rem;
+ padding-right: 0.9375rem; }
+ .large-block-grid-2 > li:nth-of-type(2n) {
+ padding-left: 0.9375rem;
+ padding-right: 0rem; }
+ .large-block-grid-3 > li {
+ list-style: none;
+ width: 33.3333333333%; }
+ .large-block-grid-3 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-3 > li:nth-of-type(3n+1) {
+ clear: both; }
+ .large-block-grid-3 > li:nth-of-type(3n+1) {
+ padding-left: 0rem;
+ padding-right: 1.25rem; }
+ .large-block-grid-3 > li:nth-of-type(3n+2) {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem; }
+ .large-block-grid-3 > li:nth-of-type(3n) {
+ padding-left: 1.25rem;
+ padding-right: 0rem; }
+ .large-block-grid-4 > li {
+ list-style: none;
+ width: 25%; }
+ .large-block-grid-4 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-4 > li:nth-of-type(4n+1) {
+ clear: both; }
+ .large-block-grid-4 > li:nth-of-type(4n+1) {
+ padding-left: 0rem;
+ padding-right: 1.40625rem; }
+ .large-block-grid-4 > li:nth-of-type(4n+2) {
+ padding-left: 0.46875rem;
+ padding-right: 0.9375rem; }
+ .large-block-grid-4 > li:nth-of-type(4n+3) {
+ padding-left: 0.9375rem;
+ padding-right: 0.46875rem; }
+ .large-block-grid-4 > li:nth-of-type(4n) {
+ padding-left: 1.40625rem;
+ padding-right: 0rem; }
+ .large-block-grid-5 > li {
+ list-style: none;
+ width: 20%; }
+ .large-block-grid-5 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-5 > li:nth-of-type(5n+1) {
+ clear: both; }
+ .large-block-grid-5 > li:nth-of-type(5n+1) {
+ padding-left: 0rem;
+ padding-right: 1.5rem; }
+ .large-block-grid-5 > li:nth-of-type(5n+2) {
+ padding-left: 0.375rem;
+ padding-right: 1.125rem; }
+ .large-block-grid-5 > li:nth-of-type(5n+3) {
+ padding-left: 0.75rem;
+ padding-right: 0.75rem; }
+ .large-block-grid-5 > li:nth-of-type(5n+4) {
+ padding-left: 1.125rem;
+ padding-right: 0.375rem; }
+ .large-block-grid-5 > li:nth-of-type(5n) {
+ padding-left: 1.5rem;
+ padding-right: 0rem; }
+ .large-block-grid-6 > li {
+ list-style: none;
+ width: 16.6666666667%; }
+ .large-block-grid-6 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-6 > li:nth-of-type(6n+1) {
+ clear: both; }
+ .large-block-grid-6 > li:nth-of-type(6n+1) {
+ padding-left: 0rem;
+ padding-right: 1.5625rem; }
+ .large-block-grid-6 > li:nth-of-type(6n+2) {
+ padding-left: 0.3125rem;
+ padding-right: 1.25rem; }
+ .large-block-grid-6 > li:nth-of-type(6n+3) {
+ padding-left: 0.625rem;
+ padding-right: 0.9375rem; }
+ .large-block-grid-6 > li:nth-of-type(6n+4) {
+ padding-left: 0.9375rem;
+ padding-right: 0.625rem; }
+ .large-block-grid-6 > li:nth-of-type(6n+5) {
+ padding-left: 1.25rem;
+ padding-right: 0.3125rem; }
+ .large-block-grid-6 > li:nth-of-type(6n) {
+ padding-left: 1.5625rem;
+ padding-right: 0rem; }
+ .large-block-grid-7 > li {
+ list-style: none;
+ width: 14.2857142857%; }
+ .large-block-grid-7 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-7 > li:nth-of-type(7n+1) {
+ clear: both; }
+ .large-block-grid-7 > li:nth-of-type(7n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6071428571rem; }
+ .large-block-grid-7 > li:nth-of-type(7n+2) {
+ padding-left: 0.2678571429rem;
+ padding-right: 1.3392857143rem; }
+ .large-block-grid-7 > li:nth-of-type(7n+3) {
+ padding-left: 0.5357142857rem;
+ padding-right: 1.0714285714rem; }
+ .large-block-grid-7 > li:nth-of-type(7n+4) {
+ padding-left: 0.8035714286rem;
+ padding-right: 0.8035714286rem; }
+ .large-block-grid-7 > li:nth-of-type(7n+5) {
+ padding-left: 1.0714285714rem;
+ padding-right: 0.5357142857rem; }
+ .large-block-grid-7 > li:nth-of-type(7n+6) {
+ padding-left: 1.3392857143rem;
+ padding-right: 0.2678571429rem; }
+ .large-block-grid-7 > li:nth-of-type(7n) {
+ padding-left: 1.6071428571rem;
+ padding-right: 0rem; }
+ .large-block-grid-8 > li {
+ list-style: none;
+ width: 12.5%; }
+ .large-block-grid-8 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-8 > li:nth-of-type(8n+1) {
+ clear: both; }
+ .large-block-grid-8 > li:nth-of-type(8n+1) {
+ padding-left: 0rem;
+ padding-right: 1.640625rem; }
+ .large-block-grid-8 > li:nth-of-type(8n+2) {
+ padding-left: 0.234375rem;
+ padding-right: 1.40625rem; }
+ .large-block-grid-8 > li:nth-of-type(8n+3) {
+ padding-left: 0.46875rem;
+ padding-right: 1.171875rem; }
+ .large-block-grid-8 > li:nth-of-type(8n+4) {
+ padding-left: 0.703125rem;
+ padding-right: 0.9375rem; }
+ .large-block-grid-8 > li:nth-of-type(8n+5) {
+ padding-left: 0.9375rem;
+ padding-right: 0.703125rem; }
+ .large-block-grid-8 > li:nth-of-type(8n+6) {
+ padding-left: 1.171875rem;
+ padding-right: 0.46875rem; }
+ .large-block-grid-8 > li:nth-of-type(8n+7) {
+ padding-left: 1.40625rem;
+ padding-right: 0.234375rem; }
+ .large-block-grid-8 > li:nth-of-type(8n) {
+ padding-left: 1.640625rem;
+ padding-right: 0rem; }
+ .large-block-grid-9 > li {
+ list-style: none;
+ width: 11.1111111111%; }
+ .large-block-grid-9 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-9 > li:nth-of-type(9n+1) {
+ clear: both; }
+ .large-block-grid-9 > li:nth-of-type(9n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6666666667rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+2) {
+ padding-left: 0.2083333333rem;
+ padding-right: 1.4583333333rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+3) {
+ padding-left: 0.4166666667rem;
+ padding-right: 1.25rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+4) {
+ padding-left: 0.625rem;
+ padding-right: 1.0416666667rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+5) {
+ padding-left: 0.8333333333rem;
+ padding-right: 0.8333333333rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+6) {
+ padding-left: 1.0416666667rem;
+ padding-right: 0.625rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+7) {
+ padding-left: 1.25rem;
+ padding-right: 0.4166666667rem; }
+ .large-block-grid-9 > li:nth-of-type(9n+8) {
+ padding-left: 1.4583333333rem;
+ padding-right: 0.2083333333rem; }
+ .large-block-grid-9 > li:nth-of-type(9n) {
+ padding-left: 1.6666666667rem;
+ padding-right: 0rem; }
+ .large-block-grid-10 > li {
+ list-style: none;
+ width: 10%; }
+ .large-block-grid-10 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-10 > li:nth-of-type(10n+1) {
+ clear: both; }
+ .large-block-grid-10 > li:nth-of-type(10n+1) {
+ padding-left: 0rem;
+ padding-right: 1.6875rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+2) {
+ padding-left: 0.1875rem;
+ padding-right: 1.5rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+3) {
+ padding-left: 0.375rem;
+ padding-right: 1.3125rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+4) {
+ padding-left: 0.5625rem;
+ padding-right: 1.125rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+5) {
+ padding-left: 0.75rem;
+ padding-right: 0.9375rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+6) {
+ padding-left: 0.9375rem;
+ padding-right: 0.75rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+7) {
+ padding-left: 1.125rem;
+ padding-right: 0.5625rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+8) {
+ padding-left: 1.3125rem;
+ padding-right: 0.375rem; }
+ .large-block-grid-10 > li:nth-of-type(10n+9) {
+ padding-left: 1.5rem;
+ padding-right: 0.1875rem; }
+ .large-block-grid-10 > li:nth-of-type(10n) {
+ padding-left: 1.6875rem;
+ padding-right: 0rem; }
+ .large-block-grid-11 > li {
+ list-style: none;
+ width: 9.0909090909%; }
+ .large-block-grid-11 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-11 > li:nth-of-type(11n+1) {
+ clear: both; }
+ .large-block-grid-11 > li:nth-of-type(11n+1) {
+ padding-left: 0.0rem;
+ padding-right: 1.7045454545rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+2) {
+ padding-left: 0.1704545455rem;
+ padding-right: 1.5340909091rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+3) {
+ padding-left: 0.3409090909rem;
+ padding-right: 1.3636363636rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+4) {
+ padding-left: 0.5113636364rem;
+ padding-right: 1.1931818182rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+5) {
+ padding-left: 0.6818181818rem;
+ padding-right: 1.0227272727rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+6) {
+ padding-left: 0.8522727273rem;
+ padding-right: 0.8522727273rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+7) {
+ padding-left: 1.0227272727rem;
+ padding-right: 0.6818181818rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+8) {
+ padding-left: 1.1931818182rem;
+ padding-right: 0.5113636364rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+9) {
+ padding-left: 1.3636363636rem;
+ padding-right: 0.3409090909rem; }
+ .large-block-grid-11 > li:nth-of-type(11n+10) {
+ padding-left: 1.5340909091rem;
+ padding-right: 0.1704545455rem; }
+ .large-block-grid-11 > li:nth-of-type(11n) {
+ padding-left: 1.7045454545rem;
+ padding-right: 0.0rem; }
+ .large-block-grid-12 > li {
+ list-style: none;
+ width: 8.3333333333%; }
+ .large-block-grid-12 > li:nth-of-type(1n) {
+ clear: none; }
+ .large-block-grid-12 > li:nth-of-type(12n+1) {
+ clear: both; }
+ .large-block-grid-12 > li:nth-of-type(12n+1) {
+ padding-left: 0rem;
+ padding-right: 1.71875rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+2) {
+ padding-left: 0.15625rem;
+ padding-right: 1.5625rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+3) {
+ padding-left: 0.3125rem;
+ padding-right: 1.40625rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+4) {
+ padding-left: 0.46875rem;
+ padding-right: 1.25rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+5) {
+ padding-left: 0.625rem;
+ padding-right: 1.09375rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+6) {
+ padding-left: 0.78125rem;
+ padding-right: 0.9375rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+7) {
+ padding-left: 0.9375rem;
+ padding-right: 0.78125rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+8) {
+ padding-left: 1.09375rem;
+ padding-right: 0.625rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+9) {
+ padding-left: 1.25rem;
+ padding-right: 0.46875rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+10) {
+ padding-left: 1.40625rem;
+ padding-right: 0.3125rem; }
+ .large-block-grid-12 > li:nth-of-type(12n+11) {
+ padding-left: 1.5625rem;
+ padding-right: 0.15625rem; }
+ .large-block-grid-12 > li:nth-of-type(12n) {
+ padding-left: 1.71875rem;
+ padding-right: 0rem; } }
+
+.breadcrumbs {
+ border-style: solid;
+ border-width: 1px;
+ display: block;
+ list-style: none;
+ margin-left: 0;
+ overflow: hidden;
+ padding: 0.5625rem 0.875rem 0.5625rem;
+ background-color: transparent;
+ border-color: transparent;
+ border-radius: 3px; }
+ .breadcrumbs > * {
+ color: #0065a0;
+ float: left;
+ font-size: 0.6875rem;
+ line-height: 0.6875rem;
+ margin: 0;
+ text-transform: uppercase; }
+ .breadcrumbs > *:hover a, .breadcrumbs > *:focus a {
+ text-decoration: underline; }
+ .breadcrumbs > * a {
+ color: #0065a0; }
+ .breadcrumbs > *.current {
+ color: #95d500;
+ cursor: default; }
+ .breadcrumbs > *.current a {
+ color: #95d500;
+ cursor: default; }
+ .breadcrumbs > *.current:hover, .breadcrumbs > *.current:hover a, .breadcrumbs > *.current:focus, .breadcrumbs > *.current:focus a {
+ text-decoration: none; }
+ .breadcrumbs > *.unavailable {
+ color: #999999; }
+ .breadcrumbs > *.unavailable a {
+ color: #999999; }
+ .breadcrumbs > *.unavailable:hover, .breadcrumbs > *.unavailable:hover a, .breadcrumbs > *.unavailable:focus, .breadcrumbs > *.unavailable a:focus {
+ color: #999999;
+ cursor: false;
+ text-decoration: none; }
+ .breadcrumbs > *:before {
+ color: #AAAAAA;
+ content: ">";
+ margin: 0 0.75rem;
+ position: relative;
+ top: 1px; }
+ .breadcrumbs > *:first-child:before {
+ content: " ";
+ margin: 0; }
+
+/* Accessibility - hides the forward slash */
+[aria-label="breadcrumbs"] [aria-hidden="true"]:after {
+ content: "/"; }
+
+button, .button {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ border-radius: 0;
+ border-style: solid;
+ border-width: 0;
+ cursor: pointer;
+ font-family: "Open Sans", sans-serif;
+ font-weight: normal;
+ line-height: normal;
+ margin: 0 0 1.25rem;
+ position: relative;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ padding: 1rem 2rem 1.0625rem 2rem;
+ font-size: 1rem;
+ background-color: #008CBA;
+ border-color: #007095;
+ color: #FFFFFF;
+ transition: background-color 300ms ease-out; }
+ button:hover, button:focus, .button:hover, .button:focus {
+ background-color: #007095; }
+ button:hover, button:focus, .button:hover, .button:focus {
+ color: #FFFFFF; }
+ button.secondary, .button.secondary {
+ background-color: #e7e7e7;
+ border-color: #b9b9b9;
+ color: #333333; }
+ button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus {
+ background-color: #b9b9b9; }
+ button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus {
+ color: #333333; }
+ button.success, .button.success {
+ background-color: #43AC6A;
+ border-color: #368a55;
+ color: #FFFFFF; }
+ button.success:hover, button.success:focus, .button.success:hover, .button.success:focus {
+ background-color: #368a55; }
+ button.success:hover, button.success:focus, .button.success:hover, .button.success:focus {
+ color: #FFFFFF; }
+ button.alert, .button.alert {
+ background-color: #f04124;
+ border-color: #cf2a0e;
+ color: #FFFFFF; }
+ button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus {
+ background-color: #cf2a0e; }
+ button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus {
+ color: #FFFFFF; }
+ button.warning, .button.warning {
+ background-color: #f08a24;
+ border-color: #cf6e0e;
+ color: #FFFFFF; }
+ button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus {
+ background-color: #cf6e0e; }
+ button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus {
+ color: #FFFFFF; }
+ button.info, .button.info {
+ background-color: #a0d3e8;
+ border-color: #61b6d9;
+ color: #333333; }
+ button.info:hover, button.info:focus, .button.info:hover, .button.info:focus {
+ background-color: #61b6d9; }
+ button.info:hover, button.info:focus, .button.info:hover, .button.info:focus {
+ color: #FFFFFF; }
+ button.large, .button.large {
+ padding: 1.125rem 2.25rem 1.1875rem 2.25rem;
+ font-size: 1.25rem; }
+ button.small, .button.small {
+ padding: 0.875rem 1.75rem 0.9375rem 1.75rem;
+ font-size: 0.8125rem; }
+ button.tiny, .button.tiny {
+ padding: 0.625rem 1.25rem 0.6875rem 1.25rem;
+ font-size: 0.6875rem; }
+ button.expand, .button.expand {
+ padding: 1rem 2rem 1.0625rem 2rem;
+ font-size: 1rem;
+ padding-bottom: 1.0625rem;
+ padding-top: 1rem;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ width: 100%; }
+ button.left-align, .button.left-align {
+ text-align: left;
+ text-indent: 0.75rem; }
+ button.right-align, .button.right-align {
+ text-align: right;
+ padding-right: 0.75rem; }
+ button.radius, .button.radius {
+ border-radius: 3px; }
+ button.round, .button.round {
+ border-radius: 1000px; }
+ button.disabled, button[disabled], .button.disabled, .button[disabled] {
+ background-color: #008CBA;
+ border-color: #007095;
+ color: #FFFFFF;
+ box-shadow: none;
+ cursor: default;
+ opacity: 0.7; }
+ button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus {
+ background-color: #007095; }
+ button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus {
+ color: #FFFFFF; }
+ button.disabled:hover, button.disabled:focus, button[disabled]:hover, button[disabled]:focus, .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus {
+ background-color: #008CBA; }
+ button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary {
+ background-color: #e7e7e7;
+ border-color: #b9b9b9;
+ color: #333333;
+ box-shadow: none;
+ cursor: default;
+ opacity: 0.7; }
+ button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
+ background-color: #b9b9b9; }
+ button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
+ color: #333333; }
+ button.disabled.secondary:hover, button.disabled.secondary:focus, button[disabled].secondary:hover, button[disabled].secondary:focus, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
+ background-color: #e7e7e7; }
+ button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success {
+ background-color: #43AC6A;
+ border-color: #368a55;
+ color: #FFFFFF;
+ box-shadow: none;
+ cursor: default;
+ opacity: 0.7; }
+ button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus {
+ background-color: #368a55; }
+ button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus {
+ color: #FFFFFF; }
+ button.disabled.success:hover, button.disabled.success:focus, button[disabled].success:hover, button[disabled].success:focus, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus {
+ background-color: #43AC6A; }
+ button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert {
+ background-color: #f04124;
+ border-color: #cf2a0e;
+ color: #FFFFFF;
+ box-shadow: none;
+ cursor: default;
+ opacity: 0.7; }
+ button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus {
+ background-color: #cf2a0e; }
+ button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus {
+ color: #FFFFFF; }
+ button.disabled.alert:hover, button.disabled.alert:focus, button[disabled].alert:hover, button[disabled].alert:focus, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus {
+ background-color: #f04124; }
+ button.disabled.warning, button[disabled].warning, .button.disabled.warning, .button[disabled].warning {
+ background-color: #f08a24;
+ border-color: #cf6e0e;
+ color: #FFFFFF;
+ box-shadow: none;
+ cursor: default;
+ opacity: 0.7; }
+ button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus {
+ background-color: #cf6e0e; }
+ button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus {
+ color: #FFFFFF; }
+ button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus {
+ background-color: #f08a24; }
+ button.disabled.info, button[disabled].info, .button.disabled.info, .button[disabled].info {
+ background-color: #a0d3e8;
+ border-color: #61b6d9;
+ color: #333333;
+ box-shadow: none;
+ cursor: default;
+ opacity: 0.7; }
+ button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus {
+ background-color: #61b6d9; }
+ button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus {
+ color: #FFFFFF; }
+ button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus {
+ background-color: #a0d3e8; }
+
+button::-moz-focus-inner {
+ border: 0;
+ padding: 0; }
+
+@media only screen and (min-width:40.063em) {
+ button, .button {
+ display: inline-block; } }
+
+.button-group {
+ list-style: none;
+ margin: 0;
+ left: 0; }
+ .button-group:before, .button-group:after {
+ content: " ";
+ display: table; }
+ .button-group:after {
+ clear: both; }
+ .button-group.even-2 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 50%; }
+ .button-group.even-2 li > button, .button-group.even-2 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-2 li:first-child button, .button-group.even-2 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-2 li button, .button-group.even-2 li .button {
+ width: 100%; }
+ .button-group.even-3 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 33.3333333333%; }
+ .button-group.even-3 li > button, .button-group.even-3 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-3 li:first-child button, .button-group.even-3 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-3 li button, .button-group.even-3 li .button {
+ width: 100%; }
+ .button-group.even-4 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 25%; }
+ .button-group.even-4 li > button, .button-group.even-4 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-4 li:first-child button, .button-group.even-4 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-4 li button, .button-group.even-4 li .button {
+ width: 100%; }
+ .button-group.even-5 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 20%; }
+ .button-group.even-5 li > button, .button-group.even-5 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-5 li:first-child button, .button-group.even-5 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-5 li button, .button-group.even-5 li .button {
+ width: 100%; }
+ .button-group.even-6 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 16.6666666667%; }
+ .button-group.even-6 li > button, .button-group.even-6 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-6 li:first-child button, .button-group.even-6 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-6 li button, .button-group.even-6 li .button {
+ width: 100%; }
+ .button-group.even-7 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 14.2857142857%; }
+ .button-group.even-7 li > button, .button-group.even-7 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-7 li:first-child button, .button-group.even-7 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-7 li button, .button-group.even-7 li .button {
+ width: 100%; }
+ .button-group.even-8 li {
+ display: inline-block;
+ margin: 0 -2px;
+ width: 12.5%; }
+ .button-group.even-8 li > button, .button-group.even-8 li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.even-8 li:first-child button, .button-group.even-8 li:first-child .button {
+ border-left: 0; }
+ .button-group.even-8 li button, .button-group.even-8 li .button {
+ width: 100%; }
+ .button-group > li {
+ display: inline-block;
+ margin: 0 -2px; }
+ .button-group > li > button, .button-group > li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group > li:first-child button, .button-group > li:first-child .button {
+ border-left: 0; }
+ .button-group.stack > li {
+ display: block;
+ margin: 0;
+ float: none; }
+ .button-group.stack > li > button, .button-group.stack > li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button {
+ border-left: 0; }
+ .button-group.stack > li > button, .button-group.stack > li .button {
+ border-color: rgba(255, 255, 255, 0.5);
+ border-left-width: 0;
+ border-top: 1px solid;
+ display: block;
+ margin: 0; }
+ .button-group.stack > li > button {
+ width: 100%; }
+ .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button {
+ border-top: 0; }
+ .button-group.stack-for-small > li {
+ display: inline-block;
+ margin: 0 -2px; }
+ .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button {
+ border-left: 0; }
+ @media only screen and (max-width: 40em) {
+ .button-group.stack-for-small > li {
+ display: block;
+ margin: 0;
+ width: 100%; }
+ .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button {
+ border-left: 0; }
+ .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button {
+ border-color: rgba(255, 255, 255, 0.5);
+ border-left-width: 0;
+ border-top: 1px solid;
+ display: block;
+ margin: 0; }
+ .button-group.stack-for-small > li > button {
+ width: 100%; }
+ .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button {
+ border-top: 0; } }
+ .button-group.radius > * {
+ display: inline-block;
+ margin: 0 -2px; }
+ .button-group.radius > * > button, .button-group.radius > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.radius > *:first-child button, .button-group.radius > *:first-child .button {
+ border-left: 0; }
+ .button-group.radius > *, .button-group.radius > * > a, .button-group.radius > * > button, .button-group.radius > * > .button {
+ border-radius: 0; }
+ .button-group.radius > *:first-child, .button-group.radius > *:first-child > a, .button-group.radius > *:first-child > button, .button-group.radius > *:first-child > .button {
+ -webkit-border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px; }
+ .button-group.radius > *:last-child, .button-group.radius > *:last-child > a, .button-group.radius > *:last-child > button, .button-group.radius > *:last-child > .button {
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; }
+ .button-group.radius.stack > * {
+ display: block;
+ margin: 0; }
+ .button-group.radius.stack > * > button, .button-group.radius.stack > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button {
+ border-left: 0; }
+ .button-group.radius.stack > * > button, .button-group.radius.stack > * .button {
+ border-color: rgba(255, 255, 255, 0.5);
+ border-left-width: 0;
+ border-top: 1px solid;
+ display: block;
+ margin: 0; }
+ .button-group.radius.stack > * > button {
+ width: 100%; }
+ .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button {
+ border-top: 0; }
+ .button-group.radius.stack > *, .button-group.radius.stack > * > a, .button-group.radius.stack > * > button, .button-group.radius.stack > * > .button {
+ border-radius: 0; }
+ .button-group.radius.stack > *:first-child, .button-group.radius.stack > *:first-child > a, .button-group.radius.stack > *:first-child > button, .button-group.radius.stack > *:first-child > .button {
+ -webkit-top-left-radius: 3px;
+ -webkit-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px; }
+ .button-group.radius.stack > *:last-child, .button-group.radius.stack > *:last-child > a, .button-group.radius.stack > *:last-child > button, .button-group.radius.stack > *:last-child > .button {
+ -webkit-bottom-left-radius: 3px;
+ -webkit-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px; }
+ @media only screen and (min-width:40.063em) {
+ .button-group.radius.stack-for-small > * {
+ display: inline-block;
+ margin: 0 -2px; }
+ .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button {
+ border-left: 0; }
+ .button-group.radius.stack-for-small > *, .button-group.radius.stack-for-small > * > a, .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * > .button {
+ border-radius: 0; }
+ .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button {
+ -webkit-border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px; }
+ .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button {
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; } }
+ @media only screen and (max-width: 40em) {
+ .button-group.radius.stack-for-small > * {
+ display: block;
+ margin: 0; }
+ .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button {
+ border-left: 0; }
+ .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button {
+ border-color: rgba(255, 255, 255, 0.5);
+ border-left-width: 0;
+ border-top: 1px solid;
+ display: block;
+ margin: 0; }
+ .button-group.radius.stack-for-small > * > button {
+ width: 100%; }
+ .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button {
+ border-top: 0; }
+ .button-group.radius.stack-for-small > *, .button-group.radius.stack-for-small > * > a, .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * > .button {
+ border-radius: 0; }
+ .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button {
+ -webkit-top-left-radius: 3px;
+ -webkit-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px; }
+ .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button {
+ -webkit-bottom-left-radius: 3px;
+ -webkit-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px; } }
+ .button-group.round > * {
+ display: inline-block;
+ margin: 0 -2px; }
+ .button-group.round > * > button, .button-group.round > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.round > *:first-child button, .button-group.round > *:first-child .button {
+ border-left: 0; }
+ .button-group.round > *, .button-group.round > * > a, .button-group.round > * > button, .button-group.round > * > .button {
+ border-radius: 0; }
+ .button-group.round > *:first-child, .button-group.round > *:first-child > a, .button-group.round > *:first-child > button, .button-group.round > *:first-child > .button {
+ -webkit-border-bottom-left-radius: 1000px;
+ -webkit-border-top-left-radius: 1000px;
+ border-bottom-left-radius: 1000px;
+ border-top-left-radius: 1000px; }
+ .button-group.round > *:last-child, .button-group.round > *:last-child > a, .button-group.round > *:last-child > button, .button-group.round > *:last-child > .button {
+ -webkit-border-bottom-right-radius: 1000px;
+ -webkit-border-top-right-radius: 1000px;
+ border-bottom-right-radius: 1000px;
+ border-top-right-radius: 1000px; }
+ .button-group.round.stack > * {
+ display: block;
+ margin: 0; }
+ .button-group.round.stack > * > button, .button-group.round.stack > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button {
+ border-left: 0; }
+ .button-group.round.stack > * > button, .button-group.round.stack > * .button {
+ border-color: rgba(255, 255, 255, 0.5);
+ border-left-width: 0;
+ border-top: 1px solid;
+ display: block;
+ margin: 0; }
+ .button-group.round.stack > * > button {
+ width: 100%; }
+ .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button {
+ border-top: 0; }
+ .button-group.round.stack > *, .button-group.round.stack > * > a, .button-group.round.stack > * > button, .button-group.round.stack > * > .button {
+ border-radius: 0; }
+ .button-group.round.stack > *:first-child, .button-group.round.stack > *:first-child > a, .button-group.round.stack > *:first-child > button, .button-group.round.stack > *:first-child > .button {
+ -webkit-top-left-radius: 1rem;
+ -webkit-top-right-radius: 1rem;
+ border-top-left-radius: 1rem;
+ border-top-right-radius: 1rem; }
+ .button-group.round.stack > *:last-child, .button-group.round.stack > *:last-child > a, .button-group.round.stack > *:last-child > button, .button-group.round.stack > *:last-child > .button {
+ -webkit-bottom-left-radius: 1rem;
+ -webkit-bottom-right-radius: 1rem;
+ border-bottom-left-radius: 1rem;
+ border-bottom-right-radius: 1rem; }
+ @media only screen and (min-width:40.063em) {
+ .button-group.round.stack-for-small > * {
+ display: inline-block;
+ margin: 0 -2px; }
+ .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button {
+ border-left: 0; }
+ .button-group.round.stack-for-small > *, .button-group.round.stack-for-small > * > a, .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * > .button {
+ border-radius: 0; }
+ .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button {
+ -webkit-border-bottom-left-radius: 1000px;
+ -webkit-border-top-left-radius: 1000px;
+ border-bottom-left-radius: 1000px;
+ border-top-left-radius: 1000px; }
+ .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button {
+ -webkit-border-bottom-right-radius: 1000px;
+ -webkit-border-top-right-radius: 1000px;
+ border-bottom-right-radius: 1000px;
+ border-top-right-radius: 1000px; } }
+ @media only screen and (max-width: 40em) {
+ .button-group.round.stack-for-small > * {
+ display: block;
+ margin: 0; }
+ .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button {
+ border-left: 1px solid;
+ border-color: rgba(255, 255, 255, 0.5); }
+ .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button {
+ border-left: 0; }
+ .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button {
+ border-color: rgba(255, 255, 255, 0.5);
+ border-left-width: 0;
+ border-top: 1px solid;
+ display: block;
+ margin: 0; }
+ .button-group.round.stack-for-small > * > button {
+ width: 100%; }
+ .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button {
+ border-top: 0; }
+ .button-group.round.stack-for-small > *, .button-group.round.stack-for-small > * > a, .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * > .button {
+ border-radius: 0; }
+ .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button {
+ -webkit-top-left-radius: 1rem;
+ -webkit-top-right-radius: 1rem;
+ border-top-left-radius: 1rem;
+ border-top-right-radius: 1rem; }
+ .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button {
+ -webkit-bottom-left-radius: 1rem;
+ -webkit-bottom-right-radius: 1rem;
+ border-bottom-left-radius: 1rem;
+ border-bottom-right-radius: 1rem; } }
+
+.button-bar:before, .button-bar:after {
+ content: " ";
+ display: table; }
+.button-bar:after {
+ clear: both; }
+.button-bar .button-group {
+ float: left;
+ margin-right: 0.625rem; }
+ .button-bar .button-group div {
+ overflow: hidden; }
+
+/* Clearing Styles */
+.clearing-thumbs, [data-clearing] {
+ list-style: none;
+ margin-left: 0;
+ margin-bottom: 0; }
+ .clearing-thumbs:before, .clearing-thumbs:after, [data-clearing]:before, [data-clearing]:after {
+ content: " ";
+ display: table; }
+ .clearing-thumbs:after, [data-clearing]:after {
+ clear: both; }
+ .clearing-thumbs li, [data-clearing] li {
+ float: left;
+ margin-right: 10px; }
+ .clearing-thumbs[class*="block-grid-"] li, [data-clearing][class*="block-grid-"] li {
+ margin-right: 0; }
+
+.clearing-blackout {
+ background: #333333;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 998;
+ left: 0; }
+ .clearing-blackout .clearing-close {
+ display: block; }
+
+.clearing-container {
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+ position: relative;
+ z-index: 998; }
+
+.clearing-touch-label {
+ color: #AAAAAA;
+ font-size: .6em;
+ left: 50%;
+ position: absolute;
+ top: 50%; }
+
+.visible-img {
+ height: 95%;
+ position: relative; }
+ .visible-img img {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ -webkit-transform: translateY(-50%) translateX(-50%);
+ -moz-transform: translateY(-50%) translateX(-50%);
+ -ms-transform: translateY(-50%) translateX(-50%);
+ -o-transform: translateY(-50%) translateX(-50%);
+ transform: translateY(-50%) translateX(-50%);
+ max-height: 100%;
+ max-width: 100%; }
+
+.clearing-caption {
+ background: #333333;
+ bottom: 0;
+ color: #CCCCCC;
+ font-size: 0.875em;
+ line-height: 1.3;
+ margin-bottom: 0;
+ padding: 10px 30px 20px;
+ position: absolute;
+ text-align: center;
+ width: 100%;
+ left: 0; }
+
+.clearing-close {
+ color: #CCCCCC;
+ display: none;
+ font-size: 30px;
+ line-height: 1;
+ padding-left: 20px;
+ padding-top: 10px;
+ z-index: 999; }
+ .clearing-close:hover, .clearing-close:focus {
+ color: #CCCCCC; }
+
+.clearing-assembled .clearing-container {
+ height: 100%; }
+ .clearing-assembled .clearing-container .carousel > ul {
+ display: none; }
+
+.clearing-feature li {
+ display: none; }
+ .clearing-feature li.clearing-featured-img {
+ display: block; }
+
+@media only screen and (min-width:40.063em) {
+ .clearing-main-prev, .clearing-main-next {
+ height: 100%;
+ position: absolute;
+ top: 0;
+ width: 40px; }
+ .clearing-main-prev > span, .clearing-main-next > span {
+ border: solid 12px;
+ display: block;
+ height: 0;
+ position: absolute;
+ top: 50%;
+ width: 0; }
+ .clearing-main-prev > span:hover, .clearing-main-next > span:hover {
+ opacity: .8; }
+ .clearing-main-prev {
+ left: 0; }
+ .clearing-main-prev > span {
+ left: 5px;
+ border-color: transparent;
+ border-right-color: #CCCCCC; }
+ .clearing-main-next {
+ right: 0; }
+ .clearing-main-next > span {
+ border-color: transparent;
+ border-left-color: #CCCCCC; }
+ .clearing-main-prev.disabled, .clearing-main-next.disabled {
+ opacity: .3; }
+ .clearing-assembled .clearing-container .carousel {
+ background: rgba(51, 51, 51, 0.8);
+ height: 120px;
+ margin-top: 10px;
+ text-align: center; }
+ .clearing-assembled .clearing-container .carousel > ul {
+ display: inline-block;
+ z-index: 999;
+ height: 100%;
+ position: relative;
+ float: none; }
+ .clearing-assembled .clearing-container .carousel > ul li {
+ clear: none;
+ cursor: pointer;
+ display: block;
+ float: left;
+ margin-right: 0;
+ min-height: inherit;
+ opacity: .4;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ width: 120px; }
+ .clearing-assembled .clearing-container .carousel > ul li.fix-height img {
+ height: 100%;
+ max-width: none; }
+ .clearing-assembled .clearing-container .carousel > ul li a.th {
+ border: none;
+ box-shadow: none;
+ display: block; }
+ .clearing-assembled .clearing-container .carousel > ul li img {
+ cursor: pointer !important;
+ width: 100% !important; }
+ .clearing-assembled .clearing-container .carousel > ul li.visible {
+ opacity: 1; }
+ .clearing-assembled .clearing-container .carousel > ul li:hover {
+ opacity: .8; }
+ .clearing-assembled .clearing-container .visible-img {
+ background: #333333;
+ height: 85%;
+ overflow: hidden; }
+ .clearing-close {
+ padding-left: 0;
+ padding-top: 0;
+ position: absolute;
+ top: 10px;
+ right: 20px; } }
+
+/* Foundation Dropdowns */
+.f-dropdown {
+ display: none;
+ left: -9999px;
+ list-style: none;
+ margin-left: 0;
+ position: absolute;
+ background: #FFFFFF;
+ border: solid 1px #cccccc;
+ font-size: 0.875rem;
+ height: auto;
+ max-height: none;
+ width: 100%;
+ z-index: 89;
+ margin-top: 2px;
+ max-width: 200px; }
+ .f-dropdown.open {
+ display: block; }
+ .f-dropdown > *:first-child {
+ margin-top: 0; }
+ .f-dropdown > *:last-child {
+ margin-bottom: 0; }
+ .f-dropdown:before {
+ border: inset 6px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: transparent transparent #FFFFFF transparent;
+ border-bottom-style: solid;
+ position: absolute;
+ top: -12px;
+ left: 10px;
+ z-index: 89; }
+ .f-dropdown:after {
+ border: inset 7px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: transparent transparent #cccccc transparent;
+ border-bottom-style: solid;
+ position: absolute;
+ top: -14px;
+ left: 9px;
+ z-index: 88; }
+ .f-dropdown.right:before {
+ left: auto;
+ right: 10px; }
+ .f-dropdown.right:after {
+ left: auto;
+ right: 9px; }
+ .f-dropdown.drop-right {
+ display: none;
+ left: -9999px;
+ list-style: none;
+ margin-left: 0;
+ position: absolute;
+ background: #FFFFFF;
+ border: solid 1px #cccccc;
+ font-size: 0.875rem;
+ height: auto;
+ max-height: none;
+ width: 100%;
+ z-index: 89;
+ margin-top: 0;
+ margin-left: 2px;
+ max-width: 200px; }
+ .f-dropdown.drop-right.open {
+ display: block; }
+ .f-dropdown.drop-right > *:first-child {
+ margin-top: 0; }
+ .f-dropdown.drop-right > *:last-child {
+ margin-bottom: 0; }
+ .f-dropdown.drop-right:before {
+ border: inset 6px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: transparent #FFFFFF transparent transparent;
+ border-right-style: solid;
+ position: absolute;
+ top: 10px;
+ left: -12px;
+ z-index: 89; }
+ .f-dropdown.drop-right:after {
+ border: inset 7px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: transparent #cccccc transparent transparent;
+ border-right-style: solid;
+ position: absolute;
+ top: 9px;
+ left: -14px;
+ z-index: 88; }
+ .f-dropdown.drop-left {
+ display: none;
+ left: -9999px;
+ list-style: none;
+ margin-left: 0;
+ position: absolute;
+ background: #FFFFFF;
+ border: solid 1px #cccccc;
+ font-size: 0.875rem;
+ height: auto;
+ max-height: none;
+ width: 100%;
+ z-index: 89;
+ margin-top: 0;
+ margin-left: -2px;
+ max-width: 200px; }
+ .f-dropdown.drop-left.open {
+ display: block; }
+ .f-dropdown.drop-left > *:first-child {
+ margin-top: 0; }
+ .f-dropdown.drop-left > *:last-child {
+ margin-bottom: 0; }
+ .f-dropdown.drop-left:before {
+ border: inset 6px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: transparent transparent transparent #FFFFFF;
+ border-left-style: solid;
+ position: absolute;
+ top: 10px;
+ right: -12px;
+ left: auto;
+ z-index: 89; }
+ .f-dropdown.drop-left:after {
+ border: inset 7px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: transparent transparent transparent #cccccc;
+ border-left-style: solid;
+ position: absolute;
+ top: 9px;
+ right: -14px;
+ left: auto;
+ z-index: 88; }
+ .f-dropdown.drop-top {
+ display: none;
+ left: -9999px;
+ list-style: none;
+ margin-left: 0;
+ position: absolute;
+ background: #FFFFFF;
+ border: solid 1px #cccccc;
+ font-size: 0.875rem;
+ height: auto;
+ max-height: none;
+ width: 100%;
+ z-index: 89;
+ margin-left: 0;
+ margin-top: -2px;
+ max-width: 200px; }
+ .f-dropdown.drop-top.open {
+ display: block; }
+ .f-dropdown.drop-top > *:first-child {
+ margin-top: 0; }
+ .f-dropdown.drop-top > *:last-child {
+ margin-bottom: 0; }
+ .f-dropdown.drop-top:before {
+ border: inset 6px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: #FFFFFF transparent transparent transparent;
+ border-top-style: solid;
+ bottom: -12px;
+ position: absolute;
+ top: auto;
+ left: 10px;
+ right: auto;
+ z-index: 89; }
+ .f-dropdown.drop-top:after {
+ border: inset 7px;
+ content: "";
+ display: block;
+ height: 0;
+ width: 0;
+ border-color: #cccccc transparent transparent transparent;
+ border-top-style: solid;
+ bottom: -14px;
+ position: absolute;
+ top: auto;
+ left: 9px;
+ right: auto;
+ z-index: 88; }
+ .f-dropdown li {
+ cursor: pointer;
+ font-size: 0.875rem;
+ line-height: 1.125rem;
+ margin: 0; }
+ .f-dropdown li:hover, .f-dropdown li:focus {
+ background: #EEEEEE; }
+ .f-dropdown li a {
+ display: block;
+ padding: 0.5rem;
+ color: #555555; }
+ .f-dropdown.content {
+ display: none;
+ left: -9999px;
+ list-style: none;
+ margin-left: 0;
+ position: absolute;
+ background: #FFFFFF;
+ border: solid 1px #cccccc;
+ font-size: 0.875rem;
+ height: auto;
+ max-height: none;
+ padding: 1rem;
+ width: 100%;
+ z-index: 89;
+ max-width: 200px; }
+ .f-dropdown.content.open {
+ display: block; }
+ .f-dropdown.content > *:first-child {
+ margin-top: 0; }
+ .f-dropdown.content > *:last-child {
+ margin-bottom: 0; }
+ .f-dropdown.radius {
+ border-radius: 3px; }
+ .f-dropdown.tiny {
+ max-width: 200px; }
+ .f-dropdown.small {
+ max-width: 300px; }
+ .f-dropdown.medium {
+ max-width: 500px; }
+ .f-dropdown.large {
+ max-width: 800px; }
+ .f-dropdown.mega {
+ width: 100% !important;
+ max-width: 100% !important; }
+ .f-dropdown.mega.open {
+ left: 0 !important; }
+
+.dropdown.button, button.dropdown {
+ position: relative;
+ padding-right: 3.5625rem; }
+ .dropdown.button::after, button.dropdown::after {
+ border-color: #FFFFFF transparent transparent transparent;
+ border-style: solid;
+ content: "";
+ display: block;
+ height: 0;
+ position: absolute;
+ top: 50%;
+ width: 0; }
+ .dropdown.button::after, button.dropdown::after {
+ border-width: 0.375rem;
+ right: 1.40625rem;
+ margin-top: -0.15625rem; }
+ .dropdown.button::after, button.dropdown::after {
+ border-color: #FFFFFF transparent transparent transparent; }
+ .dropdown.button.tiny, button.dropdown.tiny {
+ padding-right: 2.625rem; }
+ .dropdown.button.tiny:after, button.dropdown.tiny:after {
+ border-width: 0.375rem;
+ right: 1.125rem;
+ margin-top: -0.125rem; }
+ .dropdown.button.tiny::after, button.dropdown.tiny::after {
+ border-color: #FFFFFF transparent transparent transparent; }
+ .dropdown.button.small, button.dropdown.small {
+ padding-right: 3.0625rem; }
+ .dropdown.button.small::after, button.dropdown.small::after {
+ border-width: 0.4375rem;
+ right: 1.3125rem;
+ margin-top: -0.15625rem; }
+ .dropdown.button.small::after, button.dropdown.small::after {
+ border-color: #FFFFFF transparent transparent transparent; }
+ .dropdown.button.large, button.dropdown.large {
+ padding-right: 3.625rem; }
+ .dropdown.button.large::after, button.dropdown.large::after {
+ border-width: 0.3125rem;
+ right: 1.71875rem;
+ margin-top: -0.15625rem; }
+ .dropdown.button.large::after, button.dropdown.large::after {
+ border-color: #FFFFFF transparent transparent transparent; }
+ .dropdown.button.secondary:after, button.dropdown.secondary:after {
+ border-color: #333333 transparent transparent transparent; }
+
+.flex-video {
+ height: 0;
+ margin-bottom: 1rem;
+ overflow: hidden;
+ padding-bottom: 67.5%;
+ padding-top: 1.5625rem;
+ position: relative; }
+ .flex-video.widescreen {
+ padding-bottom: 56.34%; }
+ .flex-video.vimeo {
+ padding-top: 0; }
+ .flex-video iframe, .flex-video object, .flex-video embed, .flex-video video {
+ height: 100%;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ left: 0; }
+
+/* Standard Forms */
+form {
+ margin: 0 0 1rem; }
+
+/* Using forms within rows, we need to set some defaults */
+form .row .row {
+ margin: 0 -0.5rem; }
+ form .row .row .column, form .row .row .columns {
+ padding: 0 0.5rem; }
+ form .row .row.collapse {
+ margin: 0; }
+ form .row .row.collapse .column, form .row .row.collapse .columns {
+ padding: 0; }
+ form .row .row.collapse input {
+ -webkit-border-bottom-right-radius: 0;
+ -webkit-border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0; }
+form .row input.column, form .row input.columns, form .row textarea.column, form .row textarea.columns {
+ padding-left: 0.5rem; }
+
+/* Label Styles */
+label {
+ color: #4d4d4d;
+ cursor: pointer;
+ display: block;
+ font-size: 0.875rem;
+ font-weight: normal;
+ line-height: 1.5;
+ margin-bottom: 0;
+ /* Styles for required inputs */ }
+ label.right {
+ float: none !important;
+ text-align: right; }
+ label.inline {
+ margin: 0 0 1rem 0;
+ padding: 0.5625rem 0; }
+ label small {
+ text-transform: capitalize;
+ color: #676767; }
+
+/* Attach elements to the beginning or end of an input */
+.prefix, .postfix {
+ border-style: solid;
+ border-width: 1px;
+ display: block;
+ font-size: 0.875rem;
+ height: 2.3125rem;
+ line-height: 2.3125rem;
+ overflow: visible;
+ padding-bottom: 0;
+ padding-top: 0;
+ position: relative;
+ text-align: center;
+ width: 100%;
+ z-index: 2; }
+
+/* Adjust padding, alignment and radius if pre/post element is a button */
+.postfix.button {
+ border: none;
+ padding-left: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ text-align: center; }
+
+.prefix.button {
+ border: none;
+ padding-left: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ text-align: center; }
+
+.prefix.button.radius {
+ border-radius: 0;
+ -webkit-border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px; }
+
+.postfix.button.radius {
+ border-radius: 0;
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; }
+
+.prefix.button.round {
+ border-radius: 0;
+ -webkit-border-bottom-left-radius: 1000px;
+ -webkit-border-top-left-radius: 1000px;
+ border-bottom-left-radius: 1000px;
+ border-top-left-radius: 1000px; }
+
+.postfix.button.round {
+ border-radius: 0;
+ -webkit-border-bottom-right-radius: 1000px;
+ -webkit-border-top-right-radius: 1000px;
+ border-bottom-right-radius: 1000px;
+ border-top-right-radius: 1000px; }
+
+/* Separate prefix and postfix styles when on span or label so buttons keep their own */
+span.prefix, label.prefix {
+ background: #f2f2f2;
+ border-right: none;
+ color: #333333;
+ border-color: #cccccc; }
+
+span.postfix, label.postfix {
+ background: #f2f2f2;
+ border-left: none;
+ color: #333333;
+ border-color: #cccccc; }
+
+/* We use this to get basic styling on all basic form elements */
+input:not([type]), input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="week"], input[type="email"], input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], input[type="color"], textarea {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ border-radius: 0;
+ background-color: #FFFFFF;
+ border-style: solid;
+ border-width: 1px;
+ border-color: #cccccc;
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ color: rgba(0, 0, 0, 0.75);
+ display: block;
+ font-family: inherit;
+ font-size: 0.875rem;
+ height: 2.3125rem;
+ margin: 0 0 1rem 0;
+ padding: 0.5rem;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: border-color 0.15s linear, background 0.15s linear;
+ -moz-transition: border-color 0.15s linear, background 0.15s linear;
+ -ms-transition: border-color 0.15s linear, background 0.15s linear;
+ -o-transition: border-color 0.15s linear, background 0.15s linear;
+ transition: border-color 0.15s linear, background 0.15s linear; }
+ input:not([type]):focus, input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="week"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="time"]:focus, input[type="url"]:focus, input[type="color"]:focus, textarea:focus {
+ background: #fafafa;
+ border-color: #999999;
+ outline: none; }
+ input:not([type]):disabled, input[type="text"]:disabled, input[type="password"]:disabled, input[type="date"]:disabled, input[type="datetime"]:disabled, input[type="datetime-local"]:disabled, input[type="month"]:disabled, input[type="week"]:disabled, input[type="email"]:disabled, input[type="number"]:disabled, input[type="search"]:disabled, input[type="tel"]:disabled, input[type="time"]:disabled, input[type="url"]:disabled, input[type="color"]:disabled, textarea:disabled {
+ background-color: #DDDDDD;
+ cursor: default; }
+ input:not([type])[disabled], input:not([type])[readonly], fieldset[disabled] input:not([type]), input[type="text"][disabled], input[type="text"][readonly], fieldset[disabled] input[type="text"], input[type="password"][disabled], input[type="password"][readonly], fieldset[disabled] input[type="password"], input[type="date"][disabled], input[type="date"][readonly], fieldset[disabled] input[type="date"], input[type="datetime"][disabled], input[type="datetime"][readonly], fieldset[disabled] input[type="datetime"], input[type="datetime-local"][disabled], input[type="datetime-local"][readonly], fieldset[disabled] input[type="datetime-local"], input[type="month"][disabled], input[type="month"][readonly], fieldset[disabled] input[type="month"], input[type="week"][disabled], input[type="week"][readonly], fieldset[disabled] input[type="week"], input[type="email"][disabled], input[type="email"][readonly], fieldset[disabled] input[type="email"], input[type="number"][disabled], input[type="number"][readonly], fieldset[disabled] input[type="number"], input[type="search"][disabled], input[type="search"][readonly], fieldset[disabled] input[type="search"], input[type="tel"][disabled], input[type="tel"][readonly], fieldset[disabled] input[type="tel"], input[type="time"][disabled], input[type="time"][readonly], fieldset[disabled] input[type="time"], input[type="url"][disabled], input[type="url"][readonly], fieldset[disabled] input[type="url"], input[type="color"][disabled], input[type="color"][readonly], fieldset[disabled] input[type="color"], textarea[disabled], textarea[readonly], fieldset[disabled] textarea {
+ background-color: #DDDDDD;
+ cursor: default; }
+ input:not([type]).radius, input[type="text"].radius, input[type="password"].radius, input[type="date"].radius, input[type="datetime"].radius, input[type="datetime-local"].radius, input[type="month"].radius, input[type="week"].radius, input[type="email"].radius, input[type="number"].radius, input[type="search"].radius, input[type="tel"].radius, input[type="time"].radius, input[type="url"].radius, input[type="color"].radius, textarea.radius {
+ border-radius: 3px; }
+
+form .row .prefix-radius.row.collapse input, form .row .prefix-radius.row.collapse textarea, form .row .prefix-radius.row.collapse select, form .row .prefix-radius.row.collapse button {
+ border-radius: 0;
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; }
+form .row .prefix-radius.row.collapse .prefix {
+ border-radius: 0;
+ -webkit-border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px; }
+form .row .postfix-radius.row.collapse input, form .row .postfix-radius.row.collapse textarea, form .row .postfix-radius.row.collapse select, form .row .postfix-radius.row.collapse button {
+ border-radius: 0;
+ -webkit-border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px; }
+form .row .postfix-radius.row.collapse .postfix {
+ border-radius: 0;
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; }
+form .row .prefix-round.row.collapse input, form .row .prefix-round.row.collapse textarea, form .row .prefix-round.row.collapse select, form .row .prefix-round.row.collapse button {
+ border-radius: 0;
+ -webkit-border-bottom-right-radius: 1000px;
+ -webkit-border-top-right-radius: 1000px;
+ border-bottom-right-radius: 1000px;
+ border-top-right-radius: 1000px; }
+form .row .prefix-round.row.collapse .prefix {
+ border-radius: 0;
+ -webkit-border-bottom-left-radius: 1000px;
+ -webkit-border-top-left-radius: 1000px;
+ border-bottom-left-radius: 1000px;
+ border-top-left-radius: 1000px; }
+form .row .postfix-round.row.collapse input, form .row .postfix-round.row.collapse textarea, form .row .postfix-round.row.collapse select, form .row .postfix-round.row.collapse button {
+ border-radius: 0;
+ -webkit-border-bottom-left-radius: 1000px;
+ -webkit-border-top-left-radius: 1000px;
+ border-bottom-left-radius: 1000px;
+ border-top-left-radius: 1000px; }
+form .row .postfix-round.row.collapse .postfix {
+ border-radius: 0;
+ -webkit-border-bottom-right-radius: 1000px;
+ -webkit-border-top-right-radius: 1000px;
+ border-bottom-right-radius: 1000px;
+ border-top-right-radius: 1000px; }
+
+input[type="submit"] {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ border-radius: 0; }
+
+/* Respect enforced amount of rows for textarea */
+textarea[rows] {
+ height: auto; }
+
+/* Not allow resize out of parent */
+textarea {
+ max-width: 100%; }
+
+::-webkit-input-placeholder {
+ color: #666666; }
+
+:-moz-placeholder {
+ /* Firefox 18- */
+ color: #666666; }
+
+::-moz-placeholder {
+ /* Firefox 19+ */
+ color: #666666; }
+
+:-ms-input-placeholder {
+ color: #666666; }
+
+/* Add height value for select elements to match text input height */
+select {
+ -webkit-appearance: none !important;
+ -moz-appearance: none !important;
+ background-color: #FAFAFA;
+ border-radius: 0;
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+');
+ background-position: 100% center;
+ background-repeat: no-repeat;
+ border-style: solid;
+ border-width: 1px;
+ border-color: #cccccc;
+ color: rgba(0, 0, 0, 0.75);
+ font-family: inherit;
+ font-size: 0.875rem;
+ line-height: normal;
+ padding: 0.5rem;
+ border-radius: 0;
+ height: 2.3125rem; }
+ select::-ms-expand {
+ display: none; }
+ select.radius {
+ border-radius: 3px; }
+ select:focus {
+ background-color: #f3f3f3;
+ border-color: #999999; }
+ select:disabled {
+ background-color: #DDDDDD;
+ cursor: default; }
+ select[multiple] {
+ height: auto; }
+
+/* Adjust margin for form elements below */
+input[type="file"], input[type="checkbox"], input[type="radio"], select {
+ margin: 0 0 1rem 0; }
+
+input[type="checkbox"] + label, input[type="radio"] + label {
+ display: inline-block;
+ margin-left: 0.5rem;
+ margin-right: 1rem;
+ margin-bottom: 0;
+ vertical-align: baseline; }
+
+/* Normalize file input width */
+input[type="file"] {
+ width: 100%; }
+
+/* HTML5 Number spinners settings */
+/* We add basic fieldset styling */
+fieldset {
+ border: 1px solid #DDDDDD;
+ margin: 1.125rem 0;
+ padding: 1.25rem; }
+ fieldset legend {
+ font-weight: bold;
+ margin: 0;
+ margin-left: -0.1875rem;
+ padding: 0 0.1875rem; }
+
+/* Error Handling */
+[data-abide] .error small.error, [data-abide] .error span.error, [data-abide] span.error, [data-abide] small.error {
+ display: block;
+ font-size: 0.75rem;
+ font-style: italic;
+ font-weight: normal;
+ margin-bottom: 1rem;
+ margin-top: -1px;
+ padding: 0.375rem 0.5625rem 0.5625rem;
+ background: #f04124;
+ color: #FFFFFF; }
+[data-abide] span.error, [data-abide] small.error {
+ display: none; }
+
+span.error, small.error {
+ display: block;
+ font-size: 0.75rem;
+ font-style: italic;
+ font-weight: normal;
+ margin-bottom: 1rem;
+ margin-top: -1px;
+ padding: 0.375rem 0.5625rem 0.5625rem;
+ background: #f04124;
+ color: #FFFFFF; }
+
+.error input, .error textarea, .error select {
+ margin-bottom: 0; }
+.error input[type="checkbox"], .error input[type="radio"] {
+ margin-bottom: 1rem; }
+.error label, .error label.error {
+ color: #f04124; }
+.error small.error {
+ display: block;
+ font-size: 0.75rem;
+ font-style: italic;
+ font-weight: normal;
+ margin-bottom: 1rem;
+ margin-top: -1px;
+ padding: 0.375rem 0.5625rem 0.5625rem;
+ background: #f04124;
+ color: #FFFFFF; }
+.error > label > small {
+ background: transparent;
+ color: #676767;
+ display: inline;
+ font-size: 60%;
+ font-style: normal;
+ margin: 0;
+ padding: 0;
+ text-transform: capitalize; }
+.error span.error-message {
+ display: block; }
+
+input.error, textarea.error, select.error {
+ margin-bottom: 0; }
+
+label.error {
+ color: #f04124; }
+
+.icon-bar {
+ display: inline-block;
+ font-size: 0;
+ width: 100%;
+ background: #333333; }
+ .icon-bar > * {
+ display: block;
+ float: left;
+ font-size: 1rem;
+ margin: 0 auto;
+ padding: 1.25rem;
+ text-align: center;
+ width: 25%; }
+ .icon-bar > * i, .icon-bar > * img {
+ display: block;
+ margin: 0 auto; }
+ .icon-bar > * i + label, .icon-bar > * img + label {
+ margin-top: .0625rem; }
+ .icon-bar > * i {
+ font-size: 1.875rem;
+ vertical-align: middle; }
+ .icon-bar > * img {
+ height: 1.875rem;
+ width: 1.875rem; }
+ .icon-bar.label-right > * i, .icon-bar.label-right > * img {
+ display: inline-block;
+ margin: 0 .0625rem 0 0; }
+ .icon-bar.label-right > * i + label, .icon-bar.label-right > * img + label {
+ margin-top: 0; }
+ .icon-bar.label-right > * label {
+ display: inline-block; }
+ .icon-bar.vertical.label-right > * {
+ text-align: left; }
+ .icon-bar.vertical, .icon-bar.small-vertical {
+ height: 100%;
+ width: auto; }
+ .icon-bar.vertical .item, .icon-bar.small-vertical .item {
+ float: none;
+ margin: auto;
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.medium-vertical {
+ height: 100%;
+ width: auto; }
+ .icon-bar.medium-vertical .item {
+ float: none;
+ margin: auto;
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.large-vertical {
+ height: 100%;
+ width: auto; }
+ .icon-bar.large-vertical .item {
+ float: none;
+ margin: auto;
+ width: auto; } }
+ .icon-bar > * {
+ font-size: 1rem;
+ padding: 1.25rem; }
+ .icon-bar > * i + label, .icon-bar > * img + label {
+ margin-top: .0625rem;
+ font-size: 1rem; }
+ .icon-bar > * i {
+ font-size: 1.875rem; }
+ .icon-bar > * img {
+ height: 1.875rem;
+ width: 1.875rem; }
+ .icon-bar > * label {
+ color: #FFFFFF; }
+ .icon-bar > * i {
+ color: #FFFFFF; }
+ .icon-bar > a:hover {
+ background: #008CBA; }
+ .icon-bar > a:hover label {
+ color: #FFFFFF; }
+ .icon-bar > a:hover i {
+ color: #FFFFFF; }
+ .icon-bar > a.active {
+ background: #008CBA; }
+ .icon-bar > a.active label {
+ color: #FFFFFF; }
+ .icon-bar > a.active i {
+ color: #FFFFFF; }
+ .icon-bar .item.disabled {
+ cursor: false;
+ opacity: 0.7;
+ pointer-events: none; }
+ .icon-bar .item.disabled > * {
+ opacity: 0.7;
+ cursor: false; }
+ .icon-bar.two-up .item {
+ width: 50%; }
+ .icon-bar.two-up.vertical .item, .icon-bar.two-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.two-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.two-up.large-vertical .item {
+ width: auto; } }
+ .icon-bar.three-up .item {
+ width: 33.3333%; }
+ .icon-bar.three-up.vertical .item, .icon-bar.three-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.three-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.three-up.large-vertical .item {
+ width: auto; } }
+ .icon-bar.four-up .item {
+ width: 25%; }
+ .icon-bar.four-up.vertical .item, .icon-bar.four-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.four-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.four-up.large-vertical .item {
+ width: auto; } }
+ .icon-bar.five-up .item {
+ width: 20%; }
+ .icon-bar.five-up.vertical .item, .icon-bar.five-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.five-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.five-up.large-vertical .item {
+ width: auto; } }
+ .icon-bar.six-up .item {
+ width: 16.66667%; }
+ .icon-bar.six-up.vertical .item, .icon-bar.six-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.six-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.six-up.large-vertical .item {
+ width: auto; } }
+ .icon-bar.seven-up .item {
+ width: 14.28571%; }
+ .icon-bar.seven-up.vertical .item, .icon-bar.seven-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.seven-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.seven-up.large-vertical .item {
+ width: auto; } }
+ .icon-bar.eight-up .item {
+ width: 12.5%; }
+ .icon-bar.eight-up.vertical .item, .icon-bar.eight-up.small-vertical .item {
+ width: auto; }
+ @media only screen and (min-width:40.063em) {
+ .icon-bar.eight-up.medium-vertical .item {
+ width: auto; } }
+ @media only screen and (min-width:64.063em) {
+ .icon-bar.eight-up.large-vertical .item {
+ width: auto; } }
+
+.icon-bar.two-up .item {
+ width: 50%; }
+.icon-bar.two-up.vertical .item, .icon-bar.two-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.two-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.two-up.large-vertical .item {
+ width: auto; } }
+.icon-bar.three-up .item {
+ width: 33.3333%; }
+.icon-bar.three-up.vertical .item, .icon-bar.three-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.three-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.three-up.large-vertical .item {
+ width: auto; } }
+.icon-bar.four-up .item {
+ width: 25%; }
+.icon-bar.four-up.vertical .item, .icon-bar.four-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.four-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.four-up.large-vertical .item {
+ width: auto; } }
+.icon-bar.five-up .item {
+ width: 20%; }
+.icon-bar.five-up.vertical .item, .icon-bar.five-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.five-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.five-up.large-vertical .item {
+ width: auto; } }
+.icon-bar.six-up .item {
+ width: 16.66667%; }
+.icon-bar.six-up.vertical .item, .icon-bar.six-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.six-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.six-up.large-vertical .item {
+ width: auto; } }
+.icon-bar.seven-up .item {
+ width: 14.28571%; }
+.icon-bar.seven-up.vertical .item, .icon-bar.seven-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.seven-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.seven-up.large-vertical .item {
+ width: auto; } }
+.icon-bar.eight-up .item {
+ width: 12.5%; }
+.icon-bar.eight-up.vertical .item, .icon-bar.eight-up.small-vertical .item {
+ width: auto; }
+@media only screen and (min-width:40.063em) {
+ .icon-bar.eight-up.medium-vertical .item {
+ width: auto; } }
+@media only screen and (min-width:64.063em) {
+ .icon-bar.eight-up.large-vertical .item {
+ width: auto; } }
+
+.inline-list {
+ list-style: none;
+ margin-top: 0;
+ margin-bottom: 1.0625rem;
+ margin-left: -1.375rem;
+ margin-right: 0;
+ overflow: hidden;
+ padding: 0; }
+ .inline-list > li {
+ display: block;
+ float: left;
+ list-style: none;
+ margin-left: 1.375rem; }
+ .inline-list > li > * {
+ display: block; }
+
+/* Foundation Joyride */
+.joyride-list {
+ display: none; }
+
+/* Default styles for the container */
+.joyride-tip-guide {
+ background: #333333;
+ color: #FFFFFF;
+ display: none;
+ font-family: inherit;
+ font-weight: normal;
+ position: absolute;
+ top: 0;
+ width: 95%;
+ z-index: 103;
+ left: 2.5%; }
+
+.lt-ie9 .joyride-tip-guide {
+ margin-left: -400px;
+ max-width: 800px;
+ left: 50%; }
+
+.joyride-content-wrapper {
+ padding: 1.125rem 1.25rem 1.5rem;
+ width: 100%; }
+ .joyride-content-wrapper .button {
+ margin-bottom: 0 !important; }
+ .joyride-content-wrapper .joyride-prev-tip {
+ margin-right: 10px; }
+
+/* Add a little css triangle pip, older browser just miss out on the fanciness of it */
+.joyride-tip-guide .joyride-nub {
+ border: 10px solid #333333;
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+ left: 22px; }
+ .joyride-tip-guide .joyride-nub.top {
+ border-color: #333333;
+ border-top-color: transparent !important;
+ border-top-style: solid;
+ border-left-color: transparent !important;
+ border-right-color: transparent !important;
+ top: -20px; }
+ .joyride-tip-guide .joyride-nub.bottom {
+ border-color: #333333 !important;
+ border-bottom-color: transparent !important;
+ border-bottom-style: solid;
+ border-left-color: transparent !important;
+ border-right-color: transparent !important;
+ bottom: -20px; }
+ .joyride-tip-guide .joyride-nub.right {
+ right: -20px; }
+ .joyride-tip-guide .joyride-nub.left {
+ left: -20px; }
+
+/* Typography */
+.joyride-tip-guide h1, .joyride-tip-guide h2, .joyride-tip-guide h3, .joyride-tip-guide h4, .joyride-tip-guide h5, .joyride-tip-guide h6 {
+ color: #FFFFFF;
+ font-weight: bold;
+ line-height: 1.25;
+ margin: 0; }
+
+.joyride-tip-guide p {
+ font-size: 0.875rem;
+ line-height: 1.3;
+ margin: 0 0 1.125rem 0; }
+
+.joyride-timer-indicator-wrap {
+ border: solid 1px #555555;
+ bottom: 1rem;
+ height: 3px;
+ position: absolute;
+ width: 50px;
+ right: 1.0625rem; }
+
+.joyride-timer-indicator {
+ background: #666666;
+ display: block;
+ height: inherit;
+ width: 0; }
+
+.joyride-close-tip {
+ color: #777777 !important;
+ font-size: 24px;
+ font-weight: normal;
+ line-height: .5 !important;
+ position: absolute;
+ text-decoration: none;
+ top: 10px;
+ right: 12px; }
+ .joyride-close-tip:hover, .joyride-close-tip:focus {
+ color: #EEEEEE !important; }
+
+.joyride-modal-bg {
+ background: rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ display: none;
+ height: 100%;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 100;
+ left: 0; }
+
+.joyride-expose-wrapper {
+ background-color: #FFFFFF;
+ border-radius: 3px;
+ box-shadow: 0 0 15px #FFFFFF;
+ position: absolute;
+ z-index: 102; }
+
+.joyride-expose-cover {
+ background: transparent;
+ border-radius: 3px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ z-index: 9999; }
+
+/* Styles for screens that are at least 768px; */
+@media only screen {
+ .joyride-tip-guide {
+ width: 300px;
+ left: inherit; }
+ .joyride-tip-guide .joyride-nub.bottom {
+ border-color: #333333 !important;
+ border-bottom-color: transparent !important;
+ border-left-color: transparent !important;
+ border-right-color: transparent !important;
+ bottom: -20px; }
+ .joyride-tip-guide .joyride-nub.right {
+ border-color: #333333 !important;
+ border-right-color: transparent !important;
+ border-bottom-color: transparent !important;
+ border-top-color: transparent !important;
+ left: auto;
+ right: -20px;
+ top: 22px; }
+ .joyride-tip-guide .joyride-nub.left {
+ border-color: #333333 !important;
+ border-bottom-color: transparent !important;
+ border-left-color: transparent !important;
+ border-top-color: transparent !important;
+ left: -20px;
+ right: auto;
+ top: 22px; } }
+
+.keystroke, kbd {
+ background-color: #ededed;
+ border-color: #dddddd;
+ color: #222222;
+ border-style: solid;
+ border-width: 1px;
+ font-family: "Consolas", "Menlo", "Courier", monospace;
+ font-size: inherit;
+ margin: 0;
+ padding: 0.125rem 0.25rem 0;
+ border-radius: 3px; }
+
+.label {
+ display: inline-block;
+ font-family: "Open Sans", sans-serif;
+ font-weight: normal;
+ line-height: 1;
+ margin-bottom: auto;
+ position: relative;
+ text-align: center;
+ text-decoration: none;
+ white-space: nowrap;
+ padding: 0.25rem 0.5rem 0.25rem;
+ font-size: 0.6875rem;
+ background-color: #008CBA;
+ color: #FFFFFF; }
+ .label.radius {
+ border-radius: 3px; }
+ .label.round {
+ border-radius: 1000px; }
+ .label.alert {
+ background-color: #f04124;
+ color: #FFFFFF; }
+ .label.warning {
+ background-color: #f08a24;
+ color: #FFFFFF; }
+ .label.success {
+ background-color: #43AC6A;
+ color: #FFFFFF; }
+ .label.secondary {
+ background-color: #e7e7e7;
+ color: #333333; }
+ .label.info {
+ background-color: #a0d3e8;
+ color: #333333; }
+
+[data-magellan-expedition], [data-magellan-expedition-clone] {
+ background: #FFFFFF;
+ min-width: 100%;
+ padding: 10px;
+ z-index: 50; }
+ [data-magellan-expedition] .sub-nav, [data-magellan-expedition-clone] .sub-nav {
+ margin-bottom: 0; }
+ [data-magellan-expedition] .sub-nav dd, [data-magellan-expedition-clone] .sub-nav dd {
+ margin-bottom: 0; }
+ [data-magellan-expedition] .sub-nav a, [data-magellan-expedition-clone] .sub-nav a {
+ line-height: 1.8em; }
+
+@-webkit-keyframes rotate {
+ from {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg); }
+
+ to {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg); } }
+
+@keyframes rotate {
+ from {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ transform: rotate(0deg); }
+
+ to {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ transform: rotate(360deg); } }
+
+/* Orbit Graceful Loading */
+.slideshow-wrapper {
+ position: relative; }
+ .slideshow-wrapper ul {
+ list-style-type: none;
+ margin: 0; }
+ .slideshow-wrapper ul li, .slideshow-wrapper ul li .orbit-caption {
+ display: none; }
+ .slideshow-wrapper ul li:first-child {
+ display: block; }
+ .slideshow-wrapper .orbit-container {
+ background-color: transparent; }
+ .slideshow-wrapper .orbit-container li {
+ display: block; }
+ .slideshow-wrapper .orbit-container li .orbit-caption {
+ display: block; }
+ .slideshow-wrapper .orbit-container .orbit-bullets li {
+ display: inline-block; }
+ .slideshow-wrapper .preloader {
+ border-radius: 1000px;
+ animation-duration: 1.5s;
+ animation-iteration-count: infinite;
+ animation-name: rotate;
+ animation-timing-function: linear;
+ border-color: #555555 #FFFFFF;
+ border: solid 3px;
+ display: block;
+ height: 40px;
+ left: 50%;
+ margin-left: -20px;
+ margin-top: -20px;
+ position: absolute;
+ top: 50%;
+ width: 40px; }
+
+.orbit-container {
+ background: none;
+ overflow: hidden;
+ position: relative;
+ width: 100%; }
+ .orbit-container .orbit-slides-container {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ -webkit-transform: translateZ(0);
+ -moz-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ -o-transform: translateZ(0);
+ transform: translateZ(0); }
+ .orbit-container .orbit-slides-container img {
+ display: block;
+ max-width: 100%; }
+ .orbit-container .orbit-slides-container > * {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ margin-left: 100%; }
+ .orbit-container .orbit-slides-container > *:first-child {
+ margin-left: 0; }
+ .orbit-container .orbit-slides-container > * .orbit-caption {
+ bottom: 0;
+ position: absolute;
+ background-color: rgba(51, 51, 51, 0.8);
+ color: #FFFFFF;
+ font-size: 0.875rem;
+ padding: 0.625rem 0.875rem;
+ width: 100%; }
+ .orbit-container .orbit-slide-number {
+ left: 10px;
+ background: transparent;
+ color: #FFFFFF;
+ font-size: 12px;
+ position: absolute;
+ top: 10px;
+ z-index: 10; }
+ .orbit-container .orbit-slide-number span {
+ font-weight: 700;
+ padding: 0.3125rem; }
+ .orbit-container .orbit-timer {
+ position: absolute;
+ top: 12px;
+ right: 10px;
+ height: 6px;
+ width: 100px;
+ z-index: 10; }
+ .orbit-container .orbit-timer .orbit-progress {
+ height: 3px;
+ background-color: rgba(255, 255, 255, 0.3);
+ display: block;
+ width: 0;
+ position: relative;
+ right: 20px;
+ top: 5px; }
+ .orbit-container .orbit-timer > span {
+ border: solid 4px #FFFFFF;
+ border-bottom: none;
+ border-top: none;
+ display: none;
+ height: 14px;
+ position: absolute;
+ top: 0;
+ width: 11px;
+ right: 0; }
+ .orbit-container .orbit-timer.paused > span {
+ top: 0;
+ width: 11px;
+ height: 14px;
+ border: inset 8px;
+ border-left-style: solid;
+ border-color: transparent;
+ border-left-color: #FFFFFF;
+ right: -4px; }
+ .orbit-container .orbit-timer.paused > span.dark {
+ border-left-color: #333333; }
+ .orbit-container:hover .orbit-timer > span {
+ display: block; }
+ .orbit-container .orbit-prev, .orbit-container .orbit-next {
+ background-color: transparent;
+ color: white;
+ height: 60px;
+ line-height: 50px;
+ margin-top: -25px;
+ position: absolute;
+ text-indent: -9999px !important;
+ top: 45%;
+ width: 36px;
+ z-index: 10; }
+ .orbit-container .orbit-prev:hover, .orbit-container .orbit-next:hover {
+ background-color: rgba(0, 0, 0, 0.3); }
+ .orbit-container .orbit-prev > span, .orbit-container .orbit-next > span {
+ border: inset 10px;
+ display: block;
+ height: 0;
+ margin-top: -10px;
+ position: absolute;
+ top: 50%;
+ width: 0; }
+ .orbit-container .orbit-prev {
+ left: 0; }
+ .orbit-container .orbit-prev > span {
+ border-right-style: solid;
+ border-color: transparent;
+ border-right-color: #FFFFFF; }
+ .orbit-container .orbit-prev:hover > span {
+ border-right-color: #FFFFFF; }
+ .orbit-container .orbit-next {
+ right: 0; }
+ .orbit-container .orbit-next > span {
+ border-color: transparent;
+ border-left-style: solid;
+ border-left-color: #FFFFFF;
+ left: 50%;
+ margin-left: -4px; }
+ .orbit-container .orbit-next:hover > span {
+ border-left-color: #FFFFFF; }
+
+.orbit-bullets-container {
+ text-align: center; }
+
+.orbit-bullets {
+ display: block;
+ float: none;
+ margin: 0 auto 30px auto;
+ overflow: hidden;
+ position: relative;
+ text-align: center;
+ top: 10px; }
+ .orbit-bullets li {
+ background: #CCCCCC;
+ cursor: pointer;
+ display: inline-block;
+ float: none;
+ height: 0.5625rem;
+ margin-right: 6px;
+ width: 0.5625rem;
+ border-radius: 1000px; }
+ .orbit-bullets li.active {
+ background: #999999; }
+ .orbit-bullets li:last-child {
+ margin-right: 0; }
+
+.touch .orbit-container .orbit-prev, .touch .orbit-container .orbit-next {
+ display: none; }
+.touch .orbit-bullets {
+ display: none; }
+
+@media only screen and (min-width:40.063em) {
+ .touch .orbit-container .orbit-prev, .touch .orbit-container .orbit-next {
+ display: inherit; }
+ .touch .orbit-bullets {
+ display: block; } }
+
+@media only screen and (max-width: 40em) {
+ .orbit-stack-on-small .orbit-slides-container {
+ height: auto !important; }
+ .orbit-stack-on-small .orbit-slides-container > * {
+ margin: 0 !important;
+ opacity: 1 !important;
+ position: relative; }
+ .orbit-stack-on-small .orbit-slide-number {
+ display: none; }
+ .orbit-timer {
+ display: none; }
+ .orbit-next, .orbit-prev {
+ display: none; }
+ .orbit-bullets {
+ display: none; } }
+
+ul.pagination {
+ display: block;
+ margin-left: -0.3125rem;
+ min-height: 1.5rem; }
+ ul.pagination li {
+ color: #222222;
+ font-size: 0.875rem;
+ height: 1.5rem;
+ margin-left: 0.3125rem; }
+ ul.pagination li a, ul.pagination li button {
+ border-radius: 3px;
+ transition: background-color 300ms ease-out;
+ background: none;
+ color: #999999;
+ display: block;
+ font-size: 1em;
+ font-weight: normal;
+ line-height: inherit;
+ padding: 0.0625rem 0.625rem 0.0625rem; }
+ ul.pagination li:hover a, ul.pagination li a:focus, ul.pagination li:hover button, ul.pagination li button:focus {
+ background: #e6e6e6; }
+ ul.pagination li.unavailable a, ul.pagination li.unavailable button {
+ cursor: default;
+ color: #999999;
+ pointer-events: none; }
+ ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus, ul.pagination li.unavailable:hover button, ul.pagination li.unavailable button:focus {
+ background: transparent; }
+ ul.pagination li.current a, ul.pagination li.current button {
+ background: #008CBA;
+ color: #FFFFFF;
+ cursor: default;
+ font-weight: bold; }
+ ul.pagination li.current a:hover, ul.pagination li.current a:focus, ul.pagination li.current button:hover, ul.pagination li.current button:focus {
+ background: #008CBA; }
+ ul.pagination li {
+ display: block;
+ float: left; }
+
+/* Pagination centred wrapper */
+.pagination-centered {
+ text-align: center; }
+ .pagination-centered ul.pagination li {
+ display: inline-block;
+ float: none; }
+
+/* Panels */
+.panel {
+ border-style: solid;
+ border-width: 1px;
+ border-color: #d8d8d8;
+ margin-bottom: 1.25rem;
+ padding: 1.25rem;
+ background: #f2f2f2;
+ color: #333333; }
+ .panel > :first-child {
+ margin-top: 0; }
+ .panel > :last-child {
+ margin-bottom: 0; }
+ .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p, .panel li, .panel dl {
+ color: #333333; }
+ .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 {
+ line-height: 1;
+ margin-bottom: 0.625rem; }
+ .panel h1.subheader, .panel h2.subheader, .panel h3.subheader, .panel h4.subheader, .panel h5.subheader, .panel h6.subheader {
+ line-height: 1.4; }
+ .panel.callout {
+ border-style: solid;
+ border-width: 1px;
+ border-color: #d8d8d8;
+ margin-bottom: 1.25rem;
+ padding: 1.25rem;
+ background: #ecfaff;
+ color: #333333; }
+ .panel.callout > :first-child {
+ margin-top: 0; }
+ .panel.callout > :last-child {
+ margin-bottom: 0; }
+ .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6, .panel.callout p, .panel.callout li, .panel.callout dl {
+ color: #333333; }
+ .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 {
+ line-height: 1;
+ margin-bottom: 0.625rem; }
+ .panel.callout h1.subheader, .panel.callout h2.subheader, .panel.callout h3.subheader, .panel.callout h4.subheader, .panel.callout h5.subheader, .panel.callout h6.subheader {
+ line-height: 1.4; }
+ .panel.callout a:not(.button) {
+ color: #008CBA; }
+ .panel.callout a:not(.button):hover, .panel.callout a:not(.button):focus {
+ color: #0078a0; }
+ .panel.radius {
+ border-radius: 3px; }
+
+/* Pricing Tables */
+.pricing-table {
+ border: solid 1px #DDDDDD;
+ margin-left: 0;
+ margin-bottom: 1.25rem; }
+ .pricing-table * {
+ list-style: none;
+ line-height: 1; }
+ .pricing-table .title {
+ background-color: #333333;
+ color: #EEEEEE;
+ font-family: "Open Sans", sans-serif;
+ font-size: 1rem;
+ font-weight: normal;
+ padding: 0.9375rem 1.25rem;
+ text-align: center; }
+ .pricing-table .price {
+ background-color: #F6F6F6;
+ color: #333333;
+ font-family: "Open Sans", sans-serif;
+ font-size: 2rem;
+ font-weight: normal;
+ padding: 0.9375rem 1.25rem;
+ text-align: center; }
+ .pricing-table .description {
+ background-color: #FFFFFF;
+ border-bottom: dotted 1px #DDDDDD;
+ color: #777777;
+ font-size: 0.75rem;
+ font-weight: normal;
+ line-height: 1.4;
+ padding: 0.9375rem;
+ text-align: center; }
+ .pricing-table .bullet-item {
+ background-color: #FFFFFF;
+ border-bottom: dotted 1px #DDDDDD;
+ color: #333333;
+ font-size: 0.875rem;
+ font-weight: normal;
+ padding: 0.9375rem;
+ text-align: center; }
+ .pricing-table .cta-button {
+ background-color: #FFFFFF;
+ padding: 1.25rem 1.25rem 0;
+ text-align: center; }
+
+/* Progress Bar */
+.progress {
+ background-color: #F6F6F6;
+ border: 1px solid white;
+ height: 1.5625rem;
+ margin-bottom: 0.625rem;
+ padding: 0.125rem; }
+ .progress .meter {
+ background: #008CBA;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress .meter.secondary {
+ background: #e7e7e7;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress .meter.success {
+ background: #43AC6A;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress .meter.alert {
+ background: #f04124;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress.secondary .meter {
+ background: #e7e7e7;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress.success .meter {
+ background: #43AC6A;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress.alert .meter {
+ background: #f04124;
+ display: block;
+ height: 100%;
+ float: left;
+ width: 0%; }
+ .progress.radius {
+ border-radius: 3px; }
+ .progress.radius .meter {
+ border-radius: 2px; }
+ .progress.round {
+ border-radius: 1000px; }
+ .progress.round .meter {
+ border-radius: 999px; }
+
+.range-slider {
+ border: 1px solid #DDDDDD;
+ margin: 1.25rem 0;
+ position: relative;
+ -ms-touch-action: none;
+ touch-action: none;
+ display: block;
+ height: 1rem;
+ width: 100%;
+ background: #FAFAFA; }
+ .range-slider.vertical-range {
+ border: 1px solid #DDDDDD;
+ margin: 1.25rem 0;
+ position: relative;
+ -ms-touch-action: none;
+ touch-action: none;
+ display: inline-block;
+ height: 12.5rem;
+ width: 1rem; }
+ .range-slider.vertical-range .range-slider-handle {
+ bottom: -10.5rem;
+ margin-left: -0.5rem;
+ margin-top: 0;
+ position: absolute; }
+ .range-slider.vertical-range .range-slider-active-segment {
+ border-bottom-left-radius: inherit;
+ border-bottom-right-radius: inherit;
+ border-top-left-radius: initial;
+ bottom: 0;
+ height: auto;
+ width: 0.875rem; }
+ .range-slider.radius {
+ background: #FAFAFA;
+ border-radius: 3px; }
+ .range-slider.radius .range-slider-handle {
+ background: #008CBA;
+ border-radius: 3px; }
+ .range-slider.radius .range-slider-handle:hover {
+ background: #007ba4; }
+ .range-slider.round {
+ background: #FAFAFA;
+ border-radius: 1000px; }
+ .range-slider.round .range-slider-handle {
+ background: #008CBA;
+ border-radius: 1000px; }
+ .range-slider.round .range-slider-handle:hover {
+ background: #007ba4; }
+ .range-slider.disabled, .range-slider[disabled] {
+ background: #FAFAFA;
+ cursor: false;
+ opacity: 0.7; }
+ .range-slider.disabled .range-slider-handle, .range-slider[disabled] .range-slider-handle {
+ background: #008CBA;
+ cursor: default;
+ opacity: 0.7; }
+ .range-slider.disabled .range-slider-handle:hover, .range-slider[disabled] .range-slider-handle:hover {
+ background: #007ba4; }
+
+.range-slider-active-segment {
+ background: #e5e5e5;
+ border-bottom-left-radius: inherit;
+ border-top-left-radius: inherit;
+ display: inline-block;
+ height: 0.875rem;
+ position: absolute; }
+
+.range-slider-handle {
+ border: 1px solid none;
+ cursor: pointer;
+ display: inline-block;
+ height: 1.375rem;
+ position: absolute;
+ top: -0.3125rem;
+ width: 2rem;
+ z-index: 1;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background: #008CBA; }
+ .range-slider-handle:hover {
+ background: #007ba4; }
+
+.reveal-modal-bg {
+ background: #000000;
+ background: rgba(0, 0, 0, 0.45);
+ bottom: 0;
+ display: none;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 1004;
+ left: 0; }
+
+.reveal-modal {
+ border-radius: 3px;
+ display: none;
+ position: absolute;
+ top: 0;
+ visibility: hidden;
+ width: 100%;
+ z-index: 1005;
+ left: 0;
+ background-color: #FFFFFF;
+ padding: 1.875rem;
+ border: solid 1px #666666;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); }
+ @media only screen and (max-width: 40em) {
+ .reveal-modal {
+ min-height: 100vh; } }
+ .reveal-modal .column, .reveal-modal .columns {
+ min-width: 0; }
+ .reveal-modal > :first-child {
+ margin-top: 0; }
+ .reveal-modal > :last-child {
+ margin-bottom: 0; }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 80%; } }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal {
+ top: 6.25rem; } }
+ .reveal-modal.radius {
+ box-shadow: none;
+ border-radius: 3px; }
+ .reveal-modal.round {
+ box-shadow: none;
+ border-radius: 1000px; }
+ .reveal-modal.collapse {
+ padding: 0;
+ box-shadow: none; }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal.tiny {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 30%; } }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal.small {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 40%; } }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal.medium {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 60%; } }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal.large {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 70%; } }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal.xlarge {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 95%; } }
+ .reveal-modal.full {
+ height: 100vh;
+ height: 100%;
+ left: 0;
+ margin-left: 0 !important;
+ max-width: none !important;
+ min-height: 100vh;
+ top: 0; }
+ @media only screen and (min-width:40.063em) {
+ .reveal-modal.full {
+ left: 0;
+ margin: 0 auto;
+ max-width: 62.5rem;
+ right: 0;
+ width: 100%; } }
+ .reveal-modal.toback {
+ z-index: 1003; }
+ .reveal-modal .close-reveal-modal {
+ color: #AAAAAA;
+ cursor: pointer;
+ font-size: 2.5rem;
+ font-weight: bold;
+ line-height: 1;
+ position: absolute;
+ top: 0.625rem;
+ right: 1.375rem; }
+
+.side-nav {
+ display: block;
+ font-family: "Open Sans", sans-serif;
+ list-style-position: outside;
+ list-style-type: none;
+ margin: 0;
+ padding: 0.875rem 0; }
+ .side-nav li {
+ font-size: 0.875rem;
+ font-weight: normal;
+ margin: 0 0 0.4375rem 0; }
+ .side-nav li a:not(.button) {
+ color: #008CBA;
+ display: block;
+ margin: 0;
+ padding: 0.4375rem 0.875rem; }
+ .side-nav li a:not(.button):hover, .side-nav li a:not(.button):focus {
+ background: rgba(0, 0, 0, 0.025);
+ color: #1cc7ff; }
+ .side-nav li a:not(.button):active {
+ color: #1cc7ff; }
+ .side-nav li.active > a:first-child:not(.button) {
+ color: #1cc7ff;
+ font-family: "Open Sans", sans-serif;
+ font-weight: normal; }
+ .side-nav li.divider {
+ border-top: 1px solid;
+ height: 0;
+ list-style: none;
+ padding: 0;
+ border-top-color: #e6e6e6; }
+ .side-nav li.heading {
+ color: #008CBA;
+ font-size: 0.875rem;
+ font-weight: bold;
+ text-transform: uppercase; }
+
+.split.button {
+ position: relative;
+ padding-right: 5.0625rem; }
+ .split.button span {
+ display: block;
+ height: 100%;
+ position: absolute;
+ right: 0;
+ top: 0;
+ border-left: solid 1px; }
+ .split.button span:after {
+ position: absolute;
+ content: "";
+ width: 0;
+ height: 0;
+ display: block;
+ border-style: inset;
+ top: 50%;
+ left: 50%; }
+ .split.button span:active {
+ background-color: rgba(0, 0, 0, 0.1); }
+ .split.button span {
+ border-left-color: rgba(255, 255, 255, 0.5); }
+ .split.button span {
+ width: 3.09375rem; }
+ .split.button span:after {
+ border-top-style: solid;
+ border-width: 0.375rem;
+ margin-left: -0.375rem;
+ top: 48%; }
+ .split.button span:after {
+ border-color: #FFFFFF transparent transparent transparent; }
+ .split.button.secondary span {
+ border-left-color: rgba(255, 255, 255, 0.5); }
+ .split.button.secondary span:after {
+ border-color: #FFFFFF transparent transparent transparent; }
+ .split.button.alert span {
+ border-left-color: rgba(255, 255, 255, 0.5); }
+ .split.button.success span {
+ border-left-color: rgba(255, 255, 255, 0.5); }
+ .split.button.tiny {
+ padding-right: 3.75rem; }
+ .split.button.tiny span {
+ width: 2.25rem; }
+ .split.button.tiny span:after {
+ border-top-style: solid;
+ border-width: 0.375rem;
+ margin-left: -0.375rem;
+ top: 48%; }
+ .split.button.small {
+ padding-right: 4.375rem; }
+ .split.button.small span {
+ width: 2.625rem; }
+ .split.button.small span:after {
+ border-top-style: solid;
+ border-width: 0.4375rem;
+ margin-left: -0.375rem;
+ top: 48%; }
+ .split.button.large {
+ padding-right: 5.5rem; }
+ .split.button.large span {
+ width: 3.4375rem; }
+ .split.button.large span:after {
+ border-top-style: solid;
+ border-width: 0.3125rem;
+ margin-left: -0.375rem;
+ top: 48%; }
+ .split.button.expand {
+ padding-left: 2rem; }
+ .split.button.secondary span:after {
+ border-color: #333333 transparent transparent transparent; }
+ .split.button.radius span {
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; }
+ .split.button.round span {
+ -webkit-border-bottom-right-radius: 1000px;
+ -webkit-border-top-right-radius: 1000px;
+ border-bottom-right-radius: 1000px;
+ border-top-right-radius: 1000px; }
+ .split.button.no-pip span:before {
+ border-style: none; }
+ .split.button.no-pip span:after {
+ border-style: none; }
+ .split.button.no-pip span > i {
+ display: block;
+ left: 50%;
+ margin-left: -0.28889em;
+ margin-top: -0.48889em;
+ position: absolute;
+ top: 50%; }
+
+.sub-nav {
+ display: block;
+ margin: -0.25rem 0 1.125rem;
+ overflow: hidden;
+ padding-top: 0.25rem;
+ width: auto; }
+ .sub-nav dt {
+ text-transform: uppercase; }
+ .sub-nav dt, .sub-nav dd, .sub-nav li {
+ color: #999999;
+ float: left;
+ font-family: "Open Sans", sans-serif;
+ font-size: 0.875rem;
+ font-weight: normal;
+ margin-left: 1rem;
+ margin-bottom: 0; }
+ .sub-nav dt a, .sub-nav dd a, .sub-nav li a {
+ color: #999999;
+ padding: 0.1875rem 1rem;
+ text-decoration: none; }
+ .sub-nav dt a:hover, .sub-nav dd a:hover, .sub-nav li a:hover {
+ color: #737373; }
+ .sub-nav dt.active a, .sub-nav dd.active a, .sub-nav li.active a {
+ border-radius: 3px;
+ background: #008CBA;
+ color: #FFFFFF;
+ cursor: default;
+ font-weight: normal;
+ padding: 0.1875rem 1rem; }
+ .sub-nav dt.active a:hover, .sub-nav dd.active a:hover, .sub-nav li.active a:hover {
+ background: #0078a0; }
+
+.switch {
+ border: none;
+ margin-bottom: 1.5rem;
+ outline: 0;
+ padding: 0;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+ .switch label {
+ background: #DDDDDD;
+ color: transparent;
+ cursor: pointer;
+ display: block;
+ margin-bottom: 1rem;
+ position: relative;
+ text-indent: 100%;
+ width: 4rem;
+ height: 2rem;
+ transition: left 0.15s ease-out; }
+ .switch input {
+ left: 10px;
+ opacity: 0;
+ padding: 0;
+ position: absolute;
+ top: 9px; }
+ .switch input + label {
+ margin-left: 0;
+ margin-right: 0; }
+ .switch label:after {
+ background: #FFFFFF;
+ content: "";
+ display: block;
+ height: 1.5rem;
+ left: .25rem;
+ position: absolute;
+ top: .25rem;
+ width: 1.5rem;
+ -webkit-transition: left 0.15s ease-out;
+ -moz-transition: left 0.15s ease-out;
+ -o-transition: translate3d(0, 0, 0);
+ transition: left 0.15s ease-out;
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0); }
+ .switch input:checked + label {
+ background: #008CBA; }
+ .switch input:checked + label:after {
+ left: 2.25rem; }
+ .switch label {
+ height: 2rem;
+ width: 4rem; }
+ .switch label:after {
+ height: 1.5rem;
+ width: 1.5rem; }
+ .switch input:checked + label:after {
+ left: 2.25rem; }
+ .switch label {
+ color: transparent;
+ background: #DDDDDD; }
+ .switch label:after {
+ background: #FFFFFF; }
+ .switch input:checked + label {
+ background: #008CBA; }
+ .switch.large label {
+ height: 2.5rem;
+ width: 5rem; }
+ .switch.large label:after {
+ height: 2rem;
+ width: 2rem; }
+ .switch.large input:checked + label:after {
+ left: 2.75rem; }
+ .switch.small label {
+ height: 1.75rem;
+ width: 3.5rem; }
+ .switch.small label:after {
+ height: 1.25rem;
+ width: 1.25rem; }
+ .switch.small input:checked + label:after {
+ left: 2rem; }
+ .switch.tiny label {
+ height: 1.5rem;
+ width: 3rem; }
+ .switch.tiny label:after {
+ height: 1rem;
+ width: 1rem; }
+ .switch.tiny input:checked + label:after {
+ left: 1.75rem; }
+ .switch.radius label {
+ border-radius: 4px; }
+ .switch.radius label:after {
+ border-radius: 3px; }
+ .switch.round {
+ border-radius: 1000px; }
+ .switch.round label {
+ border-radius: 2rem; }
+ .switch.round label:after {
+ border-radius: 2rem; }
+
+table {
+ background: #FFFFFF;
+ border: solid 1px #DDDDDD;
+ margin-bottom: 1.25rem;
+ table-layout: auto; }
+ table caption {
+ background: transparent;
+ color: #222222;
+ font-size: 1rem;
+ font-weight: bold; }
+ table thead {
+ background: #F5F5F5; }
+ table thead tr th, table thead tr td {
+ color: #222222;
+ font-size: 0.875rem;
+ font-weight: bold;
+ padding: 0.5rem 0.625rem 0.625rem; }
+ table tfoot {
+ background: #F5F5F5; }
+ table tfoot tr th, table tfoot tr td {
+ color: #222222;
+ font-size: 0.875rem;
+ font-weight: bold;
+ padding: 0.5rem 0.625rem 0.625rem; }
+ table tr th, table tr td {
+ color: #222222;
+ font-size: 0.875rem;
+ padding: 0.5625rem 0.625rem;
+ text-align: left; }
+ table tr.even, table tr.alt, table tr:nth-of-type(even) {
+ background: #F9F9F9; }
+ table thead tr th, table tfoot tr th, table tfoot tr td, table tbody tr th, table tbody tr td, table tr td {
+ display: table-cell;
+ line-height: 1.125rem; }
+
+.tabs {
+ margin-bottom: 0 !important;
+ margin-left: 0; }
+ .tabs:before, .tabs:after {
+ content: " ";
+ display: table; }
+ .tabs:after {
+ clear: both; }
+ .tabs dd, .tabs .tab-title {
+ float: left;
+ list-style: none;
+ margin-bottom: 0 !important;
+ position: relative; }
+ .tabs dd > a, .tabs .tab-title > a {
+ display: block;
+ background-color: #EFEFEF;
+ color: #222222;
+ font-family: "Open Sans", sans-serif;
+ font-size: 1rem;
+ padding: 1rem 2rem; }
+ .tabs dd > a:hover, .tabs .tab-title > a:hover {
+ background-color: #e1e1e1; }
+ .tabs dd.active > a, .tabs .tab-title.active > a {
+ background-color: #FFFFFF;
+ color: #222222; }
+ .tabs.radius dd:first-child a, .tabs.radius .tab:first-child a {
+ -webkit-border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px; }
+ .tabs.radius dd:last-child a, .tabs.radius .tab:last-child a {
+ -webkit-border-bottom-right-radius: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px; }
+ .tabs.vertical dd, .tabs.vertical .tab-title {
+ position: inherit;
+ float: none;
+ display: block;
+ top: auto; }
+
+.tabs-content {
+ margin-bottom: 1.5rem;
+ width: 100%; }
+ .tabs-content:before, .tabs-content:after {
+ content: " ";
+ display: table; }
+ .tabs-content:after {
+ clear: both; }
+ .tabs-content > .content {
+ display: none;
+ float: left;
+ padding: 0.9375rem 0;
+ width: 100%; }
+ .tabs-content > .content.active {
+ display: block;
+ float: none; }
+ .tabs-content > .content.contained {
+ padding: 0.9375rem; }
+ .tabs-content.vertical {
+ display: block; }
+ .tabs-content.vertical > .content {
+ padding: 0 0.9375rem; }
+
+@media only screen and (min-width:40.063em) {
+ .tabs.vertical {
+ float: left;
+ margin: 0;
+ margin-bottom: 1.25rem !important;
+ max-width: 20%;
+ width: 20%; }
+ .tabs-content.vertical {
+ float: left;
+ margin-left: -1px;
+ max-width: 80%;
+ padding-left: 1rem;
+ width: 80%; } }
+
+.no-js .tabs-content > .content {
+ display: block;
+ float: none; }
+
+/* Image Thumbnails */
+.th {
+ border: solid 4px #FFFFFF;
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
+ display: inline-block;
+ line-height: 0;
+ max-width: 100%;
+ transition: all 200ms ease-out; }
+ .th:hover, .th:focus {
+ box-shadow: 0 0 6px 1px rgba(0, 140, 186, 0.5); }
+ .th.radius {
+ border-radius: 3px; }
+
+/* Tooltips */
+.has-tip {
+ border-bottom: dotted 1px #CCCCCC;
+ color: #333333;
+ cursor: help;
+ font-weight: bold; }
+ .has-tip:hover, .has-tip:focus {
+ border-bottom: dotted 1px #003f54;
+ color: #008CBA; }
+ .has-tip.tip-left, .has-tip.tip-right {
+ float: none !important; }
+
+.tooltip {
+ background: #333333;
+ color: #FFFFFF;
+ display: none;
+ font-size: 0.875rem;
+ font-weight: normal;
+ line-height: 1.3;
+ max-width: 300px;
+ padding: 0.75rem;
+ position: absolute;
+ width: 100%;
+ z-index: 1006;
+ left: 50%; }
+ .tooltip > .nub {
+ border: solid 5px;
+ border-color: transparent transparent #333333 transparent;
+ display: block;
+ height: 0;
+ pointer-events: none;
+ position: absolute;
+ top: -10px;
+ width: 0;
+ left: 5px; }
+ .tooltip > .nub.rtl {
+ left: auto;
+ right: 5px; }
+ .tooltip.radius {
+ border-radius: 3px; }
+ .tooltip.round {
+ border-radius: 1000px; }
+ .tooltip.round > .nub {
+ left: 2rem; }
+ .tooltip.opened {
+ border-bottom: dotted 1px #003f54 !important;
+ color: #008CBA !important; }
+
+.tap-to-close {
+ color: #777777;
+ display: block;
+ font-size: 0.625rem;
+ font-weight: normal; }
+
+@media only screen {
+ .tooltip > .nub {
+ border-color: transparent transparent #333333 transparent;
+ top: -10px; }
+ .tooltip.tip-top > .nub {
+ border-color: #333333 transparent transparent transparent;
+ bottom: -10px;
+ top: auto; }
+ .tooltip.tip-left, .tooltip.tip-right {
+ float: none !important; }
+ .tooltip.tip-left > .nub {
+ border-color: transparent transparent transparent #333333;
+ left: auto;
+ margin-top: -5px;
+ right: -10px;
+ top: 50%; }
+ .tooltip.tip-right > .nub {
+ border-color: transparent #333333 transparent transparent;
+ left: -10px;
+ margin-top: -5px;
+ right: auto;
+ top: 50%; } }
+
+meta.foundation-mq-topbar {
+ font-family: "/only screen and (min-width:40.063em)/";
+ width: 40.063em; }
+
+/* Wrapped around .top-bar to contain to grid width */
+.contain-to-grid {
+ width: 100%;
+ background: #ccbc8c; }
+ .contain-to-grid .top-bar {
+ margin-bottom: 0; }
+
+.fixed {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 99;
+ left: 0; }
+ .fixed.expanded:not(.top-bar) {
+ height: auto;
+ max-height: 100%;
+ overflow-y: auto;
+ width: 100%; }
+ .fixed.expanded:not(.top-bar) .title-area {
+ position: fixed;
+ width: 100%;
+ z-index: 99; }
+ .fixed.expanded:not(.top-bar) .top-bar-section {
+ margin-top: 1.875rem;
+ z-index: 98; }
+
+.top-bar {
+ background: #ccbc8c;
+ height: 1.875rem;
+ line-height: 1.875rem;
+ margin-bottom: 0;
+ overflow: hidden;
+ position: relative; }
+ .top-bar ul {
+ list-style: none;
+ margin-bottom: 0; }
+ .top-bar .row {
+ max-width: none; }
+ .top-bar form, .top-bar input, .top-bar select {
+ margin-bottom: 0; }
+ .top-bar input, .top-bar select {
+ font-size: 0.75rem;
+ height: 1.75rem;
+ padding-bottom: .35rem;
+ padding-top: .35rem; }
+ .top-bar .button, .top-bar button {
+ font-size: 0.75rem;
+ margin-bottom: 0;
+ padding-bottom: .4125rem;
+ padding-top: .4125rem; }
+ @media only screen and (max-width: 40em) {
+ .top-bar .button, .top-bar button {
+ position: relative;
+ top: -1px; } }
+ .top-bar .title-area {
+ margin: 0;
+ position: relative; }
+ .top-bar .name {
+ font-size: 16px;
+ height: 1.875rem;
+ margin: 0; }
+ .top-bar .name h1, .top-bar .name h2, .top-bar .name h3, .top-bar .name h4, .top-bar .name p, .top-bar .name span {
+ font-size: 1.0625rem;
+ line-height: 1.875rem;
+ margin: 0; }
+ .top-bar .name h1 a, .top-bar .name h2 a, .top-bar .name h3 a, .top-bar .name h4 a, .top-bar .name p a, .top-bar .name span a {
+ color: #45646a;
+ display: block;
+ font-weight: normal;
+ padding: 0 0.625rem;
+ width: 75%; }
+ .top-bar .toggle-topbar {
+ position: absolute;
+ right: 0;
+ top: 0; }
+ .top-bar .toggle-topbar a {
+ color: #45646a;
+ display: block;
+ font-size: 0.8125rem;
+ font-weight: bold;
+ height: 1.875rem;
+ line-height: 1.875rem;
+ padding: 0 0.625rem;
+ position: relative;
+ text-transform: uppercase; }
+ .top-bar .toggle-topbar.menu-icon {
+ margin-top: -16px;
+ top: 50%; }
+ .top-bar .toggle-topbar.menu-icon a {
+ color: #FFFFFF;
+ height: 34px;
+ line-height: 33px;
+ padding: 0 2.1875rem 0 0.625rem;
+ position: relative; }
+ .top-bar .toggle-topbar.menu-icon a span::after {
+ content: "";
+ display: block;
+ height: 0;
+ position: absolute;
+ margin-top: -8px;
+ top: 50%;
+ right: 0.625rem;
+ box-shadow: 0 0 0 1px #FFFFFF, 0 7px 0 1px #FFFFFF, 0 14px 0 1px #FFFFFF;
+ width: 16px; }
+ .top-bar .toggle-topbar.menu-icon a span:hover:after {
+ box-shadow: 0 0 0 1px "", 0 7px 0 1px "", 0 14px 0 1px ""; }
+ .top-bar.expanded {
+ background: transparent;
+ height: auto; }
+ .top-bar.expanded .title-area {
+ background: #ccbc8c; }
+ .top-bar.expanded .toggle-topbar a {
+ color: #888888; }
+ .top-bar.expanded .toggle-topbar a span::after {
+ box-shadow: 0 0 0 1px #888888, 0 7px 0 1px #888888, 0 14px 0 1px #888888; }
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
+ .top-bar.expanded .top-bar-section .has-dropdown.moved > .dropdown, .top-bar.expanded .top-bar-section .dropdown {
+ clip: initial; }
+ .top-bar.expanded .top-bar-section .has-dropdown:not(.moved) > ul {
+ padding: 0; } }
+
+.top-bar-section {
+ left: 0;
+ position: relative;
+ width: auto;
+ transition: left 300ms ease-out; }
+ .top-bar-section ul {
+ display: block;
+ font-size: 16px;
+ height: auto;
+ margin: 0;
+ padding: 0;
+ width: 100%; }
+ .top-bar-section .divider, .top-bar-section [role="separator"] {
+ border-top: solid 1px #776735;
+ clear: both;
+ height: 1px;
+ width: 100%; }
+ .top-bar-section ul li {
+ background: transparent; }
+ .top-bar-section ul li > a {
+ color: #45646a;
+ display: block;
+ font-family: "Open Sans", sans-serif;
+ font-size: 1rem;
+ font-weight: normal;
+ padding-left: 0.625rem;
+ padding: 12px 0 12px 0.625rem;
+ text-transform: none;
+ width: 100%; }
+ .top-bar-section ul li > a.button {
+ font-size: 1rem;
+ padding-left: 0.625rem;
+ padding-right: 0.625rem;
+ background-color: #008CBA;
+ border-color: #007095;
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus {
+ background-color: #007095; }
+ .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.secondary {
+ background-color: #e7e7e7;
+ border-color: #b9b9b9;
+ color: #333333; }
+ .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus {
+ background-color: #b9b9b9; }
+ .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus {
+ color: #333333; }
+ .top-bar-section ul li > a.button.success {
+ background-color: #43AC6A;
+ border-color: #368a55;
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus {
+ background-color: #368a55; }
+ .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.alert {
+ background-color: #f04124;
+ border-color: #cf2a0e;
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus {
+ background-color: #cf2a0e; }
+ .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.warning {
+ background-color: #f08a24;
+ border-color: #cf6e0e;
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.warning:hover, .top-bar-section ul li > a.button.warning:focus {
+ background-color: #cf6e0e; }
+ .top-bar-section ul li > a.button.warning:hover, .top-bar-section ul li > a.button.warning:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > a.button.info {
+ background-color: #a0d3e8;
+ border-color: #61b6d9;
+ color: #333333; }
+ .top-bar-section ul li > a.button.info:hover, .top-bar-section ul li > a.button.info:focus {
+ background-color: #61b6d9; }
+ .top-bar-section ul li > a.button.info:hover, .top-bar-section ul li > a.button.info:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > button {
+ font-size: 1rem;
+ padding-left: 0.625rem;
+ padding-right: 0.625rem;
+ background-color: #008CBA;
+ border-color: #007095;
+ color: #FFFFFF; }
+ .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus {
+ background-color: #007095; }
+ .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.secondary {
+ background-color: #e7e7e7;
+ border-color: #b9b9b9;
+ color: #333333; }
+ .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus {
+ background-color: #b9b9b9; }
+ .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus {
+ color: #333333; }
+ .top-bar-section ul li > button.success {
+ background-color: #43AC6A;
+ border-color: #368a55;
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus {
+ background-color: #368a55; }
+ .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.alert {
+ background-color: #f04124;
+ border-color: #cf2a0e;
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus {
+ background-color: #cf2a0e; }
+ .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.warning {
+ background-color: #f08a24;
+ border-color: #cf6e0e;
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.warning:hover, .top-bar-section ul li > button.warning:focus {
+ background-color: #cf6e0e; }
+ .top-bar-section ul li > button.warning:hover, .top-bar-section ul li > button.warning:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li > button.info {
+ background-color: #a0d3e8;
+ border-color: #61b6d9;
+ color: #333333; }
+ .top-bar-section ul li > button.info:hover, .top-bar-section ul li > button.info:focus {
+ background-color: #61b6d9; }
+ .top-bar-section ul li > button.info:hover, .top-bar-section ul li > button.info:focus {
+ color: #FFFFFF; }
+ .top-bar-section ul li:hover:not(.has-form) > a {
+ background-color: #555555;
+ color: #FFFFFF;
+ background: #222222; }
+ .top-bar-section ul li.active > a {
+ background: transparent;
+ color: #95d500; }
+ .top-bar-section ul li.active > a:hover {
+ background: transparent;
+ color: #95d500; }
+ .top-bar-section .has-form {
+ padding: 0.625rem; }
+ .top-bar-section .has-dropdown {
+ position: relative; }
+ .top-bar-section .has-dropdown > a:after {
+ margin-right: 0.625rem;
+ margin-top: -4.5px;
+ position: absolute;
+ top: 50%;
+ right: 0; }
+ .top-bar-section .has-dropdown.moved {
+ position: static; }
+ .top-bar-section .has-dropdown.moved > .dropdown {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto;
+ display: block;
+ position: absolute !important;
+ width: 100%; }
+ .top-bar-section .has-dropdown.moved > a:after {
+ display: none; }
+ .top-bar-section .dropdown {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px;
+ display: block;
+ padding: 0;
+ position: absolute;
+ top: 0;
+ z-index: 99;
+ left: 100%; }
+ .top-bar-section .dropdown li {
+ height: auto;
+ width: 100%; }
+ .top-bar-section .dropdown li a {
+ font-weight: normal;
+ padding: 8px 0.625rem; }
+ .top-bar-section .dropdown li a.parent-link {
+ font-weight: normal; }
+ .top-bar-section .dropdown li.title h5, .top-bar-section .dropdown li.parent-link {
+ margin-bottom: 0;
+ margin-top: 0;
+ font-size: 1.125rem; }
+ .top-bar-section .dropdown li.title h5 a, .top-bar-section .dropdown li.parent-link a {
+ color: #45646a;
+ display: block; }
+ .top-bar-section .dropdown li.title h5 a:hover, .top-bar-section .dropdown li.parent-link a:hover {
+ background: none; }
+ .top-bar-section .dropdown li.has-form {
+ padding: 8px 0.625rem; }
+ .top-bar-section .dropdown li .button, .top-bar-section .dropdown li button {
+ top: auto; }
+ .top-bar-section .dropdown label {
+ color: #777777;
+ font-size: 0.625rem;
+ font-weight: bold;
+ margin-bottom: 0;
+ padding: 8px 0.625rem 2px;
+ text-transform: uppercase; }
+
+.js-generated {
+ display: block; }
+
+@media only screen and (min-width:40.063em) {
+ .top-bar {
+ background: #ccbc8c;
+ overflow: visible; }
+ .top-bar:before, .top-bar:after {
+ content: " ";
+ display: table; }
+ .top-bar:after {
+ clear: both; }
+ .top-bar .toggle-topbar {
+ display: none; }
+ .top-bar .title-area {
+ float: left; }
+ .top-bar .name h1 a, .top-bar .name h2 a, .top-bar .name h3 a, .top-bar .name h4 a, .top-bar .name h5 a, .top-bar .name h6 a {
+ width: auto; }
+ .top-bar input, .top-bar select, .top-bar .button, .top-bar button {
+ font-size: 0.875rem;
+ height: 1.75rem;
+ position: relative;
+ top: 0.0625rem; }
+ .top-bar .has-form > .button, .top-bar .has-form > button {
+ font-size: 0.875rem;
+ height: 1.75rem;
+ position: relative;
+ top: 0.0625rem; }
+ .top-bar.expanded {
+ background: #ccbc8c; }
+ .contain-to-grid .top-bar {
+ margin: 0 auto;
+ margin-bottom: 0;
+ max-width: 62.5rem; }
+ .top-bar-section {
+ transition: none 0 0;
+ left: 0 !important; }
+ .top-bar-section ul {
+ display: inline;
+ height: auto !important;
+ width: auto; }
+ .top-bar-section ul li {
+ float: left; }
+ .top-bar-section ul li .js-generated {
+ display: none; }
+ .top-bar-section li.hover > a:not(.button) {
+ background-color: #555555;
+ background: #222222;
+ color: #FFFFFF; }
+ .top-bar-section li:not(.has-form) a:not(.button) {
+ background: #ccbc8c;
+ line-height: 1.875rem;
+ padding: 0 0.625rem; }
+ .top-bar-section li:not(.has-form) a:not(.button):hover {
+ background-color: #555555;
+ background: #222222; }
+ .top-bar-section li.active:not(.has-form) a:not(.button) {
+ background: transparent;
+ color: #95d500;
+ line-height: 1.875rem;
+ padding: 0 0.625rem; }
+ .top-bar-section li.active:not(.has-form) a:not(.button):hover {
+ background: transparent;
+ color: #95d500; }
+ .top-bar-section .has-dropdown.moved {
+ position: relative; }
+ .top-bar-section .has-dropdown.moved > .dropdown {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px;
+ display: block; }
+ .top-bar-section .has-dropdown.hover > .dropdown, .top-bar-section .has-dropdown.not-click:hover > .dropdown {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto;
+ display: block;
+ position: absolute !important; }
+ .top-bar-section .has-dropdown > a:focus + .dropdown {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto;
+ display: block;
+ position: absolute !important; }
+ .top-bar-section .dropdown {
+ left: 0;
+ background: transparent;
+ min-width: 100%;
+ top: auto; }
+ .top-bar-section .dropdown li a {
+ background: transparent;
+ color: #FFFFFF;
+ line-height: 1.875rem;
+ padding: 12px 0.625rem;
+ white-space: nowrap; }
+ .top-bar-section .dropdown li:not(.has-form):not(.active) > a:not(.button) {
+ background: transparent;
+ color: #FFFFFF; }
+ .top-bar-section .dropdown li:not(.has-form):not(.active):hover > a:not(.button) {
+ background-color: #555555;
+ color: #95d500;
+ background: transparent; }
+ .top-bar-section .dropdown li label {
+ background: #333333;
+ white-space: nowrap; }
+ .top-bar-section .dropdown li .dropdown {
+ left: 100%;
+ top: 0; }
+ .top-bar-section > ul > .divider, .top-bar-section > ul > [role="separator"] {
+ border-right: solid 1px #d3c59b;
+ border-bottom: none;
+ border-top: none;
+ clear: none;
+ height: 1.875rem;
+ width: 0; }
+ .top-bar-section .has-form {
+ background: #ccbc8c;
+ height: 1.875rem;
+ padding: 0 0.625rem; }
+ .top-bar-section .right li .dropdown {
+ left: auto;
+ right: 0; }
+ .top-bar-section .right li .dropdown li .dropdown {
+ right: 100%; }
+ .top-bar-section .left li .dropdown {
+ right: auto;
+ left: 0; }
+ .top-bar-section .left li .dropdown li .dropdown {
+ left: 100%; }
+ .no-js .top-bar-section ul li:hover > a {
+ background-color: #555555;
+ background: #222222;
+ color: #FFFFFF; }
+ .no-js .top-bar-section ul li:active > a {
+ background: transparent;
+ color: #95d500; }
+ .no-js .top-bar-section .has-dropdown:hover > .dropdown {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto;
+ display: block;
+ position: absolute !important; }
+ .no-js .top-bar-section .has-dropdown > a:focus + .dropdown {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto;
+ display: block;
+ position: absolute !important; } }
+
+.text-left {
+ text-align: left !important; }
+
+.text-right {
+ text-align: right !important; }
+
+.text-center {
+ text-align: center !important; }
+
+.text-justify {
+ text-align: justify !important; }
+
+@media only screen and (max-width: 40em) {
+ .small-only-text-left {
+ text-align: left !important; }
+ .small-only-text-right {
+ text-align: right !important; }
+ .small-only-text-center {
+ text-align: center !important; }
+ .small-only-text-justify {
+ text-align: justify !important; } }
+
+@media only screen {
+ .small-text-left {
+ text-align: left !important; }
+ .small-text-right {
+ text-align: right !important; }
+ .small-text-center {
+ text-align: center !important; }
+ .small-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:40.063em) and (max-width:64em) {
+ .medium-only-text-left {
+ text-align: left !important; }
+ .medium-only-text-right {
+ text-align: right !important; }
+ .medium-only-text-center {
+ text-align: center !important; }
+ .medium-only-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:40.063em) {
+ .medium-text-left {
+ text-align: left !important; }
+ .medium-text-right {
+ text-align: right !important; }
+ .medium-text-center {
+ text-align: center !important; }
+ .medium-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:64.063em) and (max-width:90em) {
+ .large-only-text-left {
+ text-align: left !important; }
+ .large-only-text-right {
+ text-align: right !important; }
+ .large-only-text-center {
+ text-align: center !important; }
+ .large-only-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:64.063em) {
+ .large-text-left {
+ text-align: left !important; }
+ .large-text-right {
+ text-align: right !important; }
+ .large-text-center {
+ text-align: center !important; }
+ .large-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:90.063em) and (max-width:120em) {
+ .xlarge-only-text-left {
+ text-align: left !important; }
+ .xlarge-only-text-right {
+ text-align: right !important; }
+ .xlarge-only-text-center {
+ text-align: center !important; }
+ .xlarge-only-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:90.063em) {
+ .xlarge-text-left {
+ text-align: left !important; }
+ .xlarge-text-right {
+ text-align: right !important; }
+ .xlarge-text-center {
+ text-align: center !important; }
+ .xlarge-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:120.063em) and (max-width:99999999em) {
+ .xxlarge-only-text-left {
+ text-align: left !important; }
+ .xxlarge-only-text-right {
+ text-align: right !important; }
+ .xxlarge-only-text-center {
+ text-align: center !important; }
+ .xxlarge-only-text-justify {
+ text-align: justify !important; } }
+
+@media only screen and (min-width:120.063em) {
+ .xxlarge-text-left {
+ text-align: left !important; }
+ .xxlarge-text-right {
+ text-align: right !important; }
+ .xxlarge-text-center {
+ text-align: center !important; }
+ .xxlarge-text-justify {
+ text-align: justify !important; } }
+
+/* Typography resets */
+div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, p, blockquote, th, td {
+ margin: 0;
+ padding: 0; }
+
+/* Default Link Styles */
+a {
+ color: #008CBA;
+ line-height: inherit;
+ text-decoration: none; }
+ a:hover, a:focus {
+ color: #0078a0; }
+ a img {
+ border: none; }
+
+/* Default paragraph styles */
+p {
+ font-family: inherit;
+ font-size: 0.875rem;
+ font-weight: normal;
+ line-height: 1.6;
+ margin-bottom: 1.25rem;
+ text-rendering: optimizeLegibility; }
+ p.lead {
+ font-size: 1.09375rem;
+ line-height: 1.6; }
+ p aside {
+ font-size: 0.875rem;
+ font-style: italic;
+ line-height: 1.35; }
+
+/* Default header styles */
+h1, h2, h3, h4, h5, h6 {
+ color: #000000;
+ font-family: "Open Sans", sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.4;
+ margin-bottom: 0.5rem;
+ margin-top: 0.2rem;
+ text-rendering: optimizeLegibility; }
+ h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
+ color: #595959;
+ font-size: 60%;
+ line-height: 0; }
+
+h1 {
+ font-size: 1.625rem; }
+
+h2 {
+ font-size: 1.625rem; }
+
+h3 {
+ font-size: 1.9375rem; }
+
+h4 {
+ font-size: 1.9375rem; }
+
+h5 {
+ font-size: 1.75rem; }
+
+h6 {
+ font-size: 1.5rem; }
+
+.subheader {
+ line-height: 1.4;
+ color: #595959;
+ font-weight: normal;
+ margin-top: 0.2rem;
+ margin-bottom: 0.5rem; }
+
+hr {
+ border: solid #DDDDDD;
+ border-width: 1px 0 0;
+ clear: both;
+ height: 0;
+ margin: 1.25rem 0 1.1875rem; }
+
+/* Helpful Typography Defaults */
+em, i {
+ font-style: italic;
+ line-height: inherit; }
+
+strong, b {
+ font-weight: bold;
+ line-height: inherit; }
+
+small {
+ font-size: 60%;
+ line-height: inherit; }
+
+code {
+ background-color: #f8f8f8;
+ border-color: #dfdfdf;
+ border-style: solid;
+ border-width: 1px;
+ color: #333333;
+ font-family: Consolas, "Liberation Mono", Courier, monospace;
+ font-weight: normal;
+ padding: 0.125rem 0.3125rem 0.0625rem; }
+
+/* Lists */
+ul, ol, dl {
+ font-family: inherit;
+ font-size: 0.875rem;
+ line-height: 1.6;
+ list-style-position: outside;
+ margin-bottom: 1.25rem; }
+
+ul {
+ margin-left: 1.1rem; }
+
+/* Unordered Lists */
+ul li ul, ul li ol {
+ margin-left: 1.25rem;
+ margin-bottom: 0; }
+ul.square li ul, ul.circle li ul, ul.disc li ul {
+ list-style: inherit; }
+ul.square {
+ list-style-type: square;
+ margin-left: 1.1rem; }
+ul.circle {
+ list-style-type: circle;
+ margin-left: 1.1rem; }
+ul.disc {
+ list-style-type: disc;
+ margin-left: 1.1rem; }
+
+/* Ordered Lists */
+ol {
+ margin-left: 1.4rem; }
+ ol li ul, ol li ol {
+ margin-left: 1.25rem;
+ margin-bottom: 0; }
+
+.no-bullet {
+ list-style-type: none;
+ margin-left: 0; }
+ .no-bullet li ul, .no-bullet li ol {
+ margin-left: 1.25rem;
+ margin-bottom: 0;
+ list-style: none; }
+
+/* Definition Lists */
+dl dt {
+ margin-bottom: 0.3rem;
+ font-weight: bold; }
+dl dd {
+ margin-bottom: 0.75rem; }
+
+/* Abbreviations */
+abbr, acronym {
+ text-transform: uppercase;
+ font-size: 90%;
+ color: #000000;
+ cursor: help; }
+
+abbr {
+ text-transform: none; }
+ abbr[title] {
+ border-bottom: 1px dotted #DDDDDD; }
+
+/* Blockquotes */
+blockquote {
+ margin: 0 0 1.25rem;
+ padding: 0.5625rem 1.25rem 0 1.1875rem;
+ border-left: 1px solid #DDDDDD; }
+ blockquote cite {
+ display: block;
+ font-size: 0.8125rem;
+ color: #3b3b3b; }
+ blockquote cite:before {
+ content: "\2014 \0020"; }
+ blockquote cite a, blockquote cite a:visited {
+ color: #3b3b3b; }
+
+blockquote, blockquote p {
+ line-height: 1.6;
+ color: #595959; }
+
+/* Microformats */
+.vcard {
+ display: inline-block;
+ margin: 0 0 1.25rem 0;
+ border: 1px solid #DDDDDD;
+ padding: 0.625rem 0.75rem; }
+ .vcard li {
+ margin: 0;
+ display: block; }
+ .vcard .fn {
+ font-weight: bold;
+ font-size: 0.9375rem; }
+
+.vevent .summary {
+ font-weight: bold; }
+.vevent abbr {
+ cursor: default;
+ text-decoration: none;
+ font-weight: bold;
+ border: none;
+ padding: 0 0.0625rem; }
+
+@media only screen and (min-width:40.063em) {
+ h1, h2, h3, h4, h5, h6 {
+ line-height: 1.4; }
+ h1 {
+ font-size: 2.25rem; }
+ h2 {
+ font-size: 2.25rem; }
+ h3 {
+ font-size: 2.25rem; }
+ h4 {
+ font-size: 2.25rem; }
+ h5 {
+ font-size: 1.75rem; }
+ h6 {
+ font-size: 1.5rem; } }
+
+/*
+ * Print styles.
+ *
+ * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/
+ * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com)
+ */
+@media print {
+ * {
+ background: transparent !important;
+ color: #000000 !important;
+ /* Black prints faster: h5bp.com/s */
+ box-shadow: none !important;
+ text-shadow: none !important; }
+ a, a:visited {
+ text-decoration: underline; }
+ a[href]:after {
+ content: " (" attr(href) ")"; }
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+ .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
+ content: ""; }
+ pre, blockquote {
+ border: 1px solid #999999;
+ page-break-inside: avoid; }
+ thead {
+ display: table-header-group;
+ /* h5bp.com/t */ }
+ tr, img {
+ page-break-inside: avoid; }
+ img {
+ max-width: 100% !important; }
+ @page {
+ margin: 0.34in; }
+
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3; }
+ h2, h3 {
+ page-break-after: avoid; } }
+
+.off-canvas-wrap {
+ -webkit-backface-visibility: hidden;
+ position: relative;
+ width: 100%;
+ overflow: hidden; }
+ .off-canvas-wrap.move-right, .off-canvas-wrap.move-left, .off-canvas-wrap.move-bottom, .off-canvas-wrap.move-top {
+ min-height: 100%;
+ -webkit-overflow-scrolling: touch; }
+
+.inner-wrap {
+ position: relative;
+ width: 100%;
+ -webkit-transition: -webkit-transform 500ms ease;
+ -moz-transition: -moz-transform 500ms ease;
+ -ms-transition: -ms-transform 500ms ease;
+ -o-transition: -o-transform 500ms ease;
+ transition: transform 500ms ease; }
+ .inner-wrap:before, .inner-wrap:after {
+ content: " ";
+ display: table; }
+ .inner-wrap:after {
+ clear: both; }
+
+.tab-bar {
+ -webkit-backface-visibility: hidden;
+ background: #bbdaeb;
+ color: #FFFFFF;
+ height: 2.8125rem;
+ line-height: 2.8125rem;
+ position: relative; }
+ .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 {
+ color: #FFFFFF;
+ font-weight: bold;
+ line-height: 2.8125rem;
+ margin: 0; }
+ .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4 {
+ font-size: 1.75rem; }
+
+.left-small {
+ height: 2.8125rem;
+ position: absolute;
+ top: 0;
+ width: 2.8125rem;
+ border-right: solid 1px #307aa3;
+ left: 0; }
+
+.right-small {
+ height: 2.8125rem;
+ position: absolute;
+ top: 0;
+ width: 2.8125rem;
+ border-left: solid 1px #307aa3;
+ right: 0; }
+
+.tab-bar-section {
+ height: 2.8125rem;
+ padding: 0 0.625rem;
+ position: absolute;
+ text-align: center;
+ top: 0; }
+ .tab-bar-section.left {
+ text-align: left; }
+ .tab-bar-section.right {
+ text-align: right; }
+ .tab-bar-section.left {
+ left: 0;
+ right: 2.8125rem; }
+ .tab-bar-section.right {
+ left: 2.8125rem;
+ right: 0; }
+ .tab-bar-section.middle {
+ left: 2.8125rem;
+ right: 2.8125rem; }
+
+.tab-bar .menu-icon {
+ color: #FFFFFF;
+ display: block;
+ height: 2.8125rem;
+ padding: 0;
+ position: relative;
+ text-indent: 3.4375rem;
+ transform: translate3d(0, 0, 0);
+ width: 2.8125rem; }
+ .tab-bar .menu-icon span::after {
+ content: "";
+ display: block;
+ height: 0;
+ position: absolute;
+ top: 50%;
+ margin-top: -0.5rem;
+ left: 0.90625rem;
+ box-shadow: 0 0 0 1px #FFFFFF, 0 7px 0 1px #FFFFFF, 0 14px 0 1px #FFFFFF;
+ width: 1rem; }
+ .tab-bar .menu-icon span:hover:after {
+ box-shadow: 0 0 0 1px #b3b3b3, 0 7px 0 1px #b3b3b3, 0 14px 0 1px #b3b3b3; }
+
+.left-off-canvas-menu {
+ -webkit-backface-visibility: hidden;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ transition: transform 500ms ease 0s;
+ width: 15.625rem;
+ z-index: 1001;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ -moz-transform: translate3d(-100%, 0, 0);
+ -ms-transform: translate(-100%, 0);
+ -o-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ top: 0; }
+ .left-off-canvas-menu * {
+ -webkit-backface-visibility: hidden; }
+
+.right-off-canvas-menu {
+ -webkit-backface-visibility: hidden;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ transition: transform 500ms ease 0s;
+ width: 15.625rem;
+ z-index: 1001;
+ -webkit-transform: translate3d(100%, 0, 0);
+ -moz-transform: translate3d(100%, 0, 0);
+ -ms-transform: translate(100%, 0);
+ -o-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ right: 0;
+ top: 0; }
+ .right-off-canvas-menu * {
+ -webkit-backface-visibility: hidden; }
+
+.top-off-canvas-menu {
+ -webkit-backface-visibility: hidden;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ transition: transform 500ms ease 0s;
+ width: 15.625rem;
+ z-index: 1001;
+ -webkit-transform: translate3d(0, -100%, 0);
+ -moz-transform: translate3d(0, -100%, 0);
+ -ms-transform: translate(0, -100%);
+ -o-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ top: 0;
+ width: 100%;
+ height: 18.75rem; }
+ .top-off-canvas-menu * {
+ -webkit-backface-visibility: hidden; }
+
+.bottom-off-canvas-menu {
+ -webkit-backface-visibility: hidden;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ transition: transform 500ms ease 0s;
+ width: 15.625rem;
+ z-index: 1001;
+ -webkit-transform: translate3d(0, 100%, 0);
+ -moz-transform: translate3d(0, 100%, 0);
+ -ms-transform: translate(0, 100%);
+ -o-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ bottom: 0;
+ width: 100%;
+ height: 18.75rem; }
+ .bottom-off-canvas-menu * {
+ -webkit-backface-visibility: hidden; }
+
+ul.off-canvas-list {
+ list-style-type: none;
+ margin: 0;
+ padding: 0; }
+ ul.off-canvas-list li label {
+ background: #444444;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e;
+ color: #999999;
+ display: block;
+ font-size: 0.75rem;
+ font-weight: bold;
+ margin: 0;
+ padding: .3rem 0.9375rem;
+ text-transform: uppercase; }
+ ul.off-canvas-list li a {
+ border-bottom: 1px solid #69aed3;
+ color: rgba(255, 255, 255, 0.7);
+ display: block;
+ padding: 0.6666666667rem;
+ transition: background 300ms ease; }
+ ul.off-canvas-list li a:hover {
+ background: #59a5ce; }
+ ul.off-canvas-list li a:active {
+ background: #59a5ce; }
+
+.move-right > .inner-wrap {
+ -webkit-transform: translate3d(15.625rem, 0, 0);
+ -moz-transform: translate3d(15.625rem, 0, 0);
+ -ms-transform: translate(15.625rem, 0);
+ -o-transform: translate3d(15.625rem, 0, 0);
+ transform: translate3d(15.625rem, 0, 0); }
+.move-right .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .move-right .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.move-left > .inner-wrap {
+ -webkit-transform: translate3d(-15.625rem, 0, 0);
+ -moz-transform: translate3d(-15.625rem, 0, 0);
+ -ms-transform: translate(-15.625rem, 0);
+ -o-transform: translate3d(-15.625rem, 0, 0);
+ transform: translate3d(-15.625rem, 0, 0); }
+.move-left .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .move-left .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.move-top > .inner-wrap {
+ -webkit-transform: translate3d(0, -18.75rem, 0);
+ -moz-transform: translate3d(0, -18.75rem, 0);
+ -ms-transform: translate(0, -18.75rem);
+ -o-transform: translate3d(0, -18.75rem, 0);
+ transform: translate3d(0, -18.75rem, 0); }
+.move-top .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .move-top .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.move-bottom > .inner-wrap {
+ -webkit-transform: translate3d(0, 18.75rem, 0);
+ -moz-transform: translate3d(0, 18.75rem, 0);
+ -ms-transform: translate(0, 18.75rem);
+ -o-transform: translate3d(0, 18.75rem, 0);
+ transform: translate3d(0, 18.75rem, 0); }
+.move-bottom .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .move-bottom .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.offcanvas-overlap .left-off-canvas-menu, .offcanvas-overlap .right-off-canvas-menu, .offcanvas-overlap .top-off-canvas-menu, .offcanvas-overlap .bottom-off-canvas-menu {
+ -ms-transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+ -o-transform: none;
+ transform: none;
+ z-index: 1003; }
+.offcanvas-overlap .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .offcanvas-overlap .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.offcanvas-overlap-left .right-off-canvas-menu {
+ -ms-transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+ -o-transform: none;
+ transform: none;
+ z-index: 1003; }
+.offcanvas-overlap-left .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .offcanvas-overlap-left .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.offcanvas-overlap-right .left-off-canvas-menu {
+ -ms-transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+ -o-transform: none;
+ transform: none;
+ z-index: 1003; }
+.offcanvas-overlap-right .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .offcanvas-overlap-right .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.offcanvas-overlap-top .bottom-off-canvas-menu {
+ -ms-transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+ -o-transform: none;
+ transform: none;
+ z-index: 1003; }
+.offcanvas-overlap-top .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .offcanvas-overlap-top .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.offcanvas-overlap-bottom .top-off-canvas-menu {
+ -ms-transform: none;
+ -webkit-transform: none;
+ -moz-transform: none;
+ -o-transform: none;
+ transform: none;
+ z-index: 1003; }
+.offcanvas-overlap-bottom .exit-off-canvas {
+ -webkit-backface-visibility: hidden;
+ box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ transition: background 300ms ease;
+ -webkit-tap-highlight-color: transparent;
+ background: rgba(255, 255, 255, 0.2);
+ bottom: 0;
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1002; }
+ @media only screen and (min-width:40.063em) {
+ .offcanvas-overlap-bottom .exit-off-canvas:hover {
+ background: rgba(255, 255, 255, 0.05); } }
+
+.no-csstransforms .left-off-canvas-menu {
+ left: -15.625rem; }
+.no-csstransforms .right-off-canvas-menu {
+ right: -15.625rem; }
+.no-csstransforms .top-off-canvas-menu {
+ top: -18.75rem; }
+.no-csstransforms .bottom-off-canvas-menu {
+ bottom: -18.75rem; }
+.no-csstransforms .move-left > .inner-wrap {
+ right: 15.625rem; }
+.no-csstransforms .move-right > .inner-wrap {
+ left: 15.625rem; }
+.no-csstransforms .move-top > .inner-wrap {
+ right: 18.75rem; }
+.no-csstransforms .move-bottom > .inner-wrap {
+ left: 18.75rem; }
+
+.left-submenu {
+ -webkit-backface-visibility: hidden;
+ -webkit-overflow-scrolling: touch;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ margin: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ top: 0;
+ width: 15.625rem;
+ height: 18.75rem;
+ z-index: 1002;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ -moz-transform: translate3d(-100%, 0, 0);
+ -ms-transform: translate(-100%, 0);
+ -o-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ -webkit-transition: -webkit-transform 500ms ease;
+ -moz-transition: -moz-transform 500ms ease;
+ -ms-transition: -ms-transform 500ms ease;
+ -o-transition: -o-transform 500ms ease;
+ transition: transform 500ms ease; }
+ .left-submenu * {
+ -webkit-backface-visibility: hidden; }
+ .left-submenu .back > a {
+ background: #444;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e;
+ color: #999999;
+ font-weight: bold;
+ padding: .3rem 0.9375rem;
+ text-transform: uppercase;
+ margin: 0; }
+ .left-submenu .back > a:hover {
+ background: #303030;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e; }
+ .left-submenu .back > a:before {
+ content: "\AB";
+ margin-right: .5rem;
+ display: inline; }
+ .left-submenu.move-right, .left-submenu.offcanvas-overlap-right, .left-submenu.offcanvas-overlap {
+ -webkit-transform: translate3d(0%, 0, 0);
+ -moz-transform: translate3d(0%, 0, 0);
+ -ms-transform: translate(0%, 0);
+ -o-transform: translate3d(0%, 0, 0);
+ transform: translate3d(0%, 0, 0); }
+
+.right-submenu {
+ -webkit-backface-visibility: hidden;
+ -webkit-overflow-scrolling: touch;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ margin: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ top: 0;
+ width: 15.625rem;
+ height: 18.75rem;
+ z-index: 1002;
+ -webkit-transform: translate3d(100%, 0, 0);
+ -moz-transform: translate3d(100%, 0, 0);
+ -ms-transform: translate(100%, 0);
+ -o-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ right: 0;
+ -webkit-transition: -webkit-transform 500ms ease;
+ -moz-transition: -moz-transform 500ms ease;
+ -ms-transition: -ms-transform 500ms ease;
+ -o-transition: -o-transform 500ms ease;
+ transition: transform 500ms ease; }
+ .right-submenu * {
+ -webkit-backface-visibility: hidden; }
+ .right-submenu .back > a {
+ background: #444;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e;
+ color: #999999;
+ font-weight: bold;
+ padding: .3rem 0.9375rem;
+ text-transform: uppercase;
+ margin: 0; }
+ .right-submenu .back > a:hover {
+ background: #303030;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e; }
+ .right-submenu .back > a:after {
+ content: "\BB";
+ margin-left: .5rem;
+ display: inline; }
+ .right-submenu.move-left, .right-submenu.offcanvas-overlap-left, .right-submenu.offcanvas-overlap {
+ -webkit-transform: translate3d(0%, 0, 0);
+ -moz-transform: translate3d(0%, 0, 0);
+ -ms-transform: translate(0%, 0);
+ -o-transform: translate3d(0%, 0, 0);
+ transform: translate3d(0%, 0, 0); }
+
+.top-submenu {
+ -webkit-backface-visibility: hidden;
+ -webkit-overflow-scrolling: touch;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ margin: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ top: 0;
+ width: 15.625rem;
+ height: 18.75rem;
+ z-index: 1002;
+ -webkit-transform: translate3d(0, -100%, 0);
+ -moz-transform: translate3d(0, -100%, 0);
+ -ms-transform: translate(0, -100%);
+ -o-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ top: 0;
+ width: 100%;
+ -webkit-transition: -webkit-transform 500ms ease;
+ -moz-transition: -moz-transform 500ms ease;
+ -ms-transition: -ms-transform 500ms ease;
+ -o-transition: -o-transform 500ms ease;
+ transition: transform 500ms ease; }
+ .top-submenu * {
+ -webkit-backface-visibility: hidden; }
+ .top-submenu .back > a {
+ background: #444;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e;
+ color: #999999;
+ font-weight: bold;
+ padding: .3rem 0.9375rem;
+ text-transform: uppercase;
+ margin: 0; }
+ .top-submenu .back > a:hover {
+ background: #303030;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e; }
+ .top-submenu.move-bottom, .top-submenu.offcanvas-overlap-bottom, .top-submenu.offcanvas-overlap {
+ -webkit-transform: translate3d(0, 0%, 0);
+ -moz-transform: translate3d(0, 0%, 0);
+ -ms-transform: translate(0, 0%);
+ -o-transform: translate3d(0, 0%, 0);
+ transform: translate3d(0, 0%, 0); }
+
+.bottom-submenu {
+ -webkit-backface-visibility: hidden;
+ -webkit-overflow-scrolling: touch;
+ background: #bbdaeb;
+ bottom: 0;
+ box-sizing: content-box;
+ margin: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ position: absolute;
+ top: 0;
+ width: 15.625rem;
+ height: 18.75rem;
+ z-index: 1002;
+ -webkit-transform: translate3d(0, 100%, 0);
+ -moz-transform: translate3d(0, 100%, 0);
+ -ms-transform: translate(0, 100%);
+ -o-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ bottom: 0;
+ width: 100%;
+ -webkit-transition: -webkit-transform 500ms ease;
+ -moz-transition: -moz-transform 500ms ease;
+ -ms-transition: -ms-transform 500ms ease;
+ -o-transition: -o-transform 500ms ease;
+ transition: transform 500ms ease; }
+ .bottom-submenu * {
+ -webkit-backface-visibility: hidden; }
+ .bottom-submenu .back > a {
+ background: #444;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e;
+ color: #999999;
+ font-weight: bold;
+ padding: .3rem 0.9375rem;
+ text-transform: uppercase;
+ margin: 0; }
+ .bottom-submenu .back > a:hover {
+ background: #303030;
+ border-bottom: none;
+ border-top: 1px solid #5e5e5e; }
+ .bottom-submenu.move-top, .bottom-submenu.offcanvas-overlap-top, .bottom-submenu.offcanvas-overlap {
+ -webkit-transform: translate3d(0, 0%, 0);
+ -moz-transform: translate3d(0, 0%, 0);
+ -ms-transform: translate(0, 0%);
+ -o-transform: translate3d(0, 0%, 0);
+ transform: translate3d(0, 0%, 0); }
+
+.left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after {
+ content: "\BB";
+ margin-left: .5rem;
+ display: inline; }
+
+.right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before {
+ content: "\AB";
+ margin-right: .5rem;
+ display: inline; }
+
+/* small displays */
+@media only screen {
+ .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down {
+ display: inherit !important; }
+ .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down {
+ display: none !important; }
+ .visible-for-small-only, .visible-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto; }
+ .hidden-for-small-only, .hidden-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+ table.show-for-small-only, table.show-for-small-up, table.show-for-small, table.show-for-small-down, table.hide-for-medium-only, table.hide-for-medium-up, table.hide-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down {
+ display: table !important; }
+ thead.show-for-small-only, thead.show-for-small-up, thead.show-for-small, thead.show-for-small-down, thead.hide-for-medium-only, thead.hide-for-medium-up, thead.hide-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down {
+ display: table-header-group !important; }
+ tbody.show-for-small-only, tbody.show-for-small-up, tbody.show-for-small, tbody.show-for-small-down, tbody.hide-for-medium-only, tbody.hide-for-medium-up, tbody.hide-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down {
+ display: table-row-group !important; }
+ tr.show-for-small-only, tr.show-for-small-up, tr.show-for-small, tr.show-for-small-down, tr.hide-for-medium-only, tr.hide-for-medium-up, tr.hide-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down {
+ display: table-row; }
+ th.show-for-small-only, td.show-for-small-only, th.show-for-small-up, td.show-for-small-up, th.show-for-small, td.show-for-small, th.show-for-small-down, td.show-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.hide-for-medium-up, td.hide-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down {
+ display: table-cell !important; } }
+
+/* medium displays */
+@media only screen and (min-width:40.063em) {
+ .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down {
+ display: inherit !important; }
+ .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down {
+ display: none !important; }
+ .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto; }
+ .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+ table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.show-for-medium-only, table.show-for-medium-up, table.show-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down {
+ display: table !important; }
+ thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.show-for-medium-only, thead.show-for-medium-up, thead.show-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down {
+ display: table-header-group !important; }
+ tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.show-for-medium-only, tbody.show-for-medium-up, tbody.show-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down {
+ display: table-row-group !important; }
+ tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.show-for-medium-only, tr.show-for-medium-up, tr.show-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down {
+ display: table-row; }
+ th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.show-for-medium-only, td.show-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.show-for-medium, td.show-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down {
+ display: table-cell !important; } }
+
+/* large displays */
+@media only screen and (min-width:64.063em) {
+ .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down {
+ display: inherit !important; }
+ .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down {
+ display: none !important; }
+ .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto; }
+ .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+ table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.show-for-large-only, table.show-for-large-up, table.show-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down {
+ display: table !important; }
+ thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.show-for-large-only, thead.show-for-large-up, thead.show-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down {
+ display: table-header-group !important; }
+ tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.show-for-large-only, tbody.show-for-large-up, tbody.show-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down {
+ display: table-row-group !important; }
+ tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.show-for-large-only, tr.show-for-large-up, tr.show-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down {
+ display: table-row; }
+ th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.show-for-large-only, td.show-for-large-only, th.show-for-large-up, td.show-for-large-up, th.show-for-large, td.show-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down {
+ display: table-cell !important; } }
+
+/* xlarge displays */
+@media only screen and (min-width:90.063em) {
+ .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down {
+ display: inherit !important; }
+ .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down {
+ display: none !important; }
+ .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto; }
+ .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+ table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.show-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down {
+ display: table !important; }
+ thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.show-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down {
+ display: table-header-group !important; }
+ tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.show-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down {
+ display: table-row-group !important; }
+ tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.show-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down {
+ display: table-row; }
+ th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.show-for-xlarge-only, td.show-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.show-for-xlarge, td.show-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down {
+ display: table-cell !important; } }
+
+/* xxlarge displays */
+@media only screen and (min-width:120.063em) {
+ .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .hide-for-xlarge-only, .show-for-xlarge-up, .hide-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .show-for-xxlarge-down {
+ display: inherit !important; }
+ .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .show-for-xlarge-only, .hide-for-xlarge-up, .show-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .hide-for-xxlarge-down {
+ display: none !important; }
+ .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .hidden-for-xlarge-only, .visible-for-xlarge-up, .hidden-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .visible-for-xxlarge-down {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto; }
+ .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .visible-for-xlarge-only, .hidden-for-xlarge-up, .visible-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .hidden-for-xxlarge-down {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+ table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.hide-for-xlarge, table.hide-for-xlarge-down, table.show-for-xxlarge-only, table.show-for-xxlarge-up, table.show-for-xxlarge, table.show-for-xxlarge-down {
+ display: table !important; }
+ thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.hide-for-xlarge, thead.hide-for-xlarge-down, thead.show-for-xxlarge-only, thead.show-for-xxlarge-up, thead.show-for-xxlarge, thead.show-for-xxlarge-down {
+ display: table-header-group !important; }
+ tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.hide-for-xlarge, tbody.hide-for-xlarge-down, tbody.show-for-xxlarge-only, tbody.show-for-xxlarge-up, tbody.show-for-xxlarge, tbody.show-for-xxlarge-down {
+ display: table-row-group !important; }
+ tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.hide-for-xlarge, tr.hide-for-xlarge-down, tr.show-for-xxlarge-only, tr.show-for-xxlarge-up, tr.show-for-xxlarge, tr.show-for-xxlarge-down {
+ display: table-row; }
+ th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.hide-for-xlarge-down, td.hide-for-xlarge-down, th.show-for-xxlarge-only, td.show-for-xxlarge-only, th.show-for-xxlarge-up, td.show-for-xxlarge-up, th.show-for-xxlarge, td.show-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down {
+ display: table-cell !important; } }
+
+/* Orientation targeting */
+.show-for-landscape, .hide-for-portrait {
+ display: inherit !important; }
+
+.hide-for-landscape, .show-for-portrait {
+ display: none !important; }
+
+/* Specific visibility for tables */
+table.hide-for-landscape, table.show-for-portrait {
+ display: table !important; }
+
+thead.hide-for-landscape, thead.show-for-portrait {
+ display: table-header-group !important; }
+
+tbody.hide-for-landscape, tbody.show-for-portrait {
+ display: table-row-group !important; }
+
+tr.hide-for-landscape, tr.show-for-portrait {
+ display: table-row !important; }
+
+td.hide-for-landscape, td.show-for-portrait, th.hide-for-landscape, th.show-for-portrait {
+ display: table-cell !important; }
+
+@media only screen and (orientation: landscape) {
+ .show-for-landscape, .hide-for-portrait {
+ display: inherit !important; }
+ .hide-for-landscape, .show-for-portrait {
+ display: none !important; }
+ /* Specific visibility for tables */
+ table.show-for-landscape, table.hide-for-portrait {
+ display: table !important; }
+ thead.show-for-landscape, thead.hide-for-portrait {
+ display: table-header-group !important; }
+ tbody.show-for-landscape, tbody.hide-for-portrait {
+ display: table-row-group !important; }
+ tr.show-for-landscape, tr.hide-for-portrait {
+ display: table-row !important; }
+ td.show-for-landscape, td.hide-for-portrait, th.show-for-landscape, th.hide-for-portrait {
+ display: table-cell !important; } }
+
+@media only screen and (orientation: portrait) {
+ .show-for-portrait, .hide-for-landscape {
+ display: inherit !important; }
+ .hide-for-portrait, .show-for-landscape {
+ display: none !important; }
+ /* Specific visibility for tables */
+ table.show-for-portrait, table.hide-for-landscape {
+ display: table !important; }
+ thead.show-for-portrait, thead.hide-for-landscape {
+ display: table-header-group !important; }
+ tbody.show-for-portrait, tbody.hide-for-landscape {
+ display: table-row-group !important; }
+ tr.show-for-portrait, tr.hide-for-landscape {
+ display: table-row !important; }
+ td.show-for-portrait, td.hide-for-landscape, th.show-for-portrait, th.hide-for-landscape {
+ display: table-cell !important; } }
+
+/* Touch-enabled device targeting */
+.show-for-touch {
+ display: none !important; }
+
+.hide-for-touch {
+ display: inherit !important; }
+
+.touch .show-for-touch {
+ display: inherit !important; }
+
+.touch .hide-for-touch {
+ display: none !important; }
+
+/* Specific visibility for tables */
+table.hide-for-touch {
+ display: table !important; }
+
+.touch table.show-for-touch {
+ display: table !important; }
+
+thead.hide-for-touch {
+ display: table-header-group !important; }
+
+.touch thead.show-for-touch {
+ display: table-header-group !important; }
+
+tbody.hide-for-touch {
+ display: table-row-group !important; }
+
+.touch tbody.show-for-touch {
+ display: table-row-group !important; }
+
+tr.hide-for-touch {
+ display: table-row !important; }
+
+.touch tr.show-for-touch {
+ display: table-row !important; }
+
+td.hide-for-touch {
+ display: table-cell !important; }
+
+.touch td.show-for-touch {
+ display: table-cell !important; }
+
+th.hide-for-touch {
+ display: table-cell !important; }
+
+.touch th.show-for-touch {
+ display: table-cell !important; }
+
+/* Screen reader-specific classes */
+.show-for-sr {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+
+.show-on-focus {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute !important;
+ width: 1px; }
+ .show-on-focus:focus, .show-on-focus:active {
+ position: static !important;
+ height: auto;
+ width: auto;
+ overflow: visible;
+ clip: auto; }
+
+/* Print visibility */
+.print-only, .show-for-print {
+ display: none !important; }
+
+@media print {
+ .print-only, .show-for-print {
+ display: block !important; }
+ .hide-on-print, .hide-for-print {
+ display: none !important; }
+ table.show-for-print {
+ display: table !important; }
+ thead.show-for-print {
+ display: table-header-group !important; }
+ tbody.show-for-print {
+ display: table-row-group !important; }
+ tr.show-for-print {
+ display: table-row !important; }
+ td.show-for-print {
+ display: table-cell !important; }
+ th.show-for-print {
+ display: table-cell !important; } }
+
+/*
+ Created on : Mar 5, 2015, 2:57:35 PM
+ Author : laury
+*/
+img.aligncenter {
+ display: block;
+ clear: both;
+ float: none;
+ padding: 0;
+ margin-left: auto;
+ margin-right: auto; }
+
+img.alignright {
+ padding: 0;
+ margin: 0 0 6px 11px;
+ display: inline; }
+
+blockquote.alignleft, img.alignleft, .wp-caption.alignleft {
+ margin: 0.4375rem 2.1875rem 0.4375rem 0; }
+
+blockquote.alignright, img.alignright, .wp-caption.alignright {
+ margin: 0.4375rem 0 0.4375rem 2.1875rem; }
+
+img.alignleft {
+ padding: 0;
+ display: inline; }
+
+.alignright {
+ float: right; }
+
+.alignnone {
+ float: none; }
+
+.alignleft {
+ float: left; }
+
+.wp-caption {
+ width: auto; }
+
+.wp-caption-text {
+ font-family: Open Sans, sans-serif;
+ font-size: 9px;
+ color: #FFFFFF;
+ font-style: italic;
+ margin: 0;
+ padding: 0 5px; }
+
+.gallery-one-title {
+ height: 45px;
+ font-size: 0.8em;
+ text-align: center;
+ font-family: sans-serif;
+ padding: 5px; }
+
+.gallery-holder {
+ margin: 10px 0 20px 0; }
+
+@media 0em, 40em {
+ img.alignright, img.alignleft, img.aligncenter {
+ width: 70% !important;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ float: none;
+ text-align: center; }
+ div.wp-caption.alignright, div.wp-caption.alignleft {
+ width: 44% !important;
+ margin-left: auto;
+ margin-right: auto;
+ float: none;
+ text-align: center; }
+ div.wp-caption.aligncenter {
+ width: 85% !important;
+ margin-left: auto;
+ margin-right: auto;
+ float: none;
+ text-align: center; }
+ div.wp-caption.alignnone {
+ width: 85% !important;
+ float: none; }
+ div.wp-caption.alignright, div.wp-caption.alignleft, div.wp-caption.aligncenter {
+ width: 100%; } }
+
+@media 40.063em, 64em {
+ img.aligncenter, img.alignnone {
+ width: 70% !important;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ float: none;
+ text-align: center; }
+ div.wp-caption.aligncenter {
+ width: 74% !important;
+ margin-left: auto;
+ margin-right: auto;
+ float: none;
+ text-align: center; }
+ div.wp-caption.aligncenter {
+ width: 100%; }
+ div.wp-caption.alignnone {
+ width: 73% !important;
+ float: none; } }
+
+.wp-caption {
+ max-width: 100%;
+ margin: 10px 20px;
+ padding: 5px;
+ text-align: center; }
+ .wp-caption img {
+ width: 100%; }
+ .wp-caption p.wp-caption-text {
+ padding: 5px;
+ width: 100%;
+ margin: 0;
+ color: black;
+ font-size: 12px; }
+ .wp-caption.aligncenter {
+ margin: 10px auto; }
+
+@media only screen and (max-width: 40em) {
+ #blog-posts-over {
+ padding: 0 !important;
+ margin: 0 !important; } }
+
+.blog-posts-container {
+ margin: 30px 0 30px; }
+ .blog-posts-container embed, .blog-posts-container iframe, .blog-posts-container object, .blog-posts-container video {
+ max-width: 100%; }
+ .blog-posts-container a {
+ text-decoration: none; }
+ .blog-posts-container header.entry-header h2.entry-title a {
+ color: #222;
+ margin-left: 0; }
+ .blog-posts-container .wp-caption .wp-caption-text, .blog-posts-container .gallery-caption, .blog-posts-container .entry-caption {
+ overflow: hidden;
+ color: #757575;
+ font-size: 0.857143rem;
+ font-style: italic;
+ line-height: 2; }
+ .blog-posts-container .date {
+ font-size: 12px; }
+ .blog-posts-container footer.entry-meta {
+ color: #757575;
+ font-size: 0.928571rem;
+ line-height: 1.84615;
+ margin-top: 1.71429rem;
+ clear: both;
+ float: none;
+ margin-right: auto; }
+ .blog-posts-container footer {
+ background: none;
+ clear: both;
+ padding: 15px 0 0;
+ position: relative;
+ text-align: center; }
+
+#content-wrapper h1, #content-wrapper h2, #content-wrapper h3, #content-wrapper h4, #content-wrapper h5, #content-wrapper h6 {
+ clear: both; }
+
+.content {
+ background: #fff;
+ /* -webkit-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
+ -moz-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
+ box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);*/ }
+
+#searchform_container {
+ margin-top: 20px; }
+
+#searchform {
+ max-width: 100%;
+ text-align: center; }
+ #searchform div input.blogbutton {
+ background: -webkit-linear-gradient(left, #1999ce 5%, #107098 100%);
+ background: -moz-linear-gradient(center top, #1999ce 5%, #107098 100%);
+ background: -ms-linear-gradient(left, #1999ce 5%, #107098 100%); }
+
+#blog-side-info {
+ border-left: 1px solid grey;
+ margin-top: 30px;
+ padding-left: 20px; }
+ @media only screen and (max-width: 40em) {
+ #blog-side-info {
+ text-align: center; } }
+
+h1, h2, h3, h4, h5, h6 {
+ clear: both; }
+
+/* PLUGINS */
+/* Nextgen */
+.gallery li a img {
+ display: block;
+ width: 100%; }
+
+.ngg-gallery-thumbnail, .ngg-gallery-thumbnail-box {
+ float: none !important; }
+
+.ngg-album-compact h4 .ngg-album-desc {
+ height: auto !important;
+ font-family: 'El Messiri', Cambria, "Times New Roman", Times, serif;
+ font-weight: 400; }
+
+.ngg-album-compact .album-meta-wrapper h4 a {
+ font-style: normal; }
+
+.album-meta-wrapper {
+ display: block;
+ height: 54px;
+ margin-bottom: 20px; }
+
+.ngg-glmalbums {
+ margin: 10px 0;
+ min-height: 260px; }
+ @media only screen and (max-width: 40em) {
+ .ngg-glmalbums {
+ min-height: 180px; } }
+
+.ngg-album-link {
+ text-align: center; }
+
+/* Ninja Forms */
+.ninja-forms-form-wrap {
+ max-width: 600px;
+ margin: 0 auto; }
+ .ninja-forms-form-wrap input[type=submit] {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ border-radius: 0;
+ border-style: solid;
+ border-width: 0;
+ cursor: pointer;
+ font-family: "Open Sans", sans-serif;
+ font-weight: normal;
+ line-height: normal;
+ margin: 0 0 1.25rem;
+ position: relative;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ padding: 1rem 2rem 1.0625rem 2rem;
+ font-size: 1rem;
+ background-color: #008CBA;
+ border-color: #007095;
+ color: #FFFFFF;
+ transition: background-color 300ms ease-out;
+ display: block;
+ margin: 0 auto; }
+ .ninja-forms-form-wrap input[type=submit]:hover, .ninja-forms-form-wrap input[type=submit]:focus {
+ background-color: #007095; }
+ .ninja-forms-form-wrap input[type=submit]:hover, .ninja-forms-form-wrap input[type=submit]:focus {
+ color: #FFFFFF; }
+
+/* For fixing cellphones not showing phone numbers because of /helpful/ auto-coloring */
+a[href^=tel] {
+ color: inherit;
+ text-decoration: none; }
+
+body .shadow-wrapper {
+ margin: 0 auto;
+ background: #FFFFFF;
+ box-shadow: 0 0 15px -6px #000000;
+ -ms-box-shadow: 0 0 15px -6px #000000;
+ -moz-box-shadow: 0 0 15px -6px #000000;
+ -webkit-box-shadow: 0 0 15px -6px #000000;
+ max-width: 1000px;
+ padding-top: 1.25rem; }
+
+header {
+ height: auto; }
+ header .header-top-half {
+ position: relative;
+ padding: 12px 0; }
+ @media only screen and (min-width:64.063em) {
+ header .header-top-half {
+ height: 60px; } }
+ @media only screen and (min-width:0em) and (max-width:64em) {
+ header .header-top-half .header-logo-container .large-logo-link {
+ display: block;
+ max-width: 275px;
+ margin: 0 auto 10px auto; } }
+ @media only screen and (min-width:64.063em) {
+ header .header-top-half .header-logo-container .large-logo-link {
+ position: absolute;
+ z-index: 99;
+ top: 20px; } }
+ header .header-top-half .header-top-half-home {
+ float: right; }
+ header .header-top-half .header-search-input {
+ height: 15px;
+ border: 2px solid #ec9928;
+ border-radius: 4px; }
+ header .header-top-half .search-icon {
+ height: 20px;
+ width: 20px;
+ background-color: #ec9928;
+ float: right;
+ margin-left: 20px;
+ padding: 0 4px;
+ border-radius: 4px; }
+ header .header-top-half .search-icon:hover {
+ cursor: pointer; }
+ header .header-top-half .search-icon .magnifying-glass {
+ position: relative;
+ display: inline-block;
+ background: transparent;
+ border-radius: 30px;
+ height: 10px;
+ width: 10px;
+ border: 2px solid white;
+ bottom: 5px; }
+ header .header-top-half .search-icon .magnifying-glass:after {
+ content: "";
+ height: 2px;
+ width: 6px;
+ background: white;
+ position: absolute;
+ top: 8px;
+ left: 5px;
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -o-transform: rotate(45deg); }
+ header .header-top-half .header-search {
+ float: right;
+ margin-left: 5px;
+ width: 0px; }
+ header .header-top-half .header-search-input {
+ border: 2px solid transparent; }
+ header .header-bottom-half {
+ background-color: #ccbc8c; }
+ header .large-row {
+ background-color: white;
+ position: relative;
+ max-width: none; }
+ header .header-logo {
+ position: absolute;
+ background-color: transparent; }
+ @media only screen and (min-width:0em) and (max-width:64em) {
+ header .header-logo {
+ max-width: 320px;
+ float: none !important;
+ margin: 0 auto;
+ display: block; }
+ header .header-logo a {
+ padding: 10px; } }
+ header .header-logo .logo-link {
+ display: block;
+ float: left; }
+ header .search input {
+ height: 20px;
+ width: 167px;
+ padding: 0 8px;
+ margin: 13px 0px 0px 18px;
+ border-radius: 3px;
+ font-size: 10px;
+ color: #000000;
+ display: inline-block; }
+ header .search a.magnifying-glass {
+ font-size: 10em;
+ /* This controls the size. */
+ display: inline-block;
+ width: 0.625rem;
+ height: 0.625rem;
+ border: 0.125rem solid #0065a0;
+ position: relative;
+ border-radius: 0.35em;
+ margin: 0 0 0 -25px; }
+ header .search a.magnifying-glass:before {
+ content: "";
+ display: inline-block;
+ position: absolute;
+ right: -0.4375rem;
+ bottom: -0.25rem;
+ border-width: 0;
+ background: #0065a0;
+ width: 0.5rem;
+ height: 0.125rem;
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg); }
+ header #sec-nav {
+ position: relative;
+ text-align: left;
+ padding: 10px 0;
+ margin: 0 0 15px 45px; }
+ header #sec-nav ul {
+ margin: 0; }
+ header #sec-nav ul li {
+ display: inline; }
+ header #sec-nav ul li a {
+ font-size: 12px;
+ color: #0065a0;
+ padding: 0 5px;
+ font-weight: bold; }
+ header #sec-nav > ul > li {
+ position: relative; }
+ header #sec-nav > ul > li:before {
+ color: #999999;
+ content: "|";
+ position: absolute;
+ top: 2px;
+ left: -15px;
+ font-size: 14px;
+ font-weight: bold;
+ display: block;
+ padding: 0 10px; }
+ header #sec-nav > ul > li:first-child:before {
+ content: none; }
+
+.contain-to-grid {
+ box-shadow: 0 5px 10px -1px #999999; }
+ .contain-to-grid .top-bar {
+ height: 73px;
+ box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.5);
+ margin-bottom: 10px; }
+
+.tab-bar {
+ clear: both;
+ background: #95d500; }
+ .tab-bar .left-small {
+ border-right: 1px solid white; }
+ .tab-bar .tab-bar-section.middle {
+ text-align: right; }
+
+.top-bar:not(.alt-menu) {
+ background-color: #ccbc8c;
+ color: black;
+ height: auto;
+ padding: 0; }
+
+.top-bar-alt .alt-menu {
+ background-color: #45646a;
+ color: white;
+ float: right;
+ width: 160px; }
+ .top-bar-alt .alt-menu > ul > li > a::after {
+ content: '';
+ width: 0;
+ height: 0;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 10px solid white;
+ right: 0px; }
+ @media only screen and (min-width:0em) and (max-width:64em) {
+ .top-bar-alt .alt-menu {
+ float: left; } }
+ .top-bar-alt .alt-menu ul {
+ list-style: none; }
+ .top-bar-alt .alt-menu ul li {
+ width: 100%;
+ text-align: left; }
+ .top-bar-alt .alt-menu ul li a {
+ line-height: 25px !important;
+ height: 25px;
+ background-color: #45646a !important;
+ color: white; }
+ .top-bar-alt .alt-menu ul li ul.sub-menu.dropdown {
+ background: white;
+ padding: 10px; }
+ .top-bar-alt .alt-menu ul li ul.sub-menu.dropdown li {
+ border-bottom: 1px dashed darkgrey;
+ padding: 5px 0; }
+ .top-bar-alt .alt-menu ul li ul.sub-menu.dropdown li a {
+ padding: 0;
+ background: white !important;
+ color: #45646a !important; }
+ .top-bar-alt .alt-menu ul li ul.sub-menu.dropdown li a:hover {
+ color: #ec9928 !important; }
+
+.top-bar-section:not(.alt-menu) {
+ background-color: #ccbc8c;
+ float: right;
+ color: black;
+ height: auto; }
+ .top-bar-section:not(.alt-menu) > ul > li {
+ padding: 15px 30px !important; }
+ @media only screen and (min-width:40.063em) and (max-width:64em) {
+ .top-bar-section:not(.alt-menu) > ul > li {
+ padding: 15px 25px !important; } }
+ .top-bar-section:not(.alt-menu) > ul > li:hover {
+ background: #45646a; }
+ .top-bar-section:not(.alt-menu) > ul > li a {
+ font-size: 20px;
+ font-weight: bold;
+ font-family: 'Times New Roman', Times, serif; }
+ .top-bar-section:not(.alt-menu) ul {
+ display: block;
+ width: 100%;
+ height: auto; }
+ .top-bar-section:not(.alt-menu) ul li {
+ background-color: transparent;
+ padding: 0 1.2rem;
+ line-height: 1;
+ display: inline-block; }
+ .top-bar-section:not(.alt-menu) ul li a {
+ color: #45646a;
+ padding: 0 3px !important;
+ line-height: 1 !important; }
+ .top-bar-section:not(.alt-menu) ul li:not(.has-form):not(.active) > a:not(.button) {
+ background: transparent; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown {
+ background-color: rgba(255, 255, 255, 0.95);
+ top: 70px;
+ padding: 15px; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li.back {
+ display: none; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li {
+ background-color: transparent;
+ float: none;
+ padding: 0 0 10px 0;
+ border-bottom: 1px dashed darkgrey; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li a {
+ padding: 0 !important;
+ background-color: transparent;
+ text-align: left;
+ font-weight: normal; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li a:hover {
+ color: #ec9928; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li:not(.has-form):not(.active) > a:not(.button) {
+ color: #45646a;
+ font-size: 16px;
+ font-family: sans-serif; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li:not(.has-form):not(.active) > a:not(.button):hover {
+ color: #ec9928; }
+ .top-bar-section:not(.alt-menu) ul li ul.dropdown li.active:not(.has-form) > a:not(.button) {
+ padding: 10px 14px; }
+ .top-bar-section:not(.alt-menu) ul li.drop-left ul.dropdown {
+ right: -1%;
+ left: auto; }
+ .top-bar-section:not(.alt-menu) ul li.drop-left ul.dropdown li a {
+ text-align: left; }
+
+.top-bar-section > ul > li.has-dropdown {
+ position: relative; }
+
+.breadcrumbs {
+ margin-top: 10px; }
+
+#main-content {
+ padding-bottom: 50px; }
+ #main-content p {
+ font-size: 16px; }
+ #main-content p a {
+ color: #fc6463; }
+ #main-content p a:hover {
+ text-decoration: underline; }
+
+.breadcrumbs > span:nth-child(2)::before {
+ content: "";
+ display: none; }
+
+.breadcrumbs > span:last-child {
+ color: #fc6463; }
+
+@media only screen and (min-width:40.063em) {
+ .page-inside #header-image {
+ margin-top: 105px; } }
+@media only screen and (max-width: 40em) {
+ .page-inside #header-image {
+ margin-top: 115px; } }
+
+#content-bulk #con {
+ margin: 0; }
+#content-bulk h2 {
+ text-transform: uppercase;
+ font-size: 25px; }
+#content-bulk footer {
+ margin: 35px 0; }
+ #content-bulk footer #address {
+ margin-top: 25px; }
+ #content-bulk footer #address p {
+ font-size: 12px;
+ margin-top: 5px; }
+ #content-bulk footer #address img {
+ margin: 0;
+ padding-right: 5px; }
+ #content-bulk footer #address a {
+ font-size: 12px; }
+ #content-bulk footer img {
+ box-shadow: none; }
+
+.st_sharethis {
+ float: right;
+ width: 58px; }
+
+body .stButton .sharethis {
+ background-image: url("../assets/share-icon.png") !important;
+ width: 52px;
+ height: 22px; }
+
+.front-blog-container {
+ position: relative;
+ margin: 25px auto 50px auto; }
+
+.home-feed-post-image img {
+ min-width: 165px;
+ height: auto;
+ border: 2px solid white;
+ padding: 0 !important;
+ -webkit-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ -moz-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75); }
+@media only screen and (min-width:64.063em) {
+ .home-feed-post-image {
+ padding: 0px !important; } }
+@media only screen and (min-width:40.063em) and (max-width:64em) {
+ .home-feed-post-image {
+ margin: 25px 0 0 0;
+ max-width: 300px;
+ margin: 0 auto; } }
+@media only screen and (max-width: 40em) {
+ .home-feed-post-image {
+ border: none;
+ text-align: center;
+ margin-bottom: 15px; } }
+
+.home-feed-post h2.title-posts {
+ line-height: 1;
+ margin: 0; }
+ .home-feed-post h2.title-posts a {
+ display: block;
+ color: #95d500;
+ line-height: 1;
+ font-size: 24px; }
+.home-feed-post span.meta.date {
+ display: inline-block;
+ color: white;
+ font-size: 14px;
+ margin-bottom: 10px; }
+.home-feed-post .post-excerpt {
+ color: black;
+ line-height: 1.1;
+ margin-bottom: 20px;
+ margin-bottom: 10px;
+ font-size: 16px; }
+.home-feed-post .read-more {
+ display: inline-block;
+ background: #95d500;
+ padding: 4px 7px;
+ border-radius: 7px;
+ -webkit-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ -moz-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75); }
+ .home-feed-post .read-more:hover {
+ background: #0065a0; }
+ .home-feed-post .read-more a {
+ color: white; }
+
+#home-feed-posts {
+ padding-top: 20px; }
+
+.members-only-template #glm-member-front-header {
+ padding-left: 0;
+ padding-right: 0;
+ margin-left: 0; }
+ .members-only-template #glm-member-front-header .breadcrumbs {
+ float: left;
+ padding: 0;
+ margin: 0; }
+.members-only-template .members-only-buttons {
+ padding: 0; }
+.members-only-template .glm-button {
+ background-color: #0065a0;
+ margin-top: 0; }
+
+.entry-header .addthis_wrapper {
+ float: right;
+ margin-top: 5px; }
+
+.st_sharethis {
+ float: right;
+ width: 58px; }
+
+body .stButton .sharethis {
+ background-image: url("../assets/share-icon.png") !important;
+ width: 52px;
+ height: 22px; }
+
+#glm-member-login-form .button-primary, #glm-member-password-lost-form .lostpassword-button {
+ background-color: #0065a0;
+ border: 0 none;
+ border-radius: 5px;
+ color: white;
+ font-size: 14px;
+ padding: 10px 15px;
+ min-width: 90px;
+ cursor: pointer; }
+
+#glm-member-password-lost-form {
+ width: 400px; }
+
+#glm-member-password-lost-link {
+ color: #0065a0;
+ margin-top: 40px; }
+
+#glm-member-password-lost-form {
+ display: none; }
+ #glm-member-password-lost-form button {
+ padding: 5px; }
+
+#ui-datepicker-div {
+ display: none; }
+
+#front-social li.social-icon {
+ list-style: none;
+ display: inline-block;
+ margin-right: 5px; }
+ #front-social li.social-icon a {
+ display: block; }
+
+.action-items-container {
+ min-width: 100% !important;
+ min-height: 100px;
+ background: #95d500;
+ position: relative;
+ margin-bottom: 50px; }
+ .action-items-container::before {
+ background: url('../assets/repeating-pattern-green-up.png');
+ background-position: top center;
+ background-repeat: repeat-x;
+ content: "";
+ position: absolute;
+ top: -27px;
+ width: 100%;
+ height: 30px; }
+ .action-items-container::after {
+ background: url('../assets/repeating-pattern-green-down.png');
+ background-position: top center;
+ background-repeat: repeat-x;
+ content: "";
+ position: absolute;
+ bottom: -27px;
+ width: 100%;
+ height: 30px; }
+
+.slideshow-blocks-container {
+ border-bottom: 4px solid #ec9928;
+ padding: 50px 0;
+ background-color: #45646a; }
+ .slideshow-blocks-container #slideshow ul {
+ border: 3px solid white;
+ margin: 0; }
+ .slideshow-blocks-container #slideshow ul li {
+ list-style: none; }
+ .slideshow-blocks-container #slideshow #caption {
+ background: rgba(0, 0, 0, 0.75);
+ color: #FFFFFF; }
+ .slideshow-blocks-container #slideshow #caption p {
+ padding: 10px 5px;
+ font-size: 12px;
+ margin: 0;
+ text-align: right; }
+ .slideshow-blocks-container #slideshow .widgettitle {
+ display: none; }
+
+/* NextGen Gallery */
+.ngg-gallery-thumbnail, .ngg-gallery-thumbnail-box {
+ float: none !important; }
+
+.gallery li a img {
+ display: block;
+ width: 100%; }
+
+.ngg-gallery-thumbnail, .ngg-gallery-thumbnail-box {
+ float: none !important; }
+
+.ngg-album-compact h4 .ngg-album-desc {
+ height: auto !important;
+ font-family: 'El Messiri', Cambria, "Times New Roman", Times, serif;
+ font-weight: 400; }
+
+.ngg-album-compact .album-meta-wrapper h4 a {
+ font-style: normal; }
+
+.album-meta-wrapper {
+ display: block;
+ height: 54px;
+ margin-bottom: 20px; }
+
+.ngg-glmalbums {
+ margin: 10px 0; }
+
+/* Ninja Forms */
+.ninja-forms-form-wrap {
+ max-width: 600px;
+ margin: 0 auto; }
+ .ninja-forms-form-wrap input[type=submit] {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ border-radius: 0;
+ border-style: solid;
+ border-width: 0;
+ cursor: pointer;
+ font-family: "Open Sans", sans-serif;
+ font-weight: normal;
+ line-height: normal;
+ margin: 0 0 1.25rem;
+ position: relative;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ padding: 1rem 2rem 1.0625rem 2rem;
+ font-size: 1rem;
+ background-color: #008CBA;
+ border-color: #007095;
+ color: #FFFFFF;
+ transition: background-color 300ms ease-out;
+ display: block;
+ margin: 0 auto; }
+ .ninja-forms-form-wrap input[type=submit]:hover, .ninja-forms-form-wrap input[type=submit]:focus {
+ background-color: #007095; }
+ .ninja-forms-form-wrap input[type=submit]:hover, .ninja-forms-form-wrap input[type=submit]:focus {
+ color: #FFFFFF; }
+
+/* End NextGen Gallery */
+#blog-posts-over article.ai1ec_event {
+ padding: 10px; }
+
+/* These are the basic styles for calendar, there are several others that can be added from the calendar's mark up.
+ These styles are primarily for the buttons, columns headers, and the over all calendar body. More selectors will
+ be necessary when getting deeper into the calendar's mark up to style elements
+*/
+#eventCalendar {
+ /* contains all of the buttons above the calendar, on left and right */
+ /* entire calendar body */ }
+ #eventCalendar .fc-toolbar {
+ /* apply button styles here to affect all of the calendar buttons */
+ /* currently selected button styles */
+ /* affect only today, prev and next buttons (buttons on the above the left side of the calendar*/
+ /* affect only month, week, day buttons (buttons above the right side of the calendar) */
+ /* Calendar Title / Current Month or Date */ }
+ #eventCalendar .fc-view-container {
+ /* dates, days or months at the top of each column (sun, mon, tue, wed, thur, fri, sat) */ }
+
+.blocks {
+ padding: 0 10px; }
+ .blocks .block {
+ display: block;
+ padding: 0 !important;
+ position: relative;
+ margin: 0 auto;
+ max-width: 460px; }
+ .blocks .block a.title-posts, .blocks .block a.title-posts + p {
+ display: block;
+ position: absolute;
+ bottom: 0;
+ width: 100%; }
+ .blocks .block a.blocks-readmore {
+ display: block;
+ background: #0065a0;
+ max-width: 115px;
+ padding: 2px;
+ border-radius: 1px;
+ text-align: center;
+ margin: 0 auto 10px auto;
+ color: white;
+ cursor: pointer; }
+ .blocks .block a.blocks-readmore:hover {
+ background: #95d500; }
+ .blocks .block .block-title {
+ position: absolute;
+ bottom: 0;
+ color: white;
+ width: 100%;
+ text-align: center;
+ margin: 0;
+ background: -webkit-linear-gradient(transparent, black);
+ /* Safari 5.1 to 6.0 */
+ background: -o-linear-gradient(transparent, black);
+ /* Opera 11.1 to 12.0 */
+ background: -moz-linear-gradient(transparent, black);
+ /* Firefox 3.6 to 15 */
+ background: linear-gradient(transparent, black);
+ /* Standard syntax (must be last) */ }
+ @media only screen and (min-width:0em) and (max-width:64em) {
+ .blocks .block {
+ float: none;
+ margin-bottom: 15px; } }
+ .blocks .block:hover .block-overlay {
+ display: block; }
+ .blocks .block-overlay {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ display: none; }
+ .blocks .block-overlay .block-overlay-center {
+ background: rgba(0, 0, 0, 0.75);
+ position: absolute;
+ width: 80%;
+ height: auto;
+ max-height: 200px;
+ margin: 0 auto;
+ top: 15%;
+ left: 10%; }
+ .blocks .block-overlay .block-overlay-center .block-title-center {
+ text-align: center;
+ margin: 0;
+ max-height: 38px;
+ line-height: 1;
+ font-size: 36px;
+ padding-top: 10px; }
+ .blocks .block-overlay .block-overlay-center .block-content {
+ max-height: 100px;
+ overflow: hidden;
+ margin-bottom: 10px; }
+ .blocks .block-overlay .block-overlay-center .block-content p {
+ color: white;
+ text-align: center;
+ line-height: 1.4;
+ padding: 5px;
+ margin-bottom: 0; }
+ .blocks #block-1, .blocks #block-4 {
+ max-height: 290px; }
+ .blocks #block2, .blocks #block-3 {
+ max-height: 230px; }
+ @media only screen and (min-width:64.063em) {
+ .blocks #block-1 {
+ margin-right: 20px; } }
+ @media only screen and (min-width:64.063em) {
+ .blocks #block-3 {
+ margin-right: 20px; } }
+ @media only screen and (min-width:64.063em) {
+ .blocks #block-4 {
+ margin-top: -39px; } }
+ @media only screen and (min-width:64.063em) {
+ .blocks #block-3 {
+ margin-top: 20px; } }
+
+.blocks-row {
+ margin-bottom: 50px; }
+
+#glm-member-db-front-container .glm-member-list-active-info .glm-member-title a {
+ color: #bbdaeb;
+ font-size: 26px;
+ letter-spacing: normal;
+ text-decoration: none;
+ vertical-align: top; }
+ #glm-member-db-front-container .glm-member-list-active-info .glm-member-title a:hover {
+ text-decoration: underline; }
+#glm-member-db-front-container #glm-member-list-filters-button {
+ background-color: #fc6463; }
+#glm-member-db-front-container #glm-member-list-map-toggle {
+ background-color: #fc6463; }
+#glm-member-db-front-container #glm-member-list-filters-close {
+ background-color: #fc6463; }
+#glm-member-db-front-container .glm-member-list-container .glm-member-title {
+ line-height: 1;
+ margin: 5px 0;
+ text-transform: none; }
+#glm-member-db-front-container .glm-member-list-container .glm-member-list-image-wrapper {
+ float: right;
+ max-height: 180px; }
+#glm-member-db-front-container .glm-member-list-data {
+ padding: 20px; }
+#glm-member-db-front-container .glm-member-list-active-info {
+ font-size: 16px; }
+#glm-member-db-front-container .glm-member-list-address-wrapper > div {
+ line-height: 1.5; }
+#glm-member-db-front-container .glm-member-list-active-info .glm-member-list-links > a {
+ text-decoration: underline;
+ color: #0065a0;
+ line-height: 1.5; }
+#glm-member-db-front-container .glm-alpha-links > .glm-alpha-link {
+ background-color: #FFFFFF;
+ border-color: #bbdaeb;
+ color: #bbdaeb; }
+ #glm-member-db-front-container .glm-alpha-links > .glm-alpha-link:hover {
+ background-color: #bbdaeb;
+ color: #FFFFFF; }
+#glm-member-db-front-container .glm-alpha-links > .glm-alpha-link-selected {
+ background-color: #bbdaeb;
+ color: white; }
+#glm-member-db-front-container .glm-member-list-active-info {
+ padding: 0 0px 0 0; }
+#glm-member-db-front-container .glm-member-db-list-header-title {
+ text-transform: none; }
+#glm-member-db-front-container .glm-member-list-terms {
+ display: none; }
+#glm-member-db-front-container .glm-member-search .glm-member-button-small, #glm-member-db-front-container .glm-member-search input[type="submit"].glm-member-button {
+ font-size: 0.9em !important;
+ padding: 5px 20px !important;
+ margin: 0 auto !important;
+ line-height: 1.8em !important;
+ height: auto !important;
+ border-radius: 5px;
+ background-color: #0065a0;
+ transition: all 0.5s; }
+ #glm-member-db-front-container .glm-member-search .glm-member-button-small:hover, #glm-member-db-front-container .glm-member-search input[type="submit"].glm-member-button:hover {
+ transition: all 0.5s;
+ background-color: yellow; }
+#glm-member-db-front-container .glm-member-search::before {
+ background-color: #fc6463; }
+#glm-member-db-front-container .glm-member-db-takeback-mini {
+ text-decoration: none;
+ position: relative;
+ background-color: #0065a0;
+ transition: all 0.5s; }
+ #glm-member-db-front-container .glm-member-db-takeback-mini:hover {
+ transition: all 0.5s;
+ background-color: #bbdaeb; }
+#glm-member-db-front-container .glm-member-db-takeback-mini span {
+ font-size: 16px;
+ top: 14px; }
+
+#content-wrapper .glm-member-db-grid-view .glm-member-title a {
+ letter-spacing: 2px; }
+#content-wrapper .glm-member-db-grid-view .glm-member-list-sub-links {
+ margin: 0; }
+ #content-wrapper .glm-member-db-grid-view .glm-member-list-sub-links ul {
+ display: table;
+ margin-left: 0;
+ width: 100%; }
+ #content-wrapper .glm-member-db-grid-view .glm-member-list-sub-links ul li {
+ text-transform: uppercase;
+ font-weight: bold;
+ border: 0;
+ width: 50%;
+ float: left;
+ display: block;
+ padding: 1px;
+ margin: 0; }
+ #content-wrapper .glm-member-db-grid-view .glm-member-list-sub-links ul li a {
+ color: #95d500;
+ border-radius: 3px;
+ padding: 4px 8px;
+ display: block;
+ width: auto;
+ font-size: 12px;
+ text-decoration: underline; }
+
+#glm-member-detail-container #glm-member-detail-contact-info {
+ background-color: #0065a0;
+ color: #FFFFFF; }
+#glm-member-detail-container #glm-member-detail-website-link {
+ text-decoration: none;
+ background-color: #95d500; }
+ #glm-member-detail-container #glm-member-detail-website-link:hover {
+ background-color: #8dc819; }
+#glm-member-detail-container #glm-member-detail-data-container > .glm-member-detail-content-toggle {
+ color: #95d500; }
+#glm-member-detail-container .map-button {
+ background-color: #95d500; }
+ #glm-member-detail-container .map-button:hover {
+ background-color: #8dc819; }
+#glm-member-detail-container #glm-member-detail-links a {
+ color: #bbdaeb;
+ border-color: #bbdaeb; }
+
+.glm-member-detail-contact-phone small {
+ font-size: 12px; }
+
+#members-only-sidebar-off-canvas {
+ background-color: #324B4F;
+ border-radius: 5px;
+ list-style: outside none none;
+ margin: 10px;
+ max-width: 230px; }
+ #members-only-sidebar-off-canvas h2 {
+ color: yellow; }
+ #members-only-sidebar-off-canvas h4 {
+ color: yellow; }
+ #members-only-sidebar-off-canvas ul li a {
+ color: #FFFFFF; }
+ #members-only-sidebar-off-canvas ul li a:hover {
+ color: yellow; }
+ #members-only-sidebar-off-canvas .menu-side .glm-button {
+ background: transparent;
+ text-decoration: underline;
+ color: white; }
+
+#members-only-content #glm-member-front-header {
+ margin-top: -10px; }
+#members-only-content #side-links {
+ border: 1px solid #bbdaeb;
+ border-radius: 3px;
+ padding: 15px 20px 30px;
+ background-color: #0065a0;
+ list-style: none; }
+ @media only screen and (min-width:40.063em) and (max-width:64em) {
+ #members-only-content #side-links {
+ padding: 25px 15px; } }
+#members-only-content #side-links h4 {
+ color: yellow;
+ line-height: 1.2;
+ letter-spacing: normal;
+ font-size: 26px; }
+ @media only screen and (min-width:40.063em) and (max-width:64em) {
+ #members-only-content #side-links h4 {
+ font-size: 24px; } }
+#members-only-content #side-links ul {
+ margin: 0;
+ list-style: none; }
+#members-only-content #side-links li {
+ list-style: none;
+ line-height: 1.2;
+ margin-top: 15px; }
+#members-only-content #side-links li a {
+ color: white;
+ text-decoration: none;
+ font-size: 20px; }
+#members-only-content #side-links li a:hover {
+ color: yellow; }
+#members-only-content .glm-button.button {
+ background-color: #bbdaeb; }
+#members-only-content #main-content {
+ padding-top: 0; }
+#members-only-content #lostpasswordform {
+ max-width: 350px; }
+
+#featured-business #glm-member-db-front-container {
+ padding: 0; }
+#featured-business .glm-featured-member-text {
+ padding: 20px; }
+#featured-business .glm-featured-member-image-container {
+ max-height: 200px;
+ overflow: hidden; }
+
+#sidebar .glm-member-front-container {
+ padding: 0; }
+
+.glm-member-detail-custom-field {
+ padding: 4px; }
+ .glm-member-detail-custom-field:nth-child(even) {
+ background-color: rgba(187, 218, 235, 0.2); }
+
+.glm-member-detail-custom-field-name {
+ font-weight: bold;
+ padding-top: 3px; }
+
+.glm-member-detail-custom-field-data p {
+ margin: 0; }
+
+@media only screen and (min-width:0em) and (max-width:64em) {
+ body .grid-block.home-feed-post {
+ padding-left: 10px;
+ padding-right: 10px; } }
+
+input[type="submit"].blogbutton {
+ border-radius: 3px;
+ color: #FFFFFF;
+ border: 2px solid #FFFFFF;
+ font-weight: bold;
+ font-size: 13px;
+ padding: 2px 5px;
+ margin-top: -10px;
+ text-transform: uppercase; }
+ input[type="submit"].blogbutton:hover {
+ cursor: pointer;
+ background: #FFFFFF;
+ border: 2px solid #035C84;
+ color: white; }
+
+#blog-posts-over article {
+ margin-bottom: 15px;
+ display: inline-block;
+ width: 100%; }
+ #blog-posts-over article .entry-header {
+ background: transparent; }
+ #blog-posts-over article #addthis_wrapper {
+ margin-top: -25px; }
+ #blog-posts-over article p {
+ padding-bottom: 15px; }
+ #blog-posts-over article a.read-more {
+ border: 2px solid #FFFFFF;
+ font-weight: bold;
+ font-size: 13px;
+ padding: 0 3px;
+ text-transform: uppercase; }
+ #blog-posts-over article a.read-more:hover {
+ background: #FFFFFF;
+ border: 2px solid #035C84;
+ color: #035C84; }
+ #blog-posts-over article .entry-header {
+ margin-bottom: 10px; }
+ #blog-posts-over article .entry-header .entry-title {
+ margin: 0;
+ display: block; }
+ @media only screen and (min-width:64.063em) {
+ #blog-posts-over article .entry-header .entry-title {
+ margin-top: -9px; } }
+ #blog-posts-over article .entry-header .entry-title a {
+ display: block;
+ line-height: 1;
+ font-size: 28px; }
+ #blog-posts-over article .entry-header .meta.date {
+ font-size: 13px;
+ font-weight: bold; }
+
+.blog-post-container .entry-header .entry-title {
+ line-height: 1;
+ font-size: 28px;
+ padding-bottom: 10px; }
+
+#blog-posts-over .entry-meta {
+ text-align: center;
+ color: #757575;
+ font-size: 12px; }
+
+#blog-posts-over > div {
+ margin: 25px 0; }
+
+#blog-side-info a {
+ font-size: 16px; }
+#blog-side-info #searchform {
+ margin-bottom: 30px; }
+#blog-side-info p {
+ margin-bottom: 0; }
+
+@media only screen and (max-width: 40em) {
+ #blog-side-info-wrapper {
+ float: none;
+ margin: 0 auto;
+ clear: both; }
+ #blog-side-info {
+ padding-left: 0;
+ border-left: 0; }
+ #blog-side-info ul {
+ margin-left: 0;
+ margin-top: 10px; }
+ #blog-side-info #searchform {
+ padding: 35px 0; }
+ #blog-side-info #searchform #s {
+ width: 100%; } }
+
+#blog-side-info {
+ padding-right: 10px; }
+ #blog-side-info ul {
+ list-style-type: none; }
+ #blog-side-info ul li {
+ line-height: 1;
+ padding-bottom: 10px; }
+ #blog-side-info ul li a {
+ line-height: 1; }
+
+main.blog-home, main.blog-archive, main.blog-single {
+ margin-top: 130px;
+ padding-bottom: 50px; }
+
+.blog-archive .featured-image-wrap, .blog-home .featured-image-wrap {
+ display: none; }
+
+#sidebar {
+ padding-top: 25px;
+ background: #f2f9fc; }
+ #sidebar .row.collapse {
+ margin-left: 14px; }
+ #sidebar li {
+ list-style: none; }
+ #sidebar li #calendar_wrap table#wp-calendar {
+ margin: 0 auto; }
+ #sidebar form {
+ margin: 0 12px 0 14px; }
+ #sidebar form select {
+ padding: 0 0.5rem;
+ border-radius: 5px;
+ height: 25px;
+ margin: 0; }
+ #sidebar form select option {
+ font-size: 10px; }
+ #sidebar .small-block-grid-2 {
+ margin-top: 10px; }
+ #sidebar .small-block-grid-2 li {
+ padding: 0 0.625rem 0.625rem; }
+ #sidebar .small-block-grid-2 li img {
+ border: 2px solid lightblue; }
+ #sidebar .small-block-grid-2 > li:nth-of-type(2), #sidebar .small-block-grid-2 > li:nth-of-type(4) {
+ padding-left: 0; }
+ #sidebar .small-block-grid-2 > li:nth-of-type(3), #sidebar .small-block-grid-2 > li:nth-of-type(4) {
+ padding-bottom: 20px; }
+ #sidebar h3 {
+ margin: 20px 0 0; }
+ #sidebar h1 {
+ margin: 0;
+ font-size: 1.5625rem;
+ text-transform: none; }
+ #sidebar input {
+ padding: 5px 0 5px 8px;
+ height: auto;
+ margin: 10px 0; }
+ #sidebar button {
+ border-radius: 2px;
+ padding: 0 10px; }
+
+#side-nav {
+ padding-top: 10px;
+ background: #f2f9fc; }
+ #side-nav h1 {
+ font-size: 1.375rem;
+ /* margin: 5px 0 25px;*/ }
+ #side-nav h4 {
+ font-weight: bold;
+ margin-left: 10px; }
+ #side-nav li {
+ list-style: none; }
+ #side-nav ul {
+ list-style: none;
+ margin: 0 0 20px; }
+ #side-nav ul li {
+ margin: 0 -15px;
+ padding: 5px 10px 5px 25px; }
+ #side-nav ul li:hover {
+ background: #81adc1; }
+ #side-nav ul li a {
+ color: darkblue; }
+ #side-nav ul li a:hover {
+ color: #FFFFFF; }
+ #side-nav h3 {
+ text-transform: none;
+ margin: 0; }
+ #side-nav input {
+ padding: 5px 0 5px 8px;
+ height: auto;
+ margin-bottom: 10px; }
+ #side-nav button {
+ border-radius: 2px;
+ padding: 0 10px; }
+
+#extra {
+ margin-top: 15px; }
+ #extra p {
+ line-height: 1.3; }
+ #extra p.title {
+ margin: 0; }
+ #extra p.title#last {
+ padding-top: 10px; }
+ #extra p#message {
+ text-transform: uppercase;
+ color: lightblue;
+ font-size: 0.9375rem;
+ margin: 40px 0; }
+
+.current_page_item > a {
+ font-weight: bold; }
+
+body #sidebar ul.members-only {
+ margin-left: 0;
+ font-size: 16px !important; }
+ @media only screen and (min-width:64.063em) {
+ body #sidebar ul.members-only #menu-members-only-menu {
+ margin-left: 0; } }
+ @media only screen and (min-width:0em) and (max-width:64em) {
+ body #sidebar ul.members-only {
+ margin-left: 0; }
+ body #sidebar ul.members-only ul {
+ margin-left: 0; } }
+
+.search-top #searchform {
+ text-align: left;
+ display: inline-block;
+ position: relative; }
+ .search-top #searchform #search-button {
+ width: 22px;
+ right: 0px;
+ position: absolute;
+ padding: 0;
+ border: 1px solid lightgray; }
+.search-top input {
+ height: 20px;
+ width: 167px;
+ padding: 0 8px;
+ margin: 13px 0px 0px 18px;
+ border-radius: 3px;
+ font-size: 10px;
+ color: #000000;
+ display: inline-block; }
+.search-top a.magnifying-glass {
+ font-size: 10em;
+ /* This controls the size. */
+ width: 0.75rem;
+ height: 0.75rem;
+ border: 0.125rem solid darkblue;
+ position: absolute;
+ top: 15px;
+ border-radius: 0.35em;
+ margin: 0 0 0 -20px; }
+ .search-top a.magnifying-glass:before {
+ content: "";
+ display: inline-block;
+ position: absolute;
+ right: -0.4375rem;
+ bottom: -0.25rem;
+ border-width: 0;
+ background: darkblue;
+ width: 0.5rem;
+ height: 0.125rem;
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg); }
+
+.search-results #blog-posts-over .search-result-container header.entry-header {
+ margin-bottom: 0px; }
+.search-results #blog-posts-over .search-result-container .search_result_context {
+ margin: 0;
+ padding: 0;
+ line-height: 1.3; }
+.search-results #blog-posts-over .search-result-container article p {
+ margin: 0;
+ padding: 0; }
+
+footer.main {
+ background: #0065a0; }
+
+#footer_address {
+ text-align: center; }
+ #footer_address span {
+ white-space: nowrap; }
+
+.contact-us-link {
+ display: inline-block;
+ color: #95d500;
+ font-size: 20px;
+ border-bottom: 1px solid #95d500;
+ text-align: left; }
+ .contact-us-link:hover {
+ border-bottom: 1px solid #0065a0; }
+
+.footer-logo {
+ display: block;
+ margin: 0 auto; }
+ @media only screen and (min-width:40.063em) and (max-width:64em) {
+ .footer-logo {
+ margin-bottom: 20px; } }
+
+.pure-michigan-logo {
+ margin-top: 20px;
+ padding-right: 0;
+ text-align: center; }
+ @media only screen and (max-width: 40em) {
+ .pure-michigan-logo {
+ margin-bottom: 20px; } }
+ @media only screen and (min-width:40.063em) and (max-width:64em) {
+ .pure-michigan-logo img {
+ float: right; } }
+
+#connect {
+ padding-top: 20px;
+ background: #4c4d4f; }
+ #connect ul {
+ margin: 0;
+ list-style: none; }
+ #connect ul li {
+ background: none;
+ padding: 0 5px;
+ display: inline-block; }
+ #connect ul li > a {
+ display: block;
+ font-family: Open Sans, sans-serif;
+ font-size: 12px;
+ color: #fff;
+ padding: 20px 18px;
+ line-height: 1.2; }
+ #connect ul li a#current {
+ background: #bbdaeb; }
+
+footer .action-grid {
+ margin: 0 auto; }
+ @media only screen and (max-width: 40em) {
+ footer .action-grid {
+ max-width: 230px;
+ margin: 0 auto; } }
+footer .action-item {
+ display: block;
+ height: 35px;
+ margin-bottom: 10px;
+ overflow-y: hidden;
+ padding: 0 !important;
+ position: relative; }
+ footer .action-item:nth-child(odd) {
+ max-width: 170px; }
+ footer .action-item a {
+ display: block;
+ overflow-y: hidden; }
+ footer .action-item img {
+ position: absolute;
+ top: 0; }
+ footer .action-item img:hover {
+ top: -44px; }
+footer .large-row {
+ max-width: 1200px;
+ padding-top: 15px; }
+
+#copyright {
+ padding: 5px 0;
+ margin: 0 auto;
+ float: none;
+ background-color: #95d500; }
+ #copyright span {
+ font-size: 0.875rem;
+ color: white; }
+ #copyright a {
+ color: #FFFFFF; }
+
+#footer_address span.bullet, #copyright span.bullet {
+ color: white;
+ margin: 0 5px; }
+ @media only screen and (max-width: 40em) {
+ #footer_address span.bullet, #copyright span.bullet {
+ display: none !important; } }
+
+.off-canvas-wrap {
+ min-height: 100%; }
+ .off-canvas-wrap .inner-wrap {
+ min-height: 100vh;
+ height: 100%; }
+
+h1 {
+ font-family: 'Robot Slab', "Open Sans";
+ font-weight: bold;
+ color: #0065a0; }
+
+h2 {
+ font-family: 'Robot Slab', "Open Sans";
+ font-weight: bold;
+ color: #95d500; }
+
+h3 {
+ font-family: 'Robot Slab', "Open Sans";
+ font-weight: bold;
+ color: #ffd100; }
+
+h4 {
+ font-family: 'Caveat';
+ color: #ffd100; }
+
+h5 {
+ font-family: 'Robot Slab', "Open Sans";
+ font-weight: bold;
+ color: #0065a0; }
+
+h6 {
+ font-family: 'Robot Slab', "Open Sans";
+ color: #95d500;
+ font-weight: bold; }
+
+#example.element {
+ background-color: transparent; }
+
+/* for the mobile menu */
+aside.left-off-canvas-menu li.page_item {
+ display: block;
+ overflow: hidden;
+ position: relative;
+ padding: 4px 8px; }
+
+aside.left-off-canvas-menu .off-canvas-list ul li a {
+ line-height: 20px;
+ color: white;
+ border-bottom: 1px solid #b1b3b6;
+ background-repeat: no-repeat;
+ background-position: 3px 50%; }
+
+aside.left-off-canvas-menu li.page_item_has_children a.toggle {
+ position: absolute;
+ right: 10px;
+ top: 5px;
+ width: auto;
+ text-decoration: none; }
+ aside.left-off-canvas-menu li.page_item_has_children a.toggle:before {
+ content: '>';
+ transform: rotate(0deg);
+ color: #FFFFFF;
+ height: 17px;
+ width: 17px;
+ font-size: 17px;
+ font-weight: bold;
+ display: block; }
+ aside.left-off-canvas-menu li.page_item_has_children a.toggle:hover {
+ background: transparent; }
+
+aside.left-off-canvas-menu li.page_item_has_children a.toggle.open {
+ content: '>';
+ transform: rotate(90deg);
+ color: #FFFFFF;
+ height: 1rem;
+ width: 1rem;
+ font-size: 1rem;
+ font-weight: bold;
+ display: block; }
+
+aside.left-off-canvas-menu ul.children {
+ display: none; }
+
+aside.left-off-canvas-menu .off-canvas-list ul li > ul li > a {
+ padding-left: 10px;
+ margin-left: 25px;
+ line-height: 18px; }
+
+aside.left-off-canvas-menu ul.open {
+ display: block; }
+
+.left-off-canvas-menu {
+ list-style: none;
+ background: #95d500;
+ color: white; }
+ .left-off-canvas-menu .contact-us-link {
+ color: white;
+ font-size: 14px;
+ text-decoration: underline; }
+ .left-off-canvas-menu li a {
+ color: #FFFFFF;
+ font-size: 1rem;
+ line-height: 1.2;
+ border-color: white;
+ margin-bottom: 5px; }
+ .left-off-canvas-menu li a:hover {
+ color: white; }
+ .left-off-canvas-menu li .dropdown {
+ list-style: none; }
+ .left-off-canvas-menu ul {
+ list-style: none;
+ padding: 10px 0; }
+ .left-off-canvas-menu ul li a {
+ color: #FFFFFF; }
+ .left-off-canvas-menu ul li ul {
+ list-style: none; }
+ .left-off-canvas-menu ul li ul li a {
+ width: 85%;
+ display: block;
+ white-space: pre-wrap; }
+
+.oc-site-title {
+ font-size: 16px; }
+
+.oc-action-items .oc-action-grid li {
+ height: 30px;
+ margin-bottom: 14px;
+ overflow: hidden; }
+ .oc-action-items .oc-action-grid li a {
+ display: block; }
+
+.offcavas-social-list {
+ list-style: none;
+ margin-top: 0;
+ margin-bottom: 1.0625rem;
+ margin-left: -1.375rem;
+ margin-right: 0;
+ overflow: hidden;
+ padding: 0;
+ margin-left: auto; }
+ .offcavas-social-list > li {
+ display: block;
+ float: left;
+ list-style: none;
+ margin-left: 1.375rem; }
+ .offcavas-social-list > li > * {
+ display: block; }
+
+/* End Mobile Menu */
+/*# sourceMappingURL=app.css.map */
\ No newline at end of file
--- /dev/null
+{
+ "version": 3,
+ "file": "app.css",
+ "sources": [
+ "../app.scss",
+ "../_settings.scss",
+ "../../bower_components/foundation/scss/foundation.scss",
+ "../_mixins.scss",
+ "../_wordpress.scss",
+ "../_defaults.scss",
+ "../_body.scss",
+ "../_page.header.scss",
+ "../_topbar.scss",
+ "../_main.scss",
+ "../_slideshow.scss",
+ "../_plugins.scss",
+ "../_blog.scss",
+ "../_sidebar.scss",
+ "../_search.scss",
+ "../_page.footer.scss",
+ "../_copyright.scss",
+ "../_structure.scss",
+ "../_left-off-canvas.scss",
+ "../../bower_components/foundation/scss/foundation/_functions.scss",
+ "../../bower_components/foundation/scss/foundation/components/_grid.scss",
+ "../../bower_components/foundation/scss/foundation/components/_accordion.scss",
+ "../../bower_components/foundation/scss/foundation/components/_alert-boxes.scss",
+ "../../bower_components/foundation/scss/foundation/components/_block-grid.scss",
+ "../../bower_components/foundation/scss/foundation/components/_breadcrumbs.scss",
+ "../../bower_components/foundation/scss/foundation/components/_button-groups.scss",
+ "../../bower_components/foundation/scss/foundation/components/_buttons.scss",
+ "../../bower_components/foundation/scss/foundation/components/_clearing.scss",
+ "../../bower_components/foundation/scss/foundation/components/_dropdown.scss",
+ "../../bower_components/foundation/scss/foundation/components/_dropdown-buttons.scss",
+ "../../bower_components/foundation/scss/foundation/components/_flex-video.scss",
+ "../../bower_components/foundation/scss/foundation/components/_forms.scss",
+ "../../bower_components/foundation/scss/foundation/components/_icon-bar.scss",
+ "../../bower_components/foundation/scss/foundation/components/_inline-lists.scss",
+ "../../bower_components/foundation/scss/foundation/components/_joyride.scss",
+ "../../bower_components/foundation/scss/foundation/components/_keystrokes.scss",
+ "../../bower_components/foundation/scss/foundation/components/_labels.scss",
+ "../../bower_components/foundation/scss/foundation/components/_magellan.scss",
+ "../../bower_components/foundation/scss/foundation/components/_orbit.scss",
+ "../../bower_components/foundation/scss/foundation/components/_pagination.scss",
+ "../../bower_components/foundation/scss/foundation/components/_panels.scss",
+ "../../bower_components/foundation/scss/foundation/components/_pricing-tables.scss",
+ "../../bower_components/foundation/scss/foundation/components/_progress-bars.scss",
+ "../../bower_components/foundation/scss/foundation/components/_range-slider.scss",
+ "../../bower_components/foundation/scss/foundation/components/_reveal.scss",
+ "../../bower_components/foundation/scss/foundation/components/_side-nav.scss",
+ "../../bower_components/foundation/scss/foundation/components/_split-buttons.scss",
+ "../../bower_components/foundation/scss/foundation/components/_sub-nav.scss",
+ "../../bower_components/foundation/scss/foundation/components/_switches.scss",
+ "../../bower_components/foundation/scss/foundation/components/_tables.scss",
+ "../../bower_components/foundation/scss/foundation/components/_tabs.scss",
+ "../../bower_components/foundation/scss/foundation/components/_thumbs.scss",
+ "../../bower_components/foundation/scss/foundation/components/_tooltips.scss",
+ "../../bower_components/foundation/scss/foundation/components/_top-bar.scss",
+ "../../bower_components/foundation/scss/foundation/components/_type.scss",
+ "../../bower_components/foundation/scss/foundation/components/_offcanvas.scss",
+ "../../bower_components/foundation/scss/foundation/components/_visibility.scss",
+ "../mixins/_gradient.scss",
+ "../mixins/_off-canvas-arrow.scss",
+ "../plugins/_nextgen.scss",
+ "../plugins/_gravityForms.scss",
+ "../plugins/_events.scss",
+ "../plugins/_fullCalendar.scss",
+ "../plugins/_blocks.scss",
+ "../plugins/_glm-member-db.scss",
+ "../../bower_components/foundation/scss/foundation/components/_global.scss"
+ ],
+ "sourcesContent": [],
+ "mappings": "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",
+ "names": []
+}
\ No newline at end of file
'description' => __('Meta Slider/Slideshow Area')
));
}
-
}
/**
: null;
}
}
-
+add_post_type_support( 'page', 'excerpt' );
add_theme_support('post-thumbnails');
set_post_thumbnail_size(120, 100, true);
/**
'1.0',
true
);
- if(is_front_page()) {
- }
+ wp_enqueue_script('slick_script', get_template_directory_uri() . '/slick/slick/slick.min.js', array('jquery'), null, false);
+ wp_enqueue_style('slick-style', get_template_directory_uri() . '/slick/slick/slick.css');
+ wp_enqueue_style('slick-theme', get_template_directory_uri() . '/slick/slick/slick-theme.css');
}
/* Header for posts*/
-function glm_get_header() {
+function glm_get_header($memberID = false) {
+ global $post;
+
echo '<div';
-
- if (has_post_thumbnail() && $post->post_type == 'page') {
+ if ((has_post_thumbnail() && $post->post_type == 'page') || is_page('member-detail')) {
+ if(!$memberID){
$image_data = wp_get_attachment_image_src(get_post_thumbnail_id(), "full");
- echo ' style="background-image: url('.$image_data[0].');height:0;padding:0;padding-bottom:20%;background-position:center center;background-size: 100%;background-repeat:no-repeat;max-height: 300px; "';
- } else {
- //echo ' style="background-image: url('.get_template_directory_uri().'/assets/default-header.gif);height:0;padding:0;padding-bottom:30%;background-position:center center;background-size: 100%;background-repeat:no-repeat;max-height: 300px;"';
- echo ' class="no-featured"';
- }
+ $image_data = $image_data[0];
+
+ } else {
+ $image_data = apply_filters('member_images',$memberID,true,'original');
+ }
+
+ echo ' style="background-image: url('.$image_data.');height:0;padding:0;padding-bottom:22%;background-position:center center;background-size: 100%;background-repeat:no-repeat;max-height: 420px; "';
+ } else if (!is_page('member-detail')) {
+ echo ' style="background-image: url('.get_template_directory_uri().'/assets/default-header.png);height:0;padding:0;padding-bottom:22%;background-position:center center;background-size: 100%;background-repeat:no-repeat;max-height: 420px; "';
+ }
echo '>';
echo '</div>';
echo '<div class="row">';
echo '</div>';
echo '</div>';
}
+if (!function_exists('write_log')) {
+ function write_log ( $log ) {
+ if ( true === WP_DEBUG ) {
+ if ( is_array( $log ) || is_object( $log ) ) {
+ error_log( print_r( $log, true ) );
+ } else {
+ error_log( $log );
+ }
+ }
+ }
+}
// // The code below is useful when you want the image to resize to
// if (has_post_thumbnail()) {
// $image_data = wp_get_attachment_image_src(get_post_thumbnail_id(), "full");
-// echo '<img src="'.$image_data[0].'" style="no-repeat;max-height:400px;">';
+// echo '<img src="'.$image_data[0].'" style="no-repeat;max-height:400px;">F';
// } else {
// echo '<img src="'.get_template_directory_uri().'/assets/default-header.gif" style="max-height:400px;">';
// }
add_action('init', 'mytheme_init', 10);
function wpse_setup_theme() {
- add_image_size('glm-block-image', 290, 190,true);
+ add_image_size('glm-block-small', 475, 230,true);
+ add_image_size('glm-block-large', 475, 290,true);
+ add_image_size('glm-map-image', 290, 190,true);
+ add_image_size('glm-blog-image', 300, 225,true);
}
add_action( 'after_setup_theme', 'wpse_setup_theme' );
--- /dev/null
+{include file='front/members/header.html'}
+
+{apply_filters('glm-member-db-front-members-detail-pageTop', '', $member.id)}
+
+{if $haveMember}
+<!-- <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>-->
+ {if $settings.detail_show_map}
+<!-- <div id="glm-locationMap-container" class="row">
+ <div id="glm-locationMap" class="glm-map small-12 columns">(map loads here)</div>
+ </div>-->
+ {/if}
+<a id="topAnchor"></a>
+
+<!-- <h3>{$terms.term_member_cap} Detail</h3>-->
+ <div class="row">
+ <script>//document.write('<a id="glm-member-detail-takeback-mini" class="button glm-member-button" href="' + document.referrer + '"><span>Back to listing</span></a>');</script>
+ <a id="glm-member-detail-takeback-mini" class="glm-member-db-takeback-mini button glm-member-button" href="javascript:history.go(-1)"><span>Back to listing</span></a>
+ <div id="glm-member-detail-container" class="small-12 columns glm-member-container">
+ <h4 class="glm-member-title"> {$member.member}</h4>
+ <div id="glm-member-detail-side-box" class="small-12 medium-4 columns">
+ {if $member.logo && $settings.detail_show_logo}
+ <div class="glm-member-detail-logo-wrapper">
+ <img class="glm-member-list-image-left" src="{$glmPluginMediaUrl}/images/{$settings.detail_logo_size}/{$member.logo}">
+ </div>
+ {/if}
+ {if $member.url && $settings.detail_show_url}
+ <a id="glm-member-detail-website-link" class="small-12 button glm-button" data-member-id="{$member.member_pointer}" data-member-slug="{$member.member_slug}" href="{$member.url}"{if $settings.detail_show_url_newtarget} target="_blank"{/if}>Visit Website</a>
+ <input type="hidden" id="glm-member-detail-click-logged" value="0">
+ {/if}
+
+ <div id="glm-member-detail-contact-info">
+ <!-- Member name, address, and basic information -->
+
+ {if $settings.detail_show_address}
+ <div class="glm-member-detail-address-wrapper">
+ <small>Address</small>
+ {apply_filters('glm-member-db-front-members-detail-addressTop', '', $member.id)}
+ {if $settings.detail_show_street}
+ {if $member.addr1}<div>{$member.addr1}</div>{/if}
+ {if $member.addr2}<div>{$member.addr2}</div>{/if}
+ {/if}
+ {if $settings.memb_info_location && $settings.detail_show_citystatezip}
+ <div>
+ {if $member.city}
+ <span>{$member.city}{if $member.state.value}, {/if}</span>
+ {/if}
+ {if $member.state.value}
+ <span>{$member.state.value}</span>
+ {/if}
+ {if $member.zip}
+ {$member.zip}
+ {/if}
+ </div>
+ {/if}
+ {if $member.country.name && $settings.detail_show_country}
+ <div>{$member.country.name}</div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-addressBottom', '', $member.id)}
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-otherDetailTop', '', $member.id)}
+ {if $settings.memb_info_location && $member.region && $settings.detail_show_region}
+ <div>
+ <b>{$terms.term_admin_menu_configure_regions}: </b> {$member.region}
+ </div>
+ {/if}
+ {if $settings.memb_info_location}
+ <div class="glm-member-detail-phone-wrapper">
+ {if ($member.phone && $settings.detail_show_phone) || ($member.toll_free && $settings.detail_show_tollfree)}
+ <small class="glm-field-title">Phone</small>
+ {/if}
+ {if $member.phone && $settings.detail_show_phone}
+ <div class="glm-member-detail-contact-phone">
+ <div class="glm-field-value">{apply_filters('glm_associate_phone_filter', $member.phone)}</div>
+ </div>
+ {/if}
+ {if $member.toll_free && $settings.detail_show_tollfree}
+ <div>
+ <div class="glm-field-value">{apply_filters('glm_associate_phone_filter', $member.toll_free)}</div>
+ </div>
+ {/if}
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-otherDetailBottom', '', $member.id)}
+ <div id="glm-member-detail-links">
+ {apply_filters('glm-member-db-front-members-detail-linksTop', '', $member.id)}
+ {if $member.email && $settings.detail_show_email}<a href="mailto:{$member.email}">Email</a>{/if}
+ {if $member.reservation_url}<a target="_blank" href="{$member.reservation_url}">Reserve Now</a>{/if}
+ {if $settings.detail_show_coupons && $coupons}<a href="#glm-member-detail-coupons">Coupons</a>{/if}
+ {if $member.live_cam_type.value==1 && $member.live_cam_url != "" && $settings.detail_show_live_cam}
+ <a target="_blank" href="{$member.live_cam_url}">
+ {$terms.term_webcam_cap}
+ </a>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-linksBottom', '', $member.id)}
+ </div>
+
+ <div class="glm-member-db-socials">
+ {apply_filters('glm-member-db-front-members-list-memberDetailBottom', '', $member.id)}
+ {apply_filters('glm-member-db-front-members-social-list', '', $member.id)}
+ </div>
+ </div>
+
+ {if $settings.detail_show_map}
+ <script src="//maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
+ <div id="glm-locationMap-container">
+ <div id="glm-locationMap" class="glm-map small-12 columns">(map loads here)</div>
+ </div>
+ <div id="glm-member-detail-map-button" class="button map-button">view map</div>
+
+ <div id="member-lat" rel="{$member.lat}"></div>
+ <div id="member-lon" rel="{$member.lon}"></div>
+ <form id="MemberDrivingDirectionsForm" name="MemberDrivingDirectionsForm" method="post" action="">
+ <input type="hidden" id="MemberLocation" name="MemberLocation" value="{$member.member_name|escape}">
+ <input type="hidden" id="MemberLat" name="MemberLat" value="{$member.lat}">
+ <input type="hidden" id="MemberLon" name="MemberLon" value="{$member.lon}">
+ <input type="submit" class="button map-button text-center" id="MemberDrivingDirectionSubmit" name="MemberDrivingDirectionSubmit" value="Directions">
+ </form>
+
+ {/if}
+ </div>
+
+
+<!-- Attributes: amenitities, credit cards, etc -->
+ <div id="glm-member-detail-descr-row" class="small-12 medium-8 columns">
+ {apply_filters('glm-member-db-front-members-detail-attributesTop', '', $member.id)}
+
+ {if $featuredImage}
+ <!-- <div class="glm-member-detail-featured-image-wrapper small-12 columns">
+ <img src="{$glmPluginMediaUrl}/images/large/{$featuredImage}">
+ {if $featuredImageCaption}
+ <div class="glm-member-detail-featured-image-caption">
+ {$featuredImageCaption}
+ </div>
+ {/if}
+ </div> -->
+ {/if}
+ <div id="glm-member-detail-intro-desc">
+ {if $member.short_descr && $settings.detail_show_short_descr}{$member.short_descr|nl2br}{/if}
+ </div>
+ <div id="glm-member-detail-fullprofile-toggle">Expand All</div>
+ <div id="glm-member-detail-data-container">
+ <div id="glm-member-detail-description-toggle" class="glm-member-detail-content-toggle">Description</div>
+ <div id="glm-member-detail-description-container" class="glm-member-detail-content-data">
+ <div id="glm-member-detail-description" >
+ {if $member.descr && $settings.detail_show_descr}
+ {apply_filters('glm-member-db-front-members-detail-descriptionTop', '', $member.id)}
+ {$member.descr|nl2br}
+ {apply_filters('glm-member-db-front-members-detail-descriptionBottom', '', $member.id)}
+ {/if}
+ </div>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+
+ <div id="glm-member-detail-meeting-toggle" class="glm-member-detail-content-toggle">Meeting Space Information</div>
+ <div id="glm-member-detail-meeting-container" class="glm-member-detail-content-data">
+ <div id="glm-member-detail-meeting" >
+ {$customFields = apply_filters('get_glm_custom_fields','glm-member-db',$member.id)}
+ {foreach $customFields as $field}
+ {if $field.field_data}
+ <div class="glm-member-detail-custom-field">
+ <div class="row">
+ <span class="glm-member-detail-custom-field-name small-12 medium-5 columns" >{$field.field_name}</span>
+ <span class="glm-member-detail-custom-field-data small-12 medium-7 columns">{$field.field_data}</span>
+ </div>
+
+ </div>
+ {/if}
+ {/foreach}
+ </div>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+
+
+ {apply_filters('glm-member-db-front-members-detail-descriptionAfter', '', $member.id)}
+ {apply_filters('glm-member-db-front-members-detail-imageGalleryBefore', '', $member.id)}
+ {if $settings.detail_show_imagegallery && $haveImageGallery}
+ <div id="glm-member-detail-images-toggle" class="glm-member-detail-content-toggle">Photos</div>
+ <div id="glm-member-detail-images-container" class="glm-member-detail-content-data small-12">
+ {apply_filters('glm-member-db-front-members-detail-galleryTop', '', $member.id)}
+<!-- <h2>Photo Gallery</h2>-->
+
+ <ul class="small-block-grid-1 medium-block-grid-2 large-block-grid-3">
+ {foreach $imageGallery as $i}
+ <li>
+ <a class="glm-member-detail-images-thumb fancybox" data-fancybox="images" rel="gallery1" href="{$glmPluginMediaUrl}/images/large/{$i.file_name}" style="background-image: url('{$glmPluginMediaUrl}/images/small/{$i.file_name}')">
+ <img class="glm-member-filler-image" src="{$assetsUrl}/filler_s.gif" alt="{$i.caption}">
+ </a>
+ </li>
+ {/foreach}
+ </ul>
+ {apply_filters('glm-member-db-front-members-detail-galleryBottom', '', $member.id)}
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-imageGalleryAfter', '', $member.id)}
+ {apply_filters('glm-member-db-front-members-detail-couponsBefore', '', $member.id)}
+ {if $settings.detail_show_coupons && $coupons}
+ <div id="glm-member-detail-coupons-toggle" class="glm-member-detail-content-toggle">Coupons</div>
+ <div id="glm-member-detail-coupons-container" class="glm-member-detail-content-data small-12">
+ <a name="glm-member-detail-coupons"></a>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-couponsAfter', '', $member.id)}
+ {apply_filters('glm-member-db-front-members-detail-amenitiesBefore', '', $member.id)}
+ {if $member.amenities && $settings.detail_show_amenities}
+ <div id="glm-member-detail-amenities-toggle" class="glm-member-detail-content-toggle">Amenities & Services</div>
+ <div id="glm-member-detail-amenities-container" class="glm-member-detail-content-data small-12">
+ <table class="glm-member-detail-table">
+ {foreach $member.amenities as $a}
+ <tr>
+ <td>
+ {$a.name}
+ </td>
+ </tr>
+ {/foreach}
+ </table>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-amenitiesAfter', '', $member.id)}
+<!-- Not using credit cards for now
+ {apply_filters('glm-member-db-front-members-detail-creditcardsBefore', '', $member.id)}
+ {if $member.cc_type && $settings.detail_show_creditcards}
+ <div id="glm-member-detail-creditcards-toggle" class="glm-member-detail-content-toggle">Credit Cards</div>
+ <div id="glm-member-detail-creditcards-container" class="glm-member-detail-content-data small-12">
+ <table class="glm-member-detail-table">
+ <tr><th>Credit Cards Accepted:</th></tr>
+ {foreach $member.cc_type.names as $c}
+ <tr><td>{$c}</td></tr>
+ {/foreach}
+ </table>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-creditcardsAfter', '', $member.id)}
+-->
+ {apply_filters('glm-member-db-front-members-detail-categoriesBefore', '', $member.id)}
+ {if $member.categories && $settings.detail_show_categories}
+ <div id="glm-member-detail-categories-toggle" class="glm-member-detail-content-toggle">Categories</div>
+ <div id="glm-member-detail-categories-container" class="glm-member-detail-content-data small-12">
+ <table class="glm-member-detail-table">
+<!-- <tr><th>{$terms.term_member_cap} Categories</th></tr>-->
+ {foreach $member.categories as $c}
+ <tr>
+ <td>
+ {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
+ </td>
+ </tr>
+ {/foreach}
+ </table>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-detail-categoriesAfter', '', $member.id)}
+ {apply_filters('glm-member-db-front-members-detail-videoBefore', '', $member.id)}
+ {if $member.video_url && $settings.detail_show_video}
+ <div id="glm-member-detail-video-toggle" class="glm-member-detail-content-toggle">Video</div>
+ <div id="glm-member-detail-video-container" class="glm-member-detail-content-data small-12">
+ <table class="glm-member-detail-table">
+ <div><h3 class="glm-member-detail-video-title">{$member.video_title}</h3></div>
+ <div class="glm-member-detail-video-embed">{$member.video_embed}</div>
+ <div class="glm-member-detail-video-descr"><p>{$member.video_descr}</p></div>
+ </table>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+
+ {apply_filters('glm-member-db-front-members-detail-videoAfter', '', $member.id)}
+
+ {apply_filters('glm-member-db-front-members-detail-liveCamBefore', '', $member.id)}
+ {if $member.live_cam_type.value!=1 && $member.live_cam_url && $settings.detail_show_live_cam}
+ <div id="glm-member-detail-live-cam-toggle" class="glm-member-detail-content-toggle">{$terms.term_webcam_cap}</div>
+ <div id="glm-member-detail-live-cam-container" class="glm-member-detail-content-data small-12">
+ <table class="glm-member-detail-table">
+ <div><h3 class="glm-member-detail-live-cam-title">{$member.live_cam_title}</h3></div>
+ {if $member.live_cam_type.value == 2}
+ <img width="auto" max-height="315" src="{$member.live_cam_url}">
+ {/if}
+ <div class="glm-member-detail-live-cam-descr"><p>{$member.live_cam_descr}</p></div>
+ </table>
+ <div class="glm-member-detail-sub-data-links row">
+ <a class="glm-member-detail-content-toggle">Collapse</a>
+ <a class="glm-member-detail-link-to-top">Back to top</a>
+ </div>
+ </div>
+ {/if}
+
+ {if $haveFiles}
+ <div id='glm-member-detail-files-toggle' class='glm-member-detail-content-toggle'>Files</div>
+ <div id='glm-member-detail-files-container' class='glm-member-detail-content-data small-12'>
+ {foreach $files as $file}
+ <a class="glm-file-detail" href="{$glmPluginMediaUrl}/files/{$file.file_name}" target="_blank">{if $file.caption}{$file.caption}{else}{$file.name}{/if}</a>
+ {/foreach}
+ <div class='glm-member-detail-sub-data-links row'>
+ <a class='glm-member-detail-content-toggle'>Collapse</a>
+ <a class='glm-member-detail-link-to-top'>Back to top</a>
+ </div>
+ </div>
+ {/if}
+
+ {apply_filters('glm-member-db-front-members-detail-liveCamAfter', '', $member.id)}
+
+ {apply_filters('glm-member-db-front-members-detail-dataBottom','',$member.id)}
+ </div>
+ </div>
+ {apply_filters('glm-member-db-front-members-detail-attributesBottom', '', $member.id)}
+<!-- Image Gallery -->
+
+ </div>
+ </div>
+ {apply_filters('glm-member-db-front-members-detail-pageBottom', '', $member.id)}
+
+ <script type="text/javascript">
+ {apply_filters('glm-member-db-front-members-detail-jqueryScriptTop', '', $member.id)}
+
+ jQuery(document).ready(function($) {
+
+ // change the member detail photos grid structure depending
+ var images_container = $("#glm-member-detail-images-container");
+ // Check if Foundation exists first
+ if ( typeof window.Foundation != 'undefined' ) {
+ var foundation_version = window.Foundation.version;
+
+ if( foundation_version.charAt(0) === "6" ){
+ images_container.children('ul').removeClass('small-block-grid-1 medium-block-grid-2 large-block-grid-3');
+ images_container.children('ul').addClass('row small-up-1 medium-up-2 large-up-3');
+ images_container.children('ul').find('li').addClass('column');
+ }
+ }
+
+ // Replace all non-number special characters in a phone number with the designated infix
+ {if $settings.phone_infix}
+ //var processedPhone = $('.glm-member-detail-contact-phone .glm-field-value').text().trim().replace(/[^a-zA-Z0-9 ]/g, '{$settings.phone_infix}');
+ //$('.glm-member-detail-contact-phone .glm-field-value').text(processedPhone);
+ {/if}
+
+ // Check a hidden field to see if this is a page refresh (doesn't detect forced reload)
+ var isRefresh = $("#glm-member-detail-click-logged").val();
+
+ // Also check the HTML 5 performance.navigation.type value (1 = reload, 2 = via history)
+ if(window.performance && (performance.navigation.type == 1 || performance.navigation.type == 2)) {
+ isRefresh = 1;
+ }
+
+ // If this is not a refresh or reload, send AJAX action to record click.
+ if (isRefresh == 0) {
+ $.ajax({
+ url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=memberDetailClick&memberId={$member.member_pointer}&memberSlug={$member.member_slug}"
+ });
+ $("#glm-member-detail-click-logged").val(1);
+ }
+
+ // Processes click-through counts for website links
+ $('#glm-member-detail-website-link').on('click', function() {
+
+ // Get member ID
+ var memberId = $(this).attr('data-member-id');
+ var memberSlug = $(this).attr('data-member-slug');
+
+ // Send AJAX action to record click.
+ $.ajax({
+ url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=memberClickThrough&memberId=" + memberId + "&memberSlug=" + memberSlug
+ });
+
+ });
+ if ($(window).width() >= 1024) {
+ $("#glm-member-detail-description-container").slideToggle("fast", "swing", function() {});
+ $("#glm-member-detail-description-toggle").toggleClass("selected");
+ }
+ // Automatically zoom and expand the relevant
+ $('html').addClass('glmassociatememberdetail glmassociatetop');
+ if ("{$expanded}" != "") {
+ var expandTarget = "glm-member-detail-{$expanded}";
+ if ($("#"+expandTarget+"-container").length) {
+ $("#"+expandTarget+"-container").show("fast", "swing", function() {});
+ $("#"+expandTarget+"-toggle").addClass("selected");
+ fullProfileCheck(expandTarget);
+ $('html, body').animate({
+ scrollTop: $("#"+expandTarget+"-toggle").offset().top-10
+ }, 500);
+ }
+ }
+
+ $("a.glm-member-detail-images-thumb").fancybox({
+
+ helpers: {
+ overlay: { locked: false },
+ title: { type: 'inside'},
+ },
+ afterLoad: function(){
+ this.title = $(this.element).find('img').attr('alt');
+ }
+ });
+
+ $("a.glm-member-detail-images-thumb").click(function(e) {
+ e.preventDefault();
+ });
+
+ $('.glm-member-detail-link-to-top').click(function () {
+ $('body,html').animate({
+ scrollTop: $("#glm-member-detail-takeback-mini").offset().top-10
+ }, 75);
+ });
+
+ // Open the appropriate section if a link is clicked
+ $('.link-open-detail-content-data').click(function(e) {
+ var target = $(this).attr("id").slice(0, -5);
+ // e.g.: #glm-member-detail-packages-link
+ $("#"+target+"-container").show("fast", "swing", function() {});
+ $("#"+target+"-toggle").addClass("selected");
+ fullProfileCheck(target);
+ $('html, body').animate({
+ scrollTop: $("#"+target+"-toggle").offset().top-{$settings.detail_top_offset_autoscroll}
+ }, 500);
+ });
+
+
+ // Open or close the appropriate section if a toggle is clicked
+ $(".glm-member-detail-content-toggle").not("#glm-member-detail-fullprofile-toggle").click(function() {
+ if($(this).parents('.glm-member-detail-sub-data-links').length) {
+ var target = $(this).parent().parent().attr("id").slice(0, -10);
+ } else {
+ var target = $(this).attr("id").slice(0, -7);
+ }
+ $("#"+target+"-container").slideToggle("fast", "swing", function() {});
+ $("#"+target+"-toggle").toggleClass("selected");
+ fullProfileCheck(target);
+ });
+
+ // Change the toggle button based on whether all the content sections are expanded
+ function fullProfileCheck(target) {
+ if ($("#glm-member-detail-data-container > .glm-member-detail-content-toggle.selected").length == $("#glm-member-detail-data-container > .glm-member-detail-content-toggle").length) {
+ $("#glm-member-detail-fullprofile-toggle").addClass("selected");
+ } else {
+ $("#glm-member-detail-fullprofile-toggle").removeClass("selected");
+ }
+ }
+
+ // Open or close every data container if the fullprofile toggle is clicked
+ $("#glm-member-detail-fullprofile-toggle").click(function() {
+ if ($(this).hasClass("selected")) {
+ $(".glm-member-detail-content-data").slideUp(175, "swing", function() {});
+ $(".glm-member-detail-content-toggle").removeClass("selected");
+ $(this).toggleClass("selected");
+ } else {
+ $(".glm-member-detail-content-data").not($(this)).slideDown(350, "swing", function() {});
+ $(".glm-member-detail-content-toggle").addClass("selected");
+ $(this).toggleClass("selected");
+ }
+ });
+
+ // Expand the takeback button on hover. Progressively add ellipses when clicked and loading
+ $("#glm-member-detail-takeback-mini").click(function() {
+ $("#glm-member-detail-takeback-mini span").html("Loading");
+ $("#glm-member-detail-takeback-mini").css('min-width','170px');
+ var count = 0;
+ setInterval(function(){
+ count++;
+ var dots = new Array(count % 5).join(' .');
+ $('#glm-member-detail-takeback-mini span').html("Loading ." + dots);
+ }, 500);
+ });
+
+
+ {if $settings.detail_show_map}
+
+ // Expand/contract map container and change the toggle button
+ $("#glm-member-detail-map-button").click(function() {
+ var mapC = "#glm-locationMap-container";
+ var map = "#glm-locationMap";
+ var mapNewH = 0;
+ var mapOverflow = 'hidden';
+ var mapBtnTxt = 'view map';
+ if ($(mapC).height() == 0) {
+ mapNewH = 250;
+ mapV = 'visible';
+ mapBtnTxt = 'hide map'
+ }
+ $(mapC).animate({
+ overflow: mapOverflow,
+ height: mapNewH
+ }, 250, "swing", function() {
+
+ });
+ $(this).html(mapBtnTxt);
+ });
+
+ /*
+ * Google Maps
+ * API reference: https://developers.google.com/maps/documentation/javascript/reference
+ */
+
+ var myLocation = false;
+ {if $member.lat != 0 && $member.lon != 0}
+ var memberlocation = new google.maps.LatLng({$member.lat}, {$member.lon});
+ {else}
+ var memberlocation = new google.maps.LatLng({$settings.maps_default_lat}, {$settings.maps_default_lon});
+ {/if}
+
+ function initMap() {
+
+ // Set default - Need to make this configurable
+ var map = new google.maps.Map(document.getElementById('glm-locationMap'), {
+ zoom: {$settings.maps_default_zoom},
+ center: memberlocation,
+ disableDefaultUI: false,
+ mapTypeId: google.maps.MapTypeId.MAP,
+ });
+
+ // Create a marker for this member
+ {if $member.lat != 0 && $member.lon != 0}
+ var marker = new google.maps.Marker({
+ map: map,
+ position: new google.maps.LatLng({$member.lat}, {$member.lon}),
+ draggable: false,
+ animation: google.maps.Animation.DROP,
+ title: '{$member.member|escape}'
+ });
+ {/if}
+ // Don't Try HTML5 to get user geolocation
+ //if(navigator.geolocation) {
+ //navigator.geolocation.getCurrentPosition(function(position) {
+ //myLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
+ //var pinIcon = new google.maps.MarkerImage(
+ //'https://maps.google.com/mapfiles/kml/shapes/man.png',
+ //null, /* size is determined at runtime */
+ //null, /* origin is 0,0 */
+ //null, /* anchor is bottom center of the scaled image */
+ //new google.maps.Size(30, 30)
+ //);
+ //var myMarker = new google.maps.Marker({
+ //map: map,
+ //position: myLocation,
+ //draggable: false,
+ //animation: google.maps.Animation.DROP,
+ //title: 'My Location',
+ //icon: pinIcon,
+ //zIndex: 100
+ //});
+ //$('#glm-startLocation').attr('placeholder', 'Leave blank for your current location or enter address here.');
+ //});
+ //}
+
+ }
+
+ // Load map
+ google.maps.event.addDomListener(window, 'load', initMap);
+
+
+ {/if} {*detail_show_map*}
+
+// Direction code is below, but since we're sending them offsite to google maps this is no longer necessary.
+//
+// {if $settings.detail_show_directions}
+//
+// var directionsDisplay;
+// var directionsService = new google.maps.DirectionsService();
+//
+// // Display map with route from specified location to member location
+// function calcRoute() {
+//
+// // If an address was input, use that, otherwise use detected location if available
+// var start = $('#glm-startLocation').val();
+// if (start == '' ) {
+// if (myLocation != false) {
+// start = myLocation;
+// }
+// }
+//
+// // If no start location available, tell user
+// if (start == '') {
+// alert('No starting location. Please enter address.');
+// return;
+// }
+//
+// // Switch to directions map being visible
+// $('#glm-directionsMap-container').removeClass('glm-hidden');
+// $('#glm-locationMap-container').addClass('glm-hidden');
+// $('#glm-showLocationButton').removeClass('glm-hidden');
+//
+// // Initialize the directions map with a default center location
+// directionsDisplay = new google.maps.DirectionsRenderer();
+// var mapOptions = {
+// zoom:7,
+// center: memberlocation
+// }
+// directionsMap = new google.maps.Map(document.getElementById("glm-directionsMap"), mapOptions);
+// directionsDisplay.setMap(directionsMap);
+//
+// // Get directions type selected
+// var directionsType = $('#directionsType').find(':selected').val();
+//
+// // Specify origin and destination then get route
+// var request = {
+// origin: start,
+// destination: memberlocation,
+// travelMode: google.maps.TravelMode[directionsType]
+// };
+// directionsService.route(request, function(result, status) {
+// if (status == google.maps.DirectionsStatus.OK) {
+// directionsDisplay.setDirections(result);
+// $('#directions-panel').html('');
+// directionsDisplay.setPanel(document.getElementById('directions-panel'));
+// }
+// });
+//
+// // Check for first map idle (completely loaded) - Check max initial zoom
+// var mapLoadedListener = google.maps.event.addListener(directionsMap, 'idle', function() {
+// if (directionsMap.getZoom() > 16) {
+// this.setZoom(16);
+// }
+// google.maps.event.removeListener(mapLoadedListener);
+// });
+//
+// }
+//
+// // Trigger route map either by button or input of address
+// $('#glm-showDirectionsButton' ).click( function() {
+// calcRoute();
+// });
+// $('#glm-startLocation' ).change( function() {
+// calcRoute();
+// });
+//
+// // Switch back to member location map
+// $('#glm-showLocationButton').click( function() {
+// $('#glm-directionsMap-container').addClass('glm-hidden');
+// $('#glm-locationMap-container').removeClass('glm-hidden');
+// $('#glm-showLocationButton').addClass('glm-hidden');
+// });
+//
+// {/if} {*detail_show_directions*}
+
+ }); // jquery
+
+ {apply_filters('glm-member-db-front-members-detail-jqueryScriptBottom', '', $member.id)}
+
+
+
+ </script>
+
+{else}
+ <p>For some reason the specified {$terms.term_member} was not found. Please try again.</p>
+{/if}
+
+
+{include file='front/footer.html'}
--- /dev/null
+{if $view == dropdown}
+ {if $members}
+ <ul class="small-block-grid-1 medium-block-grid-2 large-block-grid-6">
+ {foreach $members as $member}
+ {$featuredImage = ''}
+ <li class="topbar-member">
+ {$featuredImage = apply_filters('member_images',$member.id,true,"large")}
+
+ {if $featuredImage}
+ {$image = "style='height: 125px;width: 100%;background: url({$featuredImage})no-repeat center center;background-size: cover;'"}
+ {else}
+ {$image = "style='height: 125px;width: 100%;'"}
+ {/if}
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}" class="member-link">
+ <div class="member-image" {$image}></div>
+ </a>
+
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}" class="member-link">
+ <div class="member-name">
+ {$member.member_name}
+ </div>
+ </a>
+ </li/>
+ {/foreach}
+ </ul>
+ {else}
+ No Members
+ {/if}
+{else}
+<div class="glm-member-db-list glm-member-db-{$view}-view
+ {if $settings.list_map_show_opened}map-opened{else}map-closed{/if}
+ {if $settings.list_show_search_filters_opened}filters-opened{else}filters-closed{/if}
+">
+{include file='front/members/header.html'}
+ {apply_filters('glm-member-db-front-members-list-pageTop', '')}
+<div class="glm-member-list-inner-wrapper">
+ {if $settings.list_show_map}
+ <div id="glm-member-list-map-toggle" class="button glm-button">Map</div>
+ {/if}
+ {if $settings.list_show_search}
+ <div id="glm-member-list-filters-wrapper">
+ <div id="glm-member-list-filters-button" class="button glm-button glm-member-list-filters-toggle">
+ FILTERS
+ </div>
+ <div id="glm-member-list-filters-box">
+ <div id="glm-member-list-filters-close" class="button glm-button glm-member-list-filters-toggle">Close</div>
+ <form action="{$thisUrl}?glm_action=list" method="post" enctype="multipart/form-data">
+ <div class="small-12 columns glm-member-search glm-member-entry-container glm-member-container">
+ {apply_filters('glm-member-db-front-members-list-searchFormTop', '')}
+ <div>
+ <h3>Refine Search</h3>
+ </div>
+ {if $settings.list_show_search_category}
+ <div>
+ By Category:
+<!-- To enable multi-select, use this code for the category search instead of the code below
+ <select name="categorySearchMultiple[]" id="categorySelect" multiple>
+ {if !$singleCategory}
+ <option value="">(all)</option>
+ {/if}
+ {foreach from=$categories item=v}
+ <option value="{$v.id}"{if $v.default} selected="selected"{/if}>
+ {if $v.parent} {/if}{$v.name}
+ </option>
+ {/foreach}
+ </select>
+-->
+ <select name="categorySearch" id="categorySelect">
+ {if !$singleCategory}
+ <option value="">(all)</option>
+ {/if}
+ {foreach from=$categories item=v}
+ <option value="{$v.id}"{if $v.default} selected="selected"{/if}>
+ {if $v.parent} {/if}{$v.name}
+ </option>
+ {/foreach}
+ </select>
+
+ </div>
+ {/if}
+ {if $settings.list_show_search_amenities}
+ {if $amenities|@count gt 0}
+ <div>
+ By Amenities:
+ <select name="amenitySearch[]" id="amenitySelect" title="Click to Select Amenities" multiple="multiple">
+ {foreach from=$amenities item=v}
+ <option value="{$v.id}" {if $v.default} selected="selected"{/if}>
+ {$v.name}
+ </option>
+ {/foreach}
+ </select>
+ </div>
+ {/if}
+ {/if}
+ {if $settings.list_show_search_region}
+ {if $regions|@count gt 0}
+ <div>
+ By Regions:
+ <select name="regionUserSearch[]">
+ {if $regions|@count gt 1}
+ <option value"">(all)</option>
+ {/if}
+ {foreach from=$regions item=v}
+ <option value="{$v.id}" {if $v.default} selected="selected"{/if}>
+ {$v.name}
+ </option>
+ {/foreach}
+ </select>
+ </div>
+ {/if}
+ {/if}
+
+ {if $settings.list_show_search_text}
+ <div>
+ By Name: <input type="text" name="textSearch" value="{$textSearch}" class="glm-form-text-input">
+ </div>
+ {/if}
+ <div><input class="button glm-member-button centered" type="submit" value="Search"></div>
+ {apply_filters('glm-member-db-front-members-list-searchFormBottom', '')}
+ </div>
+ </form>
+ </div> <!-- glm-member-list-filters-box -->
+ </div> <!-- glm-member-list-wrapper -->
+ {/if} {*list_show_search*}
+ {if $settings.list_show_map}
+ <script src="//maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
+ {apply_filters('glm-member-db-front-members-list-mapTop', '')}
+ <div id="glm-locationMap-container">
+ <div id="glm-locationMap" class="glm-map">(map loads here)</div>
+ </div>
+ {apply_filters('glm-member-db-front-members-list-mapBottom', '')}
+ {/if}
+ {apply_filters('glm-member-db-front-members-list-listHeaderTop', '')}
+
+
+ {if $settings.list_show_list && !$blankStart}
+ {if $settings.list_header_text}
+ <h3 class="glm-member-db-list-header-title">{$settings.list_header_text}</h3>
+ {else}
+ <h3 class="glm-member-db-list-header-title">List of {$terms.term_member_plur_cap}</h3>
+ {/if}
+ {if $haveMembers}
+
+ <!-- Member information displayed in map bubbles -->
+ {foreach $mapItems as $m}
+ <div id="map_info_{$m.id}" class="glm-hidden">
+ {apply_filters('glm-member-db-front-members-list-mapBubbleTop', '', $m.member)}
+ {if $m.logo && $settings.list_map_show_logo}
+ <div class="glm-member-list-image">
+ <img src="{$glmPluginMediaUrl}/images/{$settings.list_map_logo_size}/{$m.logo}">
+ </div>
+ {/if}
+ <div class="glm-map-member-name">
+ {if $settings.list_map_show_detaillink}
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/{if $settings.enable_multiple_profiles}{$m.id}/{/if}">{$m.name}</a>
+ {else}
+ {$m.name}
+ {/if}
+ </div>
+ {if $settings.list_map_show_address}
+ <p class="glm-map-member-address">
+ {if $settings.list_map_show_street}
+ {if $m.addr1}{$m.addr1}<br>{/if}
+ {if $m.addr2}{$m.addr2}<br>{/if}
+ {/if}
+ {if $settings.memb_info_location && $settings.list_map_show_citystatezip}
+ {if $m.city}{$m.city}{if $m.state}, {/if}{/if}{if $m.state}{$m.state}{/if}{if $m.zip} {$m.zip}{/if}
+ {/if}
+ {if $m.country && $settings.list_map_show_country}
+ <br>{$m.country}
+ {/if}
+ </p>
+ {/if} {*list_map_show_address*}
+ <div class="glm-member-list-info">
+ <p>
+ {if $m.phone && $settings.list_map_show_phone}<b>Phone:</b> {apply_filters('glm_associate_phone_filter', $m.phone)}<br>{/if}
+ {if $m.toll_free && $settings.list_map_show_tollfree}{apply_filters('glm_associate_phone_filter', $m.toll_free)}<br>{/if}
+ {if $m.url && $settings.list_map_show_url}<b>Web site:</b> <a href="{$m.url}"{if $settings.list_map_show_url_newtarget} target="_blank"{/if}>{$m.url}</a><br>{/if}
+ {if $m.email && $settings.list_map_show_email}<b>E-Mail Address:</b> <a href="mailto:{$m.email}">{$m.email}</a><br>{/if}
+ {if $m.region && $settings.list_map_show_region}<b>Region:</b> {$m.region}{/if}
+ </p>
+ {if $m.descr && $settings.list_map_show_descr}{$m.descr|nl2br}<br>{/if}
+ {if $m.short_descr && $settings.list_map_show_short_descr}{$m.short_descr}<br>{/if}
+ {if $m.categories && $settings.list_map_show_categories}
+ <div class="glm-member-list-items">
+ <b>{$terms.term_member_cap} Categories</b>
+ <ul>
+ {foreach $m.categories as $c}
+ <li>
+ {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
+ </li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+ <!-- Not using credit cards for now
+ {if $m.cc_type && $settings.list_map_show_creditcards}
+ <div class="glm-member-list-items">
+ <b>Credit Cards Accepted:</b>
+ <ul>
+ {foreach $m.cc_type.names as $c}
+ <li>{$c}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+ -->
+ {if $settings.list_map_show_amenities}
+ <div class="glm-member-list-items">
+ <b>Amenities:</b>
+ <ul>
+ {foreach $m.amenities as $a}
+ <li>{$a.name}</li>
+ {/foreach}
+ </ul>
+ </div>
+ {/if}
+ </div>
+ {apply_filters('glm-member-db-front-members-list-mapBubbleBottom', '', $m.member)}
+ </div> <!-- End of information displayed in map bubbles -->
+ {/foreach}
+
+ <div id="glm-member-list-terms">{$terms.term_member_plur_cap} found: {$membersFound}<br></div>
+
+ {apply_filters('glm-member-db-front-members-list-listHeaderBottom', '')}
+
+ <!-- Member information displayed in list -->
+
+ <div class="glm-member-list-listing-container">
+ {if $settings.list_show_search_alpha}
+ <div class="glm-alpha-links">
+ <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSearchSelected}®ionSearch={$regionSearchSelected}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+ {foreach $alphaList as $a}
+ <a href="{$thisUrl}?glm_action=list&alpha={$a.alpha}&textSearch={$textSearch}&categorySearch={$catSearchSelected}®ionSearch={$regionSearchSelected}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+ {/foreach}
+ </div>
+ {/if}
+
+ {if $paging}
+ <br>
+ <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSearchSelected}®ionSearch={$regionSearchSelected}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}" class="glm-alpha-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>Previous page</a>
+ <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSearchSelected}®ionSearch={$regionSearchSelected}&pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}" class="glm-alpha-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page</a>
+ <br>
+ showing {$start} through {$lastDisplayed} of {$filteredMembersFound}
+ {/if}
+
+
+ {if $view == grid}
+ <ul class="small-block-grid-1 medium-block-grid-2 large-block-grid-3">
+ {foreach $members as $member}
+ <li class="glm-member-list-record">
+ {apply_filters('glm-member-db-front-members-list-memberAbove', '', $member.member_pointer)}
+ <div class="glm-member-db-border-wrap">
+ {apply_filters('glm-member-db-front-members-list-memberTop', '', $member.member_pointer)}
+
+ {if $settings.list_show_detail_link}
+ <a class="glm-member-list-image-wrapper" href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/">
+ {/if}
+
+ {if $member.featured}
+ <div class="glm-member-list-featured-tag">
+ featured
+ </div>
+ {/if}
+
+ {if $member.logo && $settings.list_show_logo}
+ <div class="glm-member-list-has-image">
+ <img class="glm-member-list-image" src="{$glmPluginMediaUrl}/images/grid/{$member.logo}">
+ </div>
+ {elseif $settings.list_show_logo_filler}
+ <div class="glm-member-list-has-image">
+ <img class="glm-member-list-image-filler" src="{$assetsUrl}/filler_s.gif">
+ </div>
+ {else}
+ <div class="glm-member-list-missing-image"></div>
+ {/if}
+ {if $settings.list_show_detail_link}
+ </a>
+ {/if}
+ <div class="glm-member-list-info-wrapper">
+ <h4 class="glm-member-title">
+ {if $settings.list_show_detail_link}
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}">
+ {$member.member}
+ </a>
+ {else}
+ {$member.member}
+ {/if}
+
+ </h4>
+
+ <div class="glm-member-list-sub-links">
+ <ul>
+ {if $member.url && $settings.list_show_url}<li><a href="{$member.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if}>Website</a></li>{/if}
+ <!-- {if $member.phone && $settings.list_map_show_phone}<a href="tel:+{$member.phone}">Phone</a>{/if}-->
+ {$packageLink = apply_filters('glm-member-db-front-members-list-linksBottom', '', $member.member_pointer)}
+ {if $packageLink}<li>{$packageLink}</li>{/if}
+ {if $member.reservation_url}<li><a target="_blank" href="{$member.reservation_url}">Reserve Now</a></li>{/if}
+
+ {if $settings.list_show_live_cam}
+ {if $member.live_cam_type.name == "Web Page" && $member.live_cam_url && $settings.list_show_live_cam}
+ <li><a target="_blank" href="{$member.live_cam_url}">{$terms.term_webcam_cap}</a></li>
+ {else if $member.live_cam_type.name == "Camera Image"}
+ <li><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}?expanded=live-cam">{$terms.term_webcam_cap}</a></li>
+ {/if}
+ {/if}
+
+ <li><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}">View More</a></li>
+ {apply_filters('glm-member-db-front-members-list-memberBelow', '', $member.member_pointer)}
+ </ul>
+ </div>
+ </div>
+ </div> <!-- End of glm-member-db-border-wrap -->
+ </li> <!-- end of li.glm-member-list-record -->
+ {/foreach} {*$members*}
+ </ul>
+ <!-- Grid view above -->
+
+ {else}
+
+ <!-- List view below -->
+ {foreach $members as $member}
+ {apply_filters('glm-member-db-front-members-list-memberAbove', '', $member.member_pointer)}
+ <div class="glm-member-list-container glm-member-container small-12 columns">
+ {apply_filters('glm-member-db-front-members-list-memberTop', '', $member.member_pointer)}
+ <!-- Member Logo - Medium and up-->
+
+ <div class="glm-member-list-data small-12 columns">
+ {if $member.logo && $settings.list_show_logo}
+ <div class="glm-member-list-image-wrapper right small-12 medium-4 columns {if !$settings.list_logo_for_mobile}mobile-hide{/if}">
+ <div class="glm-member-list-image-border">
+
+ {if $member.featured}
+ <div class="glm-member-list-featured-tag">
+ featured
+ </div>
+ {/if}
+ <img src="{$glmPluginMediaUrl}/images/{$settings.list_logo_size}/{$member.logo}">
+ </div>
+ </div>
+ {/if}
+ <div class="glm-member-list-active-info small-12 medium-8 columns">
+ <!-- Member name, address, and basic information -->
+ {apply_filters('glm-member-db-front-members-list-memberInfoTop', '', $member.member_pointer)}
+ <h4 class="glm-member-title">
+ {if $settings.list_show_detail_link}
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}">{$member.member}</a>
+ {else}
+ {$member.member}
+ {/if}
+ </h4>
+ {if $settings.list_show_address}
+ <div class="glm-member-list-address-wrapper">
+ {apply_filters('glm-member-db-front-members-list-memberAddressTop', '', $member.member_pointer)}
+ {if $settings.list_show_street}
+ {if $member.addr1 && $settings.list_show_address}<div>{$member.addr1}</div>{/if}
+ {if $member.addr2 && $settings.list_show_address}<div>{$member.addr2}</div>{/if}
+ {/if}
+ {if $settings.memb_info_location && $settings.list_show_citystatezip}
+ <div>
+ {if $member.city}
+ <span>{$member.city}{if $member.state.value}, {/if}</span>
+ {/if}
+ {if $member.state.value}
+ <span>{$member.state.value}</span>
+ {/if}
+ {if $member.zip}
+ {$member.zip}
+ {/if}
+ </div>
+ {/if}
+ {if $member.country.name && $settings.list_show_country}
+ <div>{$member.country.name}</div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-list-memberAddressBottom', '', $member.member_pointer)}
+ </div>
+ {/if}
+ {apply_filters('glm-member-db-front-members-list-memberDetailTop', '', $member.member_pointer)}
+ {if ($settings.memb_info_contact && $member.phone && $settings.list_show_phone) || ($settings.memb_info_contact && $member.toll_free && $settings.list_show_tollfree)}
+ <div>
+ {if $member.phone && $settings.list_show_phone}<span class="glm-member-db-phone">Phone: {apply_filters('glm_associate_phone_filter', $member.phone)} </span>{/if}
+ {if $member.toll_free && $settings.list_show_tollfree}<span class="glm-member-db-phone-tollfree">{apply_filters('glm_associate_phone_filter', $member.toll_free)}</span>{/if}
+ </div>
+ {/if}
+ {if $settings.memb_info_location && $member.region && $settings.list_show_region}<div><b>Region:</b> {$member.region}</div>{/if}
+
+ <div class="glm-member-list-links">
+ {apply_filters('glm-member-db-front-members-list-memberLinksTop', '', $member.member_pointer)}
+ {if $member.url && $settings.list_show_url}<a class='glm-member-list-website-link' data-member-id="{$member.member_pointer}" data-member-slug="{$member.member_slug}" href="{$member.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if} >Visit Website</a>{/if}
+ {if $member.email && $settings.list_show_email}<a href="mailto:{$member.email}">Email</a>{/if}
+ {if $member.reservation_url}<a target="_blank" href="{$member.reservation_url}">Reserve Now</a>{/if}
+ {if $settings.list_show_live_cam}
+ {if $member.live_cam_type.name == "Web Page" && $member.live_cam_url && $settings.list_show_live_cam}
+ <a target="_blank" href="{$member.live_cam_url}">{$terms.term_webcam_cap}</a>
+ {else if $member.live_cam_type.name == "Camera Image"}
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}?expanded=live-cam">{$terms.term_webcam_cap}</a>
+ {/if}
+ {/if}
+ {apply_filters('glm-member-db-front-members-list-linksBottom', '', $member.member_pointer)}
+ </div>
+ <div class="glm-member-db-socials">
+ {apply_filters('glm-member-db-front-members-social-list', '', $member.member_pointer)}
+ </div>
+
+ <div class="glm-member-list-description small-12 columns">
+ <div>
+ {apply_filters('glm-member-db-front-members-list-memberDescriptionTop', '', $member.member_pointer)}
+ {if $member.short_descr && $settings.list_show_short_descr}
+ {$member.short_descr|nl2br}
+ {if $settings.list_show_detail_link}
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$member.member_slug}/{if $settings.enable_multiple_profiles}{$member.id}/{/if}">More</a>
+ {/if}
+ {/if}
+ {apply_filters('glm-member-db-front-members-list-memberDescriptionBottom', '', $member.member_pointer)}
+ </div>
+ {if $member.categories && $settings.list_show_categories}
+ <div class="glm-member-list-items">
+ <b>{$terms.term_member_cap} Categories</b>
+ <ul>
+ {foreach $member.categories as $c}
+ <li>
+ {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
+ </li>
+ {/foreach}
+ </ul>
+ {/if}
+ {if $member.cc_type && $settings.list_show_creditcards}
+ <b>Credit Cards Accepted:</b>
+ <ul>
+ {foreach $member.cc_type.names as $c}
+ <li>{$c}</li>
+ {/foreach}
+ </ul>
+ {/if}
+ {if $member.amenities && $settings.list_show_amenities}
+ <b>{$terms.term_member_cap} Amenities</b>
+ <ul>
+ {foreach $member.amenities as $A}
+ <li>
+ {$A.name}
+ </li>
+ {/foreach}
+ </ul>
+ {/if}
+ </div>
+ </div>
+ {apply_filters('glm-member-db-front-members-list-memberDetailBottom', '', $member.member_pointer)}
+ </div>
+
+
+ <!-- Laury - This is the one that should go underneath all the address and description area -->
+ {apply_filters('glm-member-db-front-members-list-memberDataBelow', '', $member.member_pointer)}
+ {apply_filters('glm-member-db-front-members-list-memberBottom', '', $member.member_pointer)}
+ </div>
+ {apply_filters('glm-member-db-front-members-list-memberBelow', '', $member.member_pointer)}
+<!-- Member Description -->
+
+ {/foreach} {*$members*}
+ </div>
+
+ {/if} {*end grid view check*}
+
+ {if $paging}
+ <br>
+ <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSearchSelected}®ionSearch={$regionSearchSelected}&pageSelect=Previous&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}" class="glm-alpha-link" {if !$prevStart} style="pointer-events: none; opacity: 0.5;"{/if}>Previous page</a>
+ <a href="{$thisUrl}?glm_action=list&textSearch={$textSearch}&categorySearch={$catSearchSelected}®ionSearch={$regionSearchSelected}&pageSelect=Next&prevStart={$prevStart}&nextStart={$nextStart}&limit={$limit}&alpha={$alphaSelected}" class="glm-alpha-link" {if !$nextStart} style="pointer-events: none; opacity: 0.5;"{/if}>Next page</a>
+ <br>
+ showing {$start} through {$lastDisplayed} of {$filteredMembersFound}
+ {/if}
+
+ {apply_filters('glm-member-db-front-members-list-pageBottom', '')}
+ {else}
+ <div>(no {$terms.term_member_plur} listed)</div>
+ {/if}
+
+ {/if} {*list_show_list*}
+ <script type="text/javascript">
+ jQuery(document).ready(function($) {
+
+ jQuery('select[multiple]').asmSelect();
+
+ // Show search filters box
+ {if $settings.list_show_search}
+
+ // Float filter box
+
+ var fixmeTop = $('#glm-member-list-filters-button').offset().top;
+ $(window).scroll(function() {
+
+ var currentScroll = $(window).scrollTop();
+ if (currentScroll >= fixmeTop-{$settings.list_floating_search_distance_top} && {$settings.list_floating_search}) {
+ $('#glm-member-list-filters-wrapper').css({
+ position: 'fixed',
+ top: '{$settings.list_floating_search_distance_top}px',
+ transform: 'translateX(0%)'
+ });
+ } else {
+ $('#glm-member-list-filters-wrapper').css({
+ position: 'relative',
+ top: '0',
+ transform: 'translateX(0%)'
+ });
+ }
+
+ });
+ $(".glm-member-list-filters-toggle").click( function() {
+ $(".glm-member-db-{$view}-view").toggleClass("filters-opened");
+ $(".glm-member-db-{$view}-view").toggleClass("filters-closed");
+ $("#glm-locationMap-container").one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
+ function() {
+ var center = map.getCenter();
+ google.maps.event.trigger(map, "resize");
+ map.setCenter(center);
+ });
+ });
+ {/if} // settings.list_show_search
+
+ {if $settings.list_show_map}
+ /*
+ * Google Maps
+ * API reference: https://developers.google.com/maps/documentation/javascript/reference
+ */
+
+
+ // Create a Google Map object
+ var map = new google.maps.Map(document.getElementById('glm-locationMap'), {
+ center: new google.maps.LatLng({$settings.maps_default_lat}, {$settings.maps_default_lon}),
+ zoom: {$settings.maps_default_zoom},
+ disableDefaultUI: false,
+ mapTypeId: google.maps.MapTypeId.MAP,
+ });
+
+ $("#glm-member-list-map-toggle").click( function() {
+ $(".glm-member-db-{$view}-view").toggleClass("map-opened");
+ $(".glm-member-db-{$view}-view").toggleClass("map-closed");
+ var center = map.getCenter();
+ google.maps.event.trigger(map, "resize");
+ map.setCenter(center);
+
+ var currentScroll = $(window).scrollTop(); // get current position
+ var mapTop = $("#glm-locationMap-container").offset().top-10;
+ {if $settings.list_show_search}fixmeTop = $('#glm-member-list-filters-button').offset().top;{/if}
+ if (currentScroll >= mapTop) {
+ $('body,html').animate({
+ scrollTop: $("#glm-locationMap-container").offset().top-100
+ }, 50);
+ } else {
+ $('body,html').animate({
+ scrollTop: $("#glm-locationMap-container").offset().top-100
+ }, 400);
+ }
+ });
+ var geocoder = new google.maps.Geocoder();
+ var bounds = new google.maps.LatLngBounds();
+ var infowindow = new google.maps.InfoWindow();
+
+ // Don't Try HTML5 to get user geolocation
+ //if(navigator.geolocation) {
+ //navigator.geolocation.getCurrentPosition(function(position) {
+ //var myLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
+ //var pinIcon = new google.maps.MarkerImage(
+ //'https://maps.google.com/mapfiles/kml/shapes/man.png',
+ //null, /* size is determined at runtime */
+ //null, /* origin is 0,0 */
+ //null, /* anchor is bottom center of the scaled image */
+ //new google.maps.Size(30, 30)
+ //);
+ //var myMarker = new google.maps.Marker({
+ //map: map,
+ //position: myLocation,
+ //draggable: false,
+ //animation: google.maps.Animation.DROP,
+ //title: 'My Location',
+ //icon: pinIcon,
+ //zIndex: 100
+ //});
+ //});
+ //}
+
+ {if $haveMembers}
+ {foreach $mapItems as $m}
+ {if $m.lat != 0 && $m.lon != 0}
+
+ // Create a marker for this member
+ var marker = new google.maps.Marker({
+ map: map,
+ position: new google.maps.LatLng({$m.lat}, {$m.lon}),
+ draggable: false,
+ animation: google.maps.Animation.DROP,
+ title: '{$m.member|escape}',
+ descr: $('#map_info_' + {$m.id}).html(),
+ memberID: {$m.member}
+ });
+
+ // Add a click listener for this marker
+ marker.addListener('click', function() {
+ infowindow.setOptions({
+ content: this.descr
+ });
+ infowindow.open(map,this);
+ });
+
+ // Extend the map bounds to include this marker
+ bounds.extend(marker.position);
+
+ {/if}
+ {/foreach}
+
+ // Fit map to bounds of all markers
+ map.fitBounds(bounds);
+
+ // Check for first map idle (completely loaded) - Check max zoom
+ var mapLoadedListener = google.maps.event.addListener(map, 'idle', function() {
+ if (map.getZoom() > 14) {
+ this.setZoom(14);
+ }
+ google.maps.event.removeListener(mapLoadedListener);
+ });
+
+ {else}
+
+
+ {/if} // havemembers
+
+
+ {/if} // settings.list_show_map
+
+ // Processes click-through counts for website links
+ $('.glm-member-list-website-link').on('click', function() {
+
+ // Get member ID
+ var memberId = $(this).attr('data-member-id');
+ var memberSlug = $(this).attr('data-member-slug');
+
+ // Send AJAX action to record click.
+ $.ajax({
+ url: "{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=memberClickThrough&memberId=" + memberId + "&memberSlug=" + memberSlug
+ });
+
+ });
+ });
+ </script>
+
+ </div><!-- glm-member-list-inner-wrapper-->
+ </div><!-- glm-member-db-list-view -->
+{include file='front/footer.html'}
+<!-- if not generic view passed in member list shortcode-->
+{/if}
\ No newline at end of file
<div id="page-wrapper">
<?php
include "sections/header.php";
- include "sections/top-bar.php";
include "sections/off-canvas.php";
if (is_front_page()) {
include "sections/front-page.php";
if (is_page() && !is_front_page()) {
include "sections/interior-page.php";
}
+ echo '<div id="footer-page-anchor">';
include "sections/footer.php";
- include "sections/copyright.php";
+ include "sections/copyright.php";
+ echo '</div>';
?>
</div><!--/#page-wrapper-->
<a class="exit-off-canvas"></a>
</div><!--End of off-canvas-->
<?php wp_footer();?>
<script charset="utf-8" type="text/javascript">var switchTo5x=true;</script>
- <script charset="utf-8" type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
+ <script charset="utf-8" type="text/javascript" src="//ws.sharethis.com/button/buttons.js"></script>
<script charset="utf-8" type="text/javascript">stLight.options({"publisher":"wp.c3d3647e-de70-4780-b71d-6b739fad685a"});var st_type="wordpress4.3.1";</script>
</body>
</html>
\ No newline at end of file
--- /dev/null
+/*
+ * To avoid conflicts, Wordpress tends to prefer jQuery being used over $.
+ * As long as this file is included, no such conflicts should arise. Ensure it
+ * is called before other .js files using $.
+ */
+var $=jQuery.noConflict();;!function(a,b,c,d){"use strict";function e(a){return("string"==typeof a||a instanceof String)&&(a=a.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"")),a}function f(a){this.selector=a,this.query=""}var g=function(b){var c=a("head");c.prepend(a.map(b,function(a){return 0===c.has("."+a).length?'<meta class="'+a+'" />':void 0}))};g(["foundation-mq-small","foundation-mq-small-only","foundation-mq-medium","foundation-mq-medium-only","foundation-mq-large","foundation-mq-large-only","foundation-mq-xlarge","foundation-mq-xlarge-only","foundation-mq-xxlarge","foundation-data-attribute-namespace"]),a(function(){"undefined"!=typeof FastClick&&"undefined"!=typeof c.body&&FastClick.attach(c.body)});var h=function(b,d){if("string"==typeof b){if(d){var e;if(d.jquery){if(e=d[0],!e)return d}else e=d;return a(e.querySelectorAll(b))}return a(c.querySelectorAll(b))}return a(b,d)},i=function(a){var b=[];return a||b.push("data"),this.namespace.length>0&&b.push(this.namespace),b.push(this.name),b.join("-")},j=function(a){for(var b=a.split("-"),c=b.length,d=[];c--;)0!==c?d.push(b[c]):this.namespace.length>0?d.push(this.namespace,b[c]):d.push(b[c]);return d.reverse().join("-")},k=function(b,c){var d=this,e=function(){var e=h(this),f=!e.data(d.attr_name(!0)+"-init");e.data(d.attr_name(!0)+"-init",a.extend({},d.settings,c||b,d.data_options(e))),f&&d.events(this)};return h(this.scope).is("["+this.attr_name()+"]")?e.call(this.scope):h("["+this.attr_name()+"]",this.scope).each(e),"string"==typeof b?this[b].call(this,c):void 0},l=function(a,b){function c(){b(a[0])}function d(){if(this.one("load",c),/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var a=this.attr("src"),b=a.match(/\?/)?"&":"?";b+="random="+(new Date).getTime(),this.attr("src",a+b)}}return a.attr("src")?void(a[0].complete||4===a[0].readyState?c():d.call(a)):void c()};/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+b.matchMedia||(b.matchMedia=function(){var a=b.styleMedia||b.media;if(!a){var d=c.createElement("style"),e=c.getElementsByTagName("script")[0],f=null;d.type="text/css",d.id="matchmediajs-test",e.parentNode.insertBefore(d,e),f="getComputedStyle"in b&&b.getComputedStyle(d,null)||d.currentStyle,a={matchMedium:function(a){var b="@media "+a+"{ #matchmediajs-test { width: 1px; } }";return d.styleSheet?d.styleSheet.cssText=b:d.textContent=b,"1px"===f.width}}}return function(b){return{matches:a.matchMedium(b||"all"),media:b||"all"}}}()),function(a){function c(){d&&(g(c),i&&a.fx.tick())}for(var d,e=0,f=["webkit","moz"],g=b.requestAnimationFrame,h=b.cancelAnimationFrame,i="undefined"!=typeof a.fx;e<f.length&&!g;e++)g=b[f[e]+"RequestAnimationFrame"],h=h||b[f[e]+"CancelAnimationFrame"]||b[f[e]+"CancelRequestAnimationFrame"];g?(b.requestAnimationFrame=g,b.cancelAnimationFrame=h,i&&(a.fx.timer=function(b){b()&&a.timers.push(b)&&!d&&(d=!0,c())},a.fx.stop=function(){d=!1})):(b.requestAnimationFrame=function(a){var c=(new Date).getTime(),d=Math.max(0,16-(c-e)),f=b.setTimeout(function(){a(c+d)},d);return e=c+d,f},b.cancelAnimationFrame=function(a){clearTimeout(a)})}(a),f.prototype.toString=function(){return this.query||(this.query=h(this.selector).css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""))},b.Foundation={name:"Foundation",version:"5.5.3",media_queries:{small:new f(".foundation-mq-small"),"small-only":new f(".foundation-mq-small-only"),medium:new f(".foundation-mq-medium"),"medium-only":new f(".foundation-mq-medium-only"),large:new f(".foundation-mq-large"),"large-only":new f(".foundation-mq-large-only"),xlarge:new f(".foundation-mq-xlarge"),"xlarge-only":new f(".foundation-mq-xlarge-only"),xxlarge:new f(".foundation-mq-xxlarge")},stylesheet:a("<style></style>").appendTo("head")[0].sheet,global:{namespace:d},init:function(a,c,d,e,f){var g=[a,d,e,f],i=[];if(this.rtl=/rtl/i.test(h("html").attr("dir")),this.scope=a||this.scope,this.set_namespace(),c&&"string"==typeof c&&!/reflow/i.test(c))this.libs.hasOwnProperty(c)&&i.push(this.init_lib(c,g));else for(var j in this.libs)i.push(this.init_lib(j,c));return h(b).load(function(){h(b).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")}),a},init_lib:function(b,c){return this.libs.hasOwnProperty(b)?(this.patch(this.libs[b]),c&&c.hasOwnProperty(b)?("undefined"!=typeof this.libs[b].settings?a.extend(!0,this.libs[b].settings,c[b]):"undefined"!=typeof this.libs[b].defaults&&a.extend(!0,this.libs[b].defaults,c[b]),this.libs[b].init.apply(this.libs[b],[this.scope,c[b]])):(c=c instanceof Array?c:new Array(c),this.libs[b].init.apply(this.libs[b],c))):function(){}},patch:function(a){a.scope=this.scope,a.namespace=this.global.namespace,a.rtl=this.rtl,a.data_options=this.utils.data_options,a.attr_name=i,a.add_namespace=j,a.bindings=k,a.S=this.utils.S},inherit:function(a,b){for(var c=b.split(" "),d=c.length;d--;)this.utils.hasOwnProperty(c[d])&&(a[c[d]]=this.utils[c[d]])},set_namespace:function(){var b=this.global.namespace===d?a(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=b===d||/false/i.test(b)?"":b},libs:{},utils:{S:h,throttle:function(a,b){var c=null;return function(){var d=this,e=arguments;null==c&&(c=setTimeout(function(){a.apply(d,e),c=null},b))}},debounce:function(a,b,c){var d,e;return function(){var f=this,g=arguments,h=function(){d=null,c||(e=a.apply(f,g))},i=c&&!d;return clearTimeout(d),d=setTimeout(h,b),i&&(e=a.apply(f,g)),e}},data_options:function(b,c){function d(a){return!isNaN(a-0)&&null!==a&&""!==a&&a!==!1&&a!==!0}function e(b){return"string"==typeof b?a.trim(b):b}c=c||"options";var f,g,h,i={},j=function(a){var b=Foundation.global.namespace;return b.length>0?a.data(b+"-"+c):a.data(c)},k=j(b);if("object"==typeof k)return k;for(h=(k||":").split(";"),f=h.length;f--;)g=h[f].split(":"),g=[g[0],g.slice(1).join(":")],/true/i.test(g[1])&&(g[1]=!0),/false/i.test(g[1])&&(g[1]=!1),d(g[1])&&(-1===g[1].indexOf(".")?g[1]=parseInt(g[1],10):g[1]=parseFloat(g[1])),2===g.length&&g[0].length>0&&(i[e(g[0])]=e(g[1]));return i},register_media:function(b,c){Foundation.media_queries[b]===d&&(a("head").append('<meta class="'+c+'"/>'),Foundation.media_queries[b]=e(a("."+c).css("font-family")))},add_custom_rule:function(a,b){if(b===d&&Foundation.stylesheet)Foundation.stylesheet.insertRule(a,Foundation.stylesheet.cssRules.length);else{var c=Foundation.media_queries[b];c!==d&&Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[b]+"{ "+a+" }",Foundation.stylesheet.cssRules.length)}},image_loaded:function(a,b){function c(a){for(var b=a.length,c=b-1;c>=0;c--)if(a.attr("height")===d)return!1;return!0}var e=this,f=a.length;(0===f||c(a))&&b(a),a.each(function(){l(e.S(this),function(){f-=1,0===f&&b(a)})})},random_str:function(){return this.fidx||(this.fidx=0),this.prefix=this.prefix||[this.name||"F",(+new Date).toString(36)].join("-"),this.prefix+(this.fidx++).toString(36)},match:function(a){return b.matchMedia(a).matches},is_small_up:function(){return this.match(Foundation.media_queries.small)},is_medium_up:function(){return this.match(Foundation.media_queries.medium)},is_large_up:function(){return this.match(Foundation.media_queries.large)},is_xlarge_up:function(){return this.match(Foundation.media_queries.xlarge)},is_xxlarge_up:function(){return this.match(Foundation.media_queries.xxlarge)},is_small_only:function(){return!(this.is_medium_up()||this.is_large_up()||this.is_xlarge_up()||this.is_xxlarge_up())},is_medium_only:function(){return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_large_only:function(){return this.is_medium_up()&&this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xxlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&this.is_xxlarge_up()}}},a.fn.foundation=function(){var a=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(a)),this})}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.abide={name:"abide",version:"5.5.3",settings:{live_validate:!0,validate_on_blur:!0,focus_on_invalid:!0,error_labels:!0,error_class:"error",timeout:1e3,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g}}},timer:null,init:function(a,b,c){this.bindings(b,c)},events:function(b){function c(a,b){clearTimeout(d.timer),d.timer=setTimeout(function(){d.validate([a],b)}.bind(a),f.timeout)}var d=this,e=d.S(b).attr("novalidate","novalidate"),f=e.data(this.attr_name(!0)+"-init")||{};this.invalid_attr=this.add_namespace("data-invalid"),e.off(".abide").on("submit.fndtn.abide",function(a){var b=/ajax/i.test(d.S(this).attr(d.attr_name()));return d.validate(d.S(this).find("input, textarea, select").not(":hidden, [data-abide-ignore]").get(),a,b)}).on("validate.fndtn.abide",function(a){"manual"===f.validate_on&&d.validate([a.target],a)}).on("reset",function(b){return d.reset(a(this),b)}).find("input, textarea, select").not(":hidden, [data-abide-ignore]").off(".abide").on("blur.fndtn.abide change.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.validate_on_blur&&f.validate_on_blur===!0&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"change"===f.validate_on&&c(this,a)}).on("keydown.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.live_validate&&f.live_validate===!0&&9!=a.which&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"tab"===f.validate_on&&9===a.which?c(this,a):"change"===f.validate_on&&c(this,a)}).on("focus",function(b){navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)&&a("html, body").animate({scrollTop:a(b.target).offset().top},100)})},reset:function(b,c){var d=this;b.removeAttr(d.invalid_attr),a("["+d.invalid_attr+"]",b).removeAttr(d.invalid_attr),a("."+d.settings.error_class,b).not("small").removeClass(d.settings.error_class),a(":input",b).not(":button, :submit, :reset, :hidden, [data-abide-ignore]").val("").removeAttr(d.invalid_attr)},validate:function(a,b,c){for(var d=this.parse_patterns(a),e=d.length,f=this.S(a[0]).closest("form"),g=/submit/.test(b.type),h=0;e>h;h++)if(!d[h]&&(g||c))return this.settings.focus_on_invalid&&a[h].focus(),f.trigger("invalid.fndtn.abide"),this.S(a[h]).closest("form").attr(this.invalid_attr,""),!1;return(g||c)&&f.trigger("valid.fndtn.abide"),f.removeAttr(this.invalid_attr),c?!1:!0},parse_patterns:function(a){for(var b=a.length,c=[];b--;)c.push(this.pattern(a[b]));return this.check_validation_and_apply_styles(c)},pattern:function(a){var b=a.getAttribute("type"),c="string"==typeof a.getAttribute("required"),d=a.getAttribute("pattern")||"";return this.settings.patterns.hasOwnProperty(d)&&d.length>0?[a,this.settings.patterns[d],c]:d.length>0?[a,new RegExp(d),c]:this.settings.patterns.hasOwnProperty(b)?[a,this.settings.patterns[b],c]:(d=/.*/,[a,d,c])},check_validation_and_apply_styles:function(b){var c=b.length,d=[];if(0==c)return d;var e=this.S(b[0][0]).closest("[data-"+this.attr_name(!0)+"]");for(e.data(this.attr_name(!0)+"-init")||{};c--;){var f,g,h=b[c][0],i=b[c][2],j=h.value.trim(),k=this.S(h).parent(),l=h.getAttribute(this.add_namespace("data-abide-validator")),m="radio"===h.type,n="checkbox"===h.type,o=this.S('label[for="'+h.getAttribute("id")+'"]'),p=i?h.value.length>0:!0,q=[];if(h.getAttribute(this.add_namespace("data-equalto"))&&(l="equalTo"),f=k.is("label")?k.parent():k,m&&i)q.push(this.valid_radio(h,i));else if(n&&i)q.push(this.valid_checkbox(h,i));else if(l){for(var r=l.split(" "),s=!0,t=!0,u=0;u<r.length;u++)g=this.settings.validators[r[u]].apply(this,[h,i,f]),q.push(g),t=g&&s,s=g;t?(this.S(h).removeAttr(this.invalid_attr),f.removeClass("error"),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid")):(this.S(h).attr(this.invalid_attr,""),f.addClass("error"),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid"))}else if(b[c][1].test(j)&&p||!i&&h.value.length<1||a(h).attr("disabled")?q.push(!0):q.push(!1),q=[q.every(function(a){return a})],q[0])this.S(h).removeAttr(this.invalid_attr),h.setAttribute("aria-invalid","false"),h.removeAttribute("aria-describedby"),f.removeClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid");else{this.S(h).attr(this.invalid_attr,""),h.setAttribute("aria-invalid","true");var v=f.find("small."+this.settings.error_class,"span."+this.settings.error_class),w=v.length>0?v[0].id:"";w.length>0&&h.setAttribute("aria-describedby",w),f.addClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid")}d=d.concat(q)}return d},valid_checkbox:function(b,c){var b=this.S(b),d=b.is(":checked")||!c||b.get(0).getAttribute("disabled");return d?(b.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(b).triggerHandler("valid")):(b.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(b).triggerHandler("invalid")),d},valid_radio:function(b,c){for(var d=b.getAttribute("name"),e=this.S(b).closest("[data-"+this.attr_name(!0)+"]").find("[name='"+d+"']"),f=e.length,g=!1,h=!1,i=0;f>i;i++)e[i].getAttribute("disabled")?(h=!0,g=!0):e[i].checked?g=!0:h&&(g=!1);for(var i=0;f>i;i++)g?(this.S(e[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(e[i]).triggerHandler("valid")):(this.S(e[i]).attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(e[i]).triggerHandler("invalid"));return g},valid_equal:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g?(this.S(a).removeAttr(this.invalid_attr),d.removeClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.removeClass(this.settings.error_class)):(this.S(a).attr(this.invalid_attr,""),d.addClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.addClass(this.settings.error_class)),g},valid_oneof:function(a,b,c,d){var a=this.S(a),e=this.S("["+this.add_namespace("data-oneof")+"]"),f=e.filter(":checked").length>0;if(f?a.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):a.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),!d){var g=this;e.each(function(){g.valid_oneof.call(g,this,null,null,!0)})}return f},reflow:function(a,b){var c=this,d=c.S("["+this.attr_name()+"]").attr("novalidate","novalidate");c.S(d).each(function(a,b){c.events(b)})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.accordion={name:"accordion",version:"5.5.3",settings:{content_class:"content",active_class:"active",multi_expand:!1,toggleable:!0,callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(b){var c=this,d=this.S;c.create(this.S(b)),d(this.scope).off(".fndtn.accordion").on("click.fndtn.accordion","["+this.attr_name()+"] > dd > a, ["+this.attr_name()+"] > li > a",function(b){var e=d(this).closest("["+c.attr_name()+"]"),f=c.attr_name()+"="+e.attr(c.attr_name()),g=e.data(c.attr_name(!0)+"-init")||c.settings,h=d("#"+this.href.split("#")[1]),i=a("> dd, > li",e),j=i.children("."+g.content_class),k=j.filter("."+g.active_class);return b.preventDefault(),e.attr(c.attr_name())&&(j=j.add("["+f+"] dd > ."+g.content_class+", ["+f+"] li > ."+g.content_class),i=i.add("["+f+"] dd, ["+f+"] li")),g.toggleable&&h.is(k)?(h.parent("dd, li").toggleClass(g.active_class,!1),h.toggleClass(g.active_class,!1),d(this).attr("aria-expanded",function(a,b){return"true"===b?"false":"true"}),g.callback(h),h.triggerHandler("toggled",[e]),void e.triggerHandler("toggled",[h])):(g.multi_expand||(j.removeClass(g.active_class),i.removeClass(g.active_class),i.children("a").attr("aria-expanded","false")),h.addClass(g.active_class).parent().addClass(g.active_class),g.callback(h),h.triggerHandler("toggled",[e]),e.triggerHandler("toggled",[h]),void d(this).attr("aria-expanded","true"))})},create:function(b){var c=this,d=b,e=a("> .accordion-navigation",d),f=d.data(c.attr_name(!0)+"-init")||c.settings;e.children("a").attr("aria-expanded","false"),e.has("."+f.content_class+"."+f.active_class).addClass(f.active_class).children("a").attr("aria-expanded","true"),f.multi_expand&&b.attr("aria-multiselectable","true")},toggle:function(a){var a="undefined"!=typeof a?a:{},c="undefined"!=typeof a.selector?a.selector:"",d="undefined"!=typeof a.toggle_state?a.toggle_state:"",e="undefined"!=typeof a.$accordion?a.$accordion:this.S(this.scope).closest("["+this.attr_name()+"]"),f=e.find("> dd"+c+", > li"+c);if(f.length<1)return b.console&&console.error("Selection not found.",c),!1;var g=this.S,h=this.settings.active_class;f.each(function(){var a=g(this),b=a.hasClass(h);(b&&"close"===d||!b&&"open"===d||""===d)&&a.find("> a").trigger("click.fndtn.accordion")})},open:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="open",this.toggle(a)},close:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="close",this.toggle(a)},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.alert={name:"alert",version:"5.5.3",settings:{callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=this.S;a(this.scope).off(".alert").on("click.fndtn.alert","["+this.attr_name()+"] .close",function(a){var d=c(this).closest("["+b.attr_name()+"]"),e=d.data(b.attr_name(!0)+"-init")||b.settings;a.preventDefault(),Modernizr.csstransitions?(d.addClass("alert-close"),d.on("transitionend webkitTransitionEnd oTransitionEnd",function(a){c(this).trigger("close.fndtn.alert").remove(),e.callback()})):d.fadeOut(300,function(){c(this).trigger("close.fndtn.alert").remove(),e.callback()})})},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.clearing={name:"clearing",version:"5.5.3",settings:{templates:{viewing:'<a href="#" class="clearing-close">×</a><div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a><a href="#" class="clearing-main-next"><span></span></a></div><img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'},close_selectors:".clearing-close, div.clearing-blackout",open_selectors:"",skip_selector:"",touch_label:"",init:!1,locked:!1},init:function(a,b,c){var d=this;Foundation.inherit(this,"throttle image_loaded"),this.bindings(b,c),d.S(this.scope).is("["+this.attr_name()+"]")?this.assemble(d.S("li",this.scope)):d.S("["+this.attr_name()+"]",this.scope).each(function(){d.assemble(d.S("li",this))})},events:function(d){var e=this,f=e.S,g=a(".scroll-container");g.length>0&&(this.scope=g),f(this.scope).off(".clearing").on("click.fndtn.clearing","ul["+this.attr_name()+"] li "+this.settings.open_selectors,function(a,b,c){var b=b||f(this),c=c||b,d=b.next("li"),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init"),h=f(a.target);a.preventDefault(),g||(e.init(),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init")),c.hasClass("visible")&&b[0]===c[0]&&d.length>0&&e.is_open(b)&&(c=d,h=f("img",c)),e.open(h,b,c),e.update_paddles(c)}).on("click.fndtn.clearing",".clearing-main-next",function(a){e.nav(a,"next")}).on("click.fndtn.clearing",".clearing-main-prev",function(a){e.nav(a,"prev")}).on("click.fndtn.clearing",this.settings.close_selectors,function(a){Foundation.libs.clearing.close(a,this)}),a(c).on("keydown.fndtn.clearing",function(a){e.keydown(a)}),f(b).off(".clearing").on("resize.fndtn.clearing",function(){e.resize()}),this.swipe_events(d)},swipe_events:function(a){var b=this,c=b.S;c(this.scope).on("touchstart.fndtn.clearing",".visible-img",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};c(this).data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.clearing",".visible-img",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var d=c(this).data("swipe-transition");if("undefined"==typeof d&&(d={}),d.delta_x=a.touches[0].pageX-d.start_page_x,Foundation.rtl&&(d.delta_x=-d.delta_x),"undefined"==typeof d.is_scrolling&&(d.is_scrolling=!!(d.is_scrolling||Math.abs(d.delta_x)<Math.abs(a.touches[0].pageY-d.start_page_y))),!d.is_scrolling&&!d.active){a.preventDefault();var e=d.delta_x<0?"next":"prev";d.active=!0,b.nav(a,e)}}}).on("touchend.fndtn.clearing",".visible-img",function(a){c(this).data("swipe-transition",{}),a.stopPropagation()})},assemble:function(b){var c=b.parent();if(!c.parent().hasClass("carousel")){c.after('<div id="foundationClearingHolder"></div>');var d=c.detach(),e="";if(null!=d[0]){e=d[0].outerHTML;var f=this.S("#foundationClearingHolder"),g=c.data(this.attr_name(!0)+"-init"),h={grid:'<div class="carousel">'+e+"</div>",viewing:g.templates.viewing},i='<div class="clearing-assembled"><div>'+h.viewing+h.grid+"</div></div>",j=this.settings.touch_label;Modernizr.touch&&(i=a(i).find(".clearing-touch-label").html(j).end()),f.after(i).remove()}}},open:function(b,d,e){function f(){setTimeout(function(){this.image_loaded(m,function(){1!==m.outerWidth()||o?g.call(this,m):f.call(this)}.bind(this))}.bind(this),100)}function g(b){var c=a(b);c.css("visibility","visible"),c.trigger("imageVisible"),i.css("overflow","hidden"),j.addClass("clearing-blackout"),k.addClass("clearing-container"),l.show(),this.fix_height(e).caption(h.S(".clearing-caption",l),h.S("img",e)).center_and_label(b,n).shift(d,e,function(){e.closest("li").siblings().removeClass("visible"),e.closest("li").addClass("visible")}),l.trigger("opened.fndtn.clearing")}var h=this,i=a(c.body),j=e.closest(".clearing-assembled"),k=h.S("div",j).first(),l=h.S(".visible-img",k),m=h.S("img",l).not(b),n=h.S(".clearing-touch-label",k),o=!1,p={};a("body").on("touchmove",function(a){a.preventDefault()}),m.error(function(){o=!0}),this.locked()||(l.trigger("open.fndtn.clearing"),p=this.load(b),p.interchange?m.attr("data-interchange",p.interchange).foundation("interchange","reflow"):m.attr("src",p.src).attr("data-interchange",""),m.css("visibility","hidden"),f.call(this))},close:function(b,d){b.preventDefault();var e,f,g=function(a){return/blackout/.test(a.selector)?a:a.closest(".clearing-blackout")}(a(d)),h=a(c.body);return d===b.target&&g&&(h.css("overflow",""),e=a("div",g).first(),f=a(".visible-img",e),f.trigger("close.fndtn.clearing"),this.settings.prev_index=0,a("ul["+this.attr_name()+"]",g).attr("style","").closest(".clearing-blackout").removeClass("clearing-blackout"),e.removeClass("clearing-container"),f.hide(),f.trigger("closed.fndtn.clearing")),a("body").off("touchmove"),!1},is_open:function(a){return a.parent().prop("style").length>0},keydown:function(b){var c=a(".clearing-blackout ul["+this.attr_name()+"]"),d=this.rtl?37:39,e=this.rtl?39:37,f=27;b.which===d&&this.go(c,"next"),b.which===e&&this.go(c,"prev"),b.which===f&&this.S("a.clearing-close").trigger("click.fndtn.clearing")},nav:function(b,c){var d=a("ul["+this.attr_name()+"]",".clearing-blackout");b.preventDefault(),this.go(d,c)},resize:function(){var b=a("img",".clearing-blackout .visible-img"),c=a(".clearing-touch-label",".clearing-blackout");b.length&&(this.center_and_label(b,c),b.trigger("resized.fndtn.clearing"))},fix_height:function(a){var b=a.parent().children(),c=this;return b.each(function(){var a=c.S(this),b=a.find("img");a.height()>b.outerHeight()&&a.addClass("fix-height")}).closest("ul").width(100*b.length+"%"),this},update_paddles:function(a){a=a.closest("li");var b=a.closest(".carousel").siblings(".visible-img");a.next().length>0?this.S(".clearing-main-next",b).removeClass("disabled"):this.S(".clearing-main-next",b).addClass("disabled"),a.prev().length>0?this.S(".clearing-main-prev",b).removeClass("disabled"):this.S(".clearing-main-prev",b).addClass("disabled")},center_and_label:function(a,b){return!this.rtl&&b.length>0?b.css({marginLeft:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10}):b.css({marginRight:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10,left:"auto",right:"50%"}),this},load:function(a){var b,c,d;return"A"===a[0].nodeName?(b=a.attr("href"),c=a.data("clearing-interchange")):(d=a.closest("a"),b=d.attr("href"),c=d.data("clearing-interchange")),this.preload(a),{src:b?b:a.attr("src"),interchange:b?c:a.data("clearing-interchange")}},preload:function(a){this.img(a.closest("li").next(),"next").img(a.closest("li").prev(),"prev")},img:function(b,c){if(b.length){var d,e,f,g=a(".clearing-preload-"+c),h=this.S("a",b);h.length?(d=h.attr("href"),e=h.data("clearing-interchange")):(f=this.S("img",b),d=f.attr("src"),e=f.data("clearing-interchange")),e?g.attr("data-interchange",e):(g.attr("src",d),g.attr("data-interchange",""))}return this},caption:function(a,b){var c=b.attr("data-caption");if(c){var d=a.get(0);d.innerHTML=c,a.show()}else a.text("").hide();return this},go:function(a,b){var c=this.S(".visible",a),d=c[b]();this.settings.skip_selector&&0!=d.find(this.settings.skip_selector).length&&(d=d[b]()),d.length&&this.S("img",d).trigger("click.fndtn.clearing",[c,d]).trigger("change.fndtn.clearing")},shift:function(a,b,c){var d,e=b.parent(),f=this.settings.prev_index||b.index(),g=this.direction(e,a,b),h=this.rtl?"right":"left",i=parseInt(e.css("left"),10),j=b.outerWidth(),k={};b.index()===f||/skip/.test(g)?/skip/.test(g)&&(d=b.index()-this.settings.up_count,this.lock(),d>0?(k[h]=-(d*j),e.animate(k,300,this.unlock())):(k[h]=0,e.animate(k,300,this.unlock()))):/left/.test(g)?(this.lock(),k[h]=i+j,e.animate(k,300,this.unlock())):/right/.test(g)&&(this.lock(),k[h]=i-j,e.animate(k,300,this.unlock())),c()},direction:function(a,b,c){var d,e=this.S("li",a),f=e.outerWidth()+e.outerWidth()/4,g=Math.floor(this.S(".clearing-container").outerWidth()/f)-1,h=e.index(c);return this.settings.up_count=g,d=this.adjacent(this.settings.prev_index,h)?h>g&&h>this.settings.prev_index?"right":h>g-1&&h<=this.settings.prev_index?"left":!1:"skip",this.settings.prev_index=h,d},adjacent:function(a,b){for(var c=b+1;c>=b-1;c--)if(c===a)return!0;return!1},lock:function(){this.settings.locked=!0},unlock:function(){this.settings.locked=!1},locked:function(){return this.settings.locked},off:function(){this.S(this.scope).off(".fndtn.clearing"),this.S(b).off(".fndtn.clearing")},reflow:function(){this.init()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.dropdown={name:"dropdown",version:"5.5.3",settings:{active_class:"open",disabled_class:"disabled",mega_class:"mega",align:"bottom",is_hover:!1,hover_timeout:150,opened:function(){},closed:function(){}},init:function(b,c,d){Foundation.inherit(this,"throttle"),a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(d){var e=this,f=e.S;f(this.scope).off(".dropdown").on("click.fndtn.dropdown","["+this.attr_name()+"]",function(b){var c=f(this).data(e.attr_name(!0)+"-init")||e.settings;(!c.is_hover||Modernizr.touch)&&(b.preventDefault(),f(this).parent("[data-reveal-id]").length&&b.stopPropagation(),e.toggle(a(this)))}).on("mouseenter.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c,d=f(this);clearTimeout(e.timeout),d.data(e.data_attr())?(b=f("#"+d.data(e.data_attr())),c=d):(b=d,c=f("["+e.attr_name()+'="'+b.attr("id")+'"]'));var g=c.data(e.attr_name(!0)+"-init")||e.settings;f(a.currentTarget).data(e.data_attr())&&g.is_hover&&e.closeall.call(e),g.is_hover&&e.open.apply(e,[b,c])}).on("mouseleave.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c=f(this);if(c.data(e.data_attr()))b=c.data(e.data_attr(!0)+"-init")||e.settings;else var d=f("["+e.attr_name()+'="'+f(this).attr("id")+'"]'),b=d.data(e.attr_name(!0)+"-init")||e.settings;e.timeout=setTimeout(function(){c.data(e.data_attr())?b.is_hover&&e.close.call(e,f("#"+c.data(e.data_attr()))):b.is_hover&&e.close.call(e,c)}.bind(this),b.hover_timeout)}).on("click.fndtn.dropdown",function(b){var d=f(b.target).closest("["+e.attr_name()+"-content]"),g=d.find("a");return g.length>0&&"false"!==d.attr("aria-autoclose")&&e.close.call(e,f("["+e.attr_name()+"-content]")),b.target!==c&&!a.contains(c.documentElement,b.target)||f(b.target).closest("["+e.attr_name()+"]").length>0?void 0:!f(b.target).data("revealId")&&d.length>0&&(f(b.target).is("["+e.attr_name()+"-content]")||a.contains(d.first()[0],b.target))?void b.stopPropagation():void e.close.call(e,f("["+e.attr_name()+"-content]"))}).on("opened.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.opened.call(this)}).on("closed.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.closed.call(this)}),f(b).off(".dropdown").on("resize.fndtn.dropdown",e.throttle(function(){e.resize.call(e)},50)),this.resize()},close:function(b){var c=this;b.each(function(d){var e=a("["+c.attr_name()+"="+b[d].id+"]")||a("aria-controls="+b[d].id+"]");e.attr("aria-expanded","false"),c.S(this).hasClass(c.settings.active_class)&&(c.S(this).css(Foundation.rtl?"right":"left","-99999px").attr("aria-hidden","true").removeClass(c.settings.active_class).prev("["+c.attr_name()+"]").removeClass(c.settings.active_class).removeData("target"),c.S(this).trigger("closed.fndtn.dropdown",[b]))}),b.removeClass("f-open-"+this.attr_name(!0))},closeall:function(){var b=this;a.each(b.S(".f-open-"+this.attr_name(!0)),function(){b.close.call(b,b.S(this))})},open:function(a,b){this.css(a.addClass(this.settings.active_class),b),a.prev("["+this.attr_name()+"]").addClass(this.settings.active_class),a.data("target",b.get(0)).trigger("opened.fndtn.dropdown",[a,b]),a.attr("aria-hidden","false"),b.attr("aria-expanded","true"),a.focus(),a.addClass("f-open-"+this.attr_name(!0))},data_attr:function(){return this.namespace.length>0?this.namespace+"-"+this.name:this.name},toggle:function(a){if(!a.hasClass(this.settings.disabled_class)){var b=this.S("#"+a.data(this.data_attr()));0!==b.length&&(this.close.call(this,this.S("["+this.attr_name()+"-content]").not(b)),b.hasClass(this.settings.active_class)?(this.close.call(this,b),b.data("target")!==a.get(0)&&this.open.call(this,b,a)):this.open.call(this,b,a))}},resize:function(){var b=this.S("["+this.attr_name()+"-content].open"),c=a(b.data("target"));b.length&&c.length&&this.css(b,c)},css:function(a,b){var c=Math.max((b.width()-a.width())/2,8),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=a.parent().css("overflow-y")||a.parent().css("overflow");if(this.clear_idx(),this.small()){var f=this.dirs.bottom.call(a,b,d);a.attr("style","").removeClass("drop-left drop-right drop-top").css({position:"absolute",width:"95%","max-width":"none",top:f.top}),a.css(Foundation.rtl?"right":"left",c)}else if("visible"!==e){var g=b[0].offsetTop+b[0].offsetHeight;a.attr("style","").css({position:"absolute",top:g}),a.css(Foundation.rtl?"right":"left",c)}else this.style(a,b,d);return a},style:function(b,c,d){var e=a.extend({position:"absolute"},this.dirs[d.align].call(b,c,d));b.attr("style","").css(e)},dirs:{_base:function(a,d){var e=this.offsetParent(),f=e.offset(),g=a.offset();g.top-=f.top,g.left-=f.left,g.missRight=!1,g.missTop=!1,g.missLeft=!1,g.leftRightFlag=!1;var h,i=b.innerWidth;h=c.getElementsByClassName("row")[0]?c.getElementsByClassName("row")[0].clientWidth:i;var j=(i-h)/2,k=h;if(!this.hasClass("mega")&&!d.ignore_repositioning){var l=this.outerWidth(),m=a.offset().left;a.offset().top<=this.outerHeight()&&(g.missTop=!0,k=i-j,g.leftRightFlag=!0),m+l>m+j&&m-j>l&&(g.missRight=!0,g.missLeft=!1),0>=m-l&&(g.missLeft=!0,g.missRight=!1)}return g},top:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return this.addClass("drop-top"),1==d.missTop&&(d.top=d.top+a.outerHeight()+this.outerHeight(),
+this.removeClass("drop-top")),1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),Foundation.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top-this.outerHeight()}:{left:d.left,top:d.top-this.outerHeight()}},bottom:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return 1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),c.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top+a.outerHeight()}:{left:d.left,top:d.top+a.outerHeight()}},left:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);return this.addClass("drop-left"),1==c.missLeft&&(c.left=c.left+this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-left")),{left:c.left-this.outerWidth(),top:c.top}},right:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);this.addClass("drop-right"),1==c.missRight?(c.left=c.left-this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-right")):c.triggeredRight=!0;var d=Foundation.libs.dropdown;return(a.outerWidth()<this.outerWidth()||d.small()||this.hasClass(b.mega_menu))&&d.adjust_pip(this,a,b,c),{left:c.left+a.outerWidth(),top:c.top}}},adjust_pip:function(a,b,c,d){var e=Foundation.stylesheet,f=8;a.hasClass(c.mega_class)?f=d.left+b.outerWidth()/2-8:this.small()&&(f+=d.left-8),this.rule_idx=e.cssRules.length;var g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;";1==d.missRight&&(f=a.outerWidth()-23,g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;"),1==d.triggeredRight&&(g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left:-12px;",j="left:-14px;"),e.insertRule?(e.insertRule([g,"{",i,"}"].join(" "),this.rule_idx),e.insertRule([h,"{",j,"}"].join(" "),this.rule_idx+1)):(e.addRule(g,i,this.rule_idx),e.addRule(h,j,this.rule_idx+1))},clear_idx:function(){var a=Foundation.stylesheet;"undefined"!=typeof this.rule_idx&&(a.deleteRule(this.rule_idx),a.deleteRule(this.rule_idx),delete this.rule_idx)},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},off:function(){this.S(this.scope).off(".fndtn.dropdown"),this.S("html, body").off(".fndtn.dropdown"),this.S(b).off(".fndtn.dropdown"),this.S("[data-dropdown-content]").off(".fndtn.dropdown")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.equalizer={name:"equalizer",version:"5.5.3",settings:{use_tallest:!0,before_height_change:a.noop,after_height_change:a.noop,equalize_on_stack:!1,act_on_hidden_el:!1},init:function(a,b,c){Foundation.inherit(this,"image_loaded"),this.bindings(b,c),this.reflow()},events:function(){this.S(b).off(".equalizer").on("resize.fndtn.equalizer",function(a){this.reflow()}.bind(this))},equalize:function(b){var c,d,e=!1,f=b.data("equalizer"),g=b.data(this.attr_name(!0)+"-init")||this.settings;if(c=g.act_on_hidden_el?f?b.find("["+this.attr_name()+'-watch="'+f+'"]'):b.find("["+this.attr_name()+"-watch]"):f?b.find("["+this.attr_name()+'-watch="'+f+'"]:visible'):b.find("["+this.attr_name()+"-watch]:visible"),0!==c.length&&(g.before_height_change(),b.trigger("before-height-change.fndth.equalizer"),c.height("inherit"),g.equalize_on_stack!==!1||(d=c.first().offset().top,c.each(function(){return a(this).offset().top!==d?(e=!0,!1):void 0}),!e))){var h=c.map(function(){return a(this).outerHeight(!1)}).get();if(g.use_tallest){var i=Math.max.apply(null,h);c.css("height",i)}else{var j=Math.min.apply(null,h);c.css("height",j)}g.after_height_change(),b.trigger("after-height-change.fndtn.equalizer")}},reflow:function(){var b=this;this.S("["+this.attr_name()+"]",this.scope).each(function(){var c=a(this),d=c.data("equalizer-mq"),e=!0;d&&(d="is_"+d.replace(/-/g,"_"),Foundation.utils.hasOwnProperty(d)&&(e=!1)),b.image_loaded(b.S("img",this),function(){if(e||Foundation.utils[d]())b.equalize(c);else{var a=c.find("["+b.attr_name()+"-watch]:visible");a.css("height","auto")}})})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.interchange={name:"interchange",version:"5.5.3",cache:{},images_loaded:!1,nodes_loaded:!1,settings:{load_attr:"interchange",named_queries:{"default":"only screen",small:Foundation.media_queries.small,"small-only":Foundation.media_queries["small-only"],medium:Foundation.media_queries.medium,"medium-only":Foundation.media_queries["medium-only"],large:Foundation.media_queries.large,"large-only":Foundation.media_queries["large-only"],xlarge:Foundation.media_queries.xlarge,"xlarge-only":Foundation.media_queries["xlarge-only"],xxlarge:Foundation.media_queries.xxlarge,landscape:"only screen and (orientation: landscape)",portrait:"only screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx)"},directives:{replace:function(b,c,d){if(null!==b&&/IMG/.test(b[0].nodeName)){var e=a.each(b,function(){this.src=c});if(new RegExp(c,"i").test(e))return;return b.attr("src",c),d(b[0].src)}var f=b.data(this.data_attr+"-last-path"),g=this;if(f!=c)return/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(c)?(a(b).css("background-image","url("+c+")"),b.data("interchange-last-path",c),d(c)):a.get(c,function(a){b.html(a),b.data(g.data_attr+"-last-path",c),d()})}}},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.data_attr=this.set_data_attr(),a.extend(!0,this.settings,c,d),this.bindings(c,d),this.reflow()},get_media_hash:function(){var a="";for(var b in this.settings.named_queries)a+=matchMedia(this.settings.named_queries[b]).matches.toString();return a},events:function(){var c,d=this;return a(b).off(".interchange").on("resize.fndtn.interchange",d.throttle(function(){var a=d.get_media_hash();a!==c&&d.resize(),c=a},50)),this},resize:function(){var b=this.cache;if(!this.images_loaded||!this.nodes_loaded)return void setTimeout(a.proxy(this.resize,this),50);for(var c in b)if(b.hasOwnProperty(c)){var d=this.results(c,b[c]);d&&this.settings.directives[d.scenario[1]].call(this,d.el,d.scenario[0],function(a){if(arguments[0]instanceof Array)var b=arguments[0];else var b=Array.prototype.slice.call(arguments,0);return function(){a.el.trigger(a.scenario[1],b)}}(d))}},results:function(a,b){var c=b.length;if(c>0)for(var d=this.S("["+this.add_namespace("data-uuid")+'="'+a+'"]');c--;){var e,f=b[c][2];if(e=this.settings.named_queries.hasOwnProperty(f)?matchMedia(this.settings.named_queries[f]):matchMedia(f),e.matches)return{el:d,scenario:b[c]}}return!1},load:function(a,b){return("undefined"==typeof this["cached_"+a]||b)&&this["update_"+a](),this["cached_"+a]},update_images:function(){var a=this.S("img["+this.data_attr+"]"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cache={},this.cached_images=[],this.images_loaded=0===b;c--;){if(d++,a[c]){var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_images.push(a[c])}d===b&&(this.images_loaded=!0,this.enhance("images"))}return this},update_nodes:function(){var a=this.S("["+this.data_attr+"]").not("img"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cached_nodes=[],this.nodes_loaded=0===b;c--;){d++;var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_nodes.push(a[c]),d===b&&(this.nodes_loaded=!0,this.enhance("nodes"))}return this},enhance:function(c){for(var d=this["cached_"+c].length;d--;)this.object(a(this["cached_"+c][d]));return a(b).trigger("resize.fndtn.interchange")},convert_directive:function(a){var b=this.trim(a);return b.length>0?b:"replace"},parse_scenario:function(a){var b=a[0].match(/(.+),\s*(\w+)\s*$/),c=a[1].match(/(.*)\)/);if(b)var d=b[1],e=b[2];else var f=a[0].split(/,\s*$/),d=f[0],e="";return[this.trim(d),this.convert_directive(e),this.trim(c[1])]},object:function(a){var b=this.parse_data_attr(a),c=[],d=b.length;if(d>0)for(;d--;){var e=b[d].split(/,\s?\(/);if(e.length>1){var f=this.parse_scenario(e);c.push(f)}}return this.store(a,c)},store:function(a,b){var c=this.random_str(),d=a.data(this.add_namespace("uuid",!0));return this.cache[d]?this.cache[d]:(a.attr(this.add_namespace("data-uuid"),c),this.cache[c]=b)},trim:function(b){return"string"==typeof b?a.trim(b):b},set_data_attr:function(a){return a?this.namespace.length>0?this.namespace+"-"+this.settings.load_attr:this.settings.load_attr:this.namespace.length>0?"data-"+this.namespace+"-"+this.settings.load_attr:"data-"+this.settings.load_attr},parse_data_attr:function(a){for(var b=a.attr(this.attr_name()).split(/\[(.*?)\]/),c=b.length,d=[];c--;)b[c].replace(/[\W\d]+/,"").length>4&&d.push(b[c]);return d},reflow:function(){this.load("images",!0),this.load("nodes",!0)}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.joyride={name:"joyride",version:"5.5.3",defaults:{expose:!1,modal:!0,keyboard:!0,tip_location:"bottom",nub_position:"auto",scroll_speed:1500,scroll_animation:"linear",timer:0,start_timer_on_click:!0,start_offset:0,next_button:!0,prev_button:!0,tip_animation:"fade",pause_after:[],exposed:[],tip_animation_fade_speed:300,cookie_monster:!1,cookie_name:"joyride",cookie_domain:!1,cookie_expires:365,tip_container:"body",abort_on_close:!0,tip_location_patterns:{top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},post_ride_callback:function(){},post_step_callback:function(){},pre_step_callback:function(){},pre_ride_callback:function(){},post_expose_callback:function(){},template:{link:'<a href="#close" class="joyride-close-tip">×</a>',timer:'<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',tip:'<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',wrapper:'<div class="joyride-content-wrapper"></div>',button:'<a href="#" class="small button joyride-next-tip"></a>',prev_button:'<a href="#" class="small button joyride-prev-tip"></a>',modal:'<div class="joyride-modal-bg"></div>',expose:'<div class="joyride-expose-wrapper"></div>',expose_cover:'<div class="joyride-expose-cover"></div>'},expose_add_class:""},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.settings=this.settings||a.extend({},this.defaults,d||c),this.bindings(c,d)},go_next:function(){this.settings.$li.next().length<1?this.end():this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(),this.startTimer()):(this.hide(),this.show())},go_prev:function(){this.settings.$li.prev().length<1||(this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(null,!0),this.startTimer()):(this.hide(),this.show(null,!0)))},events:function(){var c=this;a(this.scope).off(".joyride").on("click.fndtn.joyride",".joyride-next-tip, .joyride-modal-bg",function(a){a.preventDefault(),this.go_next()}.bind(this)).on("click.fndtn.joyride",".joyride-prev-tip",function(a){a.preventDefault(),this.go_prev()}.bind(this)).on("click.fndtn.joyride",".joyride-close-tip",function(a){a.preventDefault(),this.end(this.settings.abort_on_close)}.bind(this)).on("keyup.fndtn.joyride",function(a){if(this.settings.keyboard&&this.settings.riding)switch(a.which){case 39:a.preventDefault(),this.go_next();break;case 37:a.preventDefault(),this.go_prev();break;case 27:a.preventDefault(),this.end(this.settings.abort_on_close)}}.bind(this)),a(b).off(".joyride").on("resize.fndtn.joyride",c.throttle(function(){if(a("["+c.attr_name()+"]").length>0&&c.settings.$next_tip&&c.settings.riding){if(c.settings.exposed.length>0){var b=a(c.settings.exposed);b.each(function(){var b=a(this);c.un_expose(b),c.expose(b)})}c.is_phone()?c.pos_phone():c.pos_default(!1)}},100))},start:function(){var b=this,c=a("["+this.attr_name()+"]",this.scope),d=["timer","scrollSpeed","startOffset","tipAnimationFadeSpeed","cookieExpires"],e=d.length;!c.length>0||(this.settings.init||this.events(),this.settings=c.data(this.attr_name(!0)+"-init"),this.settings.$content_el=c,this.settings.$body=a(this.settings.tip_container),this.settings.body_offset=a(this.settings.tip_container).position(),this.settings.$tip_content=this.settings.$content_el.find("> li"),this.settings.paused=!1,this.settings.attempts=0,this.settings.riding=!0,"function"!=typeof a.cookie&&(this.settings.cookie_monster=!1),(!this.settings.cookie_monster||this.settings.cookie_monster&&!a.cookie(this.settings.cookie_name))&&(this.settings.$tip_content.each(function(c){var f=a(this);this.settings=a.extend({},b.defaults,b.data_options(f));for(var g=e;g--;)b.settings[d[g]]=parseInt(b.settings[d[g]],10);b.create({$li:f,index:c})}),!this.settings.start_timer_on_click&&this.settings.timer>0?(this.show("init"),this.startTimer()):this.show("init")))},resume:function(){this.set_li(),this.show()},tip_template:function(b){var c,d;return b.tip_class=b.tip_class||"",c=a(this.settings.template.tip).addClass(b.tip_class),d=a.trim(a(b.li).html())+this.prev_button_text(b.prev_button_text,b.index)+this.button_text(b.button_text)+this.settings.template.link+this.timer_instance(b.index),c.append(a(this.settings.template.wrapper)),c.first().attr(this.add_namespace("data-index"),b.index),a(".joyride-content-wrapper",c).append(d),c[0]},timer_instance:function(b){var c;return c=0===b&&this.settings.start_timer_on_click&&this.settings.timer>0||0===this.settings.timer?"":a(this.settings.template.timer)[0].outerHTML},button_text:function(b){return this.settings.tip_settings.next_button?(b=a.trim(b)||"Next",b=a(this.settings.template.button).append(b)[0].outerHTML):b="",b},prev_button_text:function(b,c){return this.settings.tip_settings.prev_button?(b=a.trim(b)||"Previous",b=0==c?a(this.settings.template.prev_button).append(b).addClass("disabled")[0].outerHTML:a(this.settings.template.prev_button).append(b)[0].outerHTML):b="",b},create:function(b){this.settings.tip_settings=a.extend({},this.settings,this.data_options(b.$li));var c=b.$li.attr(this.add_namespace("data-button"))||b.$li.attr(this.add_namespace("data-text")),d=b.$li.attr(this.add_namespace("data-button-prev"))||b.$li.attr(this.add_namespace("data-prev-text")),e=b.$li.attr("class"),f=a(this.tip_template({tip_class:e,index:b.index,button_text:c,prev_button_text:d,li:b.$li}));a(this.settings.tip_container).append(f)},show:function(b,c){var e=null;if(this.settings.$li===d||-1===a.inArray(this.settings.$li.index(),this.settings.pause_after))if(this.settings.paused?this.settings.paused=!1:this.set_li(b,c),this.settings.attempts=0,this.settings.$li.length&&this.settings.$target.length>0){if(b&&(this.settings.pre_ride_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.show_modal()),this.settings.pre_step_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.settings.expose&&this.expose(),this.settings.tip_settings=a.extend({},this.settings,this.data_options(this.settings.$li)),this.settings.timer=parseInt(this.settings.timer,10),this.settings.tip_settings.tip_location_pattern=this.settings.tip_location_patterns[this.settings.tip_settings.tip_location],!/body/i.test(this.settings.$target.selector)&&!this.settings.expose){var f=a(".joyride-modal-bg");/pop/i.test(this.settings.tipAnimation)?f.hide():f.fadeOut(this.settings.tipAnimationFadeSpeed),this.scroll_to()}this.is_phone()?this.pos_phone(!0):this.pos_default(!0),e=this.settings.$next_tip.find(".joyride-timer-indicator"),/pop/i.test(this.settings.tip_animation)?(e.width(0),this.settings.timer>0?(this.settings.$next_tip.show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.show()):/fade/i.test(this.settings.tip_animation)&&(e.width(0),this.settings.timer>0?(this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed).show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed)),this.settings.$current_tip=this.settings.$next_tip}else this.settings.$li&&this.settings.$target.length<1?this.show(b,c):this.end();else this.settings.paused=!0},is_phone:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},hide:function(){this.settings.modal&&this.settings.expose&&this.un_expose(),this.settings.modal||a(".joyride-modal-bg").hide(),this.settings.$current_tip.css("visibility","hidden"),setTimeout(a.proxy(function(){this.hide(),this.css("visibility","visible")},this.settings.$current_tip),0),this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip)},set_li:function(a,b){a?(this.settings.$li=this.settings.$tip_content.eq(this.settings.start_offset),this.set_next_tip(),this.settings.$current_tip=this.settings.$next_tip):(b?this.settings.$li=this.settings.$li.prev():this.settings.$li=this.settings.$li.next(),this.set_next_tip()),this.set_target()},set_next_tip:function(){this.settings.$next_tip=a(".joyride-tip-guide").eq(this.settings.$li.index()),this.settings.$next_tip.data("closed","")},set_target:function(){var b=this.settings.$li.attr(this.add_namespace("data-class")),d=this.settings.$li.attr(this.add_namespace("data-id")),e=function(){return d?a(c.getElementById(d)):b?a("."+b).first():a("body")};this.settings.$target=e()},scroll_to:function(){var c,d;c=a(b).height()/2,d=Math.ceil(this.settings.$target.offset().top-c+this.settings.$next_tip.outerHeight()),0!=d&&a("html, body").stop().animate({scrollTop:d},this.settings.scroll_speed,"swing")},paused:function(){return-1===a.inArray(this.settings.$li.index()+1,this.settings.pause_after)},restart:function(){this.hide(),this.settings.$li=d,this.show("init")},pos_default:function(a){var b=this.settings.$next_tip.find(".joyride-nub"),c=Math.ceil(b.outerWidth()/2),d=Math.ceil(b.outerHeight()/2),e=a||!1;if(e&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector))this.settings.$li.length&&this.pos_modal(b);else{var f=this.settings.tip_settings.tipAdjustmentY?parseInt(this.settings.tip_settings.tipAdjustmentY):0,g=this.settings.tip_settings.tipAdjustmentX?parseInt(this.settings.tip_settings.tipAdjustmentX):0;this.bottom()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()+g}):this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"top")):this.top()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()}):this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"bottom")):this.right()?(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.outerWidth()+this.settings.$target.offset().left+c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"left")):this.left()&&(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.offset().left-this.settings.$next_tip.outerWidth()-c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"right")),!this.visible(this.corners(this.settings.$next_tip))&&this.settings.attempts<this.settings.tip_settings.tip_location_pattern.length&&(b.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),this.settings.tip_settings.tip_location=this.settings.tip_settings.tip_location_pattern[this.settings.attempts],this.settings.attempts++,this.pos_default())}e&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_phone:function(b){var c=this.settings.$next_tip.outerHeight(),d=(this.settings.$next_tip.offset(),this.settings.$target.outerHeight()),e=a(".joyride-nub",this.settings.$next_tip),f=Math.ceil(e.outerHeight()/2),g=b||!1;e.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),g&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector)?this.settings.$li.length&&this.pos_modal(e):this.top()?(this.settings.$next_tip.offset({top:this.settings.$target.offset().top-c-f}),e.addClass("bottom")):(this.settings.$next_tip.offset({top:this.settings.$target.offset().top+d+f}),e.addClass("top")),g&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_modal:function(a){this.center(),a.hide(),this.show_modal()},show_modal:function(){if(!this.settings.$next_tip.data("closed")){var b=a(".joyride-modal-bg");if(b.length<1){var b=a(this.settings.template.modal);b.appendTo("body")}/pop/i.test(this.settings.tip_animation)?b.show():b.fadeIn(this.settings.tip_animation_fade_speed)}},expose:function(){var c,d,e,f,g,h="expose-"+this.random_str(6);if(arguments.length>0&&arguments[0]instanceof a)e=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;e=this.settings.$target}return e.length<1?(b.console&&console.error("element not valid",e),!1):(c=a(this.settings.template.expose),this.settings.$body.append(c),c.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),d=a(this.settings.template.expose_cover),f={zIndex:e.css("z-index"),position:e.css("position")},g=null==e.attr("class")?"":e.attr("class"),e.css("z-index",parseInt(c.css("z-index"))+1),"static"==f.position&&e.css("position","relative"),e.data("expose-css",f),e.data("orig-class",g),e.attr("class",g+" "+this.settings.expose_add_class),d.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),this.settings.modal&&this.show_modal(),this.settings.$body.append(d),c.addClass(h),d.addClass(h),e.data("expose",h),this.settings.post_expose_callback(this.settings.$li.index(),this.settings.$next_tip,e),void this.add_exposed(e))},un_expose:function(){var c,d,e,f,g,h=!1;if(arguments.length>0&&arguments[0]instanceof a)d=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;d=this.settings.$target}return d.length<1?(b.console&&console.error("element not valid",d),!1):(c=d.data("expose"),e=a("."+c),arguments.length>1&&(h=arguments[1]),h===!0?a(".joyride-expose-wrapper,.joyride-expose-cover").remove():e.remove(),f=d.data("expose-css"),"auto"==f.zIndex?d.css("z-index",""):d.css("z-index",f.zIndex),f.position!=d.css("position")&&("static"==f.position?d.css("position",""):d.css("position",f.position)),g=d.data("orig-class"),d.attr("class",g),d.removeData("orig-classes"),d.removeData("expose"),d.removeData("expose-z-index"),void this.remove_exposed(d))},add_exposed:function(b){this.settings.exposed=this.settings.exposed||[],b instanceof a||"object"==typeof b?this.settings.exposed.push(b[0]):"string"==typeof b&&this.settings.exposed.push(b)},remove_exposed:function(b){var c,d;for(b instanceof a?c=b[0]:"string"==typeof b&&(c=b),this.settings.exposed=this.settings.exposed||[],d=this.settings.exposed.length;d--;)if(this.settings.exposed[d]==c)return void this.settings.exposed.splice(d,1)},center:function(){var c=a(b);return this.settings.$next_tip.css({top:(c.height()-this.settings.$next_tip.outerHeight())/2+c.scrollTop(),left:(c.width()-this.settings.$next_tip.outerWidth())/2+c.scrollLeft()}),!0},bottom:function(){return/bottom/i.test(this.settings.tip_settings.tip_location)},top:function(){return/top/i.test(this.settings.tip_settings.tip_location)},right:function(){return/right/i.test(this.settings.tip_settings.tip_location)},left:function(){return/left/i.test(this.settings.tip_settings.tip_location)},corners:function(c){if(0===c.length)return[!1,!1,!1,!1];var d=a(b),e=d.height()/2,f=Math.ceil(this.settings.$target.offset().top-e+this.settings.$next_tip.outerHeight()),g=d.width()+d.scrollLeft(),h=d.height()+f,i=d.height()+d.scrollTop(),j=d.scrollTop();return j>f&&(j=0>f?0:f),h>i&&(i=h),[c.offset().top<j,g<c.offset().left+c.outerWidth(),i<c.offset().top+c.outerHeight(),d.scrollLeft()>c.offset().left]},visible:function(a){for(var b=a.length;b--;)if(a[b])return!1;return!0},nub_position:function(a,b,c){"auto"===b?a.addClass(c):a.addClass(b)},startTimer:function(){this.settings.$li.length?this.settings.automate=setTimeout(function(){this.hide(),this.show(),this.startTimer()}.bind(this),this.settings.timer):clearTimeout(this.settings.automate)},end:function(b){this.settings.cookie_monster&&a.cookie(this.settings.cookie_name,"ridden",{expires:this.settings.cookie_expires,domain:this.settings.cookie_domain}),this.settings.timer>0&&clearTimeout(this.settings.automate),this.settings.modal&&this.settings.expose&&this.un_expose(),a(this.scope).off("keyup.joyride"),this.settings.$next_tip.data("closed",!0),this.settings.riding=!1,a(".joyride-modal-bg").hide(),this.settings.$current_tip.hide(),("undefined"==typeof b||b===!1)&&(this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip),this.settings.post_ride_callback(this.settings.$li.index(),this.settings.$current_tip)),a(".joyride-tip-guide").remove()},off:function(){a(this.scope).off(".joyride"),a(b).off(".joyride"),a(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),a(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(this.settings.automate)},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs["magellan-expedition"]={name:"magellan-expedition",version:"5.5.3",settings:{active_class:"active",threshold:0,destination_threshold:20,throttle_delay:30,fixed_top:0,offset_by_height:!0,duration:700,easing:"swing"},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c)},events:function(){var b=this,c=b.S,d=b.settings;b.set_expedition_position(),c(b.scope).off(".magellan").on("click.fndtn.magellan","["+b.add_namespace("data-magellan-arrival")+"] a[href*=#]",function(c){var d=this.hostname===location.hostname||!this.hostname,e=b.filterPathname(location.pathname)===b.filterPathname(this.pathname),f=this.hash.replace(/(:|\.|\/)/g,"\\$1"),g=this;if(d&&e&&f){c.preventDefault();var h=a(this).closest("["+b.attr_name()+"]"),i=h.data("magellan-expedition-init"),j=this.hash.split("#").join(""),k=a('a[name="'+j+'"]');0===k.length&&(k=a("#"+j));var l=k.offset().top-i.destination_threshold+1;i.offset_by_height&&(l-=h.outerHeight()),a("html, body").stop().animate({scrollTop:l},i.duration,i.easing,function(){history.pushState?history.pushState(null,null,g.pathname+g.search+"#"+j):location.hash=g.pathname+g.search+"#"+j})}}).on("scroll.fndtn.magellan",b.throttle(this.check_for_arrivals.bind(this),d.throttle_delay))},check_for_arrivals:function(){var a=this;a.update_arrivals(),a.update_expedition_positions()},set_expedition_position:function(){var b=this;a("["+this.attr_name()+"=fixed]",b.scope).each(function(c,d){var e,f,g=a(this),h=g.data("magellan-expedition-init"),i=g.attr("styles");g.attr("style",""),e=g.offset().top+h.threshold,f=parseInt(g.data("magellan-fixed-top")),isNaN(f)||(b.settings.fixed_top=f),g.data(b.data_attr("magellan-top-offset"),e),g.attr("style",i)})},update_expedition_positions:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"=fixed]",c.scope).each(function(){var b=a(this),e=b.data("magellan-expedition-init"),f=b.attr("style"),g=b.data("magellan-top-offset");if(d+c.settings.fixed_top>=g){var h=b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]");0===h.length&&(h=b.clone(),h.removeAttr(c.attr_name()),h.attr(c.add_namespace("data-magellan-expedition-clone"),""),b.before(h)),b.css({position:"fixed",top:e.fixed_top}).addClass("fixed")}else b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]").remove(),b.attr("style",f).css("position","").css("top","").removeClass("fixed")})},update_arrivals:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"]",c.scope).each(function(){var b=a(this),e=b.data(c.attr_name(!0)+"-init"),f=c.offsets(b,d),g=b.find("["+c.add_namespace("data-magellan-arrival")+"]"),h=!1;f.each(function(a,d){if(d.viewport_offset>=d.top_offset){var f=b.find("["+c.add_namespace("data-magellan-arrival")+"]");return f.not(d.arrival).removeClass(e.active_class),d.arrival.addClass(e.active_class),h=!0,!0}}),h||g.removeClass(e.active_class)})},offsets:function(b,c){var d=this,e=b.data(d.attr_name(!0)+"-init"),f=c;return b.find("["+d.add_namespace("data-magellan-arrival")+"]").map(function(c,g){var h=a(this).data(d.data_attr("magellan-arrival")),i=a("["+d.add_namespace("data-magellan-destination")+"="+h+"]");if(i.length>0){var j=i.offset().top-e.destination_threshold;return e.offset_by_height&&(j-=b.outerHeight()),j=Math.floor(j),{destination:i,arrival:a(this),top_offset:j,viewport_offset:f}}}).sort(function(a,b){return a.top_offset<b.top_offset?-1:a.top_offset>b.top_offset?1:0})},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){this.S(this.scope).off(".magellan"),this.S(b).off(".magellan")},filterPathname:function(a){return a=a||"",a.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},reflow:function(){var b=this;a("["+b.add_namespace("data-magellan-expedition-clone")+"]",b.scope).remove()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.offcanvas={name:"offcanvas",version:"5.5.3",settings:{open_method:"move",close_on_click:!1},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=b.S,d="",e="",f="",g="",h="";"move"===this.settings.open_method?(d="move-",e="right",f="left",g="top",h="bottom"):"overlap_single"===this.settings.open_method?(d="offcanvas-overlap-",e="right",f="left",g="top",h="bottom"):"overlap"===this.settings.open_method&&(d="offcanvas-overlap"),c(this.scope).off(".offcanvas").on("click.fndtn.offcanvas",".left-off-canvas-toggle",function(f){b.click_toggle_class(f,d+e),"overlap"!==b.settings.open_method&&c(".left-submenu").removeClass(d+e),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".left-off-canvas-menu a",function(f){var g=b.get_settings(f),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(f.preventDefault(),c(this).siblings(".left-submenu").toggleClass(d+e)):h.hasClass("back")&&(f.preventDefault(),h.parent().removeClass(d+e)):(b.hide.call(b,d+e,b.get_wrapper(f)),h.parent().removeClass(d+e)),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-toggle",function(e){b.click_toggle_class(e,d+f),"overlap"!==b.settings.open_method&&c(".right-submenu").removeClass(d+f),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-menu a",function(e){var g=b.get_settings(e),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".right-submenu").toggleClass(d+f)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+f)):(b.hide.call(b,d+f,b.get_wrapper(e)),h.parent().removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true");
+}).on("click.fndtn.offcanvas",".top-off-canvas-toggle",function(e){b.click_toggle_class(e,d+h),"overlap"!==b.settings.open_method&&c(".top-submenu").removeClass(d+h),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".top-off-canvas-menu a",function(e){var f=b.get_settings(e),g=c(this).parent();!f.close_on_click||g.hasClass("has-submenu")||g.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".top-submenu").toggleClass(d+h)):g.hasClass("back")&&(e.preventDefault(),g.parent().removeClass(d+h)):(b.hide.call(b,d+h,b.get_wrapper(e)),g.parent().removeClass(d+h)),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-toggle",function(e){b.click_toggle_class(e,d+g),"overlap"!==b.settings.open_method&&c(".bottom-submenu").removeClass(d+g),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-menu a",function(e){var f=b.get_settings(e),h=c(this).parent();!f.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".bottom-submenu").toggleClass(d+g)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+g)):(b.hide.call(b,d+g,b.get_wrapper(e)),h.parent().removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(g){b.click_remove_class(g,d+f),c(".right-submenu").removeClass(d+f),e&&(b.click_remove_class(g,d+e),c(".left-submenu").removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+f),a(".left-off-canvas-toggle").attr("aria-expanded","false"),e&&(b.click_remove_class(c,d+e),a(".right-off-canvas-toggle").attr("aria-expanded","false"))}).on("click.fndtn.offcanvas",".exit-off-canvas",function(e){b.click_remove_class(e,d+g),c(".bottom-submenu").removeClass(d+g),h&&(b.click_remove_class(e,d+h),c(".top-submenu").removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+g),a(".top-off-canvas-toggle").attr("aria-expanded","false"),h&&(b.click_remove_class(c,d+h),a(".bottom-off-canvas-toggle").attr("aria-expanded","false"))})},toggle:function(a,b){b=b||this.get_wrapper(),b.is("."+a)?this.hide(a,b):this.show(a,b)},show:function(a,b){b=b||this.get_wrapper(),b.trigger("open.fndtn.offcanvas"),b.addClass(a)},hide:function(a,b){b=b||this.get_wrapper(),b.trigger("close.fndtn.offcanvas"),b.removeClass(a)},click_toggle_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.toggle(b,c)},click_remove_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.hide(b,c)},get_settings:function(a){var b=this.S(a.target).closest("["+this.attr_name()+"]");return b.data(this.attr_name(!0)+"-init")||this.settings},get_wrapper:function(a){var b=this.S(a?a.target:this.scope).closest(".off-canvas-wrap");return 0===b.length&&(b=this.S(".off-canvas-wrap")),b},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";var e=function(){},f=function(e,f){if(e.hasClass(f.slides_container_class))return this;var j,k,l,m,n,o,p=this,q=e,r=0,s=!1;p.slides=function(){return q.children(f.slide_selector)},p.slides().first().addClass(f.active_slide_class),p.update_slide_number=function(b){f.slide_number&&(k.find("span:first").text(parseInt(b)+1),k.find("span:last").text(p.slides().length)),f.bullets&&(l.children().removeClass(f.bullets_active_class),a(l.children().get(b)).addClass(f.bullets_active_class))},p.update_active_link=function(b){var c=a('[data-orbit-link="'+p.slides().eq(b).attr("data-orbit-slide")+'"]');c.siblings().removeClass(f.bullets_active_class),c.addClass(f.bullets_active_class)},p.build_markup=function(){q.wrap('<div class="'+f.container_class+'"></div>'),j=q.parent(),q.addClass(f.slides_container_class),f.stack_on_small&&j.addClass(f.stack_on_small_class),f.navigation_arrows&&(j.append(a('<a href="#"><span></span></a>').addClass(f.prev_class)),j.append(a('<a href="#"><span></span></a>').addClass(f.next_class))),f.timer&&(m=a("<div>").addClass(f.timer_container_class),m.append("<span>"),m.append(a("<div>").addClass(f.timer_progress_class)),m.addClass(f.timer_paused_class),j.append(m)),f.slide_number&&(k=a("<div>").addClass(f.slide_number_class),k.append("<span></span> "+f.slide_number_text+" <span></span>"),j.append(k)),f.bullets&&(l=a("<ol>").addClass(f.bullets_container_class),j.append(l),l.wrap('<div class="orbit-bullets-container"></div>'),p.slides().each(function(b,c){var d=a("<li>").attr("data-orbit-slide",b).on("click",p.link_bullet);l.append(d)}))},p._goto=function(b,c){if(b===r)return!1;"object"==typeof o&&o.restart();var d=p.slides(),e="next";if(s=!0,r>b&&(e="prev"),b>=d.length){if(!f.circular)return!1;b=0}else if(0>b){if(!f.circular)return!1;b=d.length-1}var g=a(d.get(r)),h=a(d.get(b));g.css("zIndex",2),g.removeClass(f.active_slide_class),h.css("zIndex",4).addClass(f.active_slide_class),q.trigger("before-slide-change.fndtn.orbit"),f.before_slide_change(),p.update_active_link(b);var i=function(){var a=function(){r=b,s=!1,c===!0&&(o=p.create_timer(),o.start()),p.update_slide_number(r),q.trigger("after-slide-change.fndtn.orbit",[{slide_number:r,total_slides:d.length}]),f.after_slide_change(r,d.length)};q.outerHeight()!=h.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",a):a()};if(1===d.length)return i(),!1;var j=function(){"next"===e&&n.next(g,h,i),"prev"===e&&n.prev(g,h,i)};h.outerHeight()>q.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",j):j()},p.next=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r+1)},p.prev=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r-1)},p.link_custom=function(b){b.preventDefault();var c=a(this).attr("data-orbit-link");if("string"==typeof c&&""!=(c=a.trim(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index())}},p.link_bullet=function(b){var c=a(this).attr("data-orbit-slide");if("string"==typeof c&&""!=(c=a.trim(c)))if(isNaN(parseInt(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index()+1)}else p._goto(parseInt(c))},p.timer_callback=function(){p._goto(r+1,!0)},p.compute_dimensions=function(){var b=a(p.slides().get(r)),c=b.outerHeight();f.variable_height||p.slides().each(function(){a(this).outerHeight()>c&&(c=a(this).outerHeight())}),q.height(c)},p.create_timer=function(){var a=new g(j.find("."+f.timer_container_class),f,p.timer_callback);return a},p.stop_timer=function(){"object"==typeof o&&o.stop()},p.toggle_timer=function(){var a=j.find("."+f.timer_container_class);a.hasClass(f.timer_paused_class)?("undefined"==typeof o&&(o=p.create_timer()),o.start()):"object"==typeof o&&o.stop()},p.init=function(){p.build_markup(),f.timer&&(o=p.create_timer(),Foundation.utils.image_loaded(this.slides().children("img"),o.start)),n=new i(f,q),"slide"===f.animation&&(n=new h(f,q)),j.on("click","."+f.next_class,p.next),j.on("click","."+f.prev_class,p.prev),f.next_on_click&&j.on("click","."+f.slides_container_class+" [data-orbit-slide]",p.link_bullet),j.on("click",p.toggle_timer),f.swipe&&j.on("touchstart.fndtn.orbit",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};j.data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.orbit",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var b=j.data("swipe-transition");if("undefined"==typeof b&&(b={}),b.delta_x=a.touches[0].pageX-b.start_page_x,"undefined"==typeof b.is_scrolling&&(b.is_scrolling=!!(b.is_scrolling||Math.abs(b.delta_x)<Math.abs(a.touches[0].pageY-b.start_page_y))),!b.is_scrolling&&!b.active){a.preventDefault();var c=b.delta_x<0?r+1:r-1;b.active=!0,p._goto(c)}}}).on("touchend.fndtn.orbit",function(a){j.data("swipe-transition",{}),a.stopPropagation()}),j.on("mouseenter.fndtn.orbit",function(a){f.timer&&f.pause_on_hover&&p.stop_timer()}).on("mouseleave.fndtn.orbit",function(a){f.timer&&f.resume_on_mouseout&&o.start()}),a(c).on("click","[data-orbit-link]",p.link_custom),a(b).on("load resize",p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),function(){j.prev("."+f.preloader_class).css("display","none"),p.update_slide_number(0),p.update_active_link(0),q.trigger("ready.fndtn.orbit")})},p.init()},g=function(a,b,c){var d,e,f=this,g=b.timer_speed,h=a.find("."+b.timer_progress_class),i=-1;this.update_progress=function(a){var b=h.clone();b.attr("style",""),b.css("width",a+"%"),h.replaceWith(b),h=b},this.restart=function(){clearTimeout(e),a.addClass(b.timer_paused_class),i=-1,f.update_progress(0)},this.start=function(){return a.hasClass(b.timer_paused_class)?(i=-1===i?g:i,a.removeClass(b.timer_paused_class),d=(new Date).getTime(),h.animate({width:"100%"},i,"linear"),e=setTimeout(function(){f.restart(),c()},i),void a.trigger("timer-started.fndtn.orbit")):!0},this.stop=function(){if(a.hasClass(b.timer_paused_class))return!0;clearTimeout(e),a.addClass(b.timer_paused_class);var c=(new Date).getTime();i-=c-d;var h=100-i/g*100;f.update_progress(h),a.trigger("timer-stopped.fndtn.orbit")}},h=function(b,c){var d=b.animation_speed,e=1===a("html[dir=rtl]").length,f=e?"marginRight":"marginLeft",g={};g[f]="0%",this.next=function(a,b,c){a.animate({marginLeft:"-100%"},d),b.animate(g,d,function(){a.css(f,"100%"),c()})},this.prev=function(a,b,c){a.animate({marginLeft:"100%"},d),b.css(f,"-100%"),b.animate(g,d,function(){a.css(f,"100%"),c()})}},i=function(b,c){var d=b.animation_speed;1===a("html[dir=rtl]").length;this.next=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})},this.prev=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})}};Foundation.libs=Foundation.libs||{},Foundation.libs.orbit={name:"orbit",version:"5.5.3",settings:{animation:"slide",timer_speed:1e4,pause_on_hover:!0,resume_on_mouseout:!1,next_on_click:!0,animation_speed:500,stack_on_small:!1,navigation_arrows:!0,slide_number:!0,slide_number_text:"of",container_class:"orbit-container",stack_on_small_class:"orbit-stack-on-small",next_class:"orbit-next",prev_class:"orbit-prev",timer_container_class:"orbit-timer",timer_paused_class:"paused",timer_progress_class:"orbit-progress",slides_container_class:"orbit-slides-container",preloader_class:"preloader",slide_selector:"*",bullets_container_class:"orbit-bullets",bullets_active_class:"active",slide_number_class:"orbit-slide-number",caption_class:"orbit-caption",active_slide_class:"active",orbit_transition_class:"orbit-transitioning",bullets:!0,circular:!0,timer:!0,variable_height:!1,swipe:!0,before_slide_change:e,after_slide_change:e},init:function(a,b,c){this.bindings(b,c)},events:function(a){var b=new f(this.S(a),this.S(a).data("orbit-init"));this.S(a).data(this.name+"-instance",b)},reflow:function(){var a=this;if(a.S(a.scope).is("[data-orbit]")){var b=a.S(a.scope),c=b.data(a.name+"-instance");c.compute_dimensions()}else a.S("[data-orbit]",a.scope).each(function(b,c){var d=a.S(c),e=(a.data_options(d),d.data(a.name+"-instance"));e.compute_dimensions()})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";function e(a){var b=/fade/i.test(a),c=/pop/i.test(a);return{animate:b||c,pop:c,fade:b}}var f=[];Foundation.libs.reveal={name:"reveal",version:"5.5.3",locked:!1,settings:{animation:"fadeAndPop",animation_speed:250,close_on_background_click:!0,close_on_esc:!0,dismiss_modal_class:"close-reveal-modal",multiple_opened:!1,bg_class:"reveal-modal-bg",root_element:"body",open:function(){},opened:function(){},close:function(){},closed:function(){},on_ajax_error:a.noop,bg:a(".reveal-modal-bg"),css:{open:{opacity:0,visibility:"visible",display:"block"},close:{opacity:1,visibility:"hidden",display:"none"}}},init:function(b,c,d){a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(a){var b=this,d=b.S;return d(this.scope).off(".reveal").on("click.fndtn.reveal","["+this.add_namespace("data-reveal-id")+"]:not([disabled])",function(a){if(a.preventDefault(),!b.locked){var c=d(this),e=c.data(b.data_attr("reveal-ajax")),f=c.data(b.data_attr("reveal-replace-content"));if(b.locked=!0,"undefined"==typeof e)b.open.call(b,c);else{var g=e===!0?c.attr("href"):e;b.open.call(b,c,{url:g},{replaceContentSel:f})}}}),d(c).on("click.fndtn.reveal",this.close_targets(),function(a){if(a.preventDefault(),!b.locked){var c=d("["+b.attr_name()+"].open").data(b.attr_name(!0)+"-init")||b.settings,e=d(a.target)[0]===d("."+c.bg_class)[0];if(e){if(!c.close_on_background_click)return;a.stopPropagation()}b.locked=!0,b.close.call(b,e?d("["+b.attr_name()+"].open:not(.toback)"):d(this).closest("["+b.attr_name()+"]"))}}),d("["+b.attr_name()+"]",this.scope).length>0?d(this.scope).on("open.fndtn.reveal",this.settings.open).on("opened.fndtn.reveal",this.settings.opened).on("opened.fndtn.reveal",this.open_video).on("close.fndtn.reveal",this.settings.close).on("closed.fndtn.reveal",this.settings.closed).on("closed.fndtn.reveal",this.close_video):d(this.scope).on("open.fndtn.reveal","["+b.attr_name()+"]",this.settings.open).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.settings.opened).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.open_video).on("close.fndtn.reveal","["+b.attr_name()+"]",this.settings.close).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.settings.closed).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.close_video),!0},key_up_on:function(a){var b=this;return b.S("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal",function(a){var c=b.S("["+b.attr_name()+"].open"),d=c.data(b.attr_name(!0)+"-init")||b.settings;d&&27===a.which&&d.close_on_esc&&!b.locked&&b.close.call(b,c)}),!0},key_up_off:function(a){return this.S("body").off("keyup.fndtn.reveal"),!0},open:function(c,e){var g,h=this;c?"undefined"!=typeof c.selector?g=h.S("#"+c.data(h.data_attr("reveal-id"))).first():(g=h.S(this.scope),e=c):g=h.S(this.scope);var i=g.data(h.attr_name(!0)+"-init");if(i=i||this.settings,g.hasClass("open")&&c!==d&&c.attr("data-reveal-id")==g.attr("id"))return h.close(g);if(!g.hasClass("open")){var j=h.S("["+h.attr_name()+"].open");"undefined"==typeof g.data("css-top")&&g.data("css-top",parseInt(g.css("top"),10)).data("offset",this.cache_offset(g)),g.attr("tabindex","0").attr("aria-hidden","false"),this.key_up_on(g),g.on("open.fndtn.reveal",function(a){"fndtn.reveal"!==a.namespace}),g.on("open.fndtn.reveal").trigger("open.fndtn.reveal"),j.length<1&&this.toggle_bg(g,!0),"string"==typeof e&&(e={url:e});var k=function(){j.length>0&&(i.multiple_opened?h.to_back(j):h.hide(j,i.css.close)),i.multiple_opened&&f.push(g),h.show(g,i.css.open)};if("undefined"!=typeof e&&e.url){var l="undefined"!=typeof e.success?e.success:null;a.extend(e,{success:function(b,c,d){if(a.isFunction(l)){var e=l(b,c,d);"string"==typeof e&&(b=e)}"undefined"!=typeof options&&"undefined"!=typeof options.replaceContentSel?g.find(options.replaceContentSel).html(b):g.html(b),h.S(g).foundation("section","reflow"),h.S(g).children().foundation(),k()}}),i.on_ajax_error!==a.noop&&a.extend(e,{error:i.on_ajax_error}),a.ajax(e)}else k()}h.S(b).trigger("resize")},close:function(b){var b=b&&b.length?b:this.S(this.scope),c=this.S("["+this.attr_name()+"].open"),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=this;if(c.length>0)if(b.removeAttr("tabindex","0").attr("aria-hidden","true"),this.locked=!0,this.key_up_off(b),b.trigger("close.fndtn.reveal"),(d.multiple_opened&&1===c.length||!d.multiple_opened||b.length>1)&&(e.toggle_bg(b,!1),e.to_front(b)),d.multiple_opened){var g=b.is(":not(.toback)");e.hide(b,d.css.close,d),g?f.pop():f=a.grep(f,function(a){var c=a[0]===b[0];return c&&e.to_front(b),!c}),f.length>0&&e.to_front(f[f.length-1])}else e.hide(c,d.css.close,d)},close_targets:function(){var a="."+this.settings.dismiss_modal_class;return this.settings.close_on_background_click?a+", ."+this.settings.bg_class:a},toggle_bg:function(b,c){0===this.S("."+this.settings.bg_class).length&&(this.settings.bg=a("<div />",{"class":this.settings.bg_class}).appendTo("body").hide());var e=this.settings.bg.filter(":visible").length>0;c!=e&&((c==d?e:!c)?this.hide(this.settings.bg):this.show(this.settings.bg))},show:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init")||this.settings,g=f.root_element,h=this;if(0===c.parent(g).length){var i=c.wrap('<div style="display: none;" />').parent();c.on("closed.fndtn.reveal.wrapped",function(){c.detach().appendTo(i),c.unwrap().unbind("closed.fndtn.reveal.wrapped")}),c.detach().appendTo(g)}var j=e(f.animation);if(j.animate||(this.locked=!1),j.pop){d.top=a(b).scrollTop()-c.data("offset")+"px";var k={top:a(b).scrollTop()+c.data("css-top")+"px",opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}if(d.top=a(b).scrollTop()+c.data("css-top")+"px",j.fade){var k={opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}return c.css(d).show().css({opacity:1}).addClass("open").trigger("opened.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeIn(f.animation_speed/2):(this.locked=!1,c.show())},to_back:function(a){a.addClass("toback")},to_front:function(a){a.removeClass("toback")},hide:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init"),g=this;f=f||this.settings;var h=e(f.animation);if(h.animate||(this.locked=!1),h.pop){var i={top:-a(b).scrollTop()-c.data("offset")+"px",opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}if(h.fade){var i={opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}return c.hide().css(d).removeClass("open").trigger("closed.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeOut(f.animation_speed/2):c.hide()},close_video:function(b){var c=a(".flex-video",b.target),d=a("iframe",c);d.length>0&&(d.attr("data-src",d[0].src),d.attr("src",d.attr("src")),c.hide())},open_video:function(b){var c=a(".flex-video",b.target),e=c.find("iframe");if(e.length>0){var f=e.attr("data-src");if("string"==typeof f)e[0].src=e.attr("data-src");else{var g=e[0].src;e[0].src=d,e[0].src=g}c.show()}},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},cache_offset:function(a){var b=a.show().height()+parseInt(a.css("top"),10)+a.scrollY;return a.hide(),b},off:function(){a(this.scope).off(".fndtn.reveal")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.slider={name:"slider",version:"5.5.3",settings:{start:0,end:100,step:1,precision:2,initial:null,display_selector:"",vertical:!1,trigger_input_change:!1,on_change:function(){}},cache:{},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c),this.reflow()},events:function(){var c=this;a(this.scope).off(".slider").on("mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider","["+c.attr_name()+"]:not(.disabled, [disabled]) .range-slider-handle",function(b){c.cache.active||(b.preventDefault(),c.set_active_slider(a(b.target)))}).on("mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider",function(d){if(c.cache.active)if(d.preventDefault(),a.data(c.cache.active[0],"settings").vertical){var e=0;d.pageY||(e=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+e)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}).on("mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider",function(d){if(!c.cache.active){var e="slider"===a(d.target).attr("role")?a(d.target):a(d.target).closest(".range-slider").find("[role='slider']");if(e.length&&!e.parent().hasClass("disabled")&&!e.parent().attr("disabled"))if(c.set_active_slider(e),a.data(c.cache.active[0],"settings").vertical){var f=0;d.pageY||(f=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+f)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}c.remove_active_slider()}).on("change.fndtn.slider",function(a){c.settings.on_change()}),c.S(b).on("resize.fndtn.slider",c.throttle(function(a){c.reflow()},300)),this.S("["+this.attr_name()+"]").each(function(){var b=a(this),d=b.children(".range-slider-handle")[0],e=c.initialize_settings(d);""!=e.display_selector&&a(e.display_selector).each(function(){a(this).attr("value")&&a(this).off("change").on("change",function(){b.foundation("slider","set_value",a(this).val())})})})},get_cursor_position:function(a,b){var c,d="page"+b.toUpperCase(),e="client"+b.toUpperCase();return"undefined"!=typeof a[d]?c=a[d]:"undefined"!=typeof a.originalEvent[e]?c=a.originalEvent[e]:a.originalEvent.touches&&a.originalEvent.touches[0]&&"undefined"!=typeof a.originalEvent.touches[0][e]?c=a.originalEvent.touches[0][e]:a.currentPoint&&"undefined"!=typeof a.currentPoint[b]&&(c=a.currentPoint[b]),c},set_active_slider:function(a){this.cache.active=a},remove_active_slider:function(){this.cache.active=null},calculate_position:function(b,c){var d=this,e=a.data(b[0],"settings"),f=(a.data(b[0],"handle_l"),a.data(b[0],"handle_o"),a.data(b[0],"bar_l")),g=a.data(b[0],"bar_o");requestAnimationFrame(function(){var a;a=Foundation.rtl&&!e.vertical?d.limit_to((g+f-c)/f,0,1):d.limit_to((c-g)/f,0,1),a=e.vertical?1-a:a;var h=d.normalized_value(a,e.start,e.end,e.step,e.precision);d.set_ui(b,h)})},set_ui:function(b,c){var d=a.data(b[0],"settings"),e=a.data(b[0],"handle_l"),f=a.data(b[0],"bar_l"),g=this.normalized_percentage(c,d.start,d.end),h=g*(f-e)-1,i=100*g,j=b.parent(),k=b.parent().children("input[type=hidden]");Foundation.rtl&&!d.vertical&&(h=-h),h=d.vertical?-h+f-e+1:h,this.set_translate(b,h,d.vertical),d.vertical?b.siblings(".range-slider-active-segment").css("height",i+"%"):b.siblings(".range-slider-active-segment").css("width",i+"%"),j.attr(this.attr_name(),c).trigger("change.fndtn.slider"),k.val(c),d.trigger_input_change&&k.trigger("change.fndtn.slider"),b[0].hasAttribute("aria-valuemin")||b.attr({"aria-valuemin":d.start,"aria-valuemax":d.end}),b.attr("aria-valuenow",c),""!=d.display_selector&&a(d.display_selector).each(function(){this.hasAttribute("value")?a(this).val(c):a(this).text(c)})},normalized_percentage:function(a,b,c){return Math.min(1,(a-b)/(c-b))},normalized_value:function(a,b,c,d,e){var f=c-b,g=a*f,h=(g-g%d)/d,i=g%d,j=i>=.5*d?d:0;return(h*d+j+b).toFixed(e)},set_translate:function(b,c,d){d?a(b).css("-webkit-transform","translateY("+c+"px)").css("-moz-transform","translateY("+c+"px)").css("-ms-transform","translateY("+c+"px)").css("-o-transform","translateY("+c+"px)").css("transform","translateY("+c+"px)"):a(b).css("-webkit-transform","translateX("+c+"px)").css("-moz-transform","translateX("+c+"px)").css("-ms-transform","translateX("+c+"px)").css("-o-transform","translateX("+c+"px)").css("transform","translateX("+c+"px)")},limit_to:function(a,b,c){return Math.min(Math.max(a,b),c)},initialize_settings:function(b){var c,d=a.extend({},this.settings,this.data_options(a(b).parent()));return null===d.precision&&(c=(""+d.step).match(/\.([\d]*)/),d.precision=c&&c[1]?c[1].length:0),d.vertical?(a.data(b,"bar_o",a(b).parent().offset().top),a.data(b,"bar_l",a(b).parent().outerHeight()),a.data(b,"handle_o",a(b).offset().top),a.data(b,"handle_l",a(b).outerHeight())):(a.data(b,"bar_o",a(b).parent().offset().left),a.data(b,"bar_l",a(b).parent().outerWidth()),a.data(b,"handle_o",a(b).offset().left),a.data(b,"handle_l",a(b).outerWidth())),a.data(b,"bar",a(b).parent()),a.data(b,"settings",d)},set_initial_position:function(b){var c=a.data(b.children(".range-slider-handle")[0],"settings"),d="number"!=typeof c.initial||isNaN(c.initial)?Math.floor(.5*(c.end-c.start)/c.step)*c.step+c.start:c.initial,e=b.children(".range-slider-handle");this.set_ui(e,d)},set_value:function(b){var c=this;a("["+c.attr_name()+"]",this.scope).each(function(){a(this).attr(c.attr_name(),b)}),a(this.scope).attr(c.attr_name())&&a(this.scope).attr(c.attr_name(),b),c.reflow()},reflow:function(){var b=this;b.S("["+this.attr_name()+"]").each(function(){var c=a(this).children(".range-slider-handle")[0],d=a(this).attr(b.attr_name());b.initialize_settings(c),d?b.set_ui(a(c),parseFloat(d)):b.set_initial_position(a(this))})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tab={name:"tab",version:"5.5.3",settings:{active_class:"active",callback:function(){},deep_linking:!1,scroll_to_content:!0,is_hover:!1},default_tab_hashes:[],init:function(a,b,c){var d=this,e=this.S;e("["+this.attr_name()+"] > .active > a",this.scope).each(function(){d.default_tab_hashes.push(this.hash)}),this.bindings(b,c),this.handle_location_hash_change()},events:function(){var a=this,c=this.S,d=function(b,d){var e=c(d).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");if(!e.is_hover||Modernizr.touch){var f=b.keyCode||b.which;9!==f&&(b.preventDefault(),b.stopPropagation()),a.toggle_active_tab(c(d).parent())}};c(this.scope).off(".tab").on("keydown.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=a.keyCode||a.which;if(13===b||32===b){var c=this;d(a,c)}}).on("click.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=this;d(a,b)}).on("mouseenter.fndtn.tab","["+this.attr_name()+"] > * > a",function(b){var d=c(this).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");d.is_hover&&a.toggle_active_tab(c(this).parent())}),c(b).on("hashchange.fndtn.tab",function(b){b.preventDefault(),a.handle_location_hash_change()})},handle_location_hash_change:function(){var b=this,c=this.S;c("["+this.attr_name()+"]",this.scope).each(function(){var e=c(this).data(b.attr_name(!0)+"-init");if(e.deep_linking){var f;if(f=e.scroll_to_content?b.scope.location.hash:b.scope.location.hash.replace("fndtn-",""),""!=f){var g=c(f);if(g.hasClass("content")&&g.parent().hasClass("tabs-content"))b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+f+"]").parent());else{var h=g.closest(".content").attr("id");h!=d&&b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href=#"+h+"]").parent(),f)}}else for(var i=0;i<b.default_tab_hashes.length;i++)b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+b.default_tab_hashes[i]+"]").parent())}})},toggle_active_tab:function(e,f){var g=this,h=g.S,i=e.closest("["+this.attr_name()+"]"),j=e.find("a"),k=e.children("a").first(),l="#"+k.attr("href").split("#")[1],m=h(l),n=e.siblings(),o=i.data(this.attr_name(!0)+"-init"),p=function(b){var d,e=a(this),f=a(this).parents("li").prev().children('[role="tab"]'),g=a(this).parents("li").next().children('[role="tab"]');switch(b.keyCode){case 37:d=f;break;case 39:d=g;break;default:d=!1}d.length&&(e.attr({tabindex:"-1","aria-selected":null}),d.attr({tabindex:"0","aria-selected":!0}).focus()),a('[role="tabpanel"]').attr("aria-hidden","true"),a("#"+a(c.activeElement).attr("href").substring(1)).attr("aria-hidden",null)},q=function(a){var c=o.scroll_to_content?g.default_tab_hashes[0]:"fndtn-"+g.default_tab_hashes[0].replace("#","");(a!==c||b.location.hash)&&(b.location.hash=a)};k.data("tab-content")&&(l="#"+k.data("tab-content").split("#")[1],m=h(l)),o.deep_linking&&(o.scroll_to_content?(q(f||l),f==d||f==l?e.parent()[0].scrollIntoView():h(l)[0].scrollIntoView()):q(f!=d?"fndtn-"+f.replace("#",""):"fndtn-"+l.replace("#",""))),e.addClass(o.active_class).triggerHandler("opened"),j.attr({"aria-selected":"true",tabindex:0}),n.removeClass(o.active_class),n.find("a").attr({"aria-selected":"false"}),m.siblings().removeClass(o.active_class).attr({"aria-hidden":"true"}),m.addClass(o.active_class).attr("aria-hidden","false").removeAttr("tabindex"),o.callback(e),m.triggerHandler("toggled",[m]),i.triggerHandler("toggled",[e]),j.off("keydown").on("keydown",p)},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tooltip={name:"tooltip",version:"5.5.3",settings:{additional_inheritable_classes:[],tooltip_class:".tooltip",append_to:"body",touch_close_text:"Tap To Close",disable_for_touch:!1,hover_delay:200,fade_in_duration:150,fade_out_duration:150,show_on:"all",tip_template:function(a,b){return'<span data-selector="'+a+'" id="'+a+'" class="'+Foundation.libs.tooltip.settings.tooltip_class.substring(1)+'" role="tooltip">'+b+'<span class="nub"></span></span>'}},cache:{},init:function(a,b,c){Foundation.inherit(this,"random_str"),this.bindings(b,c)},should_show:function(b,c){var d=a.extend({},this.settings,this.data_options(b));return"all"===d.show_on?!0:this.small()&&"small"===d.show_on?!0:this.medium()&&"medium"===d.show_on?!0:this.large()&&"large"===d.show_on?!0:!1},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},events:function(b){function c(a,b,c){a.timer||(c?(a.timer=null,e.showTip(b)):a.timer=setTimeout(function(){a.timer=null,e.showTip(b)}.bind(a),e.settings.hover_delay))}function d(a,b){a.timer&&(clearTimeout(a.timer),a.timer=null),e.hide(b)}var e=this,f=e.S;e.create(this.S(b)),a(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"]",function(b){var g=f(this),h=a.extend({},e.settings,e.data_options(g)),i=!1;if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&f(b.target).is("a"))return!1;if(/mouse/i.test(b.type)&&e.ie_touch(b))return!1;if(g.hasClass("open"))Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&b.preventDefault(),e.hide(g);else{if(h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type))return;if(!h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&(b.preventDefault(),f(h.tooltip_class+".open").hide(),i=!0,a(".open["+e.attr_name()+"]").length>0)){var j=f(a(".open["+e.attr_name()+"]")[0]);e.hide(j)}/enter|over/i.test(b.type)?c(this,g):"mouseout"===b.type||"mouseleave"===b.type?d(this,g):c(this,g,!0)}}).on("mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"].open",function(b){return/mouse/i.test(b.type)&&e.ie_touch(b)?!1:void(("touch"!=a(this).data("tooltip-open-event-type")||"mouseleave"!=b.type)&&("mouse"==a(this).data("tooltip-open-event-type")&&/MSPointerDown|touchstart/i.test(b.type)?e.convert_to_touch(a(this)):d(this,a(this))))}).on("DOMNodeRemoved DOMAttrModified","["+this.attr_name()+"]:not(a)",function(a){d(this,f(this))})},ie_touch:function(a){return!1},showTip:function(a){var b=this.getTip(a);return this.should_show(a,b)?this.show(a):void 0},getTip:function(b){var c=this.selector(b),d=a.extend({},this.settings,this.data_options(b)),e=null;return c&&(e=this.S('span[data-selector="'+c+'"]'+d.tooltip_class)),"object"==typeof e?e:!1},selector:function(a){var b=a.attr(this.attr_name())||a.attr("data-selector");return"string"!=typeof b&&(b=this.random_str(6),a.attr("data-selector",b).attr("aria-describedby",b)),b},create:function(c){var d=this,e=a.extend({},this.settings,this.data_options(c)),f=this.settings.tip_template;"string"==typeof e.tip_template&&b.hasOwnProperty(e.tip_template)&&(f=b[e.tip_template]);
+var g=a(f(this.selector(c),a("<div></div>").html(c.attr("title")).html())),h=this.inheritable_classes(c);g.addClass(h).appendTo(e.append_to),Modernizr.touch&&(g.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),g.on("touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip",function(a){d.hide(c)})),c.removeAttr("title").attr("title","")},reposition:function(b,c,d){var e,f,g,h,i;c.css("visibility","hidden").show(),e=b.data("width"),f=c.children(".nub"),g=f.outerHeight(),h=f.outerWidth(),this.small()?c.css({width:"100%"}):c.css({width:e?e:"auto"}),i=function(a,b,c,d,e,f){return a.css({top:b?b:"auto",bottom:d?d:"auto",left:e?e:"auto",right:c?c:"auto"}).end()};var j=b.offset().top,k=b.offset().left,l=b.outerHeight();if(i(c,j+l+10,"auto","auto",k),this.small())i(c,j+l+10,"auto","auto",12.5,a(this.scope).width()),c.addClass("tip-override"),i(f,-g,"auto","auto",k);else{Foundation.rtl&&(f.addClass("rtl"),k=k+b.outerWidth()-c.outerWidth()),i(c,j+l+10,"auto","auto",k),f.attr("style")&&f.removeAttr("style"),c.removeClass("tip-override");var m=c.outerHeight();d&&d.indexOf("tip-top")>-1?(Foundation.rtl&&f.addClass("rtl"),i(c,j-m,"auto","auto",k).removeClass("tip-override")):d&&d.indexOf("tip-left")>-1?(i(c,j+l/2-m/2,"auto","auto",k-c.outerWidth()-g).removeClass("tip-override"),f.removeClass("rtl")):d&&d.indexOf("tip-right")>-1&&(i(c,j+l/2-m/2,"auto","auto",k+b.outerWidth()+g).removeClass("tip-override"),f.removeClass("rtl"))}c.css("visibility","visible").hide()},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},inheritable_classes:function(b){var c=a.extend({},this.settings,this.data_options(b)),d=["tip-top","tip-left","tip-bottom","tip-right","radius","round"].concat(c.additional_inheritable_classes),e=b.attr("class"),f=e?a.map(e.split(" "),function(b,c){return-1!==a.inArray(b,d)?b:void 0}).join(" "):"";return a.trim(f)},convert_to_touch:function(b){var c=this,d=c.getTip(b),e=a.extend({},c.settings,c.data_options(b));0===d.find(".tap-to-close").length&&(d.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),d.on("click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose",function(a){c.hide(b)})),b.data("tooltip-open-event-type","touch")},show:function(a){var b=this.getTip(a);"touch"==a.data("tooltip-open-event-type")&&this.convert_to_touch(a),this.reposition(a,b,a.attr("class")),a.addClass("open"),b.fadeIn(this.settings.fade_in_duration)},hide:function(a){var b=this.getTip(a);b.fadeOut(this.settings.fade_out_duration,function(){b.find(".tap-to-close").remove(),b.off("click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose"),a.removeClass("open")})},off:function(){var b=this;this.S(this.scope).off(".fndtn.tooltip"),this.S(this.settings.tooltip_class).each(function(c){a("["+b.attr_name()+"]").eq(c).attr("title",a(this).text())}).remove()},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.topbar={name:"topbar",version:"5.5.3",settings:{index:0,start_offset:0,sticky_class:"sticky",custom_back_text:!0,back_text:"Back",mobile_show_parent_link:!0,is_hover:!0,scrolltop:!0,sticky_on:"all",dropdown_autoclose:!0},init:function(b,c,d){Foundation.inherit(this,"add_custom_rule register_media throttle");var e=this;e.register_media("topbar","foundation-mq-topbar"),this.bindings(c,d),e.S("["+this.attr_name()+"]",this.scope).each(function(){var b=a(this),c=b.data(e.attr_name(!0)+"-init");e.S("section, .top-bar-section",this);b.data("index",0);var d=b.parent();d.hasClass("fixed")||e.is_sticky(b,d,c)?(e.settings.sticky_class=c.sticky_class,e.settings.sticky_topbar=b,b.data("height",d.outerHeight()),b.data("stickyoffset",d.offset().top)):b.data("height",b.outerHeight()),c.assembled||e.assemble(b),c.is_hover?e.S(".has-dropdown",b).addClass("not-click"):e.S(".has-dropdown",b).removeClass("not-click"),e.add_custom_rule(".f-topbar-fixed { padding-top: "+b.data("height")+"px }"),d.hasClass("fixed")&&e.S("body").addClass("f-topbar-fixed")})},is_sticky:function(a,b,c){var d=b.hasClass(c.sticky_class),e=matchMedia(Foundation.media_queries.small).matches,f=matchMedia(Foundation.media_queries.medium).matches,g=matchMedia(Foundation.media_queries.large).matches;return d&&"all"===c.sticky_on?!0:d&&this.small()&&-1!==c.sticky_on.indexOf("small")&&e&&!f&&!g?!0:d&&this.medium()&&-1!==c.sticky_on.indexOf("medium")&&e&&f&&!g?!0:d&&this.large()&&-1!==c.sticky_on.indexOf("large")&&e&&f&&g?!0:!1},toggle:function(c){var d,e=this;d=c?e.S(c).closest("["+this.attr_name()+"]"):e.S("["+this.attr_name()+"]");var f=d.data(this.attr_name(!0)+"-init"),g=e.S("section, .top-bar-section",d);e.breakpoint()&&(e.rtl?(g.css({right:"0%"}),a(">.name",g).css({right:"100%"})):(g.css({left:"0%"}),a(">.name",g).css({left:"100%"})),e.S("li.moved",g).removeClass("moved"),d.data("index",0),d.toggleClass("expanded").css("height","")),f.scrolltop?d.hasClass("expanded")?d.parent().hasClass("fixed")&&(f.scrolltop?(d.parent().removeClass("fixed"),d.addClass("fixed"),e.S("body").removeClass("f-topbar-fixed"),b.scrollTo(0,0)):d.parent().removeClass("expanded")):d.hasClass("fixed")&&(d.parent().addClass("fixed"),d.removeClass("fixed"),e.S("body").addClass("f-topbar-fixed")):(e.is_sticky(d,d.parent(),f)&&d.parent().addClass("fixed"),d.parent().hasClass("fixed")&&(d.hasClass("expanded")?(d.addClass("fixed"),d.parent().addClass("expanded"),e.S("body").addClass("f-topbar-fixed")):(d.removeClass("fixed"),d.parent().removeClass("expanded"),e.update_sticky_positioning())))},timer:null,events:function(c){var d=this,e=this.S;e(this.scope).off(".topbar").on("click.fndtn.topbar","["+this.attr_name()+"] .toggle-topbar",function(a){a.preventDefault(),d.toggle(this)}).on("click.fndtn.topbar contextmenu.fndtn.topbar",'.top-bar .top-bar-section li a[href^="#"],['+this.attr_name()+'] .top-bar-section li a[href^="#"]',function(b){var c=a(this).closest("li"),e=c.closest("["+d.attr_name()+"]"),f=e.data(d.attr_name(!0)+"-init");if(f.dropdown_autoclose&&f.is_hover){var g=a(this).closest(".hover");g.removeClass("hover")}!d.breakpoint()||c.hasClass("back")||c.hasClass("has-dropdown")||d.toggle()}).on("click.fndtn.topbar","["+this.attr_name()+"] li.has-dropdown",function(b){var c=e(this),f=e(b.target),g=c.closest("["+d.attr_name()+"]"),h=g.data(d.attr_name(!0)+"-init");return f.data("revealId")?void d.toggle():void(d.breakpoint()||(!h.is_hover||Modernizr.touch)&&(b.stopImmediatePropagation(),c.hasClass("hover")?(c.removeClass("hover").find("li").removeClass("hover"),c.parents("li.hover").removeClass("hover")):(c.addClass("hover"),a(c).siblings().removeClass("hover"),"A"===f[0].nodeName&&f.parent().hasClass("has-dropdown")&&b.preventDefault())))}).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown>a",function(a){if(d.breakpoint()){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(b.next(".dropdown").outerHeight(),b.closest("li"));c.data("index",c.data("index")+1),g.addClass("moved"),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),c.css("height",b.siblings("ul").outerHeight(!0)+c.data("height"))}}),e(b).off(".topbar").on("resize.fndtn.topbar",d.throttle(function(){d.resize.call(d)},50)).trigger("resize.fndtn.topbar").load(function(){e(this).trigger("resize.fndtn.topbar")}),e("body").off(".topbar").on("click.fndtn.topbar",function(a){var b=e(a.target).closest("li").closest("li.hover");b.length>0||e("["+d.attr_name()+"] li.hover").removeClass("hover")}),e(this.scope).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown .back",function(a){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(c.data(d.attr_name(!0)+"-init"),b.closest("li.moved")),h=g.parent();c.data("index",c.data("index")-1),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),0===c.data("index")?c.css("height",""):c.css("height",h.outerHeight(!0)+c.data("height")),setTimeout(function(){g.removeClass("moved")},300)}),e(this.scope).find(".dropdown a").focus(function(){a(this).parents(".has-dropdown").addClass("hover")}).blur(function(){a(this).parents(".has-dropdown").removeClass("hover")})},resize:function(){var a=this;a.S("["+this.attr_name()+"]").each(function(){var b,d=a.S(this),e=d.data(a.attr_name(!0)+"-init"),f=d.parent("."+a.settings.sticky_class);if(!a.breakpoint()){var g=d.hasClass("expanded");d.css("height","").removeClass("expanded").find("li").removeClass("hover"),g&&a.toggle(d)}a.is_sticky(d,f,e)&&(f.hasClass("fixed")?(f.removeClass("fixed"),b=f.offset().top,a.S(c.body).hasClass("f-topbar-fixed")&&(b-=d.data("height")),d.data("stickyoffset",b),f.addClass("fixed")):(b=f.offset().top,d.data("stickyoffset",b)))})},breakpoint:function(){return!matchMedia(Foundation.media_queries.topbar).matches},small:function(){return matchMedia(Foundation.media_queries.small).matches},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},assemble:function(b){var c=this,d=b.data(this.attr_name(!0)+"-init"),e=c.S("section, .top-bar-section",b);e.detach(),c.S(".has-dropdown>a",e).each(function(){var b,e=c.S(this),f=e.siblings(".dropdown"),g=e.attr("href");f.find(".title.back").length||(b=a(1==d.mobile_show_parent_link&&g?'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="'+g+'">'+e.html()+"</a></li>":'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>'),1==d.custom_back_text?a("h5>a",b).html(d.back_text):a("h5>a",b).html("« "+e.html()),f.prepend(b))}),e.appendTo(b),this.sticky(),this.assembled(b)},assembled:function(b){b.data(this.attr_name(!0),a.extend({},b.data(this.attr_name(!0)),{assembled:!0}))},height:function(b){var c=0,d=this;return a("> li",b).each(function(){c+=d.S(this).outerHeight(!0)}),c},sticky:function(){var a=this;this.S(b).on("scroll",function(){a.update_sticky_positioning()})},update_sticky_positioning:function(){var a="."+this.settings.sticky_class,c=this.S(b),d=this;if(d.settings.sticky_topbar&&d.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(),this.settings)){var e=this.settings.sticky_topbar.data("stickyoffset")+this.settings.start_offset;d.S(a).hasClass("expanded")||(c.scrollTop()>e?d.S(a).hasClass("fixed")||(d.S(a).addClass("fixed"),d.S("body").addClass("f-topbar-fixed")):c.scrollTop()<=e&&d.S(a).hasClass("fixed")&&(d.S(a).removeClass("fixed"),d.S("body").removeClass("f-topbar-fixed")))}},off:function(){this.S(this.scope).off(".fndtn.topbar"),this.S(b).off(".fndtn.topbar")},reflow:function(){}}}(jQuery,window,window.document);;// Load foundation
+$(document).foundation();
+$(document).ready(function () {
+ var gold = '#ec9928';
+
+ $('ul.children').each(function () {
+ $(this).before('<a class="toggle" href="#"></a>');
+ });
+ $('a.toggle').click('click', function () {
+ $(this).toggleClass('open');
+ $(this).siblings('ul').toggleClass('open');
+ });
+ $('.top-bar-section').find('ul.sub-menu.dropdown').each(function (){
+ var menuImg = $(this).parent('li').prop('id');
+ var menuNum = menuImg.match(/\d+/)[0];
+ var menuImgSrc = 'img_for_menu_' + menuNum;
+ if (window['img_for_menu_' + menuNum]) {
+ $(this).find('li.image-placeholder').html('<img src="' + eval(menuImgSrc) + '">');
+ } else {
+ $(this).find('li.image-placeholder').parent('ul').addClass('no-image-subul');
+ $(this).find('li.image-placeholder').remove();
+ }
+ //console.log('ul = ' + menuImg);
+ //console.log('menu-id = ' + menuNum);
+ });
+ $('#glm-member-password-lost-link').click(function() {
+ $('#glm-member-password-lost-form').show();
+ });
+
+
+
+ $('.search-icon').toggle(function() {
+ $('.header-search').animate({ width:'150px' });
+ $('.header-search-input').css("border", "2px solid " + gold)
+ }, function() {
+ $('.header-search').animate({ width:'0' });
+ $('.header-search-input').css("border", "2px solid transparent")
+ });
+
+ $('.header-search-input').on("blur", function(){
+ console.log("blur");
+ if( $('.header-search').length > 0 ){
+ console.log("Still open");
+ } else{
+ console.log("closed");
+ }
+ })
+
+});
// Load foundation
$(document).foundation();
$(document).ready(function () {
+ var gold = '#ec9928';
+
$('ul.children').each(function () {
$(this).before('<a class="toggle" href="#"></a>');
});
//console.log('ul = ' + menuImg);
//console.log('menu-id = ' + menuNum);
});
+ $('#glm-member-password-lost-link').click(function() {
+ $('#glm-member-password-lost-form').show();
+ });
+
+
+
+ $('.search-icon').toggle(function() {
+ $('.header-search').animate({ width:'150px' });
+ $('.header-search-input').css("border", "2px solid " + gold)
+ }, function() {
+ $('.header-search').animate({ width:'0' });
+ $('.header-search-input').css("border", "2px solid transparent")
+ });
+
+ $('.header-search-input').on("blur", function(){
+ console.log("blur");
+ if( $('.header-search').length > 0 ){
+ console.log("Still open");
+ } else{
+ console.log("closed");
+ }
+ })
+
});
--- /dev/null
+;(function () {
+ 'use strict';
+
+ /**
+ * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
+ *
+ * @codingstandard ftlabs-jsv2
+ * @copyright The Financial Times Limited [All Rights Reserved]
+ * @license MIT License (see LICENSE.txt)
+ */
+
+ /*jslint browser:true, node:true*/
+ /*global define, Event, Node*/
+
+
+ /**
+ * Instantiate fast-clicking listeners on the specified layer.
+ *
+ * @constructor
+ * @param {Element} layer The layer to listen on
+ * @param {Object} [options={}] The options to override the defaults
+ */
+ function FastClick(layer, options) {
+ var oldOnClick;
+
+ options = options || {};
+
+ /**
+ * Whether a click is currently being tracked.
+ *
+ * @type boolean
+ */
+ this.trackingClick = false;
+
+
+ /**
+ * Timestamp for when click tracking started.
+ *
+ * @type number
+ */
+ this.trackingClickStart = 0;
+
+
+ /**
+ * The element being tracked for a click.
+ *
+ * @type EventTarget
+ */
+ this.targetElement = null;
+
+
+ /**
+ * X-coordinate of touch start event.
+ *
+ * @type number
+ */
+ this.touchStartX = 0;
+
+
+ /**
+ * Y-coordinate of touch start event.
+ *
+ * @type number
+ */
+ this.touchStartY = 0;
+
+
+ /**
+ * ID of the last touch, retrieved from Touch.identifier.
+ *
+ * @type number
+ */
+ this.lastTouchIdentifier = 0;
+
+
+ /**
+ * Touchmove boundary, beyond which a click will be cancelled.
+ *
+ * @type number
+ */
+ this.touchBoundary = options.touchBoundary || 10;
+
+
+ /**
+ * The FastClick layer.
+ *
+ * @type Element
+ */
+ this.layer = layer;
+
+ /**
+ * The minimum time between tap(touchstart and touchend) events
+ *
+ * @type number
+ */
+ this.tapDelay = options.tapDelay || 200;
+
+ /**
+ * The maximum time for a tap
+ *
+ * @type number
+ */
+ this.tapTimeout = options.tapTimeout || 700;
+
+ if (FastClick.notNeeded(layer)) {
+ return;
+ }
+
+ // Some old versions of Android don't have Function.prototype.bind
+ function bind(method, context) {
+ return function() { return method.apply(context, arguments); };
+ }
+
+
+ var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];
+ var context = this;
+ for (var i = 0, l = methods.length; i < l; i++) {
+ context[methods[i]] = bind(context[methods[i]], context);
+ }
+
+ // Set up event handlers as required
+ if (deviceIsAndroid) {
+ layer.addEventListener('mouseover', this.onMouse, true);
+ layer.addEventListener('mousedown', this.onMouse, true);
+ layer.addEventListener('mouseup', this.onMouse, true);
+ }
+
+ layer.addEventListener('click', this.onClick, true);
+ layer.addEventListener('touchstart', this.onTouchStart, false);
+ layer.addEventListener('touchmove', this.onTouchMove, false);
+ layer.addEventListener('touchend', this.onTouchEnd, false);
+ layer.addEventListener('touchcancel', this.onTouchCancel, false);
+
+ // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
+ // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick
+ // layer when they are cancelled.
+ if (!Event.prototype.stopImmediatePropagation) {
+ layer.removeEventListener = function(type, callback, capture) {
+ var rmv = Node.prototype.removeEventListener;
+ if (type === 'click') {
+ rmv.call(layer, type, callback.hijacked || callback, capture);
+ } else {
+ rmv.call(layer, type, callback, capture);
+ }
+ };
+
+ layer.addEventListener = function(type, callback, capture) {
+ var adv = Node.prototype.addEventListener;
+ if (type === 'click') {
+ adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {
+ if (!event.propagationStopped) {
+ callback(event);
+ }
+ }), capture);
+ } else {
+ adv.call(layer, type, callback, capture);
+ }
+ };
+ }
+
+ // If a handler is already declared in the element's onclick attribute, it will be fired before
+ // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and
+ // adding it as listener.
+ if (typeof layer.onclick === 'function') {
+
+ // Android browser on at least 3.2 requires a new reference to the function in layer.onclick
+ // - the old one won't work if passed to addEventListener directly.
+ oldOnClick = layer.onclick;
+ layer.addEventListener('click', function(event) {
+ oldOnClick(event);
+ }, false);
+ layer.onclick = null;
+ }
+ }
+
+ /**
+ * Windows Phone 8.1 fakes user agent string to look like Android and iPhone.
+ *
+ * @type boolean
+ */
+ var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0;
+
+ /**
+ * Android requires exceptions.
+ *
+ * @type boolean
+ */
+ var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;
+
+
+ /**
+ * iOS requires exceptions.
+ *
+ * @type boolean
+ */
+ var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;
+
+
+ /**
+ * iOS 4 requires an exception for select elements.
+ *
+ * @type boolean
+ */
+ var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent);
+
+
+ /**
+ * iOS 6.0-7.* requires the target element to be manually derived
+ *
+ * @type boolean
+ */
+ var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent);
+
+ /**
+ * BlackBerry requires exceptions.
+ *
+ * @type boolean
+ */
+ var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0;
+
+ /**
+ * Determine whether a given element requires a native click.
+ *
+ * @param {EventTarget|Element} target Target DOM element
+ * @returns {boolean} Returns true if the element needs a native click
+ */
+ FastClick.prototype.needsClick = function(target) {
+ switch (target.nodeName.toLowerCase()) {
+
+ // Don't send a synthetic click to disabled inputs (issue #62)
+ case 'button':
+ case 'select':
+ case 'textarea':
+ if (target.disabled) {
+ return true;
+ }
+
+ break;
+ case 'input':
+
+ // File inputs need real clicks on iOS 6 due to a browser bug (issue #68)
+ if ((deviceIsIOS && target.type === 'file') || target.disabled) {
+ return true;
+ }
+
+ break;
+ case 'label':
+ case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames
+ case 'video':
+ return true;
+ }
+
+ return (/\bneedsclick\b/).test(target.className);
+ };
+
+
+ /**
+ * Determine whether a given element requires a call to focus to simulate click into element.
+ *
+ * @param {EventTarget|Element} target Target DOM element
+ * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.
+ */
+ FastClick.prototype.needsFocus = function(target) {
+ switch (target.nodeName.toLowerCase()) {
+ case 'textarea':
+ return true;
+ case 'select':
+ return !deviceIsAndroid;
+ case 'input':
+ switch (target.type) {
+ case 'button':
+ case 'checkbox':
+ case 'file':
+ case 'image':
+ case 'radio':
+ case 'submit':
+ return false;
+ }
+
+ // No point in attempting to focus disabled inputs
+ return !target.disabled && !target.readOnly;
+ default:
+ return (/\bneedsfocus\b/).test(target.className);
+ }
+ };
+
+
+ /**
+ * Send a click event to the specified element.
+ *
+ * @param {EventTarget|Element} targetElement
+ * @param {Event} event
+ */
+ FastClick.prototype.sendClick = function(targetElement, event) {
+ var clickEvent, touch;
+
+ // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)
+ if (document.activeElement && document.activeElement !== targetElement) {
+ document.activeElement.blur();
+ }
+
+ touch = event.changedTouches[0];
+
+ // Synthesise a click event, with an extra attribute so it can be tracked
+ clickEvent = document.createEvent('MouseEvents');
+ clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
+ clickEvent.forwardedTouchEvent = true;
+ targetElement.dispatchEvent(clickEvent);
+ };
+
+ FastClick.prototype.determineEventType = function(targetElement) {
+
+ //Issue #159: Android Chrome Select Box does not open with a synthetic click event
+ if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {
+ return 'mousedown';
+ }
+
+ return 'click';
+ };
+
+
+ /**
+ * @param {EventTarget|Element} targetElement
+ */
+ FastClick.prototype.focus = function(targetElement) {
+ var length;
+
+ // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.
+ if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {
+ length = targetElement.value.length;
+ targetElement.setSelectionRange(length, length);
+ } else {
+ targetElement.focus();
+ }
+ };
+
+
+ /**
+ * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.
+ *
+ * @param {EventTarget|Element} targetElement
+ */
+ FastClick.prototype.updateScrollParent = function(targetElement) {
+ var scrollParent, parentElement;
+
+ scrollParent = targetElement.fastClickScrollParent;
+
+ // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the
+ // target element was moved to another parent.
+ if (!scrollParent || !scrollParent.contains(targetElement)) {
+ parentElement = targetElement;
+ do {
+ if (parentElement.scrollHeight > parentElement.offsetHeight) {
+ scrollParent = parentElement;
+ targetElement.fastClickScrollParent = parentElement;
+ break;
+ }
+
+ parentElement = parentElement.parentElement;
+ } while (parentElement);
+ }
+
+ // Always update the scroll top tracker if possible.
+ if (scrollParent) {
+ scrollParent.fastClickLastScrollTop = scrollParent.scrollTop;
+ }
+ };
+
+
+ /**
+ * @param {EventTarget} targetElement
+ * @returns {Element|EventTarget}
+ */
+ FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {
+
+ // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.
+ if (eventTarget.nodeType === Node.TEXT_NODE) {
+ return eventTarget.parentNode;
+ }
+
+ return eventTarget;
+ };
+
+
+ /**
+ * On touch start, record the position and scroll offset.
+ *
+ * @param {Event} event
+ * @returns {boolean}
+ */
+ FastClick.prototype.onTouchStart = function(event) {
+ var targetElement, touch, selection;
+
+ // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).
+ if (event.targetTouches.length > 1) {
+ return true;
+ }
+
+ targetElement = this.getTargetElementFromEventTarget(event.target);
+ touch = event.targetTouches[0];
+
+ if (deviceIsIOS) {
+
+ // Only trusted events will deselect text on iOS (issue #49)
+ selection = window.getSelection();
+ if (selection.rangeCount && !selection.isCollapsed) {
+ return true;
+ }
+
+ if (!deviceIsIOS4) {
+
+ // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):
+ // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched
+ // with the same identifier as the touch event that previously triggered the click that triggered the alert.
+ // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an
+ // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.
+ // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string,
+ // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long,
+ // random integers, it's safe to to continue if the identifier is 0 here.
+ if (touch.identifier && touch.identifier === this.lastTouchIdentifier) {
+ event.preventDefault();
+ return false;
+ }
+
+ this.lastTouchIdentifier = touch.identifier;
+
+ // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:
+ // 1) the user does a fling scroll on the scrollable layer
+ // 2) the user stops the fling scroll with another tap
+ // then the event.target of the last 'touchend' event will be the element that was under the user's finger
+ // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check
+ // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).
+ this.updateScrollParent(targetElement);
+ }
+ }
+
+ this.trackingClick = true;
+ this.trackingClickStart = event.timeStamp;
+ this.targetElement = targetElement;
+
+ this.touchStartX = touch.pageX;
+ this.touchStartY = touch.pageY;
+
+ // Prevent phantom clicks on fast double-tap (issue #36)
+ if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
+ event.preventDefault();
+ }
+
+ return true;
+ };
+
+
+ /**
+ * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.
+ *
+ * @param {Event} event
+ * @returns {boolean}
+ */
+ FastClick.prototype.touchHasMoved = function(event) {
+ var touch = event.changedTouches[0], boundary = this.touchBoundary;
+
+ if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {
+ return true;
+ }
+
+ return false;
+ };
+
+
+ /**
+ * Update the last position.
+ *
+ * @param {Event} event
+ * @returns {boolean}
+ */
+ FastClick.prototype.onTouchMove = function(event) {
+ if (!this.trackingClick) {
+ return true;
+ }
+
+ // If the touch has moved, cancel the click tracking
+ if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {
+ this.trackingClick = false;
+ this.targetElement = null;
+ }
+
+ return true;
+ };
+
+
+ /**
+ * Attempt to find the labelled control for the given label element.
+ *
+ * @param {EventTarget|HTMLLabelElement} labelElement
+ * @returns {Element|null}
+ */
+ FastClick.prototype.findControl = function(labelElement) {
+
+ // Fast path for newer browsers supporting the HTML5 control attribute
+ if (labelElement.control !== undefined) {
+ return labelElement.control;
+ }
+
+ // All browsers under test that support touch events also support the HTML5 htmlFor attribute
+ if (labelElement.htmlFor) {
+ return document.getElementById(labelElement.htmlFor);
+ }
+
+ // If no for attribute exists, attempt to retrieve the first labellable descendant element
+ // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label
+ return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');
+ };
+
+
+ /**
+ * On touch end, determine whether to send a click event at once.
+ *
+ * @param {Event} event
+ * @returns {boolean}
+ */
+ FastClick.prototype.onTouchEnd = function(event) {
+ var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;
+
+ if (!this.trackingClick) {
+ return true;
+ }
+
+ // Prevent phantom clicks on fast double-tap (issue #36)
+ if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
+ this.cancelNextClick = true;
+ return true;
+ }
+
+ if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) {
+ return true;
+ }
+
+ // Reset to prevent wrong click cancel on input (issue #156).
+ this.cancelNextClick = false;
+
+ this.lastClickTime = event.timeStamp;
+
+ trackingClickStart = this.trackingClickStart;
+ this.trackingClick = false;
+ this.trackingClickStart = 0;
+
+ // On some iOS devices, the targetElement supplied with the event is invalid if the layer
+ // is performing a transition or scroll, and has to be re-detected manually. Note that
+ // for this to function correctly, it must be called *after* the event target is checked!
+ // See issue #57; also filed as rdar://13048589 .
+ if (deviceIsIOSWithBadTarget) {
+ touch = event.changedTouches[0];
+
+ // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null
+ targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;
+ targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;
+ }
+
+ targetTagName = targetElement.tagName.toLowerCase();
+ if (targetTagName === 'label') {
+ forElement = this.findControl(targetElement);
+ if (forElement) {
+ this.focus(targetElement);
+ if (deviceIsAndroid) {
+ return false;
+ }
+
+ targetElement = forElement;
+ }
+ } else if (this.needsFocus(targetElement)) {
+
+ // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.
+ // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).
+ if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {
+ this.targetElement = null;
+ return false;
+ }
+
+ this.focus(targetElement);
+ this.sendClick(targetElement, event);
+
+ // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.
+ // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)
+ if (!deviceIsIOS || targetTagName !== 'select') {
+ this.targetElement = null;
+ event.preventDefault();
+ }
+
+ return false;
+ }
+
+ if (deviceIsIOS && !deviceIsIOS4) {
+
+ // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled
+ // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).
+ scrollParent = targetElement.fastClickScrollParent;
+ if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {
+ return true;
+ }
+ }
+
+ // Prevent the actual click from going though - unless the target node is marked as requiring
+ // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.
+ if (!this.needsClick(targetElement)) {
+ event.preventDefault();
+ this.sendClick(targetElement, event);
+ }
+
+ return false;
+ };
+
+
+ /**
+ * On touch cancel, stop tracking the click.
+ *
+ * @returns {void}
+ */
+ FastClick.prototype.onTouchCancel = function() {
+ this.trackingClick = false;
+ this.targetElement = null;
+ };
+
+
+ /**
+ * Determine mouse events which should be permitted.
+ *
+ * @param {Event} event
+ * @returns {boolean}
+ */
+ FastClick.prototype.onMouse = function(event) {
+
+ // If a target element was never set (because a touch event was never fired) allow the event
+ if (!this.targetElement) {
+ return true;
+ }
+
+ if (event.forwardedTouchEvent) {
+ return true;
+ }
+
+ // Programmatically generated events targeting a specific element should be permitted
+ if (!event.cancelable) {
+ return true;
+ }
+
+ // Derive and check the target element to see whether the mouse event needs to be permitted;
+ // unless explicitly enabled, prevent non-touch click events from triggering actions,
+ // to prevent ghost/doubleclicks.
+ if (!this.needsClick(this.targetElement) || this.cancelNextClick) {
+
+ // Prevent any user-added listeners declared on FastClick element from being fired.
+ if (event.stopImmediatePropagation) {
+ event.stopImmediatePropagation();
+ } else {
+
+ // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
+ event.propagationStopped = true;
+ }
+
+ // Cancel the event
+ event.stopPropagation();
+ event.preventDefault();
+
+ return false;
+ }
+
+ // If the mouse event is permitted, return true for the action to go through.
+ return true;
+ };
+
+
+ /**
+ * On actual clicks, determine whether this is a touch-generated click, a click action occurring
+ * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or
+ * an actual click which should be permitted.
+ *
+ * @param {Event} event
+ * @returns {boolean}
+ */
+ FastClick.prototype.onClick = function(event) {
+ var permitted;
+
+ // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.
+ if (this.trackingClick) {
+ this.targetElement = null;
+ this.trackingClick = false;
+ return true;
+ }
+
+ // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.
+ if (event.target.type === 'submit' && event.detail === 0) {
+ return true;
+ }
+
+ permitted = this.onMouse(event);
+
+ // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.
+ if (!permitted) {
+ this.targetElement = null;
+ }
+
+ // If clicks are permitted, return true for the action to go through.
+ return permitted;
+ };
+
+
+ /**
+ * Remove all FastClick's event listeners.
+ *
+ * @returns {void}
+ */
+ FastClick.prototype.destroy = function() {
+ var layer = this.layer;
+
+ if (deviceIsAndroid) {
+ layer.removeEventListener('mouseover', this.onMouse, true);
+ layer.removeEventListener('mousedown', this.onMouse, true);
+ layer.removeEventListener('mouseup', this.onMouse, true);
+ }
+
+ layer.removeEventListener('click', this.onClick, true);
+ layer.removeEventListener('touchstart', this.onTouchStart, false);
+ layer.removeEventListener('touchmove', this.onTouchMove, false);
+ layer.removeEventListener('touchend', this.onTouchEnd, false);
+ layer.removeEventListener('touchcancel', this.onTouchCancel, false);
+ };
+
+
+ /**
+ * Check whether FastClick is needed.
+ *
+ * @param {Element} layer The layer to listen on
+ */
+ FastClick.notNeeded = function(layer) {
+ var metaViewport;
+ var chromeVersion;
+ var blackberryVersion;
+ var firefoxVersion;
+
+ // Devices that don't support touch don't need FastClick
+ if (typeof window.ontouchstart === 'undefined') {
+ return true;
+ }
+
+ // Chrome version - zero for other browsers
+ chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];
+
+ if (chromeVersion) {
+
+ if (deviceIsAndroid) {
+ metaViewport = document.querySelector('meta[name=viewport]');
+
+ if (metaViewport) {
+ // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89)
+ if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
+ return true;
+ }
+ // Chrome 32 and above with width=device-width or less don't need FastClick
+ if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {
+ return true;
+ }
+ }
+
+ // Chrome desktop doesn't need FastClick (issue #15)
+ } else {
+ return true;
+ }
+ }
+
+ if (deviceIsBlackBerry10) {
+ blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/);
+
+ // BlackBerry 10.3+ does not require Fastclick library.
+ // https://github.com/ftlabs/fastclick/issues/251
+ if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {
+ metaViewport = document.querySelector('meta[name=viewport]');
+
+ if (metaViewport) {
+ // user-scalable=no eliminates click delay.
+ if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
+ return true;
+ }
+ // width=device-width (or less than device-width) eliminates click delay.
+ if (document.documentElement.scrollWidth <= window.outerWidth) {
+ return true;
+ }
+ }
+ }
+ }
+
+ // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97)
+ if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') {
+ return true;
+ }
+
+ // Firefox version - zero for other browsers
+ firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];
+
+ if (firefoxVersion >= 27) {
+ // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896
+
+ metaViewport = document.querySelector('meta[name=viewport]');
+ if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) {
+ return true;
+ }
+ }
+
+ // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version
+ // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx
+ if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') {
+ return true;
+ }
+
+ return false;
+ };
+
+
+ /**
+ * Factory method for creating a FastClick object
+ *
+ * @param {Element} layer The layer to listen on
+ * @param {Object} [options={}] The options to override the defaults
+ */
+ FastClick.attach = function(layer, options) {
+ return new FastClick(layer, options);
+ };
+
+
+ if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
+
+ // AMD. Register as an anonymous module.
+ define(function() {
+ return FastClick;
+ });
+ } else if (typeof module !== 'undefined' && module.exports) {
+ module.exports = FastClick.attach;
+ module.exports.FastClick = FastClick;
+ } else {
+ window.FastClick = FastClick;
+ }
+}());
--- /dev/null
+{
+"version": 3,
+"mappings": "AA8aI,uBAAwB;EACtB,WAAW,EAAE,eAAe;;AAG9B,wBAAyB;EACvB,WAAW,EAAE,eAA8B;EAC3C,KAAK,EAjEM,CAAC;;AAoEd,6BAA8B;EAC5B,WAAW,EAAE,qCAAgC;EAC7C,KAAK,EAtEM,CAAC;;AAyEd,yBAA0B;EACxB,WAAW,EAAE,yCAA+B;EAC5C,KAAK,EAAE,SAA0B;;AAGnC,8BAA+B;EAC7B,WAAW,EAAE,8DAAiC;EAC9C,KAAK,EAAE,SAA0B;;AAGnC,wBAAyB;EACvB,WAAW,EAAE,yCAA8B;EAC3C,KAAK,EAAE,SAAyB;;AAGlC,6BAA8B;EAC5B,WAAW,EAAE,8DAAgC;EAC7C,KAAK,EAAE,SAAyB;;AAGlC,yBAA0B;EACxB,WAAW,EAAE,yCAA+B;EAC5C,KAAK,EAAE,SAA0B;;AAGnC,8BAA+B;EAC7B,WAAW,EAAE,+DAAiC;EAC9C,KAAK,EAAE,SAA0B;;AAGnC,0BAA2B;EACzB,WAAW,EAAE,0CAAgC;EAC7C,KAAK,EAAE,UAA2B;;AAGpC,wCAAyC;EACvC,WAAW,EAAE,KAAa;;AAQ5B,UAAW;EAAE,MAAM,EAAE,IAAI;;AAGzB;;OAEQ;EAzVV,kBAAkB,EA0VM,UAAU;EAzV/B,eAAe,EAyVM,UAAU;EAxV1B,UAAU,EAwVM,UAAU;;AAGhC;IACK;EAAE,SAAS,EA/dH,IAAI;;AAkejB,IAAK;EACH,UAAU,EA/KN,IAAI;EAgLR,KAAK,EA/KO,IAAI;EAgLhB,MAAM,EA3FQ,IAAI;EA4FlB,WAAW,EAhLE,sDAAuB;EAiLpC,UAAU,EA/KE,MAAM;EAgLlB,WAAW,EAjLE,MAAmB;EAkLhC,WAAW,EAteE,GAAG;EAuehB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;;AAGtB,OAAQ;EAAE,MAAM,EAjGK,OAAO;;AAoG1B,GAAI;EAAE,SAAS,EAAE,IAAI;EAAE,MAAM,EAAE,IAAI;;AAEnC,GAAI;EAAE,sBAAsB,EAAE,OAAO;;AAKnC;;;;;;;;mBAEO;EAAE,SAAS,EAAE,eAAe;;AAKrC,KAAM;EAAE,KAAK,EAAE,eAAe;;AAC9B,MAAO;EAAE,KAAK,EAAE,gBAAgB;;AAtSlC,iCAAkB;EAAE,OAAO,EAAE,GAAG;EAAE,OAAO,EAAE,KAAK;AAChD,eAAQ;EAAE,KAAK,EAAE,IAAI;;AAySnB,KAAM;EACJ,OAAO,EAAE,IAAI;;AAIf,UAAW;EAAE,UAAU,EAAE,MAAM;;AAM/B,YAAa;EAAE,sBAAsB,EAAE,WAAW;EAAE,uBAAuB,EAAE,SAAS;;AAGtF,GAAI;EACF,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM;;AAQxB,QAAS;EAAE,MAAM,EAAE,IAAI;EAAE,UAAU,EAAE,IAAI;;AAGzC,MAAO;EAAE,KAAK,EAAE,IAAI;;AChVpB,IAAK;EA9JL,MAAM,EAAE,MAAM;EACd,SAAS,EA1DD,OAAc;EA2DtB,KAAK,EAAE,IAAI;EDuKb,uBAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,UAAQ;IAAE,KAAK,EAAE,IAAI;ECRd;0BACW;IA7HhB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;EA8HZ,kBAAK;IAAC,WAAW,EAAC,CAAC;IAAE,YAAY,EAAC,CAAC;EAGrC,SAAK;IA7LP,MAAM,EAAE,YAAuB;IAC/B,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;ID4Lb,iCAAkB;MAAE,OAAO,EAAE,GAAG;MAAE,OAAO,EAAE,KAAK;IAChD,eAAQ;MAAE,KAAK,EAAE,IAAI;ICDf,kBAAW;MAhLf,MAAM,EAAE,CAAC;MACT,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,IAAI;MD8Kb,mDAAkB;QAAE,OAAO,EAAE,GAAG;QAAE,OAAO,EAAE,KAAK;MAChD,wBAAQ;QAAE,KAAK,EAAE,IAAI;;ACGnB;QACS;EAjIT,YAAY,EAAE,SAAoB;EAClC,aAAa,EAAE,SAAoB;EAKnC,KAAK,EAzFE,IAAwC;EAoGR,KAAK,EDkN9B,IAAI;;AC9FhB;;;;mBAAiB;EACf,KAAK,EAzOM,KAAmB;AA2OhC;;;;YAAU;EACR,KAAK,ED0FK,IAAI;;ACtFlB,kBAAoB;EArGpB,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EA/FA,CAAC;IA+FmC,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAhGL,CAAC;IAgGwC,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,QAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,QAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkC7F;UACS;IA7DP,QAAQ,EAAE,QAAQ;IAYlB,YAAY,EAAE,SAAoB;IAClC,aAAa,EAAE,SAAoB;IAgBI,KAAK,EDkN9B,IAAI;;EC9KlB,QAAgB;IA/ChB,KAAK,EAzFE,QAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,IAAwC;;EA4I/C,eAAuB;IA3BX,WAAwB,EAAE,YAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,mBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA8BrF,kBAAsB;IACpB,KAAK,EDsKS,IAAI;ICrKlB,IAAI,EAAE,IAAI;IACV,WAAwB,EAAE,CAAC;IAC3B,YAA6B,EAAE,CAAC;IAChC,KAAK,EAAE,IAAI;;EAGb;yBAC2B;IA7CzB,WAAwB,EAAE,IAAI;IAC9B,YAA6B,EAAE,IAAI;IACnC,KAAK,EAAE,IAAI;;EA6Cb;2BAC6B;IAC3B,KAAK,ED0JS,IAAI;ICzJlB,WAAwB,EAAE,CAAC;IAC3B,YAA6B,EAAE,CAAC;;EAIlC;oCACqC;IACnC,KAAK,EAAE,IAAI;;EAIb;sCACwC;IACtC,KAAK,ED4IS,IAAI;;ECzIpB;oCACsC;IACpC,KAAK,EA/LU,KAAmB;;EAoMhC;gCACW;IAzGb,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;EA0Gd,wBAAK;IAAC,WAAW,EAAC,CAAC;IAAE,YAAY,EAAC,CAAC;EAGnC;kCACW;IAxGb,YAAY,EAAE,SAAoB;IAClC,aAAa,EAAE,SAAoB;IAgBI,KAAK,EDkN9B,IAAI;AClFlB,6CAAqB;EAzGrB,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EA/FA,CAAC;IA+FmC,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAhGL,CAAC;IAgGwC,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,QAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,QAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,eAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,eAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,eAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,eAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkC7F;UACS;IA7DP,QAAQ,EAAE,QAAQ;IAYlB,YAAY,EAAE,SAAoB;IAClC,aAAa,EAAE,SAAoB;IAgBI,KAAK,EDkN9B,IAAI;;EC9KlB,SAAgB;IA/ChB,KAAK,EAzFE,QAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,UAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,UAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,UAAgB;IA/ChB,KAAK,EAzFE,IAAwC;;EA4I/C,gBAAuB;IA3BX,WAAwB,EAAE,YAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,mBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,iBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,iBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA8BrF,mBAAsB;IACpB,KAAK,EDsKS,IAAI;ICrKlB,IAAI,EAAE,IAAI;IACV,WAAwB,EAAE,CAAC;IAC3B,YAA6B,EAAE,CAAC;IAChC,KAAK,EAAE,IAAI;;EAGb;0BAC2B;IA7CzB,WAAwB,EAAE,IAAI;IAC9B,YAA6B,EAAE,IAAI;IACnC,KAAK,EAAE,IAAI;;EA6Cb;4BAC6B;IAC3B,KAAK,ED0JS,IAAI;ICzJlB,WAAwB,EAAE,CAAC;IAC3B,YAA6B,EAAE,CAAC;;EAIlC;qCACqC;IACnC,KAAK,EAAE,IAAI;;EAIb;uCACwC;IACtC,KAAK,ED4IS,IAAI;;ECzIpB;qCACsC;IACpC,KAAK,EA/LU,KAAmB;;EAoMhC;iCACW;IAzGb,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;EA0Gd,yBAAK;IAAC,WAAW,EAAC,CAAC;IAAE,YAAY,EAAC,CAAC;EAGnC;mCACW;IAxGb,YAAY,EAAE,SAAoB;IAClC,aAAa,EAAE,SAAoB;IAgBI,KAAK,EDkN9B,IAAI;;EC9Ed,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EA/FA,CAAC;IA+FmC,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAhGL,CAAC;IAgGwC,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,QAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,QAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,OAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,OAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,QAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,QAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAuIvF,QAAY;IAjKhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA2IvF,QAAY;IApKhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;AA+I3F,6CAAoB;EArHpB,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EA/FA,CAAC;IA+FmC,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAhGL,CAAC;IAgGwC,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,QAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,QAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,aAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,aAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EA0B3F,cAAqB;IApDrB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EA8B3F,cAAqB;IAvDrB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkC7F;UACS;IA7DP,QAAQ,EAAE,QAAQ;IAYlB,YAAY,EAAE,SAAoB;IAClC,aAAa,EAAE,SAAoB;IAgBI,KAAK,EDkN9B,IAAI;;EC9KlB,QAAgB;IA/ChB,KAAK,EAzFE,QAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,QAAgB;IA/ChB,KAAK,EAzFE,GAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,SAAwC;;EAwI/C,SAAgB;IA/ChB,KAAK,EAzFE,IAAwC;;EA4I/C,eAAuB;IA3BX,WAAwB,EAAE,YAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,mBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,eAAuB;IA3BX,WAAwB,EAAE,cAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA2BnF,gBAAuB;IA3BX,WAAwB,EAAE,oBAA6C;;EA8BrF,kBAAsB;IACpB,KAAK,EDsKS,IAAI;ICrKlB,IAAI,EAAE,IAAI;IACV,WAAwB,EAAE,CAAC;IAC3B,YAA6B,EAAE,CAAC;IAChC,KAAK,EAAE,IAAI;;EAGb;yBAC2B;IA7CzB,WAAwB,EAAE,IAAI;IAC9B,YAA6B,EAAE,IAAI;IACnC,KAAK,EAAE,IAAI;;EA6Cb;2BAC6B;IAC3B,KAAK,ED0JS,IAAI;ICzJlB,WAAwB,EAAE,CAAC;IAC3B,YAA6B,EAAE,CAAC;;EAIlC;oCACqC;IACnC,KAAK,EAAE,IAAI;;EAIb;sCACwC;IACtC,KAAK,ED4IS,IAAI;;ECzIpB;oCACsC;IACpC,KAAK,EA/LU,KAAmB;;EAoMhC;gCACW;IAzGb,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;EA0Gd,wBAAK;IAAC,WAAW,EAAC,CAAC;IAAE,YAAY,EAAC,CAAC;EAGnC;kCACW;IAxGb,YAAY,EAAE,SAAoB;IAClC,aAAa,EAAE,SAAoB;IAgBI,KAAK,EDkN9B,IAAI;;ECnEd,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EA/FA,CAAC;IA+FmC,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAhGL,CAAC;IAgGwC,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,QAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,QAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,OAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,GAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,OAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,GAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,QAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,QAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;;EAkJvF,QAAY;IA5KhB,QAAQ,EAAE,QAAQ;IAyBR,IAAiB,EAhGpB,SAAwC;IAgGgB,KAAsB,EAAE,IAAI;;EAsJvF,QAAY;IA/KhB,QAAQ,EAAE,QAAQ;IA0BR,KAAsB,EAjGzB,SAAwC;IAiGqB,IAAiB,EAAE,IAAI;ACG3F,UAAW;EAET,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,CAAC;EFwGlB,mCAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,gBAAQ;IAAE,KAAK,EAAE,IAAI;EExGjB,+CAA0B;IACxB,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,YAAY;IAC3B,qEAAa;MAAE,UAAU,EA3HM,OAA4D;MA2HzB,KAAK,EAzH7C,OAAI;IA0H9B,uDAAI;MACF,UAAU,EA/HY,OAAO;MAgI7B,KAAK,EA5HmB,OAAI;MA6H5B,OAAO,EAAE,KAAK;MACd,WAAW,EA5Hc,sDAAiB;MA6H1C,SAAS,EA9Hc,IAAY;MA+HnC,OAAO,EArIc,IAAY;MAsIjC,mEAAQ;QAAE,UAAU,EApIQ,OAA4D;IAuI1F,qEAAW;MACT,OAAO,EAAE,IAAI;MACb,OAAO,EAlIY,SAAgB;MAmInC,mFAAS;QACP,UAAU,EAnIc,OAAM;QAoI9B,OAAO,EAAE,KAAK;;AC3CtB,UAAW;EAzDb,YAAY,EA3BO,KAAK;EA4BxB,YAAY,EA3BO,GAAG;EA4BtB,OAAO,EAAE,KAAK;EACd,SAAS,EAtCO,SAAY;EAuC5B,WAAW,EAxCO,MAAmB;EAyCrC,aAAa,EA7BO,OAAY;EA8BhC,OAAO,EAAE,iCAAuG;EAChH,QAAQ,EAAE,QAAQ;EHgFlB,UAAU,EAPS,sBAAyB;EG5D5C,gBAAgB,EH4OF,OAAO;EG3OrB,YAAY,EAAE,OAAoD;EAIxC,KAAK,EA3Dd,OAAM;EA8FnB,iBAAY;IA7BhB,KAAsB,EAlDD,OAAW;IAmDhC,UAAU,EA9Ca,OAAO;IA+C9B,KAAK,EAtDa,OAAI;IAuDtB,SAAS,EApDa,QAAY;IAqDlC,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,UAA6B;IACzC,OAAO,EAtDa,GAAE;IAuDtB,OAAO,EArDa,SAAU;IAsD9B,QAAQ,EAAE,QAAQ;IAClB,GAAG,EA5Da,GAAG;IA6DnB,gDACQ;MAAE,OAAO,EA1DS,GAAE;EA8ExB,iBAAY;IHlFd,aAAa,EGSF,GAAc;EA0EvB,gBAAY;IHnFd,aAAa,EA4TA,MAAM;EGvOjB,kBAAY;IA7ChB,gBAAgB,EH+OF,OAAO;IG9OrB,YAAY,EAAE,OAAoD;IAIxC,KAAK,EA3Dd,OAAM;EAoGnB,gBAAY;IA9ChB,gBAAgB,EH8OJ,OAAO;IG7OnB,YAAY,EAAE,OAAoD;IAIxC,KAAK,EA3Dd,OAAM;EAqGnB,oBAAY;IA/ChB,gBAAgB,EH6OA,OAAO;IG5OvB,YAAY,EAAE,OAAoD;IAGxC,KAAK,EAzDV,OAA+C;EAqGhE,kBAAU;IAhDd,gBAAgB,EHgPF,OAAO;IG/OrB,YAAY,EAAE,OAAoD;IAIxC,KAAK,EA3Dd,OAAM;EAuGnB,eAAO;IAjDX,gBAAgB,EHiPL,OAAO;IGhPlB,YAAY,EAAE,OAAoD;IAGxC,KAAK,EAzDV,OAA+C;EAuGhE,sBAAc;IAAE,OAAO,EAAE,CAAC;;AClB5B,sBAAuB;EAjEvB,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,CAAC;EAIR,MAAM,EAAE,WAAe;EJgM3B,2DAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,4BAAQ;IAAE,KAAK,EAAE,IAAI;EI7LnB,2BAAK;IACH,OAAO,EAAE,KAAK;IACd,KAAK,EJiSO,IAAI;IIhShB,MAAM,EAAE,IAAI;IAEV,OAAO,EAAE,kBAAuB;;AAsDlC,kBAAoB;EAhDtB,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,IAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,KAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,4CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,QAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,4CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,QAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,4CAA8B;MAAE,KAAK,EAAE,IAAI;AA4C3C,6CAAqB;EApDvB,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,IAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,KAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,2CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,0BAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,0CAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,6CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,0BAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,QAAa;IAEpB,0CAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,6CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,0BAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,QAAa;IAEpB,0CAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,6CAA8B;MAAE,KAAK,EAAE,IAAI;AAgD3C,6CAAoB;EAxDtB,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,IAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,KAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,wBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,SAAa;IAEpB,wCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,0CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,GAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,4CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,QAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,4CAA8B;MAAE,KAAK,EAAE,IAAI;;EAR7C,yBAAK;IACH,UAAU,EAAE,IAAI;IAIhB,KAAK,EAAE,QAAa;IAEpB,yCAAkB;MAAE,KAAK,EAAE,IAAI;IAC/B,4CAA8B;MAAE,KAAK,EAAE,IAAI;ACiD7C,YAAa;EA1Ef,YAAY,EAvBO,KAAK;EAwBxB,YAAY,EAzBM,GAAG;EA0BrB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;EAChB,WAAwB,EAAE,CAAC;EAC3B,QAAQ,EAAE,MAAM;EAChB,OAAO,EAnCO,4BAAgB;EAsC9B,gBAAgB,EAzCP,OAA8C;EA0CvD,YAAY,EAhCO,SAA0D;ELY3E,aAAa,EKXF,GAAc;EAmGvB,gBAAI;IA7DR,KAAK,EAlCY,OAAc;IAmC/B,KAAK,ELuRW,IAAI;IKtRpB,SAAS,EArCO,SAAY;IAsC5B,WAAW,EAtCK,SAAY;IAuC5B,MAAM,EAAE,CAAC;IACT,cAAc,EApCO,SAAS;IAsC9B,kDAAqB;MAAE,eAAe,EArCrB,SAAS;IAuC1B,kBAAE;MACA,KAAK,EA5CU,OAAc;IAgD/B,wBAAU;MACR,KAAK,EAhDkB,OAAI;MAiD3B,MAAM,ELkVa,OAAO;MKjV1B,0BAAE;QACA,KAAK,EAnDgB,OAAI;QAoDzB,MAAM,EL+UW,OAAO;MK5U1B,kIACmB;QAAE,eAAe,EAAE,IAAI;IAI5C,4BAAc;MACZ,KAAK,EA5DsB,OAAS;MA6DpC,8BAAE;QAAE,KAAK,EA7DkB,OAAS;MA+DpC;0CAGQ;QACN,KAAK,EAnEoB,OAAS;QAoElC,MAAM,EL+TY,WAAW;QK9T7B,eAAe,EAAE,IAAI;IAIzB,uBAAS;MACP,KAAK,EArEW,OAAK;MAsErB,OAAO,EAAE,GAAiB;MAC1B,MAAM,EAAE,SAAqB;MAC7B,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAvEgB,GAAG;IA0ExB,mCAAqB;MACnB,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,CAAC;;;AAeT,qDAAsD;EACpD,OAAO,EAAE,GAAG;;ACyFd,eAAgB;EA7IhB,kBAAkB,EAAE,IAAI;EACxB,eAAe,EAAE,IAAI;EACrB,aAAa,EAAC,CAAC;EACf,YAAY,EA1CM,KAAK;EA2CvB,YAAY,EA5CM,CAAC;EA6CnB,MAAM,ENgVa,OAAO;EM/U1B,WAAW,EA5DM,sDAAiB;EA6DlC,WAAW,EAtDM,MAAmB;EAuDpC,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,WAAyB;EACjC,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAzDM,MAAM;EA0DtB,eAAe,EAAE,IAAI;EAER,OAAO,EAxEP,YAAY;EAuFzB,OAAO,EAAE,wBAA+D;EAErC,SAAS,EAhF9B,IAAY;EAqI1B,gBAAgB,EA1HF,OAAc;EA2H5B,YAAY,EARK,OAAwG;EAazH,KAAK,EA/IW,OAAM;ENsHxB,UAAU,EAPS,+BAAyB;EM4B1C,wDACQ;IAAE,gBAAgB,EAVT,OAAwG;EAezH,wDACQ;IACN,KAAK,EAnJS,OAAM;EAyMpB,mCAAY;IAhEd,gBAAgB,EAvHQ,OAAgB;IAwHxC,YAAY,EAtHgB,OAA0B;IA2HtD,KAAK,EA9Ie,OAAI;IA0IxB,gGACQ;MAAE,gBAAgB,EAxHE,OAA0B;IA6HtD,gGACQ;MACN,KAAK,EAlJa,OAAI;EAyMtB,+BAAY;IAjEd,gBAAgB,EApHM,OAAc;IAqHpC,YAAY,EAnHc,OAAwB;IAwHlD,KAAK,EA/IW,OAAM;IA2ItB,wFACQ;MAAE,gBAAgB,EArHA,OAAwB;IA0HlD,wFACQ;MACN,KAAK,EAnJS,OAAM;EA2MpB,2BAAY;IAlEd,gBAAgB,EAjHI,OAAY;IAkHhC,YAAY,EAhHY,OAAsB;IAqH9C,KAAK,EA/IW,OAAM;IA2ItB,gFACQ;MAAE,gBAAgB,EAlHF,OAAsB;IAuH9C,gFACQ;MACN,KAAK,EAnJS,OAAM;EA4MpB,+BAAY;IAnEd,gBAAgB,EA9GM,OAAc;IA+GpC,YAAY,EA7Gc,OAAwB;IAkHlD,KAAK,EA/IW,OAAM;IA2ItB,wFACQ;MAAE,gBAAgB,EA/GA,OAAwB;IAoHlD,wFACQ;MACN,KAAK,EAnJS,OAAM;EA6MpB,yBAAY;IApEd,gBAAgB,EA3GG,OAAW;IA4G9B,YAAY,EA1GW,OAAqB;IA+G5C,KAAK,EA9Ie,OAAI;IA0IxB,4EACQ;MAAE,gBAAgB,EA5GH,OAAqB;IAiH5C,4EACQ;MACN,KAAK,EAnJS,OAAM;EA+MpB,2BAAS;IA7HX,OAAO,EAAE,kCAA+D;IAKrC,SAAS,EAlF9B,OAAY;EA2MxB,2BAAS;IA9HX,OAAO,EAAE,kCAA+D;IAIrC,SAAS,EAnF9B,SAAY;EA8MxB,yBAAS;IA/HX,OAAO,EAAE,kCAA+D;IAGrC,SAAS,EAnF9B,SAAY;EAgNxB,6BAAS;IAhIX,OAAO,EAAE,wBAA+D;IAErC,SAAS,EAhF9B,IAAY;IA0FxB,cAAc,EAAE,SAAsB;IACtC,WAAW,EAxGJ,IAAY;IA6GrB,YAAY,EA7GH,IAAY;IA8GrB,aAAa,EA9GJ,IAAY;IA+GrB,KAAK,EAAE,IAAI;EA8GT,qCAAc;IAAE,UAAU,EAAE,IAAI;IAAE,WAAW,EC/IzC,OAAmD;EDgJvD,uCAAc;IAAE,UAAU,EAAE,KAAK;IAAE,aAAa,EChJ5C,OAAmD;EDkJvD,6BAAS;IN5MX,aAAa,EMwBD,GAAc;EAqLxB,2BAAS;IN7MX,aAAa,EMyBF,MAAe;EAsLxB,sEAAwB;IAjF1B,gBAAgB,EA1HF,OAAc;IA2H5B,YAAY,EARK,OAAwG;IAazH,KAAK,EA/IW,OAAM;IAyJtB,UAAU,EAAE,IAAI;IAChB,MAAM,EAlHe,OAAqB;IAmH1C,OAAO,EApHe,GAAE;IAoGxB,8LACQ;MAAE,gBAAgB,EAVT,OAAwG;IAezH,8LACQ;MACN,KAAK,EAnJS,OAAM;IA4JtB,8LACQ;MAAE,gBAAgB,EA9IZ,OAAc;IA4MxB,8GAAY;MAlFhB,gBAAgB,EAvHQ,OAAgB;MAwHxC,YAAY,EAtHgB,OAA0B;MA2HtD,KAAK,EA9Ie,OAAI;MAwJxB,UAAU,EAAE,IAAI;MAChB,MAAM,EAlHe,OAAqB;MAmH1C,OAAO,EApHe,GAAE;MAoGxB,8QACQ;QAAE,gBAAgB,EAxHE,OAA0B;MA6HtD,8QACQ;QACN,KAAK,EAlJa,OAAI;MA2JxB,8QACQ;QAAE,gBAAgB,EA3IF,OAAgB;IA0MpC,sGAAU;MAnFd,gBAAgB,EApHM,OAAc;MAqHpC,YAAY,EAnHc,OAAwB;MAwHlD,KAAK,EA/IW,OAAM;MAyJtB,UAAU,EAAE,IAAI;MAChB,MAAM,EAlHe,OAAqB;MAmH1C,OAAO,EApHe,GAAE;MAoGxB,8PACQ;QAAE,gBAAgB,EArHA,OAAwB;MA0HlD,8PACQ;QACN,KAAK,EAnJS,OAAM;MA4JtB,8PACQ;QAAE,gBAAgB,EAxIJ,OAAc;IAwMhC,8FAAQ;MApFZ,gBAAgB,EAjHI,OAAY;MAkHhC,YAAY,EAhHY,OAAsB;MAqH9C,KAAK,EA/IW,OAAM;MAyJtB,UAAU,EAAE,IAAI;MAChB,MAAM,EAlHe,OAAqB;MAmH1C,OAAO,EApHe,GAAE;MAoGxB,8OACQ;QAAE,gBAAgB,EAlHF,OAAsB;MAuH9C,8OACQ;QACN,KAAK,EAnJS,OAAM;MA4JtB,8OACQ;QAAE,gBAAgB,EArIN,OAAY;IAsM5B,sGAAU;MArFd,gBAAgB,EA9GM,OAAc;MA+GpC,YAAY,EA7Gc,OAAwB;MAkHlD,KAAK,EA/IW,OAAM;MAyJtB,UAAU,EAAE,IAAI;MAChB,MAAM,EAlHe,OAAqB;MAmH1C,OAAO,EApHe,GAAE;MAoGxB,8PACQ;QAAE,gBAAgB,EA/GA,OAAwB;MAoHlD,8PACQ;QACN,KAAK,EAnJS,OAAM;MA4JtB,8PACQ;QAAE,gBAAgB,EAlIJ,OAAc;IAoMhC,0FAAO;MAtFX,gBAAgB,EA3GG,OAAW;MA4G9B,YAAY,EA1GW,OAAqB;MA+G5C,KAAK,EA9Ie,OAAI;MAwJxB,UAAU,EAAE,IAAI;MAChB,MAAM,EAlHe,OAAqB;MAmH1C,OAAO,EApHe,GAAE;MAoGxB,sOACQ;QAAE,gBAAgB,EA5GH,OAAqB;MAiH5C,sOACQ;QACN,KAAK,EAnJS,OAAM;MA4JtB,sOACQ;QAAE,gBAAgB,EA/HP,OAAW;;AAsM9B,wBAAyB;EAAC,MAAM,EAAC,CAAC;EAAE,OAAO,EAAC,CAAC;;AAE7C,6CAAqB;EACnB,eAAgB;IApKL,OAAO,EAqK4B,YAAY;AElG5D,aAAc;EAtId,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,IAAiB,EAAE,CAAC;ERqNtB,yCAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,mBAAQ;IAAE,KAAK,EAAE,IAAI;EQ/Ef,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,GAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EASzB,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,SAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EASzB,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,GAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EASzB,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,GAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EASzB,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,SAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EASzB,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,SAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EASzB,uBAAgB;IA1EtB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAwF5B,KAAK,EAAE,KAA6B;IAhHtC,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA0G7B,+DAAgB;MAAE,KAAK,EAAE,IAAI;EAY3B,kBAAK;IA7ET,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAxB9B,uDAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,6EAAgB;MACd,WAAwB,EAAE,CAAC;EAyHzB,wBAAK;IAhFX,OAAO,EApBkB,KAAK;IAqB9B,MAAM,EApBkB,CAAC;IAmGwC,KAAK,EAAE,IAAI;IAhI5E,mEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,yFAAgB;MACd,WAAwB,EAAE,CAAC;IAuB7B,mEAAkB;MAChB,YAAY,EAAE,wBAAuB;MACrC,iBAAiB,EAAE,CAAC;MACpB,UAAU,EAAE,SAAgC;MAC5C,OAAO,EAAE,KAAK;MACd,MAAM,EAAC,CAAC;IAEV,iCAAS;MACL,KAAK,EAAE,IAAI;IAIb,yFAAgB;MACd,UAAU,EAAE,CAAC;EAyFb,kCAAK;IApFX,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAxB9B,uFAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,6GAAgB;MACd,WAAwB,EAAE,CAAC;IA+HvB,wCAAsB;MAFxB,kCAAK;QApFX,OAAO,EApBkB,KAAK;QAqB9B,MAAM,EApBkB,CAAC;QA2Gf,KAAK,EAAE,IAAI;QAxIrB,uFAAkB;UAChB,WAAwB,EAAE,SAAgC;UAC1D,YAAY,EAAE,wBAAuB;QAIrC,6GAAgB;UACd,WAAwB,EAAE,CAAC;QAuB7B,uFAAkB;UAChB,YAAY,EAAE,wBAAuB;UACrC,iBAAiB,EAAE,CAAC;UACpB,UAAU,EAAE,SAAgC;UAC5C,OAAO,EAAE,KAAK;UACd,MAAM,EAAC,CAAC;QAEV,2CAAS;UACL,KAAK,EAAE,IAAI;QAIb,6GAAgB;UACd,UAAU,EAAE,CAAC;EAkGf,wBAAa;IA7FjB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAxB9B,mEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,yFAAgB;MACd,WAAwB,EAAE,CAAC;IA2E7B;;;sCAGU;MRzFV,aAAa,EQyFe,CAAC;IAC7B,6KAGwB;MRnFxB,iCAAqC,EMczB,GAAc;MNb1B,8BAAkC,EMatB,GAAc;MNZ1B,yBAA6B,EMYjB,GAAc;MNX1B,sBAA0B,EMWd,GAAc;IE6E1B,yKAGuB;MR9FvB,kCAAqC,EMczB,GAAc;MNb1B,+BAAkC,EMatB,GAAc;MNZ1B,0BAA6B,EMYjB,GAAc;MNX1B,uBAA0B,EMWd,GAAc;EE0HxB,8BAAmB;IA9FvB,OAAO,EApBkB,KAAK;IAqB9B,MAAM,EApBkB,CAAC;IA7BzB,+EAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,qGAAgB;MACd,WAAwB,EAAE,CAAC;IAuB7B,+EAAkB;MAChB,YAAY,EAAE,wBAAuB;MACrC,iBAAiB,EAAE,CAAC;MACpB,UAAU,EAAE,SAAgC;MAC5C,OAAO,EAAE,KAAK;MACd,MAAM,EAAC,CAAC;IAEV,uCAAS;MACL,KAAK,EAAE,IAAI;IAIb,qGAAgB;MACd,UAAU,EAAE,CAAC;IAuCjB;;;4CAGU;MRzFV,aAAa,EQyFe,CAAC;IAC7B,qMAGwB;MR9ExB,uBAA4B,EMShB,GAAc;MNR1B,wBAA6B,EMQjB,GAAc;MNP1B,sBAA2B,EMOf,GAAc;MNN1B,uBAA4B,EMMhB,GAAc;IE6E1B,iMAGuB;MRzFvB,0BAA4B,EMShB,GAAc;MNR1B,2BAA6B,EMQjB,GAAc;MNP1B,yBAA2B,EMOf,GAAc;MNN1B,0BAA4B,EMMhB,GAAc;EE4HtB,6CAAqB;IADvB,wCAA6B;MA/FjC,OAAO,EAzBkB,YAAY;MA0BrC,MAAM,EAzBkB,MAAM;MAxB9B,mGAAkB;QAChB,WAAwB,EAAE,SAAgC;QAC1D,YAAY,EAAE,wBAAuB;MAIrC,yHAAgB;QACd,WAAwB,EAAE,CAAC;MA2E7B;;;wDAGU;QRzFV,aAAa,EQyFe,CAAC;MAC7B,6OAGwB;QRnFxB,iCAAqC,EMczB,GAAc;QNb1B,8BAAkC,EMatB,GAAc;QNZ1B,yBAA6B,EMYjB,GAAc;QNX1B,sBAA0B,EMWd,GAAc;ME6E1B,yOAGuB;QR9FvB,kCAAqC,EMczB,GAAc;QNb1B,+BAAkC,EMatB,GAAc;QNZ1B,0BAA6B,EMYjB,GAAc;QNX1B,uBAA0B,EMWd,GAAc;EE+HtB,wCAAsB;IAJxB,wCAA6B;MA/FjC,OAAO,EApBkB,KAAK;MAqB9B,MAAM,EApBkB,CAAC;MA7BzB,mGAAkB;QAChB,WAAwB,EAAE,SAAgC;QAC1D,YAAY,EAAE,wBAAuB;MAIrC,yHAAgB;QACd,WAAwB,EAAE,CAAC;MAuB7B,mGAAkB;QAChB,YAAY,EAAE,wBAAuB;QACrC,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,SAAgC;QAC5C,OAAO,EAAE,KAAK;QACd,MAAM,EAAC,CAAC;MAEV,iDAAS;QACL,KAAK,EAAE,IAAI;MAIb,yHAAgB;QACd,UAAU,EAAE,CAAC;MAuCjB;;;wDAGU;QRzFV,aAAa,EQyFe,CAAC;MAC7B,6OAGwB;QR9ExB,uBAA4B,EMShB,GAAc;QNR1B,wBAA6B,EMQjB,GAAc;QNP1B,sBAA2B,EMOf,GAAc;QNN1B,uBAA4B,EMMhB,GAAc;ME6E1B,yOAGuB;QRzFvB,0BAA4B,EMShB,GAAc;QNR1B,2BAA6B,EMQjB,GAAc;QNP1B,yBAA2B,EMOf,GAAc;QNN1B,0BAA4B,EMMhB,GAAc;EEoIxB,uBAAY;IAxGhB,OAAO,EAzBkB,YAAY;IA0BrC,MAAM,EAzBkB,MAAM;IAxB9B,iEAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,uFAAgB;MACd,WAAwB,EAAE,CAAC;IA2E7B;;;qCAGU;MRzFV,aAAa,EQyFe,CAAC;IAC7B,yKAGwB;MRnFxB,iCAAqC,EMe1B,MAAe;MNd1B,8BAAkC,EMcvB,MAAe;MNb1B,yBAA6B,EMalB,MAAe;MNZ1B,sBAA0B,EMYf,MAAe;IE4E1B,qKAGuB;MR9FvB,kCAAqC,EMe1B,MAAe;MNd1B,+BAAkC,EMcvB,MAAe;MNb1B,0BAA6B,EMalB,MAAe;MNZ1B,uBAA0B,EMYf,MAAe;EEoIxB,6BAAkB;IAzGtB,OAAO,EApBkB,KAAK;IAqB9B,MAAM,EApBkB,CAAC;IA7BzB,6EAAkB;MAChB,WAAwB,EAAE,SAAgC;MAC1D,YAAY,EAAE,wBAAuB;IAIrC,mGAAgB;MACd,WAAwB,EAAE,CAAC;IAuB7B,6EAAkB;MAChB,YAAY,EAAE,wBAAuB;MACrC,iBAAiB,EAAE,CAAC;MACpB,UAAU,EAAE,SAAgC;MAC5C,OAAO,EAAE,KAAK;MACd,MAAM,EAAC,CAAC;IAEV,sCAAS;MACL,KAAK,EAAE,IAAI;IAIb,mGAAgB;MACd,UAAU,EAAE,CAAC;IAuCjB;;;2CAGU;MRzFV,aAAa,EQyFe,CAAC;IAC7B,iMAGwB;MR9ExB,uBAA4B,EMnCnB,IAAY;MNoCrB,wBAA6B,EMpCpB,IAAY;MNqCrB,sBAA2B,EMrClB,IAAY;MNsCrB,uBAA4B,EMtCnB,IAAY;IEyHrB,6LAGuB;MRzFvB,0BAA4B,EMnCnB,IAAY;MNoCrB,2BAA6B,EMpCpB,IAAY;MNqCrB,yBAA2B,EMrClB,IAAY;MNsCrB,0BAA4B,EMtCnB,IAAY;EEmLjB,6CAAqB;IADvB,uCAA4B;MA1GhC,OAAO,EAzBkB,YAAY;MA0BrC,MAAM,EAzBkB,MAAM;MAxB9B,iGAAkB;QAChB,WAAwB,EAAE,SAAgC;QAC1D,YAAY,EAAE,wBAAuB;MAIrC,uHAAgB;QACd,WAAwB,EAAE,CAAC;MA2E7B;;;uDAGU;QRzFV,aAAa,EQyFe,CAAC;MAC7B,yOAGwB;QRnFxB,iCAAqC,EMe1B,MAAe;QNd1B,8BAAkC,EMcvB,MAAe;QNb1B,yBAA6B,EMalB,MAAe;QNZ1B,sBAA0B,EMYf,MAAe;ME4E1B,qOAGuB;QR9FvB,kCAAqC,EMe1B,MAAe;QNd1B,+BAAkC,EMcvB,MAAe;QNb1B,0BAA6B,EMalB,MAAe;QNZ1B,uBAA0B,EMYf,MAAe;EEyItB,wCAAsB;IAJxB,uCAA4B;MA1GhC,OAAO,EApBkB,KAAK;MAqB9B,MAAM,EApBkB,CAAC;MA7BzB,iGAAkB;QAChB,WAAwB,EAAE,SAAgC;QAC1D,YAAY,EAAE,wBAAuB;MAIrC,uHAAgB;QACd,WAAwB,EAAE,CAAC;MAuB7B,iGAAkB;QAChB,YAAY,EAAE,wBAAuB;QACrC,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,SAAgC;QAC5C,OAAO,EAAE,KAAK;QACd,MAAM,EAAC,CAAC;MAEV,gDAAS;QACL,KAAK,EAAE,IAAI;MAIb,uHAAgB;QACd,UAAU,EAAE,CAAC;MAuCjB;;;uDAGU;QRzFV,aAAa,EQyFe,CAAC;MAC7B,yOAGwB;QR9ExB,uBAA4B,EMnCnB,IAAY;QNoCrB,wBAA6B,EMpCpB,IAAY;QNqCrB,sBAA2B,EMrClB,IAAY;QNsCrB,uBAA4B,EMtCnB,IAAY;MEyHrB,qOAGuB;QRzFvB,0BAA4B,EMnCnB,IAAY;QNoCrB,2BAA6B,EMpCpB,IAAY;QNqCrB,yBAA2B,EMrClB,IAAY;QNsCrB,0BAA4B,EMtCnB,IAAY;;ANgOvB,qCAAkB;EAAE,OAAO,EAAE,GAAG;EAAE,OAAO,EAAE,KAAK;AAChD,iBAAQ;EAAE,KAAK,EAAE,IAAI;AQnCjB,yBAAc;EA/KhB,KAAK,EAAE,IAAiB;EACxB,YAA6B,EAjBJ,QAAY;EAkBrC,6BAAM;IAAE,QAAQ,EAAE,MAAM;;;ACYxB,iCAAsC;EAEpC,UAAU,EAAE,IAAI;EAChB,WAAwB,EAAE,CAAC;EAC3B,aAAa,EAAE,CAAC;ET+LpB,8FAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,6CAAQ;IAAE,KAAK,EAAE,IAAI;ES9LjB,uCAAG;IACD,KAAK,ETmSK,IAAI;ISlSd,YAA6B,EAAE,IAAI;EAGrC,mFAA2B;IACzB,YAA6B,EAAE,CAAC;;AAIpC,kBAAmB;EACjB,UAAU,EA7CE,OAAY;EA8CxB,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,IAAiB,EAAE,CAAC;EAEpB,kCAAgB;IAAE,OAAO,EAAE,KAAK;;AAGlC,mBAAoB;EAClB,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,GAAG;;AAGd,qBAAsB;EACpB,KAAK,EJ9CS,OAAK;EI+CnB,SAAS,EAAE,IAAI;EACf,IAAI,EAAE,GAAG;EACT,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;;AAGV,YAAa;EACX,MAAM,EAAE,GAAG;EACX,QAAQ,EAAE,QAAQ;EAElB,gBAAI;IACF,QAAQ,EAAE,QAAQ;IAClB,IAAiB,EAAE,GAAG;IACtB,GAAG,EAAE,GAAG;IAEN,iBAAiB,EAAE,iCAAiC;IACpD,cAAc,EAAE,iCAAiC;IACjD,aAAa,EAAE,iCAAiC;IAChD,YAAY,EAAE,iCAAiC;IAC/C,SAAS,EAAE,iCAAiC;IAS9C,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;;AAInB,iBAAkB;EAChB,UAAU,EApGE,OAAY;EAqGxB,MAAM,EAAE,CAAC;EACT,KAAK,EA3FmB,OAAK;EA4F7B,SAAS,EA3Fc,OAAM;EA4F7B,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,CAAC;EAChB,OAAO,EA7Fc,cAAe;EA8FpC,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;EACX,IAAiB,EAAE,CAAC;;AAGtB,eAAgB;EACd,KAAK,EAvGmB,OAAK;EAwG7B,OAAO,EAAE,IAAI;EACb,SAAS,EAhHO,IAAI;EAiHpB,WAAW,EAAE,CAAC;EACd,YAAyB,EAAE,IAAI;EAC/B,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,GAAG;EAEZ,4CACQ;IAAE,KAAK,EAhHS,OAAK;;AAmH/B,uCAAwC;EAAE,MAAM,EAAE,IAAI;EACpD,sDAAe;IAAE,OAAO,EAAE,IAAI;;AAIhC,oBAAqB;EACnB,OAAO,EAAE,IAAI;EACb,0CAAwB;IACtB,OAAO,EAAE,KAAK;;AAKlB,6CAAqB;EACnB;qBACoB;IAClB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI;IACX;8BAAO;MACL,MAAM,EAAE,UAA0B;MAClC,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,GAAG;MACR,KAAK,EAAE,CAAC;MACR;sCAAQ;QAAE,OAAO,EAAE,EAAE;;EAGzB,mBAAoB;IAClB,IAAiB,EAAE,CAAC;IACpB,0BAAO;MACL,IAAiB,EAAE,GAAG;MACtB,YAAY,EAAE,WAAW;MACzB,kBAAmC,EAtJf,OAAK;;EAyJ7B,mBAAoB;IAClB,KAAsB,EAAE,CAAC;IACzB,0BAAO;MACL,YAAY,EAAE,WAAW;MACzB,iBAA8B,EA7JV,OAAK;;EAiK7B;8BAC6B;IAAE,OAAO,EAAE,EAAE;;EAIxC,iDAAU;IACR,UAAU,EAnLG,qBAAkB;IAoL/B,MAAM,EAlKW,KAAK;IAmKtB,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,MAAM;IAElB,sDAAK;MACH,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,IAAI;MACZ,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI;MAEX,yDAAG;QACD,KAAK,EAAE,IAAI;QACX,MAAM,ETkNG,OAAO;QSjNhB,OAAO,EAAE,KAAK;QACd,KAAK,EToID,IAAI;QSnIR,YAA6B,EAAE,CAAC;QAChC,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAvLa,KAAK;QA0LrB,wEAAI;UACF,MAAM,EAAE,IAAI;UACZ,SAAS,EAAE,IAAI;QAInB,8DAAK;UACH,MAAM,EAAE,IAAI;UACZ,UAAU,EAAE,IAAI;UAChB,OAAO,EAAE,KAAK;QAGhB,6DAAI;UACF,MAAM,EAAE,kBAAgC;UACxC,KAAK,EAAE,eAAe;QAGxB,iEAAU;UAAE,OAAO,EAAE,CAAC;QACtB,+DAAQ;UAAE,OAAO,EAAE,EAAE;EAK3B,oDAAa;IACX,UAAU,EApOF,OAAY;IAqOpB,MAAM,EArNa,GAAG;IAsNtB,QAAQ,EAAE,MAAM;;EAIpB,eAAgB;IACd,YAAyB,EAAE,CAAC;IAC5B,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,KAAsB,EAAE,IAAI;;AC1BhC,WAAY;EAlKd,OAAO,EAAE,IAAI;EACb,IAAI,EAAE,OAAO;EACb,UAAU,EA1BY,IAAI;EA2B1B,WAAwB,EAAE,CAAC;EAC3B,QAAQ,EAAE,QAAQ;EAUhB,UAAU,EA1Cc,OAAM;EA2C9B,MAAM,EAAE,iBAA0E;EAClF,SAAS,EAtCU,QAAY;EAuC/B,MAAM,EAtEU,IAAI;EAuEpB,UAAU,EAtEU,IAAI;EAuExB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,EAAE;EAcX,UAAU,EAnFU,GAAG;EAsLR,SAAS,EA3LL,KAAK;EA4D1B,gBAAO;IACL,OAAO,EAAE,KAAK;EAGhB,2BAAgB;IAAE,UAAU,EAAE,CAAC;EAC/B,0BAAe;IAAE,aAAa,EAAE,CAAC;EA2B7B,kBAAS;IVwDb,MAAM,EAAE,SAAoB;IAC5B,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IAMN,YAAY,EAAE,2CAAmD;IACjE,mBAAmB,EAAE,KAAK;IUjEtB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,KAAgC;IACrC,IAAiB,EArES,IAAI;IAsE9B,OAAO,EAAE,EAAE;EAEb,iBAAQ;IViDZ,MAAM,EAAE,SAAoB;IAC5B,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IAMN,YAAY,EAAE,2CAAmD;IACjE,mBAAmB,EAAE,KAAK;IU1DtB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,KAAsC;IAC3C,IAAiB,EAAE,GAAoC;IACvD,OAAO,EAAE,EAAE;EAGb,wBAAe;IACb,IAAiB,EAAE,IAAI;IACvB,KAAsB,EAlFI,IAAI;EAoFhC,uBAAc;IACZ,IAAiB,EAAE,IAAI;IACvB,KAAsB,EAAE,GAAoC;EA0G9D,sBAA8B;IArKlC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,OAAO;IACb,UAAU,EA1BY,IAAI;IA2B1B,WAAwB,EAAE,CAAC;IAC3B,QAAQ,EAAE,QAAQ;IAUhB,UAAU,EA1Cc,OAAM;IA2C9B,MAAM,EAAE,iBAA0E;IAClF,SAAS,EAtCU,QAAY;IAuC/B,MAAM,EAtEU,IAAI;IAuEpB,UAAU,EAtEU,IAAI;IAuExB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IA6CX,UAAU,EAAE,CAAC;IACb,WAAwB,EA7GF,GAAsB;IAgL7B,SAAS,EA3LL,KAAK;IA4D1B,2BAAO;MACL,OAAO,EAAE,KAAK;IAGhB,sCAAgB;MAAE,UAAU,EAAE,CAAC;IAC/B,qCAAe;MAAE,aAAa,EAAE,CAAC;IAyD/B,6BAAS;MV0BX,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAcN,YAAY,EAAE,2CAAmD;MACjE,kBAAkB,EAAE,KAAK;MU3CvB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAlGyB,IAAI;MAmGhC,IAAiB,EAAE,KAAgC;MACnD,OAAO,EAAE,EAAE;IAEb,4BAAQ;MVmBV,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAcN,YAAY,EAAE,2CAAmD;MACjE,kBAAkB,EAAE,KAAK;MUpCvB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,GAAoC;MACzC,IAAiB,EAAE,KAAoC;MACvD,OAAO,EAAE,EAAE;EAyFX,qBAAyB;IAzK7B,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,OAAO;IACb,UAAU,EA1BY,IAAI;IA2B1B,WAAwB,EAAE,CAAC;IAC3B,QAAQ,EAAE,QAAQ;IAUhB,UAAU,EA1Cc,OAAM;IA2C9B,MAAM,EAAE,iBAA0E;IAClF,SAAS,EAtCU,QAAY;IAuC/B,MAAM,EAtEU,IAAI;IAuEpB,UAAU,EAtEU,IAAI;IAuExB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IAkEX,UAAU,EAAE,CAAC;IACb,WAAwB,EAAE,IAAyB;IA8CpC,SAAS,EA3LL,KAAK;IA4D1B,0BAAO;MACL,OAAO,EAAE,KAAK;IAGhB,qCAAgB;MAAE,UAAU,EAAE,CAAC;IAC/B,oCAAe;MAAE,aAAa,EAAE,CAAC;IA8E/B,4BAAS;MVKX,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAUN,YAAY,EAAE,2CAAmD;MACjE,iBAAiB,EAAE,KAAK;MUlBtB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAvHyB,IAAI;MAwHhC,KAAsB,EAAE,KAAgC;MACxD,IAAiB,EAAE,IAAI;MACvB,OAAO,EAAE,EAAE;IAEb,2BAAQ;MVHV,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAUN,YAAY,EAAE,2CAAmD;MACjE,iBAAiB,EAAE,KAAK;MUVtB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,GAAoC;MACzC,KAAsB,EAAE,KAAoC;MAC5D,IAAiB,EAAE,IAAI;MACvB,OAAO,EAAE,EAAE;EAsEX,oBAAW;IA7Kf,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,OAAO;IACb,UAAU,EA1BY,IAAI;IA2B1B,WAAwB,EAAE,CAAC;IAC3B,QAAQ,EAAE,QAAQ;IAUhB,UAAU,EA1Cc,OAAM;IA2C9B,MAAM,EAAE,iBAA0E;IAClF,SAAS,EAtCU,QAAY;IAuC/B,MAAM,EAtEU,IAAI;IAuEpB,UAAU,EAtEU,IAAI;IAuExB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IAyFX,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,IAA0B;IAuBvB,SAAS,EA3LL,KAAK;IA4D1B,yBAAO;MACL,OAAO,EAAE,KAAK;IAGhB,oCAAgB;MAAE,UAAU,EAAE,CAAC;IAC/B,mCAAe;MAAE,aAAa,EAAE,CAAC;IAqG/B,2BAAS;MVlBX,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAEN,YAAY,EAAE,2CAAmD;MACjE,gBAAgB,EAAE,KAAK;MUarB,MAAM,EAAE,KAAgC;MACxC,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,IAAI;MACT,IAAiB,EAhJW,IAAI;MAiJhC,KAAsB,EAAE,IAAI;MAC5B,OAAO,EAAE,EAAE;IAEb,0BAAQ;MV3BV,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAEN,YAAY,EAAE,2CAAmD;MACjE,gBAAgB,EAAE,KAAK;MUsBrB,MAAM,EAAE,KAAoC;MAC5C,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,IAAI;MACT,IAAiB,EAAE,GAAoC;MACvD,KAAsB,EAAE,IAAI;MAC5B,OAAO,EAAE,EAAE;EAkDX,cAAG;IAnCP,MAAM,EVgNe,OAAO;IU/M5B,SAAS,EAtKY,QAAY;IAuKjC,WAAW,EArKY,QAAY;IAsKnC,MAAM,EAAE,CAAC;IAET,0CACQ;MAAE,UAAU,EAxKK,OAAM;IA0K/B,gBAAE;MACA,OAAO,EAAE,KAAK;MACd,OAAO,EA9Ke,MAAe;MA+KrC,KAAK,EAjLe,OAAS;EA4M3B,mBAAU;IArLd,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,OAAO;IACb,UAAU,EA1BY,IAAI;IA2B1B,WAAwB,EAAE,CAAC;IAC3B,QAAQ,EAAE,QAAQ;IAmBhB,UAAU,EAnDc,OAAM;IAoD9B,MAAM,EAAE,iBAA0E;IAClF,SAAS,EA/CU,QAAY;IAgD/B,MAAM,EA/EU,IAAI;IAgFpB,UAAU,EA/EU,IAAI;IAgFxB,OAAO,EA3CkB,OAAY;IA4CrC,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IAuGI,SAAS,EA3LL,KAAK;IA4D1B,wBAAO;MACL,OAAO,EAAE,KAAK;IAGhB,mCAAgB;MAAE,UAAU,EAAE,CAAC;IAC/B,kCAAe;MAAE,aAAa,EAAE,CAAC;EA6K7B,kBAAS;IVxNX,aAAa,EUoBG,GAAc;EAuM5B,gBAAU;IAAE,SAAS,EAAE,KAAK;EAC5B,iBAAU;IAAE,SAAS,EAAE,KAAK;EAC5B,kBAAU;IAAE,SAAS,EAAE,KAAK;EAC5B,iBAAU;IAAE,SAAS,EAAE,KAAK;EAC5B,gBAAU;IACR,KAAK,EAAC,eAAc;IACpB,SAAS,EAAC,eAAc;IAExB,qBAAM;MACJ,IAAI,EAAC,YAAW;;AC5ItB,iCAAkC;EA/DlC,QAAQ,EAAE,QAAQ;EAqClB,aAA8B,EA9DJ,SAAkC;EA4B5D,+CAAS;IACP,YAAY,EAAE,2CAA8D;IAC5E,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,CAAC;EA2BV,+CAAS;IACP,YAAY,EA/Da,QAA8B;IAgEvD,KAAsB,EA/DO,UAAqB;IAgElD,UAAU,EA/DgB,WAAmC;EA+E/D,+CAAS;IAAE,YAAY,EAAE,2CAA8C;EAOrE,2CAAO;IA/CT,aAA8B,EAtDJ,QAAmB;IAuD7C,uDAAQ;MACN,YAAY,EAvDa,QAAe;MAwDxC,KAAsB,EAvDO,QAAmB;MAwDhD,UAAU,EAvDgB,SAAmC;IA2F/D,yDAAS;MAAE,YAAY,EAAE,2CAA8C;EAQrE,6CAAQ;IAtCV,aAA8B,EA1DJ,SAAmB;IA2D7C,2DAAS;MACP,YAAY,EA3Da,SAAe;MA4DxC,KAAsB,EA3DO,SAAmB;MA4DhD,UAAU,EA3DgB,WAAmC;IAqF/D,2DAAS;MAAE,YAAY,EAAE,2CAA8C;EASrE,6CAAQ;IAnBV,aAA8B,EAlEJ,QAAkC;IAmE5D,2DAAS;MACP,YAAY,EAnEa,SAA8B;MAoEvD,KAAsB,EAnEO,UAAqB;MAoElD,UAAU,EAnEgB,WAAmC;IAyE/D,2DAAS;MAAE,YAAY,EAAE,2CAA8C;EAUrE,iEAAkB;IAAE,YAAY,EAAE,2CAAkE;;AC9EtG,WAAY;EAxBd,MAAM,EAAE,CAAC;EACT,aAAa,EAXY,IAAY;EAYrC,QAAQ,EAAE,MAAM;EAChB,cAAc,EAdY,KAAK;EAe/B,WAAW,EAhBY,SAAY;EAiBnC,QAAQ,EAAE,QAAQ;EAElB,sBAAa;IAAE,cAAc,EAdQ,MAAM;EAe3C,iBAAQ;IAAE,WAAW,EAAE,CAAC;EAExB;;;mBAGM;IACJ,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI;IACX,IAAiB,EAAE,CAAC;;;ACsVpB,IAAK;EAAE,MAAM,EAAE,QAAiB;;;AAtSlC,cAAK;EAAE,MAAM,EAAE,SAAwB;EAErC;yBACS;IAAE,OAAO,EAAE,QAAqB;EAGzC,uBAAW;IAAE,MAAM,EAAE,CAAC;IAEpB;oCACS;MAAE,OAAO,EAAE,CAAC;IACrB,6BAAM;MbxDR,kCAAqC,EayDS,CAAC;MbxD/C,+BAAkC,EawDY,CAAC;MbvD/C,0BAA6B,EauDiB,CAAC;MbtD/C,uBAA0B,EasDoB,CAAC;AAKjD;;;0BAGiB;EAAE,YAAyB,EAAE,MAAmB;;;AAyR/D,KAAM;EAhON,KAAK,EAlJe,OAAoC;EAmJxD,MAAM,EAvJW,OAAO;EAwJxB,OAAO,EAAE,KAAK;EACd,SAAS,EAxJU,QAAY;EAyJ/B,WAAW,EAxGmB,MAAmB;EAyGjD,WAAW,EAxJU,GAAG;EAyJxB,aAAa,EAtJU,CAAC;;EAiXtB,WAAQ;IAtNV,KAAK,EAAE,eAAe;IACtB,UAAU,EAAE,KAAK;EAsNf,YAAS;IAnNX,MAAM,EAAE,UAAmB;IAC3B,OAAO,EAAE,WAAmD;EAoN1D,WAAM;IACJ,cAAc,EAtXO,UAAU;IAuX/B,KAAK,EAAE,OAAoD;;;AAK/D;QACS;EAtNX,YAAY,EAtIa,KAAK;EAuI9B,YAAY,EAxIa,GAAG;EAyI5B,OAAO,EAAE,KAAK;EACd,SAAS,EA9KY,QAAY;EA+KjC,MAAM,EAAE,SAAwD;EAChE,WAAW,EAAE,SAAwD;EACrE,QAAQ,EA3Ic,OAAO;EA4I7B,cAAc,EAAE,CAAC;EACjB,WAAW,EAAE,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,CAAC;;;AA6MR,eAAgB;EAjJhB,MAAM,EAAE,IAAI;EACZ,YAAyB,EAAE,CAAC;EAC5B,aAA8B,EAAE,CAAC;EACjC,cAAc,EAAE,CAAC;EACjB,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,MAAM;;AA6IlB,cAAe;EApLf,MAAM,EAAE,IAAI;EACZ,YAAyB,EAAE,CAAC;EAC5B,aAA8B,EAAE,CAAC;EACjC,cAAc,EAAE,CAAC;EACjB,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,MAAM;;AAiLlB,qBAAsB;EbtXtB,aAAa,EasX2B,CAAC;Eb5WzC,iCAAqC,EMczB,GAAc;ENb1B,8BAAkC,EMatB,GAAc;ENZ1B,yBAA6B,EMYjB,GAAc;ENX1B,sBAA0B,EMWd,GAAc;;AO+V1B,sBAAuB;EbvXvB,aAAa,EauX4B,CAAC;Eb7W1C,kCAAqC,EMczB,GAAc;ENb1B,+BAAkC,EMatB,GAAc;ENZ1B,0BAA6B,EMYjB,GAAc;ENX1B,uBAA0B,EMWd,GAAc;;AOgW1B,oBAAqB;EbxXrB,aAAa,EawX0B,CAAC;Eb9WxC,iCAAqC,EMe1B,MAAe;ENd1B,8BAAkC,EMcvB,MAAe;ENb1B,yBAA6B,EMalB,MAAe;ENZ1B,sBAA0B,EMYf,MAAe;;AOgW1B,qBAAsB;EbzXtB,aAAa,EayX2B,CAAC;Eb/WzC,kCAAqC,EMe1B,MAAe;ENd1B,+BAAkC,EMcvB,MAAe;ENb1B,0BAA6B,EMalB,MAAe;ENZ1B,uBAA0B,EMYf,MAAe;;;AOmW1B,yBAA0B;EAzM1B,UAAU,EAlKI,OAAoC;EAmKlD,YAA6B,EAAE,IAAI;EAGQ,KAAK,EAnJf,OAAI;EAwJrC,YAAY,EA1KY,OAAqC;;AA2W7D,2BAA4B;EA1K5B,UAAU,EAlMI,OAAoC;EAoMhD,WAAwB,EAAE,IAAI;EAIY,KAAK,EArLhB,OAAI;EA0LrC,YAAY,EA5MY,OAAqC;;;AA8W7D,0UAAgD;EAC9C,kBAAkB,EAAE,IAAI;EACxB,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE,CAAC;EAjTpB,gBAAgB,EAhDe,OAAM;EAkDnC,YAAK,EAvFY,KAAK;EAwFtB,YAAK,EAvFY,GAAG;EAwFpB,YAAK,EA3FY,OAAqC;EA6FxD,UAAU,EAtFO,kCAAgC;EAuFjD,KAAK,EAnGY,mBAAgB;EAoGjC,OAAO,EAAE,KAAK;EACd,WAAW,EAtGO,OAAO;EAuGzB,SAAS,EApGO,QAAY;EAqG5B,MAAM,EAAE,SAAwD;EAChE,MAAM,EAAE,UAAmB;EAC3B,OAAO,EAAE,MAAiB;EAC1B,KAAK,EAAE,IAAI;EbkBX,kBAAkB,EajBE,UAAU;EbkB3B,eAAe,EalBE,UAAU;EbmBtB,UAAU,EanBE,UAAU;EAqSxB,kBAAkB,EAAE,kDAA+E;EACnG,eAAe,EAAE,kDAA+E;EAChG,cAAc,EAAE,kDAA+E;EAC/F,aAAa,EAAE,kDAA+E;EAC9F,UAAU,EAAE,kDAA+E;EApSjG,0aAAQ;IACN,UAAU,EA7GS,OAAoC;IA8GvD,YAAY,EAhEO,OAAyB;IAiE5C,OAAO,EAAE,IAAI;EAGf,0dAAW;IACT,gBAAgB,EArGI,OAAU;IAsG9B,MAAM,EA7Gc,OAAqB;EAiH3C,klDAEqB;IACnB,gBAAgB,EA7GI,OAAU;IA8G9B,MAAM,EArHc,OAAqB;EA2YvC,0bAAS;Ib5YX,aAAa,EaDK,GAAc;;AAqZ1B;;;4CAGO;EbvZb,aAAa,EauZkB,CAAC;Eb7YhC,kCAAqC,EMczB,GAAc;ENb1B,+BAAkC,EMatB,GAAc;ENZ1B,0BAA6B,EMYjB,GAAc;ENX1B,uBAA0B,EMWd,GAAc;AOgYpB,6CAAQ;EbxZd,aAAa,EawZmB,CAAC;Eb9YjC,iCAAqC,EMczB,GAAc;ENb1B,8BAAkC,EMatB,GAAc;ENZ1B,yBAA6B,EMYjB,GAAc;ENX1B,sBAA0B,EMWd,GAAc;AOmYpB;;;6CAGO;Eb9Zb,aAAa,Ea8ZkB,CAAC;EbpZhC,iCAAqC,EMczB,GAAc;ENb1B,8BAAkC,EMatB,GAAc;ENZ1B,yBAA6B,EMYjB,GAAc;ENX1B,sBAA0B,EMWd,GAAc;AOuYpB,+CAAS;Eb/Zf,aAAa,Ea+ZoB,CAAC;EbrZlC,kCAAqC,EMczB,GAAc;ENb1B,+BAAkC,EMatB,GAAc;ENZ1B,0BAA6B,EMYjB,GAAc;ENX1B,uBAA0B,EMWd,GAAc;AO0YpB;;;2CAGO;Ebrab,aAAa,EaqakB,CAAC;Eb3ZhC,kCAAqC,EMe1B,MAAe;ENd1B,+BAAkC,EMcvB,MAAe;ENb1B,0BAA6B,EMalB,MAAe;ENZ1B,uBAA0B,EMYf,MAAe;AO6YpB,4CAAQ;Ebtad,aAAa,EasamB,CAAC;Eb5ZjC,iCAAqC,EMe1B,MAAe;ENd1B,8BAAkC,EMcvB,MAAe;ENb1B,yBAA6B,EMalB,MAAe;ENZ1B,sBAA0B,EMYf,MAAe;AOgZpB;;;4CAGO;Eb5ab,aAAa,Ea4akB,CAAC;EblahC,iCAAqC,EMe1B,MAAe;ENd1B,8BAAkC,EMcvB,MAAe;ENb1B,yBAA6B,EMalB,MAAe;ENZ1B,sBAA0B,EMYf,MAAe;AOoZpB,8CAAS;Eb7af,aAAa,Ea6aoB,CAAC;EbnalC,kCAAqC,EMe1B,MAAe;ENd1B,+BAAkC,EMcvB,MAAe;ENb1B,0BAA6B,EMalB,MAAe;ENZ1B,uBAA0B,EMYf,MAAe;;AOyZ1B,oBAAqB;EACnB,kBAAkB,EAAE,IAAI;EACxB,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE,CAAC;;;AAIlB,cAAe;EACb,MAAM,EAAE,IAAI;;;AAId,QAAS;EACP,SAAS,EAAE,IAAI;;AAIjB,2BAA4B;EAC1B,KAAK,EA7coB,OAAM;;AAgdjC,iBAAkB;;EACf,KAAK,EAjdmB,OAAM;;AAodjC,kBAAmB;;EAChB,KAAK,EArdmB,OAAM;;AAwdjC,sBAAuB;EACpB,KAAK,EAzdmB,OAAM;;;AA8djC,MAAO;EA/KT,kBAAkB,EAAE,eAAe;EACnC,eAAe,EAAE,eAAe;EAChC,gBAAgB,EAzPA,OAAM;EA0PtB,aAAa,EAAE,CAAC;EAShB,gBAAgB,EAAE,qUAAqU;EAGvV,mBAAmB,EAAE,WAA6C;EAElE,iBAAiB,EAAE,SAAS;EAE1B,YAAK,EA5TY,KAAK;EA6TtB,YAAK,EA5TY,GAAG;EA6TpB,YAAK,EAhUY,OAAqC;EAkUxD,KAAK,EAvUY,mBAAgB;EAwUjC,WAAW,EAzUO,OAAO;EA0UzB,SAAS,EAvUO,QAAY;EAwU5B,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,MAAmB;EbjU1B,aAAa,EakUC,CAAC;EAqJb,MAAM,EAAE,SAAwD;EA3KpE,kBAAc;IACZ,OAAO,EAAE,IAAI;EAsBf,aAAS;IbnUP,aAAa,EA2TD,GAAG;EaSjB,YAAQ;IACN,gBAAgB,EArRI,OAA8C;IAsRlE,YAAY,EA9RO,OAAyB;EAiS9C,eAAW;IACT,gBAAgB,EAlUI,OAAU;IAmU9B,MAAM,EA1Uc,OAAqB;EAudvC,gBAAY;IACV,MAAM,EAAE,IAAI;;;AAKhB;;;MAGO;EACL,MAAM,EAAE,UAAmB;;AAG7B;2BAC4B;EAC1B,OAAO,EAAE,YAAY;EACrB,WAAwB,EAAE,MAAkB;EAC5C,YAA6B,EA9fpB,IAAY;EA+frB,aAAa,EAAE,CAAC;EAChB,cAAc,EAAE,QAAQ;;;AAI1B,kBAAmB;EACjB,KAAK,EAAC,IAAI;;;;AAaZ,QAAS;EA/QX,MAAM,EAAE,iBAAoE;EAC5E,MAAM,EArOU,UAAc;EAsO9B,OAAO,EAvOU,OAAY;EA0O7B,eAAO;IACL,WAAW,EAvOM,IAAiB;IAwOlC,MAAM,EAAE,CAAC;IACT,WAAwB,EN5LlB,UAAmD;IM6LzD,OAAO,EAzOM,WAAa;;;AAsfxB,kHAA+D;EA/OnE,OAAO,EAAE,KAAK;EACd,SAAS,EAvPqB,OAAY;EAwP1C,UAAU,EAtPqB,MAAM;EAuPrC,WAAW,EAxPqB,MAAmB;EAyPnD,aAAa,EA9SA,IAAY;EA+SzB,UAAU,EA5Pc,IAAI;EA6P5B,OAAO,EA9PqB,4BAAe;EAkQ3C,UAAU,EA5PmB,OAAY;EA6PE,KAAK,EA9PjB,OAAM;AAqejC,iDAAwB;EAAE,OAAO,EAAE,IAAI;;AAGzC,uBAAwB;EArP1B,OAAO,EAAE,KAAK;EACd,SAAS,EAvPqB,OAAY;EAwP1C,UAAU,EAtPqB,MAAM;EAuPrC,WAAW,EAxPqB,MAAmB;EAyPnD,aAAa,EA9SA,IAAY;EA+SzB,UAAU,EA5Pc,IAAI;EA6P5B,OAAO,EA9PqB,4BAAe;EAkQ3C,UAAU,EA5PmB,OAAY;EA6PE,KAAK,EA9PjB,OAAM;;AA6ejC;;aAEO;EACL,aAAa,EAAE,CAAC;AAGlB;0BACoB;EAClB,aAAa,EA5iBN,IAAY;AA+iBrB;kBACY;EA7QmC,KAAK,EA3O3B,OAAY;AA4frC,kBAAY;EA1QhB,OAAO,EAAE,KAAK;EACd,SAAS,EAvPqB,OAAY;EAwP1C,UAAU,EAtPqB,MAAM;EAuPrC,WAAW,EAxPqB,MAAmB;EAyPnD,aAAa,EA9SA,IAAY;EA+SzB,UAAU,EA5Pc,IAAI;EA6P5B,OAAO,EA9PqB,4BAAe;EAkQ3C,UAAU,EA5PmB,OAAY;EA6PE,KAAK,EA9PjB,OAAM;AAkgB/B,sBAAQ;EACN,UAAU,EAAE,WAAW;EACvB,KAAK,EAAE,OAAoD;EAC3D,OAAO,EAAE,MAAM;EACf,SAAS,EAAE,GAAG;EACd,UAAU,EAAE,MAAM;EAClB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,cAAc,EAzjBK,UAAU;AA6jBjC,yBAAmB;EACjB,OAAO,EAAE,KAAK;;AAIlB;;YAEa;EACX,aAAa,EAAE,CAAC;;AAElB,WAAY;EA5SqC,KAAK,EA3O3B,OAAY;;ACqRvC,SAAU;EAlTZ,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,CAAC;EACZ,KAAK,EAAE,IAAI;EAmIT,UAAU,EA9JA,OAAI;EA6BhB,aAAI;IACF,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,SAAS,EA7BQ,IAAI;IA8BrB,MAAM,EAAE,MAAM;IACd,OAAO,EAvBa,OAAO;IAwB3B,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,GAAG;IAEV,kCAAO;MACL,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,MAAM;MAEd,kDAAU;QACR,UAAU,EAAE,QAAQ;IAIxB,eAAE;MACA,SAAS,EAzCM,QAAQ;MA0CvB,cAAc,EAAE,MAAM;IAGxB,iBAAI;MACF,MAAM,EA5CY,QAAQ;MA6C1B,KAAK,EA9CY,QAAQ;EAoD3B,0DAAO;IACL,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,cAAc;IAEtB,0EAAU;MACR,UAAU,EAAE,CAAC;EAIjB,+BAAM;IAAE,OAAO,EAAE,YAAY;EAG/B,kCAA2B;IACzB,UAAU,EAAE,IAAI;EAGlB,4CAA4B;IAC1B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IAEX,wDAAM;MACJ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;EAKb,6CAAqB;IADvB,yBAAkB;MAEd,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MAEX,+BAAM;QACJ,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;EAKf,6CAAoB;IADtB,wBAAiB;MAEb,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MAEX,8BAAM;QACJ,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;EAcjB,aAAI;IACF,SAAS,EAvHQ,IAAI;IAwHrB,OAAO,EAhHa,OAAO;IAoHzB,kDAAU;MACR,UAAU,EAAE,QAAQ;MACpB,SAAS,EA9HI,IAAI;IAkIrB,eAAE;MACA,SAAS,EA/HM,QAAQ;IAkIzB,iBAAI;MACF,MAAM,EAjIY,QAAQ;MAkI1B,KAAK,EAnIY,QAAQ;EAyJzB,mBAAM;IAAE,KAAK,EA3JS,OAAoB;EA6J1C,eAAE;IAAE,KAAK,EA7Ja,OAAoB;EAgK5C,mBAAU;IAER,UAAU,EA9JQ,OAAc;IAgKhC,yBAAM;MAAE,KAAK,EApKS,OAAoB;IAsK1C,qBAAE;MAAE,KAAK,EAtKa,OAAoB;EAyKxC,oBAAW;IAEb,UAAU,EAvKQ,OAAc;IAyKhC,0BAAM;MAAE,KAAK,EA7KS,OAAoB;IA+K1C,sBAAE;MAAE,KAAK,EA/Ka,OAAoB;EAmL5C,wBAAe;IACb,MAAM,EA3Ke,WAAsB;IA4K3C,OAAO,EA7Ke,GAAE;IA8KxB,cAAc,EAAE,IAAI;IACpB,4BAAG;MACD,OAAO,EAhLa,GAAE;MAiLtB,MAAM,EAhLa,WAAsB;EAuN7C,sBAAM;IAAE,KAAK,EAAE,GAAG;EAClB,sEAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,sCAAwB;MAEpB,KAAK,EAAE,IAAI;EAIb,6CAAoB;IADtB,qCAAuB;MAEnB,KAAK,EAAE,IAAI;EAKf,wBAAM;IAAE,KAAK,EAAE,QAAQ;EACvB,0EAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,wCAAwB;MAEpB,KAAK,EAAE,IAAI;EAIb,6CAAoB;IADtB,uCAAuB;MAEnB,KAAK,EAAE,IAAI;EAKf,uBAAM;IAAE,KAAK,EAAE,GAAG;EAClB,wEAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,uCAAwB;MAEpB,KAAK,EAAE,IAAI;EAIb,6CAAoB;IADtB,sCAAuB;MAEnB,KAAK,EAAE,IAAI;EAKf,uBAAM;IAAE,KAAK,EAAE,GAAG;EAClB,wEAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,uCAAwB;MAEpB,KAAK,EAAE,IAAI;EAIb,6CAAoB;IADtB,sCAAuB;MAEnB,KAAK,EAAE,IAAI;EAKf,sBAAM;IAAE,KAAK,EAAE,SAAS;EACxB,sEAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,sCAAwB;MAEpB,KAAK,EAAE,IAAI;EAIb,6CAAoB;IADtB,qCAAuB;MAEnB,KAAK,EAAE,IAAI;EAKf,wBAAM;IAAE,KAAK,EAAE,SAAS;EACxB,0EAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,wCAAwB;MAEhB,KAAK,EAAE,IAAI;EAIjB,6CAAoB;IADtB,uCAAuB;MAElB,KAAK,EAAE,IAAI;EAKhB,wBAAM;IAAE,KAAK,EAAE,KAAK;EACpB,0EAAyC;IAAE,KAAK,EAAE,IAAI;EAEpD,6CAAqB;IADvB,wCAAwB;MAEhB,KAAK,EAAE,IAAI;EAIjB,6CAAoB;IADtB,uCAAuB;MAElB,KAAK,EAAE,IAAI;;AAuBd,sBAAM;EAAE,KAAK,EAAE,GAAG;AAClB,sEAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,sCAAwB;IAEpB,KAAK,EAAE,IAAI;AAIb,6CAAoB;EADtB,qCAAuB;IAEnB,KAAK,EAAE,IAAI;AAKf,wBAAM;EAAE,KAAK,EAAE,QAAQ;AACvB,0EAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,wCAAwB;IAEpB,KAAK,EAAE,IAAI;AAIb,6CAAoB;EADtB,uCAAuB;IAEnB,KAAK,EAAE,IAAI;AAKf,uBAAM;EAAE,KAAK,EAAE,GAAG;AAClB,wEAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,uCAAwB;IAEpB,KAAK,EAAE,IAAI;AAIb,6CAAoB;EADtB,sCAAuB;IAEnB,KAAK,EAAE,IAAI;AAKf,uBAAM;EAAE,KAAK,EAAE,GAAG;AAClB,wEAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,uCAAwB;IAEpB,KAAK,EAAE,IAAI;AAIb,6CAAoB;EADtB,sCAAuB;IAEnB,KAAK,EAAE,IAAI;AAKf,sBAAM;EAAE,KAAK,EAAE,SAAS;AACxB,sEAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,sCAAwB;IAEpB,KAAK,EAAE,IAAI;AAIb,6CAAoB;EADtB,qCAAuB;IAEnB,KAAK,EAAE,IAAI;AAKf,wBAAM;EAAE,KAAK,EAAE,SAAS;AACxB,0EAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,wCAAwB;IAEhB,KAAK,EAAE,IAAI;AAIjB,6CAAoB;EADtB,uCAAuB;IAElB,KAAK,EAAE,IAAI;AAKhB,wBAAM;EAAE,KAAK,EAAE,KAAK;AACpB,0EAAyC;EAAE,KAAK,EAAE,IAAI;AAEpD,6CAAqB;EADvB,wCAAwB;IAEhB,KAAK,EAAE,IAAI;AAIjB,6CAAoB;EADtB,uCAAuB;IAElB,KAAK,EAAE,IAAI;;ACjZlB,YAAa;EAnBf,UAAU,EAAE,IAAI;EAChB,UAAU,EAvBa,CAAC;EAwBxB,aAAa,EAtBa,SAAY;EAuBtC,WAAwB,EAtBS,SAAa;EAuB9C,YAA6B,EAzBD,CAAC;EA0B7B,QAAQ,EAlBa,MAAM;EAmB3B,OAAO,EAtBa,CAAC;EAwBrB,iBAAK;IACH,OAAO,EAnBW,KAAK;IAoBvB,KAAK,EfySS,IAAI;IexSlB,UAAU,EAAE,IAAI;IAChB,WAAwB,EA9BY,QAAY;IA+BhD,qBAAI;MAAE,OAAO,EApBc,KAAK;;;ACoBhC,aAAc;EAAE,OAAO,EAAE,IAAI;;;AAG7B,kBAAmB;EACjB,UAAU,EAvCC,OAAI;EAwCf,KAAK,EAhCc,OAAM;EAiCzB,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,OAAO;EACpB,WAAW,EApBU,MAAmB;EAqBxC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,GAAG;EACZ,IAAiB,EAAE,IAAI;;AAGzB,0BAA2B;EACzB,WAAwB,EAAE,MAAM;EAChC,SAAS,EAAE,KAAK;EAChB,IAAiB,EAAE,GAAG;;AAGxB,wBAAyB;EACvB,OAAO,EAxDS,uBAAkB;EAyDlC,KAAK,EAAE,IAAI;EAEX,gCAAQ;IAAE,aAAa,EAAE,YAAY;EAErC,0CAAkB;IAAE,YAAY,EAAE,IAAI;;;AAKtC,+BAAa;EACX,MAAM,EAAE,kBAA2C;EACnD,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,IAAiB,EArEK,IAAI;EAuE1B,mCAAM;IACJ,YAAY,EA7EL,OAAI;IA8EX,gBAAgB,EAAE,sBAAsB;IACxC,gBAAgB,EAAE,KAAK;IACvB,iBAA8B,EAAE,sBAAsB;IACtD,kBAAmC,EAAE,sBAAsB;IAC3D,GAAG,EAAE,KAA0B;EAEjC,sCAAS;IACP,YAAY,EAAE,kBAA0B;IACxC,mBAAmB,EAAE,sBAAsB;IAC3C,mBAAmB,EAAE,KAAK;IAC1B,iBAA8B,EAAE,sBAAsB;IACtD,kBAAmC,EAAE,sBAAsB;IAC3D,MAAM,EAAE,KAA0B;EAGpC,qCAAQ;IAAE,KAAK,EAAE,KAA0B;EAC3C,oCAAO;IAAE,IAAI,EAAE,KAA0B;;;AAK7C;;;;;qBAKsB;EACpB,KAAK,EAjGc,OAAM;EAkGzB,WAAW,EAhGW,IAAiB;EAiGvC,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,CAAC;;AAEX,oBAAqB;EACnB,SAAS,EAtGS,QAAY;EAuG9B,WAAW,EAAE,GAAG;EAChB,MAAM,ETMI,cAAiE;;ASH7E,6BAA8B;EAC5B,MAAM,EAlHS,iBAAoB;EAmHnC,MAAM,ETtCF,IAAmD;ESuCvD,MAAM,EAtGe,GAAG;EAuGxB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAzGe,IAAI;EA0GxB,KAAsB,ET1ClB,SAAmD;;AS4CzD,wBAAyB;EACvB,UAAU,EA3GU,OAAM;EA4G1B,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,KAAK,EAAE,CAAC;;AAGV,kBAAmB;EACjB,KAAK,EAAE,kBAAmC;EAC1C,SAAS,EA/GU,IAAI;EAgHvB,WAAW,EA/GU,MAAmB;EAgHxC,WAAW,EAAE,aAAa;EAC1B,QAAQ,EAAE,QAAQ;EAClB,eAAe,EAAE,IAAI;EACrB,GAAG,EAAE,IAAI;EACT,KAAsB,EAAE,IAAI;EAE5B,kDACQ;IAAE,KAAK,EAAE,kBAAiB;;AAGpC,iBAAkB;EAChB,UAAU,EAxHK,kBAAe;EAyH9B,MAAM,EhBkQW,OAAO;EgBjQxB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,IAAiB,EAAE,CAAC;;AAGtB,uBAAwB;EACtB,gBAAgB,EAtJG,OAAM;EAuJzB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,gBAAe;EAC3B,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,GAAG;;AAGd,qBAAsB;EACpB,UAAU,EAAE,WAAW;EACvB,aAAa,EAAE,GAAG;EAClB,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;;;AAKf,kBAAiB;EACf,kBAAmB;IAAE,KAAK,EAhLJ,KAAK;IAgL6B,IAAiB,EAAE,OAAO;IAE9E,sCAAS;MACP,YAAY,EAAE,kBAA0B;MACxC,mBAAmB,EAAE,sBAAsB;MAC3C,iBAA8B,EAAE,sBAAsB;MACtD,kBAAmC,EAAE,sBAAsB;MAC3D,MAAM,EAAE,KAA0B;IAEpC,qCAAQ;MACN,YAAY,EAAE,kBAA0B;MACxC,kBAAkB,EAAE,sBAAsB;MAAE,mBAAmB,EAAE,sBAAsB;MACvF,gBAAgB,EAAE,sBAAsB;MACxC,IAAI,EAAE,IAAI;MACV,KAAK,EAAE,KAA0B;MACjC,GAAG,EA3Le,IAAI;IA6LxB,oCAAO;MACL,YAAY,EAAE,kBAA0B;MACxC,mBAAmB,EAAE,sBAAsB;MAC3C,iBAAiB,EAAE,sBAAsB;MACzC,gBAAgB,EAAE,sBAAsB;MACxC,IAAI,EAAE,KAA0B;MAChC,KAAK,EAAE,IAAI;MACX,GAAG,EApMe,IAAI;ACoC9B;GACI;EAlBN,gBAAgB,EAdH,OAA2D;EAexE,YAAY,EAAE,OAAwD;EAG5C,KAAK,EA1BV,OAAI;EA6BzB,YAAY,EApBW,KAAK;EAqB5B,YAAY,EApBW,GAAG;EAqB1B,WAAW,EAjCI,yCAAU;EAkCzB,SAAS,EAjCW,OAAO;EAkC3B,MAAM,EAAE,CAAC;EACT,OAAO,EA7BW,kBAAe;EjBe/B,aAAa,EiBRE,GAAc;;ACgE7B,MAAO;EA/DT,OAAO,EAAE,YAAY;EACrB,WAAW,EARO,sDAAiB;EASnC,WAAW,EAZO,MAAmB;EAarC,WAAW,EAAE,CAAC;EACd,aAAa,EAAE,IAAI;EACnB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAClB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,MAAM;EASJ,OAAO,EAhCR,sBAAe;EAiCZ,SAAS,EA7BR,SAAY;EA6C5B,gBAAgB,EJpCI,OAAc;EIuCR,KAAK,EA7CZ,OAAM;EA4EvB,aAAS;IlB7DX,aAAa,EkBrBF,GAAc;EAmFvB,YAAQ;IlB9DV,aAAa,EkB8DmC,MAAM;EAEpD,YAAY;IArCd,gBAAgB,ELQW,OAAY;IKLb,KAAK,EA7CZ,OAAM;EAgFvB,cAAY;IAtCd,gBAAgB,EZXM,OAAc;IYcV,KAAK,EA7CZ,OAAM;EAiFvB,cAAY;IAvCd,gBAAgB,EZjBM,OAAc;IYoBV,KAAK,EA7CZ,OAAM;EAkFvB,gBAAY;IAxCd,gBAAgB,EZpBQ,OAAgB;IYwBhC,KAAK,EA/CE,OAAI;EAoFjB,WAAY;IAzCd,gBAAgB,EZRG,OAAW;IYYtB,KAAK,EA/CE,OAAI;;ACDnB,4DAAqE;EACnE,UAAU,EAPF,OAAM;EAQd,SAAS,EAAE,IAAI;EACf,OAAO,EARM,IAAI;EASjB,OAAO,EAAE,EAAE;EAEX,8EAAS;IACP,aAAa,EAAE,CAAC;IAChB,oFAAG;MAAE,aAAa,EAAE,CAAC;IACrB,kFAAE;MACA,WAAW,EAAE,KAAK;;ACyBxB,yBASC;EARC,IAAK;IACH,iBAAiB,EAAE,YAAY;IAC/B,SAAS,EAAE,YAAY;EAEzB,EAAG;IACC,iBAAiB,EAAE,cAAc;IACjC,SAAS,EAAE,cAAc;AAK/B,iBAaC;EAZC,IAAK;IACD,iBAAiB,EAAE,YAAY;IAC/B,cAAc,EAAE,YAAY;IAC5B,aAAa,EAAE,YAAY;IAC3B,SAAS,EAAE,YAAY;EAE3B,EAAG;IACC,iBAAiB,EAAE,cAAc;IACjC,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,cAAc;IAC7B,SAAS,EAAE,cAAc;;AAK/B,kBAAmB;EACjB,QAAQ,EAAE,QAAQ;EAElB,qBAAG;IAED,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE,CAAC;IAGT;2CACkB;MAAE,OAAO,EAAE,IAAI;IAGjC,oCAAe;MAAE,OAAO,EAAE,KAAK;EAGjC,mCAAiB;IAAE,gBAAgB,EAAE,WAAW;IAG9C,sCAAG;MAAE,OAAO,EAAE,KAAK;MAEjB,qDAAe;QAAE,OAAO,EAAE,KAAK;IAEjC,qDAAkB;MAChB,OAAO,EAAE,YAAY;EAKzB,6BAAqB;IpB3EvB,aAAa,EoB4EO,MAAM;IACtB,kBAAkB,EAAE,IAAI;IACxB,yBAAyB,EAAE,QAAQ;IACnC,cAAc,EAAE,MAAM;IACtB,yBAAyB,EAAE,MAAM;IACjC,YAAY,EAAE,eAAgB;IAC9B,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,IAAI;;AAKf,gBAAiB;EACf,UAAU,EAvHK,IAAI;EAwHnB,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EAEX,wCAAwB;IACtB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAGlB,iBAAiB,EAAE,aAAa;IAChC,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAE,aAAa;IAC5B,YAAY,EAAE,aAAa;IAC3B,SAAS,EAAE,aAAa;IAExB,4CAAI;MAAE,OAAO,EAAE,KAAK;MAAE,SAAS,EAAE,IAAI;IAErC,4CAAI;MACF,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,KAAK,EAAE,IAAI;MAKT,WAAW,EAAE,IAAI;MAGnB,wDAAc;QAKV,WAAW,EAAE,CAAC;MAIlB,2DAAe;QAEX,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,QAAQ;QAKpB,gBAAgB,EAtKT,qBAAkB;QAuKzB,KAAK,EA/Ie,OAAM;QAgJ1B,SAAS,EAtKK,QAAY;QAuK1B,OAAO,EArKK,iBAAe;QAsK3B,KAAK,EAAE,IAAI;EAKjB,oCAAoB;IAClB,IAAiB,EAAE,IAAI;IACvB,UAAU,EA1JM,WAAa;IA2J7B,KAAK,EA1JmB,OAAM;IA2J9B,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,QAAQ;IAElB,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,EAAE;IAFX,yCAAK;MAAE,WAAW,EAAE,GAAG;MAAE,OAAO,EA5JX,SAAW;EAiKlC,6BAAa;IAEX,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,KAAsB,EAAE,IAAI;IAC5B,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,EAAE;IAGX,6CAAgB;MAEZ,MAAM,EAAE,GAAG;MACX,gBAAgB,EAzLX,wBAAqB;MA0L1B,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,CAAC;MACR,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI;MACX,GAAG,EAAE,GAAG;IAMZ,oCAAS;MACP,MAAM,EAAE,iBAAgB;MACxB,aAAa,EAAE,IAAI;MACnB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,KAAK,EAAE,IAAI;MACX,KAAsB,EAAE,CAAC;IAKzB,2CAAS;MACP,GAAG,EAAE,CAAC;MACN,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,SAAS;MACjB,iBAAiB,EAAE,KAAK;MACxB,YAAY,EAAE,WAAW;MACzB,iBAAiB,EA/MG,OAAM;MAgN1B,KAAsB,EAAE,IAAI;MAE5B,gDAAO;QACL,iBAAiB,EFrOZ,OAAI;EE6OjB,0CAA4B;IAAE,OAAO,EAAE,KAAK;EAG5C;8BACY;IACV,gBAAgB,EAhPT,WAAW;IAiPlB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,kBAAkB;IAC/B,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IAEX;sCAAQ;MACN,gBAAgB,EA3PL,kBAAe;IA8P5B;uCAAS;MACP,MAAM,EAAE,UAAU;MAClB,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,UAAU,EAAE,KAAK;MACjB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,GAAG;MACR,KAAK,EAAE,CAAC;EAGZ,4BAAY;IAAE,IAAiB,EAAE,CAAC;IAChC,mCAAS;MACP,kBAAmC,EAAE,KAAK;MAC1C,YAAY,EAAE,WAAW;MACzB,kBAAmC,EA7Pb,OAAM;IA+P9B,yCAAe;MACb,kBAAmC,EAhQb,OAAM;EAmQhC,4BAAY;IAAE,KAAsB,EAAE,CAAC;IACrC,mCAAS;MACP,YAAY,EAAE,WAAW;MACzB,iBAA8B,EAAE,KAAK;MACrC,iBAA8B,EAvQR,OAAM;MAwQ5B,IAAiB,EAAE,GAAG;MACtB,WAAwB,EAAE,IAAI;IAEhC,yCAAe;MACb,iBAA8B,EA5QR,OAAM;;AAiRlC,wBAAyB;EAAE,UAAU,EAAE,MAAM;;AAC7C,cAAe;EACb,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,gBAAgB;EACxB,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAClB,GAAG,EAAE,IAAI;EAET,iBAAG;IACD,UAAU,EAlSO,OAAK;IAmStB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,YAAY;IAErB,KAAK,EAAE,IAAI;IACX,MAAM,EArSQ,SAAW;IAsSzB,YAA6B,EAAE,GAAG;IAClC,KAAK,EAvSS,SAAW;IpBE7B,aAAa,EoBuSO,MAAM;IAEtB,wBAAS;MACP,UAAU,EA7SY,OAAS;IAgTjC,4BAAa;MAAE,YAA6B,EAAE,CAAC;;AAM/C;mCACY;EAAE,OAAO,EAAE,IAAI;AAG7B,qBAAe;EAAE,OAAO,EAAE,IAAI;;AAIhC,6CAAqB;EAIf;qCACY;IAAE,OAAO,EAAE,OAAO;EAGhC,qBAAe;IAAE,OAAO,EAAE,KAAK;AAKnC,wCAAsB;EAElB,6CAAwB;IAAC,MAAM,EAAE,eAAe;EAChD,iDAA4B;IAC1B,MAAM,EAAC,aAAa;IACpB,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,QAAQ;EAGpB,yCAAoB;IAClB,OAAO,EAAE,IAAI;;EAKd,YAAY;IAAC,OAAO,EAAE,IAAI;;EAG1B,wBAAuB;IAAC,OAAO,EAAE,IAAI;;EAGrC,cAAc;IAAC,OAAO,EAAE,IAAI;AC1OjC,aAAc;EAjDd,OAAO,EAAE,KAAK;EACd,WAAwB,EAxFR,UAAY;EAyF5B,UAAU,EA1FM,MAAY;EA4F5B,gBAAG;IACD,KAAK,EAvFgB,OAAI;IAwFzB,SAAS,EAvFW,QAAY;IAwFhC,MAAM,EA1FW,MAAY;IA2F7B,WAAwB,EAxFP,SAAW;IA0F5B,2CAAU;MrB5EZ,aAAa,EA2TD,GAAG;MAhNjB,UAAU,EAPS,+BAAyB;MqBrBtC,UAAU,EAAE,IAAI;MAChB,KAAK,EArF4B,OAAS;MAsF1C,OAAO,EAAE,KAAK;MACd,SAAS,EAAE,GAAG;MACd,WAAW,EAAE,MAAM;MACnB,WAAW,EAAE,OAAO;MACpB,OAAO,EAhGO,4BAAgB;IAmGhC;;iCAIA;MAAE,UAAU,EArGU,OAAqC;IAyB/D,mEAAU;MACR,MAAM,EAvB2B,OAAO;MAwBxC,KAAK,EAvBgC,OAAS;MAwB9C,cAAc,EAAE,IAAI;IAEtB,gKAKA;MAAE,UAAU,EA9B0B,WAAW;IAsC/C,2DAAU;MACR,UAAU,EAhCoB,OAAc;MAiC5C,KAAK,EApC0B,OAAM;MAqCrC,MAAM,EAnCqB,OAAO;MAoClC,WAAW,EArCqB,IAAiB;MAuCjD,gJACQ;QAAE,UAAU,EAtCU,OAAc;EAmGhD,gBAAG;IAKC,OAAO,EAAE,KAAK;IACd,KAAK,EA9HW,IAAc;;;AA0IhC,oBAAqB;EA9GT,UAAU,EAAE,MAAM;EA4FhC,qCAAG;IAEC,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;;;ACtDb,MAAO;EAzCL,YAAY,EA/BG,KAAK;EAgCpB,YAAY,EA/BE,GAAG;EAgCjB,YAAY,EA5BG,OAAwC;EAkCzD,aAAa,EA/BK,OAAY;EAgC9B,OAAO,EA/BK,OAAY;EAiCxB,UAAU,EA3CH,OAAoC;EA4ChB,KAAK,EA/BjB,OAAI;EAmCnB,qBAAe;IAAE,UAAU,EAAE,CAAC;EAC9B,oBAAc;IAAE,aAAa,EAAE,CAAC;EAK5B,gGAAkC;IAAE,KAAK,EAzC9B,OAAI;EAgDjB,gEAAuB;IACrB,WAAW,EAAE,CAAC;IAAE,aAAa,EAAE,QAAgB;IAC/C,4HAAY;MAAE,WAAW,EAAE,GAAG;EAYhC,cAAU;IA3CV,YAAY,EA/BG,KAAK;IAgCpB,YAAY,EA/BE,GAAG;IAgCjB,YAAY,EA5BG,OAAwC;IAkCzD,aAAa,EA/BK,OAAY;IAgC9B,OAAO,EA/BK,OAAY;IAiCxB,UAAU,EAxCK,OAA4C;IAyChC,KAAK,EA/BjB,OAAI;IAmCnB,6BAAe;MAAE,UAAU,EAAE,CAAC;IAC9B,4BAAc;MAAE,aAAa,EAAE,CAAC;IAK5B,wKAAkC;MAAE,KAAK,EAzC9B,OAAI;IAgDjB,gHAAuB;MACrB,WAAW,EAAE,CAAC;MAAE,aAAa,EAAE,QAAgB;MAC/C,4KAAY;QAAE,WAAW,EAAE,GAAG;IAc9B,6BAAe;MACb,KAAK,EA7DY,OAAc;MA+D/B,wEACQ;QACN,KAAK,EAhEgB,OAAwD;EAqEnF,aAAS;ItBjEX,aAAa,EA2TD,GAAG;;;AuBnNf,cAAe;EA3EjB,MAAM,EAnDa,iBAAqB;EAoDxC,WAAwB,EAAE,CAAC;EAC3B,aAAa,EAlDa,OAAY;EAoDtC,gBAAI;IACF,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,CAAC;EAwEZ,qBAAO;IAjEX,gBAAgB,EA7BC,OAAI;IA8BrB,KAAK,EAxDa,OAAM;IAyDxB,WAAW,EA7Ca,sDAAiB;IA8CzC,SAAS,EAxDQ,IAAY;IAyD7B,WAAW,EA7BO,MAAmB;IA8BrC,OAAO,EA9Da,iBAAe;IA+DnC,UAAU,EA9DQ,MAAM;EA0HpB,qBAAO;IArDX,gBAAgB,EA9DD,OAAM;IA+DrB,KAAK,EA3CY,OAAI;IA4CrB,WAAW,EA1Da,sDAAiB;IA2DzC,SAAS,EA5DQ,IAAY;IA6D7B,WAAW,EA1CO,MAAmB;IA2CrC,OAAO,EAlEa,iBAAe;IAmEnC,UAAU,EAlEQ,MAAM;EAkHpB,2BAAa;IAzCjB,gBAAgB,EA/CH,OAAM;IAgDnB,aAAa,EA3DY,kBAAsB;IA4D/C,KAAK,EAlEY,OAAQ;IAmEzB,SAAS,EAhEY,OAAY;IAiEjC,WAAW,EAvDO,MAAmB;IAwDrC,WAAW,EAhEY,GAAG;IAiE1B,OAAO,EArEY,SAAY;IAsE/B,UAAU,EArEO,MAAM;EAwGnB,2BAAa;IA5BjB,gBAAgB,EA7DH,OAAM;IA8DnB,aAAa,EAjEY,kBAAsB;IAkE/C,KAAK,EAvEY,OAAI;IAwErB,SAAS,EArEY,QAAY;IAsEjC,WAAW,EArEO,MAAmB;IAsErC,OAAO,EAzEY,SAAY;IA0E/B,UAAU,EAzEO,MAAM;EAgGnB,0BAAY;IAhBhB,gBAAgB,EA1EH,OAAM;IA2EnB,OAAO,EAzEW,iBAAiB;IA0EnC,UAAU,EA3EM,MAAM;;;ACEpB,SAAU;EAvBZ,gBAAgB,EAtBG,OAAM;EAuBzB,MAAM,EAAE,eAA+E;EACvF,MAAM,EAzBc,SAAY;EA0BhC,aAAa,EAfc,QAAY;EAgBvC,OAAO,EAjBU,QAAW;EAwCxB,gBAAO;IAhBX,UAAU,EApBW,OAAc;IAqBnC,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;IAeH,0BAAY;MAnBlB,UAAU,EAnBqB,OAAgB;MAoB/C,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,EAAE;IAgBH,wBAAU;MApBhB,UAAU,EAlBmB,OAAc;MAmB3C,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,EAAE;IAiBH,sBAAQ;MArBd,UAAU,EAjBiB,OAAY;MAkBvC,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,EAAE;EAmBL,0BAAmB;IAvBvB,UAAU,EAnBqB,OAAgB;IAoB/C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;EAoBL,wBAAiB;IAxBrB,UAAU,EAlBmB,OAAc;IAmB3C,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;EAqBL,sBAAe;IAzBnB,UAAU,EAjBiB,OAAY;IAkBvC,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;EAuBL,gBAAS;IxBvCX,aAAa,EwBfY,GAAc;IAuDnC,uBAAO;MxBxCX,aAAa,EAAE,GAAO;EwB2CpB,eAAQ;IxB3CV,aAAa,EwB2Ce,MAAM;IAC9B,sBAAO;MxB5CX,aAAa,EwB4CgB,KAAK;;ACoDlC,aAAc;EA5EhB,MAAM,EAAE,iBAA4F;EACpG,MAAM,ElB4EQ,SAAiE;EkB3E/E,QAAQ,EAAE,QAAQ;EAClB,gBAAgB,EAAE,IAAI;EACtB,YAAY,EAAE,IAAI;EAMhB,OAAO,EAAE,KAAK;EACd,MAAM,EA9CgB,IAAY;EA+ClC,KAAK,EAhDgB,IAAI;EAwDT,UAAU,EAhDF,OAAM;EA2G5B,4BAAiB;IA/ErB,MAAM,EAAE,iBAA4F;IACpG,MAAM,ElB4EQ,SAAiE;IkB3E/E,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,IAAI;IAEhB,OAAO,EAAE,YAAY;IACrB,MAAM,EA9ByB,OAAa;IA+B5C,KAAK,EAhCyB,IAAY;IAyGtC,iDAAqB;MACnB,MAAM,EAAE,QAAiE;MACzE,WAAwB,EAAE,OAAiC;MAC3D,UAAU,EAAE,CAAC;MACb,QAAQ,EAAE,QAAQ;IAEpB,yDAA6B;MAC3B,yBAAyB,EAAE,OAAO;MAClC,0BAA0B,EAAE,OAAO;MACnC,sBAAsB,EAAE,OAAO;MAC/B,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,QAAqF;EAGhG,oBAAS;IA5EK,UAAU,EAhDF,OAAM;IzBQ9B,aAAa,EyBVK,GAAc;IAgI5B,yCAAqB;MA1CT,UAAU,EAzEC,OAAc;MzBHzC,aAAa,EyBVK,GAAc;MA6FlC,+CAAQ;QACN,UAAU,EA3EuB,OAA6C;EA+G5E,mBAAQ;IAhFM,UAAU,EAhDF,OAAM;IzBQ9B,aAAa,EyBTI,MAAe;IAmI5B,wCAAqB;MA9CT,UAAU,EAzEC,OAAc;MzBHzC,aAAa,EyBTI,MAAe;MA4FlC,8CAAQ;QACN,UAAU,EA3EuB,OAA6C;EAmH5E,+CAAwB;IApFV,UAAU,EAhDF,OAAM;IAoD9B,MAAM,EA/BqB,WAAsB;IAgCjD,OAAO,EAjCqB,GAAE;IAkH1B,yFAAqB;MAlDT,UAAU,EAzEC,OAAc;MA6EzC,MAAM,EZ/Ec,OAAqB;MYgFzC,OAAO,EArEqB,GAAE;MAuEhC,qGAAQ;QACN,UAAU,EA3EuB,OAA6C;;AAwH9E,4BAA6B;EAC3B,UAAU,EAzIuB,OAA8C;EA0I/E,yBAAyB,EAAE,OAAO;EAClC,sBAAsB,EAAE,OAAO;EAC/B,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,QAAqF;EAC7F,QAAQ,EAAE,QAAQ;;AAEpB,oBAAqB;EAhFvB,MAAM,EAAE,cAAqG;EAC7G,MAAM,EAhDqB,OAAO;EAiDlC,OAAO,EAAE,YAAY;EACrB,MAAM,EA3DqB,QAAY;EA4DvC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EA5D8B,UAAY;EA6D7C,KAAK,EA/DqB,IAAY;EAgEtC,OAAO,EAAE,CAAC;EAGV,gBAAgB,EAAE,YAAY;EAC9B,YAAY,EAAE,YAAY;EAQR,UAAU,EAzEC,OAAc;EAgF3C,0BAAQ;IACN,UAAU,EA3EuB,OAA6C;;ACgI9E,gBAAiB;EApHnB,UAAU,EAvCY,OAAM;EAwC5B,UAAU,EAzCQ,mBAAiB;EA0CnC,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,IAAI;EACb,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAqD;EAC9D,IAAiB,EAAE,CAAC;;AA6GlB,aAAwB;EAnGxB,aAAa,EAxCD,GAAc;EAyC1B,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAC,CAAC;EACL,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;EACX,OAAO,EAlCI,IAAI;EAmCf,IAAiB,EAAE,CAAC;EAgDZ,gBAAgB,EA9GV,OAAM;EA+GE,OAAO,EA3GV,QAAY;EA6GnB,MAAM,EAAE,iBAAyC;EAI7D,UAAU,EAhHM,2BAAyB;EA2DzC,wCAAsB;IA0FtB,aAAwB;MAzFtB,UAAU,EAAC,KAAK;EAIlB,6CAAkB;IAAE,SAAS,EAAE,CAAC;EAGhC,4BAAe;IAAE,UAAU,EAAE,CAAC;EAE9B,2BAAc;IAAE,aAAa,EAAE,CAAC;EAIhC,6CAAqB;IA4ErB,aAAwB;MA3EtB,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,MAAM;MACd,SAAS,EA9EI,OAAU;MA+EvB,KAAK,EAAE,CAAC;MACR,KAAK,EAjFY,GAAG;EA8HtB,6CAAqB;IA0BrB,aAAwB;MAzBtB,GAAG,EAhIa,OAAa;EAoK7B,oBAAS;IA7CR,UAAU,EAAE,IAAI;I1BzGnB,aAAa,E0BAD,GAAc;EAuJxB,mBAAS;IA9CR,UAAU,EAAE,IAAI;I1BzGnB,aAAa,E0BCF,MAAe;EAuJxB,sBAAW;IAxDS,OAAO,EAwDuB,CAAC;IA/ClD,UAAU,EAAE,IAAI;EA1CnB,6CAAqB;IA0FnB,kBAAQ;MAzFR,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,MAAM;MACd,SAAS,EA9EI,OAAU;MA+EvB,KAAK,EAAE,CAAC;MACR,KAAK,EAqFuC,GAAG;EA1FjD,6CAAqB;IA2FnB,mBAAQ;MA1FR,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,MAAM;MACd,SAAS,EA9EI,OAAU;MA+EvB,KAAK,EAAE,CAAC;MACR,KAAK,EAsFuC,GAAG;EA3FjD,6CAAqB;IA4FnB,oBAAU;MA3FV,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,MAAM;MACd,SAAS,EA9EI,OAAU;MA+EvB,KAAK,EAAE,CAAC;MACR,KAAK,EAuFyC,GAAG;EA5FnD,6CAAqB;IA6FnB,mBAAQ;MA5FR,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,MAAM;MACd,SAAS,EA9EI,OAAU;MA+EvB,KAAK,EAAE,CAAC;MACR,KAAK,EAwFuC,GAAG;EA7FjD,6CAAqB;IA8FnB,oBAAS;MA7FT,IAAI,EAAE,CAAC;MACP,MAAM,EAAE,MAAM;MACd,SAAS,EA9EI,OAAU;MA+EvB,KAAK,EAAE,CAAC;MACR,KAAK,EAyFwC,GAAG;EAChD,kBAAO;IAEL,MAAM,EAAE,KAAK;IACb,MAAM,EAAC,IAAI;IACX,IAAI,EAAC,CAAC;IACN,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAC,KAAK;IAChB,GAAG,EAAC,CAAC;IAvGT,6CAAqB;MA+FnB,kBAAO;QA9FP,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,MAAM;QACd,SAAS,EA9EI,OAAU;QA+EvB,KAAK,EAAE,CAAC;QACR,KAAK,EA2F+B,IAAI;EAWxC,oBAAS;IACP,OAAO,EAAE,IAAiB;EAG5B,iCAA8B;IAnDlC,KAAK,EA/Hc,OAAK;IAgIxB,MAAM,E1BmQe,OAAO;I0BlQ5B,SAAS,EApIc,MAAY;IAqInC,WAAW,EAjIS,IAAiB;IAkIrC,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAvIc,QAAY;IAwI7B,KAAsB,EAvIJ,QAAY;;ACwF5B,SAAU;EAtDZ,OAAO,EAAE,KAAK;EACd,WAAW,EAjCiB,sDAAqB;EAkCjD,mBAAmB,EAhDI,OAAO;EAiD9B,eAAe,EAlDI,IAAI;EAmDvB,MAAM,EAAE,CAAC;EACT,OAAO,EAvDU,UAAc;EAyD/B,YAAG;IACD,SAAS,EApCgB,QAAmB;IAqC5C,WAAW,EA3Ce,MAAqB;IA4C/C,MAAM,EAvDa,eAAiB;IAyDpC,2BAAe;MACb,KAAK,EA1Cc,OAAoB;MA2CvC,OAAO,EAAE,KAAK;MACd,MAAM,EArDW,CAAC;MAsDlB,OAAO,EArDW,kBAAc;MAsDhC,oEACQ;QACN,UAAU,EA1DO,oBAAmB;QA2DpC,KAAK,EA5De,OAAkD;MA8DxE,kCAAS;QACP,KAAK,EAhEgB,OAAkD;IAoE3E,gDAAsC;MACpC,KAAK,EArEkB,OAAkD;MAsEzE,WAAW,EA7Da,sDAAqB;MA8D7C,WAAW,EAhEa,MAAqB;IAmE/C,oBAAU;MACR,UAAU,EAAE,SAA8C;MAC1D,MAAM,EAAE,CAAC;MACT,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,CAAC;MACV,gBAAgB,EA3DG,OAAqC;IA8D1D,oBAAU;MACR,KAAK,EAvEc,OAAoB;MAyErC,SAAI,EAxEiB,QAAmB;MAyExC,WAAM,EAxEiB,IAAI;MA0E7B,cAAc,EAzEc,SAAS;;ACuIvC,aAAc;EAnGd,QAAQ,EAAE,QAAQ;EAgElB,aAA8B,EAhGP,SAAmB;EAmC1C,kBAAK;IACH,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,KAAsB,EAAE,CAAC;IACzB,GAAG,EAAE,CAAC;IACN,WAAwB,EAAE,SAAS;IAGnC,wBAAQ;MACN,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,EAAE;MACX,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,KAAK;MACd,YAAY,EAAE,KAAK;MACnB,GAAG,EAAE,GAAG;MACR,IAAiB,EAAE,GAAG;IAGxB,yBAAS;MAAE,gBAAgB,EAzEH,kBAAe;EA+EzC,kBAAK;IACH,iBAA8B,EA/EH,wBAAqB;EAmHlD,kBAAK;IAAE,KAAK,EAjGc,UAAqB;IAkG7C,wBAAQ;MACN,gBAAgB,EAAE,KAAK;MACvB,YAAY,EAnGQ,QAA8B;MAoGlD,WAAwB,EAlGK,SAAY;MAmGzC,GAAG,EAAE,GAAG;EAqBZ,wBAAW;IAAE,YAAY,EAAE,2CAA8C;EA/DzE,4BAAK;IACH,iBAA8B,EA/EH,wBAAqB;EA6IlD,kCAAW;IAAE,YAAY,EAAE,2CAA8C;EA/DzE,wBAAK;IACH,iBAA8B,EA/EH,wBAAqB;EA8ElD,0BAAK;IACH,iBAA8B,EA/EH,wBAAqB;EA0JhD,kBAAO;IArET,aAA8B,EAlFP,OAAoB;IAoF3C,uBAAK;MAAE,KAAK,EAnFc,OAAmB;MAoF3C,6BAAQ;QACN,gBAAgB,EAAE,KAAK;QACvB,YAAY,EArFQ,QAAe;QAsFnC,WAAwB,EApFK,SAAY;QAqFzC,GAAG,EAAE,GAAG;EA+DV,mBAAQ;IAxDV,aAA8B,EAzFP,QAAoB;IA2F3C,wBAAK;MAAE,KAAK,EA1Fc,QAAmB;MA2F3C,8BAAQ;QACN,gBAAgB,EAAE,KAAK;QACvB,YAAY,EA5FQ,SAAe;QA6FnC,WAAwB,EA3FK,SAAY;QA4FzC,GAAG,EAAE,GAAG;EAkDV,mBAAQ;IA7BV,aAA8B,EAvGP,MAAmB;IAyG1C,wBAAK;MAAE,KAAK,EAxGc,SAAmB;MAyG3C,8BAAQ;QACN,gBAAgB,EAAE,KAAK;QACvB,YAAY,EA1GQ,SAA8B;QA2GlD,WAAwB,EAzGK,SAAY;QA0GzC,GAAG,EAAE,GAAG;EAuBV,oBAAS;IAAE,YAAY,EAAE,IAAI;EAhB/B,kCAAW;IAAE,YAAY,EAAE,2CAA8C;EAoBvE,yBAAc;I5B7IhB,kCAAqC,EAiTzB,GAAG;IAhTf,+BAAkC,EAgTtB,GAAG;IA/Sf,0BAA6B,EA+SjB,GAAG;IA9Sf,uBAA0B,EA8Sd,GAAG;E4BnKb,wBAAa;I5B9If,kCAAqC,E4B8IsB,MAAM;I5B7IjE,+BAAkC,E4B6IyB,MAAM;I5B5IjE,0BAA6B,E4B4I8B,MAAM;I5B3IjE,uBAA0B,E4B2IiC,MAAM;EAE7D,gCAAW;IAAE,YAAY,EAAC,IAAI;EAC9B,+BAAU;IAAE,YAAY,EAAC,IAAI;EAC7B,6BAAM;IACJ,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,UAAU;IACvB,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;;AC1Ed,QAAS;EA9DX,OAAO,EAAE,KAAK;EACd,MAAM,EA3Cc,mBAAiB;EA4CrC,QAAQ,EAAE,MAAM;EAChB,WAAW,EA5Cc,OAAW;EA6CpC,KAAK,EAAE,IAAI;EAEX,WAAG;IACD,cAAc,EAAE,SAAS;EAG3B;;aAEG;IACD,KAAK,EAjDY,OAAS;IAkD1B,KAAK,E7B2QS,IAAI;I6B1QlB,WAAW,EArDO,sDAAiB;IAsDnC,SAAS,EArDO,QAAY;IAsD5B,WAAW,EA3Cc,MAAmB;IA4C5C,WAAwB,EtBclB,IAAmD;IsBbzD,aAAa,EAAE,CAAC;IAEhB;;iBAAE;MACA,KAAK,EA1DU,OAAS;MA2DxB,OAAO,EA7CY,cAAgB;MA8CnC,eAAe,EA1DK,IAAI;MA4DxB;;yBAAQ;QACN,KAAK,EA1Dc,OAAkD;IA8DzE;;wBAAW;M7BzDX,aAAa,E6BNO,GAAG;MAiErB,UAAU,EA1DI,OAAc;MA2D5B,KAAK,EAzDY,OAAM;MA0DvB,MAAM,EAxDY,OAAO;MAyDzB,WAAW,EA9DY,MAAmB;MA+D1C,OAAO,EA3DY,cAAgB;MA6DnC;;gCAAQ;QACN,UAAU,EAhEQ,OAAiD;;ACkLrE,OAAQ;EAxKZ,MAAM,EAAE,IAAI;EACZ,aAAa,EAtBQ,MAAM;EAuB3B,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,mBAAmB,EAAE,IAAI;EACzB,gBAAgB,EAAE,IAAI;EACtB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EAGjB,aAAM;IACJ,UAAU,EAxCF,OAAU;IAyClB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,IAAwB;IACvC,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,IAAsB;IAAE,MAAM,EA1CrB,IAAI;I9BsHtB,UAAU,EAPS,mBAAyB;E8B7D5C,aAAM;IACJ,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAC,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IAER,qBAAU;MAAE,WAAW,EAAE,CAAC;MAAE,YAAY,EAAE,CAAC;EAO7C,mBAAY;IACV,UAAU,EA5DK,OAAM;IA6DrB,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAA0B;IAClC,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,MAA0B;IAEjC,kBAAkB,EAAE,mBAAuC;IAC3D,eAAe,EAAE,mBAAuC;IACxD,aAAa,EAAE,oBAAkB;IACjC,UAAU,EAAE,mBAAuC;IAEnD,iBAAiB,EAAE,oBAAkB;IACrC,cAAc,EAAE,oBAAkB;IAClC,aAAa,EAAE,oBAAkB;IACjC,YAAY,EAAE,oBAAkB;IAChC,SAAS,EAAE,oBAAkB;EAG/B,6BAAsB;IACpB,UAAU,EA/EQ,OAAc;EAkFlC,mCAA4B;IAC1B,IAAI,EAAE,OAA2B;EAWnC,aAAM;IACJ,MAAM,EAvGU,IAAI;IAwGpB,KAAK,EAAE,IAAW;EAGpB,mBAAY;IACV,MAAM,EAAE,MAAe;IACvB,KAAK,EAAE,MAAe;EAGxB,mCAA4B;IAC1B,IAAI,EAAE,OAAgB;EAoBtB,aAAM;IACJ,KAAK,EAAE,WAAW;IAClB,UAAU,EA5IJ,OAAU;EA+IlB,mBAAY;IACV,UAAU,EAtIG,OAAM;EAyIrB,6BAAsB;IACpB,UAAU,EAvIM,OAAc;EA8FlC,mBAAM;IACJ,MAAM,EAtGU,MAAM;IAuGtB,KAAK,EAAE,IAAW;EAGpB,yBAAY;IACV,MAAM,EAAE,IAAe;IACvB,KAAK,EAAE,IAAe;EAGxB,yCAA4B;IAC1B,IAAI,EAAE,OAAgB;EAXxB,mBAAM;IACJ,MAAM,EAxGU,OAAO;IAyGvB,KAAK,EAAE,MAAW;EAGpB,yBAAY;IACV,MAAM,EAAE,OAAe;IACvB,KAAK,EAAE,OAAe;EAGxB,yCAA4B;IAC1B,IAAI,EAAE,IAAgB;EAXxB,kBAAM;IACJ,MAAM,EAzGU,MAAM;IA0GtB,KAAK,EAAE,IAAW;EAGpB,wBAAY;IACV,MAAM,EAAE,IAAe;IACvB,KAAK,EAAE,IAAe;EAGxB,wCAA4B;IAC1B,IAAI,EAAE,OAAgB;EA4FhB,oBAAM;I9BlMZ,aAAa,E8BkMiB,GAAG;EAC3B,0BAAY;I9BnMlB,aAAa,E8BmMuB,GAAG;EAInC,aAAQ;I9BvMZ,aAAa,E8BuMiB,MAAM;IAC9B,mBAAM;M9BxMZ,aAAa,E8BwMiB,IAAI;IAC5B,yBAAY;M9BzMlB,aAAa,E8ByMuB,IAAI;;ACzGxC,KAAM;EAnER,UAAU,EA7CD,OAAM;EA8Cf,MAAM,EAAE,iBAA0D;EAClE,aAAa,EAVO,OAAY;EAWhC,YAAY,EAbC,IAAI;EAejB,aAAQ;IACN,UAAU,EA5BK,WAAW;IA6B1B,KAAK,EArBc,OAAI;IAuBrB,SAAI,EA7BgB,IAAY;IA8BhC,WAAM,EA7BgB,IAAI;EAiC9B,WAAM;IACJ,UAAU,EA5CE,OAAc;IA+CxB;qBACG;MACD,KAAK,EAlCU,OAAI;MAmCnB,SAAS,EAjDM,QAAqB;MAkDpC,WAAW,EAhDM,IAAuB;MAiDxC,OAAO,EAhDM,wBAAmB;EAqDtC,WAAM;IACJ,UAAU,EA1DE,OAAc;IA6DxB;qBACG;MACD,KAAK,EAhDU,OAAI;MAiDnB,SAAS,EA/DM,QAAqB;MAgEpC,WAAW,EA9DM,IAAuB;MA+DxC,OAAO,EA9DM,wBAAmB;EAoEpC;aACG;IACD,KAAK,EA3DY,OAAI;IA4DrB,SAAS,EA7DO,QAAY;IA8D5B,OAAO,EA/DO,kBAAc;IAgE5B,UAAU,E/BsOE,IAAI;E+BnOlB,uDAEoB;IAAE,UAAU,EAjGhB,OAAK;EAoGvB;;;;;aAKM;IAAE,OAAO,EAtED,UAAU;IAsES,WAAW,EA1E1B,QAAY;;ACrB5B,KAAM;EAEJ,aAAa,EAAE,YAAY;EAC3B,WAAW,EAAE,CAAC;EhC8MlB,yBAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,WAAQ;IAAE,KAAK,EAAE,IAAI;EgC7MjB;kBACW;IACT,KAAK,EhCiTK,IAAI;IgChTd,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,YAAY;IAC3B,QAAQ,EAAE,QAAQ;IAElB;wBAAI;MACF,OAAO,EAAE,KAAK;MACd,gBAAgB,EA7BC,OAAO;MA8BxB,KAAK,EA1BqB,OAA2B;MA2BrD,WAAW,EAzBS,sDAAiB;MA0BrC,SAAS,EA3BS,IAAY;MA4B9B,OAAO,EAAE,SAAqD;MAE9D;gCAAQ;QACN,gBAAgB,EAlCK,OAAuD;IAsChF;+BAAa;MACX,gBAAgB,EAxCQ,OAAM;MAyC9B,KAAK,EAtCqB,OAA2B;EA6CrD;iCAAE;IhCnBR,iCAAqC,EAiTzB,GAAG;IAhTf,8BAAkC,EAgTtB,GAAG;IA/Sf,yBAA6B,EA+SjB,GAAG;IA9Sf,sBAA0B,EA8Sd,GAAG;EgCzRT;gCAAE;IhCxBR,kCAAqC,EAiTzB,GAAG;IAhTf,+BAAkC,EAgTtB,GAAG;IA/Sf,0BAA6B,EA+SjB,GAAG;IA9Sf,uBAA0B,EA8Sd,GAAG;EgCpRX;2BACW;IACT,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,IAAI;;AAKf,aAAc;EAEZ,aAAa,EA/DU,MAAY;EAgEnC,KAAK,EAAE,IAAI;EhCwJf,yCAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,mBAAQ;IAAE,KAAK,EAAE,IAAI;EgCvJjB,wBAAW;IACT,OAAO,EAAE,IAAI;IACb,KAAK,EhC2PK,IAAI;IgC1Pd,OAAO,EAAE,WAAuB;IAChC,KAAK,EAAE,IAAI;IAEX,+BAAS;MACP,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;IAEb,kCAAY;MACV,OAAO,EA5EO,SAAgB;EAgFlC,sBAAW;IACT,OAAO,EAAE,KAAK;IAEd,iCAAW;MACT,OAAO,EAAE,WAAuB;;AAKtC,6CAAqB;EAEjB,cAAW;IACT,KAAK,EhCkOG,IAAI;IgCjOZ,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,kBAAkD;IACjE,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,GAAG;;EAKZ,sBAAW;IACT,KAAK,EhCwNG,IAAI;IgCvNZ,WAAwB,EAAE,IAAI;IAC9B,SAAS,EAAE,GAAG;IACd,YAAyB,EAAE,IAAI;IAC/B,KAAK,EAAE,GAAG;AAMd,+BAAyB;EACvB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;;AC/Ef,GAAI;EAjBN,MAAM,EAAE,iBAAqD;EAC7D,UAAU,EArBO,4BAA0B;EAsB3C,OAAO,EAAE,YAAY;EACrB,WAAW,EAAE,CAAC;EACd,SAAS,EAAE,IAAI;EjCgGf,UAAU,EAPS,kBAAyB;EiCvF5C,oBACQ;IACN,UAAU,EA3BW,kCAAqC;EAwCxD,UAAS;IjC5BX,aAAa,EiCTF,GAAc;;;ACYzB,QAAS;EACP,aAAa,EA3BK,kBAAiB;EA4BnC,KAAK,EApBE,OAAI;EAqBX,MAAM,EAxBU,IAAI;EAyBpB,WAAW,EA7BK,IAAiB;EA+BjC,8BACQ;IACN,aAAa,EA/BS,kBAAyD;IAgC/E,KAAK,EA/Bc,OAAc;EAkCnC,qCACY;IAAE,KAAK,EAAE,eAAe;;AAGtC,QAAS;EACP,UAAU,EAnCH,OAAI;EAoCX,KAAK,EAjCU,OAAM;EAkCrB,OAAO,EAAE,IAAI;EACb,SAAS,EArCK,QAAY;EAsC1B,WAAW,EAjCW,MAAmB;EAkCzC,WAAW,EApCK,GAAG;EAqCnB,SAAS,EA7BK,KAAK;EA8BnB,OAAO,EA3CK,OAAY;EA4CxB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,IAAiB,EAAE,GAAG;EAEtB,eAAO;IACL,MAAM,EAAE,SAAuB;IAC/B,YAAY,EAAE,2CAA+C;IAC7D,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,KAAwB;IAC7B,KAAK,EAAE,CAAC;IACR,IAAiB,EA9CN,GAAG;IAgDd,mBAAM;MACJ,IAAI,EAAE,IAAI;MACV,KAAsB,EAlDb,GAAG;EAsDhB,eAAS;IlClDX,aAAa,EkCNA,GAAc;EA2DzB,cAAQ;IlCrDV,aAAa,EkCLC,MAAe;IA4DzB,qBAAO;MACL,IAAI,EAAE,IAAI;EAId,eAAS;IACP,aAAa,EAAE,6BAAuC;IACtD,KAAK,EAAE,kBAAoC;;AAI/C,aAAc;EACZ,KAAK,EA3EgB,OAAQ;EA4E7B,OAAO,EAAE,KAAK;EACd,SAAS,EA/EW,QAAY;EAgFhC,WAAW,EA/EW,MAAmB;;AAkF3C,kBAAiB;EAEb,eAAO;IACL,YAAY,EAAE,2CAA+C;IAC7D,GAAG,EAAE,KAAwB;EAE/B,uBAAe;IACb,YAAY,EAAE,2CAA+C;IAC7D,MAAM,EAAE,KAAwB;IAChC,GAAG,EAAE,IAAI;EAGX,qCACY;IAAE,KAAK,EAAE,eAAe;EAEpC,wBAAgB;IACd,YAAY,EAAE,2CAA+C;IAC7D,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,IAAkB;IAC9B,KAAK,EAAE,KAAwB;IAC/B,GAAG,EAAE,GAAG;EAEV,yBAAiB;IACf,YAAY,EAAE,2CAA+C;IAC7D,IAAI,EAAE,KAAwB;IAC9B,UAAU,EAAE,IAAkB;IAC9B,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,GAAG;ACtBd,yBAA0B;EACxB,WAAW,EAAE,yCAAwC;EACrD,KAAK,EArCW,SAA4B;;;AAyC9C,gBAAiB;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EA1DW,OAAI;EA4DzB,yBAAS;IACP,aAAa,EAvGE,CAAC;;AA4GpB,MAAO;EACL,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,EAAE;EACX,IAAiB,EAAE,CAAC;EAEpB,6BAAyB;IACvB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IAEX,yCAAY;MACV,QAAQ,EAAE,KAAK;MACf,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,EAAE;IAIb,8CAAiB;MACf,UAAU,EAlIJ,SAAY;MAmIlB,OAAO,EAAE,EAAE;;AAKjB,QAAS;EACP,UAAU,EA9FW,OAAI;EA+FzB,MAAM,EA1II,SAAY;EA2ItB,WAAW,EA3ID,SAAY;EA4ItB,aAAa,EA3II,CAAC;EA4IlB,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAGlB,WAAG;IACD,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,CAAC;EAGlB,aAAK;IACH,SAAS,EAAE,IAAI;EAGjB;;iBAEO;IACL,aAAa,EAAE,CAAC;EAGlB;iBACO;IACL,SAAS,EAzIS,OAAM;IA0IxB,MAAM,EArGQ,OAAY;IAsG1B,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,MAAM;EAGrB,iCAAgB;IACd,SAAS,EAhJS,OAAM;IAiJxB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,SAAoB;IACpC,WAAW,EAAE,SAAoB;IAKjC,wCAAsB;MATxB,iCAAgB;QAUZ,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,IAAI;EAKb,oBAAY;IACV,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;EAGpB,cAAM;IACJ,SAAS,E5B5MN,IAAI;I4B6MP,MAAM,EA/LE,SAAY;IAgMpB,MAAM,EAAE,CAAC;IAET,iHAAwB;MACtB,SAAS,EA9LM,SAAY;MA+L3B,WAAW,EApML,SAAY;MAqMlB,MAAM,EAAE,CAAC;MAET,6HAAE;QACA,KAAK,EAtJQ,OAAM;QAuJnB,OAAO,EAAE,KAAK;QACd,WAAW,EAxKO,MAAmB;QAyKrC,OAAO,EAAE,WAAsB;QAC/B,KAAK,EAAE,GAAG;EAMhB,uBAAe;IACb,QAAQ,EAAE,QAAQ;IAClB,KAA6B,EAAE,CAAC;IAChC,GAAG,EAAE,CAAC;IAEN,yBAAE;MACA,KAAK,EAtKU,OAAM;MAuKrB,OAAO,EAAE,KAAK;MACd,SAAS,EA3KU,SAAY;MA4K/B,WAAW,EA3KK,IAAiB;MA4KjC,MAAM,EA5NA,SAAY;MA6NlB,WAAW,EA7NL,SAAY;MA8NlB,OAAO,EAAE,WAAsB;MAC/B,QAAQ,EAAE,QAAQ;MAClB,cAAc,EAlLK,SAAS;IAsL9B,iCAAY;MACV,UAAU,EAAE,KAAK;MACjB,GAAG,EAAE,GAAG;MAER,mCAAE;QAMA,KAAK,EA5LQ,OAAM;QA6LnB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,oBAA0D;QACnE,QAAQ,EAAE,QAAQ;QnClE5B,+CAAY;UACV,OAAO,EAAE,EAAE;UACX,OAAO,EAAE,KAAK;UACd,MAAM,EAAE,CAAC;UACT,QAAQ,EAAE,QAAQ;UAkBhB,UAAU,EAAE,IAAW;UACvB,GAAG,EAAE,GAAG;UACR,KAAsB,EmClLL,SAAkB;UnCqLrC,UAAU,EACR,4DAAuB;UAGzB,KAAK,EmC0BsB,IAAI;QnCxBjC,oDAAiB;UACf,UAAU,EACR,6CAA6B;EmCqC7B,iBAAW;IACT,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,IAAI;IAEZ,6BAAY;MACV,UAAU,EAlNO,OAAI;IAsNrB,kCAAE;MACA,KAAK,EA9MgB,OAAM;MAgN3B,8CAAY;QAGV,UAAU,EAAE,4DAAyC;IAQ3D,qDAAqD;MAEjD;kDACU;QACR,IAAI,EAAE,OAAO;MAIf,iEAA+B;QAC7B,OAAO,EAAE,CAAC;;AAQpB,gBAAiB;EACf,IAAiB,EAAE,CAAC;EACpB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EnCzKf,UAAU,EAPS,mBAAyB;EmCmLxC,mBAAG;IACD,OAAO,EAAE,KAAK;IACd,SAAS,E5BtTN,IAAI;I4BuTP,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,IAAI;EAGb;qCACmB;IACjB,UAAU,EA/OU,iBAA0D;IAgP9E,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,IAAI;EAGb,sBAAM;IACN,UAAU,EA7QW,OAAI;IA+QvB,0BAAI;MACF,KAAK,EAzQU,OAAM;MA0QrB,OAAO,EAAE,KAAK;MACd,WAAW,EAzSK,sDAAiB;MA0SjC,SAAS,EAjTK,SAAY;MAkT1B,WAAW,EA7RS,MAAmB;MA8RvC,YAAyB,EA1SZ,SAAkB;MA2S/B,OAAO,EAAE,qBAAgC;MACzC,cAAc,EA7SK,IAAI;MA8SvB,KAAK,EAAE,IAAI;MAEX,iCAAS;QACP,SAAS,EAzTG,SAAY;QA0TxB,YAAyB,EAjTd,SAAkB;QAkT7B,aAA8B,EAlTnB,SAAkB;Q7BuHrC,gBAAgB,E6B3HI,OAAc;Q7B4HlC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,gFACQ;UAAE,gBAAgB,EAVT,OAAwG;QAezH,gFACQ;UACN,KAAK,E6BrGc,OAAM;MA0RrB,2CAAmB;Q7B/LzB,gBAAgB,EkBrIa,OAAgB;QlBsI7C,YAAY,EARK,OAAwG;QAazH,KAAK,E6BxGkB,OAAI;Q7BoG3B,oGACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,oGACQ;UACN,KAAK,E6B5GgB,OAAI;MAkSrB,yCAAiB;Q7BhMvB,gBAAgB,EkBpIW,OAAc;QlBqIzC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,gGACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,gGACQ;UACN,KAAK,E6BrGc,OAAM;MA4RrB,uCAAe;Q7BjMrB,gBAAgB,EkBnIS,OAAY;QlBoIrC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,4FACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,4FACQ;UACN,KAAK,E6BrGc,OAAM;MA6RrB,yCAAiB;Q7BlMvB,gBAAgB,EA9GM,OAAc;QA+GpC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,gGACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,gGACQ;UACN,KAAK,E6BrGc,OAAM;MA8RrB,sCAAc;Q7BnMpB,gBAAgB,EA3GG,OAAW;QA4G9B,YAAY,EARK,OAAwG;QAazH,KAAK,E6BxGkB,OAAI;Q7BoG3B,0FACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,0FACQ;UACN,KAAK,E6BrGc,OAAM;IAiSvB,+BAAS;MACP,SAAS,EAvUK,SAAY;MAwU1B,YAAyB,EA/TZ,SAAkB;MAgU/B,aAA8B,EAhUjB,SAAkB;M7BuHrC,gBAAgB,E6B3HI,OAAc;M7B4HlC,YAAY,EARK,OAAwG;MAazH,KAAK,E6BjGgB,OAAM;M7B6F3B,4EACQ;QAAE,gBAAgB,EAVT,OAAwG;MAezH,4EACQ;QACN,KAAK,E6BrGc,OAAM;MAuSrB,yCAAY;Q7B5MlB,gBAAgB,EkBrIa,OAAgB;QlBsI7C,YAAY,EARK,OAAwG;QAazH,KAAK,E6BxGkB,OAAI;Q7BoG3B,gGACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,gGACQ;UACN,KAAK,E6B5GgB,OAAI;MA+SrB,uCAAU;Q7B7MhB,gBAAgB,EkBpIW,OAAc;QlBqIzC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,4FACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,4FACQ;UACN,KAAK,E6BrGc,OAAM;MAySrB,qCAAQ;Q7B9Md,gBAAgB,EkBnIS,OAAY;QlBoIrC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,wFACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,wFACQ;UACN,KAAK,E6BrGc,OAAM;MA0SrB,uCAAU;Q7B/MhB,gBAAgB,EA9GM,OAAc;QA+GpC,YAAY,EARK,OAAwG;QAazH,KAAK,E6BjGgB,OAAM;Q7B6F3B,4FACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,4FACQ;UACN,KAAK,E6BrGc,OAAM;MA2SrB,oCAAO;Q7BhNb,gBAAgB,EA3GG,OAAW;QA4G9B,YAAY,EARK,OAAwG;QAazH,KAAK,E6BxGkB,OAAI;Q7BoG3B,sFACQ;UAAE,gBAAgB,EAdb,OAAoG;QAmBjH,sFACQ;UACN,KAAK,E6BrGc,OAAM;IA+SvB,+CAA2B;MACzB,gBAAgB,EAjVG,OAAS;MAkV5B,KAAK,EAjTU,OAAM;MAoTnB,UAAU,EArUU,OAAI;IA0U5B,iCAAa;MACX,UAAU,EA1VI,OAAc;MA2V5B,KAAK,EA3TU,OAAM;MA6TrB,uCAAQ;QACN,UAAU,EA7VQ,OAA6C;QA8V/D,KAAK,EA/TQ,OAAM;EAqUzB,0BAAU;IACR,OAAO,EAlWQ,SAAkB;EAsWnC,8BAAc;IACZ,QAAQ,EAAE,QAAQ;IAGhB,wCAAQ;MnCnPhB,MAAM,EAAE,SAAoB;MAC5B,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MAUN,YAAY,EAAE,4DAAmD;MACjE,iBAAiB,EAAE,KAAK;MmCyOhB,YAA6B,EA/WlB,SAAkB;MAgX7B,UAAU,EAAE,MAAuC;MACnD,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,GAAG;MACR,KAAsB,EAAE,CAAC;IAI7B,oCAAQ;MACN,QAAQ,EAAE,MAAM;MAEhB,gDAAY;QnCzIpB,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,IAAI;QmCzLV,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,mBAAmB;QA+TnB,KAAK,EAAE,IAAI;MAGb,8CAAU;QACR,OAAO,EAAE,IAAI;EAMnB,0BAAU;InChKd,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,GAAG;ImCnLV,OAAO,EAAE,KAAK;IAiVR,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,EAAE;IACX,IAAiB,EAAE,IAAI;IAEvB,6BAAG;MACD,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MAEX,+BAAE;QACA,WAAW,EAvYO,MAAmB;QAwYrC,OAAO,EAAE,aAAwB;QACjC,2CAAc;UACZ,WAAW,EA1YK,MAAmB;MA8YvC,iFACc;QAEZ,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,SAAS,EA9ZG,QAAY;QA+ZxB,qFAAE;UACA,KAAK,EArYM,OAAM;UAuYjB,OAAO,EAAE,KAAK;UACd,iGAAQ;YAAE,UAAU,EAAC,IAAI;MAI7B,sCAAW;QACT,OAAO,EAAE,aAAwB;MAGnC;0CACO;QACL,GAAG,EAAE,IAAI;IAIb,gCAAM;MACJ,KAAK,EAlae,OAAQ;MAma5B,SAAS,EAhae,QAAY;MAiapC,WAAW,EA3ZK,IAAiB;MA4ZjC,aAAa,EAAE,CAAC;MAChB,OAAO,EAAE,iBAA4B;MACrC,cAAc,EAtae,SAAS;;AA2a5C,aAAc;EAAE,OAAO,EAAE,KAAK;;AAI9B,6CAA8B;EAC5B,QAAS;IAEP,UAAU,EA/aS,OAAI;IAgbvB,QAAQ,EAAE,OAAO;InChQvB,+BAAkB;MAAE,OAAO,EAAE,GAAG;MAAE,OAAO,EAAE,KAAK;IAChD,cAAQ;MAAE,KAAK,EAAE,IAAI;ImCiQf,uBAAe;MAAE,OAAO,EAAE,IAAI;IAE9B,oBAAY;MAAE,KAAK,EnC7JT,IAAI;ImC8Jd;;;;;uBAKW;MAAE,KAAK,EAAE,IAAI;IAExB;;;mBAGO;MACL,SAAS,E5BlaT,QAAmD;M4BmanD,MAAM,EA9aM,OAAY;MA+axB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,UAA6C;IAGpD;+BACmB;MACjB,SAAS,E5B1aT,QAAmD;M4B2anD,MAAM,EAtbM,OAAY;MAubxB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,UAA6C;IAGpD,iBAAW;MACT,UAAU,EA/cO,OAAI;;EAmdzB,yBAA0B;IACxB,MAAM,EAAE,MAAM;IACd,aAAa,EA/fE,CAAC;IAggBhB,SAAS,ET9fE,OAAU;;ESigBvB,gBAAiB;InC1YrB,UAAU,EAPS,QAAyB;ImCmZtC,IAAiB,EAAE,YAAY;IAE/B,mBAAG;MACD,OAAO,EAAE,MAAM;MACf,MAAM,EAAE,eAAe;MACvB,KAAK,EAAE,IAAI;MAEX,sBAAG;QACD,KAAK,EnC5MC,IAAI;QmC6MV,oCAAc;UAAE,OAAO,EAAE,IAAI;IAM7B,0CAAiB;MACf,gBAAgB,EArgBD,OAAS;MAugBtB,UAAU,EAvfM,OAAI;MAyftB,KAAK,EAxeM,OAAM;IA6enB,iDAAe;MACb,UAAU,EArfG,OAAI;MAsfjB,WAAW,EAjiBT,SAAY;MAkiBd,OAAO,EAAE,WAAsB;MAC/B,uDAAQ;QACN,gBAAgB,EAnhBH,OAAS;QAqhBpB,UAAU,EArgBI,OAAI;IA4gBxB,wDAAe;MACb,UAAU,EA5hBA,OAAc;MA6hBxB,KAAK,EA7fM,OAAM;MA8fjB,WAAW,EAhjBT,SAAY;MAijBd,OAAO,EAAE,WAAsB;MAC/B,8DAAQ;QACN,UAAU,EAhiBI,OAA6C;QAiiB3D,KAAK,EAlgBI,OAAM;IA0gBnB,kCAAI;MACF,aAA8B,EAAE,oBAA+D;MAC/F,wCAAQ;QnCjbpB,MAAM,EAAE,SAAoB;QAC5B,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QAEN,YAAY,EAAE,4DAAmD;QACjE,gBAAgB,EAAE,KAAK;QmC4aX,UAAU,EAAE,MAAmC;QAC/C,GAAG,EAAE,UAAoB;IAK/B,oCAAQ;MAAE,QAAQ,EAAE,QAAQ;MAC1B,gDAAY;QnC3UtB,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,mBAAmB;QAC7B,KAAK,EAAE,GAAG;QmCnLV,OAAO,EAAE,KAAK;IAggBJ,4GAAY;MnCtUtB,QAAQ,EAAE,iBAAiB;MAC3B,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,OAAO;MACjB,IAAI,EAAE,IAAI;MmCzLV,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,mBAAmB;IA+frB,oDAAsB;MnC3U9B,QAAQ,EAAE,iBAAiB;MAC3B,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,OAAO;MACjB,IAAI,EAAE,IAAI;MmCzLV,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,mBAAmB;IAsgBf,kEAAQ;MACN,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,OAAO;MAChB,GAAG,E5BnhBX,SAAmD;M4BqhB3C,KAAsB,EAAE,GAAG;IAOrC,0BAAU;MACR,IAAiB,EAAE,CAAC;MACpB,UAAU,EAAE,WAAW;MACvB,SAAS,EAAE,IAAI;MACf,GAAG,EAAE,IAAI;MAGP,+BAAE;QACA,UAAU,EAlkBG,OAAI;QAmkBjB,KAAK,EA5jBM,OAAM;QA6jBjB,WAAW,EA/mBT,SAAY;QAgnBd,OAAO,EAAE,cAAyB;QAClC,WAAW,EAAE,MAAM;MAInB,0EAAiB;QACf,UAAU,EA3kBC,OAAI;QA4kBf,KAAK,EArkBI,OAAM;MAwkBjB,gFAAyB;QACvB,gBAAgB,EA1mBH,OAAS;QA2mBtB,KAAK,EA1kBI,OAAM;QA4kBb,UAAU,EA7lBI,OAAI;MAkmBxB,mCAAM;QACJ,UAAU,EAzlBG,OAAI;QA0lBjB,WAAW,EAAE,MAAM;MAIrB,uCAAU;QACR,IAAiB,EAAE,IAAI;QACvB,GAAG,EAAE,CAAC;IAKZ;8CAC0B;MACxB,YAA6B,EAjlBR,iBAAyD;MAklB9E,aAAa,EAAE,IAAI;MACnB,UAAU,EAAE,IAAI;MAChB,KAAK,EAAE,IAAI;MACX,MAAM,EAtpBA,SAAY;MAupBlB,KAAK,EAAE,CAAC;IAGV,0BAAU;MACR,UAAU,EAhnBO,OAAI;MAinBrB,MAAM,EA5pBA,SAAY;MA6pBlB,OAAO,EAAE,WAAsB;IAK/B,oCAAa;MACX,IAAiB,EAAE,IAAI;MACvB,KAAsB,EAAE,CAAC;MAEzB,iDAAa;QAAE,KAAsB,EAAE,IAAI;IAI7C,mCAAa;MACX,KAAsB,EAAE,IAAI;MAC5B,IAAiB,EAAE,CAAC;MAEpB,gDAAa;QAAE,IAAiB,EAAE,IAAI;;EAUxC,uCAAY;IACV,gBAAgB,EAxqBC,OAAS;IA0qBxB,UAAU,EA1pBQ,OAAI;IA4pBxB,KAAK,EA3oBQ,OAAM;EA+oBrB,wCAAa;IACX,UAAU,EAhrBE,OAAc;IAirB1B,KAAK,EAjpBQ,OAAM;EAupBnB,uDAAY;InClctB,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;ImCzLV,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,mBAAmB;EA2nBrB,2DAAsB;InCvc9B,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;ImCzLV,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,mBAAmB;ACuD7B,UAAc;EAAE,UAAU,EAAE,eAAe;;AAC3C,WAAc;EAAE,UAAU,EAAE,gBAAgB;;AAC5C,YAAc;EAAE,UAAU,EAAE,iBAAiB;;AAC7C,aAAc;EAAE,UAAU,EAAE,kBAAkB;;AAG5C,wCAA8C;EAC5C,qBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,sBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,uBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,wBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,kBAA8C;EAC5C,gBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,iBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,kBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,mBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,mEAA8C;EAC5C,sBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,uBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,wBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,yBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,6CAA8C;EAC5C,iBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,kBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,mBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,oBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,mEAA8C;EAC5C,qBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,sBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,uBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,wBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,6CAA8C;EAC5C,gBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,iBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,kBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,mBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,oEAA8C;EAC5C,sBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,uBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,wBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,yBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,6CAA8C;EAC5C,iBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,kBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,mBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,oBAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,8EAA8C;EAC5C,uBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,wBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,yBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,0BAA+C;IAAE,UAAU,EAAE,kBAAkB;AAJjF,8CAA8C;EAC5C,kBAA4C;IAAE,UAAU,EAAE,eAAe;;EACzE,mBAA+C;IAAE,UAAU,EAAE,gBAAgB;;EAC7E,oBAA+C;IAAE,UAAU,EAAE,iBAAiB;;EAC9E,qBAA+C;IAAE,UAAU,EAAE,kBAAkB;;AA4BjF;;;;;;;;;;;;;;;;;;EAkBG;EACD,MAAM,EAAC,CAAC;EACR,OAAO,EAAC,CAAC;;;AAIX,CAAE;EACA,KAAK,EAvJS,OAAc;EAwJ5B,WAAW,EAAE,OAAO;EACpB,eAAe,EA3JI,IAAI;EA6JvB,gBACQ;IACN,KAAK,EA5Ja,OAAiD;EAkKrE,KAAI;IAAE,MAAM,EAAC,IAAI;;;AAInB,CAAE;EACA,WAAW,EA9JE,OAAsB;EA+JnC,SAAS,EA9LO,IAAI;EA+LpB,WAAW,EApLE,MAAmB;EAqLhC,WAAW,EA/LO,GAAG;EAgMrB,aAAa,EA/JE,OAAwB;EAgKvC,cAAc,EA5LO,kBAAkB;EA8LvC,MAAO;IAlEX,SAAS,EAAE,UAAoC;IAC/C,WAAW,EAAE,GAAG;EAmEZ,OAAQ;IACN,SAAS,EApMW,QAAY;IAqMhC,UAAU,EAnMW,MAAM;IAoM3B,WAAW,EArMW,IAAI;;;AA0M9B,sBAAuB;EACrB,KAAK,EAnPS,OAAI;EAoPlB,WAAW,EAvPI,sDAAiB;EAwPhC,UAAU,EAtPI,MAAM;EAuPpB,WAAW,EAvME,MAAmB;EAwMhC,WAAW,EAtPI,GAAG;EAuPlB,aAAa,EArPI,MAAK;EAsPtB,UAAU,EAvPI,MAAK;EAwPnB,cAAc,EAtPI,kBAAkB;EAwPpC,0DAAM;IACJ,KAAK,EA9NM,OAAgD;IA+N3D,SAAS,EAhOC,GAAG;IAiOb,WAAW,EAAE,CAAC;;AAIlB,EAAG;EAAE,SAAS,EAAE,QAAkC;;AAClD,EAAG;EAAE,SAAS,EAAE,SAAkC;;AAClD,EAAG;EAAE,SAAS,EAAE,QAAkC;;AAClD,EAAG;EAAE,SAAS,EAAE,QAAkC;;AAClD,EAAG;EAAE,SAAS,EAAE,QAAkC;;AAClD,EAAG;EAAE,SAAS,EAAE,IAAkC;;AAElD,UAAW;EA/Fb,WAAW,EApJW,GAAG;EAqJzB,KAAK,EApJgB,OAAgD;EAqJrE,WAAW,EA9HM,MAAmB;EA+HpC,UAAU,EApJW,MAAK;EAqJ1B,aAAa,EApJW,MAAK;;AAiP3B,EAAG;EACD,MAAM,EAAE,aAAiC;EACzC,YAAY,EAAE,OAAoB;EAClC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,mBAAsD;;;AAIhE;CACE;EACA,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,OAAO;;AAGtB;CACE;EACA,WAAW,EA9Kc,IAAiB;EA+K1C,WAAW,EAAE,OAAO;;AAGtB,KAAM;EACJ,SAAS,EApQG,GAAG;EAqQf,WAAW,EAAE,OAAO;;AAGtB,IAAK;EACH,gBAAgB,EAvPE,OAA8C;EAwPhE,YAAY,EArPE,OAAqD;EAsPnE,YAAY,EAvPE,KAAK;EAwPnB,YAAY,EAzPC,GAAG;EA0PhB,KAAK,EA9PE,OAAI;EA+PX,WAAW,EA9PE,+CAAsB;EA+PnC,WAAW,EA9PE,MAAmB;EA+PhC,OAAO,EA1PE,4BAAoC;;;AA8P/C;;EAEG;EACD,WAAW,EAlPE,OAAsB;EAmPnC,SAAS,EAlPE,IAAoB;EAmP/B,WAAW,EAlPE,GAAsB;EAmPnC,mBAAmB,EAjPH,OAAO;EAkPvB,aAAa,EAnPE,OAAwB;;AAsPzC,EAAG;EACD,WAAwB,EArPX,MAAM;;;AA2PjB;QACG;EACD,WAAwB,EA1Pb,OAAY;EA2PvB,aAAa,EAAE,CAAC;AAMlB,+CAAM;EAAE,UAAU,EAAE,OAAO;AAG7B,SAAS;EAAE,eAAe,EAAE,MAAM;EAAE,WAAwB,EAvQ/C,MAAM;AAwQnB,SAAS;EAAE,eAAe,EAAE,MAAM;EAAE,WAAwB,EAxQ/C,MAAM;AAyQnB,OAAO;EAAE,eAAe,EAAE,IAAI;EAAE,WAAwB,EAzQ3C,MAAM;;;AA6QrB,EAAG;EACD,WAAwB,EA7QH,MAAM;EA+QzB;UACG;IACD,WAAwB,EA/Qb,OAAY;IAgRvB,aAAa,EAAE,CAAC;;AAMtB,UAAW;EACT,eAAe,EAAE,IAAI;EACrB,WAAwB,EAzRD,CAAC;EA4RtB;kBACG;IACD,WAAwB,EA7Rb,OAAY;IA8RvB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,IAAI;;;AAOpB,KAAG;EACD,aAAa,EArSkB,MAAK;EAsSpC,WAAW,EApQY,IAAiB;AAsQ1C,KAAG;EAAE,aAAa,EAvSQ,OAAY;;;AA2SxC;OACQ;EACN,cAAc,EAAE,SAAS;EACzB,SAAS,EAAE,GAAG;EACd,KAAK,EpCjEO,IAAI;EoCkEhB,MAAM,EpCwBQ,IAAI;;AoCtBpB,IAAK;EACH,cAAc,EAAE,IAAI;EACpB,WAAS;IACP,aAAa,EA1SD,kBAAsB;;;AA+StC,UAAW;EACT,MAAM,EAAE,WAA4B;EACpC,OAAO,EAxTQ,6BAAmB;EAyTlC,WAAwB,EAxTV,iBAAqB;EA0TnC,eAAK;IACH,OAAO,EAAE,KAAK;IACd,SAAS,EA3TW,SAAY;IA4ThC,KAAK,EA1TgB,OAA2B;IA2ThD,sBAAS;MACP,OAAO,EAAE,aAAa;IAGxB;6BACU;MACR,KAAK,EAjUc,OAA2B;;AAqUpD;YACa;EACX,WAAW,EAxXO,GAAG;EAyXrB,KAAK,EA7Ua,OAAgD;;;AAiVpE,MAAO;EACL,OAAO,EAAE,YAAY;EACrB,MAAM,EAvUS,aAAkB;EAwUjC,MAAM,EAAE,iBAA6E;EACrF,OAAO,EA1US,gBAAe;EA4U/B,SAAG;IACD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,KAAK;EAEhB,UAAI;IACF,WAAW,EA9TY,IAAiB;IA+TxC,SAAS,EAxUgB,SAAY;;AA6UvC,gBAAS;EAAE,WAAW,EApUG,IAAiB;AAsU1C,YAAK;EACH,MAAM,EvB/ZU,OAAqB;EuBgarC,eAAe,EAvUY,IAAI;EAwU/B,WAAW,EAzUY,IAAiB;EA0UxC,MAAM,EAAE,IAAI;EACZ,OAAO,EA9UY,WAAa;;AAmVpC,6CAAqB;EACnB,sBAAuB;IAAE,WAAW,EA/brB,GAAG;;EAgclB,EAAG;IAAE,SAAS,EA1bL,OAAY;;EA2brB,EAAG;IAAE,SAAS,EA1bL,SAAY;;EA2brB,EAAG;IAAE,SAAS,EA1bL,SAAY;;EA2brB,EAAG;IAAE,SAAS,EA1bL,SAAY;;EA2brB,EAAG;IAAE,SAAS,EA1bL,QAAY;;EA2brB,EAAG;IAAE,SAAS,EA1bL,IAAI;;;;;;;AAqcb,YAAa;EACX,CAAE;IACA,UAAU,EAAE,sBAAsB;IAClC,KAAK,EAAE,kBAAiB;;IACxB,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,eAAe;;EAG9B;WACU;IAAE,eAAe,EAAE,SAAS;;EACtC,aAAc;IAAE,OAAO,EAAE,mBAAmB;;EAE5C,iBAAkB;IAAE,OAAO,EAAE,oBAAoB;;EAGjD;;oBAEmB;IAAE,OAAO,EAAE,EAAE;;EAEhC;YACW;IACT,MAAM,EAAE,iBAAmB;IAC3B,iBAAiB,EAAE,KAAK;;EAG1B,KAAM;IAAE,OAAO,EAAE,kBAAkB;;;EAEnC;KACI;IAAE,iBAAiB,EAAE,KAAK;;EAE9B,GAAI;IAAE,SAAS,EAAE,eAAe;;EAEhC,KAAgC;IAAxB,MAAM,EA9XP,MAAM;EAgYb;;IAEG;IACD,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;;EAGX;IACG;IAAE,gBAAgB,EAAE,KAAK;AC5GhC,gBAAiB;EAtUnB,2BAA2B,EAAE,MAAM;EAKnC,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EAwDX,QAAQ,EAAE,MAAM;EAChB,gHAGW;IAAE,UAAU,EAAE,IAAI;IAAE,0BAA0B,EAAE,KAAK;;AAqQ9D,WAAY;EAlUd,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EAsEX,kBAAkB,EAAE,4BAAsB;EAC1C,eAAe,EAAE,yBAAmB;EACpC,cAAc,EAAE,wBAAkB;EAClC,aAAa,EAAE,uBAAiB;EAChC,UAAU,EAAE,oBAAc;ErCyE1B,qCAAkB;IAAE,OAAO,EAAE,GAAG;IAAE,OAAO,EAAE,KAAK;EAChD,iBAAQ;IAAE,KAAK,EAAE,IAAI;;AqC+KnB,QAAS;EAzUX,2BAA2B,EAAE,MAAM;EAyFnC,UAAU,EA/II,OAAI;EAgJlB,KAAK,EAvHkB,OAAM;EAwH7B,MAAM,EAnHkB,SAAc;EAoHtC,WAAW,EApHa,SAAc;EAuHtC,QAAQ,EAAE,QAAQ;EAIlB,4EAAuB;IACrB,KAAK,EAjIgB,OAAM;IAkI3B,WAAW,EAlJgB,IAAiB;IAmJ5C,WAAW,EA9HW,SAAc;IA+HpC,MAAM,EAlKa,CAAC;EAoKtB,kDAAe;IAAE,SAAS,EDvKb,QAAY;;ACyYvB,WAAY;EA5Nd,MAAM,EAvIkB,SAAc;EAwItC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EA1ImB,SAAc;EA4IpC,YAAY,EAtLc,iBAA2B;EAwLrD,IAAI,EAAE,CAAC;;AAsNP,YAAa;EA7Nf,MAAM,EAvIkB,SAAc;EAwItC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EA1ImB,SAAc;EAiJpC,WAAW,EA3Le,iBAA2B;EA6LrD,KAAK,EAAC,CAAC;;AAmNP,gBAAiB;EA9MnB,MAAM,EAxJkB,SAAc;EAyJtC,OAAO,EAvMe,UAAe;EAwMrC,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,MAAM;EAClB,GAAG,EAAE,CAAC;EACJ,qBAAO;IAAE,UAAU,EAAE,IAAI;EACzB,sBAAQ;IAAE,UAAU,EAAE,KAAK;EAI7B,qBAAO;IACL,IAAI,EAAE,CAAC;IACP,KAAK,EApKiB,SAAc;EAsKtC,sBAAQ;IACN,IAAI,EAvKkB,SAAc;IAwKpC,KAAK,EAAE,CAAC;EAEV,uBAAS;IACP,IAAI,EA3KkB,SAAc;IA4KpC,KAAK,EA5KiB,SAAc;;AA0WpC,mBAAoB;EAClB,KAAK,EAhXc,OAAM;EAiXzB,OAAO,EAAE,KAAK;EACd,MAAM,EA7Wc,SAAc;EA8WlC,OAAO,EA7Wc,CAAC;EA8WtB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAlXc,SAAY;EAmXrC,SAAS,EAAE,oBAAkB;EAC7B,KAAK,EAlXe,SAAc;ErCsItC,+BAAY;IACV,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAOd,GAAG,EAAE,GAAG;IACR,UAAU,EAAE,OAAW;IAMvB,IAAI,EAAE,UAAoC;IAS9C,UAAU,EACR,4DAAuB;IAGzB,KAAK,EqClKqB,IAAY;ErCoKxC,oCAAiB;IACf,UAAU,EACR,4DAA6B;;AqCyN/B,qBAAsB;EA1WxB,2BAA2B,EAAE,MAAM;EAqBnC,UAAU,EA3EI,OAAI;EA4ElB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,0BAA0B,EAAE,KAAK;EACjC,kBAAkB,EAAE,wBAAwB;EAC5C,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,uBAAuB;EACnC,KAAK,EAtFY,SAAa;EAuF9B,OAAO,EAAE,IAAI;EArBb,iBAAiB,EAAE,wBAA0B;EAC1C,cAAc,EAAE,wBAA0B;EACzC,aAAa,EAAE,mBAAmB;EACjC,YAAY,EAAE,wBAA0B;EACrC,SAAS,EAAE,wBACrB;EAoBI,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,CAAC;EAhBR,uBAAE;IApBF,2BAA2B,EAAE,MAAM;;AA2WjC,sBAAuB;EA3WzB,2BAA2B,EAAE,MAAM;EAqBnC,UAAU,EA3EI,OAAI;EA4ElB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,0BAA0B,EAAE,KAAK;EACjC,kBAAkB,EAAE,wBAAwB;EAC5C,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,uBAAuB;EACnC,KAAK,EAtFY,SAAa;EAuF9B,OAAO,EAAE,IAAI;EArBb,iBAAiB,EAAE,uBAA0B;EAC1C,cAAc,EAAE,uBAA0B;EACzC,aAAa,EAAE,kBAAmB;EACjC,YAAY,EAAE,uBAA0B;EACrC,SAAS,EAAE,uBACrB;EAyBI,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EArBR,wBAAE;IApBF,2BAA2B,EAAE,MAAM;;AA4WjC,oBAAqB;EA5WvB,2BAA2B,EAAE,MAAM;EAqBnC,UAAU,EA3EI,OAAI;EA4ElB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,0BAA0B,EAAE,KAAK;EACjC,kBAAkB,EAAE,wBAAwB;EAC5C,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,uBAAuB;EACnC,KAAK,EAtFY,SAAa;EAuF9B,OAAO,EAAE,IAAI;EArBb,iBAAiB,EAAE,wBAA0B;EAC1C,cAAc,EAAE,wBAA0B;EACzC,aAAa,EAAE,mBAAmB;EACjC,YAAY,EAAE,wBAA0B;EACrC,SAAS,EAAE,wBACrB;EA8BI,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,MAAM,EAtGU,QAAa;EA2E/B,sBAAE;IApBF,2BAA2B,EAAE,MAAM;;AA6WjC,uBAAwB;EA7W1B,2BAA2B,EAAE,MAAM;EAqBnC,UAAU,EA3EI,OAAI;EA4ElB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,0BAA0B,EAAE,KAAK;EACjC,kBAAkB,EAAE,wBAAwB;EAC5C,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,uBAAuB;EACnC,KAAK,EAtFY,SAAa;EAuF9B,OAAO,EAAE,IAAI;EArBb,iBAAiB,EAAE,uBAA0B;EAC1C,cAAc,EAAE,uBAA0B;EACzC,aAAa,EAAE,kBAAmB;EACjC,YAAY,EAAE,uBAA0B;EACrC,SAAS,EAAE,uBACrB;EAoCI,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EACX,MAAM,EA5GU,QAAa;EA2E/B,yBAAE;IApBF,2BAA2B,EAAE,MAAM;;AA+WjC,kBAAmB;EApNrB,eAAe,EAAE,IAAI;EACrB,MAAM,EAAC,CAAC;EACR,OAAO,EAAC,CAAC;EAGP,2BAAM;IACJ,UAAU,EA7MM,OAAQ;IA8MxB,aAAa,EArMa,IAA+B;IAsMzD,UAAU,EAvMa,iBAA4B;IAwMnD,KAAK,EApNc,OAAS;IAqN5B,OAAO,EAAE,KAAK;IACd,SAAS,EApNc,OAAY;IAqNnC,WAAW,EApNc,IAAiB;IAqN1C,MAAM,EAjNa,CAAC;IAkNpB,OAAO,EA1Nc,gBAAmB;IA2NxC,cAAc,EAzNc,SAAS;EA2NvC,uBAAE;IACA,aAAa,EAnNa,iBAAwD;IAoNlF,KAAK,EArNa,wBAAgB;IAsNlC,OAAO,EAAE,KAAK;IACd,OAAO,EAxNa,UAAgB;IAyNpC,UAAU,EAAE,qBAAqB;IACjC,6BAAQ;MACN,UAAU,EAxOI,OAAyC;IA0OzD,8BAAS;MACP,UAAU,EA1OK,OAAyC;;AAya1D,yBAAc;EA3WlB,iBAAiB,EAAE,4BAA0B;EAC1C,cAAc,EAAE,4BAA0B;EACzC,aAAa,EAAE,uBAAmB;EACjC,YAAY,EAAE,4BAA0B;EACrC,SAAS,EAAE,4BACrB;AAyWM,4BAAiB;EAxXrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,kCAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AAsYjD,wBAAc;EAlXlB,iBAAiB,EAAE,6BAA0B;EAC1C,cAAc,EAAE,6BAA0B;EACzC,aAAa,EAAE,wBAAmB;EACjC,YAAY,EAAE,6BAA0B;EACrC,SAAS,EAAE,6BACrB;AAiXM,2BAAiB;EAhYrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,iCAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AA6YjD,uBAAc;EAzXlB,iBAAiB,EAAE,4BAA0B;EAC1C,cAAc,EAAE,4BAA0B;EACzC,aAAa,EAAE,uBAAmB;EACjC,YAAY,EAAE,4BAA0B;EACrC,SAAS,EAAE,4BACrB;AAwXM,0BAAiB;EAvYrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,gCAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AAoZjD,0BAAc;EAhYlB,iBAAiB,EAAE,2BAA0B;EAC1C,cAAc,EAAE,2BAA0B;EACzC,aAAa,EAAE,sBAAmB;EACjC,YAAY,EAAE,2BAA0B;EACrC,SAAS,EAAE,2BACrB;AA+XM,6BAAiB;EA9YrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,mCAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AA2ZjD;mFAC8C;EAC5C,aAAa,EAAE,IAAI;EACnB,iBAAiB,EAAE,IAAI;EACvB,cAAc,EAAE,IAAI;EACpB,YAAY,EAAE,IAAI;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI;AAEf,mCAAiB;EA1ZrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,yCAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AAuajD,8CAAuB;EACrB,aAAa,EAAE,IAAI;EACnB,iBAAiB,EAAE,IAAI;EACvB,cAAc,EAAE,IAAI;EACpB,YAAY,EAAE,IAAI;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI;AAEf,wCAAiB;EArarB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,8CAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AAkbjD,8CAAsB;EACpB,aAAa,EAAE,IAAI;EACnB,iBAAiB,EAAE,IAAI;EACvB,cAAc,EAAE,IAAI;EACpB,YAAY,EAAE,IAAI;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI;AAEf,yCAAiB;EAhbrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,+CAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AA6bjD,8CAAwB;EACtB,aAAa,EAAE,IAAI;EACnB,iBAAiB,EAAE,IAAI;EACvB,cAAc,EAAE,IAAI;EACpB,YAAY,EAAE,IAAI;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI;AAEf,uCAAiB;EA3brB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,6CAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AAwcjD,8CAAqB;EACnB,aAAa,EAAE,IAAI;EACnB,iBAAiB,EAAE,IAAI;EACvB,cAAc,EAAE,IAAI;EACpB,YAAY,EAAE,IAAI;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI;AAEf,0CAAiB;EAtcrB,2BAA2B,EAAE,MAAM;EAkMnC,UAAU,EA9MoB,2DAA2B;EA+MzD,MAAM,EAhNoB,OAAO;EAiNjC,UAAU,EAlNoB,qBAAsB;EAqNpD,2BAA2B,EAAE,WAAa;EAC1C,UAAU,EAnNoB,wBAAgB;EAoN9C,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,IAAI;EAEb,6CAAqB;IACnB,gDAAQ;MACN,UAAU,EA7NsB,yBAAiB;;AAqdjD,uCAAsB;EAAE,IAAI,EAAE,UAAoB;AAClD,wCAAuB;EAAE,KAAK,EAAE,UAAoB;AACpD,sCAAqB;EAAE,GAAG,EAAE,SAAqB;AACjD,yCAAwB;EAAE,MAAM,EAAE,SAAqB;AAEvD,0CAAyB;EAAE,KAAK,EAxgBnB,SAAa;AAygB1B,2CAA0B;EAAE,IAAI,EAzgBnB,SAAa;AA0gB1B,yCAAwB;EAAE,KAAK,EAzgBjB,QAAa;AA0gB3B,4CAA2B;EAAE,IAAI,EA1gBnB,QAAa;;AA+gB7B,aAAc;EAxdhB,2BAA2B,EAAE,MAAM;EA8NnC,0BAA0B,EAAE,KAAK;EACjC,UAAU,EArRI,OAAI;EAsRlB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EA/RY,SAAa;EAgS9B,MAAM,EA/RY,QAAa;EAgS/B,OAAO,EAAE,IAAI;EA/Nb,iBAAiB,EAAE,wBAA0B;EAC1C,cAAc,EAAE,wBAA0B;EACzC,aAAa,EAAE,mBAAmB;EACjC,YAAY,EAAE,wBAA0B;EACrC,SAAS,EAAE,wBACrB;EA6NI,IAAI,EAAE,CAAC;EAgBT,kBAAkB,EAAE,4BAAsB;EAC1C,eAAe,EAAE,yBAAmB;EACpC,cAAc,EAAE,wBAAkB;EAClC,aAAa,EAAE,uBAAiB;EAChC,UAAU,EAAE,oBAAc;EAnC1B,eAAE;IA7NF,2BAA2B,EAAE,MAAM;EAmQnC,uBAAU;IACR,UAAU,EAzSO,IAAI;IA0SrB,aAAa,EAxSe,IAA+B;IAyS3D,UAAU,EA1Se,iBAA4B;IA2SrD,KAAK,EAvTgB,OAAS;IAwT9B,WAAW,EArTgB,IAAiB;IAsT5C,OAAO,EA1TgB,gBAAmB;IA2T1C,cAAc,EAzTgB,SAAS;IAiUvC,MAAM,EA3Te,CAAC;IAqTtB,6BAAQ;MACN,UAAU,EA/SW,OAAkD;MAgTvE,aAAa,EA9SmB,IAAI;MA+SpC,UAAU,EAhTmB,iBAA6D;IAqUxF,8BAAS;MAUb,OAAO,EAAE,KAAK;MAIZ,YAAY,EAAE,KAAK;MAWvB,OAAO,EAAE,MAAM;EA6JX,gGAA6D;IAhdjE,iBAAiB,EAAE,qBAA0B;IAC1C,cAAc,EAAE,qBAA0B;IACzC,aAAa,EAAE,gBAAmB;IACjC,YAAY,EAAE,qBAA0B;IACrC,SAAS,EAAE,qBACrB;;AAgdI,cAAe;EA/djB,2BAA2B,EAAE,MAAM;EA8NnC,0BAA0B,EAAE,KAAK;EACjC,UAAU,EArRI,OAAI;EAsRlB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EA/RY,SAAa;EAgS9B,MAAM,EA/RY,QAAa;EAgS/B,OAAO,EAAE,IAAI;EA/Nb,iBAAiB,EAAE,uBAA0B;EAC1C,cAAc,EAAE,uBAA0B;EACzC,aAAa,EAAE,kBAAmB;EACjC,YAAY,EAAE,uBAA0B;EACrC,SAAS,EAAE,uBACrB;EAiOI,KAAK,EAAE,CAAC;EAYV,kBAAkB,EAAE,4BAAsB;EAC1C,eAAe,EAAE,yBAAmB;EACpC,cAAc,EAAE,wBAAkB;EAClC,aAAa,EAAE,uBAAiB;EAChC,UAAU,EAAE,oBAAc;EAnC1B,gBAAE;IA7NF,2BAA2B,EAAE,MAAM;EAmQnC,wBAAU;IACR,UAAU,EAzSO,IAAI;IA0SrB,aAAa,EAxSe,IAA+B;IAyS3D,UAAU,EA1Se,iBAA4B;IA2SrD,KAAK,EAvTgB,OAAS;IAwT9B,WAAW,EArTgB,IAAiB;IAsT5C,OAAO,EA1TgB,gBAAmB;IA2T1C,cAAc,EAzTgB,SAAS;IAiUvC,MAAM,EA3Te,CAAC;IAqTtB,8BAAQ;MACN,UAAU,EA/SW,OAAkD;MAgTvE,aAAa,EA9SmB,IAAI;MA+SpC,UAAU,EAhTmB,iBAA6D;IA0TxF,8BAAQ;MA6BZ,OAAO,EAAE,KAAK;MAIZ,WAAW,EAAE,KAAK;MAGtB,OAAO,EAAE,MAAM;EAoKX,iGAA2D;IAvd/D,iBAAiB,EAAE,qBAA0B;IAC1C,cAAc,EAAE,qBAA0B;IACzC,aAAa,EAAE,gBAAmB;IACjC,YAAY,EAAE,qBAA0B;IACrC,SAAS,EAAE,qBACrB;;AAudI,YAAa;EAtef,2BAA2B,EAAE,MAAM;EA8NnC,0BAA0B,EAAE,KAAK;EACjC,UAAU,EArRI,OAAI;EAsRlB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EA/RY,SAAa;EAgS9B,MAAM,EA/RY,QAAa;EAgS/B,OAAO,EAAE,IAAI;EA/Nb,iBAAiB,EAAE,wBAA0B;EAC1C,cAAc,EAAE,wBAA0B;EACzC,aAAa,EAAE,mBAAmB;EACjC,YAAY,EAAE,wBAA0B;EACrC,SAAS,EAAE,wBACrB;EAqOI,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EAOb,kBAAkB,EAAE,4BAAsB;EAC1C,eAAe,EAAE,yBAAmB;EACpC,cAAc,EAAE,wBAAkB;EAClC,aAAa,EAAE,uBAAiB;EAChC,UAAU,EAAE,oBAAc;EAnC1B,cAAE;IA7NF,2BAA2B,EAAE,MAAM;EAmQnC,sBAAU;IACR,UAAU,EAzSO,IAAI;IA0SrB,aAAa,EAxSe,IAA+B;IAyS3D,UAAU,EA1Se,iBAA4B;IA2SrD,KAAK,EAvTgB,OAAS;IAwT9B,WAAW,EArTgB,IAAiB;IAsT5C,OAAO,EA1TgB,gBAAmB;IA2T1C,cAAc,EAzTgB,SAAS;IAiUvC,MAAM,EA3Te,CAAC;IAqTtB,4BAAQ;MACN,UAAU,EA/SW,OAAkD;MAgTvE,aAAa,EA9SmB,IAAI;MA+SpC,UAAU,EAhTmB,iBAA6D;EAygB1F,+FAA+D;IA9dnE,iBAAiB,EAAE,qBAA0B;IAC1C,cAAc,EAAE,qBAA0B;IACzC,aAAa,EAAE,gBAAmB;IACjC,YAAY,EAAE,qBAA0B;IACrC,SAAS,EAAE,qBACrB;;AA8dI,eAAgB;EA7elB,2BAA2B,EAAE,MAAM;EA8NnC,0BAA0B,EAAE,KAAK;EACjC,UAAU,EArRI,OAAI;EAsRlB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EA/RY,SAAa;EAgS9B,MAAM,EA/RY,QAAa;EAgS/B,OAAO,EAAE,IAAI;EA/Nb,iBAAiB,EAAE,uBAA0B;EAC1C,cAAc,EAAE,uBAA0B;EACzC,aAAa,EAAE,kBAAmB;EACjC,YAAY,EAAE,uBAA0B;EACrC,SAAS,EAAE,uBACrB;EA0OI,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EAEb,kBAAkB,EAAE,4BAAsB;EAC1C,eAAe,EAAE,yBAAmB;EACpC,cAAc,EAAE,wBAAkB;EAClC,aAAa,EAAE,uBAAiB;EAChC,UAAU,EAAE,oBAAc;EAnC1B,iBAAE;IA7NF,2BAA2B,EAAE,MAAM;EAmQnC,yBAAU;IACR,UAAU,EAzSO,IAAI;IA0SrB,aAAa,EAxSe,IAA+B;IAyS3D,UAAU,EA1Se,iBAA4B;IA2SrD,KAAK,EAvTgB,OAAS;IAwT9B,WAAW,EArTgB,IAAiB;IAsT5C,OAAO,EA1TgB,gBAAmB;IA2T1C,cAAc,EAzTgB,SAAS;IAiUvC,MAAM,EA3Te,CAAC;IAqTtB,+BAAQ;MACN,UAAU,EA/SW,OAAkD;MAgTvE,aAAa,EA9SmB,IAAI;MA+SpC,UAAU,EAhTmB,iBAA6D;EAghB1F,kGAAyD;IAre7D,iBAAiB,EAAE,qBAA0B;IAC1C,cAAc,EAAE,qBAA0B;IACzC,aAAa,EAAE,gBAAmB;IACjC,YAAY,EAAE,qBAA0B;IACrC,SAAS,EAAE,qBACrB;;AA6eM,iEAAkE;EAtMpE,OAAO,EAAE,KAAK;EAIZ,WAAW,EAAE,KAAK;EAGtB,OAAO,EAAE,MAAM;;AAkMX,mEAAoE;EAjNtE,OAAO,EAAE,KAAK;EAIZ,YAAY,EAAE,KAAK;EAWvB,OAAO,EAAE,MAAM;;;AChKb,kBAAmH;EACjH,maAA4B;IAC1B,OAAO,EAAE,kBAAkB;;EAE7B,maAAyB;IACvB,OAAO,EAAE,eAAe;;EAGxB,mdAA4B;ItCgClC,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;;EsCjCJ,udAA2B;ItCkBjC,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,GAAG;;EsCjBJ,ugBAA0B;IACxB,OAAO,EAAE,gBAAgB;;EAE3B,ugBAAuC;IACrC,OAAO,EAAE,6BAA6B;;EAExC,ugBAAoC;IAClC,OAAO,EAAE,0BAA0B;;EAErC,2cAA8B;IAC5B,OAAO,EAAE,SAAS;;EAEpB,w5BAA+B;IAC7B,OAAO,EAAE,qBAAqB;;AA7BpC,6CAAmH;EACjH,maAA4B;IAC1B,OAAO,EAAE,kBAAkB;;EAE7B,maAAyB;IACvB,OAAO,EAAE,eAAe;;EAGxB,mdAA4B;ItCgClC,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;;EsCjCJ,udAA2B;ItCkBjC,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,GAAG;;EsCjBJ,ugBAA0B;IACxB,OAAO,EAAE,gBAAgB;;EAE3B,ugBAAuC;IACrC,OAAO,EAAE,6BAA6B;;EAExC,ugBAAoC;IAClC,OAAO,EAAE,0BAA0B;;EAErC,2cAA8B;IAC5B,OAAO,EAAE,SAAS;;EAEpB,w5BAA+B;IAC7B,OAAO,EAAE,qBAAqB;;AA7BpC,6CAAmH;EACjH,maAA4B;IAC1B,OAAO,EAAE,kBAAkB;;EAE7B,maAAyB;IACvB,OAAO,EAAE,eAAe;;EAGxB,mdAA4B;ItCgClC,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;;EsCjCJ,udAA2B;ItCkBjC,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,GAAG;;EsCjBJ,ugBAA0B;IACxB,OAAO,EAAE,gBAAgB;;EAE3B,ugBAAuC;IACrC,OAAO,EAAE,6BAA6B;;EAExC,ugBAAoC;IAClC,OAAO,EAAE,0BAA0B;;EAErC,2cAA8B;IAC5B,OAAO,EAAE,SAAS;;EAEpB,w5BAA+B;IAC7B,OAAO,EAAE,qBAAqB;;AA7BpC,6CAAmH;EACjH,maAA4B;IAC1B,OAAO,EAAE,kBAAkB;;EAE7B,maAAyB;IACvB,OAAO,EAAE,eAAe;;EAGxB,mdAA4B;ItCgClC,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;;EsCjCJ,udAA2B;ItCkBjC,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,GAAG;;EsCjBJ,ugBAA0B;IACxB,OAAO,EAAE,gBAAgB;;EAE3B,ugBAAuC;IACrC,OAAO,EAAE,6BAA6B;;EAExC,ugBAAoC;IAClC,OAAO,EAAE,0BAA0B;;EAErC,2cAA8B;IAC5B,OAAO,EAAE,SAAS;;EAEpB,w5BAA+B;IAC7B,OAAO,EAAE,qBAAqB;;AA7BpC,8CAAmH;EACjH,maAA4B;IAC1B,OAAO,EAAE,kBAAkB;;EAE7B,maAAyB;IACvB,OAAO,EAAE,eAAe;;EAGxB,mdAA4B;ItCgClC,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;;EsCjCJ,udAA2B;ItCkBjC,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,GAAG;;EsCjBJ,ugBAA0B;IACxB,OAAO,EAAE,gBAAgB;;EAE3B,ugBAAuC;IACrC,OAAO,EAAE,6BAA6B;;EAExC,ugBAAoC;IAClC,OAAO,EAAE,0BAA0B;;EAErC,2cAA8B;IAC5B,OAAO,EAAE,SAAS;;EAEpB,w5BAA+B;IAC7B,OAAO,EAAE,qBAAqB;;AAatC;kBACmB;EAAE,OAAO,EAAE,kBAAkB;;AAChD;kBACmB;EAAE,OAAO,EAAE,eAAe;;;AAI3C,iDACoB;EAAE,OAAO,EAAE,gBAAgB;;AAG/C,iDACoB;EAAE,OAAO,EAAE,6BAA6B;;AAG5D,iDACoB;EAAE,OAAO,EAAE,0BAA0B;;AAGzD,2CACoB;EAAE,OAAO,EAAE,oBAAoB;;AAInD;;oBACoB;EAAE,OAAO,EAAE,qBAAqB;;AAGtD,+CAAqB;EACnB;oBACmB;IAAE,OAAO,EAAE,kBAAkB;;EAChD;oBACmB;IAAE,OAAO,EAAE,eAAe;;;EAI3C,iDACoB;IAAE,OAAO,EAAE,gBAAgB;;EAG/C,iDACoB;IAAE,OAAO,EAAE,6BAA6B;;EAG5D,iDACoB;IAAE,OAAO,EAAE,0BAA0B;;EAGzD,2CACoB;IAAE,OAAO,EAAE,oBAAoB;;EAInD;;sBACoB;IAAE,OAAO,EAAE,qBAAqB;AAIxD,8CAAoB;EAClB;qBACoB;IAAE,OAAO,EAAE,kBAAkB;;EACjD;qBACoB;IAAE,OAAO,EAAE,eAAe;;;EAI5C,iDACqB;IAAE,OAAO,EAAE,gBAAgB;;EAGhD,iDACqB;IAAE,OAAO,EAAE,6BAA6B;;EAG7D,iDACqB;IAAE,OAAO,EAAE,0BAA0B;;EAG1D,2CACqB;IAAE,OAAO,EAAE,oBAAoB;;EAIpD;;uBACqB;IAAE,OAAO,EAAE,qBAAqB;;AAKzD,eAAgB;EAAE,OAAO,EAAE,eAAe;;AAC1C,eAAgB;EAAE,OAAO,EAAE,kBAAkB;;AAC7C,sBAAuB;EAAE,OAAO,EAAE,kBAAkB;;AACpD,sBAAuB;EAAE,OAAO,EAAE,eAAe;;;AAGjD,oBAAqB;EAAE,OAAO,EAAE,gBAAgB;;AAChD,2BAA4B;EAAE,OAAO,EAAE,gBAAgB;;AACvD,oBAAqB;EAAE,OAAO,EAAE,6BAA6B;;AAC7D,2BAA4B;EAAE,OAAO,EAAE,6BAA6B;;AACpE,oBAAqB;EAAE,OAAO,EAAE,0BAA0B;;AAC1D,2BAA4B;EAAE,OAAO,EAAE,0BAA0B;;AACjE,iBAAkB;EAAE,OAAO,EAAE,oBAAoB;;AACjD,wBAAyB;EAAE,OAAO,EAAE,oBAAoB;;AACxD,iBAAkB;EAAE,OAAO,EAAE,qBAAqB;;AAClD,wBAAyB;EAAE,OAAO,EAAE,qBAAqB;;AACzD,iBAAkB;EAAE,OAAO,EAAE,qBAAqB;;AAClD,wBAAyB;EAAE,OAAO,EAAE,qBAAqB;;;AAGzD,YAAa;EtC1Hb,IAAI,EAAE,wBAAwB;EAC9B,MAAM,EAAE,GAAG;EACX,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,mBAAmB;EAC7B,KAAK,EAAE,GAAG;;AsCyHV,cAAe;EtC7Hf,IAAI,EAAE,wBAAwB;EAC9B,MAAM,EAAE,GAAG;EACX,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,mBAAmB;EAC7B,KAAK,EAAE,GAAG;EsC4HR,2CACS;ItCtHX,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,IAAI;;;AsCyHR;eACgB;EAAE,OAAO,EAAE,eAAe;;AAC1C,YAAa;EACX;iBACgB;IAAE,OAAO,EAAE,gBAAgB;;EAC3C;iBACgB;IAAE,OAAO,EAAE,eAAe;;EAE1C,oBAAqB;IAAE,OAAO,EAAE,gBAAgB;;EAChD,oBAAqB;IAAE,OAAO,EAAE,6BAA6B;;EAC7D,oBAAqB;IAAE,OAAO,EAAE,0BAA0B;;EAC1D,iBAAkB;IAAE,OAAO,EAAE,oBAAoB;;EACjD,iBAAkB;IAAE,OAAO,EAAE,qBAAqB;;EAClD,iBAAkB;IAAE,OAAO,EAAE,qBAAqB",
+"sources": ["../../../scss/foundation/components/_global.scss","../../../scss/foundation/components/_grid.scss","../../../scss/foundation/components/_accordion.scss","../../../scss/foundation/components/_alert-boxes.scss","../../../scss/foundation/components/_block-grid.scss","../../../scss/foundation/components/_breadcrumbs.scss","../../../scss/foundation/components/_buttons.scss","../../../scss/foundation/_functions.scss","../../../scss/foundation/components/_button-groups.scss","../../../scss/foundation/components/_clearing.scss","../../../scss/foundation/components/_dropdown.scss","../../../scss/foundation/components/_dropdown-buttons.scss","../../../scss/foundation/components/_flex-video.scss","../../../scss/foundation/components/_forms.scss","../../../scss/foundation/components/_icon-bar.scss","../../../scss/foundation/components/_inline-lists.scss","../../../scss/foundation/components/_joyride.scss","../../../scss/foundation/components/_keystrokes.scss","../../../scss/foundation/components/_labels.scss","../../../scss/foundation/components/_magellan.scss","../../../scss/foundation/components/_orbit.scss","../../../scss/foundation/components/_pagination.scss","../../../scss/foundation/components/_panels.scss","../../../scss/foundation/components/_pricing-tables.scss","../../../scss/foundation/components/_progress-bars.scss","../../../scss/foundation/components/_range-slider.scss","../../../scss/foundation/components/_reveal.scss","../../../scss/foundation/components/_side-nav.scss","../../../scss/foundation/components/_split-buttons.scss","../../../scss/foundation/components/_sub-nav.scss","../../../scss/foundation/components/_switches.scss","../../../scss/foundation/components/_tables.scss","../../../scss/foundation/components/_tabs.scss","../../../scss/foundation/components/_thumbs.scss","../../../scss/foundation/components/_tooltips.scss","../../../scss/foundation/components/_top-bar.scss","../../../scss/foundation/components/_type.scss","../../../scss/foundation/components/_offcanvas.scss","../../../scss/foundation/components/_visibility.scss"],
+"names": [],
+"file": "foundation.css"
+}
--- /dev/null
+{
+"version": 3,
+"mappings": ";;;;;;AAQA,IAAK;EACH,WAAW,EAAE,UAAU;;EACvB,oBAAoB,EAAE,IAAI;;EAC1B,wBAAwB,EAAE,IAAI;;;;;;AAOhC,IAAK;EACH,MAAM,EAAE,CAAC;;;;;;;;;;AAaX;;;;;;;;;;;;OAYQ;EACN,OAAO,EAAE,KAAK;;;;;;AAQhB;;;KAGM;EACJ,OAAO,EAAE,YAAY;;EACrB,cAAc,EAAE,QAAQ;;;;;;;AAQ1B,qBAAsB;EACpB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;;;;;;AAQX;QACS;EACP,OAAO,EAAE,IAAI;;;;;;;AAUf,CAAE;EACA,gBAAgB,EAAE,WAAW;;;;;;AAQ/B;OACQ;EACN,OAAO,EAAE,CAAC;;;;;;;AAUZ,WAAY;EACV,aAAa,EAAE,UAAU;;;;;AAO3B;MACO;EACL,WAAW,EAAE,IAAI;;;;;AAOnB,GAAI;EACF,UAAU,EAAE,MAAM;;;;;;AAQpB,EAAG;EACD,SAAS,EAAE,GAAG;EACd,MAAM,EAAE,QAAQ;;;;;AAOlB,IAAK;EACH,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;;;;;AAOb,KAAM;EACJ,SAAS,EAAE,GAAG;;;;;AAOhB;GACI;EACF,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,QAAQ;;AAG1B,GAAI;EACF,GAAG,EAAE,MAAM;;AAGb,GAAI;EACF,MAAM,EAAE,OAAO;;;;;;;AAUjB,GAAI;EACF,MAAM,EAAE,CAAC;;;;;AAOX,cAAe;EACb,QAAQ,EAAE,MAAM;;;;;;;AAUlB,MAAO;EACL,MAAM,EAAE,QAAQ;;;;;AAOlB,EAAG;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;;;;;AAOX,GAAI;EACF,QAAQ,EAAE,IAAI;;;;;AAOhB;;;IAGK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;;;;;;;;;;;;;AAkBhB;;;;QAIS;EACP,KAAK,EAAE,OAAO;;EACd,IAAI,EAAE,OAAO;;EACb,MAAM,EAAE,CAAC;;;;;;AAOX,MAAO;EACL,QAAQ,EAAE,OAAO;;;;;;;;AAUnB;MACO;EACL,cAAc,EAAE,IAAI;;;;;;;;;AAWtB;;;oBAGqB;EACnB,kBAAkB,EAAE,MAAM;;EAC1B,MAAM,EAAE,OAAO;;;;;;AAOjB;oBACqB;EACnB,MAAM,EAAE,OAAO;;;;;AAOjB;uBACwB;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;;;;;AAQZ,KAAM;EACJ,WAAW,EAAE,MAAM;;;;;;;;;AAWrB;mBACoB;EAClB,UAAU,EAAE,UAAU;;EACtB,OAAO,EAAE,CAAC;;;;;;;;AASZ;+CACgD;EAC9C,MAAM,EAAE,IAAI;;;;;;AAQd,oBAAqB;EACnB,kBAAkB,EAAE,SAAS;;EAC7B,UAAU,EAAE,WAAW;;;;;;;;AASzB;+CACgD;EAC9C,kBAAkB,EAAE,IAAI;;;;;AAO1B,QAAS;EACP,MAAM,EAAE,iBAAiB;EACzB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,qBAAqB;;;;;;AAQhC,MAAO;EACL,MAAM,EAAE,CAAC;;EACT,OAAO,EAAE,CAAC;;;;;;AAOZ,QAAS;EACP,QAAQ,EAAE,IAAI;;;;;;AAQhB,QAAS;EACP,WAAW,EAAE,IAAI;;;;;;;AAUnB,KAAM;EACJ,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;;AAGnB;EACG;EACD,OAAO,EAAE,CAAC",
+"sources": ["../../../scss/normalize.scss"],
+"names": [],
+"file": "normalize.css"
+}
--- /dev/null
+/*
+ * Foundation Responsive Library
+ * http://foundation.zurb.com
+ * Copyright 2015, ZURB
+ * Free to use under the MIT license.
+ * http://www.opensource.org/licenses/mit-license.php
+*/
+
+(function ($, window, document, undefined) {
+ 'use strict';
+
+ var header_helpers = function (class_array) {
+ var head = $('head');
+ head.prepend($.map(class_array, function (class_name) {
+ if (head.has('.' + class_name).length === 0) {
+ return '<meta class="' + class_name + '" />';
+ }
+ }));
+ };
+
+ header_helpers([
+ 'foundation-mq-small',
+ 'foundation-mq-small-only',
+ 'foundation-mq-medium',
+ 'foundation-mq-medium-only',
+ 'foundation-mq-large',
+ 'foundation-mq-large-only',
+ 'foundation-mq-xlarge',
+ 'foundation-mq-xlarge-only',
+ 'foundation-mq-xxlarge',
+ 'foundation-data-attribute-namespace']);
+
+ // Enable FastClick if present
+
+ $(function () {
+ if (typeof FastClick !== 'undefined') {
+ // Don't attach to body if undefined
+ if (typeof document.body !== 'undefined') {
+ FastClick.attach(document.body);
+ }
+ }
+ });
+
+ // private Fast Selector wrapper,
+ // returns jQuery object. Only use where
+ // getElementById is not available.
+ var S = function (selector, context) {
+ if (typeof selector === 'string') {
+ if (context) {
+ var cont;
+ if (context.jquery) {
+ cont = context[0];
+ if (!cont) {
+ return context;
+ }
+ } else {
+ cont = context;
+ }
+ return $(cont.querySelectorAll(selector));
+ }
+
+ return $(document.querySelectorAll(selector));
+ }
+
+ return $(selector, context);
+ };
+
+ // Namespace functions.
+
+ var attr_name = function (init) {
+ var arr = [];
+ if (!init) {
+ arr.push('data');
+ }
+ if (this.namespace.length > 0) {
+ arr.push(this.namespace);
+ }
+ arr.push(this.name);
+
+ return arr.join('-');
+ };
+
+ var add_namespace = function (str) {
+ var parts = str.split('-'),
+ i = parts.length,
+ arr = [];
+
+ while (i--) {
+ if (i !== 0) {
+ arr.push(parts[i]);
+ } else {
+ if (this.namespace.length > 0) {
+ arr.push(this.namespace, parts[i]);
+ } else {
+ arr.push(parts[i]);
+ }
+ }
+ }
+
+ return arr.reverse().join('-');
+ };
+
+ // Event binding and data-options updating.
+
+ var bindings = function (method, options) {
+ var self = this,
+ bind = function(){
+ var $this = S(this),
+ should_bind_events = !$this.data(self.attr_name(true) + '-init');
+ $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));
+
+ if (should_bind_events) {
+ self.events(this);
+ }
+ };
+
+ if (S(this.scope).is('[' + this.attr_name() +']')) {
+ bind.call(this.scope);
+ } else {
+ S('[' + this.attr_name() +']', this.scope).each(bind);
+ }
+ // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
+ if (typeof method === 'string') {
+ return this[method].call(this, options);
+ }
+
+ };
+
+ var single_image_loaded = function (image, callback) {
+ function loaded () {
+ callback(image[0]);
+ }
+
+ function bindLoad () {
+ this.one('load', loaded);
+
+ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
+ var src = this.attr( 'src' ),
+ param = src.match( /\?/ ) ? '&' : '?';
+
+ param += 'random=' + (new Date()).getTime();
+ this.attr('src', src + param);
+ }
+ }
+
+ if (!image.attr('src')) {
+ loaded();
+ return;
+ }
+
+ if (image[0].complete || image[0].readyState === 4) {
+ loaded();
+ } else {
+ bindLoad.call(image);
+ }
+ };
+
+ /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+
+ window.matchMedia || (window.matchMedia = function() {
+ "use strict";
+
+ // For browsers that support matchMedium api such as IE 9 and webkit
+ var styleMedia = (window.styleMedia || window.media);
+
+ // For those that don't support matchMedium
+ if (!styleMedia) {
+ var style = document.createElement('style'),
+ script = document.getElementsByTagName('script')[0],
+ info = null;
+
+ style.type = 'text/css';
+ style.id = 'matchmediajs-test';
+
+ script.parentNode.insertBefore(style, script);
+
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+ info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;
+
+ styleMedia = {
+ matchMedium: function(media) {
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+ if (style.styleSheet) {
+ style.styleSheet.cssText = text;
+ } else {
+ style.textContent = text;
+ }
+
+ // Test if media query is true or false
+ return info.width === '1px';
+ }
+ };
+ }
+
+ return function(media) {
+ return {
+ matches: styleMedia.matchMedium(media || 'all'),
+ media: media || 'all'
+ };
+ };
+ }());
+
+ /*
+ * jquery.requestAnimationFrame
+ * https://github.com/gnarf37/jquery-requestAnimationFrame
+ * Requires jQuery 1.8+
+ *
+ * Copyright (c) 2012 Corey Frang
+ * Licensed under the MIT license.
+ */
+
+ (function(jQuery) {
+
+
+ // requestAnimationFrame polyfill adapted from Erik Möller
+ // fixes from Paul Irish and Tino Zijdel
+ // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+ // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+ var animating,
+ lastTime = 0,
+ vendors = ['webkit', 'moz'],
+ requestAnimationFrame = window.requestAnimationFrame,
+ cancelAnimationFrame = window.cancelAnimationFrame,
+ jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
+
+ for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
+ requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];
+ cancelAnimationFrame = cancelAnimationFrame ||
+ window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||
+ window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];
+ }
+
+ function raf() {
+ if (animating) {
+ requestAnimationFrame(raf);
+
+ if (jqueryFxAvailable) {
+ jQuery.fx.tick();
+ }
+ }
+ }
+
+ if (requestAnimationFrame) {
+ // use rAF
+ window.requestAnimationFrame = requestAnimationFrame;
+ window.cancelAnimationFrame = cancelAnimationFrame;
+
+ if (jqueryFxAvailable) {
+ jQuery.fx.timer = function (timer) {
+ if (timer() && jQuery.timers.push(timer) && !animating) {
+ animating = true;
+ raf();
+ }
+ };
+
+ jQuery.fx.stop = function () {
+ animating = false;
+ };
+ }
+ } else {
+ // polyfill
+ window.requestAnimationFrame = function (callback) {
+ var currTime = new Date().getTime(),
+ timeToCall = Math.max(0, 16 - (currTime - lastTime)),
+ id = window.setTimeout(function () {
+ callback(currTime + timeToCall);
+ }, timeToCall);
+ lastTime = currTime + timeToCall;
+ return id;
+ };
+
+ window.cancelAnimationFrame = function (id) {
+ clearTimeout(id);
+ };
+
+ }
+
+ }( $ ));
+
+ function removeQuotes (string) {
+ if (typeof string === 'string' || string instanceof String) {
+ string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
+ }
+
+ return string;
+ }
+
+ function MediaQuery(selector) {
+ this.selector = selector;
+ this.query = '';
+ }
+
+ MediaQuery.prototype.toString = function () {
+ return this.query || (this.query = S(this.selector).css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''));
+ };
+
+ window.Foundation = {
+ name : 'Foundation',
+
+ version : '5.5.3',
+
+ media_queries : {
+ 'small' : new MediaQuery('.foundation-mq-small'),
+ 'small-only' : new MediaQuery('.foundation-mq-small-only'),
+ 'medium' : new MediaQuery('.foundation-mq-medium'),
+ 'medium-only' : new MediaQuery('.foundation-mq-medium-only'),
+ 'large' : new MediaQuery('.foundation-mq-large'),
+ 'large-only' : new MediaQuery('.foundation-mq-large-only'),
+ 'xlarge' : new MediaQuery('.foundation-mq-xlarge'),
+ 'xlarge-only' : new MediaQuery('.foundation-mq-xlarge-only'),
+ 'xxlarge' : new MediaQuery('.foundation-mq-xxlarge')
+ },
+
+ stylesheet : $('<style></style>').appendTo('head')[0].sheet,
+
+ global : {
+ namespace : undefined
+ },
+
+ init : function (scope, libraries, method, options, response) {
+ var args = [scope, method, options, response],
+ responses = [];
+
+ // check RTL
+ this.rtl = /rtl/i.test(S('html').attr('dir'));
+
+ // set foundation global scope
+ this.scope = scope || this.scope;
+
+ this.set_namespace();
+
+ if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
+ if (this.libs.hasOwnProperty(libraries)) {
+ responses.push(this.init_lib(libraries, args));
+ }
+ } else {
+ for (var lib in this.libs) {
+ responses.push(this.init_lib(lib, libraries));
+ }
+ }
+
+ S(window).load(function () {
+ S(window)
+ .trigger('resize.fndtn.clearing')
+ .trigger('resize.fndtn.dropdown')
+ .trigger('resize.fndtn.equalizer')
+ .trigger('resize.fndtn.interchange')
+ .trigger('resize.fndtn.joyride')
+ .trigger('resize.fndtn.magellan')
+ .trigger('resize.fndtn.topbar')
+ .trigger('resize.fndtn.slider');
+ });
+
+ return scope;
+ },
+
+ init_lib : function (lib, args) {
+ if (this.libs.hasOwnProperty(lib)) {
+ this.patch(this.libs[lib]);
+
+ if (args && args.hasOwnProperty(lib)) {
+ if (typeof this.libs[lib].settings !== 'undefined') {
+ $.extend(true, this.libs[lib].settings, args[lib]);
+ } else if (typeof this.libs[lib].defaults !== 'undefined') {
+ $.extend(true, this.libs[lib].defaults, args[lib]);
+ }
+ return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
+ }
+
+ args = args instanceof Array ? args : new Array(args);
+ return this.libs[lib].init.apply(this.libs[lib], args);
+ }
+
+ return function () {};
+ },
+
+ patch : function (lib) {
+ lib.scope = this.scope;
+ lib.namespace = this.global.namespace;
+ lib.rtl = this.rtl;
+ lib['data_options'] = this.utils.data_options;
+ lib['attr_name'] = attr_name;
+ lib['add_namespace'] = add_namespace;
+ lib['bindings'] = bindings;
+ lib['S'] = this.utils.S;
+ },
+
+ inherit : function (scope, methods) {
+ var methods_arr = methods.split(' '),
+ i = methods_arr.length;
+
+ while (i--) {
+ if (this.utils.hasOwnProperty(methods_arr[i])) {
+ scope[methods_arr[i]] = this.utils[methods_arr[i]];
+ }
+ }
+ },
+
+ set_namespace : function () {
+
+ // Description:
+ // Don't bother reading the namespace out of the meta tag
+ // if the namespace has been set globally in javascript
+ //
+ // Example:
+ // Foundation.global.namespace = 'my-namespace';
+ // or make it an empty string:
+ // Foundation.global.namespace = '';
+ //
+ //
+
+ // If the namespace has not been set (is undefined), try to read it out of the meta element.
+ // Otherwise use the globally defined namespace, even if it's empty ('')
+ var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
+
+ // Finally, if the namsepace is either undefined or false, set it to an empty string.
+ // Otherwise use the namespace value.
+ this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
+ },
+
+ libs : {},
+
+ // methods that can be inherited in libraries
+ utils : {
+
+ // Description:
+ // Fast Selector wrapper returns jQuery object. Only use where getElementById
+ // is not available.
+ //
+ // Arguments:
+ // Selector (String): CSS selector describing the element(s) to be
+ // returned as a jQuery object.
+ //
+ // Scope (String): CSS selector describing the area to be searched. Default
+ // is document.
+ //
+ // Returns:
+ // Element (jQuery Object): jQuery object containing elements matching the
+ // selector within the scope.
+ S : S,
+
+ // Description:
+ // Executes a function a max of once every n milliseconds
+ //
+ // Arguments:
+ // Func (Function): Function to be throttled.
+ //
+ // Delay (Integer): Function execution threshold in milliseconds.
+ //
+ // Returns:
+ // Lazy_function (Function): Function with throttling applied.
+ throttle : function (func, delay) {
+ var timer = null;
+
+ return function () {
+ var context = this, args = arguments;
+
+ if (timer == null) {
+ timer = setTimeout(function () {
+ func.apply(context, args);
+ timer = null;
+ }, delay);
+ }
+ };
+ },
+
+ // Description:
+ // Executes a function when it stops being invoked for n seconds
+ // Modified version of _.debounce() http://underscorejs.org
+ //
+ // Arguments:
+ // Func (Function): Function to be debounced.
+ //
+ // Delay (Integer): Function execution threshold in milliseconds.
+ //
+ // Immediate (Bool): Whether the function should be called at the beginning
+ // of the delay instead of the end. Default is false.
+ //
+ // Returns:
+ // Lazy_function (Function): Function with debouncing applied.
+ debounce : function (func, delay, immediate) {
+ var timeout, result;
+ return function () {
+ var context = this, args = arguments;
+ var later = function () {
+ timeout = null;
+ if (!immediate) {
+ result = func.apply(context, args);
+ }
+ };
+ var callNow = immediate && !timeout;
+ clearTimeout(timeout);
+ timeout = setTimeout(later, delay);
+ if (callNow) {
+ result = func.apply(context, args);
+ }
+ return result;
+ };
+ },
+
+ // Description:
+ // Parses data-options attribute
+ //
+ // Arguments:
+ // El (jQuery Object): Element to be parsed.
+ //
+ // Returns:
+ // Options (Javascript Object): Contents of the element's data-options
+ // attribute.
+ data_options : function (el, data_attr_name) {
+ data_attr_name = data_attr_name || 'options';
+ var opts = {}, ii, p, opts_arr,
+ data_options = function (el) {
+ var namespace = Foundation.global.namespace;
+
+ if (namespace.length > 0) {
+ return el.data(namespace + '-' + data_attr_name);
+ }
+
+ return el.data(data_attr_name);
+ };
+
+ var cached_options = data_options(el);
+
+ if (typeof cached_options === 'object') {
+ return cached_options;
+ }
+
+ opts_arr = (cached_options || ':').split(';');
+ ii = opts_arr.length;
+
+ function isNumber (o) {
+ return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;
+ }
+
+ function trim (str) {
+ if (typeof str === 'string') {
+ return $.trim(str);
+ }
+ return str;
+ }
+
+ while (ii--) {
+ p = opts_arr[ii].split(':');
+ p = [p[0], p.slice(1).join(':')];
+
+ if (/true/i.test(p[1])) {
+ p[1] = true;
+ }
+ if (/false/i.test(p[1])) {
+ p[1] = false;
+ }
+ if (isNumber(p[1])) {
+ if (p[1].indexOf('.') === -1) {
+ p[1] = parseInt(p[1], 10);
+ } else {
+ p[1] = parseFloat(p[1]);
+ }
+ }
+
+ if (p.length === 2 && p[0].length > 0) {
+ opts[trim(p[0])] = trim(p[1]);
+ }
+ }
+
+ return opts;
+ },
+
+ // Description:
+ // Adds JS-recognizable media queries
+ //
+ // Arguments:
+ // Media (String): Key string for the media query to be stored as in
+ // Foundation.media_queries
+ //
+ // Class (String): Class name for the generated <meta> tag
+ register_media : function (media, media_class) {
+ if (Foundation.media_queries[media] === undefined) {
+ $('head').append('<meta class="' + media_class + '"/>');
+ Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
+ }
+ },
+
+ // Description:
+ // Add custom CSS within a JS-defined media query
+ //
+ // Arguments:
+ // Rule (String): CSS rule to be appended to the document.
+ //
+ // Media (String): Optional media query string for the CSS rule to be
+ // nested under.
+ add_custom_rule : function (rule, media) {
+ if (media === undefined && Foundation.stylesheet) {
+ Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
+ } else {
+ var query = Foundation.media_queries[media];
+
+ if (query !== undefined) {
+ Foundation.stylesheet.insertRule('@media ' +
+ Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length);
+ }
+ }
+ },
+
+ // Description:
+ // Performs a callback function when an image is fully loaded
+ //
+ // Arguments:
+ // Image (jQuery Object): Image(s) to check if loaded.
+ //
+ // Callback (Function): Function to execute when image is fully loaded.
+ image_loaded : function (images, callback) {
+ var self = this,
+ unloaded = images.length;
+
+ function pictures_has_height(images) {
+ var pictures_number = images.length;
+
+ for (var i = pictures_number - 1; i >= 0; i--) {
+ if(images.attr('height') === undefined) {
+ return false;
+ };
+ };
+
+ return true;
+ }
+
+ if (unloaded === 0 || pictures_has_height(images)) {
+ callback(images);
+ }
+
+ images.each(function () {
+ single_image_loaded(self.S(this), function () {
+ unloaded -= 1;
+ if (unloaded === 0) {
+ callback(images);
+ }
+ });
+ });
+ },
+
+ // Description:
+ // Returns a random, alphanumeric string
+ //
+ // Arguments:
+ // Length (Integer): Length of string to be generated. Defaults to random
+ // integer.
+ //
+ // Returns:
+ // Rand (String): Pseudo-random, alphanumeric string.
+ random_str : function () {
+ if (!this.fidx) {
+ this.fidx = 0;
+ }
+ this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
+
+ return this.prefix + (this.fidx++).toString(36);
+ },
+
+ // Description:
+ // Helper for window.matchMedia
+ //
+ // Arguments:
+ // mq (String): Media query
+ //
+ // Returns:
+ // (Boolean): Whether the media query passes or not
+ match : function (mq) {
+ return window.matchMedia(mq).matches;
+ },
+
+ // Description:
+ // Helpers for checking Foundation default media queries with JS
+ //
+ // Returns:
+ // (Boolean): Whether the media query passes or not
+
+ is_small_up : function () {
+ return this.match(Foundation.media_queries.small);
+ },
+
+ is_medium_up : function () {
+ return this.match(Foundation.media_queries.medium);
+ },
+
+ is_large_up : function () {
+ return this.match(Foundation.media_queries.large);
+ },
+
+ is_xlarge_up : function () {
+ return this.match(Foundation.media_queries.xlarge);
+ },
+
+ is_xxlarge_up : function () {
+ return this.match(Foundation.media_queries.xxlarge);
+ },
+
+ is_small_only : function () {
+ return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_medium_only : function () {
+ return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_large_only : function () {
+ return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_xlarge_only : function () {
+ return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_xxlarge_only : function () {
+ return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
+ }
+ }
+ };
+
+ $.fn.foundation = function () {
+ var args = Array.prototype.slice.call(arguments, 0);
+
+ return this.each(function () {
+ Foundation.init.apply(Foundation, [this].concat(args));
+ return this;
+ });
+ };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.abide = {
+ name : 'abide',
+
+ version : '5.5.3',
+
+ settings : {
+ live_validate : true, // validate the form as you go
+ validate_on_blur : true, // validate whenever you focus/blur on an input field
+ // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
+
+ focus_on_invalid : true, // automatically bring the focus to an invalid input field
+ error_labels : true, // labels with a for="inputId" will receive an `error` class
+ error_class : 'error', // labels with a for="inputId" will receive an `error` class
+ // the amount of time Abide will take before it validates the form (in ms).
+ // smaller time will result in faster validation
+ timeout : 1000,
+ patterns : {
+ alpha : /^[a-zA-Z]+$/,
+ alpha_numeric : /^[a-zA-Z0-9]+$/,
+ integer : /^[-+]?\d+$/,
+ number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
+
+ // amex, visa, diners
+ card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
+ cvv : /^([0-9]){3,4}$/,
+
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+ email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
+
+ // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/
+ url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,
+ // abc.de
+ domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
+
+ datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
+ // YYYY-MM-DD
+ date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
+ // HH:MM:SS
+ time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
+ dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
+ // MM/DD/YYYY
+ month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
+ // DD/MM/YYYY
+ day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
+
+ // #FFF or #FFFFFF
+ color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
+ },
+ validators : {
+ equalTo : function (el, required, parent) {
+ var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+ to = el.value,
+ valid = (from === to);
+
+ return valid;
+ }
+ }
+ },
+
+ timer : null,
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ form = self.S(scope).attr('novalidate', 'novalidate'),
+ settings = form.data(this.attr_name(true) + '-init') || {};
+
+ this.invalid_attr = this.add_namespace('data-invalid');
+
+ function validate(originalSelf, e) {
+ clearTimeout(self.timer);
+ self.timer = setTimeout(function () {
+ self.validate([originalSelf], e);
+ }.bind(originalSelf), settings.timeout);
+ }
+
+ form
+ .off('.abide')
+ .on('submit.fndtn.abide', function (e) {
+ var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
+ return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax);
+ })
+ .on('validate.fndtn.abide', function (e) {
+ if (settings.validate_on === 'manual') {
+ self.validate([e.target], e);
+ }
+ })
+ .on('reset', function (e) {
+ return self.reset($(this), e);
+ })
+ .find('input, textarea, select').not(":hidden, [data-abide-ignore]")
+ .off('.abide')
+ .on('blur.fndtn.abide change.fndtn.abide', function (e) {
+ var id = this.getAttribute('id'),
+ eqTo = form.find('[data-equalto="'+ id +'"]');
+ // old settings fallback
+ // will be deprecated with F6 release
+ if (settings.validate_on_blur && settings.validate_on_blur === true) {
+ validate(this, e);
+ }
+ // checks if there is an equalTo equivalent related by id
+ if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+ validate(eqTo.get(0),e);
+ }
+ // new settings combining validate options into one setting
+ if (settings.validate_on === 'change') {
+ validate(this, e);
+ }
+ })
+ .on('keydown.fndtn.abide', function (e) {
+ var id = this.getAttribute('id'),
+ eqTo = form.find('[data-equalto="'+ id +'"]');
+ // old settings fallback
+ // will be deprecated with F6 release
+ if (settings.live_validate && settings.live_validate === true && e.which != 9) {
+ validate(this, e);
+ }
+ // checks if there is an equalTo equivalent related by id
+ if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+ validate(eqTo.get(0),e);
+ }
+ // new settings combining validate options into one setting
+ if (settings.validate_on === 'tab' && e.which === 9) {
+ validate(this, e);
+ }
+ else if (settings.validate_on === 'change') {
+ validate(this, e);
+ }
+ })
+ .on('focus', function (e) {
+ if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) {
+ $('html, body').animate({
+ scrollTop: $(e.target).offset().top
+ }, 100);
+ }
+ });
+ },
+
+ reset : function (form, e) {
+ var self = this;
+ form.removeAttr(self.invalid_attr);
+
+ $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr);
+ $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class);
+ $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr);
+ },
+
+ validate : function (els, e, is_ajax) {
+ var validations = this.parse_patterns(els),
+ validation_count = validations.length,
+ form = this.S(els[0]).closest('form'),
+ submit_event = /submit/.test(e.type);
+
+ // Has to count up to make sure the focus gets applied to the top error
+ for (var i = 0; i < validation_count; i++) {
+ if (!validations[i] && (submit_event || is_ajax)) {
+ if (this.settings.focus_on_invalid) {
+ els[i].focus();
+ }
+ form.trigger('invalid.fndtn.abide');
+ this.S(els[i]).closest('form').attr(this.invalid_attr, '');
+ return false;
+ }
+ }
+
+ if (submit_event || is_ajax) {
+ form.trigger('valid.fndtn.abide');
+ }
+
+ form.removeAttr(this.invalid_attr);
+
+ if (is_ajax) {
+ return false;
+ }
+
+ return true;
+ },
+
+ parse_patterns : function (els) {
+ var i = els.length,
+ el_patterns = [];
+
+ while (i--) {
+ el_patterns.push(this.pattern(els[i]));
+ }
+
+ return this.check_validation_and_apply_styles(el_patterns);
+ },
+
+ pattern : function (el) {
+ var type = el.getAttribute('type'),
+ required = typeof el.getAttribute('required') === 'string';
+
+ var pattern = el.getAttribute('pattern') || '';
+
+ if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
+ return [el, this.settings.patterns[pattern], required];
+ } else if (pattern.length > 0) {
+ return [el, new RegExp(pattern), required];
+ }
+
+ if (this.settings.patterns.hasOwnProperty(type)) {
+ return [el, this.settings.patterns[type], required];
+ }
+
+ pattern = /.*/;
+
+ return [el, pattern, required];
+ },
+
+ // TODO: Break this up into smaller methods, getting hard to read.
+ check_validation_and_apply_styles : function (el_patterns) {
+ var i = el_patterns.length,
+ validations = [];
+ if (i == 0) {
+ return validations;
+ }
+ var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
+ settings = form.data(this.attr_name(true) + '-init') || {};
+ while (i--) {
+ var el = el_patterns[i][0],
+ required = el_patterns[i][2],
+ value = el.value.trim(),
+ direct_parent = this.S(el).parent(),
+ validator = el.getAttribute(this.add_namespace('data-abide-validator')),
+ is_radio = el.type === 'radio',
+ is_checkbox = el.type === 'checkbox',
+ label = this.S('label[for="' + el.getAttribute('id') + '"]'),
+ valid_length = (required) ? (el.value.length > 0) : true,
+ el_validations = [];
+
+ var parent, valid;
+
+ // support old way to do equalTo validations
+ if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
+
+ if (!direct_parent.is('label')) {
+ parent = direct_parent;
+ } else {
+ parent = direct_parent.parent();
+ }
+
+ if (is_radio && required) {
+ el_validations.push(this.valid_radio(el, required));
+ } else if (is_checkbox && required) {
+ el_validations.push(this.valid_checkbox(el, required));
+
+ } else if (validator) {
+ // Validate using each of the specified (space-delimited) validators.
+ var validators = validator.split(' ');
+ var last_valid = true, all_valid = true;
+ for (var iv = 0; iv < validators.length; iv++) {
+ valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent])
+ el_validations.push(valid);
+ all_valid = valid && last_valid;
+ last_valid = valid;
+ }
+ if (all_valid) {
+ this.S(el).removeAttr(this.invalid_attr);
+ parent.removeClass('error');
+ if (label.length > 0 && this.settings.error_labels) {
+ label.removeClass(this.settings.error_class).removeAttr('role');
+ }
+ $(el).triggerHandler('valid');
+ } else {
+ this.S(el).attr(this.invalid_attr, '');
+ parent.addClass('error');
+ if (label.length > 0 && this.settings.error_labels) {
+ label.addClass(this.settings.error_class).attr('role', 'alert');
+ }
+ $(el).triggerHandler('invalid');
+ }
+ } else {
+
+ if (el_patterns[i][1].test(value) && valid_length ||
+ !required && el.value.length < 1 || $(el).attr('disabled')) {
+ el_validations.push(true);
+ } else {
+ el_validations.push(false);
+ }
+
+ el_validations = [el_validations.every(function (valid) {return valid;})];
+ if (el_validations[0]) {
+ this.S(el).removeAttr(this.invalid_attr);
+ el.setAttribute('aria-invalid', 'false');
+ el.removeAttribute('aria-describedby');
+ parent.removeClass(this.settings.error_class);
+ if (label.length > 0 && this.settings.error_labels) {
+ label.removeClass(this.settings.error_class).removeAttr('role');
+ }
+ $(el).triggerHandler('valid');
+ } else {
+ this.S(el).attr(this.invalid_attr, '');
+ el.setAttribute('aria-invalid', 'true');
+
+ // Try to find the error associated with the input
+ var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
+ var errorID = errorElem.length > 0 ? errorElem[0].id : '';
+ if (errorID.length > 0) {
+ el.setAttribute('aria-describedby', errorID);
+ }
+
+ // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
+ parent.addClass(this.settings.error_class);
+ if (label.length > 0 && this.settings.error_labels) {
+ label.addClass(this.settings.error_class).attr('role', 'alert');
+ }
+ $(el).triggerHandler('invalid');
+ }
+ }
+ validations = validations.concat(el_validations);
+ }
+
+ return validations;
+ },
+
+ valid_checkbox : function (el, required) {
+ var el = this.S(el),
+ valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
+
+ if (valid) {
+ el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+ $(el).triggerHandler('valid');
+ } else {
+ el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+ $(el).triggerHandler('invalid');
+ }
+
+ return valid;
+ },
+
+ valid_radio : function (el, required) {
+ var name = el.getAttribute('name'),
+ group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
+ count = group.length,
+ valid = false,
+ disabled = false;
+
+ // Has to count up to make sure the focus gets applied to the top error
+ for (var i=0; i < count; i++) {
+ if( group[i].getAttribute('disabled') ){
+ disabled=true;
+ valid=true;
+ } else {
+ if (group[i].checked){
+ valid = true;
+ } else {
+ if( disabled ){
+ valid = false;
+ }
+ }
+ }
+ }
+
+ // Has to count up to make sure the focus gets applied to the top error
+ for (var i = 0; i < count; i++) {
+ if (valid) {
+ this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+ $(group[i]).triggerHandler('valid');
+ } else {
+ this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+ $(group[i]).triggerHandler('invalid');
+ }
+ }
+
+ return valid;
+ },
+
+ valid_equal : function (el, required, parent) {
+ var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+ to = el.value,
+ valid = (from === to);
+
+ if (valid) {
+ this.S(el).removeAttr(this.invalid_attr);
+ parent.removeClass(this.settings.error_class);
+ if (label.length > 0 && settings.error_labels) {
+ label.removeClass(this.settings.error_class);
+ }
+ } else {
+ this.S(el).attr(this.invalid_attr, '');
+ parent.addClass(this.settings.error_class);
+ if (label.length > 0 && settings.error_labels) {
+ label.addClass(this.settings.error_class);
+ }
+ }
+
+ return valid;
+ },
+
+ valid_oneof : function (el, required, parent, doNotValidateOthers) {
+ var el = this.S(el),
+ others = this.S('[' + this.add_namespace('data-oneof') + ']'),
+ valid = others.filter(':checked').length > 0;
+
+ if (valid) {
+ el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+ } else {
+ el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+ }
+
+ if (!doNotValidateOthers) {
+ var _this = this;
+ others.each(function () {
+ _this.valid_oneof.call(_this, this, null, null, true);
+ });
+ }
+
+ return valid;
+ },
+
+ reflow : function(scope, options) {
+ var self = this,
+ form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate');
+ self.S(form).each(function (idx, el) {
+ self.events(el);
+ });
+ }
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.accordion = {
+ name : 'accordion',
+
+ version : '5.5.3',
+
+ settings : {
+ content_class : 'content',
+ active_class : 'active',
+ multi_expand : false,
+ toggleable : true,
+ callback : function () {}
+ },
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function (instance) {
+ var self = this;
+ var S = this.S;
+ self.create(this.S(instance));
+
+ S(this.scope)
+ .off('.fndtn.accordion')
+ .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) {
+ var accordion = S(this).closest('[' + self.attr_name() + ']'),
+ groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
+ settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
+ target = S('#' + this.href.split('#')[1]),
+ aunts = $('> dd, > li', accordion),
+ siblings = aunts.children('.' + settings.content_class),
+ active_content = siblings.filter('.' + settings.active_class);
+
+ e.preventDefault();
+
+ if (accordion.attr(self.attr_name())) {
+ siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class);
+ aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li');
+ }
+
+ if (settings.toggleable && target.is(active_content)) {
+ target.parent('dd, li').toggleClass(settings.active_class, false);
+ target.toggleClass(settings.active_class, false);
+ S(this).attr('aria-expanded', function(i, attr){
+ return attr === 'true' ? 'false' : 'true';
+ });
+ settings.callback(target);
+ target.triggerHandler('toggled', [accordion]);
+ accordion.triggerHandler('toggled', [target]);
+ return;
+ }
+
+ if (!settings.multi_expand) {
+ siblings.removeClass(settings.active_class);
+ aunts.removeClass(settings.active_class);
+ aunts.children('a').attr('aria-expanded','false');
+ }
+
+ target.addClass(settings.active_class).parent().addClass(settings.active_class);
+ settings.callback(target);
+ target.triggerHandler('toggled', [accordion]);
+ accordion.triggerHandler('toggled', [target]);
+ S(this).attr('aria-expanded','true');
+ });
+ },
+
+ create: function($instance) {
+ var self = this,
+ accordion = $instance,
+ aunts = $('> .accordion-navigation', accordion),
+ settings = accordion.data(self.attr_name(true) + '-init') || self.settings;
+
+ aunts.children('a').attr('aria-expanded','false');
+ aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true');
+
+ if (settings.multi_expand) {
+ $instance.attr('aria-multiselectable','true');
+ }
+ },
+
+ toggle : function(options) {
+ var options = typeof options !== 'undefined' ? options : {};
+ var selector = typeof options.selector !== 'undefined' ? options.selector : '';
+ var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : '';
+ var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']');
+
+ var $items = $accordion.find('> dd' + selector + ', > li' + selector);
+ if ( $items.length < 1 ) {
+ if ( window.console ) {
+ console.error('Selection not found.', selector);
+ }
+ return false;
+ }
+
+ var S = this.S;
+ var active_class = this.settings.active_class;
+ $items.each(function() {
+ var $item = S(this);
+ var is_active = $item.hasClass(active_class);
+ if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) {
+ $item.find('> a').trigger('click.fndtn.accordion');
+ }
+ });
+ },
+
+ open : function(options) {
+ var options = typeof options !== 'undefined' ? options : {};
+ options.toggle_state = 'open';
+ this.toggle(options);
+ },
+
+ close : function(options) {
+ var options = typeof options !== 'undefined' ? options : {};
+ options.toggle_state = 'close';
+ this.toggle(options);
+ },
+
+ off : function () {},
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.alert = {
+ name : 'alert',
+
+ version : '5.5.3',
+
+ settings : {
+ callback : function () {}
+ },
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function () {
+ var self = this,
+ S = this.S;
+
+ $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
+ var alertBox = S(this).closest('[' + self.attr_name() + ']'),
+ settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
+
+ e.preventDefault();
+ if (Modernizr.csstransitions) {
+ alertBox.addClass('alert-close');
+ alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {
+ S(this).trigger('close.fndtn.alert').remove();
+ settings.callback();
+ });
+ } else {
+ alertBox.fadeOut(300, function () {
+ S(this).trigger('close.fndtn.alert').remove();
+ settings.callback();
+ });
+ }
+ });
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.clearing = {
+ name : 'clearing',
+
+ version : '5.5.3',
+
+ settings : {
+ templates : {
+ viewing : '<a href="#" class="clearing-close">×</a>' +
+ '<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+ '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
+ '<a href="#" class="clearing-main-next"><span></span></a></div>' +
+ '<img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+ '<img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'
+ },
+
+ // comma delimited list of selectors that, on click, will close clearing,
+ // add 'div.clearing-blackout, div.visible-img' to close on background click
+ close_selectors : '.clearing-close, div.clearing-blackout',
+
+ // Default to the entire li element.
+ open_selectors : '',
+
+ // Image will be skipped in carousel.
+ skip_selector : '',
+
+ touch_label : '',
+
+ // event initializer and locks
+ init : false,
+ locked : false
+ },
+
+ init : function (scope, method, options) {
+ var self = this;
+ Foundation.inherit(this, 'throttle image_loaded');
+
+ this.bindings(method, options);
+
+ if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
+ this.assemble(self.S('li', this.scope));
+ } else {
+ self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ self.assemble(self.S('li', this));
+ });
+ }
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S,
+ $scroll_container = $('.scroll-container');
+
+ if ($scroll_container.length > 0) {
+ this.scope = $scroll_container;
+ }
+
+ S(this.scope)
+ .off('.clearing')
+ .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,
+ function (e, current, target) {
+ var current = current || S(this),
+ target = target || current,
+ next = current.next('li'),
+ settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
+ image = S(e.target);
+
+ e.preventDefault();
+
+ if (!settings) {
+ self.init();
+ settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+ }
+
+ // if clearing is open and the current image is
+ // clicked, go to the next image in sequence
+ if (target.hasClass('visible') &&
+ current[0] === target[0] &&
+ next.length > 0 && self.is_open(current)) {
+ target = next;
+ image = S('img', target);
+ }
+
+ // set current and target to the clicked li if not otherwise defined.
+ self.open(image, current, target);
+ self.update_paddles(target);
+ })
+
+ .on('click.fndtn.clearing', '.clearing-main-next',
+ function (e) { self.nav(e, 'next') })
+ .on('click.fndtn.clearing', '.clearing-main-prev',
+ function (e) { self.nav(e, 'prev') })
+ .on('click.fndtn.clearing', this.settings.close_selectors,
+ function (e) { Foundation.libs.clearing.close(e, this) });
+
+ $(document).on('keydown.fndtn.clearing',
+ function (e) { self.keydown(e) });
+
+ S(window).off('.clearing').on('resize.fndtn.clearing',
+ function () { self.resize() });
+
+ this.swipe_events(scope);
+ },
+
+ swipe_events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .on('touchstart.fndtn.clearing', '.visible-img', function (e) {
+ if (!e.touches) { e = e.originalEvent; }
+ var data = {
+ start_page_x : e.touches[0].pageX,
+ start_page_y : e.touches[0].pageY,
+ start_time : (new Date()).getTime(),
+ delta_x : 0,
+ is_scrolling : undefined
+ };
+
+ S(this).data('swipe-transition', data);
+ e.stopPropagation();
+ })
+ .on('touchmove.fndtn.clearing', '.visible-img', function (e) {
+ if (!e.touches) {
+ e = e.originalEvent;
+ }
+ // Ignore pinch/zoom events
+ if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+ return;
+ }
+
+ var data = S(this).data('swipe-transition');
+
+ if (typeof data === 'undefined') {
+ data = {};
+ }
+
+ data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+ if (Foundation.rtl) {
+ data.delta_x = -data.delta_x;
+ }
+
+ if (typeof data.is_scrolling === 'undefined') {
+ data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+ }
+
+ if (!data.is_scrolling && !data.active) {
+ e.preventDefault();
+ var direction = (data.delta_x < 0) ? 'next' : 'prev';
+ data.active = true;
+ self.nav(e, direction);
+ }
+ })
+ .on('touchend.fndtn.clearing', '.visible-img', function (e) {
+ S(this).data('swipe-transition', {});
+ e.stopPropagation();
+ });
+ },
+
+ assemble : function ($li) {
+ var $el = $li.parent();
+
+ if ($el.parent().hasClass('carousel')) {
+ return;
+ }
+
+ $el.after('<div id="foundationClearingHolder"></div>');
+
+ var grid = $el.detach(),
+ grid_outerHTML = '';
+
+ if (grid[0] == null) {
+ return;
+ } else {
+ grid_outerHTML = grid[0].outerHTML;
+ }
+
+ var holder = this.S('#foundationClearingHolder'),
+ settings = $el.data(this.attr_name(true) + '-init'),
+ data = {
+ grid : '<div class="carousel">' + grid_outerHTML + '</div>',
+ viewing : settings.templates.viewing
+ },
+ wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
+ data.grid + '</div></div>',
+ touch_label = this.settings.touch_label;
+
+ if (Modernizr.touch) {
+ wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
+ }
+
+ holder.after(wrapper).remove();
+ },
+
+ open : function ($image, current, target) {
+ var self = this,
+ body = $(document.body),
+ root = target.closest('.clearing-assembled'),
+ container = self.S('div', root).first(),
+ visible_image = self.S('.visible-img', container),
+ image = self.S('img', visible_image).not($image),
+ label = self.S('.clearing-touch-label', container),
+ error = false,
+ loaded = {};
+
+ // Event to disable scrolling on touch devices when Clearing is activated
+ $('body').on('touchmove', function (e) {
+ e.preventDefault();
+ });
+
+ image.error(function () {
+ error = true;
+ });
+
+ function startLoad() {
+ setTimeout(function () {
+ this.image_loaded(image, function () {
+ if (image.outerWidth() === 1 && !error) {
+ startLoad.call(this);
+ } else {
+ cb.call(this, image);
+ }
+ }.bind(this));
+ }.bind(this), 100);
+ }
+
+ function cb (image) {
+ var $image = $(image);
+ $image.css('visibility', 'visible');
+ $image.trigger('imageVisible');
+ // toggle the gallery
+ body.css('overflow', 'hidden');
+ root.addClass('clearing-blackout');
+ container.addClass('clearing-container');
+ visible_image.show();
+ this.fix_height(target)
+ .caption(self.S('.clearing-caption', visible_image), self.S('img', target))
+ .center_and_label(image, label)
+ .shift(current, target, function () {
+ target.closest('li').siblings().removeClass('visible');
+ target.closest('li').addClass('visible');
+ });
+ visible_image.trigger('opened.fndtn.clearing')
+ }
+
+ if (!this.locked()) {
+ visible_image.trigger('open.fndtn.clearing');
+ // set the image to the selected thumbnail
+ loaded = this.load($image);
+ if (loaded.interchange) {
+ image
+ .attr('data-interchange', loaded.interchange)
+ .foundation('interchange', 'reflow');
+ } else {
+ image
+ .attr('src', loaded.src)
+ .attr('data-interchange', '');
+ }
+ image.css('visibility', 'hidden');
+
+ startLoad.call(this);
+ }
+ },
+
+ close : function (e, el) {
+ e.preventDefault();
+
+ var root = (function (target) {
+ if (/blackout/.test(target.selector)) {
+ return target;
+ } else {
+ return target.closest('.clearing-blackout');
+ }
+ }($(el))),
+ body = $(document.body), container, visible_image;
+
+ if (el === e.target && root) {
+ body.css('overflow', '');
+ container = $('div', root).first();
+ visible_image = $('.visible-img', container);
+ visible_image.trigger('close.fndtn.clearing');
+ this.settings.prev_index = 0;
+ $('ul[' + this.attr_name() + ']', root)
+ .attr('style', '').closest('.clearing-blackout')
+ .removeClass('clearing-blackout');
+ container.removeClass('clearing-container');
+ visible_image.hide();
+ visible_image.trigger('closed.fndtn.clearing');
+ }
+
+ // Event to re-enable scrolling on touch devices
+ $('body').off('touchmove');
+
+ return false;
+ },
+
+ is_open : function (current) {
+ return current.parent().prop('style').length > 0;
+ },
+
+ keydown : function (e) {
+ var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
+ NEXT_KEY = this.rtl ? 37 : 39,
+ PREV_KEY = this.rtl ? 39 : 37,
+ ESC_KEY = 27;
+
+ if (e.which === NEXT_KEY) {
+ this.go(clearing, 'next');
+ }
+ if (e.which === PREV_KEY) {
+ this.go(clearing, 'prev');
+ }
+ if (e.which === ESC_KEY) {
+ this.S('a.clearing-close').trigger('click.fndtn.clearing');
+ }
+ },
+
+ nav : function (e, direction) {
+ var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
+
+ e.preventDefault();
+ this.go(clearing, direction);
+ },
+
+ resize : function () {
+ var image = $('img', '.clearing-blackout .visible-img'),
+ label = $('.clearing-touch-label', '.clearing-blackout');
+
+ if (image.length) {
+ this.center_and_label(image, label);
+ image.trigger('resized.fndtn.clearing')
+ }
+ },
+
+ // visual adjustments
+ fix_height : function (target) {
+ var lis = target.parent().children(),
+ self = this;
+
+ lis.each(function () {
+ var li = self.S(this),
+ image = li.find('img');
+
+ if (li.height() > image.outerHeight()) {
+ li.addClass('fix-height');
+ }
+ })
+ .closest('ul')
+ .width(lis.length * 100 + '%');
+
+ return this;
+ },
+
+ update_paddles : function (target) {
+ target = target.closest('li');
+ var visible_image = target
+ .closest('.carousel')
+ .siblings('.visible-img');
+
+ if (target.next().length > 0) {
+ this.S('.clearing-main-next', visible_image).removeClass('disabled');
+ } else {
+ this.S('.clearing-main-next', visible_image).addClass('disabled');
+ }
+
+ if (target.prev().length > 0) {
+ this.S('.clearing-main-prev', visible_image).removeClass('disabled');
+ } else {
+ this.S('.clearing-main-prev', visible_image).addClass('disabled');
+ }
+ },
+
+ center_and_label : function (target, label) {
+ if (!this.rtl && label.length > 0) {
+ label.css({
+ marginLeft : -(label.outerWidth() / 2),
+ marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
+ });
+ } else {
+ label.css({
+ marginRight : -(label.outerWidth() / 2),
+ marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
+ left: 'auto',
+ right: '50%'
+ });
+ }
+ return this;
+ },
+
+ // image loading and preloading
+
+ load : function ($image) {
+ var href,
+ interchange,
+ closest_a;
+
+ if ($image[0].nodeName === 'A') {
+ href = $image.attr('href');
+ interchange = $image.data('clearing-interchange');
+ } else {
+ closest_a = $image.closest('a');
+ href = closest_a.attr('href');
+ interchange = closest_a.data('clearing-interchange');
+ }
+
+ this.preload($image);
+
+ return {
+ 'src': href ? href : $image.attr('src'),
+ 'interchange': href ? interchange : $image.data('clearing-interchange')
+ }
+ },
+
+ preload : function ($image) {
+ this
+ .img($image.closest('li').next(), 'next')
+ .img($image.closest('li').prev(), 'prev');
+ },
+
+ img : function (img, sibling_type) {
+ if (img.length) {
+ var preload_img = $('.clearing-preload-' + sibling_type),
+ new_a = this.S('a', img),
+ src,
+ interchange,
+ image;
+
+ if (new_a.length) {
+ src = new_a.attr('href');
+ interchange = new_a.data('clearing-interchange');
+ } else {
+ image = this.S('img', img);
+ src = image.attr('src');
+ interchange = image.data('clearing-interchange');
+ }
+
+ if (interchange) {
+ preload_img.attr('data-interchange', interchange);
+ } else {
+ preload_img.attr('src', src);
+ preload_img.attr('data-interchange', '');
+ }
+ }
+ return this;
+ },
+
+ // image caption
+
+ caption : function (container, $image) {
+ var caption = $image.attr('data-caption');
+
+ if (caption) {
+ var containerPlain = container.get(0);
+ containerPlain.innerHTML = caption;
+ container.show();
+ } else {
+ container
+ .text('')
+ .hide();
+ }
+ return this;
+ },
+
+ // directional methods
+
+ go : function ($ul, direction) {
+ var current = this.S('.visible', $ul),
+ target = current[direction]();
+
+ // Check for skip selector.
+ if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {
+ target = target[direction]();
+ }
+
+ if (target.length) {
+ this.S('img', target)
+ .trigger('click.fndtn.clearing', [current, target])
+ .trigger('change.fndtn.clearing');
+ }
+ },
+
+ shift : function (current, target, callback) {
+ var clearing = target.parent(),
+ old_index = this.settings.prev_index || target.index(),
+ direction = this.direction(clearing, current, target),
+ dir = this.rtl ? 'right' : 'left',
+ left = parseInt(clearing.css('left'), 10),
+ width = target.outerWidth(),
+ skip_shift;
+
+ var dir_obj = {};
+
+ // we use jQuery animate instead of CSS transitions because we
+ // need a callback to unlock the next animation
+ // needs support for RTL **
+ if (target.index() !== old_index && !/skip/.test(direction)) {
+ if (/left/.test(direction)) {
+ this.lock();
+ dir_obj[dir] = left + width;
+ clearing.animate(dir_obj, 300, this.unlock());
+ } else if (/right/.test(direction)) {
+ this.lock();
+ dir_obj[dir] = left - width;
+ clearing.animate(dir_obj, 300, this.unlock());
+ }
+ } else if (/skip/.test(direction)) {
+ // the target image is not adjacent to the current image, so
+ // do we scroll right or not
+ skip_shift = target.index() - this.settings.up_count;
+ this.lock();
+
+ if (skip_shift > 0) {
+ dir_obj[dir] = -(skip_shift * width);
+ clearing.animate(dir_obj, 300, this.unlock());
+ } else {
+ dir_obj[dir] = 0;
+ clearing.animate(dir_obj, 300, this.unlock());
+ }
+ }
+
+ callback();
+ },
+
+ direction : function ($el, current, target) {
+ var lis = this.S('li', $el),
+ li_width = lis.outerWidth() + (lis.outerWidth() / 4),
+ up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
+ target_index = lis.index(target),
+ response;
+
+ this.settings.up_count = up_count;
+
+ if (this.adjacent(this.settings.prev_index, target_index)) {
+ if ((target_index > up_count) && target_index > this.settings.prev_index) {
+ response = 'right';
+ } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {
+ response = 'left';
+ } else {
+ response = false;
+ }
+ } else {
+ response = 'skip';
+ }
+
+ this.settings.prev_index = target_index;
+
+ return response;
+ },
+
+ adjacent : function (current_index, target_index) {
+ for (var i = target_index + 1; i >= target_index - 1; i--) {
+ if (i === current_index) {
+ return true;
+ }
+ }
+ return false;
+ },
+
+ // lock management
+
+ lock : function () {
+ this.settings.locked = true;
+ },
+
+ unlock : function () {
+ this.settings.locked = false;
+ },
+
+ locked : function () {
+ return this.settings.locked;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.clearing');
+ this.S(window).off('.fndtn.clearing');
+ },
+
+ reflow : function () {
+ this.init();
+ }
+ };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.dropdown = {
+ name : 'dropdown',
+
+ version : '5.5.3',
+
+ settings : {
+ active_class : 'open',
+ disabled_class : 'disabled',
+ mega_class : 'mega',
+ align : 'bottom',
+ is_hover : false,
+ hover_timeout : 150,
+ opened : function () {},
+ closed : function () {}
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .off('.dropdown')
+ .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
+ var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
+ if (!settings.is_hover || Modernizr.touch) {
+ e.preventDefault();
+ if (S(this).parent('[data-reveal-id]').length) {
+ e.stopPropagation();
+ }
+ self.toggle($(this));
+ }
+ })
+ .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+ var $this = S(this),
+ dropdown,
+ target;
+
+ clearTimeout(self.timeout);
+
+ if ($this.data(self.data_attr())) {
+ dropdown = S('#' + $this.data(self.data_attr()));
+ target = $this;
+ } else {
+ dropdown = $this;
+ target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
+ }
+
+ var settings = target.data(self.attr_name(true) + '-init') || self.settings;
+
+ if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
+ self.closeall.call(self);
+ }
+
+ if (settings.is_hover) {
+ self.open.apply(self, [dropdown, target]);
+ }
+ })
+ .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+ var $this = S(this);
+ var settings;
+
+ if ($this.data(self.data_attr())) {
+ settings = $this.data(self.data_attr(true) + '-init') || self.settings;
+ } else {
+ var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
+ settings = target.data(self.attr_name(true) + '-init') || self.settings;
+ }
+
+ self.timeout = setTimeout(function () {
+ if ($this.data(self.data_attr())) {
+ if (settings.is_hover) {
+ self.close.call(self, S('#' + $this.data(self.data_attr())));
+ }
+ } else {
+ if (settings.is_hover) {
+ self.close.call(self, $this);
+ }
+ }
+ }.bind(this), settings.hover_timeout);
+ })
+ .on('click.fndtn.dropdown', function (e) {
+ var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
+ var links = parent.find('a');
+
+ if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
+ }
+
+ if (e.target !== document && !$.contains(document.documentElement, e.target)) {
+ return;
+ }
+
+ if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
+ return;
+ }
+
+ if (!(S(e.target).data('revealId')) &&
+ (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
+ $.contains(parent.first()[0], e.target)))) {
+ e.stopPropagation();
+ return;
+ }
+
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
+ })
+ .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+ self.settings.opened.call(this);
+ })
+ .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+ self.settings.closed.call(this);
+ });
+
+ S(window)
+ .off('.dropdown')
+ .on('resize.fndtn.dropdown', self.throttle(function () {
+ self.resize.call(self);
+ }, 50));
+
+ this.resize();
+ },
+
+ close : function (dropdown) {
+ var self = this;
+ dropdown.each(function (idx) {
+ var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']');
+ original_target.attr('aria-expanded', 'false');
+ if (self.S(this).hasClass(self.settings.active_class)) {
+ self.S(this)
+ .css(Foundation.rtl ? 'right' : 'left', '-99999px')
+ .attr('aria-hidden', 'true')
+ .removeClass(self.settings.active_class)
+ .prev('[' + self.attr_name() + ']')
+ .removeClass(self.settings.active_class)
+ .removeData('target');
+
+ self.S(this).trigger('closed.fndtn.dropdown', [dropdown]);
+ }
+ });
+ dropdown.removeClass('f-open-' + this.attr_name(true));
+ },
+
+ closeall : function () {
+ var self = this;
+ $.each(self.S('.f-open-' + this.attr_name(true)), function () {
+ self.close.call(self, self.S(this));
+ });
+ },
+
+ open : function (dropdown, target) {
+ this
+ .css(dropdown
+ .addClass(this.settings.active_class), target);
+ dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
+ dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]);
+ dropdown.attr('aria-hidden', 'false');
+ target.attr('aria-expanded', 'true');
+ dropdown.focus();
+ dropdown.addClass('f-open-' + this.attr_name(true));
+ },
+
+ data_attr : function () {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + this.name;
+ }
+
+ return this.name;
+ },
+
+ toggle : function (target) {
+ if (target.hasClass(this.settings.disabled_class)) {
+ return;
+ }
+ var dropdown = this.S('#' + target.data(this.data_attr()));
+ if (dropdown.length === 0) {
+ // No dropdown found, not continuing
+ return;
+ }
+
+ this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
+
+ if (dropdown.hasClass(this.settings.active_class)) {
+ this.close.call(this, dropdown);
+ if (dropdown.data('target') !== target.get(0)) {
+ this.open.call(this, dropdown, target);
+ }
+ } else {
+ this.open.call(this, dropdown, target);
+ }
+ },
+
+ resize : function () {
+ var dropdown = this.S('[' + this.attr_name() + '-content].open');
+ var target = $(dropdown.data("target"));
+
+ if (dropdown.length && target.length) {
+ this.css(dropdown, target);
+ }
+ },
+
+ css : function (dropdown, target) {
+ var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
+ settings = target.data(this.attr_name(true) + '-init') || this.settings,
+ parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow');
+
+ this.clear_idx();
+
+
+
+ if (this.small()) {
+ var p = this.dirs.bottom.call(dropdown, target, settings);
+
+ dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
+ position : 'absolute',
+ width : '95%',
+ 'max-width' : 'none',
+ top : p.top
+ });
+
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+ }
+ // detect if dropdown is in an overflow container
+ else if (parentOverflow !== 'visible') {
+ var offset = target[0].offsetTop + target[0].offsetHeight;
+
+ dropdown.attr('style', '').css({
+ position : 'absolute',
+ top : offset
+ });
+
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+ }
+ else {
+
+ this.style(dropdown, target, settings);
+ }
+
+ return dropdown;
+ },
+
+ style : function (dropdown, target, settings) {
+ var css = $.extend({position : 'absolute'},
+ this.dirs[settings.align].call(dropdown, target, settings));
+
+ dropdown.attr('style', '').css(css);
+ },
+
+ // return CSS property object
+ // `this` is the dropdown
+ dirs : {
+ // Calculate target offset
+ _base : function (t, s) {
+ var o_p = this.offsetParent(),
+ o = o_p.offset(),
+ p = t.offset();
+
+ p.top -= o.top;
+ p.left -= o.left;
+
+ //set some flags on the p object to pass along
+ p.missRight = false;
+ p.missTop = false;
+ p.missLeft = false;
+ p.leftRightFlag = false;
+
+ //lets see if the panel will be off the screen
+ //get the actual width of the page and store it
+ var actualBodyWidth;
+ var windowWidth = window.innerWidth;
+
+ if (document.getElementsByClassName('row')[0]) {
+ actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
+ } else {
+ actualBodyWidth = windowWidth;
+ }
+
+ var actualMarginWidth = (windowWidth - actualBodyWidth) / 2;
+ var actualBoundary = actualBodyWidth;
+
+ if (!this.hasClass('mega') && !s.ignore_repositioning) {
+ var outerWidth = this.outerWidth();
+ var o_left = t.offset().left;
+
+ //miss top
+ if (t.offset().top <= this.outerHeight()) {
+ p.missTop = true;
+ actualBoundary = windowWidth - actualMarginWidth;
+ p.leftRightFlag = true;
+ }
+
+ //miss right
+ if (o_left + outerWidth > o_left + actualMarginWidth && o_left - actualMarginWidth > outerWidth) {
+ p.missRight = true;
+ p.missLeft = false;
+ }
+
+ //miss left
+ if (o_left - outerWidth <= 0) {
+ p.missLeft = true;
+ p.missRight = false;
+ }
+ }
+
+ return p;
+ },
+
+ top : function (t, s) {
+ var self = Foundation.libs.dropdown,
+ p = self.dirs._base.call(this, t, s);
+
+ this.addClass('drop-top');
+
+ if (p.missTop == true) {
+ p.top = p.top + t.outerHeight() + this.outerHeight();
+ this.removeClass('drop-top');
+ }
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth() + t.outerWidth();
+ }
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ if (Foundation.rtl) {
+ return {left : p.left - this.outerWidth() + t.outerWidth(),
+ top : p.top - this.outerHeight()};
+ }
+
+ return {left : p.left, top : p.top - this.outerHeight()};
+ },
+
+ bottom : function (t, s) {
+ var self = Foundation.libs.dropdown,
+ p = self.dirs._base.call(this, t, s);
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth() + t.outerWidth();
+ }
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ if (self.rtl) {
+ return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
+ }
+
+ return {left : p.left, top : p.top + t.outerHeight()};
+ },
+
+ left : function (t, s) {
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+ this.addClass('drop-left');
+
+ if (p.missLeft == true) {
+ p.left = p.left + this.outerWidth();
+ p.top = p.top + t.outerHeight();
+ this.removeClass('drop-left');
+ }
+
+ return {left : p.left - this.outerWidth(), top : p.top};
+ },
+
+ right : function (t, s) {
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+ this.addClass('drop-right');
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth();
+ p.top = p.top + t.outerHeight();
+ this.removeClass('drop-right');
+ } else {
+ p.triggeredRight = true;
+ }
+
+ var self = Foundation.libs.dropdown;
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ return {left : p.left + t.outerWidth(), top : p.top};
+ }
+ },
+
+ // Insert rule to style psuedo elements
+ adjust_pip : function (dropdown, target, settings, position) {
+ var sheet = Foundation.stylesheet,
+ pip_offset_base = 8;
+
+ if (dropdown.hasClass(settings.mega_class)) {
+ pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
+ } else if (this.small()) {
+ pip_offset_base += position.left - 8;
+ }
+
+ this.rule_idx = sheet.cssRules.length;
+
+ //default
+ var sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left: ' + pip_offset_base + 'px;',
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
+
+ if (position.missRight == true) {
+ pip_offset_base = dropdown.outerWidth() - 23;
+ sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left: ' + pip_offset_base + 'px;',
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
+ }
+
+ //just a case where right is fired, but its not missing right
+ if (position.triggeredRight == true) {
+ sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left:-12px;',
+ css_after = 'left:-14px;';
+ }
+
+ if (sheet.insertRule) {
+ sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
+ sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
+ } else {
+ sheet.addRule(sel_before, css_before, this.rule_idx);
+ sheet.addRule(sel_after, css_after, this.rule_idx + 1);
+ }
+ },
+
+ // Remove old dropdown rule index
+ clear_idx : function () {
+ var sheet = Foundation.stylesheet;
+
+ if (typeof this.rule_idx !== 'undefined') {
+ sheet.deleteRule(this.rule_idx);
+ sheet.deleteRule(this.rule_idx);
+ delete this.rule_idx;
+ }
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.dropdown');
+ this.S('html, body').off('.fndtn.dropdown');
+ this.S(window).off('.fndtn.dropdown');
+ this.S('[data-dropdown-content]').off('.fndtn.dropdown');
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.equalizer = {
+ name : 'equalizer',
+
+ version : '5.5.3',
+
+ settings : {
+ use_tallest : true,
+ before_height_change : $.noop,
+ after_height_change : $.noop,
+ equalize_on_stack : false,
+ act_on_hidden_el: false
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'image_loaded');
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ events : function () {
+ this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
+ this.reflow();
+ }.bind(this));
+ },
+
+ equalize : function (equalizer) {
+ var isStacked = false,
+ group = equalizer.data('equalizer'),
+ settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
+ vals,
+ firstTopOffset;
+
+ if (settings.act_on_hidden_el) {
+ vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
+ }
+ else {
+ vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
+ }
+
+ if (vals.length === 0) {
+ return;
+ }
+
+ settings.before_height_change();
+ equalizer.trigger('before-height-change.fndth.equalizer');
+ vals.height('inherit');
+
+ if (settings.equalize_on_stack === false) {
+ firstTopOffset = vals.first().offset().top;
+ vals.each(function () {
+ if ($(this).offset().top !== firstTopOffset) {
+ isStacked = true;
+ return false;
+ }
+ });
+ if (isStacked) {
+ return;
+ }
+ }
+
+ var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
+
+ if (settings.use_tallest) {
+ var max = Math.max.apply(null, heights);
+ vals.css('height', max);
+ } else {
+ var min = Math.min.apply(null, heights);
+ vals.css('height', min);
+ }
+
+ settings.after_height_change();
+ equalizer.trigger('after-height-change.fndtn.equalizer');
+ },
+
+ reflow : function () {
+ var self = this;
+
+ this.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var $eq_target = $(this),
+ media_query = $eq_target.data('equalizer-mq'),
+ ignore_media_query = true;
+
+ if (media_query) {
+ media_query = 'is_' + media_query.replace(/-/g, '_');
+ if (Foundation.utils.hasOwnProperty(media_query)) {
+ ignore_media_query = false;
+ }
+ }
+
+ self.image_loaded(self.S('img', this), function () {
+ if (ignore_media_query || Foundation.utils[media_query]()) {
+ self.equalize($eq_target)
+ } else {
+ var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
+ vals.css('height', 'auto');
+ }
+ });
+ });
+ }
+ };
+})(jQuery, window, window.document);
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.interchange = {
+ name : 'interchange',
+
+ version : '5.5.3',
+
+ cache : {},
+
+ images_loaded : false,
+ nodes_loaded : false,
+
+ settings : {
+ load_attr : 'interchange',
+
+ named_queries : {
+ 'default' : 'only screen',
+ 'small' : Foundation.media_queries['small'],
+ 'small-only' : Foundation.media_queries['small-only'],
+ 'medium' : Foundation.media_queries['medium'],
+ 'medium-only' : Foundation.media_queries['medium-only'],
+ 'large' : Foundation.media_queries['large'],
+ 'large-only' : Foundation.media_queries['large-only'],
+ 'xlarge' : Foundation.media_queries['xlarge'],
+ 'xlarge-only' : Foundation.media_queries['xlarge-only'],
+ 'xxlarge' : Foundation.media_queries['xxlarge'],
+ 'landscape' : 'only screen and (orientation: landscape)',
+ 'portrait' : 'only screen and (orientation: portrait)',
+ 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
+ 'only screen and (min--moz-device-pixel-ratio: 2),' +
+ 'only screen and (-o-min-device-pixel-ratio: 2/1),' +
+ 'only screen and (min-device-pixel-ratio: 2),' +
+ 'only screen and (min-resolution: 192dpi),' +
+ 'only screen and (min-resolution: 2dppx)'
+ },
+
+ directives : {
+ replace : function (el, path, trigger) {
+ // The trigger argument, if called within the directive, fires
+ // an event named after the directive on the element, passing
+ // any parameters along to the event that you pass to trigger.
+ //
+ // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
+ //
+ // This allows you to bind a callback like so:
+ // $('#interchangeContainer').on('replace', function (e, a, b, c) {
+ // console.log($(this).html(), a, b, c);
+ // });
+
+ if (el !== null && /IMG/.test(el[0].nodeName)) {
+ var orig_path = $.each(el, function(){this.src = path;});
+ // var orig_path = el[0].src;
+
+ if (new RegExp(path, 'i').test(orig_path)) {
+ return;
+ }
+
+ el.attr("src", path);
+
+ return trigger(el[0].src);
+ }
+ var last_path = el.data(this.data_attr + '-last-path'),
+ self = this;
+
+ if (last_path == path) {
+ return;
+ }
+
+ if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
+ $(el).css('background-image', 'url(' + path + ')');
+ el.data('interchange-last-path', path);
+ return trigger(path);
+ }
+
+ return $.get(path, function (response) {
+ el.html(response);
+ el.data(self.data_attr + '-last-path', path);
+ trigger();
+ });
+
+ }
+ }
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle random_str');
+
+ this.data_attr = this.set_data_attr();
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ get_media_hash : function () {
+ var mediaHash = '';
+ for (var queryName in this.settings.named_queries ) {
+ mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
+ }
+ return mediaHash;
+ },
+
+ events : function () {
+ var self = this, prevMediaHash;
+
+ $(window)
+ .off('.interchange')
+ .on('resize.fndtn.interchange', self.throttle(function () {
+ var currMediaHash = self.get_media_hash();
+ if (currMediaHash !== prevMediaHash) {
+ self.resize();
+ }
+ prevMediaHash = currMediaHash;
+ }, 50));
+
+ return this;
+ },
+
+ resize : function () {
+ var cache = this.cache;
+
+ if (!this.images_loaded || !this.nodes_loaded) {
+ setTimeout($.proxy(this.resize, this), 50);
+ return;
+ }
+
+ for (var uuid in cache) {
+ if (cache.hasOwnProperty(uuid)) {
+ var passed = this.results(uuid, cache[uuid]);
+ if (passed) {
+ this.settings.directives[passed
+ .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
+ if (arguments[0] instanceof Array) {
+ var args = arguments[0];
+ } else {
+ var args = Array.prototype.slice.call(arguments, 0);
+ }
+
+ return function() {
+ passed.el.trigger(passed.scenario[1], args);
+ }
+ }(passed)));
+ }
+ }
+ }
+
+ },
+
+ results : function (uuid, scenarios) {
+ var count = scenarios.length;
+
+ if (count > 0) {
+ var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
+
+ while (count--) {
+ var mq, rule = scenarios[count][2];
+ if (this.settings.named_queries.hasOwnProperty(rule)) {
+ mq = matchMedia(this.settings.named_queries[rule]);
+ } else {
+ mq = matchMedia(rule);
+ }
+ if (mq.matches) {
+ return {el : el, scenario : scenarios[count]};
+ }
+ }
+ }
+
+ return false;
+ },
+
+ load : function (type, force_update) {
+ if (typeof this['cached_' + type] === 'undefined' || force_update) {
+ this['update_' + type]();
+ }
+
+ return this['cached_' + type];
+ },
+
+ update_images : function () {
+ var images = this.S('img[' + this.data_attr + ']'),
+ count = images.length,
+ i = count,
+ loaded_count = 0,
+ data_attr = this.data_attr;
+
+ this.cache = {};
+ this.cached_images = [];
+ this.images_loaded = (count === 0);
+
+ while (i--) {
+ loaded_count++;
+ if (images[i]) {
+ var str = images[i].getAttribute(data_attr) || '';
+
+ if (str.length > 0) {
+ this.cached_images.push(images[i]);
+ }
+ }
+
+ if (loaded_count === count) {
+ this.images_loaded = true;
+ this.enhance('images');
+ }
+ }
+
+ return this;
+ },
+
+ update_nodes : function () {
+ var nodes = this.S('[' + this.data_attr + ']').not('img'),
+ count = nodes.length,
+ i = count,
+ loaded_count = 0,
+ data_attr = this.data_attr;
+
+ this.cached_nodes = [];
+ this.nodes_loaded = (count === 0);
+
+ while (i--) {
+ loaded_count++;
+ var str = nodes[i].getAttribute(data_attr) || '';
+
+ if (str.length > 0) {
+ this.cached_nodes.push(nodes[i]);
+ }
+
+ if (loaded_count === count) {
+ this.nodes_loaded = true;
+ this.enhance('nodes');
+ }
+ }
+
+ return this;
+ },
+
+ enhance : function (type) {
+ var i = this['cached_' + type].length;
+
+ while (i--) {
+ this.object($(this['cached_' + type][i]));
+ }
+
+ return $(window).trigger('resize.fndtn.interchange');
+ },
+
+ convert_directive : function (directive) {
+
+ var trimmed = this.trim(directive);
+
+ if (trimmed.length > 0) {
+ return trimmed;
+ }
+
+ return 'replace';
+ },
+
+ parse_scenario : function (scenario) {
+ // This logic had to be made more complex since some users were using commas in the url path
+ // So we cannot simply just split on a comma
+
+ var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
+ // getting the mq has gotten a bit complicated since we started accounting for several use cases
+ // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios
+ // as nested objects or arrays in F6.
+ // regex: match everything before close parenthesis for mq
+ media_query = scenario[1].match(/(.*)\)/);
+
+ if (directive_match) {
+ var path = directive_match[1],
+ directive = directive_match[2];
+
+ } else {
+ var cached_split = scenario[0].split(/,\s*$/),
+ path = cached_split[0],
+ directive = '';
+ }
+
+ return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])];
+ },
+
+ object : function (el) {
+ var raw_arr = this.parse_data_attr(el),
+ scenarios = [],
+ i = raw_arr.length;
+
+ if (i > 0) {
+ while (i--) {
+ // split array between comma delimited content and mq
+ // regex: comma, optional space, open parenthesis
+ var scenario = raw_arr[i].split(/,\s?\(/);
+
+ if (scenario.length > 1) {
+ var params = this.parse_scenario(scenario);
+ scenarios.push(params);
+ }
+ }
+ }
+
+ return this.store(el, scenarios);
+ },
+
+ store : function (el, scenarios) {
+ var uuid = this.random_str(),
+ current_uuid = el.data(this.add_namespace('uuid', true));
+
+ if (this.cache[current_uuid]) {
+ return this.cache[current_uuid];
+ }
+
+ el.attr(this.add_namespace('data-uuid'), uuid);
+ return this.cache[uuid] = scenarios;
+ },
+
+ trim : function (str) {
+
+ if (typeof str === 'string') {
+ return $.trim(str);
+ }
+
+ return str;
+ },
+
+ set_data_attr : function (init) {
+ if (init) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + this.settings.load_attr;
+ }
+
+ return this.settings.load_attr;
+ }
+
+ if (this.namespace.length > 0) {
+ return 'data-' + this.namespace + '-' + this.settings.load_attr;
+ }
+
+ return 'data-' + this.settings.load_attr;
+ },
+
+ parse_data_attr : function (el) {
+ var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
+ i = raw.length,
+ output = [];
+
+ while (i--) {
+ if (raw[i].replace(/[\W\d]+/, '').length > 4) {
+ output.push(raw[i]);
+ }
+ }
+
+ return output;
+ },
+
+ reflow : function () {
+ this.load('images', true);
+ this.load('nodes', true);
+ }
+
+ };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ var Modernizr = Modernizr || false;
+
+ Foundation.libs.joyride = {
+ name : 'joyride',
+
+ version : '5.5.3',
+
+ defaults : {
+ expose : false, // turn on or off the expose feature
+ modal : true, // Whether to cover page with modal during the tour
+ keyboard : true, // enable left, right and esc keystrokes
+ tip_location : 'bottom', // 'top', 'bottom', 'left' or 'right' in relation to parent
+ nub_position : 'auto', // override on a per tooltip bases
+ scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation
+ scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.
+ timer : 0, // 0 = no timer , all other numbers = timer in milliseconds
+ start_timer_on_click : true, // true or false - true requires clicking the first button start the timer
+ start_offset : 0, // the index of the tooltip you want to start on (index of the li)
+ next_button : true, // true or false to control whether a next button is used
+ prev_button : true, // true or false to control whether a prev button is used
+ tip_animation : 'fade', // 'pop' or 'fade' in each tip
+ pause_after : [], // array of indexes where to pause the tour after
+ exposed : [], // array of expose elements
+ tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
+ cookie_monster : false, // true or false to control whether cookies are used
+ cookie_name : 'joyride', // Name the cookie you'll use
+ cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
+ cookie_expires : 365, // set when you would like the cookie to expire.
+ tip_container : 'body', // Where will the tip be attached
+ abort_on_close : true, // When true, the close event will not fire any callback
+ tip_location_patterns : {
+ top : ['bottom'],
+ bottom : [], // bottom should not need to be repositioned
+ left : ['right', 'top', 'bottom'],
+ right : ['left', 'top', 'bottom']
+ },
+ post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete)
+ post_step_callback : function () {}, // A method to call after each step
+ pre_step_callback : function () {}, // A method to call before each step
+ pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element)
+ post_expose_callback : function () {}, // A method to call after an element has been exposed
+ template : { // HTML segments for tip layout
+ link : '<a href="#close" class="joyride-close-tip">×</a>',
+ timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
+ tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
+ wrapper : '<div class="joyride-content-wrapper"></div>',
+ button : '<a href="#" class="small button joyride-next-tip"></a>',
+ prev_button : '<a href="#" class="small button joyride-prev-tip"></a>',
+ modal : '<div class="joyride-modal-bg"></div>',
+ expose : '<div class="joyride-expose-wrapper"></div>',
+ expose_cover : '<div class="joyride-expose-cover"></div>'
+ },
+ expose_add_class : '' // One or more space-separated class names to be added to exposed element
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle random_str');
+
+ this.settings = this.settings || $.extend({}, this.defaults, (options || method));
+
+ this.bindings(method, options)
+ },
+
+ go_next : function () {
+ if (this.settings.$li.next().length < 1) {
+ this.end();
+ } else if (this.settings.timer > 0) {
+ clearTimeout(this.settings.automate);
+ this.hide();
+ this.show();
+ this.startTimer();
+ } else {
+ this.hide();
+ this.show();
+ }
+ },
+
+ go_prev : function () {
+ if (this.settings.$li.prev().length < 1) {
+ // Do nothing if there are no prev element
+ } else if (this.settings.timer > 0) {
+ clearTimeout(this.settings.automate);
+ this.hide();
+ this.show(null, true);
+ this.startTimer();
+ } else {
+ this.hide();
+ this.show(null, true);
+ }
+ },
+
+ events : function () {
+ var self = this;
+
+ $(this.scope)
+ .off('.joyride')
+ .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
+ e.preventDefault();
+ this.go_next()
+ }.bind(this))
+ .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {
+ e.preventDefault();
+ this.go_prev();
+ }.bind(this))
+
+ .on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
+ e.preventDefault();
+ this.end(this.settings.abort_on_close);
+ }.bind(this))
+
+ .on('keyup.fndtn.joyride', function (e) {
+ // Don't do anything if keystrokes are disabled
+ // or if the joyride is not being shown
+ if (!this.settings.keyboard || !this.settings.riding) {
+ return;
+ }
+
+ switch (e.which) {
+ case 39: // right arrow
+ e.preventDefault();
+ this.go_next();
+ break;
+ case 37: // left arrow
+ e.preventDefault();
+ this.go_prev();
+ break;
+ case 27: // escape
+ e.preventDefault();
+ this.end(this.settings.abort_on_close);
+ }
+ }.bind(this));
+
+ $(window)
+ .off('.joyride')
+ .on('resize.fndtn.joyride', self.throttle(function () {
+ if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {
+ if (self.settings.exposed.length > 0) {
+ var $els = $(self.settings.exposed);
+
+ $els.each(function () {
+ var $this = $(this);
+ self.un_expose($this);
+ self.expose($this);
+ });
+ }
+
+ if (self.is_phone()) {
+ self.pos_phone();
+ } else {
+ self.pos_default(false);
+ }
+ }
+ }, 100));
+ },
+
+ start : function () {
+ var self = this,
+ $this = $('[' + this.attr_name() + ']', this.scope),
+ integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
+ int_settings_count = integer_settings.length;
+
+ if (!$this.length > 0) {
+ return;
+ }
+
+ if (!this.settings.init) {
+ this.events();
+ }
+
+ this.settings = $this.data(this.attr_name(true) + '-init');
+
+ // non configureable settings
+ this.settings.$content_el = $this;
+ this.settings.$body = $(this.settings.tip_container);
+ this.settings.body_offset = $(this.settings.tip_container).position();
+ this.settings.$tip_content = this.settings.$content_el.find('> li');
+ this.settings.paused = false;
+ this.settings.attempts = 0;
+ this.settings.riding = true;
+
+ // can we create cookies?
+ if (typeof $.cookie !== 'function') {
+ this.settings.cookie_monster = false;
+ }
+
+ // generate the tips and insert into dom.
+ if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
+ this.settings.$tip_content.each(function (index) {
+ var $this = $(this);
+ this.settings = $.extend({}, self.defaults, self.data_options($this));
+
+ // Make sure that settings parsed from data_options are integers where necessary
+ var i = int_settings_count;
+ while (i--) {
+ self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
+ }
+ self.create({$li : $this, index : index});
+ });
+
+ // show first tip
+ if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
+ this.show('init');
+ this.startTimer();
+ } else {
+ this.show('init');
+ }
+
+ }
+ },
+
+ resume : function () {
+ this.set_li();
+ this.show();
+ },
+
+ tip_template : function (opts) {
+ var $blank, content;
+
+ opts.tip_class = opts.tip_class || '';
+
+ $blank = $(this.settings.template.tip).addClass(opts.tip_class);
+ content = $.trim($(opts.li).html()) +
+ this.prev_button_text(opts.prev_button_text, opts.index) +
+ this.button_text(opts.button_text) +
+ this.settings.template.link +
+ this.timer_instance(opts.index);
+
+ $blank.append($(this.settings.template.wrapper));
+ $blank.first().attr(this.add_namespace('data-index'), opts.index);
+ $('.joyride-content-wrapper', $blank).append(content);
+
+ return $blank[0];
+ },
+
+ timer_instance : function (index) {
+ var txt;
+
+ if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
+ txt = '';
+ } else {
+ txt = $(this.settings.template.timer)[0].outerHTML;
+ }
+ return txt;
+ },
+
+ button_text : function (txt) {
+ if (this.settings.tip_settings.next_button) {
+ txt = $.trim(txt) || 'Next';
+ txt = $(this.settings.template.button).append(txt)[0].outerHTML;
+ } else {
+ txt = '';
+ }
+ return txt;
+ },
+
+ prev_button_text : function (txt, idx) {
+ if (this.settings.tip_settings.prev_button) {
+ txt = $.trim(txt) || 'Previous';
+
+ // Add the disabled class to the button if it's the first element
+ if (idx == 0) {
+ txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;
+ } else {
+ txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;
+ }
+ } else {
+ txt = '';
+ }
+ return txt;
+ },
+
+ create : function (opts) {
+ this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));
+ var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')),
+ prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')),
+ tipClass = opts.$li.attr('class'),
+ $tip_content = $(this.tip_template({
+ tip_class : tipClass,
+ index : opts.index,
+ button_text : buttonText,
+ prev_button_text : prevButtonText,
+ li : opts.$li
+ }));
+
+ $(this.settings.tip_container).append($tip_content);
+ },
+
+ show : function (init, is_prev) {
+ var $timer = null;
+
+ // are we paused?
+ if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
+
+ // don't go to the next li if the tour was paused
+ if (this.settings.paused) {
+ this.settings.paused = false;
+ } else {
+ this.set_li(init, is_prev);
+ }
+
+ this.settings.attempts = 0;
+
+ if (this.settings.$li.length && this.settings.$target.length > 0) {
+ if (init) { //run when we first start
+ this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
+ if (this.settings.modal) {
+ this.show_modal();
+ }
+ }
+
+ this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
+
+ if (this.settings.modal && this.settings.expose) {
+ this.expose();
+ }
+
+ this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
+
+ this.settings.timer = parseInt(this.settings.timer, 10);
+
+ this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
+
+ // scroll and hide bg if not modal and not expose
+ if (!/body/i.test(this.settings.$target.selector) && !this.settings.expose) {
+ var joyridemodalbg = $('.joyride-modal-bg');
+ if (/pop/i.test(this.settings.tipAnimation)) {
+ joyridemodalbg.hide();
+ } else {
+ joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed);
+ }
+ this.scroll_to();
+ }
+
+ if (this.is_phone()) {
+ this.pos_phone(true);
+ } else {
+ this.pos_default(true);
+ }
+
+ $timer = this.settings.$next_tip.find('.joyride-timer-indicator');
+
+ if (/pop/i.test(this.settings.tip_animation)) {
+
+ $timer.width(0);
+
+ if (this.settings.timer > 0) {
+
+ this.settings.$next_tip.show();
+
+ setTimeout(function () {
+ $timer.animate({
+ width : $timer.parent().width()
+ }, this.settings.timer, 'linear');
+ }.bind(this), this.settings.tip_animation_fade_speed);
+
+ } else {
+ this.settings.$next_tip.show();
+
+ }
+
+ } else if (/fade/i.test(this.settings.tip_animation)) {
+
+ $timer.width(0);
+
+ if (this.settings.timer > 0) {
+
+ this.settings.$next_tip
+ .fadeIn(this.settings.tip_animation_fade_speed)
+ .show();
+
+ setTimeout(function () {
+ $timer.animate({
+ width : $timer.parent().width()
+ }, this.settings.timer, 'linear');
+ }.bind(this), this.settings.tip_animation_fade_speed);
+
+ } else {
+ this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
+ }
+ }
+
+ this.settings.$current_tip = this.settings.$next_tip;
+
+ // skip non-existant targets
+ } else if (this.settings.$li && this.settings.$target.length < 1) {
+
+ this.show(init, is_prev);
+
+ } else {
+
+ this.end();
+
+ }
+ } else {
+
+ this.settings.paused = true;
+
+ }
+
+ },
+
+ is_phone : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ hide : function () {
+ if (this.settings.modal && this.settings.expose) {
+ this.un_expose();
+ }
+
+ if (!this.settings.modal) {
+ $('.joyride-modal-bg').hide();
+ }
+
+ // Prevent scroll bouncing...wait to remove from layout
+ this.settings.$current_tip.css('visibility', 'hidden');
+ setTimeout($.proxy(function () {
+ this.hide();
+ this.css('visibility', 'visible');
+ }, this.settings.$current_tip), 0);
+ this.settings.post_step_callback(this.settings.$li.index(),
+ this.settings.$current_tip);
+ },
+
+ set_li : function (init, is_prev) {
+ if (init) {
+ this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
+ this.set_next_tip();
+ this.settings.$current_tip = this.settings.$next_tip;
+ } else {
+ if (is_prev) {
+ this.settings.$li = this.settings.$li.prev();
+ } else {
+ this.settings.$li = this.settings.$li.next();
+ }
+ this.set_next_tip();
+ }
+
+ this.set_target();
+ },
+
+ set_next_tip : function () {
+ this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index());
+ this.settings.$next_tip.data('closed', '');
+ },
+
+ set_target : function () {
+ var cl = this.settings.$li.attr(this.add_namespace('data-class')),
+ id = this.settings.$li.attr(this.add_namespace('data-id')),
+ $sel = function () {
+ if (id) {
+ return $(document.getElementById(id));
+ } else if (cl) {
+ return $('.' + cl).first();
+ } else {
+ return $('body');
+ }
+ };
+
+ this.settings.$target = $sel();
+ },
+
+ scroll_to : function () {
+ var window_half, tipOffset;
+
+ window_half = $(window).height() / 2;
+ tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
+
+ if (tipOffset != 0) {
+ $('html, body').stop().animate({
+ scrollTop : tipOffset
+ }, this.settings.scroll_speed, 'swing');
+ }
+ },
+
+ paused : function () {
+ return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
+ },
+
+ restart : function () {
+ this.hide();
+ this.settings.$li = undefined;
+ this.show('init');
+ },
+
+ pos_default : function (init) {
+ var $nub = this.settings.$next_tip.find('.joyride-nub'),
+ nub_width = Math.ceil($nub.outerWidth() / 2),
+ nub_height = Math.ceil($nub.outerHeight() / 2),
+ toggle = init || false;
+
+ // tip must not be "display: none" to calculate position
+ if (toggle) {
+ this.settings.$next_tip.css('visibility', 'hidden');
+ this.settings.$next_tip.show();
+ }
+
+ if (!/body/i.test(this.settings.$target.selector)) {
+ var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
+ leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
+
+ if (this.bottom()) {
+ if (this.rtl) {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+ left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
+ } else {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+ left : this.settings.$target.offset().left + leftAdjustment});
+ }
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
+
+ } else if (this.top()) {
+ if (this.rtl) {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+ left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
+ } else {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+ left : this.settings.$target.offset().left + leftAdjustment});
+ }
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
+
+ } else if (this.right()) {
+
+ this.settings.$next_tip.css({
+ top : this.settings.$target.offset().top + topAdjustment,
+ left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
+
+ } else if (this.left()) {
+
+ this.settings.$next_tip.css({
+ top : this.settings.$target.offset().top + topAdjustment,
+ left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
+
+ }
+
+ if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
+
+ $nub.removeClass('bottom')
+ .removeClass('top')
+ .removeClass('right')
+ .removeClass('left');
+
+ this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
+
+ this.settings.attempts++;
+
+ this.pos_default();
+
+ }
+
+ } else if (this.settings.$li.length) {
+
+ this.pos_modal($nub);
+
+ }
+
+ if (toggle) {
+ this.settings.$next_tip.hide();
+ this.settings.$next_tip.css('visibility', 'visible');
+ }
+
+ },
+
+ pos_phone : function (init) {
+ var tip_height = this.settings.$next_tip.outerHeight(),
+ tip_offset = this.settings.$next_tip.offset(),
+ target_height = this.settings.$target.outerHeight(),
+ $nub = $('.joyride-nub', this.settings.$next_tip),
+ nub_height = Math.ceil($nub.outerHeight() / 2),
+ toggle = init || false;
+
+ $nub.removeClass('bottom')
+ .removeClass('top')
+ .removeClass('right')
+ .removeClass('left');
+
+ if (toggle) {
+ this.settings.$next_tip.css('visibility', 'hidden');
+ this.settings.$next_tip.show();
+ }
+
+ if (!/body/i.test(this.settings.$target.selector)) {
+
+ if (this.top()) {
+
+ this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height});
+ $nub.addClass('bottom');
+
+ } else {
+
+ this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height});
+ $nub.addClass('top');
+
+ }
+
+ } else if (this.settings.$li.length) {
+ this.pos_modal($nub);
+ }
+
+ if (toggle) {
+ this.settings.$next_tip.hide();
+ this.settings.$next_tip.css('visibility', 'visible');
+ }
+ },
+
+ pos_modal : function ($nub) {
+ this.center();
+ $nub.hide();
+
+ this.show_modal();
+ },
+
+ show_modal : function () {
+ if (!this.settings.$next_tip.data('closed')) {
+ var joyridemodalbg = $('.joyride-modal-bg');
+ if (joyridemodalbg.length < 1) {
+ var joyridemodalbg = $(this.settings.template.modal);
+ joyridemodalbg.appendTo('body');
+ }
+
+ if (/pop/i.test(this.settings.tip_animation)) {
+ joyridemodalbg.show();
+ } else {
+ joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
+ }
+ }
+ },
+
+ expose : function () {
+ var expose,
+ exposeCover,
+ el,
+ origCSS,
+ origClasses,
+ randId = 'expose-' + this.random_str(6);
+
+ if (arguments.length > 0 && arguments[0] instanceof $) {
+ el = arguments[0];
+ } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+ el = this.settings.$target;
+ } else {
+ return false;
+ }
+
+ if (el.length < 1) {
+ if (window.console) {
+ console.error('element not valid', el);
+ }
+ return false;
+ }
+
+ expose = $(this.settings.template.expose);
+ this.settings.$body.append(expose);
+ expose.css({
+ top : el.offset().top,
+ left : el.offset().left,
+ width : el.outerWidth(true),
+ height : el.outerHeight(true)
+ });
+
+ exposeCover = $(this.settings.template.expose_cover);
+
+ origCSS = {
+ zIndex : el.css('z-index'),
+ position : el.css('position')
+ };
+
+ origClasses = el.attr('class') == null ? '' : el.attr('class');
+
+ el.css('z-index', parseInt(expose.css('z-index')) + 1);
+
+ if (origCSS.position == 'static') {
+ el.css('position', 'relative');
+ }
+
+ el.data('expose-css', origCSS);
+ el.data('orig-class', origClasses);
+ el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
+
+ exposeCover.css({
+ top : el.offset().top,
+ left : el.offset().left,
+ width : el.outerWidth(true),
+ height : el.outerHeight(true)
+ });
+
+ if (this.settings.modal) {
+ this.show_modal();
+ }
+
+ this.settings.$body.append(exposeCover);
+ expose.addClass(randId);
+ exposeCover.addClass(randId);
+ el.data('expose', randId);
+ this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
+ this.add_exposed(el);
+ },
+
+ un_expose : function () {
+ var exposeId,
+ el,
+ expose,
+ origCSS,
+ origClasses,
+ clearAll = false;
+
+ if (arguments.length > 0 && arguments[0] instanceof $) {
+ el = arguments[0];
+ } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+ el = this.settings.$target;
+ } else {
+ return false;
+ }
+
+ if (el.length < 1) {
+ if (window.console) {
+ console.error('element not valid', el);
+ }
+ return false;
+ }
+
+ exposeId = el.data('expose');
+ expose = $('.' + exposeId);
+
+ if (arguments.length > 1) {
+ clearAll = arguments[1];
+ }
+
+ if (clearAll === true) {
+ $('.joyride-expose-wrapper,.joyride-expose-cover').remove();
+ } else {
+ expose.remove();
+ }
+
+ origCSS = el.data('expose-css');
+
+ if (origCSS.zIndex == 'auto') {
+ el.css('z-index', '');
+ } else {
+ el.css('z-index', origCSS.zIndex);
+ }
+
+ if (origCSS.position != el.css('position')) {
+ if (origCSS.position == 'static') {// this is default, no need to set it.
+ el.css('position', '');
+ } else {
+ el.css('position', origCSS.position);
+ }
+ }
+
+ origClasses = el.data('orig-class');
+ el.attr('class', origClasses);
+ el.removeData('orig-classes');
+
+ el.removeData('expose');
+ el.removeData('expose-z-index');
+ this.remove_exposed(el);
+ },
+
+ add_exposed : function (el) {
+ this.settings.exposed = this.settings.exposed || [];
+ if (el instanceof $ || typeof el === 'object') {
+ this.settings.exposed.push(el[0]);
+ } else if (typeof el == 'string') {
+ this.settings.exposed.push(el);
+ }
+ },
+
+ remove_exposed : function (el) {
+ var search, i;
+ if (el instanceof $) {
+ search = el[0]
+ } else if (typeof el == 'string') {
+ search = el;
+ }
+
+ this.settings.exposed = this.settings.exposed || [];
+ i = this.settings.exposed.length;
+
+ while (i--) {
+ if (this.settings.exposed[i] == search) {
+ this.settings.exposed.splice(i, 1);
+ return;
+ }
+ }
+ },
+
+ center : function () {
+ var $w = $(window);
+
+ this.settings.$next_tip.css({
+ top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
+ left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
+ });
+
+ return true;
+ },
+
+ bottom : function () {
+ return /bottom/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ top : function () {
+ return /top/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ right : function () {
+ return /right/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ left : function () {
+ return /left/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ corners : function (el) {
+ if (el.length === 0) {
+ return [false, false, false, false];
+ }
+
+ var w = $(window),
+ window_half = w.height() / 2,
+ //using this to calculate since scroll may not have finished yet.
+ tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
+ right = w.width() + w.scrollLeft(),
+ offsetBottom = w.height() + tipOffset,
+ bottom = w.height() + w.scrollTop(),
+ top = w.scrollTop();
+
+ if (tipOffset < top) {
+ if (tipOffset < 0) {
+ top = 0;
+ } else {
+ top = tipOffset;
+ }
+ }
+
+ if (offsetBottom > bottom) {
+ bottom = offsetBottom;
+ }
+
+ return [
+ el.offset().top < top,
+ right < el.offset().left + el.outerWidth(),
+ bottom < el.offset().top + el.outerHeight(),
+ w.scrollLeft() > el.offset().left
+ ];
+ },
+
+ visible : function (hidden_corners) {
+ var i = hidden_corners.length;
+
+ while (i--) {
+ if (hidden_corners[i]) {
+ return false;
+ }
+ }
+
+ return true;
+ },
+
+ nub_position : function (nub, pos, def) {
+ if (pos === 'auto') {
+ nub.addClass(def);
+ } else {
+ nub.addClass(pos);
+ }
+ },
+
+ startTimer : function () {
+ if (this.settings.$li.length) {
+ this.settings.automate = setTimeout(function () {
+ this.hide();
+ this.show();
+ this.startTimer();
+ }.bind(this), this.settings.timer);
+ } else {
+ clearTimeout(this.settings.automate);
+ }
+ },
+
+ end : function (abort) {
+ if (this.settings.cookie_monster) {
+ $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain});
+ }
+
+ if (this.settings.timer > 0) {
+ clearTimeout(this.settings.automate);
+ }
+
+ if (this.settings.modal && this.settings.expose) {
+ this.un_expose();
+ }
+
+ // Unplug keystrokes listener
+ $(this.scope).off('keyup.joyride')
+
+ this.settings.$next_tip.data('closed', true);
+ this.settings.riding = false;
+
+ $('.joyride-modal-bg').hide();
+ this.settings.$current_tip.hide();
+
+ if (typeof abort === 'undefined' || abort === false) {
+ this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
+ this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
+ }
+
+ $('.joyride-tip-guide').remove();
+ },
+
+ off : function () {
+ $(this.scope).off('.joyride');
+ $(window).off('.joyride');
+ $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
+ $('.joyride-tip-guide, .joyride-modal-bg').remove();
+ clearTimeout(this.settings.automate);
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs['magellan-expedition'] = {
+ name : 'magellan-expedition',
+
+ version : '5.5.3',
+
+ settings : {
+ active_class : 'active',
+ threshold : 0, // pixels from the top of the expedition for it to become fixes
+ destination_threshold : 20, // pixels from the top of destination for it to be considered active
+ throttle_delay : 30, // calculation throttling to increase framerate
+ fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll
+ offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side.
+ duration : 700, // animation duration time
+ easing : 'swing' // animation easing
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+ this.bindings(method, options);
+ },
+
+ events : function () {
+ var self = this,
+ S = self.S,
+ settings = self.settings;
+
+ // initialize expedition offset
+ self.set_expedition_position();
+
+ S(self.scope)
+ .off('.magellan')
+ .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href*=#]', function (e) {
+ var sameHost = ((this.hostname === location.hostname) || !this.hostname),
+ samePath = self.filterPathname(location.pathname) === self.filterPathname(this.pathname),
+ testHash = this.hash.replace(/(:|\.|\/)/g, '\\$1'),
+ anchor = this;
+
+ if (sameHost && samePath && testHash) {
+ e.preventDefault();
+ var expedition = $(this).closest('[' + self.attr_name() + ']'),
+ settings = expedition.data('magellan-expedition-init'),
+ hash = this.hash.split('#').join(''),
+ target = $('a[name="' + hash + '"]');
+
+ if (target.length === 0) {
+ target = $('#' + hash);
+
+ }
+
+ // Account for expedition height if fixed position
+ var scroll_top = target.offset().top - settings.destination_threshold + 1;
+ if (settings.offset_by_height) {
+ scroll_top = scroll_top - expedition.outerHeight();
+ }
+ $('html, body').stop().animate({
+ 'scrollTop' : scroll_top
+ }, settings.duration, settings.easing, function () {
+ if (history.pushState) {
+ history.pushState(null, null, anchor.pathname + anchor.search + '#' + hash);
+ } else {
+ location.hash = anchor.pathname + anchor.search + '#' + hash;
+ }
+ });
+ }
+ })
+ .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
+ },
+
+ check_for_arrivals : function () {
+ var self = this;
+ self.update_arrivals();
+ self.update_expedition_positions();
+ },
+
+ set_expedition_position : function () {
+ var self = this;
+ $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) {
+ var expedition = $(this),
+ settings = expedition.data('magellan-expedition-init'),
+ styles = expedition.attr('styles'), // save styles
+ top_offset, fixed_top;
+
+ expedition.attr('style', '');
+ top_offset = expedition.offset().top + settings.threshold;
+
+ //set fixed-top by attribute
+ fixed_top = parseInt(expedition.data('magellan-fixed-top'));
+ if (!isNaN(fixed_top)) {
+ self.settings.fixed_top = fixed_top;
+ }
+
+ expedition.data(self.data_attr('magellan-top-offset'), top_offset);
+ expedition.attr('style', styles);
+ });
+ },
+
+ update_expedition_positions : function () {
+ var self = this,
+ window_top_offset = $(window).scrollTop();
+
+ $('[' + this.attr_name() + '=fixed]', self.scope).each(function () {
+ var expedition = $(this),
+ settings = expedition.data('magellan-expedition-init'),
+ styles = expedition.attr('style'), // save styles
+ top_offset = expedition.data('magellan-top-offset');
+
+ //scroll to the top distance
+ if (window_top_offset + self.settings.fixed_top >= top_offset) {
+ // Placeholder allows height calculations to be consistent even when
+ // appearing to switch between fixed/non-fixed placement
+ var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
+ if (placeholder.length === 0) {
+ placeholder = expedition.clone();
+ placeholder.removeAttr(self.attr_name());
+ placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), '');
+ expedition.before(placeholder);
+ }
+ expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed');
+ } else {
+ expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
+ expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed');
+ }
+ });
+ },
+
+ update_arrivals : function () {
+ var self = this,
+ window_top_offset = $(window).scrollTop();
+
+ $('[' + this.attr_name() + ']', self.scope).each(function () {
+ var expedition = $(this),
+ settings = expedition.data(self.attr_name(true) + '-init'),
+ offsets = self.offsets(expedition, window_top_offset),
+ arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
+ active_item = false;
+ offsets.each(function (idx, item) {
+ if (item.viewport_offset >= item.top_offset) {
+ var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
+ arrivals.not(item.arrival).removeClass(settings.active_class);
+ item.arrival.addClass(settings.active_class);
+ active_item = true;
+ return true;
+ }
+ });
+
+ if (!active_item) {
+ arrivals.removeClass(settings.active_class);
+ }
+ });
+ },
+
+ offsets : function (expedition, window_offset) {
+ var self = this,
+ settings = expedition.data(self.attr_name(true) + '-init'),
+ viewport_offset = window_offset;
+
+ return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) {
+ var name = $(this).data(self.data_attr('magellan-arrival')),
+ dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
+ if (dest.length > 0) {
+ var top_offset = dest.offset().top - settings.destination_threshold;
+ if (settings.offset_by_height) {
+ top_offset = top_offset - expedition.outerHeight();
+ }
+ top_offset = Math.floor(top_offset);
+ return {
+ destination : dest,
+ arrival : $(this),
+ top_offset : top_offset,
+ viewport_offset : viewport_offset
+ }
+ }
+ }).sort(function (a, b) {
+ if (a.top_offset < b.top_offset) {
+ return -1;
+ }
+ if (a.top_offset > b.top_offset) {
+ return 1;
+ }
+ return 0;
+ });
+ },
+
+ data_attr : function (str) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + str;
+ }
+
+ return str;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.magellan');
+ this.S(window).off('.magellan');
+ },
+
+ filterPathname : function (pathname) {
+ pathname = pathname || '';
+ return pathname
+ .replace(/^\//,'')
+ .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'')
+ .replace(/\/$/,'');
+ },
+
+ reflow : function () {
+ var self = this;
+ // remove placeholder expeditions used for height calculation purposes
+ $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
+ }
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.offcanvas = {
+ name : 'offcanvas',
+
+ version : '5.5.3',
+
+ settings : {
+ open_method : 'move',
+ close_on_click : false
+ },
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function () {
+ var self = this,
+ S = self.S,
+ move_class = '',
+ right_postfix = '',
+ left_postfix = '',
+ top_postfix = '',
+ bottom_postfix = '';
+
+ if (this.settings.open_method === 'move') {
+ move_class = 'move-';
+ right_postfix = 'right';
+ left_postfix = 'left';
+ top_postfix = 'top';
+ bottom_postfix = 'bottom';
+ } else if (this.settings.open_method === 'overlap_single') {
+ move_class = 'offcanvas-overlap-';
+ right_postfix = 'right';
+ left_postfix = 'left';
+ top_postfix = 'top';
+ bottom_postfix = 'bottom';
+ } else if (this.settings.open_method === 'overlap') {
+ move_class = 'offcanvas-overlap';
+ }
+
+ S(this.scope).off('.offcanvas')
+ .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + right_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.left-submenu').removeClass(move_class + right_postfix);
+ }
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + right_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + right_postfix);
+ }
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of left canvas
+ .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + left_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.right-submenu').removeClass(move_class + left_postfix);
+ }
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + left_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + left_postfix);
+ }
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of right canvas
+ .on('click.fndtn.offcanvas', '.top-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + bottom_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.top-submenu').removeClass(move_class + bottom_postfix);
+ }
+ $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.top-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + bottom_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + bottom_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.top-submenu').toggleClass(move_class + bottom_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + bottom_postfix);
+ }
+ $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of top canvas
+ .on('click.fndtn.offcanvas', '.bottom-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + top_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.bottom-submenu').removeClass(move_class + top_postfix);
+ }
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.bottom-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + top_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + top_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.bottom-submenu').toggleClass(move_class + top_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + top_postfix);
+ }
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of bottom
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + left_postfix);
+ S('.right-submenu').removeClass(move_class + left_postfix);
+ if (right_postfix) {
+ self.click_remove_class(e, move_class + right_postfix);
+ S('.left-submenu').removeClass(move_class + left_postfix);
+ }
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + left_postfix);
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'false');
+ if (right_postfix) {
+ self.click_remove_class(e, move_class + right_postfix);
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'false');
+ }
+ })
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + top_postfix);
+ S('.bottom-submenu').removeClass(move_class + top_postfix);
+ if (bottom_postfix) {
+ self.click_remove_class(e, move_class + bottom_postfix);
+ S('.top-submenu').removeClass(move_class + top_postfix);
+ }
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + top_postfix);
+ $('.top-off-canvas-toggle').attr('aria-expanded', 'false');
+ if (bottom_postfix) {
+ self.click_remove_class(e, move_class + bottom_postfix);
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'false');
+ }
+ });
+ },
+
+ toggle : function (class_name, $off_canvas) {
+ $off_canvas = $off_canvas || this.get_wrapper();
+ if ($off_canvas.is('.' + class_name)) {
+ this.hide(class_name, $off_canvas);
+ } else {
+ this.show(class_name, $off_canvas);
+ }
+ },
+
+ show : function (class_name, $off_canvas) {
+ $off_canvas = $off_canvas || this.get_wrapper();
+ $off_canvas.trigger('open.fndtn.offcanvas');
+ $off_canvas.addClass(class_name);
+ },
+
+ hide : function (class_name, $off_canvas) {
+ $off_canvas = $off_canvas || this.get_wrapper();
+ $off_canvas.trigger('close.fndtn.offcanvas');
+ $off_canvas.removeClass(class_name);
+ },
+
+ click_toggle_class : function (e, class_name) {
+ e.preventDefault();
+ var $off_canvas = this.get_wrapper(e);
+ this.toggle(class_name, $off_canvas);
+ },
+
+ click_remove_class : function (e, class_name) {
+ e.preventDefault();
+ var $off_canvas = this.get_wrapper(e);
+ this.hide(class_name, $off_canvas);
+ },
+
+ get_settings : function (e) {
+ var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');
+ return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
+ },
+
+ get_wrapper : function (e) {
+ var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
+
+ if ($off_canvas.length === 0) {
+ $off_canvas = this.S('.off-canvas-wrap');
+ }
+ return $off_canvas;
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ var noop = function () {};
+
+ var Orbit = function (el, settings) {
+ // Don't reinitialize plugin
+ if (el.hasClass(settings.slides_container_class)) {
+ return this;
+ }
+
+ var self = this,
+ container,
+ slides_container = el,
+ number_container,
+ bullets_container,
+ timer_container,
+ idx = 0,
+ animate,
+ timer,
+ locked = false,
+ adjust_height_after = false;
+
+ self.slides = function () {
+ return slides_container.children(settings.slide_selector);
+ };
+
+ self.slides().first().addClass(settings.active_slide_class);
+
+ self.update_slide_number = function (index) {
+ if (settings.slide_number) {
+ number_container.find('span:first').text(parseInt(index) + 1);
+ number_container.find('span:last').text(self.slides().length);
+ }
+ if (settings.bullets) {
+ bullets_container.children().removeClass(settings.bullets_active_class);
+ $(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
+ }
+ };
+
+ self.update_active_link = function (index) {
+ var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]');
+ link.siblings().removeClass(settings.bullets_active_class);
+ link.addClass(settings.bullets_active_class);
+ };
+
+ self.build_markup = function () {
+ slides_container.wrap('<div class="' + settings.container_class + '"></div>');
+ container = slides_container.parent();
+ slides_container.addClass(settings.slides_container_class);
+
+ if (settings.stack_on_small) {
+ container.addClass(settings.stack_on_small_class);
+ }
+
+ if (settings.navigation_arrows) {
+ container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
+ container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
+ }
+
+ if (settings.timer) {
+ timer_container = $('<div>').addClass(settings.timer_container_class);
+ timer_container.append('<span>');
+ timer_container.append($('<div>').addClass(settings.timer_progress_class));
+ timer_container.addClass(settings.timer_paused_class);
+ container.append(timer_container);
+ }
+
+ if (settings.slide_number) {
+ number_container = $('<div>').addClass(settings.slide_number_class);
+ number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
+ container.append(number_container);
+ }
+
+ if (settings.bullets) {
+ bullets_container = $('<ol>').addClass(settings.bullets_container_class);
+ container.append(bullets_container);
+ bullets_container.wrap('<div class="orbit-bullets-container"></div>');
+ self.slides().each(function (idx, el) {
+ var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);;
+ bullets_container.append(bullet);
+ });
+ }
+
+ };
+
+ self._goto = function (next_idx, start_timer) {
+ // if (locked) {return false;}
+ if (next_idx === idx) {return false;}
+ if (typeof timer === 'object') {timer.restart();}
+ var slides = self.slides();
+
+ var dir = 'next';
+ locked = true;
+ if (next_idx < idx) {dir = 'prev';}
+ if (next_idx >= slides.length) {
+ if (!settings.circular) {
+ return false;
+ }
+ next_idx = 0;
+ } else if (next_idx < 0) {
+ if (!settings.circular) {
+ return false;
+ }
+ next_idx = slides.length - 1;
+ }
+
+ var current = $(slides.get(idx));
+ var next = $(slides.get(next_idx));
+
+ current.css('zIndex', 2);
+ current.removeClass(settings.active_slide_class);
+ next.css('zIndex', 4).addClass(settings.active_slide_class);
+
+ slides_container.trigger('before-slide-change.fndtn.orbit');
+ settings.before_slide_change();
+ self.update_active_link(next_idx);
+
+ var callback = function () {
+ var unlock = function () {
+ idx = next_idx;
+ locked = false;
+ if (start_timer === true) {timer = self.create_timer(); timer.start();}
+ self.update_slide_number(idx);
+ slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]);
+ settings.after_slide_change(idx, slides.length);
+ };
+ if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) {
+ slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock);
+ } else {
+ unlock();
+ }
+ };
+
+ if (slides.length === 1) {callback(); return false;}
+
+ var start_animation = function () {
+ if (dir === 'next') {animate.next(current, next, callback);}
+ if (dir === 'prev') {animate.prev(current, next, callback);}
+ };
+
+ if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) {
+ slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation);
+ } else {
+ start_animation();
+ }
+ };
+
+ self.next = function (e) {
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ self._goto(idx + 1);
+ };
+
+ self.prev = function (e) {
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ self._goto(idx - 1);
+ };
+
+ self.link_custom = function (e) {
+ e.preventDefault();
+ var link = $(this).attr('data-orbit-link');
+ if ((typeof link === 'string') && (link = $.trim(link)) != '') {
+ var slide = container.find('[data-orbit-slide=' + link + ']');
+ if (slide.index() != -1) {self._goto(slide.index());}
+ }
+ };
+
+ self.link_bullet = function (e) {
+ var index = $(this).attr('data-orbit-slide');
+ if ((typeof index === 'string') && (index = $.trim(index)) != '') {
+ if (isNaN(parseInt(index))) {
+ var slide = container.find('[data-orbit-slide=' + index + ']');
+ if (slide.index() != -1) {self._goto(slide.index() + 1);}
+ } else {
+ self._goto(parseInt(index));
+ }
+ }
+
+ }
+
+ self.timer_callback = function () {
+ self._goto(idx + 1, true);
+ }
+
+ self.compute_dimensions = function () {
+ var current = $(self.slides().get(idx));
+ var h = current.outerHeight();
+ if (!settings.variable_height) {
+ self.slides().each(function(){
+ if ($(this).outerHeight() > h) { h = $(this).outerHeight(); }
+ });
+ }
+ slides_container.height(h);
+ };
+
+ self.create_timer = function () {
+ var t = new Timer(
+ container.find('.' + settings.timer_container_class),
+ settings,
+ self.timer_callback
+ );
+ return t;
+ };
+
+ self.stop_timer = function () {
+ if (typeof timer === 'object') {
+ timer.stop();
+ }
+ };
+
+ self.toggle_timer = function () {
+ var t = container.find('.' + settings.timer_container_class);
+ if (t.hasClass(settings.timer_paused_class)) {
+ if (typeof timer === 'undefined') {timer = self.create_timer();}
+ timer.start();
+ } else {
+ if (typeof timer === 'object') {timer.stop();}
+ }
+ };
+
+ self.init = function () {
+ self.build_markup();
+ if (settings.timer) {
+ timer = self.create_timer();
+ Foundation.utils.image_loaded(this.slides().children('img'), timer.start);
+ }
+ animate = new FadeAnimation(settings, slides_container);
+ if (settings.animation === 'slide') {
+ animate = new SlideAnimation(settings, slides_container);
+ }
+
+ container.on('click', '.' + settings.next_class, self.next);
+ container.on('click', '.' + settings.prev_class, self.prev);
+
+ if (settings.next_on_click) {
+ container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet);
+ }
+
+ container.on('click', self.toggle_timer);
+ if (settings.swipe) {
+ container.on('touchstart.fndtn.orbit', function (e) {
+ if (!e.touches) {e = e.originalEvent;}
+ var data = {
+ start_page_x : e.touches[0].pageX,
+ start_page_y : e.touches[0].pageY,
+ start_time : (new Date()).getTime(),
+ delta_x : 0,
+ is_scrolling : undefined
+ };
+ container.data('swipe-transition', data);
+ e.stopPropagation();
+ })
+ .on('touchmove.fndtn.orbit', function (e) {
+ if (!e.touches) {
+ e = e.originalEvent;
+ }
+ // Ignore pinch/zoom events
+ if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+ return;
+ }
+
+ var data = container.data('swipe-transition');
+ if (typeof data === 'undefined') {data = {};}
+
+ data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+ if ( typeof data.is_scrolling === 'undefined') {
+ data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+ }
+
+ if (!data.is_scrolling && !data.active) {
+ e.preventDefault();
+ var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1);
+ data.active = true;
+ self._goto(direction);
+ }
+ })
+ .on('touchend.fndtn.orbit', function (e) {
+ container.data('swipe-transition', {});
+ e.stopPropagation();
+ })
+ }
+ container.on('mouseenter.fndtn.orbit', function (e) {
+ if (settings.timer && settings.pause_on_hover) {
+ self.stop_timer();
+ }
+ })
+ .on('mouseleave.fndtn.orbit', function (e) {
+ if (settings.timer && settings.resume_on_mouseout) {
+ timer.start();
+ }
+ });
+
+ $(document).on('click', '[data-orbit-link]', self.link_custom);
+ $(window).on('load resize', self.compute_dimensions);
+ Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);
+ Foundation.utils.image_loaded(this.slides().children('img'), function () {
+ container.prev('.' + settings.preloader_class).css('display', 'none');
+ self.update_slide_number(0);
+ self.update_active_link(0);
+ slides_container.trigger('ready.fndtn.orbit');
+ });
+ };
+
+ self.init();
+ };
+
+ var Timer = function (el, settings, callback) {
+ var self = this,
+ duration = settings.timer_speed,
+ progress = el.find('.' + settings.timer_progress_class),
+ start,
+ timeout,
+ left = -1;
+
+ this.update_progress = function (w) {
+ var new_progress = progress.clone();
+ new_progress.attr('style', '');
+ new_progress.css('width', w + '%');
+ progress.replaceWith(new_progress);
+ progress = new_progress;
+ };
+
+ this.restart = function () {
+ clearTimeout(timeout);
+ el.addClass(settings.timer_paused_class);
+ left = -1;
+ self.update_progress(0);
+ };
+
+ this.start = function () {
+ if (!el.hasClass(settings.timer_paused_class)) {return true;}
+ left = (left === -1) ? duration : left;
+ el.removeClass(settings.timer_paused_class);
+ start = new Date().getTime();
+ progress.animate({'width' : '100%'}, left, 'linear');
+ timeout = setTimeout(function () {
+ self.restart();
+ callback();
+ }, left);
+ el.trigger('timer-started.fndtn.orbit')
+ };
+
+ this.stop = function () {
+ if (el.hasClass(settings.timer_paused_class)) {return true;}
+ clearTimeout(timeout);
+ el.addClass(settings.timer_paused_class);
+ var end = new Date().getTime();
+ left = left - (end - start);
+ var w = 100 - ((left / duration) * 100);
+ self.update_progress(w);
+ el.trigger('timer-stopped.fndtn.orbit');
+ };
+ };
+
+ var SlideAnimation = function (settings, container) {
+ var duration = settings.animation_speed;
+ var is_rtl = ($('html[dir=rtl]').length === 1);
+ var margin = is_rtl ? 'marginRight' : 'marginLeft';
+ var animMargin = {};
+ animMargin[margin] = '0%';
+
+ this.next = function (current, next, callback) {
+ current.animate({marginLeft : '-100%'}, duration);
+ next.animate(animMargin, duration, function () {
+ current.css(margin, '100%');
+ callback();
+ });
+ };
+
+ this.prev = function (current, prev, callback) {
+ current.animate({marginLeft : '100%'}, duration);
+ prev.css(margin, '-100%');
+ prev.animate(animMargin, duration, function () {
+ current.css(margin, '100%');
+ callback();
+ });
+ };
+ };
+
+ var FadeAnimation = function (settings, container) {
+ var duration = settings.animation_speed;
+ var is_rtl = ($('html[dir=rtl]').length === 1);
+ var margin = is_rtl ? 'marginRight' : 'marginLeft';
+
+ this.next = function (current, next, callback) {
+ next.css({'margin' : '0%', 'opacity' : '0.01'});
+ next.animate({'opacity' :'1'}, duration, 'linear', function () {
+ current.css('margin', '100%');
+ callback();
+ });
+ };
+
+ this.prev = function (current, prev, callback) {
+ prev.css({'margin' : '0%', 'opacity' : '0.01'});
+ prev.animate({'opacity' : '1'}, duration, 'linear', function () {
+ current.css('margin', '100%');
+ callback();
+ });
+ };
+ };
+
+ Foundation.libs = Foundation.libs || {};
+
+ Foundation.libs.orbit = {
+ name : 'orbit',
+
+ version : '5.5.3',
+
+ settings : {
+ animation : 'slide',
+ timer_speed : 10000,
+ pause_on_hover : true,
+ resume_on_mouseout : false,
+ next_on_click : true,
+ animation_speed : 500,
+ stack_on_small : false,
+ navigation_arrows : true,
+ slide_number : true,
+ slide_number_text : 'of',
+ container_class : 'orbit-container',
+ stack_on_small_class : 'orbit-stack-on-small',
+ next_class : 'orbit-next',
+ prev_class : 'orbit-prev',
+ timer_container_class : 'orbit-timer',
+ timer_paused_class : 'paused',
+ timer_progress_class : 'orbit-progress',
+ slides_container_class : 'orbit-slides-container',
+ preloader_class : 'preloader',
+ slide_selector : '*',
+ bullets_container_class : 'orbit-bullets',
+ bullets_active_class : 'active',
+ slide_number_class : 'orbit-slide-number',
+ caption_class : 'orbit-caption',
+ active_slide_class : 'active',
+ orbit_transition_class : 'orbit-transitioning',
+ bullets : true,
+ circular : true,
+ timer : true,
+ variable_height : false,
+ swipe : true,
+ before_slide_change : noop,
+ after_slide_change : noop
+ },
+
+ init : function (scope, method, options) {
+ var self = this;
+ this.bindings(method, options);
+ },
+
+ events : function (instance) {
+ var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
+ this.S(instance).data(this.name + '-instance', orbit_instance);
+ },
+
+ reflow : function () {
+ var self = this;
+
+ if (self.S(self.scope).is('[data-orbit]')) {
+ var $el = self.S(self.scope);
+ var instance = $el.data(self.name + '-instance');
+ instance.compute_dimensions();
+ } else {
+ self.S('[data-orbit]', self.scope).each(function (idx, el) {
+ var $el = self.S(el);
+ var opts = self.data_options($el);
+ var instance = $el.data(self.name + '-instance');
+ instance.compute_dimensions();
+ });
+ }
+ }
+ };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ var openModals = [];
+
+ Foundation.libs.reveal = {
+ name : 'reveal',
+
+ version : '5.5.3',
+
+ locked : false,
+
+ settings : {
+ animation : 'fadeAndPop',
+ animation_speed : 250,
+ close_on_background_click : true,
+ close_on_esc : true,
+ dismiss_modal_class : 'close-reveal-modal',
+ multiple_opened : false,
+ bg_class : 'reveal-modal-bg',
+ root_element : 'body',
+ open : function(){},
+ opened : function(){},
+ close : function(){},
+ closed : function(){},
+ on_ajax_error: $.noop,
+ bg : $('.reveal-modal-bg'),
+ css : {
+ open : {
+ 'opacity' : 0,
+ 'visibility' : 'visible',
+ 'display' : 'block'
+ },
+ close : {
+ 'opacity' : 1,
+ 'visibility' : 'hidden',
+ 'display' : 'none'
+ }
+ }
+ },
+
+ init : function (scope, method, options) {
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .off('.reveal')
+ .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {
+ e.preventDefault();
+
+ if (!self.locked) {
+ var element = S(this),
+ ajax = element.data(self.data_attr('reveal-ajax')),
+ replaceContentSel = element.data(self.data_attr('reveal-replace-content'));
+
+ self.locked = true;
+
+ if (typeof ajax === 'undefined') {
+ self.open.call(self, element);
+ } else {
+ var url = ajax === true ? element.attr('href') : ajax;
+ self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel });
+ }
+ }
+ });
+
+ S(document)
+ .on('click.fndtn.reveal', this.close_targets(), function (e) {
+ e.preventDefault();
+ if (!self.locked) {
+ var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,
+ bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
+
+ if (bg_clicked) {
+ if (settings.close_on_background_click) {
+ e.stopPropagation();
+ } else {
+ return;
+ }
+ }
+
+ self.locked = true;
+ self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']'));
+ }
+ });
+
+ if (S('[' + self.attr_name() + ']', this.scope).length > 0) {
+ S(this.scope)
+ // .off('.reveal')
+ .on('open.fndtn.reveal', this.settings.open)
+ .on('opened.fndtn.reveal', this.settings.opened)
+ .on('opened.fndtn.reveal', this.open_video)
+ .on('close.fndtn.reveal', this.settings.close)
+ .on('closed.fndtn.reveal', this.settings.closed)
+ .on('closed.fndtn.reveal', this.close_video);
+ } else {
+ S(this.scope)
+ // .off('.reveal')
+ .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
+ .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
+ .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
+ .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
+ .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
+ .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
+ }
+
+ return true;
+ },
+
+ // PATCH #3: turning on key up capture only when a reveal window is open
+ key_up_on : function (scope) {
+ var self = this;
+
+ // PATCH #1: fixing multiple keyup event trigger from single key press
+ self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
+ var open_modal = self.S('[' + self.attr_name() + '].open'),
+ settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;
+ // PATCH #2: making sure that the close event can be called only while unlocked,
+ // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
+ if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
+ self.close.call(self, open_modal);
+ }
+ });
+
+ return true;
+ },
+
+ // PATCH #3: turning on key up capture only when a reveal window is open
+ key_up_off : function (scope) {
+ this.S('body').off('keyup.fndtn.reveal');
+ return true;
+ },
+
+ open : function (target, ajax_settings) {
+ var self = this,
+ modal;
+
+ if (target) {
+ if (typeof target.selector !== 'undefined') {
+ // Find the named node; only use the first one found, since the rest of the code assumes there's only one node
+ modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();
+ } else {
+ modal = self.S(this.scope);
+
+ ajax_settings = target;
+ }
+ } else {
+ modal = self.S(this.scope);
+ }
+
+ var settings = modal.data(self.attr_name(true) + '-init');
+ settings = settings || this.settings;
+
+
+ if (modal.hasClass('open') && target !== undefined && target.attr('data-reveal-id') == modal.attr('id')) {
+ return self.close(modal);
+ }
+
+ if (!modal.hasClass('open')) {
+ var open_modal = self.S('[' + self.attr_name() + '].open');
+
+ if (typeof modal.data('css-top') === 'undefined') {
+ modal.data('css-top', parseInt(modal.css('top'), 10))
+ .data('offset', this.cache_offset(modal));
+ }
+
+ modal.attr('tabindex','0').attr('aria-hidden','false');
+
+ this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open
+
+ // Prevent namespace event from triggering twice
+ modal.on('open.fndtn.reveal', function(e) {
+ if (e.namespace !== 'fndtn.reveal') return;
+ });
+
+ modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
+
+ if (open_modal.length < 1) {
+ this.toggle_bg(modal, true);
+ }
+
+ if (typeof ajax_settings === 'string') {
+ ajax_settings = {
+ url : ajax_settings
+ };
+ }
+
+ var openModal = function() {
+ if(open_modal.length > 0) {
+ if(settings.multiple_opened) {
+ self.to_back(open_modal);
+ } else {
+ self.hide(open_modal, settings.css.close);
+ }
+ }
+
+ // bl: add the open_modal that isn't already in the background to the openModals array
+ if(settings.multiple_opened) {
+ openModals.push(modal);
+ }
+
+ self.show(modal, settings.css.open);
+ };
+
+ if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
+ openModal();
+ } else {
+ var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
+ $.extend(ajax_settings, {
+ success : function (data, textStatus, jqXHR) {
+ if ( $.isFunction(old_success) ) {
+ var result = old_success(data, textStatus, jqXHR);
+ if (typeof result == 'string') {
+ data = result;
+ }
+ }
+
+ if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') {
+ modal.find(options.replaceContentSel).html(data);
+ } else {
+ modal.html(data);
+ }
+
+ self.S(modal).foundation('section', 'reflow');
+ self.S(modal).children().foundation();
+
+ openModal();
+ }
+ });
+
+ // check for if user initalized with error callback
+ if (settings.on_ajax_error !== $.noop) {
+ $.extend(ajax_settings, {
+ error : settings.on_ajax_error
+ });
+ }
+
+ $.ajax(ajax_settings);
+ }
+ }
+ self.S(window).trigger('resize');
+ },
+
+ close : function (modal) {
+ var modal = modal && modal.length ? modal : this.S(this.scope),
+ open_modals = this.S('[' + this.attr_name() + '].open'),
+ settings = modal.data(this.attr_name(true) + '-init') || this.settings,
+ self = this;
+
+ if (open_modals.length > 0) {
+
+ modal.removeAttr('tabindex','0').attr('aria-hidden','true');
+
+ this.locked = true;
+ this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open
+
+ modal.trigger('close.fndtn.reveal');
+
+ if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
+ self.toggle_bg(modal, false);
+ self.to_front(modal);
+ }
+
+ if (settings.multiple_opened) {
+ var isCurrent = modal.is(':not(.toback)');
+ self.hide(modal, settings.css.close, settings);
+ if(isCurrent) {
+ // remove the last modal since it is now closed
+ openModals.pop();
+ } else {
+ // if this isn't the current modal, then find it in the array and remove it
+ openModals = $.grep(openModals, function(elt) {
+ var isThis = elt[0]===modal[0];
+ if(isThis) {
+ // since it's not currently in the front, put it in the front now that it is hidden
+ // so that if it's re-opened, it won't be .toback
+ self.to_front(modal);
+ }
+ return !isThis;
+ });
+ }
+ // finally, show the next modal in the stack, if there is one
+ if(openModals.length>0) {
+ self.to_front(openModals[openModals.length - 1]);
+ }
+ } else {
+ self.hide(open_modals, settings.css.close, settings);
+ }
+ }
+ },
+
+ close_targets : function () {
+ var base = '.' + this.settings.dismiss_modal_class;
+
+ if (this.settings.close_on_background_click) {
+ return base + ', .' + this.settings.bg_class;
+ }
+
+ return base;
+ },
+
+ toggle_bg : function (modal, state) {
+ if (this.S('.' + this.settings.bg_class).length === 0) {
+ this.settings.bg = $('<div />', {'class': this.settings.bg_class})
+ .appendTo('body').hide();
+ }
+
+ var visible = this.settings.bg.filter(':visible').length > 0;
+ if ( state != visible ) {
+ if ( state == undefined ? visible : !state ) {
+ this.hide(this.settings.bg);
+ } else {
+ this.show(this.settings.bg);
+ }
+ }
+ },
+
+ show : function (el, css) {
+ // is modal
+ if (css) {
+ var settings = el.data(this.attr_name(true) + '-init') || this.settings,
+ root_element = settings.root_element,
+ context = this;
+
+ if (el.parent(root_element).length === 0) {
+ var placeholder = el.wrap('<div style="display: none;" />').parent();
+
+ el.on('closed.fndtn.reveal.wrapped', function () {
+ el.detach().appendTo(placeholder);
+ el.unwrap().unbind('closed.fndtn.reveal.wrapped');
+ });
+
+ el.detach().appendTo(root_element);
+ }
+
+ var animData = getAnimationData(settings.animation);
+ if (!animData.animate) {
+ this.locked = false;
+ }
+ if (animData.pop) {
+ css.top = $(window).scrollTop() - el.data('offset') + 'px';
+ var end_css = {
+ top: $(window).scrollTop() + el.data('css-top') + 'px',
+ opacity: 1
+ };
+
+ return setTimeout(function () {
+ return el
+ .css(css)
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.trigger('opened.fndtn.reveal');
+ })
+ .addClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ css.top = $(window).scrollTop() + el.data('css-top') + 'px';
+
+ if (animData.fade) {
+ var end_css = {opacity: 1};
+
+ return setTimeout(function () {
+ return el
+ .css(css)
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.trigger('opened.fndtn.reveal');
+ })
+ .addClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal');
+ }
+
+ var settings = this.settings;
+
+ // should we animate the background?
+ if (getAnimationData(settings.animation).fade) {
+ return el.fadeIn(settings.animation_speed / 2);
+ }
+
+ this.locked = false;
+
+ return el.show();
+ },
+
+ to_back : function(el) {
+ el.addClass('toback');
+ },
+
+ to_front : function(el) {
+ el.removeClass('toback');
+ },
+
+ hide : function (el, css) {
+ // is modal
+ if (css) {
+ var settings = el.data(this.attr_name(true) + '-init'),
+ context = this;
+ settings = settings || this.settings;
+
+ var animData = getAnimationData(settings.animation);
+ if (!animData.animate) {
+ this.locked = false;
+ }
+ if (animData.pop) {
+ var end_css = {
+ top: - $(window).scrollTop() - el.data('offset') + 'px',
+ opacity: 0
+ };
+
+ return setTimeout(function () {
+ return el
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.css(css).trigger('closed.fndtn.reveal');
+ })
+ .removeClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ if (animData.fade) {
+ var end_css = {opacity : 0};
+
+ return setTimeout(function () {
+ return el
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.css(css).trigger('closed.fndtn.reveal');
+ })
+ .removeClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal');
+ }
+
+ var settings = this.settings;
+
+ // should we animate the background?
+ if (getAnimationData(settings.animation).fade) {
+ return el.fadeOut(settings.animation_speed / 2);
+ }
+
+ return el.hide();
+ },
+
+ close_video : function (e) {
+ var video = $('.flex-video', e.target),
+ iframe = $('iframe', video);
+
+ if (iframe.length > 0) {
+ iframe.attr('data-src', iframe[0].src);
+ iframe.attr('src', iframe.attr('src'));
+ video.hide();
+ }
+ },
+
+ open_video : function (e) {
+ var video = $('.flex-video', e.target),
+ iframe = video.find('iframe');
+
+ if (iframe.length > 0) {
+ var data_src = iframe.attr('data-src');
+ if (typeof data_src === 'string') {
+ iframe[0].src = iframe.attr('data-src');
+ } else {
+ var src = iframe[0].src;
+ iframe[0].src = undefined;
+ iframe[0].src = src;
+ }
+ video.show();
+ }
+ },
+
+ data_attr : function (str) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + str;
+ }
+
+ return str;
+ },
+
+ cache_offset : function (modal) {
+ var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY;
+
+ modal.hide();
+
+ return offset;
+ },
+
+ off : function () {
+ $(this.scope).off('.fndtn.reveal');
+ },
+
+ reflow : function () {}
+ };
+
+ /*
+ * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}
+ * getAnimationData('fade') // {animate: true, pop: false, fade: true}
+ * getAnimationData('pop') // {animate: true, pop: true, fade: false}
+ * getAnimationData('foo') // {animate: false, pop: false, fade: false}
+ * getAnimationData(null) // {animate: false, pop: false, fade: false}
+ */
+ function getAnimationData(str) {
+ var fade = /fade/i.test(str);
+ var pop = /pop/i.test(str);
+ return {
+ animate : fade || pop,
+ pop : pop,
+ fade : fade
+ };
+ }
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.slider = {
+ name : 'slider',
+
+ version : '5.5.3',
+
+ settings : {
+ start : 0,
+ end : 100,
+ step : 1,
+ precision : 2,
+ initial : null,
+ display_selector : '',
+ vertical : false,
+ trigger_input_change : false,
+ on_change : function () {}
+ },
+
+ cache : {},
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ events : function () {
+ var self = this;
+ $(this.scope)
+ .off('.slider')
+ .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
+ '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {
+ if (!self.cache.active) {
+ e.preventDefault();
+ self.set_active_slider($(e.target));
+ }
+ })
+ .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {
+ if (!!self.cache.active) {
+ e.preventDefault();
+ if ($.data(self.cache.active[0], 'settings').vertical) {
+ var scroll_offset = 0;
+ if (!e.pageY) {
+ scroll_offset = window.scrollY;
+ }
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+ } else {
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+ }
+ }
+ })
+ .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {
+ if(!self.cache.active) {
+ // if the user has just clicked into the slider without starting to drag the handle
+ var slider = $(e.target).attr('role') === 'slider' ? $(e.target) : $(e.target).closest('.range-slider').find("[role='slider']");
+
+ if (slider.length && (!slider.parent().hasClass('disabled') && !slider.parent().attr('disabled'))) {
+ self.set_active_slider(slider);
+ if ($.data(self.cache.active[0], 'settings').vertical) {
+ var scroll_offset = 0;
+ if (!e.pageY) {
+ scroll_offset = window.scrollY;
+ }
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+ } else {
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+ }
+ }
+ }
+ self.remove_active_slider();
+ })
+ .on('change.fndtn.slider', function (e) {
+ self.settings.on_change();
+ });
+
+ self.S(window)
+ .on('resize.fndtn.slider', self.throttle(function (e) {
+ self.reflow();
+ }, 300));
+
+ // update slider value as users change input value
+ this.S('[' + this.attr_name() + ']').each(function () {
+ var slider = $(this),
+ handle = slider.children('.range-slider-handle')[0],
+ settings = self.initialize_settings(handle);
+
+ if (settings.display_selector != '') {
+ $(settings.display_selector).each(function(){
+ if ($(this).attr('value')) {
+ $(this).off('change').on('change', function () {
+ slider.foundation("slider", "set_value", $(this).val());
+ });
+ }
+ });
+ }
+ });
+ },
+
+ get_cursor_position : function (e, xy) {
+ var pageXY = 'page' + xy.toUpperCase(),
+ clientXY = 'client' + xy.toUpperCase(),
+ position;
+
+ if (typeof e[pageXY] !== 'undefined') {
+ position = e[pageXY];
+ } else if (typeof e.originalEvent[clientXY] !== 'undefined') {
+ position = e.originalEvent[clientXY];
+ } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {
+ position = e.originalEvent.touches[0][clientXY];
+ } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {
+ position = e.currentPoint[xy];
+ }
+
+ return position;
+ },
+
+ set_active_slider : function ($handle) {
+ this.cache.active = $handle;
+ },
+
+ remove_active_slider : function () {
+ this.cache.active = null;
+ },
+
+ calculate_position : function ($handle, cursor_x) {
+ var self = this,
+ settings = $.data($handle[0], 'settings'),
+ handle_l = $.data($handle[0], 'handle_l'),
+ handle_o = $.data($handle[0], 'handle_o'),
+ bar_l = $.data($handle[0], 'bar_l'),
+ bar_o = $.data($handle[0], 'bar_o');
+
+ requestAnimationFrame(function () {
+ var pct;
+
+ if (Foundation.rtl && !settings.vertical) {
+ pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);
+ } else {
+ pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);
+ }
+
+ pct = settings.vertical ? 1 - pct : pct;
+
+ var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);
+
+ self.set_ui($handle, norm);
+ });
+ },
+
+ set_ui : function ($handle, value) {
+ var settings = $.data($handle[0], 'settings'),
+ handle_l = $.data($handle[0], 'handle_l'),
+ bar_l = $.data($handle[0], 'bar_l'),
+ norm_pct = this.normalized_percentage(value, settings.start, settings.end),
+ handle_offset = norm_pct * (bar_l - handle_l) - 1,
+ progress_bar_length = norm_pct * 100,
+ $handle_parent = $handle.parent(),
+ $hidden_inputs = $handle.parent().children('input[type=hidden]');
+
+ if (Foundation.rtl && !settings.vertical) {
+ handle_offset = -handle_offset;
+ }
+
+ handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;
+ this.set_translate($handle, handle_offset, settings.vertical);
+
+ if (settings.vertical) {
+ $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');
+ } else {
+ $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
+ }
+
+ $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider');
+
+ $hidden_inputs.val(value);
+ if (settings.trigger_input_change) {
+ $hidden_inputs.trigger('change.fndtn.slider');
+ }
+
+ if (!$handle[0].hasAttribute('aria-valuemin')) {
+ $handle.attr({
+ 'aria-valuemin' : settings.start,
+ 'aria-valuemax' : settings.end
+ });
+ }
+ $handle.attr('aria-valuenow', value);
+
+ if (settings.display_selector != '') {
+ $(settings.display_selector).each(function () {
+ if (this.hasAttribute('value')) {
+ $(this).val(value);
+ } else {
+ $(this).text(value);
+ }
+ });
+ }
+
+ },
+
+ normalized_percentage : function (val, start, end) {
+ return Math.min(1, (val - start) / (end - start));
+ },
+
+ normalized_value : function (val, start, end, step, precision) {
+ var range = end - start,
+ point = val * range,
+ mod = (point - (point % step)) / step,
+ rem = point % step,
+ round = ( rem >= step * 0.5 ? step : 0);
+ return ((mod * step + round) + start).toFixed(precision);
+ },
+
+ set_translate : function (ele, offset, vertical) {
+ if (vertical) {
+ $(ele)
+ .css('-webkit-transform', 'translateY(' + offset + 'px)')
+ .css('-moz-transform', 'translateY(' + offset + 'px)')
+ .css('-ms-transform', 'translateY(' + offset + 'px)')
+ .css('-o-transform', 'translateY(' + offset + 'px)')
+ .css('transform', 'translateY(' + offset + 'px)');
+ } else {
+ $(ele)
+ .css('-webkit-transform', 'translateX(' + offset + 'px)')
+ .css('-moz-transform', 'translateX(' + offset + 'px)')
+ .css('-ms-transform', 'translateX(' + offset + 'px)')
+ .css('-o-transform', 'translateX(' + offset + 'px)')
+ .css('transform', 'translateX(' + offset + 'px)');
+ }
+ },
+
+ limit_to : function (val, min, max) {
+ return Math.min(Math.max(val, min), max);
+ },
+
+ initialize_settings : function (handle) {
+ var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),
+ decimal_places_match_result;
+
+ if (settings.precision === null) {
+ decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/);
+ settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;
+ }
+
+ if (settings.vertical) {
+ $.data(handle, 'bar_o', $(handle).parent().offset().top);
+ $.data(handle, 'bar_l', $(handle).parent().outerHeight());
+ $.data(handle, 'handle_o', $(handle).offset().top);
+ $.data(handle, 'handle_l', $(handle).outerHeight());
+ } else {
+ $.data(handle, 'bar_o', $(handle).parent().offset().left);
+ $.data(handle, 'bar_l', $(handle).parent().outerWidth());
+ $.data(handle, 'handle_o', $(handle).offset().left);
+ $.data(handle, 'handle_l', $(handle).outerWidth());
+ }
+
+ $.data(handle, 'bar', $(handle).parent());
+ return $.data(handle, 'settings', settings);
+ },
+
+ set_initial_position : function ($ele) {
+ var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
+ initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),
+ $handle = $ele.children('.range-slider-handle');
+ this.set_ui($handle, initial);
+ },
+
+ set_value : function (value) {
+ var self = this;
+ $('[' + self.attr_name() + ']', this.scope).each(function () {
+ $(this).attr(self.attr_name(), value);
+ });
+ if (!!$(this.scope).attr(self.attr_name())) {
+ $(this.scope).attr(self.attr_name(), value);
+ }
+ self.reflow();
+ },
+
+ reflow : function () {
+ var self = this;
+ self.S('[' + this.attr_name() + ']').each(function () {
+ var handle = $(this).children('.range-slider-handle')[0],
+ val = $(this).attr(self.attr_name());
+ self.initialize_settings(handle);
+
+ if (val) {
+ self.set_ui($(handle), parseFloat(val));
+ } else {
+ self.set_initial_position($(this));
+ }
+ });
+ }
+ };
+
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.tab = {
+ name : 'tab',
+
+ version : '5.5.3',
+
+ settings : {
+ active_class : 'active',
+ callback : function () {},
+ deep_linking : false,
+ scroll_to_content : true,
+ is_hover : false
+ },
+
+ default_tab_hashes : [],
+
+ init : function (scope, method, options) {
+ var self = this,
+ S = this.S;
+
+ // Store the default active tabs which will be referenced when the
+ // location hash is absent, as in the case of navigating the tabs and
+ // returning to the first viewing via the browser Back button.
+ S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
+ self.default_tab_hashes.push(this.hash);
+ });
+
+ this.bindings(method, options);
+ this.handle_location_hash_change();
+ },
+
+ events : function () {
+ var self = this,
+ S = this.S;
+
+ var usual_tab_behavior = function (e, target) {
+ var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+ if (!settings.is_hover || Modernizr.touch) {
+ // if user did not pressed tab key, prevent default action
+ var keyCode = e.keyCode || e.which;
+ if (keyCode !== 9) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ self.toggle_active_tab(S(target).parent());
+
+ }
+ };
+
+ S(this.scope)
+ .off('.tab')
+ // Key event: focus/tab key
+ .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+ var keyCode = e.keyCode || e.which;
+ // if user pressed tab key
+ if (keyCode === 13 || keyCode === 32) { // enter or space
+ var el = this;
+ usual_tab_behavior(e, el);
+ }
+ })
+ // Click event: tab title
+ .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+ var el = this;
+ usual_tab_behavior(e, el);
+ })
+ // Hover event: tab title
+ .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
+ var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+ if (settings.is_hover) {
+ self.toggle_active_tab(S(this).parent());
+ }
+ });
+
+ // Location hash change event
+ S(window).on('hashchange.fndtn.tab', function (e) {
+ e.preventDefault();
+ self.handle_location_hash_change();
+ });
+ },
+
+ handle_location_hash_change : function () {
+
+ var self = this,
+ S = this.S;
+
+ S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var settings = S(this).data(self.attr_name(true) + '-init');
+ if (settings.deep_linking) {
+ // Match the location hash to a label
+ var hash;
+ if (settings.scroll_to_content) {
+ hash = self.scope.location.hash;
+ } else {
+ // prefix the hash to prevent anchor scrolling
+ hash = self.scope.location.hash.replace('fndtn-', '');
+ }
+ if (hash != '') {
+ // Check whether the location hash references a tab content div or
+ // another element on the page (inside or outside the tab content div)
+ var hash_element = S(hash);
+ if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {
+ // Tab content div
+ self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());
+ } else {
+ // Not the tab content div. If inside the tab content, find the
+ // containing tab and toggle it as active.
+ var hash_tab_container_id = hash_element.closest('.content').attr('id');
+ if (hash_tab_container_id != undefined) {
+ self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);
+ }
+ }
+ } else {
+ // Reference the default tab hashes which were initialized in the init function
+ for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {
+ self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());
+ }
+ }
+ }
+ });
+ },
+
+ toggle_active_tab : function (tab, location_hash) {
+ var self = this,
+ S = self.S,
+ tabs = tab.closest('[' + this.attr_name() + ']'),
+ tab_link = tab.find('a'),
+ anchor = tab.children('a').first(),
+ target_hash = '#' + anchor.attr('href').split('#')[1],
+ target = S(target_hash),
+ siblings = tab.siblings(),
+ settings = tabs.data(this.attr_name(true) + '-init'),
+ interpret_keyup_action = function (e) {
+ // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
+
+ // define current, previous and next (possible) tabs
+
+ var $original = $(this);
+ var $prev = $(this).parents('li').prev().children('[role="tab"]');
+ var $next = $(this).parents('li').next().children('[role="tab"]');
+ var $target;
+
+ // find the direction (prev or next)
+
+ switch (e.keyCode) {
+ case 37:
+ $target = $prev;
+ break;
+ case 39:
+ $target = $next;
+ break;
+ default:
+ $target = false
+ break;
+ }
+
+ if ($target.length) {
+ $original.attr({
+ 'tabindex' : '-1',
+ 'aria-selected' : null
+ });
+ $target.attr({
+ 'tabindex' : '0',
+ 'aria-selected' : true
+ }).focus();
+ }
+
+ // Hide panels
+
+ $('[role="tabpanel"]')
+ .attr('aria-hidden', 'true');
+
+ // Show panel which corresponds to target
+
+ $('#' + $(document.activeElement).attr('href').substring(1))
+ .attr('aria-hidden', null);
+
+ },
+ go_to_hash = function(hash) {
+ // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it
+ // the user would get continually redirected to the default hash.
+ var default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : 'fndtn-' + self.default_tab_hashes[0].replace('#', '');
+
+ if (hash !== default_hash || window.location.hash) {
+ window.location.hash = hash;
+ }
+ };
+
+ // allow usage of data-tab-content attribute instead of href
+ if (anchor.data('tab-content')) {
+ target_hash = '#' + anchor.data('tab-content').split('#')[1];
+ target = S(target_hash);
+ }
+
+ if (settings.deep_linking) {
+
+ if (settings.scroll_to_content) {
+
+ // retain current hash to scroll to content
+ go_to_hash(location_hash || target_hash);
+
+ if (location_hash == undefined || location_hash == target_hash) {
+ tab.parent()[0].scrollIntoView();
+ } else {
+ S(target_hash)[0].scrollIntoView();
+ }
+ } else {
+ // prefix the hashes so that the browser doesn't scroll down
+ if (location_hash != undefined) {
+ go_to_hash('fndtn-' + location_hash.replace('#', ''));
+ } else {
+ go_to_hash('fndtn-' + target_hash.replace('#', ''));
+ }
+ }
+ }
+
+ // WARNING: The activation and deactivation of the tab content must
+ // occur after the deep linking in order to properly refresh the browser
+ // window (notably in Chrome).
+ // Clean up multiple attr instances to done once
+ tab.addClass(settings.active_class).triggerHandler('opened');
+ tab_link.attr({'aria-selected' : 'true', tabindex : 0});
+ siblings.removeClass(settings.active_class)
+ siblings.find('a').attr({'aria-selected' : 'false'/*, tabindex : -1*/});
+ target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true'/*, tabindex : -1*/});
+ target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
+ settings.callback(tab);
+ target.triggerHandler('toggled', [target]);
+ tabs.triggerHandler('toggled', [tab]);
+
+ tab_link.off('keydown').on('keydown', interpret_keyup_action );
+ },
+
+ data_attr : function (str) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + str;
+ }
+
+ return str;
+ },
+
+ off : function () {},
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.tooltip = {
+ name : 'tooltip',
+
+ version : '5.5.3',
+
+ settings : {
+ additional_inheritable_classes : [],
+ tooltip_class : '.tooltip',
+ append_to : 'body',
+ touch_close_text : 'Tap To Close',
+ disable_for_touch : false,
+ hover_delay : 200,
+ fade_in_duration : 150,
+ fade_out_duration : 150,
+ show_on : 'all',
+ tip_template : function (selector, content) {
+ return '<span data-selector="' + selector + '" id="' + selector + '" class="'
+ + Foundation.libs.tooltip.settings.tooltip_class.substring(1)
+ + '" role="tooltip">' + content + '<span class="nub"></span></span>';
+ }
+ },
+
+ cache : {},
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'random_str');
+ this.bindings(method, options);
+ },
+
+ should_show : function (target, tip) {
+ var settings = $.extend({}, this.settings, this.data_options(target));
+
+ if (settings.show_on === 'all') {
+ return true;
+ } else if (this.small() && settings.show_on === 'small') {
+ return true;
+ } else if (this.medium() && settings.show_on === 'medium') {
+ return true;
+ } else if (this.large() && settings.show_on === 'large') {
+ return true;
+ }
+ return false;
+ },
+
+ medium : function () {
+ return matchMedia(Foundation.media_queries['medium']).matches;
+ },
+
+ large : function () {
+ return matchMedia(Foundation.media_queries['large']).matches;
+ },
+
+ events : function (instance) {
+ var self = this,
+ S = self.S;
+
+ self.create(this.S(instance));
+
+ function _startShow(elt, $this, immediate) {
+ if (elt.timer) {
+ return;
+ }
+
+ if (immediate) {
+ elt.timer = null;
+ self.showTip($this);
+ } else {
+ elt.timer = setTimeout(function () {
+ elt.timer = null;
+ self.showTip($this);
+ }.bind(elt), self.settings.hover_delay);
+ }
+ }
+
+ function _startHide(elt, $this) {
+ if (elt.timer) {
+ clearTimeout(elt.timer);
+ elt.timer = null;
+ }
+
+ self.hide($this);
+ }
+
+ $(this.scope)
+ .off('.tooltip')
+ .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
+ '[' + this.attr_name() + ']', function (e) {
+ var $this = S(this),
+ settings = $.extend({}, self.settings, self.data_options($this)),
+ is_touch = false;
+
+ if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
+ return false;
+ }
+
+ if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+ return false;
+ }
+
+ if ($this.hasClass('open')) {
+ if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+ e.preventDefault();
+ }
+ self.hide($this);
+ } else {
+ if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+ return;
+ } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+ e.preventDefault();
+ S(settings.tooltip_class + '.open').hide();
+ is_touch = true;
+ // close other open tooltips on touch
+ if ($('.open[' + self.attr_name() + ']').length > 0) {
+ var prevOpen = S($('.open[' + self.attr_name() + ']')[0]);
+ self.hide(prevOpen);
+ }
+ }
+
+ if (/enter|over/i.test(e.type)) {
+ _startShow(this, $this);
+
+ } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
+ _startHide(this, $this);
+ } else {
+ _startShow(this, $this, true);
+ }
+ }
+ })
+ .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
+ if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+ return false;
+ }
+
+ if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
+ return;
+ } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
+ self.convert_to_touch($(this));
+ } else {
+ _startHide(this, $(this));
+ }
+ })
+ .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
+ _startHide(this, S(this));
+ });
+ },
+
+ ie_touch : function (e) {
+ // How do I distinguish between IE11 and Windows Phone 8?????
+ return false;
+ },
+
+ showTip : function ($target) {
+ var $tip = this.getTip($target);
+ if (this.should_show($target, $tip)) {
+ return this.show($target);
+ }
+ return;
+ },
+
+ getTip : function ($target) {
+ var selector = this.selector($target),
+ settings = $.extend({}, this.settings, this.data_options($target)),
+ tip = null;
+
+ if (selector) {
+ tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
+ }
+
+ return (typeof tip === 'object') ? tip : false;
+ },
+
+ selector : function ($target) {
+ var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
+
+ if (typeof dataSelector != 'string') {
+ dataSelector = this.random_str(6);
+ $target
+ .attr('data-selector', dataSelector)
+ .attr('aria-describedby', dataSelector);
+ }
+
+ return dataSelector;
+ },
+
+ create : function ($target) {
+ var self = this,
+ settings = $.extend({}, this.settings, this.data_options($target)),
+ tip_template = this.settings.tip_template;
+
+ if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
+ tip_template = window[settings.tip_template];
+ }
+
+ var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
+ classes = this.inheritable_classes($target);
+
+ $tip.addClass(classes).appendTo(settings.append_to);
+
+ if (Modernizr.touch) {
+ $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+ $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
+ self.hide($target);
+ });
+ }
+
+ $target.removeAttr('title').attr('title', '');
+ },
+
+ reposition : function (target, tip, classes) {
+ var width, nub, nubHeight, nubWidth, objPos;
+
+ tip.css('visibility', 'hidden').show();
+
+ width = target.data('width');
+ nub = tip.children('.nub');
+ nubHeight = nub.outerHeight();
+ nubWidth = nub.outerWidth();
+
+ if (this.small()) {
+ tip.css({'width' : '100%'});
+ } else {
+ tip.css({'width' : (width) ? width : 'auto'});
+ }
+
+ objPos = function (obj, top, right, bottom, left, width) {
+ return obj.css({
+ 'top' : (top) ? top : 'auto',
+ 'bottom' : (bottom) ? bottom : 'auto',
+ 'left' : (left) ? left : 'auto',
+ 'right' : (right) ? right : 'auto'
+ }).end();
+ };
+
+ var o_top = target.offset().top;
+ var o_left = target.offset().left;
+ var outerHeight = target.outerHeight();
+
+ objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+
+ if (this.small()) {
+ objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', 12.5, $(this.scope).width());
+ tip.addClass('tip-override');
+ objPos(nub, -nubHeight, 'auto', 'auto', o_left);
+ } else {
+
+ if (Foundation.rtl) {
+ nub.addClass('rtl');
+ o_left = o_left + target.outerWidth() - tip.outerWidth();
+ }
+
+ objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+ // reset nub from small styles, if they've been applied
+ if (nub.attr('style')) {
+ nub.removeAttr('style');
+ }
+
+ tip.removeClass('tip-override');
+
+ var tip_outerHeight = tip.outerHeight();
+
+ if (classes && classes.indexOf('tip-top') > -1) {
+ if (Foundation.rtl) {
+ nub.addClass('rtl');
+ }
+ objPos(tip, (o_top - tip_outerHeight), 'auto', 'auto', o_left)
+ .removeClass('tip-override');
+ } else if (classes && classes.indexOf('tip-left') > -1) {
+ objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left - tip.outerWidth() - nubHeight))
+ .removeClass('tip-override');
+ nub.removeClass('rtl');
+ } else if (classes && classes.indexOf('tip-right') > -1) {
+ objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left + target.outerWidth() + nubHeight))
+ .removeClass('tip-override');
+ nub.removeClass('rtl');
+ }
+ }
+
+ tip.css('visibility', 'visible').hide();
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ inheritable_classes : function ($target) {
+ var settings = $.extend({}, this.settings, this.data_options($target)),
+ inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
+ classes = $target.attr('class'),
+ filtered = classes ? $.map(classes.split(' '), function (el, i) {
+ if ($.inArray(el, inheritables) !== -1) {
+ return el;
+ }
+ }).join(' ') : '';
+
+ return $.trim(filtered);
+ },
+
+ convert_to_touch : function ($target) {
+ var self = this,
+ $tip = self.getTip($target),
+ settings = $.extend({}, self.settings, self.data_options($target));
+
+ if ($tip.find('.tap-to-close').length === 0) {
+ $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+ $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
+ self.hide($target);
+ });
+ }
+
+ $target.data('tooltip-open-event-type', 'touch');
+ },
+
+ show : function ($target) {
+ var $tip = this.getTip($target);
+ if ($target.data('tooltip-open-event-type') == 'touch') {
+ this.convert_to_touch($target);
+ }
+
+ this.reposition($target, $tip, $target.attr('class'));
+ $target.addClass('open');
+ $tip.fadeIn(this.settings.fade_in_duration);
+ },
+
+ hide : function ($target) {
+ var $tip = this.getTip($target);
+
+ $tip.fadeOut(this.settings.fade_out_duration, function () {
+ $tip.find('.tap-to-close').remove();
+ $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
+ $target.removeClass('open');
+ });
+ },
+
+ off : function () {
+ var self = this;
+ this.S(this.scope).off('.fndtn.tooltip');
+ this.S(this.settings.tooltip_class).each(function (i) {
+ $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
+ }).remove();
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
+
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.topbar = {
+ name : 'topbar',
+
+ version : '5.5.3',
+
+ settings : {
+ index : 0,
+ start_offset : 0,
+ sticky_class : 'sticky',
+ custom_back_text : true,
+ back_text : 'Back',
+ mobile_show_parent_link : true,
+ is_hover : true,
+ scrolltop : true, // jump to top when sticky nav menu toggle is clicked
+ sticky_on : 'all',
+ dropdown_autoclose: true
+ },
+
+ init : function (section, method, options) {
+ Foundation.inherit(this, 'add_custom_rule register_media throttle');
+ var self = this;
+
+ self.register_media('topbar', 'foundation-mq-topbar');
+
+ this.bindings(method, options);
+
+ self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var topbar = $(this),
+ settings = topbar.data(self.attr_name(true) + '-init'),
+ section = self.S('section, .top-bar-section', this);
+ topbar.data('index', 0);
+ var topbarContainer = topbar.parent();
+ if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
+ self.settings.sticky_class = settings.sticky_class;
+ self.settings.sticky_topbar = topbar;
+ topbar.data('height', topbarContainer.outerHeight());
+ topbar.data('stickyoffset', topbarContainer.offset().top);
+ } else {
+ topbar.data('height', topbar.outerHeight());
+ }
+
+ if (!settings.assembled) {
+ self.assemble(topbar);
+ }
+
+ if (settings.is_hover) {
+ self.S('.has-dropdown', topbar).addClass('not-click');
+ } else {
+ self.S('.has-dropdown', topbar).removeClass('not-click');
+ }
+
+ // Pad body when sticky (scrolled) or fixed.
+ self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
+
+ if (topbarContainer.hasClass('fixed')) {
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ });
+
+ },
+
+ is_sticky : function (topbar, topbarContainer, settings) {
+ var sticky = topbarContainer.hasClass(settings.sticky_class);
+ var smallMatch = matchMedia(Foundation.media_queries.small).matches;
+ var medMatch = matchMedia(Foundation.media_queries.medium).matches;
+ var lrgMatch = matchMedia(Foundation.media_queries.large).matches;
+
+ if (sticky && settings.sticky_on === 'all') {
+ return true;
+ }
+ if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
+ if (smallMatch && !medMatch && !lrgMatch) { return true; }
+ }
+ if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
+ if (smallMatch && medMatch && !lrgMatch) { return true; }
+ }
+ if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
+ if (smallMatch && medMatch && lrgMatch) { return true; }
+ }
+
+ return false;
+ },
+
+ toggle : function (toggleEl) {
+ var self = this,
+ topbar;
+
+ if (toggleEl) {
+ topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
+ } else {
+ topbar = self.S('[' + this.attr_name() + ']');
+ }
+
+ var settings = topbar.data(this.attr_name(true) + '-init');
+
+ var section = self.S('section, .top-bar-section', topbar);
+
+ if (self.breakpoint()) {
+ if (!self.rtl) {
+ section.css({left : '0%'});
+ $('>.name', section).css({left : '100%'});
+ } else {
+ section.css({right : '0%'});
+ $('>.name', section).css({right : '100%'});
+ }
+
+ self.S('li.moved', section).removeClass('moved');
+ topbar.data('index', 0);
+
+ topbar
+ .toggleClass('expanded')
+ .css('height', '');
+ }
+
+ if (settings.scrolltop) {
+ if (!topbar.hasClass('expanded')) {
+ if (topbar.hasClass('fixed')) {
+ topbar.parent().addClass('fixed');
+ topbar.removeClass('fixed');
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ } else if (topbar.parent().hasClass('fixed')) {
+ if (settings.scrolltop) {
+ topbar.parent().removeClass('fixed');
+ topbar.addClass('fixed');
+ self.S('body').removeClass('f-topbar-fixed');
+
+ window.scrollTo(0, 0);
+ } else {
+ topbar.parent().removeClass('expanded');
+ }
+ }
+ } else {
+ if (self.is_sticky(topbar, topbar.parent(), settings)) {
+ topbar.parent().addClass('fixed');
+ }
+
+ if (topbar.parent().hasClass('fixed')) {
+ if (!topbar.hasClass('expanded')) {
+ topbar.removeClass('fixed');
+ topbar.parent().removeClass('expanded');
+ self.update_sticky_positioning();
+ } else {
+ topbar.addClass('fixed');
+ topbar.parent().addClass('expanded');
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ }
+ }
+ },
+
+ timer : null,
+
+ events : function (bar) {
+ var self = this,
+ S = this.S;
+
+ S(this.scope)
+ .off('.topbar')
+ .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
+ e.preventDefault();
+ self.toggle(this);
+ })
+ .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
+ var li = $(this).closest('li'),
+ topbar = li.closest('[' + self.attr_name() + ']'),
+ settings = topbar.data(self.attr_name(true) + '-init');
+
+ if (settings.dropdown_autoclose && settings.is_hover) {
+ var hoverLi = $(this).closest('.hover');
+ hoverLi.removeClass('hover');
+ }
+ if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
+ self.toggle();
+ }
+
+ })
+ .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
+ var li = S(this),
+ target = S(e.target),
+ topbar = li.closest('[' + self.attr_name() + ']'),
+ settings = topbar.data(self.attr_name(true) + '-init');
+
+ if (target.data('revealId')) {
+ self.toggle();
+ return;
+ }
+
+ if (self.breakpoint()) {
+ return;
+ }
+
+ if (settings.is_hover && !Modernizr.touch) {
+ return;
+ }
+
+ e.stopImmediatePropagation();
+
+ if (li.hasClass('hover')) {
+ li
+ .removeClass('hover')
+ .find('li')
+ .removeClass('hover');
+
+ li.parents('li.hover')
+ .removeClass('hover');
+ } else {
+ li.addClass('hover');
+
+ $(li).siblings().removeClass('hover');
+
+ if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
+ e.preventDefault();
+ }
+ }
+ })
+ .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
+ if (self.breakpoint()) {
+
+ e.preventDefault();
+
+ var $this = S(this),
+ topbar = $this.closest('[' + self.attr_name() + ']'),
+ section = topbar.find('section, .top-bar-section'),
+ dropdownHeight = $this.next('.dropdown').outerHeight(),
+ $selectedLi = $this.closest('li');
+
+ topbar.data('index', topbar.data('index') + 1);
+ $selectedLi.addClass('moved');
+
+ if (!self.rtl) {
+ section.css({left : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+ } else {
+ section.css({right : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+ }
+
+ topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
+ }
+ });
+
+ S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
+ self.resize.call(self);
+ }, 50)).trigger('resize.fndtn.topbar').load(function () {
+ // Ensure that the offset is calculated after all of the pages resources have loaded
+ S(this).trigger('resize.fndtn.topbar');
+ });
+
+ S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
+ var parent = S(e.target).closest('li').closest('li.hover');
+
+ if (parent.length > 0) {
+ return;
+ }
+
+ S('[' + self.attr_name() + '] li.hover').removeClass('hover');
+ });
+
+ // Go up a level on Click
+ S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
+ e.preventDefault();
+
+ var $this = S(this),
+ topbar = $this.closest('[' + self.attr_name() + ']'),
+ section = topbar.find('section, .top-bar-section'),
+ settings = topbar.data(self.attr_name(true) + '-init'),
+ $movedLi = $this.closest('li.moved'),
+ $previousLevelUl = $movedLi.parent();
+
+ topbar.data('index', topbar.data('index') - 1);
+
+ if (!self.rtl) {
+ section.css({left : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+ } else {
+ section.css({right : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+ }
+
+ if (topbar.data('index') === 0) {
+ topbar.css('height', '');
+ } else {
+ topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
+ }
+
+ setTimeout(function () {
+ $movedLi.removeClass('moved');
+ }, 300);
+ });
+
+ // Show dropdown menus when their items are focused
+ S(this.scope).find('.dropdown a')
+ .focus(function () {
+ $(this).parents('.has-dropdown').addClass('hover');
+ })
+ .blur(function () {
+ $(this).parents('.has-dropdown').removeClass('hover');
+ });
+ },
+
+ resize : function () {
+ var self = this;
+ self.S('[' + this.attr_name() + ']').each(function () {
+ var topbar = self.S(this),
+ settings = topbar.data(self.attr_name(true) + '-init');
+
+ var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
+ var stickyOffset;
+
+ if (!self.breakpoint()) {
+ var doToggle = topbar.hasClass('expanded');
+ topbar
+ .css('height', '')
+ .removeClass('expanded')
+ .find('li')
+ .removeClass('hover');
+
+ if (doToggle) {
+ self.toggle(topbar);
+ }
+ }
+
+ if (self.is_sticky(topbar, stickyContainer, settings)) {
+ if (stickyContainer.hasClass('fixed')) {
+ // Remove the fixed to allow for correct calculation of the offset.
+ stickyContainer.removeClass('fixed');
+
+ stickyOffset = stickyContainer.offset().top;
+ if (self.S(document.body).hasClass('f-topbar-fixed')) {
+ stickyOffset -= topbar.data('height');
+ }
+
+ topbar.data('stickyoffset', stickyOffset);
+ stickyContainer.addClass('fixed');
+ } else {
+ stickyOffset = stickyContainer.offset().top;
+ topbar.data('stickyoffset', stickyOffset);
+ }
+ }
+
+ });
+ },
+
+ breakpoint : function () {
+ return !matchMedia(Foundation.media_queries['topbar']).matches;
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries['small']).matches;
+ },
+
+ medium : function () {
+ return matchMedia(Foundation.media_queries['medium']).matches;
+ },
+
+ large : function () {
+ return matchMedia(Foundation.media_queries['large']).matches;
+ },
+
+ assemble : function (topbar) {
+ var self = this,
+ settings = topbar.data(this.attr_name(true) + '-init'),
+ section = self.S('section, .top-bar-section', topbar);
+
+ // Pull element out of the DOM for manipulation
+ section.detach();
+
+ self.S('.has-dropdown>a', section).each(function () {
+ var $link = self.S(this),
+ $dropdown = $link.siblings('.dropdown'),
+ url = $link.attr('href'),
+ $titleLi;
+
+ if (!$dropdown.find('.title.back').length) {
+
+ if (settings.mobile_show_parent_link == true && url) {
+ $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
+ } else {
+ $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
+ }
+
+ // Copy link to subnav
+ if (settings.custom_back_text == true) {
+ $('h5>a', $titleLi).html(settings.back_text);
+ } else {
+ $('h5>a', $titleLi).html('« ' + $link.html());
+ }
+ $dropdown.prepend($titleLi);
+ }
+ });
+
+ // Put element back in the DOM
+ section.appendTo(topbar);
+
+ // check for sticky
+ this.sticky();
+
+ this.assembled(topbar);
+ },
+
+ assembled : function (topbar) {
+ topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
+ },
+
+ height : function (ul) {
+ var total = 0,
+ self = this;
+
+ $('> li', ul).each(function () {
+ total += self.S(this).outerHeight(true);
+ });
+
+ return total;
+ },
+
+ sticky : function () {
+ var self = this;
+
+ this.S(window).on('scroll', function () {
+ self.update_sticky_positioning();
+ });
+ },
+
+ update_sticky_positioning : function () {
+ var klass = '.' + this.settings.sticky_class,
+ $window = this.S(window),
+ self = this;
+
+ if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {
+ var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset;
+ if (!self.S(klass).hasClass('expanded')) {
+ if ($window.scrollTop() > (distance)) {
+ if (!self.S(klass).hasClass('fixed')) {
+ self.S(klass).addClass('fixed');
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ } else if ($window.scrollTop() <= distance) {
+ if (self.S(klass).hasClass('fixed')) {
+ self.S(klass).removeClass('fixed');
+ self.S('body').removeClass('f-topbar-fixed');
+ }
+ }
+ }
+ }
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.topbar');
+ this.S(window).off('.fndtn.topbar');
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+!function(a,b,c,d){"use strict";function e(a){return("string"==typeof a||a instanceof String)&&(a=a.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"")),a}function f(a){this.selector=a,this.query=""}var g=function(b){var c=a("head");c.prepend(a.map(b,function(a){return 0===c.has("."+a).length?'<meta class="'+a+'" />':void 0}))};g(["foundation-mq-small","foundation-mq-small-only","foundation-mq-medium","foundation-mq-medium-only","foundation-mq-large","foundation-mq-large-only","foundation-mq-xlarge","foundation-mq-xlarge-only","foundation-mq-xxlarge","foundation-data-attribute-namespace"]),a(function(){"undefined"!=typeof FastClick&&"undefined"!=typeof c.body&&FastClick.attach(c.body)});var h=function(b,d){if("string"==typeof b){if(d){var e;if(d.jquery){if(e=d[0],!e)return d}else e=d;return a(e.querySelectorAll(b))}return a(c.querySelectorAll(b))}return a(b,d)},i=function(a){var b=[];return a||b.push("data"),this.namespace.length>0&&b.push(this.namespace),b.push(this.name),b.join("-")},j=function(a){for(var b=a.split("-"),c=b.length,d=[];c--;)0!==c?d.push(b[c]):this.namespace.length>0?d.push(this.namespace,b[c]):d.push(b[c]);return d.reverse().join("-")},k=function(b,c){var d=this,e=function(){var e=h(this),f=!e.data(d.attr_name(!0)+"-init");e.data(d.attr_name(!0)+"-init",a.extend({},d.settings,c||b,d.data_options(e))),f&&d.events(this)};return h(this.scope).is("["+this.attr_name()+"]")?e.call(this.scope):h("["+this.attr_name()+"]",this.scope).each(e),"string"==typeof b?this[b].call(this,c):void 0},l=function(a,b){function c(){b(a[0])}function d(){if(this.one("load",c),/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var a=this.attr("src"),b=a.match(/\?/)?"&":"?";b+="random="+(new Date).getTime(),this.attr("src",a+b)}}return a.attr("src")?void(a[0].complete||4===a[0].readyState?c():d.call(a)):void c()};/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+b.matchMedia||(b.matchMedia=function(){var a=b.styleMedia||b.media;if(!a){var d=c.createElement("style"),e=c.getElementsByTagName("script")[0],f=null;d.type="text/css",d.id="matchmediajs-test",e.parentNode.insertBefore(d,e),f="getComputedStyle"in b&&b.getComputedStyle(d,null)||d.currentStyle,a={matchMedium:function(a){var b="@media "+a+"{ #matchmediajs-test { width: 1px; } }";return d.styleSheet?d.styleSheet.cssText=b:d.textContent=b,"1px"===f.width}}}return function(b){return{matches:a.matchMedium(b||"all"),media:b||"all"}}}()),function(a){function c(){d&&(g(c),i&&a.fx.tick())}for(var d,e=0,f=["webkit","moz"],g=b.requestAnimationFrame,h=b.cancelAnimationFrame,i="undefined"!=typeof a.fx;e<f.length&&!g;e++)g=b[f[e]+"RequestAnimationFrame"],h=h||b[f[e]+"CancelAnimationFrame"]||b[f[e]+"CancelRequestAnimationFrame"];g?(b.requestAnimationFrame=g,b.cancelAnimationFrame=h,i&&(a.fx.timer=function(b){b()&&a.timers.push(b)&&!d&&(d=!0,c())},a.fx.stop=function(){d=!1})):(b.requestAnimationFrame=function(a){var c=(new Date).getTime(),d=Math.max(0,16-(c-e)),f=b.setTimeout(function(){a(c+d)},d);return e=c+d,f},b.cancelAnimationFrame=function(a){clearTimeout(a)})}(a),f.prototype.toString=function(){return this.query||(this.query=h(this.selector).css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""))},b.Foundation={name:"Foundation",version:"5.5.3",media_queries:{small:new f(".foundation-mq-small"),"small-only":new f(".foundation-mq-small-only"),medium:new f(".foundation-mq-medium"),"medium-only":new f(".foundation-mq-medium-only"),large:new f(".foundation-mq-large"),"large-only":new f(".foundation-mq-large-only"),xlarge:new f(".foundation-mq-xlarge"),"xlarge-only":new f(".foundation-mq-xlarge-only"),xxlarge:new f(".foundation-mq-xxlarge")},stylesheet:a("<style></style>").appendTo("head")[0].sheet,global:{namespace:d},init:function(a,c,d,e,f){var g=[a,d,e,f],i=[];if(this.rtl=/rtl/i.test(h("html").attr("dir")),this.scope=a||this.scope,this.set_namespace(),c&&"string"==typeof c&&!/reflow/i.test(c))this.libs.hasOwnProperty(c)&&i.push(this.init_lib(c,g));else for(var j in this.libs)i.push(this.init_lib(j,c));return h(b).load(function(){h(b).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")}),a},init_lib:function(b,c){return this.libs.hasOwnProperty(b)?(this.patch(this.libs[b]),c&&c.hasOwnProperty(b)?("undefined"!=typeof this.libs[b].settings?a.extend(!0,this.libs[b].settings,c[b]):"undefined"!=typeof this.libs[b].defaults&&a.extend(!0,this.libs[b].defaults,c[b]),this.libs[b].init.apply(this.libs[b],[this.scope,c[b]])):(c=c instanceof Array?c:new Array(c),this.libs[b].init.apply(this.libs[b],c))):function(){}},patch:function(a){a.scope=this.scope,a.namespace=this.global.namespace,a.rtl=this.rtl,a.data_options=this.utils.data_options,a.attr_name=i,a.add_namespace=j,a.bindings=k,a.S=this.utils.S},inherit:function(a,b){for(var c=b.split(" "),d=c.length;d--;)this.utils.hasOwnProperty(c[d])&&(a[c[d]]=this.utils[c[d]])},set_namespace:function(){var b=this.global.namespace===d?a(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=b===d||/false/i.test(b)?"":b},libs:{},utils:{S:h,throttle:function(a,b){var c=null;return function(){var d=this,e=arguments;null==c&&(c=setTimeout(function(){a.apply(d,e),c=null},b))}},debounce:function(a,b,c){var d,e;return function(){var f=this,g=arguments,h=function(){d=null,c||(e=a.apply(f,g))},i=c&&!d;return clearTimeout(d),d=setTimeout(h,b),i&&(e=a.apply(f,g)),e}},data_options:function(b,c){function d(a){return!isNaN(a-0)&&null!==a&&""!==a&&a!==!1&&a!==!0}function e(b){return"string"==typeof b?a.trim(b):b}c=c||"options";var f,g,h,i={},j=function(a){var b=Foundation.global.namespace;return b.length>0?a.data(b+"-"+c):a.data(c)},k=j(b);if("object"==typeof k)return k;for(h=(k||":").split(";"),f=h.length;f--;)g=h[f].split(":"),g=[g[0],g.slice(1).join(":")],/true/i.test(g[1])&&(g[1]=!0),/false/i.test(g[1])&&(g[1]=!1),d(g[1])&&(-1===g[1].indexOf(".")?g[1]=parseInt(g[1],10):g[1]=parseFloat(g[1])),2===g.length&&g[0].length>0&&(i[e(g[0])]=e(g[1]));return i},register_media:function(b,c){Foundation.media_queries[b]===d&&(a("head").append('<meta class="'+c+'"/>'),Foundation.media_queries[b]=e(a("."+c).css("font-family")))},add_custom_rule:function(a,b){if(b===d&&Foundation.stylesheet)Foundation.stylesheet.insertRule(a,Foundation.stylesheet.cssRules.length);else{var c=Foundation.media_queries[b];c!==d&&Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[b]+"{ "+a+" }",Foundation.stylesheet.cssRules.length)}},image_loaded:function(a,b){function c(a){for(var b=a.length,c=b-1;c>=0;c--)if(a.attr("height")===d)return!1;return!0}var e=this,f=a.length;(0===f||c(a))&&b(a),a.each(function(){l(e.S(this),function(){f-=1,0===f&&b(a)})})},random_str:function(){return this.fidx||(this.fidx=0),this.prefix=this.prefix||[this.name||"F",(+new Date).toString(36)].join("-"),this.prefix+(this.fidx++).toString(36)},match:function(a){return b.matchMedia(a).matches},is_small_up:function(){return this.match(Foundation.media_queries.small)},is_medium_up:function(){return this.match(Foundation.media_queries.medium)},is_large_up:function(){return this.match(Foundation.media_queries.large)},is_xlarge_up:function(){return this.match(Foundation.media_queries.xlarge)},is_xxlarge_up:function(){return this.match(Foundation.media_queries.xxlarge)},is_small_only:function(){return!(this.is_medium_up()||this.is_large_up()||this.is_xlarge_up()||this.is_xxlarge_up())},is_medium_only:function(){return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_large_only:function(){return this.is_medium_up()&&this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&!this.is_xxlarge_up()},is_xxlarge_only:function(){return this.is_medium_up()&&this.is_large_up()&&this.is_xlarge_up()&&this.is_xxlarge_up()}}},a.fn.foundation=function(){var a=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(a)),this})}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.abide={name:"abide",version:"5.5.3",settings:{live_validate:!0,validate_on_blur:!0,focus_on_invalid:!0,error_labels:!0,error_class:"error",timeout:1e3,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/},validators:{equalTo:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g}}},timer:null,init:function(a,b,c){this.bindings(b,c)},events:function(b){function c(a,b){clearTimeout(d.timer),d.timer=setTimeout(function(){d.validate([a],b)}.bind(a),f.timeout)}var d=this,e=d.S(b).attr("novalidate","novalidate"),f=e.data(this.attr_name(!0)+"-init")||{};this.invalid_attr=this.add_namespace("data-invalid"),e.off(".abide").on("submit.fndtn.abide",function(a){var b=/ajax/i.test(d.S(this).attr(d.attr_name()));return d.validate(d.S(this).find("input, textarea, select").not(":hidden, [data-abide-ignore]").get(),a,b)}).on("validate.fndtn.abide",function(a){"manual"===f.validate_on&&d.validate([a.target],a)}).on("reset",function(b){return d.reset(a(this),b)}).find("input, textarea, select").not(":hidden, [data-abide-ignore]").off(".abide").on("blur.fndtn.abide change.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.validate_on_blur&&f.validate_on_blur===!0&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"change"===f.validate_on&&c(this,a)}).on("keydown.fndtn.abide",function(a){var b=this.getAttribute("id"),d=e.find('[data-equalto="'+b+'"]');f.live_validate&&f.live_validate===!0&&9!=a.which&&c(this,a),"undefined"!=typeof d.get(0)&&d.val().length&&c(d.get(0),a),"tab"===f.validate_on&&9===a.which?c(this,a):"change"===f.validate_on&&c(this,a)}).on("focus",function(b){navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)&&a("html, body").animate({scrollTop:a(b.target).offset().top},100)})},reset:function(b,c){var d=this;b.removeAttr(d.invalid_attr),a("["+d.invalid_attr+"]",b).removeAttr(d.invalid_attr),a("."+d.settings.error_class,b).not("small").removeClass(d.settings.error_class),a(":input",b).not(":button, :submit, :reset, :hidden, [data-abide-ignore]").val("").removeAttr(d.invalid_attr)},validate:function(a,b,c){for(var d=this.parse_patterns(a),e=d.length,f=this.S(a[0]).closest("form"),g=/submit/.test(b.type),h=0;e>h;h++)if(!d[h]&&(g||c))return this.settings.focus_on_invalid&&a[h].focus(),f.trigger("invalid.fndtn.abide"),this.S(a[h]).closest("form").attr(this.invalid_attr,""),!1;return(g||c)&&f.trigger("valid.fndtn.abide"),f.removeAttr(this.invalid_attr),c?!1:!0},parse_patterns:function(a){for(var b=a.length,c=[];b--;)c.push(this.pattern(a[b]));return this.check_validation_and_apply_styles(c)},pattern:function(a){var b=a.getAttribute("type"),c="string"==typeof a.getAttribute("required"),d=a.getAttribute("pattern")||"";return this.settings.patterns.hasOwnProperty(d)&&d.length>0?[a,this.settings.patterns[d],c]:d.length>0?[a,new RegExp(d),c]:this.settings.patterns.hasOwnProperty(b)?[a,this.settings.patterns[b],c]:(d=/.*/,[a,d,c])},check_validation_and_apply_styles:function(b){var c=b.length,d=[];if(0==c)return d;var e=this.S(b[0][0]).closest("[data-"+this.attr_name(!0)+"]");for(e.data(this.attr_name(!0)+"-init")||{};c--;){var f,g,h=b[c][0],i=b[c][2],j=h.value.trim(),k=this.S(h).parent(),l=h.getAttribute(this.add_namespace("data-abide-validator")),m="radio"===h.type,n="checkbox"===h.type,o=this.S('label[for="'+h.getAttribute("id")+'"]'),p=i?h.value.length>0:!0,q=[];if(h.getAttribute(this.add_namespace("data-equalto"))&&(l="equalTo"),f=k.is("label")?k.parent():k,m&&i)q.push(this.valid_radio(h,i));else if(n&&i)q.push(this.valid_checkbox(h,i));else if(l){for(var r=l.split(" "),s=!0,t=!0,u=0;u<r.length;u++)g=this.settings.validators[r[u]].apply(this,[h,i,f]),q.push(g),t=g&&s,s=g;t?(this.S(h).removeAttr(this.invalid_attr),f.removeClass("error"),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid")):(this.S(h).attr(this.invalid_attr,""),f.addClass("error"),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid"))}else if(b[c][1].test(j)&&p||!i&&h.value.length<1||a(h).attr("disabled")?q.push(!0):q.push(!1),q=[q.every(function(a){return a})],q[0])this.S(h).removeAttr(this.invalid_attr),h.setAttribute("aria-invalid","false"),h.removeAttribute("aria-describedby"),f.removeClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.removeClass(this.settings.error_class).removeAttr("role"),a(h).triggerHandler("valid");else{this.S(h).attr(this.invalid_attr,""),h.setAttribute("aria-invalid","true");var v=f.find("small."+this.settings.error_class,"span."+this.settings.error_class),w=v.length>0?v[0].id:"";w.length>0&&h.setAttribute("aria-describedby",w),f.addClass(this.settings.error_class),o.length>0&&this.settings.error_labels&&o.addClass(this.settings.error_class).attr("role","alert"),a(h).triggerHandler("invalid")}d=d.concat(q)}return d},valid_checkbox:function(b,c){var b=this.S(b),d=b.is(":checked")||!c||b.get(0).getAttribute("disabled");return d?(b.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(b).triggerHandler("valid")):(b.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(b).triggerHandler("invalid")),d},valid_radio:function(b,c){for(var d=b.getAttribute("name"),e=this.S(b).closest("[data-"+this.attr_name(!0)+"]").find("[name='"+d+"']"),f=e.length,g=!1,h=!1,i=0;f>i;i++)e[i].getAttribute("disabled")?(h=!0,g=!0):e[i].checked?g=!0:h&&(g=!1);for(var i=0;f>i;i++)g?(this.S(e[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class),a(e[i]).triggerHandler("valid")):(this.S(e[i]).attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),a(e[i]).triggerHandler("invalid"));return g},valid_equal:function(a,b,d){var e=c.getElementById(a.getAttribute(this.add_namespace("data-equalto"))).value,f=a.value,g=e===f;return g?(this.S(a).removeAttr(this.invalid_attr),d.removeClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.removeClass(this.settings.error_class)):(this.S(a).attr(this.invalid_attr,""),d.addClass(this.settings.error_class),label.length>0&&settings.error_labels&&label.addClass(this.settings.error_class)),g},valid_oneof:function(a,b,c,d){var a=this.S(a),e=this.S("["+this.add_namespace("data-oneof")+"]"),f=e.filter(":checked").length>0;if(f?a.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class):a.attr(this.invalid_attr,"").parent().addClass(this.settings.error_class),!d){var g=this;e.each(function(){g.valid_oneof.call(g,this,null,null,!0)})}return f},reflow:function(a,b){var c=this,d=c.S("["+this.attr_name()+"]").attr("novalidate","novalidate");c.S(d).each(function(a,b){c.events(b)})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.accordion={name:"accordion",version:"5.5.3",settings:{content_class:"content",active_class:"active",multi_expand:!1,toggleable:!0,callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(b){var c=this,d=this.S;c.create(this.S(b)),d(this.scope).off(".fndtn.accordion").on("click.fndtn.accordion","["+this.attr_name()+"] > dd > a, ["+this.attr_name()+"] > li > a",function(b){var e=d(this).closest("["+c.attr_name()+"]"),f=c.attr_name()+"="+e.attr(c.attr_name()),g=e.data(c.attr_name(!0)+"-init")||c.settings,h=d("#"+this.href.split("#")[1]),i=a("> dd, > li",e),j=i.children("."+g.content_class),k=j.filter("."+g.active_class);return b.preventDefault(),e.attr(c.attr_name())&&(j=j.add("["+f+"] dd > ."+g.content_class+", ["+f+"] li > ."+g.content_class),i=i.add("["+f+"] dd, ["+f+"] li")),g.toggleable&&h.is(k)?(h.parent("dd, li").toggleClass(g.active_class,!1),h.toggleClass(g.active_class,!1),d(this).attr("aria-expanded",function(a,b){return"true"===b?"false":"true"}),g.callback(h),h.triggerHandler("toggled",[e]),void e.triggerHandler("toggled",[h])):(g.multi_expand||(j.removeClass(g.active_class),i.removeClass(g.active_class),i.children("a").attr("aria-expanded","false")),h.addClass(g.active_class).parent().addClass(g.active_class),g.callback(h),h.triggerHandler("toggled",[e]),e.triggerHandler("toggled",[h]),void d(this).attr("aria-expanded","true"))})},create:function(b){var c=this,d=b,e=a("> .accordion-navigation",d),f=d.data(c.attr_name(!0)+"-init")||c.settings;e.children("a").attr("aria-expanded","false"),e.has("."+f.content_class+"."+f.active_class).addClass(f.active_class).children("a").attr("aria-expanded","true"),f.multi_expand&&b.attr("aria-multiselectable","true")},toggle:function(a){var a="undefined"!=typeof a?a:{},c="undefined"!=typeof a.selector?a.selector:"",d="undefined"!=typeof a.toggle_state?a.toggle_state:"",e="undefined"!=typeof a.$accordion?a.$accordion:this.S(this.scope).closest("["+this.attr_name()+"]"),f=e.find("> dd"+c+", > li"+c);if(f.length<1)return b.console&&console.error("Selection not found.",c),!1;var g=this.S,h=this.settings.active_class;f.each(function(){var a=g(this),b=a.hasClass(h);(b&&"close"===d||!b&&"open"===d||""===d)&&a.find("> a").trigger("click.fndtn.accordion")})},open:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="open",this.toggle(a)},close:function(a){var a="undefined"!=typeof a?a:{};a.toggle_state="close",this.toggle(a)},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.alert={name:"alert",version:"5.5.3",settings:{callback:function(){}},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=this.S;a(this.scope).off(".alert").on("click.fndtn.alert","["+this.attr_name()+"] .close",function(a){var d=c(this).closest("["+b.attr_name()+"]"),e=d.data(b.attr_name(!0)+"-init")||b.settings;a.preventDefault(),Modernizr.csstransitions?(d.addClass("alert-close"),d.on("transitionend webkitTransitionEnd oTransitionEnd",function(a){c(this).trigger("close.fndtn.alert").remove(),e.callback()})):d.fadeOut(300,function(){c(this).trigger("close.fndtn.alert").remove(),e.callback()})})},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.clearing={name:"clearing",version:"5.5.3",settings:{templates:{viewing:'<a href="#" class="clearing-close">×</a><div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a><a href="#" class="clearing-main-next"><span></span></a></div><img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" /><img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'},close_selectors:".clearing-close, div.clearing-blackout",open_selectors:"",skip_selector:"",touch_label:"",init:!1,locked:!1},init:function(a,b,c){var d=this;Foundation.inherit(this,"throttle image_loaded"),this.bindings(b,c),d.S(this.scope).is("["+this.attr_name()+"]")?this.assemble(d.S("li",this.scope)):d.S("["+this.attr_name()+"]",this.scope).each(function(){d.assemble(d.S("li",this))})},events:function(d){var e=this,f=e.S,g=a(".scroll-container");g.length>0&&(this.scope=g),f(this.scope).off(".clearing").on("click.fndtn.clearing","ul["+this.attr_name()+"] li "+this.settings.open_selectors,function(a,b,c){var b=b||f(this),c=c||b,d=b.next("li"),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init"),h=f(a.target);a.preventDefault(),g||(e.init(),g=b.closest("["+e.attr_name()+"]").data(e.attr_name(!0)+"-init")),c.hasClass("visible")&&b[0]===c[0]&&d.length>0&&e.is_open(b)&&(c=d,h=f("img",c)),e.open(h,b,c),e.update_paddles(c)}).on("click.fndtn.clearing",".clearing-main-next",function(a){e.nav(a,"next")}).on("click.fndtn.clearing",".clearing-main-prev",function(a){e.nav(a,"prev")}).on("click.fndtn.clearing",this.settings.close_selectors,function(a){Foundation.libs.clearing.close(a,this)}),a(c).on("keydown.fndtn.clearing",function(a){e.keydown(a)}),f(b).off(".clearing").on("resize.fndtn.clearing",function(){e.resize()}),this.swipe_events(d)},swipe_events:function(a){var b=this,c=b.S;c(this.scope).on("touchstart.fndtn.clearing",".visible-img",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};c(this).data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.clearing",".visible-img",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var d=c(this).data("swipe-transition");if("undefined"==typeof d&&(d={}),d.delta_x=a.touches[0].pageX-d.start_page_x,Foundation.rtl&&(d.delta_x=-d.delta_x),"undefined"==typeof d.is_scrolling&&(d.is_scrolling=!!(d.is_scrolling||Math.abs(d.delta_x)<Math.abs(a.touches[0].pageY-d.start_page_y))),!d.is_scrolling&&!d.active){a.preventDefault();var e=d.delta_x<0?"next":"prev";d.active=!0,b.nav(a,e)}}}).on("touchend.fndtn.clearing",".visible-img",function(a){c(this).data("swipe-transition",{}),a.stopPropagation()})},assemble:function(b){var c=b.parent();if(!c.parent().hasClass("carousel")){c.after('<div id="foundationClearingHolder"></div>');var d=c.detach(),e="";if(null!=d[0]){e=d[0].outerHTML;var f=this.S("#foundationClearingHolder"),g=c.data(this.attr_name(!0)+"-init"),h={grid:'<div class="carousel">'+e+"</div>",viewing:g.templates.viewing},i='<div class="clearing-assembled"><div>'+h.viewing+h.grid+"</div></div>",j=this.settings.touch_label;Modernizr.touch&&(i=a(i).find(".clearing-touch-label").html(j).end()),f.after(i).remove()}}},open:function(b,d,e){function f(){setTimeout(function(){this.image_loaded(m,function(){1!==m.outerWidth()||o?g.call(this,m):f.call(this)}.bind(this))}.bind(this),100)}function g(b){var c=a(b);c.css("visibility","visible"),c.trigger("imageVisible"),i.css("overflow","hidden"),j.addClass("clearing-blackout"),k.addClass("clearing-container"),l.show(),this.fix_height(e).caption(h.S(".clearing-caption",l),h.S("img",e)).center_and_label(b,n).shift(d,e,function(){e.closest("li").siblings().removeClass("visible"),e.closest("li").addClass("visible")}),l.trigger("opened.fndtn.clearing")}var h=this,i=a(c.body),j=e.closest(".clearing-assembled"),k=h.S("div",j).first(),l=h.S(".visible-img",k),m=h.S("img",l).not(b),n=h.S(".clearing-touch-label",k),o=!1,p={};a("body").on("touchmove",function(a){a.preventDefault()}),m.error(function(){o=!0}),this.locked()||(l.trigger("open.fndtn.clearing"),p=this.load(b),p.interchange?m.attr("data-interchange",p.interchange).foundation("interchange","reflow"):m.attr("src",p.src).attr("data-interchange",""),m.css("visibility","hidden"),f.call(this))},close:function(b,d){b.preventDefault();var e,f,g=function(a){return/blackout/.test(a.selector)?a:a.closest(".clearing-blackout")}(a(d)),h=a(c.body);return d===b.target&&g&&(h.css("overflow",""),e=a("div",g).first(),f=a(".visible-img",e),f.trigger("close.fndtn.clearing"),this.settings.prev_index=0,a("ul["+this.attr_name()+"]",g).attr("style","").closest(".clearing-blackout").removeClass("clearing-blackout"),e.removeClass("clearing-container"),f.hide(),f.trigger("closed.fndtn.clearing")),a("body").off("touchmove"),!1},is_open:function(a){return a.parent().prop("style").length>0},keydown:function(b){var c=a(".clearing-blackout ul["+this.attr_name()+"]"),d=this.rtl?37:39,e=this.rtl?39:37,f=27;b.which===d&&this.go(c,"next"),b.which===e&&this.go(c,"prev"),b.which===f&&this.S("a.clearing-close").trigger("click.fndtn.clearing")},nav:function(b,c){var d=a("ul["+this.attr_name()+"]",".clearing-blackout");b.preventDefault(),this.go(d,c)},resize:function(){var b=a("img",".clearing-blackout .visible-img"),c=a(".clearing-touch-label",".clearing-blackout");b.length&&(this.center_and_label(b,c),b.trigger("resized.fndtn.clearing"))},fix_height:function(a){var b=a.parent().children(),c=this;return b.each(function(){var a=c.S(this),b=a.find("img");a.height()>b.outerHeight()&&a.addClass("fix-height")}).closest("ul").width(100*b.length+"%"),this},update_paddles:function(a){a=a.closest("li");var b=a.closest(".carousel").siblings(".visible-img");a.next().length>0?this.S(".clearing-main-next",b).removeClass("disabled"):this.S(".clearing-main-next",b).addClass("disabled"),a.prev().length>0?this.S(".clearing-main-prev",b).removeClass("disabled"):this.S(".clearing-main-prev",b).addClass("disabled")},center_and_label:function(a,b){return!this.rtl&&b.length>0?b.css({marginLeft:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10}):b.css({marginRight:-(b.outerWidth()/2),marginTop:-(a.outerHeight()/2)-b.outerHeight()-10,left:"auto",right:"50%"}),this},load:function(a){var b,c,d;return"A"===a[0].nodeName?(b=a.attr("href"),c=a.data("clearing-interchange")):(d=a.closest("a"),b=d.attr("href"),c=d.data("clearing-interchange")),this.preload(a),{src:b?b:a.attr("src"),interchange:b?c:a.data("clearing-interchange")}},preload:function(a){this.img(a.closest("li").next(),"next").img(a.closest("li").prev(),"prev")},img:function(b,c){if(b.length){var d,e,f,g=a(".clearing-preload-"+c),h=this.S("a",b);h.length?(d=h.attr("href"),e=h.data("clearing-interchange")):(f=this.S("img",b),d=f.attr("src"),e=f.data("clearing-interchange")),e?g.attr("data-interchange",e):(g.attr("src",d),g.attr("data-interchange",""))}return this},caption:function(a,b){var c=b.attr("data-caption");if(c){var d=a.get(0);d.innerHTML=c,a.show()}else a.text("").hide();return this},go:function(a,b){var c=this.S(".visible",a),d=c[b]();this.settings.skip_selector&&0!=d.find(this.settings.skip_selector).length&&(d=d[b]()),d.length&&this.S("img",d).trigger("click.fndtn.clearing",[c,d]).trigger("change.fndtn.clearing")},shift:function(a,b,c){var d,e=b.parent(),f=this.settings.prev_index||b.index(),g=this.direction(e,a,b),h=this.rtl?"right":"left",i=parseInt(e.css("left"),10),j=b.outerWidth(),k={};b.index()===f||/skip/.test(g)?/skip/.test(g)&&(d=b.index()-this.settings.up_count,this.lock(),d>0?(k[h]=-(d*j),e.animate(k,300,this.unlock())):(k[h]=0,e.animate(k,300,this.unlock()))):/left/.test(g)?(this.lock(),k[h]=i+j,e.animate(k,300,this.unlock())):/right/.test(g)&&(this.lock(),k[h]=i-j,e.animate(k,300,this.unlock())),c()},direction:function(a,b,c){var d,e=this.S("li",a),f=e.outerWidth()+e.outerWidth()/4,g=Math.floor(this.S(".clearing-container").outerWidth()/f)-1,h=e.index(c);return this.settings.up_count=g,d=this.adjacent(this.settings.prev_index,h)?h>g&&h>this.settings.prev_index?"right":h>g-1&&h<=this.settings.prev_index?"left":!1:"skip",this.settings.prev_index=h,d},adjacent:function(a,b){for(var c=b+1;c>=b-1;c--)if(c===a)return!0;return!1},lock:function(){this.settings.locked=!0},unlock:function(){this.settings.locked=!1},locked:function(){return this.settings.locked},off:function(){this.S(this.scope).off(".fndtn.clearing"),this.S(b).off(".fndtn.clearing")},reflow:function(){this.init()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.dropdown={name:"dropdown",version:"5.5.3",settings:{active_class:"open",disabled_class:"disabled",mega_class:"mega",align:"bottom",is_hover:!1,hover_timeout:150,opened:function(){},closed:function(){}},init:function(b,c,d){Foundation.inherit(this,"throttle"),a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(d){var e=this,f=e.S;f(this.scope).off(".dropdown").on("click.fndtn.dropdown","["+this.attr_name()+"]",function(b){var c=f(this).data(e.attr_name(!0)+"-init")||e.settings;(!c.is_hover||Modernizr.touch)&&(b.preventDefault(),f(this).parent("[data-reveal-id]").length&&b.stopPropagation(),e.toggle(a(this)))}).on("mouseenter.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c,d=f(this);clearTimeout(e.timeout),d.data(e.data_attr())?(b=f("#"+d.data(e.data_attr())),c=d):(b=d,c=f("["+e.attr_name()+'="'+b.attr("id")+'"]'));var g=c.data(e.attr_name(!0)+"-init")||e.settings;f(a.currentTarget).data(e.data_attr())&&g.is_hover&&e.closeall.call(e),g.is_hover&&e.open.apply(e,[b,c])}).on("mouseleave.fndtn.dropdown","["+this.attr_name()+"], ["+this.attr_name()+"-content]",function(a){var b,c=f(this);if(c.data(e.data_attr()))b=c.data(e.data_attr(!0)+"-init")||e.settings;else var d=f("["+e.attr_name()+'="'+f(this).attr("id")+'"]'),b=d.data(e.attr_name(!0)+"-init")||e.settings;e.timeout=setTimeout(function(){c.data(e.data_attr())?b.is_hover&&e.close.call(e,f("#"+c.data(e.data_attr()))):b.is_hover&&e.close.call(e,c)}.bind(this),b.hover_timeout)}).on("click.fndtn.dropdown",function(b){var d=f(b.target).closest("["+e.attr_name()+"-content]"),g=d.find("a");return g.length>0&&"false"!==d.attr("aria-autoclose")&&e.close.call(e,f("["+e.attr_name()+"-content]")),b.target!==c&&!a.contains(c.documentElement,b.target)||f(b.target).closest("["+e.attr_name()+"]").length>0?void 0:!f(b.target).data("revealId")&&d.length>0&&(f(b.target).is("["+e.attr_name()+"-content]")||a.contains(d.first()[0],b.target))?void b.stopPropagation():void e.close.call(e,f("["+e.attr_name()+"-content]"))}).on("opened.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.opened.call(this)}).on("closed.fndtn.dropdown","["+e.attr_name()+"-content]",function(){e.settings.closed.call(this)}),f(b).off(".dropdown").on("resize.fndtn.dropdown",e.throttle(function(){e.resize.call(e)},50)),this.resize()},close:function(b){var c=this;b.each(function(d){var e=a("["+c.attr_name()+"="+b[d].id+"]")||a("aria-controls="+b[d].id+"]");e.attr("aria-expanded","false"),c.S(this).hasClass(c.settings.active_class)&&(c.S(this).css(Foundation.rtl?"right":"left","-99999px").attr("aria-hidden","true").removeClass(c.settings.active_class).prev("["+c.attr_name()+"]").removeClass(c.settings.active_class).removeData("target"),c.S(this).trigger("closed.fndtn.dropdown",[b]))}),b.removeClass("f-open-"+this.attr_name(!0))},closeall:function(){var b=this;a.each(b.S(".f-open-"+this.attr_name(!0)),function(){b.close.call(b,b.S(this))})},open:function(a,b){this.css(a.addClass(this.settings.active_class),b),a.prev("["+this.attr_name()+"]").addClass(this.settings.active_class),a.data("target",b.get(0)).trigger("opened.fndtn.dropdown",[a,b]),a.attr("aria-hidden","false"),b.attr("aria-expanded","true"),a.focus(),a.addClass("f-open-"+this.attr_name(!0))},data_attr:function(){return this.namespace.length>0?this.namespace+"-"+this.name:this.name},toggle:function(a){if(!a.hasClass(this.settings.disabled_class)){var b=this.S("#"+a.data(this.data_attr()));0!==b.length&&(this.close.call(this,this.S("["+this.attr_name()+"-content]").not(b)),b.hasClass(this.settings.active_class)?(this.close.call(this,b),b.data("target")!==a.get(0)&&this.open.call(this,b,a)):this.open.call(this,b,a))}},resize:function(){var b=this.S("["+this.attr_name()+"-content].open"),c=a(b.data("target"));b.length&&c.length&&this.css(b,c)},css:function(a,b){var c=Math.max((b.width()-a.width())/2,8),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=a.parent().css("overflow-y")||a.parent().css("overflow");if(this.clear_idx(),this.small()){var f=this.dirs.bottom.call(a,b,d);a.attr("style","").removeClass("drop-left drop-right drop-top").css({position:"absolute",width:"95%","max-width":"none",top:f.top}),a.css(Foundation.rtl?"right":"left",c)}else if("visible"!==e){var g=b[0].offsetTop+b[0].offsetHeight;a.attr("style","").css({position:"absolute",top:g}),a.css(Foundation.rtl?"right":"left",c)}else this.style(a,b,d);return a},style:function(b,c,d){var e=a.extend({position:"absolute"},this.dirs[d.align].call(b,c,d));b.attr("style","").css(e)},dirs:{_base:function(a,d){var e=this.offsetParent(),f=e.offset(),g=a.offset();g.top-=f.top,g.left-=f.left,g.missRight=!1,g.missTop=!1,g.missLeft=!1,g.leftRightFlag=!1;var h,i=b.innerWidth;h=c.getElementsByClassName("row")[0]?c.getElementsByClassName("row")[0].clientWidth:i;var j=(i-h)/2,k=h;if(!this.hasClass("mega")&&!d.ignore_repositioning){var l=this.outerWidth(),m=a.offset().left;a.offset().top<=this.outerHeight()&&(g.missTop=!0,k=i-j,g.leftRightFlag=!0),m+l>m+j&&m-j>l&&(g.missRight=!0,g.missLeft=!1),0>=m-l&&(g.missLeft=!0,g.missRight=!1)}return g},top:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return this.addClass("drop-top"),1==d.missTop&&(d.top=d.top+a.outerHeight()+this.outerHeight(),
+this.removeClass("drop-top")),1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),Foundation.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top-this.outerHeight()}:{left:d.left,top:d.top-this.outerHeight()}},bottom:function(a,b){var c=Foundation.libs.dropdown,d=c.dirs._base.call(this,a,b);return 1==d.missRight&&(d.left=d.left-this.outerWidth()+a.outerWidth()),(a.outerWidth()<this.outerWidth()||c.small()||this.hasClass(b.mega_menu))&&c.adjust_pip(this,a,b,d),c.rtl?{left:d.left-this.outerWidth()+a.outerWidth(),top:d.top+a.outerHeight()}:{left:d.left,top:d.top+a.outerHeight()}},left:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);return this.addClass("drop-left"),1==c.missLeft&&(c.left=c.left+this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-left")),{left:c.left-this.outerWidth(),top:c.top}},right:function(a,b){var c=Foundation.libs.dropdown.dirs._base.call(this,a,b);this.addClass("drop-right"),1==c.missRight?(c.left=c.left-this.outerWidth(),c.top=c.top+a.outerHeight(),this.removeClass("drop-right")):c.triggeredRight=!0;var d=Foundation.libs.dropdown;return(a.outerWidth()<this.outerWidth()||d.small()||this.hasClass(b.mega_menu))&&d.adjust_pip(this,a,b,c),{left:c.left+a.outerWidth(),top:c.top}}},adjust_pip:function(a,b,c,d){var e=Foundation.stylesheet,f=8;a.hasClass(c.mega_class)?f=d.left+b.outerWidth()/2-8:this.small()&&(f+=d.left-8),this.rule_idx=e.cssRules.length;var g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;";1==d.missRight&&(f=a.outerWidth()-23,g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left: "+f+"px;",j="left: "+(f-1)+"px;"),1==d.triggeredRight&&(g=".f-dropdown.open:before",h=".f-dropdown.open:after",i="left:-12px;",j="left:-14px;"),e.insertRule?(e.insertRule([g,"{",i,"}"].join(" "),this.rule_idx),e.insertRule([h,"{",j,"}"].join(" "),this.rule_idx+1)):(e.addRule(g,i,this.rule_idx),e.addRule(h,j,this.rule_idx+1))},clear_idx:function(){var a=Foundation.stylesheet;"undefined"!=typeof this.rule_idx&&(a.deleteRule(this.rule_idx),a.deleteRule(this.rule_idx),delete this.rule_idx)},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},off:function(){this.S(this.scope).off(".fndtn.dropdown"),this.S("html, body").off(".fndtn.dropdown"),this.S(b).off(".fndtn.dropdown"),this.S("[data-dropdown-content]").off(".fndtn.dropdown")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.equalizer={name:"equalizer",version:"5.5.3",settings:{use_tallest:!0,before_height_change:a.noop,after_height_change:a.noop,equalize_on_stack:!1,act_on_hidden_el:!1},init:function(a,b,c){Foundation.inherit(this,"image_loaded"),this.bindings(b,c),this.reflow()},events:function(){this.S(b).off(".equalizer").on("resize.fndtn.equalizer",function(a){this.reflow()}.bind(this))},equalize:function(b){var c,d,e=!1,f=b.data("equalizer"),g=b.data(this.attr_name(!0)+"-init")||this.settings;if(c=g.act_on_hidden_el?f?b.find("["+this.attr_name()+'-watch="'+f+'"]'):b.find("["+this.attr_name()+"-watch]"):f?b.find("["+this.attr_name()+'-watch="'+f+'"]:visible'):b.find("["+this.attr_name()+"-watch]:visible"),0!==c.length&&(g.before_height_change(),b.trigger("before-height-change.fndth.equalizer"),c.height("inherit"),g.equalize_on_stack!==!1||(d=c.first().offset().top,c.each(function(){return a(this).offset().top!==d?(e=!0,!1):void 0}),!e))){var h=c.map(function(){return a(this).outerHeight(!1)}).get();if(g.use_tallest){var i=Math.max.apply(null,h);c.css("height",i)}else{var j=Math.min.apply(null,h);c.css("height",j)}g.after_height_change(),b.trigger("after-height-change.fndtn.equalizer")}},reflow:function(){var b=this;this.S("["+this.attr_name()+"]",this.scope).each(function(){var c=a(this),d=c.data("equalizer-mq"),e=!0;d&&(d="is_"+d.replace(/-/g,"_"),Foundation.utils.hasOwnProperty(d)&&(e=!1)),b.image_loaded(b.S("img",this),function(){if(e||Foundation.utils[d]())b.equalize(c);else{var a=c.find("["+b.attr_name()+"-watch]:visible");a.css("height","auto")}})})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.interchange={name:"interchange",version:"5.5.3",cache:{},images_loaded:!1,nodes_loaded:!1,settings:{load_attr:"interchange",named_queries:{"default":"only screen",small:Foundation.media_queries.small,"small-only":Foundation.media_queries["small-only"],medium:Foundation.media_queries.medium,"medium-only":Foundation.media_queries["medium-only"],large:Foundation.media_queries.large,"large-only":Foundation.media_queries["large-only"],xlarge:Foundation.media_queries.xlarge,"xlarge-only":Foundation.media_queries["xlarge-only"],xxlarge:Foundation.media_queries.xxlarge,landscape:"only screen and (orientation: landscape)",portrait:"only screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx)"},directives:{replace:function(b,c,d){if(null!==b&&/IMG/.test(b[0].nodeName)){var e=a.each(b,function(){this.src=c});if(new RegExp(c,"i").test(e))return;return b.attr("src",c),d(b[0].src)}var f=b.data(this.data_attr+"-last-path"),g=this;if(f!=c)return/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(c)?(a(b).css("background-image","url("+c+")"),b.data("interchange-last-path",c),d(c)):a.get(c,function(a){b.html(a),b.data(g.data_attr+"-last-path",c),d()})}}},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.data_attr=this.set_data_attr(),a.extend(!0,this.settings,c,d),this.bindings(c,d),this.reflow()},get_media_hash:function(){var a="";for(var b in this.settings.named_queries)a+=matchMedia(this.settings.named_queries[b]).matches.toString();return a},events:function(){var c,d=this;return a(b).off(".interchange").on("resize.fndtn.interchange",d.throttle(function(){var a=d.get_media_hash();a!==c&&d.resize(),c=a},50)),this},resize:function(){var b=this.cache;if(!this.images_loaded||!this.nodes_loaded)return void setTimeout(a.proxy(this.resize,this),50);for(var c in b)if(b.hasOwnProperty(c)){var d=this.results(c,b[c]);d&&this.settings.directives[d.scenario[1]].call(this,d.el,d.scenario[0],function(a){if(arguments[0]instanceof Array)var b=arguments[0];else var b=Array.prototype.slice.call(arguments,0);return function(){a.el.trigger(a.scenario[1],b)}}(d))}},results:function(a,b){var c=b.length;if(c>0)for(var d=this.S("["+this.add_namespace("data-uuid")+'="'+a+'"]');c--;){var e,f=b[c][2];if(e=this.settings.named_queries.hasOwnProperty(f)?matchMedia(this.settings.named_queries[f]):matchMedia(f),e.matches)return{el:d,scenario:b[c]}}return!1},load:function(a,b){return("undefined"==typeof this["cached_"+a]||b)&&this["update_"+a](),this["cached_"+a]},update_images:function(){var a=this.S("img["+this.data_attr+"]"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cache={},this.cached_images=[],this.images_loaded=0===b;c--;){if(d++,a[c]){var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_images.push(a[c])}d===b&&(this.images_loaded=!0,this.enhance("images"))}return this},update_nodes:function(){var a=this.S("["+this.data_attr+"]").not("img"),b=a.length,c=b,d=0,e=this.data_attr;for(this.cached_nodes=[],this.nodes_loaded=0===b;c--;){d++;var f=a[c].getAttribute(e)||"";f.length>0&&this.cached_nodes.push(a[c]),d===b&&(this.nodes_loaded=!0,this.enhance("nodes"))}return this},enhance:function(c){for(var d=this["cached_"+c].length;d--;)this.object(a(this["cached_"+c][d]));return a(b).trigger("resize.fndtn.interchange")},convert_directive:function(a){var b=this.trim(a);return b.length>0?b:"replace"},parse_scenario:function(a){var b=a[0].match(/(.+),\s*(\w+)\s*$/),c=a[1].match(/(.*)\)/);if(b)var d=b[1],e=b[2];else var f=a[0].split(/,\s*$/),d=f[0],e="";return[this.trim(d),this.convert_directive(e),this.trim(c[1])]},object:function(a){var b=this.parse_data_attr(a),c=[],d=b.length;if(d>0)for(;d--;){var e=b[d].split(/,\s?\(/);if(e.length>1){var f=this.parse_scenario(e);c.push(f)}}return this.store(a,c)},store:function(a,b){var c=this.random_str(),d=a.data(this.add_namespace("uuid",!0));return this.cache[d]?this.cache[d]:(a.attr(this.add_namespace("data-uuid"),c),this.cache[c]=b)},trim:function(b){return"string"==typeof b?a.trim(b):b},set_data_attr:function(a){return a?this.namespace.length>0?this.namespace+"-"+this.settings.load_attr:this.settings.load_attr:this.namespace.length>0?"data-"+this.namespace+"-"+this.settings.load_attr:"data-"+this.settings.load_attr},parse_data_attr:function(a){for(var b=a.attr(this.attr_name()).split(/\[(.*?)\]/),c=b.length,d=[];c--;)b[c].replace(/[\W\d]+/,"").length>4&&d.push(b[c]);return d},reflow:function(){this.load("images",!0),this.load("nodes",!0)}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.joyride={name:"joyride",version:"5.5.3",defaults:{expose:!1,modal:!0,keyboard:!0,tip_location:"bottom",nub_position:"auto",scroll_speed:1500,scroll_animation:"linear",timer:0,start_timer_on_click:!0,start_offset:0,next_button:!0,prev_button:!0,tip_animation:"fade",pause_after:[],exposed:[],tip_animation_fade_speed:300,cookie_monster:!1,cookie_name:"joyride",cookie_domain:!1,cookie_expires:365,tip_container:"body",abort_on_close:!0,tip_location_patterns:{top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},post_ride_callback:function(){},post_step_callback:function(){},pre_step_callback:function(){},pre_ride_callback:function(){},post_expose_callback:function(){},template:{link:'<a href="#close" class="joyride-close-tip">×</a>',timer:'<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',tip:'<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',wrapper:'<div class="joyride-content-wrapper"></div>',button:'<a href="#" class="small button joyride-next-tip"></a>',prev_button:'<a href="#" class="small button joyride-prev-tip"></a>',modal:'<div class="joyride-modal-bg"></div>',expose:'<div class="joyride-expose-wrapper"></div>',expose_cover:'<div class="joyride-expose-cover"></div>'},expose_add_class:""},init:function(b,c,d){Foundation.inherit(this,"throttle random_str"),this.settings=this.settings||a.extend({},this.defaults,d||c),this.bindings(c,d)},go_next:function(){this.settings.$li.next().length<1?this.end():this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(),this.startTimer()):(this.hide(),this.show())},go_prev:function(){this.settings.$li.prev().length<1||(this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(null,!0),this.startTimer()):(this.hide(),this.show(null,!0)))},events:function(){var c=this;a(this.scope).off(".joyride").on("click.fndtn.joyride",".joyride-next-tip, .joyride-modal-bg",function(a){a.preventDefault(),this.go_next()}.bind(this)).on("click.fndtn.joyride",".joyride-prev-tip",function(a){a.preventDefault(),this.go_prev()}.bind(this)).on("click.fndtn.joyride",".joyride-close-tip",function(a){a.preventDefault(),this.end(this.settings.abort_on_close)}.bind(this)).on("keyup.fndtn.joyride",function(a){if(this.settings.keyboard&&this.settings.riding)switch(a.which){case 39:a.preventDefault(),this.go_next();break;case 37:a.preventDefault(),this.go_prev();break;case 27:a.preventDefault(),this.end(this.settings.abort_on_close)}}.bind(this)),a(b).off(".joyride").on("resize.fndtn.joyride",c.throttle(function(){if(a("["+c.attr_name()+"]").length>0&&c.settings.$next_tip&&c.settings.riding){if(c.settings.exposed.length>0){var b=a(c.settings.exposed);b.each(function(){var b=a(this);c.un_expose(b),c.expose(b)})}c.is_phone()?c.pos_phone():c.pos_default(!1)}},100))},start:function(){var b=this,c=a("["+this.attr_name()+"]",this.scope),d=["timer","scrollSpeed","startOffset","tipAnimationFadeSpeed","cookieExpires"],e=d.length;!c.length>0||(this.settings.init||this.events(),this.settings=c.data(this.attr_name(!0)+"-init"),this.settings.$content_el=c,this.settings.$body=a(this.settings.tip_container),this.settings.body_offset=a(this.settings.tip_container).position(),this.settings.$tip_content=this.settings.$content_el.find("> li"),this.settings.paused=!1,this.settings.attempts=0,this.settings.riding=!0,"function"!=typeof a.cookie&&(this.settings.cookie_monster=!1),(!this.settings.cookie_monster||this.settings.cookie_monster&&!a.cookie(this.settings.cookie_name))&&(this.settings.$tip_content.each(function(c){var f=a(this);this.settings=a.extend({},b.defaults,b.data_options(f));for(var g=e;g--;)b.settings[d[g]]=parseInt(b.settings[d[g]],10);b.create({$li:f,index:c})}),!this.settings.start_timer_on_click&&this.settings.timer>0?(this.show("init"),this.startTimer()):this.show("init")))},resume:function(){this.set_li(),this.show()},tip_template:function(b){var c,d;return b.tip_class=b.tip_class||"",c=a(this.settings.template.tip).addClass(b.tip_class),d=a.trim(a(b.li).html())+this.prev_button_text(b.prev_button_text,b.index)+this.button_text(b.button_text)+this.settings.template.link+this.timer_instance(b.index),c.append(a(this.settings.template.wrapper)),c.first().attr(this.add_namespace("data-index"),b.index),a(".joyride-content-wrapper",c).append(d),c[0]},timer_instance:function(b){var c;return c=0===b&&this.settings.start_timer_on_click&&this.settings.timer>0||0===this.settings.timer?"":a(this.settings.template.timer)[0].outerHTML},button_text:function(b){return this.settings.tip_settings.next_button?(b=a.trim(b)||"Next",b=a(this.settings.template.button).append(b)[0].outerHTML):b="",b},prev_button_text:function(b,c){return this.settings.tip_settings.prev_button?(b=a.trim(b)||"Previous",b=0==c?a(this.settings.template.prev_button).append(b).addClass("disabled")[0].outerHTML:a(this.settings.template.prev_button).append(b)[0].outerHTML):b="",b},create:function(b){this.settings.tip_settings=a.extend({},this.settings,this.data_options(b.$li));var c=b.$li.attr(this.add_namespace("data-button"))||b.$li.attr(this.add_namespace("data-text")),d=b.$li.attr(this.add_namespace("data-button-prev"))||b.$li.attr(this.add_namespace("data-prev-text")),e=b.$li.attr("class"),f=a(this.tip_template({tip_class:e,index:b.index,button_text:c,prev_button_text:d,li:b.$li}));a(this.settings.tip_container).append(f)},show:function(b,c){var e=null;if(this.settings.$li===d||-1===a.inArray(this.settings.$li.index(),this.settings.pause_after))if(this.settings.paused?this.settings.paused=!1:this.set_li(b,c),this.settings.attempts=0,this.settings.$li.length&&this.settings.$target.length>0){if(b&&(this.settings.pre_ride_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.show_modal()),this.settings.pre_step_callback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.settings.expose&&this.expose(),this.settings.tip_settings=a.extend({},this.settings,this.data_options(this.settings.$li)),this.settings.timer=parseInt(this.settings.timer,10),this.settings.tip_settings.tip_location_pattern=this.settings.tip_location_patterns[this.settings.tip_settings.tip_location],!/body/i.test(this.settings.$target.selector)&&!this.settings.expose){var f=a(".joyride-modal-bg");/pop/i.test(this.settings.tipAnimation)?f.hide():f.fadeOut(this.settings.tipAnimationFadeSpeed),this.scroll_to()}this.is_phone()?this.pos_phone(!0):this.pos_default(!0),e=this.settings.$next_tip.find(".joyride-timer-indicator"),/pop/i.test(this.settings.tip_animation)?(e.width(0),this.settings.timer>0?(this.settings.$next_tip.show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.show()):/fade/i.test(this.settings.tip_animation)&&(e.width(0),this.settings.timer>0?(this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed).show(),setTimeout(function(){e.animate({width:e.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tip_animation_fade_speed)):this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed)),this.settings.$current_tip=this.settings.$next_tip}else this.settings.$li&&this.settings.$target.length<1?this.show(b,c):this.end();else this.settings.paused=!0},is_phone:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},hide:function(){this.settings.modal&&this.settings.expose&&this.un_expose(),this.settings.modal||a(".joyride-modal-bg").hide(),this.settings.$current_tip.css("visibility","hidden"),setTimeout(a.proxy(function(){this.hide(),this.css("visibility","visible")},this.settings.$current_tip),0),this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip)},set_li:function(a,b){a?(this.settings.$li=this.settings.$tip_content.eq(this.settings.start_offset),this.set_next_tip(),this.settings.$current_tip=this.settings.$next_tip):(b?this.settings.$li=this.settings.$li.prev():this.settings.$li=this.settings.$li.next(),this.set_next_tip()),this.set_target()},set_next_tip:function(){this.settings.$next_tip=a(".joyride-tip-guide").eq(this.settings.$li.index()),this.settings.$next_tip.data("closed","")},set_target:function(){var b=this.settings.$li.attr(this.add_namespace("data-class")),d=this.settings.$li.attr(this.add_namespace("data-id")),e=function(){return d?a(c.getElementById(d)):b?a("."+b).first():a("body")};this.settings.$target=e()},scroll_to:function(){var c,d;c=a(b).height()/2,d=Math.ceil(this.settings.$target.offset().top-c+this.settings.$next_tip.outerHeight()),0!=d&&a("html, body").stop().animate({scrollTop:d},this.settings.scroll_speed,"swing")},paused:function(){return-1===a.inArray(this.settings.$li.index()+1,this.settings.pause_after)},restart:function(){this.hide(),this.settings.$li=d,this.show("init")},pos_default:function(a){var b=this.settings.$next_tip.find(".joyride-nub"),c=Math.ceil(b.outerWidth()/2),d=Math.ceil(b.outerHeight()/2),e=a||!1;if(e&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector))this.settings.$li.length&&this.pos_modal(b);else{var f=this.settings.tip_settings.tipAdjustmentY?parseInt(this.settings.tip_settings.tipAdjustmentY):0,g=this.settings.tip_settings.tipAdjustmentX?parseInt(this.settings.tip_settings.tipAdjustmentX):0;this.bottom()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()+g}):this.settings.$next_tip.css({top:this.settings.$target.offset().top+d+this.settings.$target.outerHeight()+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"top")):this.top()?(this.rtl?this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+this.settings.$target.outerWidth()-this.settings.$next_tip.outerWidth()}):this.settings.$next_tip.css({top:this.settings.$target.offset().top-this.settings.$next_tip.outerHeight()-d+f,left:this.settings.$target.offset().left+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"bottom")):this.right()?(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.outerWidth()+this.settings.$target.offset().left+c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"left")):this.left()&&(this.settings.$next_tip.css({top:this.settings.$target.offset().top+f,left:this.settings.$target.offset().left-this.settings.$next_tip.outerWidth()-c+g}),this.nub_position(b,this.settings.tip_settings.nub_position,"right")),!this.visible(this.corners(this.settings.$next_tip))&&this.settings.attempts<this.settings.tip_settings.tip_location_pattern.length&&(b.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),this.settings.tip_settings.tip_location=this.settings.tip_settings.tip_location_pattern[this.settings.attempts],this.settings.attempts++,this.pos_default())}e&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_phone:function(b){var c=this.settings.$next_tip.outerHeight(),d=(this.settings.$next_tip.offset(),this.settings.$target.outerHeight()),e=a(".joyride-nub",this.settings.$next_tip),f=Math.ceil(e.outerHeight()/2),g=b||!1;e.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),g&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),/body/i.test(this.settings.$target.selector)?this.settings.$li.length&&this.pos_modal(e):this.top()?(this.settings.$next_tip.offset({top:this.settings.$target.offset().top-c-f}),e.addClass("bottom")):(this.settings.$next_tip.offset({top:this.settings.$target.offset().top+d+f}),e.addClass("top")),g&&(this.settings.$next_tip.hide(),this.settings.$next_tip.css("visibility","visible"))},pos_modal:function(a){this.center(),a.hide(),this.show_modal()},show_modal:function(){if(!this.settings.$next_tip.data("closed")){var b=a(".joyride-modal-bg");if(b.length<1){var b=a(this.settings.template.modal);b.appendTo("body")}/pop/i.test(this.settings.tip_animation)?b.show():b.fadeIn(this.settings.tip_animation_fade_speed)}},expose:function(){var c,d,e,f,g,h="expose-"+this.random_str(6);if(arguments.length>0&&arguments[0]instanceof a)e=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;e=this.settings.$target}return e.length<1?(b.console&&console.error("element not valid",e),!1):(c=a(this.settings.template.expose),this.settings.$body.append(c),c.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),d=a(this.settings.template.expose_cover),f={zIndex:e.css("z-index"),position:e.css("position")},g=null==e.attr("class")?"":e.attr("class"),e.css("z-index",parseInt(c.css("z-index"))+1),"static"==f.position&&e.css("position","relative"),e.data("expose-css",f),e.data("orig-class",g),e.attr("class",g+" "+this.settings.expose_add_class),d.css({top:e.offset().top,left:e.offset().left,width:e.outerWidth(!0),height:e.outerHeight(!0)}),this.settings.modal&&this.show_modal(),this.settings.$body.append(d),c.addClass(h),d.addClass(h),e.data("expose",h),this.settings.post_expose_callback(this.settings.$li.index(),this.settings.$next_tip,e),void this.add_exposed(e))},un_expose:function(){var c,d,e,f,g,h=!1;if(arguments.length>0&&arguments[0]instanceof a)d=arguments[0];else{if(!this.settings.$target||/body/i.test(this.settings.$target.selector))return!1;d=this.settings.$target}return d.length<1?(b.console&&console.error("element not valid",d),!1):(c=d.data("expose"),e=a("."+c),arguments.length>1&&(h=arguments[1]),h===!0?a(".joyride-expose-wrapper,.joyride-expose-cover").remove():e.remove(),f=d.data("expose-css"),"auto"==f.zIndex?d.css("z-index",""):d.css("z-index",f.zIndex),f.position!=d.css("position")&&("static"==f.position?d.css("position",""):d.css("position",f.position)),g=d.data("orig-class"),d.attr("class",g),d.removeData("orig-classes"),d.removeData("expose"),d.removeData("expose-z-index"),void this.remove_exposed(d))},add_exposed:function(b){this.settings.exposed=this.settings.exposed||[],b instanceof a||"object"==typeof b?this.settings.exposed.push(b[0]):"string"==typeof b&&this.settings.exposed.push(b)},remove_exposed:function(b){var c,d;for(b instanceof a?c=b[0]:"string"==typeof b&&(c=b),this.settings.exposed=this.settings.exposed||[],d=this.settings.exposed.length;d--;)if(this.settings.exposed[d]==c)return void this.settings.exposed.splice(d,1)},center:function(){var c=a(b);return this.settings.$next_tip.css({top:(c.height()-this.settings.$next_tip.outerHeight())/2+c.scrollTop(),left:(c.width()-this.settings.$next_tip.outerWidth())/2+c.scrollLeft()}),!0},bottom:function(){return/bottom/i.test(this.settings.tip_settings.tip_location)},top:function(){return/top/i.test(this.settings.tip_settings.tip_location)},right:function(){return/right/i.test(this.settings.tip_settings.tip_location)},left:function(){return/left/i.test(this.settings.tip_settings.tip_location)},corners:function(c){if(0===c.length)return[!1,!1,!1,!1];var d=a(b),e=d.height()/2,f=Math.ceil(this.settings.$target.offset().top-e+this.settings.$next_tip.outerHeight()),g=d.width()+d.scrollLeft(),h=d.height()+f,i=d.height()+d.scrollTop(),j=d.scrollTop();return j>f&&(j=0>f?0:f),h>i&&(i=h),[c.offset().top<j,g<c.offset().left+c.outerWidth(),i<c.offset().top+c.outerHeight(),d.scrollLeft()>c.offset().left]},visible:function(a){for(var b=a.length;b--;)if(a[b])return!1;return!0},nub_position:function(a,b,c){"auto"===b?a.addClass(c):a.addClass(b)},startTimer:function(){this.settings.$li.length?this.settings.automate=setTimeout(function(){this.hide(),this.show(),this.startTimer()}.bind(this),this.settings.timer):clearTimeout(this.settings.automate)},end:function(b){this.settings.cookie_monster&&a.cookie(this.settings.cookie_name,"ridden",{expires:this.settings.cookie_expires,domain:this.settings.cookie_domain}),this.settings.timer>0&&clearTimeout(this.settings.automate),this.settings.modal&&this.settings.expose&&this.un_expose(),a(this.scope).off("keyup.joyride"),this.settings.$next_tip.data("closed",!0),this.settings.riding=!1,a(".joyride-modal-bg").hide(),this.settings.$current_tip.hide(),("undefined"==typeof b||b===!1)&&(this.settings.post_step_callback(this.settings.$li.index(),this.settings.$current_tip),this.settings.post_ride_callback(this.settings.$li.index(),this.settings.$current_tip)),a(".joyride-tip-guide").remove()},off:function(){a(this.scope).off(".joyride"),a(b).off(".joyride"),a(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),a(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(this.settings.automate)},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs["magellan-expedition"]={name:"magellan-expedition",version:"5.5.3",settings:{active_class:"active",threshold:0,destination_threshold:20,throttle_delay:30,fixed_top:0,offset_by_height:!0,duration:700,easing:"swing"},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c)},events:function(){var b=this,c=b.S,d=b.settings;b.set_expedition_position(),c(b.scope).off(".magellan").on("click.fndtn.magellan","["+b.add_namespace("data-magellan-arrival")+"] a[href*=#]",function(c){var d=this.hostname===location.hostname||!this.hostname,e=b.filterPathname(location.pathname)===b.filterPathname(this.pathname),f=this.hash.replace(/(:|\.|\/)/g,"\\$1"),g=this;if(d&&e&&f){c.preventDefault();var h=a(this).closest("["+b.attr_name()+"]"),i=h.data("magellan-expedition-init"),j=this.hash.split("#").join(""),k=a('a[name="'+j+'"]');0===k.length&&(k=a("#"+j));var l=k.offset().top-i.destination_threshold+1;i.offset_by_height&&(l-=h.outerHeight()),a("html, body").stop().animate({scrollTop:l},i.duration,i.easing,function(){history.pushState?history.pushState(null,null,g.pathname+g.search+"#"+j):location.hash=g.pathname+g.search+"#"+j})}}).on("scroll.fndtn.magellan",b.throttle(this.check_for_arrivals.bind(this),d.throttle_delay))},check_for_arrivals:function(){var a=this;a.update_arrivals(),a.update_expedition_positions()},set_expedition_position:function(){var b=this;a("["+this.attr_name()+"=fixed]",b.scope).each(function(c,d){var e,f,g=a(this),h=g.data("magellan-expedition-init"),i=g.attr("styles");g.attr("style",""),e=g.offset().top+h.threshold,f=parseInt(g.data("magellan-fixed-top")),isNaN(f)||(b.settings.fixed_top=f),g.data(b.data_attr("magellan-top-offset"),e),g.attr("style",i)})},update_expedition_positions:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"=fixed]",c.scope).each(function(){var b=a(this),e=b.data("magellan-expedition-init"),f=b.attr("style"),g=b.data("magellan-top-offset");if(d+c.settings.fixed_top>=g){var h=b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]");0===h.length&&(h=b.clone(),h.removeAttr(c.attr_name()),h.attr(c.add_namespace("data-magellan-expedition-clone"),""),b.before(h)),b.css({position:"fixed",top:e.fixed_top}).addClass("fixed")}else b.prev("["+c.add_namespace("data-magellan-expedition-clone")+"]").remove(),b.attr("style",f).css("position","").css("top","").removeClass("fixed")})},update_arrivals:function(){var c=this,d=a(b).scrollTop();a("["+this.attr_name()+"]",c.scope).each(function(){var b=a(this),e=b.data(c.attr_name(!0)+"-init"),f=c.offsets(b,d),g=b.find("["+c.add_namespace("data-magellan-arrival")+"]"),h=!1;f.each(function(a,d){if(d.viewport_offset>=d.top_offset){var f=b.find("["+c.add_namespace("data-magellan-arrival")+"]");return f.not(d.arrival).removeClass(e.active_class),d.arrival.addClass(e.active_class),h=!0,!0}}),h||g.removeClass(e.active_class)})},offsets:function(b,c){var d=this,e=b.data(d.attr_name(!0)+"-init"),f=c;return b.find("["+d.add_namespace("data-magellan-arrival")+"]").map(function(c,g){var h=a(this).data(d.data_attr("magellan-arrival")),i=a("["+d.add_namespace("data-magellan-destination")+"="+h+"]");if(i.length>0){var j=i.offset().top-e.destination_threshold;return e.offset_by_height&&(j-=b.outerHeight()),j=Math.floor(j),{destination:i,arrival:a(this),top_offset:j,viewport_offset:f}}}).sort(function(a,b){return a.top_offset<b.top_offset?-1:a.top_offset>b.top_offset?1:0})},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){this.S(this.scope).off(".magellan"),this.S(b).off(".magellan")},filterPathname:function(a){return a=a||"",a.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},reflow:function(){var b=this;a("["+b.add_namespace("data-magellan-expedition-clone")+"]",b.scope).remove()}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.offcanvas={name:"offcanvas",version:"5.5.3",settings:{open_method:"move",close_on_click:!1},init:function(a,b,c){this.bindings(b,c)},events:function(){var b=this,c=b.S,d="",e="",f="",g="",h="";"move"===this.settings.open_method?(d="move-",e="right",f="left",g="top",h="bottom"):"overlap_single"===this.settings.open_method?(d="offcanvas-overlap-",e="right",f="left",g="top",h="bottom"):"overlap"===this.settings.open_method&&(d="offcanvas-overlap"),c(this.scope).off(".offcanvas").on("click.fndtn.offcanvas",".left-off-canvas-toggle",function(f){b.click_toggle_class(f,d+e),"overlap"!==b.settings.open_method&&c(".left-submenu").removeClass(d+e),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".left-off-canvas-menu a",function(f){var g=b.get_settings(f),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(f.preventDefault(),c(this).siblings(".left-submenu").toggleClass(d+e)):h.hasClass("back")&&(f.preventDefault(),h.parent().removeClass(d+e)):(b.hide.call(b,d+e,b.get_wrapper(f)),h.parent().removeClass(d+e)),a(".left-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-toggle",function(e){b.click_toggle_class(e,d+f),"overlap"!==b.settings.open_method&&c(".right-submenu").removeClass(d+f),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".right-off-canvas-menu a",function(e){var g=b.get_settings(e),h=c(this).parent();!g.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".right-submenu").toggleClass(d+f)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+f)):(b.hide.call(b,d+f,b.get_wrapper(e)),h.parent().removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true");
+}).on("click.fndtn.offcanvas",".top-off-canvas-toggle",function(e){b.click_toggle_class(e,d+h),"overlap"!==b.settings.open_method&&c(".top-submenu").removeClass(d+h),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".top-off-canvas-menu a",function(e){var f=b.get_settings(e),g=c(this).parent();!f.close_on_click||g.hasClass("has-submenu")||g.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".top-submenu").toggleClass(d+h)):g.hasClass("back")&&(e.preventDefault(),g.parent().removeClass(d+h)):(b.hide.call(b,d+h,b.get_wrapper(e)),g.parent().removeClass(d+h)),a(".top-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-toggle",function(e){b.click_toggle_class(e,d+g),"overlap"!==b.settings.open_method&&c(".bottom-submenu").removeClass(d+g),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".bottom-off-canvas-menu a",function(e){var f=b.get_settings(e),h=c(this).parent();!f.close_on_click||h.hasClass("has-submenu")||h.hasClass("back")?c(this).parent().hasClass("has-submenu")?(e.preventDefault(),c(this).siblings(".bottom-submenu").toggleClass(d+g)):h.hasClass("back")&&(e.preventDefault(),h.parent().removeClass(d+g)):(b.hide.call(b,d+g,b.get_wrapper(e)),h.parent().removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(g){b.click_remove_class(g,d+f),c(".right-submenu").removeClass(d+f),e&&(b.click_remove_class(g,d+e),c(".left-submenu").removeClass(d+f)),a(".right-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+f),a(".left-off-canvas-toggle").attr("aria-expanded","false"),e&&(b.click_remove_class(c,d+e),a(".right-off-canvas-toggle").attr("aria-expanded","false"))}).on("click.fndtn.offcanvas",".exit-off-canvas",function(e){b.click_remove_class(e,d+g),c(".bottom-submenu").removeClass(d+g),h&&(b.click_remove_class(e,d+h),c(".top-submenu").removeClass(d+g)),a(".bottom-off-canvas-toggle").attr("aria-expanded","true")}).on("click.fndtn.offcanvas",".exit-off-canvas",function(c){b.click_remove_class(c,d+g),a(".top-off-canvas-toggle").attr("aria-expanded","false"),h&&(b.click_remove_class(c,d+h),a(".bottom-off-canvas-toggle").attr("aria-expanded","false"))})},toggle:function(a,b){b=b||this.get_wrapper(),b.is("."+a)?this.hide(a,b):this.show(a,b)},show:function(a,b){b=b||this.get_wrapper(),b.trigger("open.fndtn.offcanvas"),b.addClass(a)},hide:function(a,b){b=b||this.get_wrapper(),b.trigger("close.fndtn.offcanvas"),b.removeClass(a)},click_toggle_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.toggle(b,c)},click_remove_class:function(a,b){a.preventDefault();var c=this.get_wrapper(a);this.hide(b,c)},get_settings:function(a){var b=this.S(a.target).closest("["+this.attr_name()+"]");return b.data(this.attr_name(!0)+"-init")||this.settings},get_wrapper:function(a){var b=this.S(a?a.target:this.scope).closest(".off-canvas-wrap");return 0===b.length&&(b=this.S(".off-canvas-wrap")),b},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";var e=function(){},f=function(e,f){if(e.hasClass(f.slides_container_class))return this;var j,k,l,m,n,o,p=this,q=e,r=0,s=!1;p.slides=function(){return q.children(f.slide_selector)},p.slides().first().addClass(f.active_slide_class),p.update_slide_number=function(b){f.slide_number&&(k.find("span:first").text(parseInt(b)+1),k.find("span:last").text(p.slides().length)),f.bullets&&(l.children().removeClass(f.bullets_active_class),a(l.children().get(b)).addClass(f.bullets_active_class))},p.update_active_link=function(b){var c=a('[data-orbit-link="'+p.slides().eq(b).attr("data-orbit-slide")+'"]');c.siblings().removeClass(f.bullets_active_class),c.addClass(f.bullets_active_class)},p.build_markup=function(){q.wrap('<div class="'+f.container_class+'"></div>'),j=q.parent(),q.addClass(f.slides_container_class),f.stack_on_small&&j.addClass(f.stack_on_small_class),f.navigation_arrows&&(j.append(a('<a href="#"><span></span></a>').addClass(f.prev_class)),j.append(a('<a href="#"><span></span></a>').addClass(f.next_class))),f.timer&&(m=a("<div>").addClass(f.timer_container_class),m.append("<span>"),m.append(a("<div>").addClass(f.timer_progress_class)),m.addClass(f.timer_paused_class),j.append(m)),f.slide_number&&(k=a("<div>").addClass(f.slide_number_class),k.append("<span></span> "+f.slide_number_text+" <span></span>"),j.append(k)),f.bullets&&(l=a("<ol>").addClass(f.bullets_container_class),j.append(l),l.wrap('<div class="orbit-bullets-container"></div>'),p.slides().each(function(b,c){var d=a("<li>").attr("data-orbit-slide",b).on("click",p.link_bullet);l.append(d)}))},p._goto=function(b,c){if(b===r)return!1;"object"==typeof o&&o.restart();var d=p.slides(),e="next";if(s=!0,r>b&&(e="prev"),b>=d.length){if(!f.circular)return!1;b=0}else if(0>b){if(!f.circular)return!1;b=d.length-1}var g=a(d.get(r)),h=a(d.get(b));g.css("zIndex",2),g.removeClass(f.active_slide_class),h.css("zIndex",4).addClass(f.active_slide_class),q.trigger("before-slide-change.fndtn.orbit"),f.before_slide_change(),p.update_active_link(b);var i=function(){var a=function(){r=b,s=!1,c===!0&&(o=p.create_timer(),o.start()),p.update_slide_number(r),q.trigger("after-slide-change.fndtn.orbit",[{slide_number:r,total_slides:d.length}]),f.after_slide_change(r,d.length)};q.outerHeight()!=h.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",a):a()};if(1===d.length)return i(),!1;var j=function(){"next"===e&&n.next(g,h,i),"prev"===e&&n.prev(g,h,i)};h.outerHeight()>q.outerHeight()&&f.variable_height?q.animate({height:h.outerHeight()},250,"linear",j):j()},p.next=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r+1)},p.prev=function(a){a.stopImmediatePropagation(),a.preventDefault(),p._goto(r-1)},p.link_custom=function(b){b.preventDefault();var c=a(this).attr("data-orbit-link");if("string"==typeof c&&""!=(c=a.trim(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index())}},p.link_bullet=function(b){var c=a(this).attr("data-orbit-slide");if("string"==typeof c&&""!=(c=a.trim(c)))if(isNaN(parseInt(c))){var d=j.find("[data-orbit-slide="+c+"]");-1!=d.index()&&p._goto(d.index()+1)}else p._goto(parseInt(c))},p.timer_callback=function(){p._goto(r+1,!0)},p.compute_dimensions=function(){var b=a(p.slides().get(r)),c=b.outerHeight();f.variable_height||p.slides().each(function(){a(this).outerHeight()>c&&(c=a(this).outerHeight())}),q.height(c)},p.create_timer=function(){var a=new g(j.find("."+f.timer_container_class),f,p.timer_callback);return a},p.stop_timer=function(){"object"==typeof o&&o.stop()},p.toggle_timer=function(){var a=j.find("."+f.timer_container_class);a.hasClass(f.timer_paused_class)?("undefined"==typeof o&&(o=p.create_timer()),o.start()):"object"==typeof o&&o.stop()},p.init=function(){p.build_markup(),f.timer&&(o=p.create_timer(),Foundation.utils.image_loaded(this.slides().children("img"),o.start)),n=new i(f,q),"slide"===f.animation&&(n=new h(f,q)),j.on("click","."+f.next_class,p.next),j.on("click","."+f.prev_class,p.prev),f.next_on_click&&j.on("click","."+f.slides_container_class+" [data-orbit-slide]",p.link_bullet),j.on("click",p.toggle_timer),f.swipe&&j.on("touchstart.fndtn.orbit",function(a){a.touches||(a=a.originalEvent);var b={start_page_x:a.touches[0].pageX,start_page_y:a.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:d};j.data("swipe-transition",b),a.stopPropagation()}).on("touchmove.fndtn.orbit",function(a){if(a.touches||(a=a.originalEvent),!(a.touches.length>1||a.scale&&1!==a.scale)){var b=j.data("swipe-transition");if("undefined"==typeof b&&(b={}),b.delta_x=a.touches[0].pageX-b.start_page_x,"undefined"==typeof b.is_scrolling&&(b.is_scrolling=!!(b.is_scrolling||Math.abs(b.delta_x)<Math.abs(a.touches[0].pageY-b.start_page_y))),!b.is_scrolling&&!b.active){a.preventDefault();var c=b.delta_x<0?r+1:r-1;b.active=!0,p._goto(c)}}}).on("touchend.fndtn.orbit",function(a){j.data("swipe-transition",{}),a.stopPropagation()}),j.on("mouseenter.fndtn.orbit",function(a){f.timer&&f.pause_on_hover&&p.stop_timer()}).on("mouseleave.fndtn.orbit",function(a){f.timer&&f.resume_on_mouseout&&o.start()}),a(c).on("click","[data-orbit-link]",p.link_custom),a(b).on("load resize",p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),p.compute_dimensions),Foundation.utils.image_loaded(this.slides().children("img"),function(){j.prev("."+f.preloader_class).css("display","none"),p.update_slide_number(0),p.update_active_link(0),q.trigger("ready.fndtn.orbit")})},p.init()},g=function(a,b,c){var d,e,f=this,g=b.timer_speed,h=a.find("."+b.timer_progress_class),i=-1;this.update_progress=function(a){var b=h.clone();b.attr("style",""),b.css("width",a+"%"),h.replaceWith(b),h=b},this.restart=function(){clearTimeout(e),a.addClass(b.timer_paused_class),i=-1,f.update_progress(0)},this.start=function(){return a.hasClass(b.timer_paused_class)?(i=-1===i?g:i,a.removeClass(b.timer_paused_class),d=(new Date).getTime(),h.animate({width:"100%"},i,"linear"),e=setTimeout(function(){f.restart(),c()},i),void a.trigger("timer-started.fndtn.orbit")):!0},this.stop=function(){if(a.hasClass(b.timer_paused_class))return!0;clearTimeout(e),a.addClass(b.timer_paused_class);var c=(new Date).getTime();i-=c-d;var h=100-i/g*100;f.update_progress(h),a.trigger("timer-stopped.fndtn.orbit")}},h=function(b,c){var d=b.animation_speed,e=1===a("html[dir=rtl]").length,f=e?"marginRight":"marginLeft",g={};g[f]="0%",this.next=function(a,b,c){a.animate({marginLeft:"-100%"},d),b.animate(g,d,function(){a.css(f,"100%"),c()})},this.prev=function(a,b,c){a.animate({marginLeft:"100%"},d),b.css(f,"-100%"),b.animate(g,d,function(){a.css(f,"100%"),c()})}},i=function(b,c){var d=b.animation_speed;1===a("html[dir=rtl]").length;this.next=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})},this.prev=function(a,b,c){b.css({margin:"0%",opacity:"0.01"}),b.animate({opacity:"1"},d,"linear",function(){a.css("margin","100%"),c()})}};Foundation.libs=Foundation.libs||{},Foundation.libs.orbit={name:"orbit",version:"5.5.3",settings:{animation:"slide",timer_speed:1e4,pause_on_hover:!0,resume_on_mouseout:!1,next_on_click:!0,animation_speed:500,stack_on_small:!1,navigation_arrows:!0,slide_number:!0,slide_number_text:"of",container_class:"orbit-container",stack_on_small_class:"orbit-stack-on-small",next_class:"orbit-next",prev_class:"orbit-prev",timer_container_class:"orbit-timer",timer_paused_class:"paused",timer_progress_class:"orbit-progress",slides_container_class:"orbit-slides-container",preloader_class:"preloader",slide_selector:"*",bullets_container_class:"orbit-bullets",bullets_active_class:"active",slide_number_class:"orbit-slide-number",caption_class:"orbit-caption",active_slide_class:"active",orbit_transition_class:"orbit-transitioning",bullets:!0,circular:!0,timer:!0,variable_height:!1,swipe:!0,before_slide_change:e,after_slide_change:e},init:function(a,b,c){this.bindings(b,c)},events:function(a){var b=new f(this.S(a),this.S(a).data("orbit-init"));this.S(a).data(this.name+"-instance",b)},reflow:function(){var a=this;if(a.S(a.scope).is("[data-orbit]")){var b=a.S(a.scope),c=b.data(a.name+"-instance");c.compute_dimensions()}else a.S("[data-orbit]",a.scope).each(function(b,c){var d=a.S(c),e=(a.data_options(d),d.data(a.name+"-instance"));e.compute_dimensions()})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";function e(a){var b=/fade/i.test(a),c=/pop/i.test(a);return{animate:b||c,pop:c,fade:b}}var f=[];Foundation.libs.reveal={name:"reveal",version:"5.5.3",locked:!1,settings:{animation:"fadeAndPop",animation_speed:250,close_on_background_click:!0,close_on_esc:!0,dismiss_modal_class:"close-reveal-modal",multiple_opened:!1,bg_class:"reveal-modal-bg",root_element:"body",open:function(){},opened:function(){},close:function(){},closed:function(){},on_ajax_error:a.noop,bg:a(".reveal-modal-bg"),css:{open:{opacity:0,visibility:"visible",display:"block"},close:{opacity:1,visibility:"hidden",display:"none"}}},init:function(b,c,d){a.extend(!0,this.settings,c,d),this.bindings(c,d)},events:function(a){var b=this,d=b.S;return d(this.scope).off(".reveal").on("click.fndtn.reveal","["+this.add_namespace("data-reveal-id")+"]:not([disabled])",function(a){if(a.preventDefault(),!b.locked){var c=d(this),e=c.data(b.data_attr("reveal-ajax")),f=c.data(b.data_attr("reveal-replace-content"));if(b.locked=!0,"undefined"==typeof e)b.open.call(b,c);else{var g=e===!0?c.attr("href"):e;b.open.call(b,c,{url:g},{replaceContentSel:f})}}}),d(c).on("click.fndtn.reveal",this.close_targets(),function(a){if(a.preventDefault(),!b.locked){var c=d("["+b.attr_name()+"].open").data(b.attr_name(!0)+"-init")||b.settings,e=d(a.target)[0]===d("."+c.bg_class)[0];if(e){if(!c.close_on_background_click)return;a.stopPropagation()}b.locked=!0,b.close.call(b,e?d("["+b.attr_name()+"].open:not(.toback)"):d(this).closest("["+b.attr_name()+"]"))}}),d("["+b.attr_name()+"]",this.scope).length>0?d(this.scope).on("open.fndtn.reveal",this.settings.open).on("opened.fndtn.reveal",this.settings.opened).on("opened.fndtn.reveal",this.open_video).on("close.fndtn.reveal",this.settings.close).on("closed.fndtn.reveal",this.settings.closed).on("closed.fndtn.reveal",this.close_video):d(this.scope).on("open.fndtn.reveal","["+b.attr_name()+"]",this.settings.open).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.settings.opened).on("opened.fndtn.reveal","["+b.attr_name()+"]",this.open_video).on("close.fndtn.reveal","["+b.attr_name()+"]",this.settings.close).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.settings.closed).on("closed.fndtn.reveal","["+b.attr_name()+"]",this.close_video),!0},key_up_on:function(a){var b=this;return b.S("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal",function(a){var c=b.S("["+b.attr_name()+"].open"),d=c.data(b.attr_name(!0)+"-init")||b.settings;d&&27===a.which&&d.close_on_esc&&!b.locked&&b.close.call(b,c)}),!0},key_up_off:function(a){return this.S("body").off("keyup.fndtn.reveal"),!0},open:function(c,e){var g,h=this;c?"undefined"!=typeof c.selector?g=h.S("#"+c.data(h.data_attr("reveal-id"))).first():(g=h.S(this.scope),e=c):g=h.S(this.scope);var i=g.data(h.attr_name(!0)+"-init");if(i=i||this.settings,g.hasClass("open")&&c!==d&&c.attr("data-reveal-id")==g.attr("id"))return h.close(g);if(!g.hasClass("open")){var j=h.S("["+h.attr_name()+"].open");"undefined"==typeof g.data("css-top")&&g.data("css-top",parseInt(g.css("top"),10)).data("offset",this.cache_offset(g)),g.attr("tabindex","0").attr("aria-hidden","false"),this.key_up_on(g),g.on("open.fndtn.reveal",function(a){"fndtn.reveal"!==a.namespace}),g.on("open.fndtn.reveal").trigger("open.fndtn.reveal"),j.length<1&&this.toggle_bg(g,!0),"string"==typeof e&&(e={url:e});var k=function(){j.length>0&&(i.multiple_opened?h.to_back(j):h.hide(j,i.css.close)),i.multiple_opened&&f.push(g),h.show(g,i.css.open)};if("undefined"!=typeof e&&e.url){var l="undefined"!=typeof e.success?e.success:null;a.extend(e,{success:function(b,c,d){if(a.isFunction(l)){var e=l(b,c,d);"string"==typeof e&&(b=e)}"undefined"!=typeof options&&"undefined"!=typeof options.replaceContentSel?g.find(options.replaceContentSel).html(b):g.html(b),h.S(g).foundation("section","reflow"),h.S(g).children().foundation(),k()}}),i.on_ajax_error!==a.noop&&a.extend(e,{error:i.on_ajax_error}),a.ajax(e)}else k()}h.S(b).trigger("resize")},close:function(b){var b=b&&b.length?b:this.S(this.scope),c=this.S("["+this.attr_name()+"].open"),d=b.data(this.attr_name(!0)+"-init")||this.settings,e=this;if(c.length>0)if(b.removeAttr("tabindex","0").attr("aria-hidden","true"),this.locked=!0,this.key_up_off(b),b.trigger("close.fndtn.reveal"),(d.multiple_opened&&1===c.length||!d.multiple_opened||b.length>1)&&(e.toggle_bg(b,!1),e.to_front(b)),d.multiple_opened){var g=b.is(":not(.toback)");e.hide(b,d.css.close,d),g?f.pop():f=a.grep(f,function(a){var c=a[0]===b[0];return c&&e.to_front(b),!c}),f.length>0&&e.to_front(f[f.length-1])}else e.hide(c,d.css.close,d)},close_targets:function(){var a="."+this.settings.dismiss_modal_class;return this.settings.close_on_background_click?a+", ."+this.settings.bg_class:a},toggle_bg:function(b,c){0===this.S("."+this.settings.bg_class).length&&(this.settings.bg=a("<div />",{"class":this.settings.bg_class}).appendTo("body").hide());var e=this.settings.bg.filter(":visible").length>0;c!=e&&((c==d?e:!c)?this.hide(this.settings.bg):this.show(this.settings.bg))},show:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init")||this.settings,g=f.root_element,h=this;if(0===c.parent(g).length){var i=c.wrap('<div style="display: none;" />').parent();c.on("closed.fndtn.reveal.wrapped",function(){c.detach().appendTo(i),c.unwrap().unbind("closed.fndtn.reveal.wrapped")}),c.detach().appendTo(g)}var j=e(f.animation);if(j.animate||(this.locked=!1),j.pop){d.top=a(b).scrollTop()-c.data("offset")+"px";var k={top:a(b).scrollTop()+c.data("css-top")+"px",opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}if(d.top=a(b).scrollTop()+c.data("css-top")+"px",j.fade){var k={opacity:1};return setTimeout(function(){return c.css(d).animate(k,f.animation_speed,"linear",function(){h.locked=!1,c.trigger("opened.fndtn.reveal")}).addClass("open")},f.animation_speed/2)}return c.css(d).show().css({opacity:1}).addClass("open").trigger("opened.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeIn(f.animation_speed/2):(this.locked=!1,c.show())},to_back:function(a){a.addClass("toback")},to_front:function(a){a.removeClass("toback")},hide:function(c,d){if(d){var f=c.data(this.attr_name(!0)+"-init"),g=this;f=f||this.settings;var h=e(f.animation);if(h.animate||(this.locked=!1),h.pop){var i={top:-a(b).scrollTop()-c.data("offset")+"px",opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}if(h.fade){var i={opacity:0};return setTimeout(function(){return c.animate(i,f.animation_speed,"linear",function(){g.locked=!1,c.css(d).trigger("closed.fndtn.reveal")}).removeClass("open")},f.animation_speed/2)}return c.hide().css(d).removeClass("open").trigger("closed.fndtn.reveal")}var f=this.settings;return e(f.animation).fade?c.fadeOut(f.animation_speed/2):c.hide()},close_video:function(b){var c=a(".flex-video",b.target),d=a("iframe",c);d.length>0&&(d.attr("data-src",d[0].src),d.attr("src",d.attr("src")),c.hide())},open_video:function(b){var c=a(".flex-video",b.target),e=c.find("iframe");if(e.length>0){var f=e.attr("data-src");if("string"==typeof f)e[0].src=e.attr("data-src");else{var g=e[0].src;e[0].src=d,e[0].src=g}c.show()}},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},cache_offset:function(a){var b=a.show().height()+parseInt(a.css("top"),10)+a.scrollY;return a.hide(),b},off:function(){a(this.scope).off(".fndtn.reveal")},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.slider={name:"slider",version:"5.5.3",settings:{start:0,end:100,step:1,precision:2,initial:null,display_selector:"",vertical:!1,trigger_input_change:!1,on_change:function(){}},cache:{},init:function(a,b,c){Foundation.inherit(this,"throttle"),this.bindings(b,c),this.reflow()},events:function(){var c=this;a(this.scope).off(".slider").on("mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider","["+c.attr_name()+"]:not(.disabled, [disabled]) .range-slider-handle",function(b){c.cache.active||(b.preventDefault(),c.set_active_slider(a(b.target)))}).on("mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider",function(d){if(c.cache.active)if(d.preventDefault(),a.data(c.cache.active[0],"settings").vertical){var e=0;d.pageY||(e=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+e)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}).on("mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider",function(d){if(!c.cache.active){var e="slider"===a(d.target).attr("role")?a(d.target):a(d.target).closest(".range-slider").find("[role='slider']");if(e.length&&!e.parent().hasClass("disabled")&&!e.parent().attr("disabled"))if(c.set_active_slider(e),a.data(c.cache.active[0],"settings").vertical){var f=0;d.pageY||(f=b.scrollY),c.calculate_position(c.cache.active,c.get_cursor_position(d,"y")+f)}else c.calculate_position(c.cache.active,c.get_cursor_position(d,"x"))}c.remove_active_slider()}).on("change.fndtn.slider",function(a){c.settings.on_change()}),c.S(b).on("resize.fndtn.slider",c.throttle(function(a){c.reflow()},300)),this.S("["+this.attr_name()+"]").each(function(){var b=a(this),d=b.children(".range-slider-handle")[0],e=c.initialize_settings(d);""!=e.display_selector&&a(e.display_selector).each(function(){a(this).attr("value")&&a(this).off("change").on("change",function(){b.foundation("slider","set_value",a(this).val())})})})},get_cursor_position:function(a,b){var c,d="page"+b.toUpperCase(),e="client"+b.toUpperCase();return"undefined"!=typeof a[d]?c=a[d]:"undefined"!=typeof a.originalEvent[e]?c=a.originalEvent[e]:a.originalEvent.touches&&a.originalEvent.touches[0]&&"undefined"!=typeof a.originalEvent.touches[0][e]?c=a.originalEvent.touches[0][e]:a.currentPoint&&"undefined"!=typeof a.currentPoint[b]&&(c=a.currentPoint[b]),c},set_active_slider:function(a){this.cache.active=a},remove_active_slider:function(){this.cache.active=null},calculate_position:function(b,c){var d=this,e=a.data(b[0],"settings"),f=(a.data(b[0],"handle_l"),a.data(b[0],"handle_o"),a.data(b[0],"bar_l")),g=a.data(b[0],"bar_o");requestAnimationFrame(function(){var a;a=Foundation.rtl&&!e.vertical?d.limit_to((g+f-c)/f,0,1):d.limit_to((c-g)/f,0,1),a=e.vertical?1-a:a;var h=d.normalized_value(a,e.start,e.end,e.step,e.precision);d.set_ui(b,h)})},set_ui:function(b,c){var d=a.data(b[0],"settings"),e=a.data(b[0],"handle_l"),f=a.data(b[0],"bar_l"),g=this.normalized_percentage(c,d.start,d.end),h=g*(f-e)-1,i=100*g,j=b.parent(),k=b.parent().children("input[type=hidden]");Foundation.rtl&&!d.vertical&&(h=-h),h=d.vertical?-h+f-e+1:h,this.set_translate(b,h,d.vertical),d.vertical?b.siblings(".range-slider-active-segment").css("height",i+"%"):b.siblings(".range-slider-active-segment").css("width",i+"%"),j.attr(this.attr_name(),c).trigger("change.fndtn.slider"),k.val(c),d.trigger_input_change&&k.trigger("change.fndtn.slider"),b[0].hasAttribute("aria-valuemin")||b.attr({"aria-valuemin":d.start,"aria-valuemax":d.end}),b.attr("aria-valuenow",c),""!=d.display_selector&&a(d.display_selector).each(function(){this.hasAttribute("value")?a(this).val(c):a(this).text(c)})},normalized_percentage:function(a,b,c){return Math.min(1,(a-b)/(c-b))},normalized_value:function(a,b,c,d,e){var f=c-b,g=a*f,h=(g-g%d)/d,i=g%d,j=i>=.5*d?d:0;return(h*d+j+b).toFixed(e)},set_translate:function(b,c,d){d?a(b).css("-webkit-transform","translateY("+c+"px)").css("-moz-transform","translateY("+c+"px)").css("-ms-transform","translateY("+c+"px)").css("-o-transform","translateY("+c+"px)").css("transform","translateY("+c+"px)"):a(b).css("-webkit-transform","translateX("+c+"px)").css("-moz-transform","translateX("+c+"px)").css("-ms-transform","translateX("+c+"px)").css("-o-transform","translateX("+c+"px)").css("transform","translateX("+c+"px)")},limit_to:function(a,b,c){return Math.min(Math.max(a,b),c)},initialize_settings:function(b){var c,d=a.extend({},this.settings,this.data_options(a(b).parent()));return null===d.precision&&(c=(""+d.step).match(/\.([\d]*)/),d.precision=c&&c[1]?c[1].length:0),d.vertical?(a.data(b,"bar_o",a(b).parent().offset().top),a.data(b,"bar_l",a(b).parent().outerHeight()),a.data(b,"handle_o",a(b).offset().top),a.data(b,"handle_l",a(b).outerHeight())):(a.data(b,"bar_o",a(b).parent().offset().left),a.data(b,"bar_l",a(b).parent().outerWidth()),a.data(b,"handle_o",a(b).offset().left),a.data(b,"handle_l",a(b).outerWidth())),a.data(b,"bar",a(b).parent()),a.data(b,"settings",d)},set_initial_position:function(b){var c=a.data(b.children(".range-slider-handle")[0],"settings"),d="number"!=typeof c.initial||isNaN(c.initial)?Math.floor(.5*(c.end-c.start)/c.step)*c.step+c.start:c.initial,e=b.children(".range-slider-handle");this.set_ui(e,d)},set_value:function(b){var c=this;a("["+c.attr_name()+"]",this.scope).each(function(){a(this).attr(c.attr_name(),b)}),a(this.scope).attr(c.attr_name())&&a(this.scope).attr(c.attr_name(),b),c.reflow()},reflow:function(){var b=this;b.S("["+this.attr_name()+"]").each(function(){var c=a(this).children(".range-slider-handle")[0],d=a(this).attr(b.attr_name());b.initialize_settings(c),d?b.set_ui(a(c),parseFloat(d)):b.set_initial_position(a(this))})}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tab={name:"tab",version:"5.5.3",settings:{active_class:"active",callback:function(){},deep_linking:!1,scroll_to_content:!0,is_hover:!1},default_tab_hashes:[],init:function(a,b,c){var d=this,e=this.S;e("["+this.attr_name()+"] > .active > a",this.scope).each(function(){d.default_tab_hashes.push(this.hash)}),this.bindings(b,c),this.handle_location_hash_change()},events:function(){var a=this,c=this.S,d=function(b,d){var e=c(d).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");if(!e.is_hover||Modernizr.touch){var f=b.keyCode||b.which;9!==f&&(b.preventDefault(),b.stopPropagation()),a.toggle_active_tab(c(d).parent())}};c(this.scope).off(".tab").on("keydown.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=a.keyCode||a.which;if(13===b||32===b){var c=this;d(a,c)}}).on("click.fndtn.tab","["+this.attr_name()+"] > * > a",function(a){var b=this;d(a,b)}).on("mouseenter.fndtn.tab","["+this.attr_name()+"] > * > a",function(b){var d=c(this).closest("["+a.attr_name()+"]").data(a.attr_name(!0)+"-init");d.is_hover&&a.toggle_active_tab(c(this).parent())}),c(b).on("hashchange.fndtn.tab",function(b){b.preventDefault(),a.handle_location_hash_change()})},handle_location_hash_change:function(){var b=this,c=this.S;c("["+this.attr_name()+"]",this.scope).each(function(){var e=c(this).data(b.attr_name(!0)+"-init");if(e.deep_linking){var f;if(f=e.scroll_to_content?b.scope.location.hash:b.scope.location.hash.replace("fndtn-",""),""!=f){var g=c(f);if(g.hasClass("content")&&g.parent().hasClass("tabs-content"))b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+f+"]").parent());else{var h=g.closest(".content").attr("id");h!=d&&b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href=#"+h+"]").parent(),f)}}else for(var i=0;i<b.default_tab_hashes.length;i++)b.toggle_active_tab(a("["+b.attr_name()+"] > * > a[href="+b.default_tab_hashes[i]+"]").parent())}})},toggle_active_tab:function(e,f){var g=this,h=g.S,i=e.closest("["+this.attr_name()+"]"),j=e.find("a"),k=e.children("a").first(),l="#"+k.attr("href").split("#")[1],m=h(l),n=e.siblings(),o=i.data(this.attr_name(!0)+"-init"),p=function(b){var d,e=a(this),f=a(this).parents("li").prev().children('[role="tab"]'),g=a(this).parents("li").next().children('[role="tab"]');switch(b.keyCode){case 37:d=f;break;case 39:d=g;break;default:d=!1}d.length&&(e.attr({tabindex:"-1","aria-selected":null}),d.attr({tabindex:"0","aria-selected":!0}).focus()),a('[role="tabpanel"]').attr("aria-hidden","true"),a("#"+a(c.activeElement).attr("href").substring(1)).attr("aria-hidden",null)},q=function(a){var c=o.scroll_to_content?g.default_tab_hashes[0]:"fndtn-"+g.default_tab_hashes[0].replace("#","");(a!==c||b.location.hash)&&(b.location.hash=a)};k.data("tab-content")&&(l="#"+k.data("tab-content").split("#")[1],m=h(l)),o.deep_linking&&(o.scroll_to_content?(q(f||l),f==d||f==l?e.parent()[0].scrollIntoView():h(l)[0].scrollIntoView()):q(f!=d?"fndtn-"+f.replace("#",""):"fndtn-"+l.replace("#",""))),e.addClass(o.active_class).triggerHandler("opened"),j.attr({"aria-selected":"true",tabindex:0}),n.removeClass(o.active_class),n.find("a").attr({"aria-selected":"false"}),m.siblings().removeClass(o.active_class).attr({"aria-hidden":"true"}),m.addClass(o.active_class).attr("aria-hidden","false").removeAttr("tabindex"),o.callback(e),m.triggerHandler("toggled",[m]),i.triggerHandler("toggled",[e]),j.off("keydown").on("keydown",p)},data_attr:function(a){return this.namespace.length>0?this.namespace+"-"+a:a},off:function(){},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.tooltip={name:"tooltip",version:"5.5.3",settings:{additional_inheritable_classes:[],tooltip_class:".tooltip",append_to:"body",touch_close_text:"Tap To Close",disable_for_touch:!1,hover_delay:200,fade_in_duration:150,fade_out_duration:150,show_on:"all",tip_template:function(a,b){return'<span data-selector="'+a+'" id="'+a+'" class="'+Foundation.libs.tooltip.settings.tooltip_class.substring(1)+'" role="tooltip">'+b+'<span class="nub"></span></span>'}},cache:{},init:function(a,b,c){Foundation.inherit(this,"random_str"),this.bindings(b,c)},should_show:function(b,c){var d=a.extend({},this.settings,this.data_options(b));return"all"===d.show_on?!0:this.small()&&"small"===d.show_on?!0:this.medium()&&"medium"===d.show_on?!0:this.large()&&"large"===d.show_on?!0:!1},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},events:function(b){function c(a,b,c){a.timer||(c?(a.timer=null,e.showTip(b)):a.timer=setTimeout(function(){a.timer=null,e.showTip(b)}.bind(a),e.settings.hover_delay))}function d(a,b){a.timer&&(clearTimeout(a.timer),a.timer=null),e.hide(b)}var e=this,f=e.S;e.create(this.S(b)),a(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"]",function(b){var g=f(this),h=a.extend({},e.settings,e.data_options(g)),i=!1;if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&f(b.target).is("a"))return!1;if(/mouse/i.test(b.type)&&e.ie_touch(b))return!1;if(g.hasClass("open"))Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&b.preventDefault(),e.hide(g);else{if(h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type))return;if(!h.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(b.type)&&(b.preventDefault(),f(h.tooltip_class+".open").hide(),i=!0,a(".open["+e.attr_name()+"]").length>0)){var j=f(a(".open["+e.attr_name()+"]")[0]);e.hide(j)}/enter|over/i.test(b.type)?c(this,g):"mouseout"===b.type||"mouseleave"===b.type?d(this,g):c(this,g,!0)}}).on("mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"].open",function(b){return/mouse/i.test(b.type)&&e.ie_touch(b)?!1:void(("touch"!=a(this).data("tooltip-open-event-type")||"mouseleave"!=b.type)&&("mouse"==a(this).data("tooltip-open-event-type")&&/MSPointerDown|touchstart/i.test(b.type)?e.convert_to_touch(a(this)):d(this,a(this))))}).on("DOMNodeRemoved DOMAttrModified","["+this.attr_name()+"]:not(a)",function(a){d(this,f(this))})},ie_touch:function(a){return!1},showTip:function(a){var b=this.getTip(a);return this.should_show(a,b)?this.show(a):void 0},getTip:function(b){var c=this.selector(b),d=a.extend({},this.settings,this.data_options(b)),e=null;return c&&(e=this.S('span[data-selector="'+c+'"]'+d.tooltip_class)),"object"==typeof e?e:!1},selector:function(a){var b=a.attr(this.attr_name())||a.attr("data-selector");return"string"!=typeof b&&(b=this.random_str(6),a.attr("data-selector",b).attr("aria-describedby",b)),b},create:function(c){var d=this,e=a.extend({},this.settings,this.data_options(c)),f=this.settings.tip_template;"string"==typeof e.tip_template&&b.hasOwnProperty(e.tip_template)&&(f=b[e.tip_template]);
+var g=a(f(this.selector(c),a("<div></div>").html(c.attr("title")).html())),h=this.inheritable_classes(c);g.addClass(h).appendTo(e.append_to),Modernizr.touch&&(g.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),g.on("touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip",function(a){d.hide(c)})),c.removeAttr("title").attr("title","")},reposition:function(b,c,d){var e,f,g,h,i;c.css("visibility","hidden").show(),e=b.data("width"),f=c.children(".nub"),g=f.outerHeight(),h=f.outerWidth(),this.small()?c.css({width:"100%"}):c.css({width:e?e:"auto"}),i=function(a,b,c,d,e,f){return a.css({top:b?b:"auto",bottom:d?d:"auto",left:e?e:"auto",right:c?c:"auto"}).end()};var j=b.offset().top,k=b.offset().left,l=b.outerHeight();if(i(c,j+l+10,"auto","auto",k),this.small())i(c,j+l+10,"auto","auto",12.5,a(this.scope).width()),c.addClass("tip-override"),i(f,-g,"auto","auto",k);else{Foundation.rtl&&(f.addClass("rtl"),k=k+b.outerWidth()-c.outerWidth()),i(c,j+l+10,"auto","auto",k),f.attr("style")&&f.removeAttr("style"),c.removeClass("tip-override");var m=c.outerHeight();d&&d.indexOf("tip-top")>-1?(Foundation.rtl&&f.addClass("rtl"),i(c,j-m,"auto","auto",k).removeClass("tip-override")):d&&d.indexOf("tip-left")>-1?(i(c,j+l/2-m/2,"auto","auto",k-c.outerWidth()-g).removeClass("tip-override"),f.removeClass("rtl")):d&&d.indexOf("tip-right")>-1&&(i(c,j+l/2-m/2,"auto","auto",k+b.outerWidth()+g).removeClass("tip-override"),f.removeClass("rtl"))}c.css("visibility","visible").hide()},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches},inheritable_classes:function(b){var c=a.extend({},this.settings,this.data_options(b)),d=["tip-top","tip-left","tip-bottom","tip-right","radius","round"].concat(c.additional_inheritable_classes),e=b.attr("class"),f=e?a.map(e.split(" "),function(b,c){return-1!==a.inArray(b,d)?b:void 0}).join(" "):"";return a.trim(f)},convert_to_touch:function(b){var c=this,d=c.getTip(b),e=a.extend({},c.settings,c.data_options(b));0===d.find(".tap-to-close").length&&(d.append('<span class="tap-to-close">'+e.touch_close_text+"</span>"),d.on("click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose",function(a){c.hide(b)})),b.data("tooltip-open-event-type","touch")},show:function(a){var b=this.getTip(a);"touch"==a.data("tooltip-open-event-type")&&this.convert_to_touch(a),this.reposition(a,b,a.attr("class")),a.addClass("open"),b.fadeIn(this.settings.fade_in_duration)},hide:function(a){var b=this.getTip(a);b.fadeOut(this.settings.fade_out_duration,function(){b.find(".tap-to-close").remove(),b.off("click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose"),a.removeClass("open")})},off:function(){var b=this;this.S(this.scope).off(".fndtn.tooltip"),this.S(this.settings.tooltip_class).each(function(c){a("["+b.attr_name()+"]").eq(c).attr("title",a(this).text())}).remove()},reflow:function(){}}}(jQuery,window,window.document),function(a,b,c,d){"use strict";Foundation.libs.topbar={name:"topbar",version:"5.5.3",settings:{index:0,start_offset:0,sticky_class:"sticky",custom_back_text:!0,back_text:"Back",mobile_show_parent_link:!0,is_hover:!0,scrolltop:!0,sticky_on:"all",dropdown_autoclose:!0},init:function(b,c,d){Foundation.inherit(this,"add_custom_rule register_media throttle");var e=this;e.register_media("topbar","foundation-mq-topbar"),this.bindings(c,d),e.S("["+this.attr_name()+"]",this.scope).each(function(){var b=a(this),c=b.data(e.attr_name(!0)+"-init");e.S("section, .top-bar-section",this);b.data("index",0);var d=b.parent();d.hasClass("fixed")||e.is_sticky(b,d,c)?(e.settings.sticky_class=c.sticky_class,e.settings.sticky_topbar=b,b.data("height",d.outerHeight()),b.data("stickyoffset",d.offset().top)):b.data("height",b.outerHeight()),c.assembled||e.assemble(b),c.is_hover?e.S(".has-dropdown",b).addClass("not-click"):e.S(".has-dropdown",b).removeClass("not-click"),e.add_custom_rule(".f-topbar-fixed { padding-top: "+b.data("height")+"px }"),d.hasClass("fixed")&&e.S("body").addClass("f-topbar-fixed")})},is_sticky:function(a,b,c){var d=b.hasClass(c.sticky_class),e=matchMedia(Foundation.media_queries.small).matches,f=matchMedia(Foundation.media_queries.medium).matches,g=matchMedia(Foundation.media_queries.large).matches;return d&&"all"===c.sticky_on?!0:d&&this.small()&&-1!==c.sticky_on.indexOf("small")&&e&&!f&&!g?!0:d&&this.medium()&&-1!==c.sticky_on.indexOf("medium")&&e&&f&&!g?!0:d&&this.large()&&-1!==c.sticky_on.indexOf("large")&&e&&f&&g?!0:!1},toggle:function(c){var d,e=this;d=c?e.S(c).closest("["+this.attr_name()+"]"):e.S("["+this.attr_name()+"]");var f=d.data(this.attr_name(!0)+"-init"),g=e.S("section, .top-bar-section",d);e.breakpoint()&&(e.rtl?(g.css({right:"0%"}),a(">.name",g).css({right:"100%"})):(g.css({left:"0%"}),a(">.name",g).css({left:"100%"})),e.S("li.moved",g).removeClass("moved"),d.data("index",0),d.toggleClass("expanded").css("height","")),f.scrolltop?d.hasClass("expanded")?d.parent().hasClass("fixed")&&(f.scrolltop?(d.parent().removeClass("fixed"),d.addClass("fixed"),e.S("body").removeClass("f-topbar-fixed"),b.scrollTo(0,0)):d.parent().removeClass("expanded")):d.hasClass("fixed")&&(d.parent().addClass("fixed"),d.removeClass("fixed"),e.S("body").addClass("f-topbar-fixed")):(e.is_sticky(d,d.parent(),f)&&d.parent().addClass("fixed"),d.parent().hasClass("fixed")&&(d.hasClass("expanded")?(d.addClass("fixed"),d.parent().addClass("expanded"),e.S("body").addClass("f-topbar-fixed")):(d.removeClass("fixed"),d.parent().removeClass("expanded"),e.update_sticky_positioning())))},timer:null,events:function(c){var d=this,e=this.S;e(this.scope).off(".topbar").on("click.fndtn.topbar","["+this.attr_name()+"] .toggle-topbar",function(a){a.preventDefault(),d.toggle(this)}).on("click.fndtn.topbar contextmenu.fndtn.topbar",'.top-bar .top-bar-section li a[href^="#"],['+this.attr_name()+'] .top-bar-section li a[href^="#"]',function(b){var c=a(this).closest("li"),e=c.closest("["+d.attr_name()+"]"),f=e.data(d.attr_name(!0)+"-init");if(f.dropdown_autoclose&&f.is_hover){var g=a(this).closest(".hover");g.removeClass("hover")}!d.breakpoint()||c.hasClass("back")||c.hasClass("has-dropdown")||d.toggle()}).on("click.fndtn.topbar","["+this.attr_name()+"] li.has-dropdown",function(b){var c=e(this),f=e(b.target),g=c.closest("["+d.attr_name()+"]"),h=g.data(d.attr_name(!0)+"-init");return f.data("revealId")?void d.toggle():void(d.breakpoint()||(!h.is_hover||Modernizr.touch)&&(b.stopImmediatePropagation(),c.hasClass("hover")?(c.removeClass("hover").find("li").removeClass("hover"),c.parents("li.hover").removeClass("hover")):(c.addClass("hover"),a(c).siblings().removeClass("hover"),"A"===f[0].nodeName&&f.parent().hasClass("has-dropdown")&&b.preventDefault())))}).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown>a",function(a){if(d.breakpoint()){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(b.next(".dropdown").outerHeight(),b.closest("li"));c.data("index",c.data("index")+1),g.addClass("moved"),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),c.css("height",b.siblings("ul").outerHeight(!0)+c.data("height"))}}),e(b).off(".topbar").on("resize.fndtn.topbar",d.throttle(function(){d.resize.call(d)},50)).trigger("resize.fndtn.topbar").load(function(){e(this).trigger("resize.fndtn.topbar")}),e("body").off(".topbar").on("click.fndtn.topbar",function(a){var b=e(a.target).closest("li").closest("li.hover");b.length>0||e("["+d.attr_name()+"] li.hover").removeClass("hover")}),e(this.scope).on("click.fndtn.topbar","["+this.attr_name()+"] .has-dropdown .back",function(a){a.preventDefault();var b=e(this),c=b.closest("["+d.attr_name()+"]"),f=c.find("section, .top-bar-section"),g=(c.data(d.attr_name(!0)+"-init"),b.closest("li.moved")),h=g.parent();c.data("index",c.data("index")-1),d.rtl?(f.css({right:-(100*c.data("index"))+"%"}),f.find(">.name").css({right:100*c.data("index")+"%"})):(f.css({left:-(100*c.data("index"))+"%"}),f.find(">.name").css({left:100*c.data("index")+"%"})),0===c.data("index")?c.css("height",""):c.css("height",h.outerHeight(!0)+c.data("height")),setTimeout(function(){g.removeClass("moved")},300)}),e(this.scope).find(".dropdown a").focus(function(){a(this).parents(".has-dropdown").addClass("hover")}).blur(function(){a(this).parents(".has-dropdown").removeClass("hover")})},resize:function(){var a=this;a.S("["+this.attr_name()+"]").each(function(){var b,d=a.S(this),e=d.data(a.attr_name(!0)+"-init"),f=d.parent("."+a.settings.sticky_class);if(!a.breakpoint()){var g=d.hasClass("expanded");d.css("height","").removeClass("expanded").find("li").removeClass("hover"),g&&a.toggle(d)}a.is_sticky(d,f,e)&&(f.hasClass("fixed")?(f.removeClass("fixed"),b=f.offset().top,a.S(c.body).hasClass("f-topbar-fixed")&&(b-=d.data("height")),d.data("stickyoffset",b),f.addClass("fixed")):(b=f.offset().top,d.data("stickyoffset",b)))})},breakpoint:function(){return!matchMedia(Foundation.media_queries.topbar).matches},small:function(){return matchMedia(Foundation.media_queries.small).matches},medium:function(){return matchMedia(Foundation.media_queries.medium).matches},large:function(){return matchMedia(Foundation.media_queries.large).matches},assemble:function(b){var c=this,d=b.data(this.attr_name(!0)+"-init"),e=c.S("section, .top-bar-section",b);e.detach(),c.S(".has-dropdown>a",e).each(function(){var b,e=c.S(this),f=e.siblings(".dropdown"),g=e.attr("href");f.find(".title.back").length||(b=a(1==d.mobile_show_parent_link&&g?'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="'+g+'">'+e.html()+"</a></li>":'<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>'),1==d.custom_back_text?a("h5>a",b).html(d.back_text):a("h5>a",b).html("« "+e.html()),f.prepend(b))}),e.appendTo(b),this.sticky(),this.assembled(b)},assembled:function(b){b.data(this.attr_name(!0),a.extend({},b.data(this.attr_name(!0)),{assembled:!0}))},height:function(b){var c=0,d=this;return a("> li",b).each(function(){c+=d.S(this).outerHeight(!0)}),c},sticky:function(){var a=this;this.S(b).on("scroll",function(){a.update_sticky_positioning()})},update_sticky_positioning:function(){var a="."+this.settings.sticky_class,c=this.S(b),d=this;if(d.settings.sticky_topbar&&d.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(),this.settings)){var e=this.settings.sticky_topbar.data("stickyoffset")+this.settings.start_offset;d.S(a).hasClass("expanded")||(c.scrollTop()>e?d.S(a).hasClass("fixed")||(d.S(a).addClass("fixed"),d.S("body").addClass("f-topbar-fixed")):c.scrollTop()<=e&&d.S(a).hasClass("fixed")&&(d.S(a).removeClass("fixed"),d.S("body").removeClass("f-topbar-fixed")))}},off:function(){this.S(this.scope).off(".fndtn.topbar"),this.S(b).off(".fndtn.topbar")},reflow:function(){}}}(jQuery,window,window.document);
\ No newline at end of file
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.abide = {
+ name : 'abide',
+
+ version : '5.5.3',
+
+ settings : {
+ live_validate : true, // validate the form as you go
+ validate_on_blur : true, // validate whenever you focus/blur on an input field
+ // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
+
+ focus_on_invalid : true, // automatically bring the focus to an invalid input field
+ error_labels : true, // labels with a for="inputId" will receive an `error` class
+ error_class : 'error', // labels with a for="inputId" will receive an `error` class
+ // the amount of time Abide will take before it validates the form (in ms).
+ // smaller time will result in faster validation
+ timeout : 1000,
+ patterns : {
+ alpha : /^[a-zA-Z]+$/,
+ alpha_numeric : /^[a-zA-Z0-9]+$/,
+ integer : /^[-+]?\d+$/,
+ number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
+
+ // amex, visa, diners
+ card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
+ cvv : /^([0-9]){3,4}$/,
+
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+ email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
+
+ // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/
+ url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,
+ // abc.de
+ domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
+
+ datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
+ // YYYY-MM-DD
+ date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
+ // HH:MM:SS
+ time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
+ dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
+ // MM/DD/YYYY
+ month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
+ // DD/MM/YYYY
+ day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
+
+ // #FFF or #FFFFFF
+ color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
+ },
+ validators : {
+ equalTo : function (el, required, parent) {
+ var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+ to = el.value,
+ valid = (from === to);
+
+ return valid;
+ }
+ }
+ },
+
+ timer : null,
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ form = self.S(scope).attr('novalidate', 'novalidate'),
+ settings = form.data(this.attr_name(true) + '-init') || {};
+
+ this.invalid_attr = this.add_namespace('data-invalid');
+
+ function validate(originalSelf, e) {
+ clearTimeout(self.timer);
+ self.timer = setTimeout(function () {
+ self.validate([originalSelf], e);
+ }.bind(originalSelf), settings.timeout);
+ }
+
+ form
+ .off('.abide')
+ .on('submit.fndtn.abide', function (e) {
+ var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
+ return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax);
+ })
+ .on('validate.fndtn.abide', function (e) {
+ if (settings.validate_on === 'manual') {
+ self.validate([e.target], e);
+ }
+ })
+ .on('reset', function (e) {
+ return self.reset($(this), e);
+ })
+ .find('input, textarea, select').not(":hidden, [data-abide-ignore]")
+ .off('.abide')
+ .on('blur.fndtn.abide change.fndtn.abide', function (e) {
+ var id = this.getAttribute('id'),
+ eqTo = form.find('[data-equalto="'+ id +'"]');
+ // old settings fallback
+ // will be deprecated with F6 release
+ if (settings.validate_on_blur && settings.validate_on_blur === true) {
+ validate(this, e);
+ }
+ // checks if there is an equalTo equivalent related by id
+ if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+ validate(eqTo.get(0),e);
+ }
+ // new settings combining validate options into one setting
+ if (settings.validate_on === 'change') {
+ validate(this, e);
+ }
+ })
+ .on('keydown.fndtn.abide', function (e) {
+ var id = this.getAttribute('id'),
+ eqTo = form.find('[data-equalto="'+ id +'"]');
+ // old settings fallback
+ // will be deprecated with F6 release
+ if (settings.live_validate && settings.live_validate === true && e.which != 9) {
+ validate(this, e);
+ }
+ // checks if there is an equalTo equivalent related by id
+ if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
+ validate(eqTo.get(0),e);
+ }
+ // new settings combining validate options into one setting
+ if (settings.validate_on === 'tab' && e.which === 9) {
+ validate(this, e);
+ }
+ else if (settings.validate_on === 'change') {
+ validate(this, e);
+ }
+ })
+ .on('focus', function (e) {
+ if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) {
+ $('html, body').animate({
+ scrollTop: $(e.target).offset().top
+ }, 100);
+ }
+ });
+ },
+
+ reset : function (form, e) {
+ var self = this;
+ form.removeAttr(self.invalid_attr);
+
+ $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr);
+ $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class);
+ $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr);
+ },
+
+ validate : function (els, e, is_ajax) {
+ var validations = this.parse_patterns(els),
+ validation_count = validations.length,
+ form = this.S(els[0]).closest('form'),
+ submit_event = /submit/.test(e.type);
+
+ // Has to count up to make sure the focus gets applied to the top error
+ for (var i = 0; i < validation_count; i++) {
+ if (!validations[i] && (submit_event || is_ajax)) {
+ if (this.settings.focus_on_invalid) {
+ els[i].focus();
+ }
+ form.trigger('invalid.fndtn.abide');
+ this.S(els[i]).closest('form').attr(this.invalid_attr, '');
+ return false;
+ }
+ }
+
+ if (submit_event || is_ajax) {
+ form.trigger('valid.fndtn.abide');
+ }
+
+ form.removeAttr(this.invalid_attr);
+
+ if (is_ajax) {
+ return false;
+ }
+
+ return true;
+ },
+
+ parse_patterns : function (els) {
+ var i = els.length,
+ el_patterns = [];
+
+ while (i--) {
+ el_patterns.push(this.pattern(els[i]));
+ }
+
+ return this.check_validation_and_apply_styles(el_patterns);
+ },
+
+ pattern : function (el) {
+ var type = el.getAttribute('type'),
+ required = typeof el.getAttribute('required') === 'string';
+
+ var pattern = el.getAttribute('pattern') || '';
+
+ if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
+ return [el, this.settings.patterns[pattern], required];
+ } else if (pattern.length > 0) {
+ return [el, new RegExp(pattern), required];
+ }
+
+ if (this.settings.patterns.hasOwnProperty(type)) {
+ return [el, this.settings.patterns[type], required];
+ }
+
+ pattern = /.*/;
+
+ return [el, pattern, required];
+ },
+
+ // TODO: Break this up into smaller methods, getting hard to read.
+ check_validation_and_apply_styles : function (el_patterns) {
+ var i = el_patterns.length,
+ validations = [];
+ if (i == 0) {
+ return validations;
+ }
+ var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
+ settings = form.data(this.attr_name(true) + '-init') || {};
+ while (i--) {
+ var el = el_patterns[i][0],
+ required = el_patterns[i][2],
+ value = el.value.trim(),
+ direct_parent = this.S(el).parent(),
+ validator = el.getAttribute(this.add_namespace('data-abide-validator')),
+ is_radio = el.type === 'radio',
+ is_checkbox = el.type === 'checkbox',
+ label = this.S('label[for="' + el.getAttribute('id') + '"]'),
+ valid_length = (required) ? (el.value.length > 0) : true,
+ el_validations = [];
+
+ var parent, valid;
+
+ // support old way to do equalTo validations
+ if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
+
+ if (!direct_parent.is('label')) {
+ parent = direct_parent;
+ } else {
+ parent = direct_parent.parent();
+ }
+
+ if (is_radio && required) {
+ el_validations.push(this.valid_radio(el, required));
+ } else if (is_checkbox && required) {
+ el_validations.push(this.valid_checkbox(el, required));
+
+ } else if (validator) {
+ // Validate using each of the specified (space-delimited) validators.
+ var validators = validator.split(' ');
+ var last_valid = true, all_valid = true;
+ for (var iv = 0; iv < validators.length; iv++) {
+ valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent])
+ el_validations.push(valid);
+ all_valid = valid && last_valid;
+ last_valid = valid;
+ }
+ if (all_valid) {
+ this.S(el).removeAttr(this.invalid_attr);
+ parent.removeClass('error');
+ if (label.length > 0 && this.settings.error_labels) {
+ label.removeClass(this.settings.error_class).removeAttr('role');
+ }
+ $(el).triggerHandler('valid');
+ } else {
+ this.S(el).attr(this.invalid_attr, '');
+ parent.addClass('error');
+ if (label.length > 0 && this.settings.error_labels) {
+ label.addClass(this.settings.error_class).attr('role', 'alert');
+ }
+ $(el).triggerHandler('invalid');
+ }
+ } else {
+
+ if (el_patterns[i][1].test(value) && valid_length ||
+ !required && el.value.length < 1 || $(el).attr('disabled')) {
+ el_validations.push(true);
+ } else {
+ el_validations.push(false);
+ }
+
+ el_validations = [el_validations.every(function (valid) {return valid;})];
+ if (el_validations[0]) {
+ this.S(el).removeAttr(this.invalid_attr);
+ el.setAttribute('aria-invalid', 'false');
+ el.removeAttribute('aria-describedby');
+ parent.removeClass(this.settings.error_class);
+ if (label.length > 0 && this.settings.error_labels) {
+ label.removeClass(this.settings.error_class).removeAttr('role');
+ }
+ $(el).triggerHandler('valid');
+ } else {
+ this.S(el).attr(this.invalid_attr, '');
+ el.setAttribute('aria-invalid', 'true');
+
+ // Try to find the error associated with the input
+ var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
+ var errorID = errorElem.length > 0 ? errorElem[0].id : '';
+ if (errorID.length > 0) {
+ el.setAttribute('aria-describedby', errorID);
+ }
+
+ // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
+ parent.addClass(this.settings.error_class);
+ if (label.length > 0 && this.settings.error_labels) {
+ label.addClass(this.settings.error_class).attr('role', 'alert');
+ }
+ $(el).triggerHandler('invalid');
+ }
+ }
+ validations = validations.concat(el_validations);
+ }
+
+ return validations;
+ },
+
+ valid_checkbox : function (el, required) {
+ var el = this.S(el),
+ valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
+
+ if (valid) {
+ el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+ $(el).triggerHandler('valid');
+ } else {
+ el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+ $(el).triggerHandler('invalid');
+ }
+
+ return valid;
+ },
+
+ valid_radio : function (el, required) {
+ var name = el.getAttribute('name'),
+ group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
+ count = group.length,
+ valid = false,
+ disabled = false;
+
+ // Has to count up to make sure the focus gets applied to the top error
+ for (var i=0; i < count; i++) {
+ if( group[i].getAttribute('disabled') ){
+ disabled=true;
+ valid=true;
+ } else {
+ if (group[i].checked){
+ valid = true;
+ } else {
+ if( disabled ){
+ valid = false;
+ }
+ }
+ }
+ }
+
+ // Has to count up to make sure the focus gets applied to the top error
+ for (var i = 0; i < count; i++) {
+ if (valid) {
+ this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+ $(group[i]).triggerHandler('valid');
+ } else {
+ this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+ $(group[i]).triggerHandler('invalid');
+ }
+ }
+
+ return valid;
+ },
+
+ valid_equal : function (el, required, parent) {
+ var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
+ to = el.value,
+ valid = (from === to);
+
+ if (valid) {
+ this.S(el).removeAttr(this.invalid_attr);
+ parent.removeClass(this.settings.error_class);
+ if (label.length > 0 && settings.error_labels) {
+ label.removeClass(this.settings.error_class);
+ }
+ } else {
+ this.S(el).attr(this.invalid_attr, '');
+ parent.addClass(this.settings.error_class);
+ if (label.length > 0 && settings.error_labels) {
+ label.addClass(this.settings.error_class);
+ }
+ }
+
+ return valid;
+ },
+
+ valid_oneof : function (el, required, parent, doNotValidateOthers) {
+ var el = this.S(el),
+ others = this.S('[' + this.add_namespace('data-oneof') + ']'),
+ valid = others.filter(':checked').length > 0;
+
+ if (valid) {
+ el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
+ } else {
+ el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
+ }
+
+ if (!doNotValidateOthers) {
+ var _this = this;
+ others.each(function () {
+ _this.valid_oneof.call(_this, this, null, null, true);
+ });
+ }
+
+ return valid;
+ },
+
+ reflow : function(scope, options) {
+ var self = this,
+ form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate');
+ self.S(form).each(function (idx, el) {
+ self.events(el);
+ });
+ }
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.accordion = {
+ name : 'accordion',
+
+ version : '5.5.3',
+
+ settings : {
+ content_class : 'content',
+ active_class : 'active',
+ multi_expand : false,
+ toggleable : true,
+ callback : function () {}
+ },
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function (instance) {
+ var self = this;
+ var S = this.S;
+ self.create(this.S(instance));
+
+ S(this.scope)
+ .off('.fndtn.accordion')
+ .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) {
+ var accordion = S(this).closest('[' + self.attr_name() + ']'),
+ groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
+ settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
+ target = S('#' + this.href.split('#')[1]),
+ aunts = $('> dd, > li', accordion),
+ siblings = aunts.children('.' + settings.content_class),
+ active_content = siblings.filter('.' + settings.active_class);
+
+ e.preventDefault();
+
+ if (accordion.attr(self.attr_name())) {
+ siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class);
+ aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li');
+ }
+
+ if (settings.toggleable && target.is(active_content)) {
+ target.parent('dd, li').toggleClass(settings.active_class, false);
+ target.toggleClass(settings.active_class, false);
+ S(this).attr('aria-expanded', function(i, attr){
+ return attr === 'true' ? 'false' : 'true';
+ });
+ settings.callback(target);
+ target.triggerHandler('toggled', [accordion]);
+ accordion.triggerHandler('toggled', [target]);
+ return;
+ }
+
+ if (!settings.multi_expand) {
+ siblings.removeClass(settings.active_class);
+ aunts.removeClass(settings.active_class);
+ aunts.children('a').attr('aria-expanded','false');
+ }
+
+ target.addClass(settings.active_class).parent().addClass(settings.active_class);
+ settings.callback(target);
+ target.triggerHandler('toggled', [accordion]);
+ accordion.triggerHandler('toggled', [target]);
+ S(this).attr('aria-expanded','true');
+ });
+ },
+
+ create: function($instance) {
+ var self = this,
+ accordion = $instance,
+ aunts = $('> .accordion-navigation', accordion),
+ settings = accordion.data(self.attr_name(true) + '-init') || self.settings;
+
+ aunts.children('a').attr('aria-expanded','false');
+ aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true');
+
+ if (settings.multi_expand) {
+ $instance.attr('aria-multiselectable','true');
+ }
+ },
+
+ toggle : function(options) {
+ var options = typeof options !== 'undefined' ? options : {};
+ var selector = typeof options.selector !== 'undefined' ? options.selector : '';
+ var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : '';
+ var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']');
+
+ var $items = $accordion.find('> dd' + selector + ', > li' + selector);
+ if ( $items.length < 1 ) {
+ if ( window.console ) {
+ console.error('Selection not found.', selector);
+ }
+ return false;
+ }
+
+ var S = this.S;
+ var active_class = this.settings.active_class;
+ $items.each(function() {
+ var $item = S(this);
+ var is_active = $item.hasClass(active_class);
+ if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) {
+ $item.find('> a').trigger('click.fndtn.accordion');
+ }
+ });
+ },
+
+ open : function(options) {
+ var options = typeof options !== 'undefined' ? options : {};
+ options.toggle_state = 'open';
+ this.toggle(options);
+ },
+
+ close : function(options) {
+ var options = typeof options !== 'undefined' ? options : {};
+ options.toggle_state = 'close';
+ this.toggle(options);
+ },
+
+ off : function () {},
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.alert = {
+ name : 'alert',
+
+ version : '5.5.3',
+
+ settings : {
+ callback : function () {}
+ },
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function () {
+ var self = this,
+ S = this.S;
+
+ $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
+ var alertBox = S(this).closest('[' + self.attr_name() + ']'),
+ settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
+
+ e.preventDefault();
+ if (Modernizr.csstransitions) {
+ alertBox.addClass('alert-close');
+ alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {
+ S(this).trigger('close.fndtn.alert').remove();
+ settings.callback();
+ });
+ } else {
+ alertBox.fadeOut(300, function () {
+ S(this).trigger('close.fndtn.alert').remove();
+ settings.callback();
+ });
+ }
+ });
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.clearing = {
+ name : 'clearing',
+
+ version : '5.5.3',
+
+ settings : {
+ templates : {
+ viewing : '<a href="#" class="clearing-close">×</a>' +
+ '<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+ '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
+ '<a href="#" class="clearing-main-next"><span></span></a></div>' +
+ '<img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
+ '<img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />'
+ },
+
+ // comma delimited list of selectors that, on click, will close clearing,
+ // add 'div.clearing-blackout, div.visible-img' to close on background click
+ close_selectors : '.clearing-close, div.clearing-blackout',
+
+ // Default to the entire li element.
+ open_selectors : '',
+
+ // Image will be skipped in carousel.
+ skip_selector : '',
+
+ touch_label : '',
+
+ // event initializer and locks
+ init : false,
+ locked : false
+ },
+
+ init : function (scope, method, options) {
+ var self = this;
+ Foundation.inherit(this, 'throttle image_loaded');
+
+ this.bindings(method, options);
+
+ if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
+ this.assemble(self.S('li', this.scope));
+ } else {
+ self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ self.assemble(self.S('li', this));
+ });
+ }
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S,
+ $scroll_container = $('.scroll-container');
+
+ if ($scroll_container.length > 0) {
+ this.scope = $scroll_container;
+ }
+
+ S(this.scope)
+ .off('.clearing')
+ .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,
+ function (e, current, target) {
+ var current = current || S(this),
+ target = target || current,
+ next = current.next('li'),
+ settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
+ image = S(e.target);
+
+ e.preventDefault();
+
+ if (!settings) {
+ self.init();
+ settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+ }
+
+ // if clearing is open and the current image is
+ // clicked, go to the next image in sequence
+ if (target.hasClass('visible') &&
+ current[0] === target[0] &&
+ next.length > 0 && self.is_open(current)) {
+ target = next;
+ image = S('img', target);
+ }
+
+ // set current and target to the clicked li if not otherwise defined.
+ self.open(image, current, target);
+ self.update_paddles(target);
+ })
+
+ .on('click.fndtn.clearing', '.clearing-main-next',
+ function (e) { self.nav(e, 'next') })
+ .on('click.fndtn.clearing', '.clearing-main-prev',
+ function (e) { self.nav(e, 'prev') })
+ .on('click.fndtn.clearing', this.settings.close_selectors,
+ function (e) { Foundation.libs.clearing.close(e, this) });
+
+ $(document).on('keydown.fndtn.clearing',
+ function (e) { self.keydown(e) });
+
+ S(window).off('.clearing').on('resize.fndtn.clearing',
+ function () { self.resize() });
+
+ this.swipe_events(scope);
+ },
+
+ swipe_events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .on('touchstart.fndtn.clearing', '.visible-img', function (e) {
+ if (!e.touches) { e = e.originalEvent; }
+ var data = {
+ start_page_x : e.touches[0].pageX,
+ start_page_y : e.touches[0].pageY,
+ start_time : (new Date()).getTime(),
+ delta_x : 0,
+ is_scrolling : undefined
+ };
+
+ S(this).data('swipe-transition', data);
+ e.stopPropagation();
+ })
+ .on('touchmove.fndtn.clearing', '.visible-img', function (e) {
+ if (!e.touches) {
+ e = e.originalEvent;
+ }
+ // Ignore pinch/zoom events
+ if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+ return;
+ }
+
+ var data = S(this).data('swipe-transition');
+
+ if (typeof data === 'undefined') {
+ data = {};
+ }
+
+ data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+ if (Foundation.rtl) {
+ data.delta_x = -data.delta_x;
+ }
+
+ if (typeof data.is_scrolling === 'undefined') {
+ data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+ }
+
+ if (!data.is_scrolling && !data.active) {
+ e.preventDefault();
+ var direction = (data.delta_x < 0) ? 'next' : 'prev';
+ data.active = true;
+ self.nav(e, direction);
+ }
+ })
+ .on('touchend.fndtn.clearing', '.visible-img', function (e) {
+ S(this).data('swipe-transition', {});
+ e.stopPropagation();
+ });
+ },
+
+ assemble : function ($li) {
+ var $el = $li.parent();
+
+ if ($el.parent().hasClass('carousel')) {
+ return;
+ }
+
+ $el.after('<div id="foundationClearingHolder"></div>');
+
+ var grid = $el.detach(),
+ grid_outerHTML = '';
+
+ if (grid[0] == null) {
+ return;
+ } else {
+ grid_outerHTML = grid[0].outerHTML;
+ }
+
+ var holder = this.S('#foundationClearingHolder'),
+ settings = $el.data(this.attr_name(true) + '-init'),
+ data = {
+ grid : '<div class="carousel">' + grid_outerHTML + '</div>',
+ viewing : settings.templates.viewing
+ },
+ wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
+ data.grid + '</div></div>',
+ touch_label = this.settings.touch_label;
+
+ if (Modernizr.touch) {
+ wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
+ }
+
+ holder.after(wrapper).remove();
+ },
+
+ open : function ($image, current, target) {
+ var self = this,
+ body = $(document.body),
+ root = target.closest('.clearing-assembled'),
+ container = self.S('div', root).first(),
+ visible_image = self.S('.visible-img', container),
+ image = self.S('img', visible_image).not($image),
+ label = self.S('.clearing-touch-label', container),
+ error = false,
+ loaded = {};
+
+ // Event to disable scrolling on touch devices when Clearing is activated
+ $('body').on('touchmove', function (e) {
+ e.preventDefault();
+ });
+
+ image.error(function () {
+ error = true;
+ });
+
+ function startLoad() {
+ setTimeout(function () {
+ this.image_loaded(image, function () {
+ if (image.outerWidth() === 1 && !error) {
+ startLoad.call(this);
+ } else {
+ cb.call(this, image);
+ }
+ }.bind(this));
+ }.bind(this), 100);
+ }
+
+ function cb (image) {
+ var $image = $(image);
+ $image.css('visibility', 'visible');
+ $image.trigger('imageVisible');
+ // toggle the gallery
+ body.css('overflow', 'hidden');
+ root.addClass('clearing-blackout');
+ container.addClass('clearing-container');
+ visible_image.show();
+ this.fix_height(target)
+ .caption(self.S('.clearing-caption', visible_image), self.S('img', target))
+ .center_and_label(image, label)
+ .shift(current, target, function () {
+ target.closest('li').siblings().removeClass('visible');
+ target.closest('li').addClass('visible');
+ });
+ visible_image.trigger('opened.fndtn.clearing')
+ }
+
+ if (!this.locked()) {
+ visible_image.trigger('open.fndtn.clearing');
+ // set the image to the selected thumbnail
+ loaded = this.load($image);
+ if (loaded.interchange) {
+ image
+ .attr('data-interchange', loaded.interchange)
+ .foundation('interchange', 'reflow');
+ } else {
+ image
+ .attr('src', loaded.src)
+ .attr('data-interchange', '');
+ }
+ image.css('visibility', 'hidden');
+
+ startLoad.call(this);
+ }
+ },
+
+ close : function (e, el) {
+ e.preventDefault();
+
+ var root = (function (target) {
+ if (/blackout/.test(target.selector)) {
+ return target;
+ } else {
+ return target.closest('.clearing-blackout');
+ }
+ }($(el))),
+ body = $(document.body), container, visible_image;
+
+ if (el === e.target && root) {
+ body.css('overflow', '');
+ container = $('div', root).first();
+ visible_image = $('.visible-img', container);
+ visible_image.trigger('close.fndtn.clearing');
+ this.settings.prev_index = 0;
+ $('ul[' + this.attr_name() + ']', root)
+ .attr('style', '').closest('.clearing-blackout')
+ .removeClass('clearing-blackout');
+ container.removeClass('clearing-container');
+ visible_image.hide();
+ visible_image.trigger('closed.fndtn.clearing');
+ }
+
+ // Event to re-enable scrolling on touch devices
+ $('body').off('touchmove');
+
+ return false;
+ },
+
+ is_open : function (current) {
+ return current.parent().prop('style').length > 0;
+ },
+
+ keydown : function (e) {
+ var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
+ NEXT_KEY = this.rtl ? 37 : 39,
+ PREV_KEY = this.rtl ? 39 : 37,
+ ESC_KEY = 27;
+
+ if (e.which === NEXT_KEY) {
+ this.go(clearing, 'next');
+ }
+ if (e.which === PREV_KEY) {
+ this.go(clearing, 'prev');
+ }
+ if (e.which === ESC_KEY) {
+ this.S('a.clearing-close').trigger('click.fndtn.clearing');
+ }
+ },
+
+ nav : function (e, direction) {
+ var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
+
+ e.preventDefault();
+ this.go(clearing, direction);
+ },
+
+ resize : function () {
+ var image = $('img', '.clearing-blackout .visible-img'),
+ label = $('.clearing-touch-label', '.clearing-blackout');
+
+ if (image.length) {
+ this.center_and_label(image, label);
+ image.trigger('resized.fndtn.clearing')
+ }
+ },
+
+ // visual adjustments
+ fix_height : function (target) {
+ var lis = target.parent().children(),
+ self = this;
+
+ lis.each(function () {
+ var li = self.S(this),
+ image = li.find('img');
+
+ if (li.height() > image.outerHeight()) {
+ li.addClass('fix-height');
+ }
+ })
+ .closest('ul')
+ .width(lis.length * 100 + '%');
+
+ return this;
+ },
+
+ update_paddles : function (target) {
+ target = target.closest('li');
+ var visible_image = target
+ .closest('.carousel')
+ .siblings('.visible-img');
+
+ if (target.next().length > 0) {
+ this.S('.clearing-main-next', visible_image).removeClass('disabled');
+ } else {
+ this.S('.clearing-main-next', visible_image).addClass('disabled');
+ }
+
+ if (target.prev().length > 0) {
+ this.S('.clearing-main-prev', visible_image).removeClass('disabled');
+ } else {
+ this.S('.clearing-main-prev', visible_image).addClass('disabled');
+ }
+ },
+
+ center_and_label : function (target, label) {
+ if (!this.rtl && label.length > 0) {
+ label.css({
+ marginLeft : -(label.outerWidth() / 2),
+ marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
+ });
+ } else {
+ label.css({
+ marginRight : -(label.outerWidth() / 2),
+ marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
+ left: 'auto',
+ right: '50%'
+ });
+ }
+ return this;
+ },
+
+ // image loading and preloading
+
+ load : function ($image) {
+ var href,
+ interchange,
+ closest_a;
+
+ if ($image[0].nodeName === 'A') {
+ href = $image.attr('href');
+ interchange = $image.data('clearing-interchange');
+ } else {
+ closest_a = $image.closest('a');
+ href = closest_a.attr('href');
+ interchange = closest_a.data('clearing-interchange');
+ }
+
+ this.preload($image);
+
+ return {
+ 'src': href ? href : $image.attr('src'),
+ 'interchange': href ? interchange : $image.data('clearing-interchange')
+ }
+ },
+
+ preload : function ($image) {
+ this
+ .img($image.closest('li').next(), 'next')
+ .img($image.closest('li').prev(), 'prev');
+ },
+
+ img : function (img, sibling_type) {
+ if (img.length) {
+ var preload_img = $('.clearing-preload-' + sibling_type),
+ new_a = this.S('a', img),
+ src,
+ interchange,
+ image;
+
+ if (new_a.length) {
+ src = new_a.attr('href');
+ interchange = new_a.data('clearing-interchange');
+ } else {
+ image = this.S('img', img);
+ src = image.attr('src');
+ interchange = image.data('clearing-interchange');
+ }
+
+ if (interchange) {
+ preload_img.attr('data-interchange', interchange);
+ } else {
+ preload_img.attr('src', src);
+ preload_img.attr('data-interchange', '');
+ }
+ }
+ return this;
+ },
+
+ // image caption
+
+ caption : function (container, $image) {
+ var caption = $image.attr('data-caption');
+
+ if (caption) {
+ var containerPlain = container.get(0);
+ containerPlain.innerHTML = caption;
+ container.show();
+ } else {
+ container
+ .text('')
+ .hide();
+ }
+ return this;
+ },
+
+ // directional methods
+
+ go : function ($ul, direction) {
+ var current = this.S('.visible', $ul),
+ target = current[direction]();
+
+ // Check for skip selector.
+ if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {
+ target = target[direction]();
+ }
+
+ if (target.length) {
+ this.S('img', target)
+ .trigger('click.fndtn.clearing', [current, target])
+ .trigger('change.fndtn.clearing');
+ }
+ },
+
+ shift : function (current, target, callback) {
+ var clearing = target.parent(),
+ old_index = this.settings.prev_index || target.index(),
+ direction = this.direction(clearing, current, target),
+ dir = this.rtl ? 'right' : 'left',
+ left = parseInt(clearing.css('left'), 10),
+ width = target.outerWidth(),
+ skip_shift;
+
+ var dir_obj = {};
+
+ // we use jQuery animate instead of CSS transitions because we
+ // need a callback to unlock the next animation
+ // needs support for RTL **
+ if (target.index() !== old_index && !/skip/.test(direction)) {
+ if (/left/.test(direction)) {
+ this.lock();
+ dir_obj[dir] = left + width;
+ clearing.animate(dir_obj, 300, this.unlock());
+ } else if (/right/.test(direction)) {
+ this.lock();
+ dir_obj[dir] = left - width;
+ clearing.animate(dir_obj, 300, this.unlock());
+ }
+ } else if (/skip/.test(direction)) {
+ // the target image is not adjacent to the current image, so
+ // do we scroll right or not
+ skip_shift = target.index() - this.settings.up_count;
+ this.lock();
+
+ if (skip_shift > 0) {
+ dir_obj[dir] = -(skip_shift * width);
+ clearing.animate(dir_obj, 300, this.unlock());
+ } else {
+ dir_obj[dir] = 0;
+ clearing.animate(dir_obj, 300, this.unlock());
+ }
+ }
+
+ callback();
+ },
+
+ direction : function ($el, current, target) {
+ var lis = this.S('li', $el),
+ li_width = lis.outerWidth() + (lis.outerWidth() / 4),
+ up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
+ target_index = lis.index(target),
+ response;
+
+ this.settings.up_count = up_count;
+
+ if (this.adjacent(this.settings.prev_index, target_index)) {
+ if ((target_index > up_count) && target_index > this.settings.prev_index) {
+ response = 'right';
+ } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {
+ response = 'left';
+ } else {
+ response = false;
+ }
+ } else {
+ response = 'skip';
+ }
+
+ this.settings.prev_index = target_index;
+
+ return response;
+ },
+
+ adjacent : function (current_index, target_index) {
+ for (var i = target_index + 1; i >= target_index - 1; i--) {
+ if (i === current_index) {
+ return true;
+ }
+ }
+ return false;
+ },
+
+ // lock management
+
+ lock : function () {
+ this.settings.locked = true;
+ },
+
+ unlock : function () {
+ this.settings.locked = false;
+ },
+
+ locked : function () {
+ return this.settings.locked;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.clearing');
+ this.S(window).off('.fndtn.clearing');
+ },
+
+ reflow : function () {
+ this.init();
+ }
+ };
+
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.dropdown = {
+ name : 'dropdown',
+
+ version : '5.5.3',
+
+ settings : {
+ active_class : 'open',
+ disabled_class : 'disabled',
+ mega_class : 'mega',
+ align : 'bottom',
+ is_hover : false,
+ hover_timeout : 150,
+ opened : function () {},
+ closed : function () {}
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .off('.dropdown')
+ .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
+ var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
+ if (!settings.is_hover || Modernizr.touch) {
+ e.preventDefault();
+ if (S(this).parent('[data-reveal-id]').length) {
+ e.stopPropagation();
+ }
+ self.toggle($(this));
+ }
+ })
+ .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+ var $this = S(this),
+ dropdown,
+ target;
+
+ clearTimeout(self.timeout);
+
+ if ($this.data(self.data_attr())) {
+ dropdown = S('#' + $this.data(self.data_attr()));
+ target = $this;
+ } else {
+ dropdown = $this;
+ target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
+ }
+
+ var settings = target.data(self.attr_name(true) + '-init') || self.settings;
+
+ if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
+ self.closeall.call(self);
+ }
+
+ if (settings.is_hover) {
+ self.open.apply(self, [dropdown, target]);
+ }
+ })
+ .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+ var $this = S(this);
+ var settings;
+
+ if ($this.data(self.data_attr())) {
+ settings = $this.data(self.data_attr(true) + '-init') || self.settings;
+ } else {
+ var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
+ settings = target.data(self.attr_name(true) + '-init') || self.settings;
+ }
+
+ self.timeout = setTimeout(function () {
+ if ($this.data(self.data_attr())) {
+ if (settings.is_hover) {
+ self.close.call(self, S('#' + $this.data(self.data_attr())));
+ }
+ } else {
+ if (settings.is_hover) {
+ self.close.call(self, $this);
+ }
+ }
+ }.bind(this), settings.hover_timeout);
+ })
+ .on('click.fndtn.dropdown', function (e) {
+ var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
+ var links = parent.find('a');
+
+ if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
+ }
+
+ if (e.target !== document && !$.contains(document.documentElement, e.target)) {
+ return;
+ }
+
+ if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
+ return;
+ }
+
+ if (!(S(e.target).data('revealId')) &&
+ (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
+ $.contains(parent.first()[0], e.target)))) {
+ e.stopPropagation();
+ return;
+ }
+
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
+ })
+ .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+ self.settings.opened.call(this);
+ })
+ .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+ self.settings.closed.call(this);
+ });
+
+ S(window)
+ .off('.dropdown')
+ .on('resize.fndtn.dropdown', self.throttle(function () {
+ self.resize.call(self);
+ }, 50));
+
+ this.resize();
+ },
+
+ close : function (dropdown) {
+ var self = this;
+ dropdown.each(function (idx) {
+ var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']');
+ original_target.attr('aria-expanded', 'false');
+ if (self.S(this).hasClass(self.settings.active_class)) {
+ self.S(this)
+ .css(Foundation.rtl ? 'right' : 'left', '-99999px')
+ .attr('aria-hidden', 'true')
+ .removeClass(self.settings.active_class)
+ .prev('[' + self.attr_name() + ']')
+ .removeClass(self.settings.active_class)
+ .removeData('target');
+
+ self.S(this).trigger('closed.fndtn.dropdown', [dropdown]);
+ }
+ });
+ dropdown.removeClass('f-open-' + this.attr_name(true));
+ },
+
+ closeall : function () {
+ var self = this;
+ $.each(self.S('.f-open-' + this.attr_name(true)), function () {
+ self.close.call(self, self.S(this));
+ });
+ },
+
+ open : function (dropdown, target) {
+ this
+ .css(dropdown
+ .addClass(this.settings.active_class), target);
+ dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
+ dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]);
+ dropdown.attr('aria-hidden', 'false');
+ target.attr('aria-expanded', 'true');
+ dropdown.focus();
+ dropdown.addClass('f-open-' + this.attr_name(true));
+ },
+
+ data_attr : function () {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + this.name;
+ }
+
+ return this.name;
+ },
+
+ toggle : function (target) {
+ if (target.hasClass(this.settings.disabled_class)) {
+ return;
+ }
+ var dropdown = this.S('#' + target.data(this.data_attr()));
+ if (dropdown.length === 0) {
+ // No dropdown found, not continuing
+ return;
+ }
+
+ this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
+
+ if (dropdown.hasClass(this.settings.active_class)) {
+ this.close.call(this, dropdown);
+ if (dropdown.data('target') !== target.get(0)) {
+ this.open.call(this, dropdown, target);
+ }
+ } else {
+ this.open.call(this, dropdown, target);
+ }
+ },
+
+ resize : function () {
+ var dropdown = this.S('[' + this.attr_name() + '-content].open');
+ var target = $(dropdown.data("target"));
+
+ if (dropdown.length && target.length) {
+ this.css(dropdown, target);
+ }
+ },
+
+ css : function (dropdown, target) {
+ var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
+ settings = target.data(this.attr_name(true) + '-init') || this.settings,
+ parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow');
+
+ this.clear_idx();
+
+
+
+ if (this.small()) {
+ var p = this.dirs.bottom.call(dropdown, target, settings);
+
+ dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
+ position : 'absolute',
+ width : '95%',
+ 'max-width' : 'none',
+ top : p.top
+ });
+
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+ }
+ // detect if dropdown is in an overflow container
+ else if (parentOverflow !== 'visible') {
+ var offset = target[0].offsetTop + target[0].offsetHeight;
+
+ dropdown.attr('style', '').css({
+ position : 'absolute',
+ top : offset
+ });
+
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+ }
+ else {
+
+ this.style(dropdown, target, settings);
+ }
+
+ return dropdown;
+ },
+
+ style : function (dropdown, target, settings) {
+ var css = $.extend({position : 'absolute'},
+ this.dirs[settings.align].call(dropdown, target, settings));
+
+ dropdown.attr('style', '').css(css);
+ },
+
+ // return CSS property object
+ // `this` is the dropdown
+ dirs : {
+ // Calculate target offset
+ _base : function (t, s) {
+ var o_p = this.offsetParent(),
+ o = o_p.offset(),
+ p = t.offset();
+
+ p.top -= o.top;
+ p.left -= o.left;
+
+ //set some flags on the p object to pass along
+ p.missRight = false;
+ p.missTop = false;
+ p.missLeft = false;
+ p.leftRightFlag = false;
+
+ //lets see if the panel will be off the screen
+ //get the actual width of the page and store it
+ var actualBodyWidth;
+ var windowWidth = window.innerWidth;
+
+ if (document.getElementsByClassName('row')[0]) {
+ actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
+ } else {
+ actualBodyWidth = windowWidth;
+ }
+
+ var actualMarginWidth = (windowWidth - actualBodyWidth) / 2;
+ var actualBoundary = actualBodyWidth;
+
+ if (!this.hasClass('mega') && !s.ignore_repositioning) {
+ var outerWidth = this.outerWidth();
+ var o_left = t.offset().left;
+
+ //miss top
+ if (t.offset().top <= this.outerHeight()) {
+ p.missTop = true;
+ actualBoundary = windowWidth - actualMarginWidth;
+ p.leftRightFlag = true;
+ }
+
+ //miss right
+ if (o_left + outerWidth > o_left + actualMarginWidth && o_left - actualMarginWidth > outerWidth) {
+ p.missRight = true;
+ p.missLeft = false;
+ }
+
+ //miss left
+ if (o_left - outerWidth <= 0) {
+ p.missLeft = true;
+ p.missRight = false;
+ }
+ }
+
+ return p;
+ },
+
+ top : function (t, s) {
+ var self = Foundation.libs.dropdown,
+ p = self.dirs._base.call(this, t, s);
+
+ this.addClass('drop-top');
+
+ if (p.missTop == true) {
+ p.top = p.top + t.outerHeight() + this.outerHeight();
+ this.removeClass('drop-top');
+ }
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth() + t.outerWidth();
+ }
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ if (Foundation.rtl) {
+ return {left : p.left - this.outerWidth() + t.outerWidth(),
+ top : p.top - this.outerHeight()};
+ }
+
+ return {left : p.left, top : p.top - this.outerHeight()};
+ },
+
+ bottom : function (t, s) {
+ var self = Foundation.libs.dropdown,
+ p = self.dirs._base.call(this, t, s);
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth() + t.outerWidth();
+ }
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ if (self.rtl) {
+ return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
+ }
+
+ return {left : p.left, top : p.top + t.outerHeight()};
+ },
+
+ left : function (t, s) {
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+ this.addClass('drop-left');
+
+ if (p.missLeft == true) {
+ p.left = p.left + this.outerWidth();
+ p.top = p.top + t.outerHeight();
+ this.removeClass('drop-left');
+ }
+
+ return {left : p.left - this.outerWidth(), top : p.top};
+ },
+
+ right : function (t, s) {
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
+
+ this.addClass('drop-right');
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth();
+ p.top = p.top + t.outerHeight();
+ this.removeClass('drop-right');
+ } else {
+ p.triggeredRight = true;
+ }
+
+ var self = Foundation.libs.dropdown;
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ return {left : p.left + t.outerWidth(), top : p.top};
+ }
+ },
+
+ // Insert rule to style psuedo elements
+ adjust_pip : function (dropdown, target, settings, position) {
+ var sheet = Foundation.stylesheet,
+ pip_offset_base = 8;
+
+ if (dropdown.hasClass(settings.mega_class)) {
+ pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
+ } else if (this.small()) {
+ pip_offset_base += position.left - 8;
+ }
+
+ this.rule_idx = sheet.cssRules.length;
+
+ //default
+ var sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left: ' + pip_offset_base + 'px;',
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
+
+ if (position.missRight == true) {
+ pip_offset_base = dropdown.outerWidth() - 23;
+ sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left: ' + pip_offset_base + 'px;',
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
+ }
+
+ //just a case where right is fired, but its not missing right
+ if (position.triggeredRight == true) {
+ sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left:-12px;',
+ css_after = 'left:-14px;';
+ }
+
+ if (sheet.insertRule) {
+ sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
+ sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
+ } else {
+ sheet.addRule(sel_before, css_before, this.rule_idx);
+ sheet.addRule(sel_after, css_after, this.rule_idx + 1);
+ }
+ },
+
+ // Remove old dropdown rule index
+ clear_idx : function () {
+ var sheet = Foundation.stylesheet;
+
+ if (typeof this.rule_idx !== 'undefined') {
+ sheet.deleteRule(this.rule_idx);
+ sheet.deleteRule(this.rule_idx);
+ delete this.rule_idx;
+ }
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.dropdown');
+ this.S('html, body').off('.fndtn.dropdown');
+ this.S(window).off('.fndtn.dropdown');
+ this.S('[data-dropdown-content]').off('.fndtn.dropdown');
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.equalizer = {
+ name : 'equalizer',
+
+ version : '5.5.3',
+
+ settings : {
+ use_tallest : true,
+ before_height_change : $.noop,
+ after_height_change : $.noop,
+ equalize_on_stack : false,
+ act_on_hidden_el: false
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'image_loaded');
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ events : function () {
+ this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
+ this.reflow();
+ }.bind(this));
+ },
+
+ equalize : function (equalizer) {
+ var isStacked = false,
+ group = equalizer.data('equalizer'),
+ settings = equalizer.data(this.attr_name(true)+'-init') || this.settings,
+ vals,
+ firstTopOffset;
+
+ if (settings.act_on_hidden_el) {
+ vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]');
+ }
+ else {
+ vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible');
+ }
+
+ if (vals.length === 0) {
+ return;
+ }
+
+ settings.before_height_change();
+ equalizer.trigger('before-height-change.fndth.equalizer');
+ vals.height('inherit');
+
+ if (settings.equalize_on_stack === false) {
+ firstTopOffset = vals.first().offset().top;
+ vals.each(function () {
+ if ($(this).offset().top !== firstTopOffset) {
+ isStacked = true;
+ return false;
+ }
+ });
+ if (isStacked) {
+ return;
+ }
+ }
+
+ var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
+
+ if (settings.use_tallest) {
+ var max = Math.max.apply(null, heights);
+ vals.css('height', max);
+ } else {
+ var min = Math.min.apply(null, heights);
+ vals.css('height', min);
+ }
+
+ settings.after_height_change();
+ equalizer.trigger('after-height-change.fndtn.equalizer');
+ },
+
+ reflow : function () {
+ var self = this;
+
+ this.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var $eq_target = $(this),
+ media_query = $eq_target.data('equalizer-mq'),
+ ignore_media_query = true;
+
+ if (media_query) {
+ media_query = 'is_' + media_query.replace(/-/g, '_');
+ if (Foundation.utils.hasOwnProperty(media_query)) {
+ ignore_media_query = false;
+ }
+ }
+
+ self.image_loaded(self.S('img', this), function () {
+ if (ignore_media_query || Foundation.utils[media_query]()) {
+ self.equalize($eq_target)
+ } else {
+ var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible');
+ vals.css('height', 'auto');
+ }
+ });
+ });
+ }
+ };
+})(jQuery, window, window.document);
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.interchange = {
+ name : 'interchange',
+
+ version : '5.5.3',
+
+ cache : {},
+
+ images_loaded : false,
+ nodes_loaded : false,
+
+ settings : {
+ load_attr : 'interchange',
+
+ named_queries : {
+ 'default' : 'only screen',
+ 'small' : Foundation.media_queries['small'],
+ 'small-only' : Foundation.media_queries['small-only'],
+ 'medium' : Foundation.media_queries['medium'],
+ 'medium-only' : Foundation.media_queries['medium-only'],
+ 'large' : Foundation.media_queries['large'],
+ 'large-only' : Foundation.media_queries['large-only'],
+ 'xlarge' : Foundation.media_queries['xlarge'],
+ 'xlarge-only' : Foundation.media_queries['xlarge-only'],
+ 'xxlarge' : Foundation.media_queries['xxlarge'],
+ 'landscape' : 'only screen and (orientation: landscape)',
+ 'portrait' : 'only screen and (orientation: portrait)',
+ 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
+ 'only screen and (min--moz-device-pixel-ratio: 2),' +
+ 'only screen and (-o-min-device-pixel-ratio: 2/1),' +
+ 'only screen and (min-device-pixel-ratio: 2),' +
+ 'only screen and (min-resolution: 192dpi),' +
+ 'only screen and (min-resolution: 2dppx)'
+ },
+
+ directives : {
+ replace : function (el, path, trigger) {
+ // The trigger argument, if called within the directive, fires
+ // an event named after the directive on the element, passing
+ // any parameters along to the event that you pass to trigger.
+ //
+ // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
+ //
+ // This allows you to bind a callback like so:
+ // $('#interchangeContainer').on('replace', function (e, a, b, c) {
+ // console.log($(this).html(), a, b, c);
+ // });
+
+ if (el !== null && /IMG/.test(el[0].nodeName)) {
+ var orig_path = $.each(el, function(){this.src = path;});
+ // var orig_path = el[0].src;
+
+ if (new RegExp(path, 'i').test(orig_path)) {
+ return;
+ }
+
+ el.attr("src", path);
+
+ return trigger(el[0].src);
+ }
+ var last_path = el.data(this.data_attr + '-last-path'),
+ self = this;
+
+ if (last_path == path) {
+ return;
+ }
+
+ if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
+ $(el).css('background-image', 'url(' + path + ')');
+ el.data('interchange-last-path', path);
+ return trigger(path);
+ }
+
+ return $.get(path, function (response) {
+ el.html(response);
+ el.data(self.data_attr + '-last-path', path);
+ trigger();
+ });
+
+ }
+ }
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle random_str');
+
+ this.data_attr = this.set_data_attr();
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ get_media_hash : function () {
+ var mediaHash = '';
+ for (var queryName in this.settings.named_queries ) {
+ mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
+ }
+ return mediaHash;
+ },
+
+ events : function () {
+ var self = this, prevMediaHash;
+
+ $(window)
+ .off('.interchange')
+ .on('resize.fndtn.interchange', self.throttle(function () {
+ var currMediaHash = self.get_media_hash();
+ if (currMediaHash !== prevMediaHash) {
+ self.resize();
+ }
+ prevMediaHash = currMediaHash;
+ }, 50));
+
+ return this;
+ },
+
+ resize : function () {
+ var cache = this.cache;
+
+ if (!this.images_loaded || !this.nodes_loaded) {
+ setTimeout($.proxy(this.resize, this), 50);
+ return;
+ }
+
+ for (var uuid in cache) {
+ if (cache.hasOwnProperty(uuid)) {
+ var passed = this.results(uuid, cache[uuid]);
+ if (passed) {
+ this.settings.directives[passed
+ .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
+ if (arguments[0] instanceof Array) {
+ var args = arguments[0];
+ } else {
+ var args = Array.prototype.slice.call(arguments, 0);
+ }
+
+ return function() {
+ passed.el.trigger(passed.scenario[1], args);
+ }
+ }(passed)));
+ }
+ }
+ }
+
+ },
+
+ results : function (uuid, scenarios) {
+ var count = scenarios.length;
+
+ if (count > 0) {
+ var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
+
+ while (count--) {
+ var mq, rule = scenarios[count][2];
+ if (this.settings.named_queries.hasOwnProperty(rule)) {
+ mq = matchMedia(this.settings.named_queries[rule]);
+ } else {
+ mq = matchMedia(rule);
+ }
+ if (mq.matches) {
+ return {el : el, scenario : scenarios[count]};
+ }
+ }
+ }
+
+ return false;
+ },
+
+ load : function (type, force_update) {
+ if (typeof this['cached_' + type] === 'undefined' || force_update) {
+ this['update_' + type]();
+ }
+
+ return this['cached_' + type];
+ },
+
+ update_images : function () {
+ var images = this.S('img[' + this.data_attr + ']'),
+ count = images.length,
+ i = count,
+ loaded_count = 0,
+ data_attr = this.data_attr;
+
+ this.cache = {};
+ this.cached_images = [];
+ this.images_loaded = (count === 0);
+
+ while (i--) {
+ loaded_count++;
+ if (images[i]) {
+ var str = images[i].getAttribute(data_attr) || '';
+
+ if (str.length > 0) {
+ this.cached_images.push(images[i]);
+ }
+ }
+
+ if (loaded_count === count) {
+ this.images_loaded = true;
+ this.enhance('images');
+ }
+ }
+
+ return this;
+ },
+
+ update_nodes : function () {
+ var nodes = this.S('[' + this.data_attr + ']').not('img'),
+ count = nodes.length,
+ i = count,
+ loaded_count = 0,
+ data_attr = this.data_attr;
+
+ this.cached_nodes = [];
+ this.nodes_loaded = (count === 0);
+
+ while (i--) {
+ loaded_count++;
+ var str = nodes[i].getAttribute(data_attr) || '';
+
+ if (str.length > 0) {
+ this.cached_nodes.push(nodes[i]);
+ }
+
+ if (loaded_count === count) {
+ this.nodes_loaded = true;
+ this.enhance('nodes');
+ }
+ }
+
+ return this;
+ },
+
+ enhance : function (type) {
+ var i = this['cached_' + type].length;
+
+ while (i--) {
+ this.object($(this['cached_' + type][i]));
+ }
+
+ return $(window).trigger('resize.fndtn.interchange');
+ },
+
+ convert_directive : function (directive) {
+
+ var trimmed = this.trim(directive);
+
+ if (trimmed.length > 0) {
+ return trimmed;
+ }
+
+ return 'replace';
+ },
+
+ parse_scenario : function (scenario) {
+ // This logic had to be made more complex since some users were using commas in the url path
+ // So we cannot simply just split on a comma
+
+ var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
+ // getting the mq has gotten a bit complicated since we started accounting for several use cases
+ // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios
+ // as nested objects or arrays in F6.
+ // regex: match everything before close parenthesis for mq
+ media_query = scenario[1].match(/(.*)\)/);
+
+ if (directive_match) {
+ var path = directive_match[1],
+ directive = directive_match[2];
+
+ } else {
+ var cached_split = scenario[0].split(/,\s*$/),
+ path = cached_split[0],
+ directive = '';
+ }
+
+ return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])];
+ },
+
+ object : function (el) {
+ var raw_arr = this.parse_data_attr(el),
+ scenarios = [],
+ i = raw_arr.length;
+
+ if (i > 0) {
+ while (i--) {
+ // split array between comma delimited content and mq
+ // regex: comma, optional space, open parenthesis
+ var scenario = raw_arr[i].split(/,\s?\(/);
+
+ if (scenario.length > 1) {
+ var params = this.parse_scenario(scenario);
+ scenarios.push(params);
+ }
+ }
+ }
+
+ return this.store(el, scenarios);
+ },
+
+ store : function (el, scenarios) {
+ var uuid = this.random_str(),
+ current_uuid = el.data(this.add_namespace('uuid', true));
+
+ if (this.cache[current_uuid]) {
+ return this.cache[current_uuid];
+ }
+
+ el.attr(this.add_namespace('data-uuid'), uuid);
+ return this.cache[uuid] = scenarios;
+ },
+
+ trim : function (str) {
+
+ if (typeof str === 'string') {
+ return $.trim(str);
+ }
+
+ return str;
+ },
+
+ set_data_attr : function (init) {
+ if (init) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + this.settings.load_attr;
+ }
+
+ return this.settings.load_attr;
+ }
+
+ if (this.namespace.length > 0) {
+ return 'data-' + this.namespace + '-' + this.settings.load_attr;
+ }
+
+ return 'data-' + this.settings.load_attr;
+ },
+
+ parse_data_attr : function (el) {
+ var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
+ i = raw.length,
+ output = [];
+
+ while (i--) {
+ if (raw[i].replace(/[\W\d]+/, '').length > 4) {
+ output.push(raw[i]);
+ }
+ }
+
+ return output;
+ },
+
+ reflow : function () {
+ this.load('images', true);
+ this.load('nodes', true);
+ }
+
+ };
+
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ var Modernizr = Modernizr || false;
+
+ Foundation.libs.joyride = {
+ name : 'joyride',
+
+ version : '5.5.3',
+
+ defaults : {
+ expose : false, // turn on or off the expose feature
+ modal : true, // Whether to cover page with modal during the tour
+ keyboard : true, // enable left, right and esc keystrokes
+ tip_location : 'bottom', // 'top', 'bottom', 'left' or 'right' in relation to parent
+ nub_position : 'auto', // override on a per tooltip bases
+ scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation
+ scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.
+ timer : 0, // 0 = no timer , all other numbers = timer in milliseconds
+ start_timer_on_click : true, // true or false - true requires clicking the first button start the timer
+ start_offset : 0, // the index of the tooltip you want to start on (index of the li)
+ next_button : true, // true or false to control whether a next button is used
+ prev_button : true, // true or false to control whether a prev button is used
+ tip_animation : 'fade', // 'pop' or 'fade' in each tip
+ pause_after : [], // array of indexes where to pause the tour after
+ exposed : [], // array of expose elements
+ tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
+ cookie_monster : false, // true or false to control whether cookies are used
+ cookie_name : 'joyride', // Name the cookie you'll use
+ cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
+ cookie_expires : 365, // set when you would like the cookie to expire.
+ tip_container : 'body', // Where will the tip be attached
+ abort_on_close : true, // When true, the close event will not fire any callback
+ tip_location_patterns : {
+ top : ['bottom'],
+ bottom : [], // bottom should not need to be repositioned
+ left : ['right', 'top', 'bottom'],
+ right : ['left', 'top', 'bottom']
+ },
+ post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete)
+ post_step_callback : function () {}, // A method to call after each step
+ pre_step_callback : function () {}, // A method to call before each step
+ pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element)
+ post_expose_callback : function () {}, // A method to call after an element has been exposed
+ template : { // HTML segments for tip layout
+ link : '<a href="#close" class="joyride-close-tip">×</a>',
+ timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
+ tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
+ wrapper : '<div class="joyride-content-wrapper"></div>',
+ button : '<a href="#" class="small button joyride-next-tip"></a>',
+ prev_button : '<a href="#" class="small button joyride-prev-tip"></a>',
+ modal : '<div class="joyride-modal-bg"></div>',
+ expose : '<div class="joyride-expose-wrapper"></div>',
+ expose_cover : '<div class="joyride-expose-cover"></div>'
+ },
+ expose_add_class : '' // One or more space-separated class names to be added to exposed element
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle random_str');
+
+ this.settings = this.settings || $.extend({}, this.defaults, (options || method));
+
+ this.bindings(method, options)
+ },
+
+ go_next : function () {
+ if (this.settings.$li.next().length < 1) {
+ this.end();
+ } else if (this.settings.timer > 0) {
+ clearTimeout(this.settings.automate);
+ this.hide();
+ this.show();
+ this.startTimer();
+ } else {
+ this.hide();
+ this.show();
+ }
+ },
+
+ go_prev : function () {
+ if (this.settings.$li.prev().length < 1) {
+ // Do nothing if there are no prev element
+ } else if (this.settings.timer > 0) {
+ clearTimeout(this.settings.automate);
+ this.hide();
+ this.show(null, true);
+ this.startTimer();
+ } else {
+ this.hide();
+ this.show(null, true);
+ }
+ },
+
+ events : function () {
+ var self = this;
+
+ $(this.scope)
+ .off('.joyride')
+ .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
+ e.preventDefault();
+ this.go_next()
+ }.bind(this))
+ .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {
+ e.preventDefault();
+ this.go_prev();
+ }.bind(this))
+
+ .on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
+ e.preventDefault();
+ this.end(this.settings.abort_on_close);
+ }.bind(this))
+
+ .on('keyup.fndtn.joyride', function (e) {
+ // Don't do anything if keystrokes are disabled
+ // or if the joyride is not being shown
+ if (!this.settings.keyboard || !this.settings.riding) {
+ return;
+ }
+
+ switch (e.which) {
+ case 39: // right arrow
+ e.preventDefault();
+ this.go_next();
+ break;
+ case 37: // left arrow
+ e.preventDefault();
+ this.go_prev();
+ break;
+ case 27: // escape
+ e.preventDefault();
+ this.end(this.settings.abort_on_close);
+ }
+ }.bind(this));
+
+ $(window)
+ .off('.joyride')
+ .on('resize.fndtn.joyride', self.throttle(function () {
+ if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {
+ if (self.settings.exposed.length > 0) {
+ var $els = $(self.settings.exposed);
+
+ $els.each(function () {
+ var $this = $(this);
+ self.un_expose($this);
+ self.expose($this);
+ });
+ }
+
+ if (self.is_phone()) {
+ self.pos_phone();
+ } else {
+ self.pos_default(false);
+ }
+ }
+ }, 100));
+ },
+
+ start : function () {
+ var self = this,
+ $this = $('[' + this.attr_name() + ']', this.scope),
+ integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
+ int_settings_count = integer_settings.length;
+
+ if (!$this.length > 0) {
+ return;
+ }
+
+ if (!this.settings.init) {
+ this.events();
+ }
+
+ this.settings = $this.data(this.attr_name(true) + '-init');
+
+ // non configureable settings
+ this.settings.$content_el = $this;
+ this.settings.$body = $(this.settings.tip_container);
+ this.settings.body_offset = $(this.settings.tip_container).position();
+ this.settings.$tip_content = this.settings.$content_el.find('> li');
+ this.settings.paused = false;
+ this.settings.attempts = 0;
+ this.settings.riding = true;
+
+ // can we create cookies?
+ if (typeof $.cookie !== 'function') {
+ this.settings.cookie_monster = false;
+ }
+
+ // generate the tips and insert into dom.
+ if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
+ this.settings.$tip_content.each(function (index) {
+ var $this = $(this);
+ this.settings = $.extend({}, self.defaults, self.data_options($this));
+
+ // Make sure that settings parsed from data_options are integers where necessary
+ var i = int_settings_count;
+ while (i--) {
+ self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
+ }
+ self.create({$li : $this, index : index});
+ });
+
+ // show first tip
+ if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
+ this.show('init');
+ this.startTimer();
+ } else {
+ this.show('init');
+ }
+
+ }
+ },
+
+ resume : function () {
+ this.set_li();
+ this.show();
+ },
+
+ tip_template : function (opts) {
+ var $blank, content;
+
+ opts.tip_class = opts.tip_class || '';
+
+ $blank = $(this.settings.template.tip).addClass(opts.tip_class);
+ content = $.trim($(opts.li).html()) +
+ this.prev_button_text(opts.prev_button_text, opts.index) +
+ this.button_text(opts.button_text) +
+ this.settings.template.link +
+ this.timer_instance(opts.index);
+
+ $blank.append($(this.settings.template.wrapper));
+ $blank.first().attr(this.add_namespace('data-index'), opts.index);
+ $('.joyride-content-wrapper', $blank).append(content);
+
+ return $blank[0];
+ },
+
+ timer_instance : function (index) {
+ var txt;
+
+ if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
+ txt = '';
+ } else {
+ txt = $(this.settings.template.timer)[0].outerHTML;
+ }
+ return txt;
+ },
+
+ button_text : function (txt) {
+ if (this.settings.tip_settings.next_button) {
+ txt = $.trim(txt) || 'Next';
+ txt = $(this.settings.template.button).append(txt)[0].outerHTML;
+ } else {
+ txt = '';
+ }
+ return txt;
+ },
+
+ prev_button_text : function (txt, idx) {
+ if (this.settings.tip_settings.prev_button) {
+ txt = $.trim(txt) || 'Previous';
+
+ // Add the disabled class to the button if it's the first element
+ if (idx == 0) {
+ txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;
+ } else {
+ txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;
+ }
+ } else {
+ txt = '';
+ }
+ return txt;
+ },
+
+ create : function (opts) {
+ this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));
+ var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')),
+ prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')),
+ tipClass = opts.$li.attr('class'),
+ $tip_content = $(this.tip_template({
+ tip_class : tipClass,
+ index : opts.index,
+ button_text : buttonText,
+ prev_button_text : prevButtonText,
+ li : opts.$li
+ }));
+
+ $(this.settings.tip_container).append($tip_content);
+ },
+
+ show : function (init, is_prev) {
+ var $timer = null;
+
+ // are we paused?
+ if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
+
+ // don't go to the next li if the tour was paused
+ if (this.settings.paused) {
+ this.settings.paused = false;
+ } else {
+ this.set_li(init, is_prev);
+ }
+
+ this.settings.attempts = 0;
+
+ if (this.settings.$li.length && this.settings.$target.length > 0) {
+ if (init) { //run when we first start
+ this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
+ if (this.settings.modal) {
+ this.show_modal();
+ }
+ }
+
+ this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
+
+ if (this.settings.modal && this.settings.expose) {
+ this.expose();
+ }
+
+ this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
+
+ this.settings.timer = parseInt(this.settings.timer, 10);
+
+ this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
+
+ // scroll and hide bg if not modal and not expose
+ if (!/body/i.test(this.settings.$target.selector) && !this.settings.expose) {
+ var joyridemodalbg = $('.joyride-modal-bg');
+ if (/pop/i.test(this.settings.tipAnimation)) {
+ joyridemodalbg.hide();
+ } else {
+ joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed);
+ }
+ this.scroll_to();
+ }
+
+ if (this.is_phone()) {
+ this.pos_phone(true);
+ } else {
+ this.pos_default(true);
+ }
+
+ $timer = this.settings.$next_tip.find('.joyride-timer-indicator');
+
+ if (/pop/i.test(this.settings.tip_animation)) {
+
+ $timer.width(0);
+
+ if (this.settings.timer > 0) {
+
+ this.settings.$next_tip.show();
+
+ setTimeout(function () {
+ $timer.animate({
+ width : $timer.parent().width()
+ }, this.settings.timer, 'linear');
+ }.bind(this), this.settings.tip_animation_fade_speed);
+
+ } else {
+ this.settings.$next_tip.show();
+
+ }
+
+ } else if (/fade/i.test(this.settings.tip_animation)) {
+
+ $timer.width(0);
+
+ if (this.settings.timer > 0) {
+
+ this.settings.$next_tip
+ .fadeIn(this.settings.tip_animation_fade_speed)
+ .show();
+
+ setTimeout(function () {
+ $timer.animate({
+ width : $timer.parent().width()
+ }, this.settings.timer, 'linear');
+ }.bind(this), this.settings.tip_animation_fade_speed);
+
+ } else {
+ this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
+ }
+ }
+
+ this.settings.$current_tip = this.settings.$next_tip;
+
+ // skip non-existant targets
+ } else if (this.settings.$li && this.settings.$target.length < 1) {
+
+ this.show(init, is_prev);
+
+ } else {
+
+ this.end();
+
+ }
+ } else {
+
+ this.settings.paused = true;
+
+ }
+
+ },
+
+ is_phone : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ hide : function () {
+ if (this.settings.modal && this.settings.expose) {
+ this.un_expose();
+ }
+
+ if (!this.settings.modal) {
+ $('.joyride-modal-bg').hide();
+ }
+
+ // Prevent scroll bouncing...wait to remove from layout
+ this.settings.$current_tip.css('visibility', 'hidden');
+ setTimeout($.proxy(function () {
+ this.hide();
+ this.css('visibility', 'visible');
+ }, this.settings.$current_tip), 0);
+ this.settings.post_step_callback(this.settings.$li.index(),
+ this.settings.$current_tip);
+ },
+
+ set_li : function (init, is_prev) {
+ if (init) {
+ this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
+ this.set_next_tip();
+ this.settings.$current_tip = this.settings.$next_tip;
+ } else {
+ if (is_prev) {
+ this.settings.$li = this.settings.$li.prev();
+ } else {
+ this.settings.$li = this.settings.$li.next();
+ }
+ this.set_next_tip();
+ }
+
+ this.set_target();
+ },
+
+ set_next_tip : function () {
+ this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index());
+ this.settings.$next_tip.data('closed', '');
+ },
+
+ set_target : function () {
+ var cl = this.settings.$li.attr(this.add_namespace('data-class')),
+ id = this.settings.$li.attr(this.add_namespace('data-id')),
+ $sel = function () {
+ if (id) {
+ return $(document.getElementById(id));
+ } else if (cl) {
+ return $('.' + cl).first();
+ } else {
+ return $('body');
+ }
+ };
+
+ this.settings.$target = $sel();
+ },
+
+ scroll_to : function () {
+ var window_half, tipOffset;
+
+ window_half = $(window).height() / 2;
+ tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
+
+ if (tipOffset != 0) {
+ $('html, body').stop().animate({
+ scrollTop : tipOffset
+ }, this.settings.scroll_speed, 'swing');
+ }
+ },
+
+ paused : function () {
+ return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
+ },
+
+ restart : function () {
+ this.hide();
+ this.settings.$li = undefined;
+ this.show('init');
+ },
+
+ pos_default : function (init) {
+ var $nub = this.settings.$next_tip.find('.joyride-nub'),
+ nub_width = Math.ceil($nub.outerWidth() / 2),
+ nub_height = Math.ceil($nub.outerHeight() / 2),
+ toggle = init || false;
+
+ // tip must not be "display: none" to calculate position
+ if (toggle) {
+ this.settings.$next_tip.css('visibility', 'hidden');
+ this.settings.$next_tip.show();
+ }
+
+ if (!/body/i.test(this.settings.$target.selector)) {
+ var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
+ leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
+
+ if (this.bottom()) {
+ if (this.rtl) {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+ left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
+ } else {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
+ left : this.settings.$target.offset().left + leftAdjustment});
+ }
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
+
+ } else if (this.top()) {
+ if (this.rtl) {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+ left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
+ } else {
+ this.settings.$next_tip.css({
+ top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
+ left : this.settings.$target.offset().left + leftAdjustment});
+ }
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
+
+ } else if (this.right()) {
+
+ this.settings.$next_tip.css({
+ top : this.settings.$target.offset().top + topAdjustment,
+ left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
+
+ } else if (this.left()) {
+
+ this.settings.$next_tip.css({
+ top : this.settings.$target.offset().top + topAdjustment,
+ left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
+
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
+
+ }
+
+ if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
+
+ $nub.removeClass('bottom')
+ .removeClass('top')
+ .removeClass('right')
+ .removeClass('left');
+
+ this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
+
+ this.settings.attempts++;
+
+ this.pos_default();
+
+ }
+
+ } else if (this.settings.$li.length) {
+
+ this.pos_modal($nub);
+
+ }
+
+ if (toggle) {
+ this.settings.$next_tip.hide();
+ this.settings.$next_tip.css('visibility', 'visible');
+ }
+
+ },
+
+ pos_phone : function (init) {
+ var tip_height = this.settings.$next_tip.outerHeight(),
+ tip_offset = this.settings.$next_tip.offset(),
+ target_height = this.settings.$target.outerHeight(),
+ $nub = $('.joyride-nub', this.settings.$next_tip),
+ nub_height = Math.ceil($nub.outerHeight() / 2),
+ toggle = init || false;
+
+ $nub.removeClass('bottom')
+ .removeClass('top')
+ .removeClass('right')
+ .removeClass('left');
+
+ if (toggle) {
+ this.settings.$next_tip.css('visibility', 'hidden');
+ this.settings.$next_tip.show();
+ }
+
+ if (!/body/i.test(this.settings.$target.selector)) {
+
+ if (this.top()) {
+
+ this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height});
+ $nub.addClass('bottom');
+
+ } else {
+
+ this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height});
+ $nub.addClass('top');
+
+ }
+
+ } else if (this.settings.$li.length) {
+ this.pos_modal($nub);
+ }
+
+ if (toggle) {
+ this.settings.$next_tip.hide();
+ this.settings.$next_tip.css('visibility', 'visible');
+ }
+ },
+
+ pos_modal : function ($nub) {
+ this.center();
+ $nub.hide();
+
+ this.show_modal();
+ },
+
+ show_modal : function () {
+ if (!this.settings.$next_tip.data('closed')) {
+ var joyridemodalbg = $('.joyride-modal-bg');
+ if (joyridemodalbg.length < 1) {
+ var joyridemodalbg = $(this.settings.template.modal);
+ joyridemodalbg.appendTo('body');
+ }
+
+ if (/pop/i.test(this.settings.tip_animation)) {
+ joyridemodalbg.show();
+ } else {
+ joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
+ }
+ }
+ },
+
+ expose : function () {
+ var expose,
+ exposeCover,
+ el,
+ origCSS,
+ origClasses,
+ randId = 'expose-' + this.random_str(6);
+
+ if (arguments.length > 0 && arguments[0] instanceof $) {
+ el = arguments[0];
+ } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+ el = this.settings.$target;
+ } else {
+ return false;
+ }
+
+ if (el.length < 1) {
+ if (window.console) {
+ console.error('element not valid', el);
+ }
+ return false;
+ }
+
+ expose = $(this.settings.template.expose);
+ this.settings.$body.append(expose);
+ expose.css({
+ top : el.offset().top,
+ left : el.offset().left,
+ width : el.outerWidth(true),
+ height : el.outerHeight(true)
+ });
+
+ exposeCover = $(this.settings.template.expose_cover);
+
+ origCSS = {
+ zIndex : el.css('z-index'),
+ position : el.css('position')
+ };
+
+ origClasses = el.attr('class') == null ? '' : el.attr('class');
+
+ el.css('z-index', parseInt(expose.css('z-index')) + 1);
+
+ if (origCSS.position == 'static') {
+ el.css('position', 'relative');
+ }
+
+ el.data('expose-css', origCSS);
+ el.data('orig-class', origClasses);
+ el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
+
+ exposeCover.css({
+ top : el.offset().top,
+ left : el.offset().left,
+ width : el.outerWidth(true),
+ height : el.outerHeight(true)
+ });
+
+ if (this.settings.modal) {
+ this.show_modal();
+ }
+
+ this.settings.$body.append(exposeCover);
+ expose.addClass(randId);
+ exposeCover.addClass(randId);
+ el.data('expose', randId);
+ this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
+ this.add_exposed(el);
+ },
+
+ un_expose : function () {
+ var exposeId,
+ el,
+ expose,
+ origCSS,
+ origClasses,
+ clearAll = false;
+
+ if (arguments.length > 0 && arguments[0] instanceof $) {
+ el = arguments[0];
+ } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
+ el = this.settings.$target;
+ } else {
+ return false;
+ }
+
+ if (el.length < 1) {
+ if (window.console) {
+ console.error('element not valid', el);
+ }
+ return false;
+ }
+
+ exposeId = el.data('expose');
+ expose = $('.' + exposeId);
+
+ if (arguments.length > 1) {
+ clearAll = arguments[1];
+ }
+
+ if (clearAll === true) {
+ $('.joyride-expose-wrapper,.joyride-expose-cover').remove();
+ } else {
+ expose.remove();
+ }
+
+ origCSS = el.data('expose-css');
+
+ if (origCSS.zIndex == 'auto') {
+ el.css('z-index', '');
+ } else {
+ el.css('z-index', origCSS.zIndex);
+ }
+
+ if (origCSS.position != el.css('position')) {
+ if (origCSS.position == 'static') {// this is default, no need to set it.
+ el.css('position', '');
+ } else {
+ el.css('position', origCSS.position);
+ }
+ }
+
+ origClasses = el.data('orig-class');
+ el.attr('class', origClasses);
+ el.removeData('orig-classes');
+
+ el.removeData('expose');
+ el.removeData('expose-z-index');
+ this.remove_exposed(el);
+ },
+
+ add_exposed : function (el) {
+ this.settings.exposed = this.settings.exposed || [];
+ if (el instanceof $ || typeof el === 'object') {
+ this.settings.exposed.push(el[0]);
+ } else if (typeof el == 'string') {
+ this.settings.exposed.push(el);
+ }
+ },
+
+ remove_exposed : function (el) {
+ var search, i;
+ if (el instanceof $) {
+ search = el[0]
+ } else if (typeof el == 'string') {
+ search = el;
+ }
+
+ this.settings.exposed = this.settings.exposed || [];
+ i = this.settings.exposed.length;
+
+ while (i--) {
+ if (this.settings.exposed[i] == search) {
+ this.settings.exposed.splice(i, 1);
+ return;
+ }
+ }
+ },
+
+ center : function () {
+ var $w = $(window);
+
+ this.settings.$next_tip.css({
+ top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
+ left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
+ });
+
+ return true;
+ },
+
+ bottom : function () {
+ return /bottom/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ top : function () {
+ return /top/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ right : function () {
+ return /right/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ left : function () {
+ return /left/i.test(this.settings.tip_settings.tip_location);
+ },
+
+ corners : function (el) {
+ if (el.length === 0) {
+ return [false, false, false, false];
+ }
+
+ var w = $(window),
+ window_half = w.height() / 2,
+ //using this to calculate since scroll may not have finished yet.
+ tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
+ right = w.width() + w.scrollLeft(),
+ offsetBottom = w.height() + tipOffset,
+ bottom = w.height() + w.scrollTop(),
+ top = w.scrollTop();
+
+ if (tipOffset < top) {
+ if (tipOffset < 0) {
+ top = 0;
+ } else {
+ top = tipOffset;
+ }
+ }
+
+ if (offsetBottom > bottom) {
+ bottom = offsetBottom;
+ }
+
+ return [
+ el.offset().top < top,
+ right < el.offset().left + el.outerWidth(),
+ bottom < el.offset().top + el.outerHeight(),
+ w.scrollLeft() > el.offset().left
+ ];
+ },
+
+ visible : function (hidden_corners) {
+ var i = hidden_corners.length;
+
+ while (i--) {
+ if (hidden_corners[i]) {
+ return false;
+ }
+ }
+
+ return true;
+ },
+
+ nub_position : function (nub, pos, def) {
+ if (pos === 'auto') {
+ nub.addClass(def);
+ } else {
+ nub.addClass(pos);
+ }
+ },
+
+ startTimer : function () {
+ if (this.settings.$li.length) {
+ this.settings.automate = setTimeout(function () {
+ this.hide();
+ this.show();
+ this.startTimer();
+ }.bind(this), this.settings.timer);
+ } else {
+ clearTimeout(this.settings.automate);
+ }
+ },
+
+ end : function (abort) {
+ if (this.settings.cookie_monster) {
+ $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain});
+ }
+
+ if (this.settings.timer > 0) {
+ clearTimeout(this.settings.automate);
+ }
+
+ if (this.settings.modal && this.settings.expose) {
+ this.un_expose();
+ }
+
+ // Unplug keystrokes listener
+ $(this.scope).off('keyup.joyride')
+
+ this.settings.$next_tip.data('closed', true);
+ this.settings.riding = false;
+
+ $('.joyride-modal-bg').hide();
+ this.settings.$current_tip.hide();
+
+ if (typeof abort === 'undefined' || abort === false) {
+ this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
+ this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
+ }
+
+ $('.joyride-tip-guide').remove();
+ },
+
+ off : function () {
+ $(this.scope).off('.joyride');
+ $(window).off('.joyride');
+ $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
+ $('.joyride-tip-guide, .joyride-modal-bg').remove();
+ clearTimeout(this.settings.automate);
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+/*
+ * Foundation Responsive Library
+ * http://foundation.zurb.com
+ * Copyright 2015, ZURB
+ * Free to use under the MIT license.
+ * http://www.opensource.org/licenses/mit-license.php
+*/
+
+(function ($, window, document, undefined) {
+ 'use strict';
+
+ var header_helpers = function (class_array) {
+ var head = $('head');
+ head.prepend($.map(class_array, function (class_name) {
+ if (head.has('.' + class_name).length === 0) {
+ return '<meta class="' + class_name + '" />';
+ }
+ }));
+ };
+
+ header_helpers([
+ 'foundation-mq-small',
+ 'foundation-mq-small-only',
+ 'foundation-mq-medium',
+ 'foundation-mq-medium-only',
+ 'foundation-mq-large',
+ 'foundation-mq-large-only',
+ 'foundation-mq-xlarge',
+ 'foundation-mq-xlarge-only',
+ 'foundation-mq-xxlarge',
+ 'foundation-data-attribute-namespace']);
+
+ // Enable FastClick if present
+
+ $(function () {
+ if (typeof FastClick !== 'undefined') {
+ // Don't attach to body if undefined
+ if (typeof document.body !== 'undefined') {
+ FastClick.attach(document.body);
+ }
+ }
+ });
+
+ // private Fast Selector wrapper,
+ // returns jQuery object. Only use where
+ // getElementById is not available.
+ var S = function (selector, context) {
+ if (typeof selector === 'string') {
+ if (context) {
+ var cont;
+ if (context.jquery) {
+ cont = context[0];
+ if (!cont) {
+ return context;
+ }
+ } else {
+ cont = context;
+ }
+ return $(cont.querySelectorAll(selector));
+ }
+
+ return $(document.querySelectorAll(selector));
+ }
+
+ return $(selector, context);
+ };
+
+ // Namespace functions.
+
+ var attr_name = function (init) {
+ var arr = [];
+ if (!init) {
+ arr.push('data');
+ }
+ if (this.namespace.length > 0) {
+ arr.push(this.namespace);
+ }
+ arr.push(this.name);
+
+ return arr.join('-');
+ };
+
+ var add_namespace = function (str) {
+ var parts = str.split('-'),
+ i = parts.length,
+ arr = [];
+
+ while (i--) {
+ if (i !== 0) {
+ arr.push(parts[i]);
+ } else {
+ if (this.namespace.length > 0) {
+ arr.push(this.namespace, parts[i]);
+ } else {
+ arr.push(parts[i]);
+ }
+ }
+ }
+
+ return arr.reverse().join('-');
+ };
+
+ // Event binding and data-options updating.
+
+ var bindings = function (method, options) {
+ var self = this,
+ bind = function(){
+ var $this = S(this),
+ should_bind_events = !$this.data(self.attr_name(true) + '-init');
+ $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));
+
+ if (should_bind_events) {
+ self.events(this);
+ }
+ };
+
+ if (S(this.scope).is('[' + this.attr_name() +']')) {
+ bind.call(this.scope);
+ } else {
+ S('[' + this.attr_name() +']', this.scope).each(bind);
+ }
+ // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
+ if (typeof method === 'string') {
+ return this[method].call(this, options);
+ }
+
+ };
+
+ var single_image_loaded = function (image, callback) {
+ function loaded () {
+ callback(image[0]);
+ }
+
+ function bindLoad () {
+ this.one('load', loaded);
+
+ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
+ var src = this.attr( 'src' ),
+ param = src.match( /\?/ ) ? '&' : '?';
+
+ param += 'random=' + (new Date()).getTime();
+ this.attr('src', src + param);
+ }
+ }
+
+ if (!image.attr('src')) {
+ loaded();
+ return;
+ }
+
+ if (image[0].complete || image[0].readyState === 4) {
+ loaded();
+ } else {
+ bindLoad.call(image);
+ }
+ };
+
+ /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */
+
+ window.matchMedia || (window.matchMedia = function() {
+ "use strict";
+
+ // For browsers that support matchMedium api such as IE 9 and webkit
+ var styleMedia = (window.styleMedia || window.media);
+
+ // For those that don't support matchMedium
+ if (!styleMedia) {
+ var style = document.createElement('style'),
+ script = document.getElementsByTagName('script')[0],
+ info = null;
+
+ style.type = 'text/css';
+ style.id = 'matchmediajs-test';
+
+ script.parentNode.insertBefore(style, script);
+
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+ info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;
+
+ styleMedia = {
+ matchMedium: function(media) {
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+ if (style.styleSheet) {
+ style.styleSheet.cssText = text;
+ } else {
+ style.textContent = text;
+ }
+
+ // Test if media query is true or false
+ return info.width === '1px';
+ }
+ };
+ }
+
+ return function(media) {
+ return {
+ matches: styleMedia.matchMedium(media || 'all'),
+ media: media || 'all'
+ };
+ };
+ }());
+
+ /*
+ * jquery.requestAnimationFrame
+ * https://github.com/gnarf37/jquery-requestAnimationFrame
+ * Requires jQuery 1.8+
+ *
+ * Copyright (c) 2012 Corey Frang
+ * Licensed under the MIT license.
+ */
+
+ (function(jQuery) {
+
+
+ // requestAnimationFrame polyfill adapted from Erik Möller
+ // fixes from Paul Irish and Tino Zijdel
+ // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+ // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
+
+ var animating,
+ lastTime = 0,
+ vendors = ['webkit', 'moz'],
+ requestAnimationFrame = window.requestAnimationFrame,
+ cancelAnimationFrame = window.cancelAnimationFrame,
+ jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
+
+ for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
+ requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];
+ cancelAnimationFrame = cancelAnimationFrame ||
+ window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||
+ window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];
+ }
+
+ function raf() {
+ if (animating) {
+ requestAnimationFrame(raf);
+
+ if (jqueryFxAvailable) {
+ jQuery.fx.tick();
+ }
+ }
+ }
+
+ if (requestAnimationFrame) {
+ // use rAF
+ window.requestAnimationFrame = requestAnimationFrame;
+ window.cancelAnimationFrame = cancelAnimationFrame;
+
+ if (jqueryFxAvailable) {
+ jQuery.fx.timer = function (timer) {
+ if (timer() && jQuery.timers.push(timer) && !animating) {
+ animating = true;
+ raf();
+ }
+ };
+
+ jQuery.fx.stop = function () {
+ animating = false;
+ };
+ }
+ } else {
+ // polyfill
+ window.requestAnimationFrame = function (callback) {
+ var currTime = new Date().getTime(),
+ timeToCall = Math.max(0, 16 - (currTime - lastTime)),
+ id = window.setTimeout(function () {
+ callback(currTime + timeToCall);
+ }, timeToCall);
+ lastTime = currTime + timeToCall;
+ return id;
+ };
+
+ window.cancelAnimationFrame = function (id) {
+ clearTimeout(id);
+ };
+
+ }
+
+ }( $ ));
+
+ function removeQuotes (string) {
+ if (typeof string === 'string' || string instanceof String) {
+ string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
+ }
+
+ return string;
+ }
+
+ function MediaQuery(selector) {
+ this.selector = selector;
+ this.query = '';
+ }
+
+ MediaQuery.prototype.toString = function () {
+ return this.query || (this.query = S(this.selector).css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''));
+ };
+
+ window.Foundation = {
+ name : 'Foundation',
+
+ version : '5.5.3',
+
+ media_queries : {
+ 'small' : new MediaQuery('.foundation-mq-small'),
+ 'small-only' : new MediaQuery('.foundation-mq-small-only'),
+ 'medium' : new MediaQuery('.foundation-mq-medium'),
+ 'medium-only' : new MediaQuery('.foundation-mq-medium-only'),
+ 'large' : new MediaQuery('.foundation-mq-large'),
+ 'large-only' : new MediaQuery('.foundation-mq-large-only'),
+ 'xlarge' : new MediaQuery('.foundation-mq-xlarge'),
+ 'xlarge-only' : new MediaQuery('.foundation-mq-xlarge-only'),
+ 'xxlarge' : new MediaQuery('.foundation-mq-xxlarge')
+ },
+
+ stylesheet : $('<style></style>').appendTo('head')[0].sheet,
+
+ global : {
+ namespace : undefined
+ },
+
+ init : function (scope, libraries, method, options, response) {
+ var args = [scope, method, options, response],
+ responses = [];
+
+ // check RTL
+ this.rtl = /rtl/i.test(S('html').attr('dir'));
+
+ // set foundation global scope
+ this.scope = scope || this.scope;
+
+ this.set_namespace();
+
+ if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
+ if (this.libs.hasOwnProperty(libraries)) {
+ responses.push(this.init_lib(libraries, args));
+ }
+ } else {
+ for (var lib in this.libs) {
+ responses.push(this.init_lib(lib, libraries));
+ }
+ }
+
+ S(window).load(function () {
+ S(window)
+ .trigger('resize.fndtn.clearing')
+ .trigger('resize.fndtn.dropdown')
+ .trigger('resize.fndtn.equalizer')
+ .trigger('resize.fndtn.interchange')
+ .trigger('resize.fndtn.joyride')
+ .trigger('resize.fndtn.magellan')
+ .trigger('resize.fndtn.topbar')
+ .trigger('resize.fndtn.slider');
+ });
+
+ return scope;
+ },
+
+ init_lib : function (lib, args) {
+ if (this.libs.hasOwnProperty(lib)) {
+ this.patch(this.libs[lib]);
+
+ if (args && args.hasOwnProperty(lib)) {
+ if (typeof this.libs[lib].settings !== 'undefined') {
+ $.extend(true, this.libs[lib].settings, args[lib]);
+ } else if (typeof this.libs[lib].defaults !== 'undefined') {
+ $.extend(true, this.libs[lib].defaults, args[lib]);
+ }
+ return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
+ }
+
+ args = args instanceof Array ? args : new Array(args);
+ return this.libs[lib].init.apply(this.libs[lib], args);
+ }
+
+ return function () {};
+ },
+
+ patch : function (lib) {
+ lib.scope = this.scope;
+ lib.namespace = this.global.namespace;
+ lib.rtl = this.rtl;
+ lib['data_options'] = this.utils.data_options;
+ lib['attr_name'] = attr_name;
+ lib['add_namespace'] = add_namespace;
+ lib['bindings'] = bindings;
+ lib['S'] = this.utils.S;
+ },
+
+ inherit : function (scope, methods) {
+ var methods_arr = methods.split(' '),
+ i = methods_arr.length;
+
+ while (i--) {
+ if (this.utils.hasOwnProperty(methods_arr[i])) {
+ scope[methods_arr[i]] = this.utils[methods_arr[i]];
+ }
+ }
+ },
+
+ set_namespace : function () {
+
+ // Description:
+ // Don't bother reading the namespace out of the meta tag
+ // if the namespace has been set globally in javascript
+ //
+ // Example:
+ // Foundation.global.namespace = 'my-namespace';
+ // or make it an empty string:
+ // Foundation.global.namespace = '';
+ //
+ //
+
+ // If the namespace has not been set (is undefined), try to read it out of the meta element.
+ // Otherwise use the globally defined namespace, even if it's empty ('')
+ var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
+
+ // Finally, if the namsepace is either undefined or false, set it to an empty string.
+ // Otherwise use the namespace value.
+ this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
+ },
+
+ libs : {},
+
+ // methods that can be inherited in libraries
+ utils : {
+
+ // Description:
+ // Fast Selector wrapper returns jQuery object. Only use where getElementById
+ // is not available.
+ //
+ // Arguments:
+ // Selector (String): CSS selector describing the element(s) to be
+ // returned as a jQuery object.
+ //
+ // Scope (String): CSS selector describing the area to be searched. Default
+ // is document.
+ //
+ // Returns:
+ // Element (jQuery Object): jQuery object containing elements matching the
+ // selector within the scope.
+ S : S,
+
+ // Description:
+ // Executes a function a max of once every n milliseconds
+ //
+ // Arguments:
+ // Func (Function): Function to be throttled.
+ //
+ // Delay (Integer): Function execution threshold in milliseconds.
+ //
+ // Returns:
+ // Lazy_function (Function): Function with throttling applied.
+ throttle : function (func, delay) {
+ var timer = null;
+
+ return function () {
+ var context = this, args = arguments;
+
+ if (timer == null) {
+ timer = setTimeout(function () {
+ func.apply(context, args);
+ timer = null;
+ }, delay);
+ }
+ };
+ },
+
+ // Description:
+ // Executes a function when it stops being invoked for n seconds
+ // Modified version of _.debounce() http://underscorejs.org
+ //
+ // Arguments:
+ // Func (Function): Function to be debounced.
+ //
+ // Delay (Integer): Function execution threshold in milliseconds.
+ //
+ // Immediate (Bool): Whether the function should be called at the beginning
+ // of the delay instead of the end. Default is false.
+ //
+ // Returns:
+ // Lazy_function (Function): Function with debouncing applied.
+ debounce : function (func, delay, immediate) {
+ var timeout, result;
+ return function () {
+ var context = this, args = arguments;
+ var later = function () {
+ timeout = null;
+ if (!immediate) {
+ result = func.apply(context, args);
+ }
+ };
+ var callNow = immediate && !timeout;
+ clearTimeout(timeout);
+ timeout = setTimeout(later, delay);
+ if (callNow) {
+ result = func.apply(context, args);
+ }
+ return result;
+ };
+ },
+
+ // Description:
+ // Parses data-options attribute
+ //
+ // Arguments:
+ // El (jQuery Object): Element to be parsed.
+ //
+ // Returns:
+ // Options (Javascript Object): Contents of the element's data-options
+ // attribute.
+ data_options : function (el, data_attr_name) {
+ data_attr_name = data_attr_name || 'options';
+ var opts = {}, ii, p, opts_arr,
+ data_options = function (el) {
+ var namespace = Foundation.global.namespace;
+
+ if (namespace.length > 0) {
+ return el.data(namespace + '-' + data_attr_name);
+ }
+
+ return el.data(data_attr_name);
+ };
+
+ var cached_options = data_options(el);
+
+ if (typeof cached_options === 'object') {
+ return cached_options;
+ }
+
+ opts_arr = (cached_options || ':').split(';');
+ ii = opts_arr.length;
+
+ function isNumber (o) {
+ return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;
+ }
+
+ function trim (str) {
+ if (typeof str === 'string') {
+ return $.trim(str);
+ }
+ return str;
+ }
+
+ while (ii--) {
+ p = opts_arr[ii].split(':');
+ p = [p[0], p.slice(1).join(':')];
+
+ if (/true/i.test(p[1])) {
+ p[1] = true;
+ }
+ if (/false/i.test(p[1])) {
+ p[1] = false;
+ }
+ if (isNumber(p[1])) {
+ if (p[1].indexOf('.') === -1) {
+ p[1] = parseInt(p[1], 10);
+ } else {
+ p[1] = parseFloat(p[1]);
+ }
+ }
+
+ if (p.length === 2 && p[0].length > 0) {
+ opts[trim(p[0])] = trim(p[1]);
+ }
+ }
+
+ return opts;
+ },
+
+ // Description:
+ // Adds JS-recognizable media queries
+ //
+ // Arguments:
+ // Media (String): Key string for the media query to be stored as in
+ // Foundation.media_queries
+ //
+ // Class (String): Class name for the generated <meta> tag
+ register_media : function (media, media_class) {
+ if (Foundation.media_queries[media] === undefined) {
+ $('head').append('<meta class="' + media_class + '"/>');
+ Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
+ }
+ },
+
+ // Description:
+ // Add custom CSS within a JS-defined media query
+ //
+ // Arguments:
+ // Rule (String): CSS rule to be appended to the document.
+ //
+ // Media (String): Optional media query string for the CSS rule to be
+ // nested under.
+ add_custom_rule : function (rule, media) {
+ if (media === undefined && Foundation.stylesheet) {
+ Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
+ } else {
+ var query = Foundation.media_queries[media];
+
+ if (query !== undefined) {
+ Foundation.stylesheet.insertRule('@media ' +
+ Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length);
+ }
+ }
+ },
+
+ // Description:
+ // Performs a callback function when an image is fully loaded
+ //
+ // Arguments:
+ // Image (jQuery Object): Image(s) to check if loaded.
+ //
+ // Callback (Function): Function to execute when image is fully loaded.
+ image_loaded : function (images, callback) {
+ var self = this,
+ unloaded = images.length;
+
+ function pictures_has_height(images) {
+ var pictures_number = images.length;
+
+ for (var i = pictures_number - 1; i >= 0; i--) {
+ if(images.attr('height') === undefined) {
+ return false;
+ };
+ };
+
+ return true;
+ }
+
+ if (unloaded === 0 || pictures_has_height(images)) {
+ callback(images);
+ }
+
+ images.each(function () {
+ single_image_loaded(self.S(this), function () {
+ unloaded -= 1;
+ if (unloaded === 0) {
+ callback(images);
+ }
+ });
+ });
+ },
+
+ // Description:
+ // Returns a random, alphanumeric string
+ //
+ // Arguments:
+ // Length (Integer): Length of string to be generated. Defaults to random
+ // integer.
+ //
+ // Returns:
+ // Rand (String): Pseudo-random, alphanumeric string.
+ random_str : function () {
+ if (!this.fidx) {
+ this.fidx = 0;
+ }
+ this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
+
+ return this.prefix + (this.fidx++).toString(36);
+ },
+
+ // Description:
+ // Helper for window.matchMedia
+ //
+ // Arguments:
+ // mq (String): Media query
+ //
+ // Returns:
+ // (Boolean): Whether the media query passes or not
+ match : function (mq) {
+ return window.matchMedia(mq).matches;
+ },
+
+ // Description:
+ // Helpers for checking Foundation default media queries with JS
+ //
+ // Returns:
+ // (Boolean): Whether the media query passes or not
+
+ is_small_up : function () {
+ return this.match(Foundation.media_queries.small);
+ },
+
+ is_medium_up : function () {
+ return this.match(Foundation.media_queries.medium);
+ },
+
+ is_large_up : function () {
+ return this.match(Foundation.media_queries.large);
+ },
+
+ is_xlarge_up : function () {
+ return this.match(Foundation.media_queries.xlarge);
+ },
+
+ is_xxlarge_up : function () {
+ return this.match(Foundation.media_queries.xxlarge);
+ },
+
+ is_small_only : function () {
+ return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_medium_only : function () {
+ return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_large_only : function () {
+ return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_xlarge_only : function () {
+ return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
+ },
+
+ is_xxlarge_only : function () {
+ return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
+ }
+ }
+ };
+
+ $.fn.foundation = function () {
+ var args = Array.prototype.slice.call(arguments, 0);
+
+ return this.each(function () {
+ Foundation.init.apply(Foundation, [this].concat(args));
+ return this;
+ });
+ };
+
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs['magellan-expedition'] = {
+ name : 'magellan-expedition',
+
+ version : '5.5.3',
+
+ settings : {
+ active_class : 'active',
+ threshold : 0, // pixels from the top of the expedition for it to become fixes
+ destination_threshold : 20, // pixels from the top of destination for it to be considered active
+ throttle_delay : 30, // calculation throttling to increase framerate
+ fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll
+ offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side.
+ duration : 700, // animation duration time
+ easing : 'swing' // animation easing
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+ this.bindings(method, options);
+ },
+
+ events : function () {
+ var self = this,
+ S = self.S,
+ settings = self.settings;
+
+ // initialize expedition offset
+ self.set_expedition_position();
+
+ S(self.scope)
+ .off('.magellan')
+ .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href*=#]', function (e) {
+ var sameHost = ((this.hostname === location.hostname) || !this.hostname),
+ samePath = self.filterPathname(location.pathname) === self.filterPathname(this.pathname),
+ testHash = this.hash.replace(/(:|\.|\/)/g, '\\$1'),
+ anchor = this;
+
+ if (sameHost && samePath && testHash) {
+ e.preventDefault();
+ var expedition = $(this).closest('[' + self.attr_name() + ']'),
+ settings = expedition.data('magellan-expedition-init'),
+ hash = this.hash.split('#').join(''),
+ target = $('a[name="' + hash + '"]');
+
+ if (target.length === 0) {
+ target = $('#' + hash);
+
+ }
+
+ // Account for expedition height if fixed position
+ var scroll_top = target.offset().top - settings.destination_threshold + 1;
+ if (settings.offset_by_height) {
+ scroll_top = scroll_top - expedition.outerHeight();
+ }
+ $('html, body').stop().animate({
+ 'scrollTop' : scroll_top
+ }, settings.duration, settings.easing, function () {
+ if (history.pushState) {
+ history.pushState(null, null, anchor.pathname + anchor.search + '#' + hash);
+ } else {
+ location.hash = anchor.pathname + anchor.search + '#' + hash;
+ }
+ });
+ }
+ })
+ .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
+ },
+
+ check_for_arrivals : function () {
+ var self = this;
+ self.update_arrivals();
+ self.update_expedition_positions();
+ },
+
+ set_expedition_position : function () {
+ var self = this;
+ $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) {
+ var expedition = $(this),
+ settings = expedition.data('magellan-expedition-init'),
+ styles = expedition.attr('styles'), // save styles
+ top_offset, fixed_top;
+
+ expedition.attr('style', '');
+ top_offset = expedition.offset().top + settings.threshold;
+
+ //set fixed-top by attribute
+ fixed_top = parseInt(expedition.data('magellan-fixed-top'));
+ if (!isNaN(fixed_top)) {
+ self.settings.fixed_top = fixed_top;
+ }
+
+ expedition.data(self.data_attr('magellan-top-offset'), top_offset);
+ expedition.attr('style', styles);
+ });
+ },
+
+ update_expedition_positions : function () {
+ var self = this,
+ window_top_offset = $(window).scrollTop();
+
+ $('[' + this.attr_name() + '=fixed]', self.scope).each(function () {
+ var expedition = $(this),
+ settings = expedition.data('magellan-expedition-init'),
+ styles = expedition.attr('style'), // save styles
+ top_offset = expedition.data('magellan-top-offset');
+
+ //scroll to the top distance
+ if (window_top_offset + self.settings.fixed_top >= top_offset) {
+ // Placeholder allows height calculations to be consistent even when
+ // appearing to switch between fixed/non-fixed placement
+ var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
+ if (placeholder.length === 0) {
+ placeholder = expedition.clone();
+ placeholder.removeAttr(self.attr_name());
+ placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), '');
+ expedition.before(placeholder);
+ }
+ expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed');
+ } else {
+ expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
+ expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed');
+ }
+ });
+ },
+
+ update_arrivals : function () {
+ var self = this,
+ window_top_offset = $(window).scrollTop();
+
+ $('[' + this.attr_name() + ']', self.scope).each(function () {
+ var expedition = $(this),
+ settings = expedition.data(self.attr_name(true) + '-init'),
+ offsets = self.offsets(expedition, window_top_offset),
+ arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
+ active_item = false;
+ offsets.each(function (idx, item) {
+ if (item.viewport_offset >= item.top_offset) {
+ var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
+ arrivals.not(item.arrival).removeClass(settings.active_class);
+ item.arrival.addClass(settings.active_class);
+ active_item = true;
+ return true;
+ }
+ });
+
+ if (!active_item) {
+ arrivals.removeClass(settings.active_class);
+ }
+ });
+ },
+
+ offsets : function (expedition, window_offset) {
+ var self = this,
+ settings = expedition.data(self.attr_name(true) + '-init'),
+ viewport_offset = window_offset;
+
+ return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) {
+ var name = $(this).data(self.data_attr('magellan-arrival')),
+ dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
+ if (dest.length > 0) {
+ var top_offset = dest.offset().top - settings.destination_threshold;
+ if (settings.offset_by_height) {
+ top_offset = top_offset - expedition.outerHeight();
+ }
+ top_offset = Math.floor(top_offset);
+ return {
+ destination : dest,
+ arrival : $(this),
+ top_offset : top_offset,
+ viewport_offset : viewport_offset
+ }
+ }
+ }).sort(function (a, b) {
+ if (a.top_offset < b.top_offset) {
+ return -1;
+ }
+ if (a.top_offset > b.top_offset) {
+ return 1;
+ }
+ return 0;
+ });
+ },
+
+ data_attr : function (str) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + str;
+ }
+
+ return str;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.magellan');
+ this.S(window).off('.magellan');
+ },
+
+ filterPathname : function (pathname) {
+ pathname = pathname || '';
+ return pathname
+ .replace(/^\//,'')
+ .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'')
+ .replace(/\/$/,'');
+ },
+
+ reflow : function () {
+ var self = this;
+ // remove placeholder expeditions used for height calculation purposes
+ $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
+ }
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.offcanvas = {
+ name : 'offcanvas',
+
+ version : '5.5.3',
+
+ settings : {
+ open_method : 'move',
+ close_on_click : false
+ },
+
+ init : function (scope, method, options) {
+ this.bindings(method, options);
+ },
+
+ events : function () {
+ var self = this,
+ S = self.S,
+ move_class = '',
+ right_postfix = '',
+ left_postfix = '',
+ top_postfix = '',
+ bottom_postfix = '';
+
+ if (this.settings.open_method === 'move') {
+ move_class = 'move-';
+ right_postfix = 'right';
+ left_postfix = 'left';
+ top_postfix = 'top';
+ bottom_postfix = 'bottom';
+ } else if (this.settings.open_method === 'overlap_single') {
+ move_class = 'offcanvas-overlap-';
+ right_postfix = 'right';
+ left_postfix = 'left';
+ top_postfix = 'top';
+ bottom_postfix = 'bottom';
+ } else if (this.settings.open_method === 'overlap') {
+ move_class = 'offcanvas-overlap';
+ }
+
+ S(this.scope).off('.offcanvas')
+ .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + right_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.left-submenu').removeClass(move_class + right_postfix);
+ }
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + right_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + right_postfix);
+ }
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of left canvas
+ .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + left_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.right-submenu').removeClass(move_class + left_postfix);
+ }
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + left_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + left_postfix);
+ }
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of right canvas
+ .on('click.fndtn.offcanvas', '.top-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + bottom_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.top-submenu').removeClass(move_class + bottom_postfix);
+ }
+ $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.top-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + bottom_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + bottom_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.top-submenu').toggleClass(move_class + bottom_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + bottom_postfix);
+ }
+ $('.top-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of top canvas
+ .on('click.fndtn.offcanvas', '.bottom-off-canvas-toggle', function (e) {
+ self.click_toggle_class(e, move_class + top_postfix);
+ if (self.settings.open_method !== 'overlap') {
+ S('.bottom-submenu').removeClass(move_class + top_postfix);
+ }
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.bottom-off-canvas-menu a', function (e) {
+ var settings = self.get_settings(e);
+ var parent = S(this).parent();
+
+ if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
+ self.hide.call(self, move_class + top_postfix, self.get_wrapper(e));
+ parent.parent().removeClass(move_class + top_postfix);
+ } else if (S(this).parent().hasClass('has-submenu')) {
+ e.preventDefault();
+ S(this).siblings('.bottom-submenu').toggleClass(move_class + top_postfix);
+ } else if (parent.hasClass('back')) {
+ e.preventDefault();
+ parent.parent().removeClass(move_class + top_postfix);
+ }
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ //end of bottom
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + left_postfix);
+ S('.right-submenu').removeClass(move_class + left_postfix);
+ if (right_postfix) {
+ self.click_remove_class(e, move_class + right_postfix);
+ S('.left-submenu').removeClass(move_class + left_postfix);
+ }
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + left_postfix);
+ $('.left-off-canvas-toggle').attr('aria-expanded', 'false');
+ if (right_postfix) {
+ self.click_remove_class(e, move_class + right_postfix);
+ $('.right-off-canvas-toggle').attr('aria-expanded', 'false');
+ }
+ })
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + top_postfix);
+ S('.bottom-submenu').removeClass(move_class + top_postfix);
+ if (bottom_postfix) {
+ self.click_remove_class(e, move_class + bottom_postfix);
+ S('.top-submenu').removeClass(move_class + top_postfix);
+ }
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'true');
+ })
+ .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
+ self.click_remove_class(e, move_class + top_postfix);
+ $('.top-off-canvas-toggle').attr('aria-expanded', 'false');
+ if (bottom_postfix) {
+ self.click_remove_class(e, move_class + bottom_postfix);
+ $('.bottom-off-canvas-toggle').attr('aria-expanded', 'false');
+ }
+ });
+ },
+
+ toggle : function (class_name, $off_canvas) {
+ $off_canvas = $off_canvas || this.get_wrapper();
+ if ($off_canvas.is('.' + class_name)) {
+ this.hide(class_name, $off_canvas);
+ } else {
+ this.show(class_name, $off_canvas);
+ }
+ },
+
+ show : function (class_name, $off_canvas) {
+ $off_canvas = $off_canvas || this.get_wrapper();
+ $off_canvas.trigger('open.fndtn.offcanvas');
+ $off_canvas.addClass(class_name);
+ },
+
+ hide : function (class_name, $off_canvas) {
+ $off_canvas = $off_canvas || this.get_wrapper();
+ $off_canvas.trigger('close.fndtn.offcanvas');
+ $off_canvas.removeClass(class_name);
+ },
+
+ click_toggle_class : function (e, class_name) {
+ e.preventDefault();
+ var $off_canvas = this.get_wrapper(e);
+ this.toggle(class_name, $off_canvas);
+ },
+
+ click_remove_class : function (e, class_name) {
+ e.preventDefault();
+ var $off_canvas = this.get_wrapper(e);
+ this.hide(class_name, $off_canvas);
+ },
+
+ get_settings : function (e) {
+ var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');
+ return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
+ },
+
+ get_wrapper : function (e) {
+ var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
+
+ if ($off_canvas.length === 0) {
+ $off_canvas = this.S('.off-canvas-wrap');
+ }
+ return $off_canvas;
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ var noop = function () {};
+
+ var Orbit = function (el, settings) {
+ // Don't reinitialize plugin
+ if (el.hasClass(settings.slides_container_class)) {
+ return this;
+ }
+
+ var self = this,
+ container,
+ slides_container = el,
+ number_container,
+ bullets_container,
+ timer_container,
+ idx = 0,
+ animate,
+ timer,
+ locked = false,
+ adjust_height_after = false;
+
+ self.slides = function () {
+ return slides_container.children(settings.slide_selector);
+ };
+
+ self.slides().first().addClass(settings.active_slide_class);
+
+ self.update_slide_number = function (index) {
+ if (settings.slide_number) {
+ number_container.find('span:first').text(parseInt(index) + 1);
+ number_container.find('span:last').text(self.slides().length);
+ }
+ if (settings.bullets) {
+ bullets_container.children().removeClass(settings.bullets_active_class);
+ $(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
+ }
+ };
+
+ self.update_active_link = function (index) {
+ var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]');
+ link.siblings().removeClass(settings.bullets_active_class);
+ link.addClass(settings.bullets_active_class);
+ };
+
+ self.build_markup = function () {
+ slides_container.wrap('<div class="' + settings.container_class + '"></div>');
+ container = slides_container.parent();
+ slides_container.addClass(settings.slides_container_class);
+
+ if (settings.stack_on_small) {
+ container.addClass(settings.stack_on_small_class);
+ }
+
+ if (settings.navigation_arrows) {
+ container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
+ container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
+ }
+
+ if (settings.timer) {
+ timer_container = $('<div>').addClass(settings.timer_container_class);
+ timer_container.append('<span>');
+ timer_container.append($('<div>').addClass(settings.timer_progress_class));
+ timer_container.addClass(settings.timer_paused_class);
+ container.append(timer_container);
+ }
+
+ if (settings.slide_number) {
+ number_container = $('<div>').addClass(settings.slide_number_class);
+ number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
+ container.append(number_container);
+ }
+
+ if (settings.bullets) {
+ bullets_container = $('<ol>').addClass(settings.bullets_container_class);
+ container.append(bullets_container);
+ bullets_container.wrap('<div class="orbit-bullets-container"></div>');
+ self.slides().each(function (idx, el) {
+ var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);;
+ bullets_container.append(bullet);
+ });
+ }
+
+ };
+
+ self._goto = function (next_idx, start_timer) {
+ // if (locked) {return false;}
+ if (next_idx === idx) {return false;}
+ if (typeof timer === 'object') {timer.restart();}
+ var slides = self.slides();
+
+ var dir = 'next';
+ locked = true;
+ if (next_idx < idx) {dir = 'prev';}
+ if (next_idx >= slides.length) {
+ if (!settings.circular) {
+ return false;
+ }
+ next_idx = 0;
+ } else if (next_idx < 0) {
+ if (!settings.circular) {
+ return false;
+ }
+ next_idx = slides.length - 1;
+ }
+
+ var current = $(slides.get(idx));
+ var next = $(slides.get(next_idx));
+
+ current.css('zIndex', 2);
+ current.removeClass(settings.active_slide_class);
+ next.css('zIndex', 4).addClass(settings.active_slide_class);
+
+ slides_container.trigger('before-slide-change.fndtn.orbit');
+ settings.before_slide_change();
+ self.update_active_link(next_idx);
+
+ var callback = function () {
+ var unlock = function () {
+ idx = next_idx;
+ locked = false;
+ if (start_timer === true) {timer = self.create_timer(); timer.start();}
+ self.update_slide_number(idx);
+ slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]);
+ settings.after_slide_change(idx, slides.length);
+ };
+ if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) {
+ slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock);
+ } else {
+ unlock();
+ }
+ };
+
+ if (slides.length === 1) {callback(); return false;}
+
+ var start_animation = function () {
+ if (dir === 'next') {animate.next(current, next, callback);}
+ if (dir === 'prev') {animate.prev(current, next, callback);}
+ };
+
+ if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) {
+ slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation);
+ } else {
+ start_animation();
+ }
+ };
+
+ self.next = function (e) {
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ self._goto(idx + 1);
+ };
+
+ self.prev = function (e) {
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ self._goto(idx - 1);
+ };
+
+ self.link_custom = function (e) {
+ e.preventDefault();
+ var link = $(this).attr('data-orbit-link');
+ if ((typeof link === 'string') && (link = $.trim(link)) != '') {
+ var slide = container.find('[data-orbit-slide=' + link + ']');
+ if (slide.index() != -1) {self._goto(slide.index());}
+ }
+ };
+
+ self.link_bullet = function (e) {
+ var index = $(this).attr('data-orbit-slide');
+ if ((typeof index === 'string') && (index = $.trim(index)) != '') {
+ if (isNaN(parseInt(index))) {
+ var slide = container.find('[data-orbit-slide=' + index + ']');
+ if (slide.index() != -1) {self._goto(slide.index() + 1);}
+ } else {
+ self._goto(parseInt(index));
+ }
+ }
+
+ }
+
+ self.timer_callback = function () {
+ self._goto(idx + 1, true);
+ }
+
+ self.compute_dimensions = function () {
+ var current = $(self.slides().get(idx));
+ var h = current.outerHeight();
+ if (!settings.variable_height) {
+ self.slides().each(function(){
+ if ($(this).outerHeight() > h) { h = $(this).outerHeight(); }
+ });
+ }
+ slides_container.height(h);
+ };
+
+ self.create_timer = function () {
+ var t = new Timer(
+ container.find('.' + settings.timer_container_class),
+ settings,
+ self.timer_callback
+ );
+ return t;
+ };
+
+ self.stop_timer = function () {
+ if (typeof timer === 'object') {
+ timer.stop();
+ }
+ };
+
+ self.toggle_timer = function () {
+ var t = container.find('.' + settings.timer_container_class);
+ if (t.hasClass(settings.timer_paused_class)) {
+ if (typeof timer === 'undefined') {timer = self.create_timer();}
+ timer.start();
+ } else {
+ if (typeof timer === 'object') {timer.stop();}
+ }
+ };
+
+ self.init = function () {
+ self.build_markup();
+ if (settings.timer) {
+ timer = self.create_timer();
+ Foundation.utils.image_loaded(this.slides().children('img'), timer.start);
+ }
+ animate = new FadeAnimation(settings, slides_container);
+ if (settings.animation === 'slide') {
+ animate = new SlideAnimation(settings, slides_container);
+ }
+
+ container.on('click', '.' + settings.next_class, self.next);
+ container.on('click', '.' + settings.prev_class, self.prev);
+
+ if (settings.next_on_click) {
+ container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet);
+ }
+
+ container.on('click', self.toggle_timer);
+ if (settings.swipe) {
+ container.on('touchstart.fndtn.orbit', function (e) {
+ if (!e.touches) {e = e.originalEvent;}
+ var data = {
+ start_page_x : e.touches[0].pageX,
+ start_page_y : e.touches[0].pageY,
+ start_time : (new Date()).getTime(),
+ delta_x : 0,
+ is_scrolling : undefined
+ };
+ container.data('swipe-transition', data);
+ e.stopPropagation();
+ })
+ .on('touchmove.fndtn.orbit', function (e) {
+ if (!e.touches) {
+ e = e.originalEvent;
+ }
+ // Ignore pinch/zoom events
+ if (e.touches.length > 1 || e.scale && e.scale !== 1) {
+ return;
+ }
+
+ var data = container.data('swipe-transition');
+ if (typeof data === 'undefined') {data = {};}
+
+ data.delta_x = e.touches[0].pageX - data.start_page_x;
+
+ if ( typeof data.is_scrolling === 'undefined') {
+ data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
+ }
+
+ if (!data.is_scrolling && !data.active) {
+ e.preventDefault();
+ var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1);
+ data.active = true;
+ self._goto(direction);
+ }
+ })
+ .on('touchend.fndtn.orbit', function (e) {
+ container.data('swipe-transition', {});
+ e.stopPropagation();
+ })
+ }
+ container.on('mouseenter.fndtn.orbit', function (e) {
+ if (settings.timer && settings.pause_on_hover) {
+ self.stop_timer();
+ }
+ })
+ .on('mouseleave.fndtn.orbit', function (e) {
+ if (settings.timer && settings.resume_on_mouseout) {
+ timer.start();
+ }
+ });
+
+ $(document).on('click', '[data-orbit-link]', self.link_custom);
+ $(window).on('load resize', self.compute_dimensions);
+ Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);
+ Foundation.utils.image_loaded(this.slides().children('img'), function () {
+ container.prev('.' + settings.preloader_class).css('display', 'none');
+ self.update_slide_number(0);
+ self.update_active_link(0);
+ slides_container.trigger('ready.fndtn.orbit');
+ });
+ };
+
+ self.init();
+ };
+
+ var Timer = function (el, settings, callback) {
+ var self = this,
+ duration = settings.timer_speed,
+ progress = el.find('.' + settings.timer_progress_class),
+ start,
+ timeout,
+ left = -1;
+
+ this.update_progress = function (w) {
+ var new_progress = progress.clone();
+ new_progress.attr('style', '');
+ new_progress.css('width', w + '%');
+ progress.replaceWith(new_progress);
+ progress = new_progress;
+ };
+
+ this.restart = function () {
+ clearTimeout(timeout);
+ el.addClass(settings.timer_paused_class);
+ left = -1;
+ self.update_progress(0);
+ };
+
+ this.start = function () {
+ if (!el.hasClass(settings.timer_paused_class)) {return true;}
+ left = (left === -1) ? duration : left;
+ el.removeClass(settings.timer_paused_class);
+ start = new Date().getTime();
+ progress.animate({'width' : '100%'}, left, 'linear');
+ timeout = setTimeout(function () {
+ self.restart();
+ callback();
+ }, left);
+ el.trigger('timer-started.fndtn.orbit')
+ };
+
+ this.stop = function () {
+ if (el.hasClass(settings.timer_paused_class)) {return true;}
+ clearTimeout(timeout);
+ el.addClass(settings.timer_paused_class);
+ var end = new Date().getTime();
+ left = left - (end - start);
+ var w = 100 - ((left / duration) * 100);
+ self.update_progress(w);
+ el.trigger('timer-stopped.fndtn.orbit');
+ };
+ };
+
+ var SlideAnimation = function (settings, container) {
+ var duration = settings.animation_speed;
+ var is_rtl = ($('html[dir=rtl]').length === 1);
+ var margin = is_rtl ? 'marginRight' : 'marginLeft';
+ var animMargin = {};
+ animMargin[margin] = '0%';
+
+ this.next = function (current, next, callback) {
+ current.animate({marginLeft : '-100%'}, duration);
+ next.animate(animMargin, duration, function () {
+ current.css(margin, '100%');
+ callback();
+ });
+ };
+
+ this.prev = function (current, prev, callback) {
+ current.animate({marginLeft : '100%'}, duration);
+ prev.css(margin, '-100%');
+ prev.animate(animMargin, duration, function () {
+ current.css(margin, '100%');
+ callback();
+ });
+ };
+ };
+
+ var FadeAnimation = function (settings, container) {
+ var duration = settings.animation_speed;
+ var is_rtl = ($('html[dir=rtl]').length === 1);
+ var margin = is_rtl ? 'marginRight' : 'marginLeft';
+
+ this.next = function (current, next, callback) {
+ next.css({'margin' : '0%', 'opacity' : '0.01'});
+ next.animate({'opacity' :'1'}, duration, 'linear', function () {
+ current.css('margin', '100%');
+ callback();
+ });
+ };
+
+ this.prev = function (current, prev, callback) {
+ prev.css({'margin' : '0%', 'opacity' : '0.01'});
+ prev.animate({'opacity' : '1'}, duration, 'linear', function () {
+ current.css('margin', '100%');
+ callback();
+ });
+ };
+ };
+
+ Foundation.libs = Foundation.libs || {};
+
+ Foundation.libs.orbit = {
+ name : 'orbit',
+
+ version : '5.5.3',
+
+ settings : {
+ animation : 'slide',
+ timer_speed : 10000,
+ pause_on_hover : true,
+ resume_on_mouseout : false,
+ next_on_click : true,
+ animation_speed : 500,
+ stack_on_small : false,
+ navigation_arrows : true,
+ slide_number : true,
+ slide_number_text : 'of',
+ container_class : 'orbit-container',
+ stack_on_small_class : 'orbit-stack-on-small',
+ next_class : 'orbit-next',
+ prev_class : 'orbit-prev',
+ timer_container_class : 'orbit-timer',
+ timer_paused_class : 'paused',
+ timer_progress_class : 'orbit-progress',
+ slides_container_class : 'orbit-slides-container',
+ preloader_class : 'preloader',
+ slide_selector : '*',
+ bullets_container_class : 'orbit-bullets',
+ bullets_active_class : 'active',
+ slide_number_class : 'orbit-slide-number',
+ caption_class : 'orbit-caption',
+ active_slide_class : 'active',
+ orbit_transition_class : 'orbit-transitioning',
+ bullets : true,
+ circular : true,
+ timer : true,
+ variable_height : false,
+ swipe : true,
+ before_slide_change : noop,
+ after_slide_change : noop
+ },
+
+ init : function (scope, method, options) {
+ var self = this;
+ this.bindings(method, options);
+ },
+
+ events : function (instance) {
+ var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
+ this.S(instance).data(this.name + '-instance', orbit_instance);
+ },
+
+ reflow : function () {
+ var self = this;
+
+ if (self.S(self.scope).is('[data-orbit]')) {
+ var $el = self.S(self.scope);
+ var instance = $el.data(self.name + '-instance');
+ instance.compute_dimensions();
+ } else {
+ self.S('[data-orbit]', self.scope).each(function (idx, el) {
+ var $el = self.S(el);
+ var opts = self.data_options($el);
+ var instance = $el.data(self.name + '-instance');
+ instance.compute_dimensions();
+ });
+ }
+ }
+ };
+
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ var openModals = [];
+
+ Foundation.libs.reveal = {
+ name : 'reveal',
+
+ version : '5.5.3',
+
+ locked : false,
+
+ settings : {
+ animation : 'fadeAndPop',
+ animation_speed : 250,
+ close_on_background_click : true,
+ close_on_esc : true,
+ dismiss_modal_class : 'close-reveal-modal',
+ multiple_opened : false,
+ bg_class : 'reveal-modal-bg',
+ root_element : 'body',
+ open : function(){},
+ opened : function(){},
+ close : function(){},
+ closed : function(){},
+ on_ajax_error: $.noop,
+ bg : $('.reveal-modal-bg'),
+ css : {
+ open : {
+ 'opacity' : 0,
+ 'visibility' : 'visible',
+ 'display' : 'block'
+ },
+ close : {
+ 'opacity' : 1,
+ 'visibility' : 'hidden',
+ 'display' : 'none'
+ }
+ }
+ },
+
+ init : function (scope, method, options) {
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .off('.reveal')
+ .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {
+ e.preventDefault();
+
+ if (!self.locked) {
+ var element = S(this),
+ ajax = element.data(self.data_attr('reveal-ajax')),
+ replaceContentSel = element.data(self.data_attr('reveal-replace-content'));
+
+ self.locked = true;
+
+ if (typeof ajax === 'undefined') {
+ self.open.call(self, element);
+ } else {
+ var url = ajax === true ? element.attr('href') : ajax;
+ self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel });
+ }
+ }
+ });
+
+ S(document)
+ .on('click.fndtn.reveal', this.close_targets(), function (e) {
+ e.preventDefault();
+ if (!self.locked) {
+ var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,
+ bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
+
+ if (bg_clicked) {
+ if (settings.close_on_background_click) {
+ e.stopPropagation();
+ } else {
+ return;
+ }
+ }
+
+ self.locked = true;
+ self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']'));
+ }
+ });
+
+ if (S('[' + self.attr_name() + ']', this.scope).length > 0) {
+ S(this.scope)
+ // .off('.reveal')
+ .on('open.fndtn.reveal', this.settings.open)
+ .on('opened.fndtn.reveal', this.settings.opened)
+ .on('opened.fndtn.reveal', this.open_video)
+ .on('close.fndtn.reveal', this.settings.close)
+ .on('closed.fndtn.reveal', this.settings.closed)
+ .on('closed.fndtn.reveal', this.close_video);
+ } else {
+ S(this.scope)
+ // .off('.reveal')
+ .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
+ .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
+ .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
+ .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
+ .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
+ .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
+ }
+
+ return true;
+ },
+
+ // PATCH #3: turning on key up capture only when a reveal window is open
+ key_up_on : function (scope) {
+ var self = this;
+
+ // PATCH #1: fixing multiple keyup event trigger from single key press
+ self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
+ var open_modal = self.S('[' + self.attr_name() + '].open'),
+ settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;
+ // PATCH #2: making sure that the close event can be called only while unlocked,
+ // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
+ if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
+ self.close.call(self, open_modal);
+ }
+ });
+
+ return true;
+ },
+
+ // PATCH #3: turning on key up capture only when a reveal window is open
+ key_up_off : function (scope) {
+ this.S('body').off('keyup.fndtn.reveal');
+ return true;
+ },
+
+ open : function (target, ajax_settings) {
+ var self = this,
+ modal;
+
+ if (target) {
+ if (typeof target.selector !== 'undefined') {
+ // Find the named node; only use the first one found, since the rest of the code assumes there's only one node
+ modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();
+ } else {
+ modal = self.S(this.scope);
+
+ ajax_settings = target;
+ }
+ } else {
+ modal = self.S(this.scope);
+ }
+
+ var settings = modal.data(self.attr_name(true) + '-init');
+ settings = settings || this.settings;
+
+
+ if (modal.hasClass('open') && target !== undefined && target.attr('data-reveal-id') == modal.attr('id')) {
+ return self.close(modal);
+ }
+
+ if (!modal.hasClass('open')) {
+ var open_modal = self.S('[' + self.attr_name() + '].open');
+
+ if (typeof modal.data('css-top') === 'undefined') {
+ modal.data('css-top', parseInt(modal.css('top'), 10))
+ .data('offset', this.cache_offset(modal));
+ }
+
+ modal.attr('tabindex','0').attr('aria-hidden','false');
+
+ this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open
+
+ // Prevent namespace event from triggering twice
+ modal.on('open.fndtn.reveal', function(e) {
+ if (e.namespace !== 'fndtn.reveal') return;
+ });
+
+ modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
+
+ if (open_modal.length < 1) {
+ this.toggle_bg(modal, true);
+ }
+
+ if (typeof ajax_settings === 'string') {
+ ajax_settings = {
+ url : ajax_settings
+ };
+ }
+
+ var openModal = function() {
+ if(open_modal.length > 0) {
+ if(settings.multiple_opened) {
+ self.to_back(open_modal);
+ } else {
+ self.hide(open_modal, settings.css.close);
+ }
+ }
+
+ // bl: add the open_modal that isn't already in the background to the openModals array
+ if(settings.multiple_opened) {
+ openModals.push(modal);
+ }
+
+ self.show(modal, settings.css.open);
+ };
+
+ if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
+ openModal();
+ } else {
+ var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
+ $.extend(ajax_settings, {
+ success : function (data, textStatus, jqXHR) {
+ if ( $.isFunction(old_success) ) {
+ var result = old_success(data, textStatus, jqXHR);
+ if (typeof result == 'string') {
+ data = result;
+ }
+ }
+
+ if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') {
+ modal.find(options.replaceContentSel).html(data);
+ } else {
+ modal.html(data);
+ }
+
+ self.S(modal).foundation('section', 'reflow');
+ self.S(modal).children().foundation();
+
+ openModal();
+ }
+ });
+
+ // check for if user initalized with error callback
+ if (settings.on_ajax_error !== $.noop) {
+ $.extend(ajax_settings, {
+ error : settings.on_ajax_error
+ });
+ }
+
+ $.ajax(ajax_settings);
+ }
+ }
+ self.S(window).trigger('resize');
+ },
+
+ close : function (modal) {
+ var modal = modal && modal.length ? modal : this.S(this.scope),
+ open_modals = this.S('[' + this.attr_name() + '].open'),
+ settings = modal.data(this.attr_name(true) + '-init') || this.settings,
+ self = this;
+
+ if (open_modals.length > 0) {
+
+ modal.removeAttr('tabindex','0').attr('aria-hidden','true');
+
+ this.locked = true;
+ this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open
+
+ modal.trigger('close.fndtn.reveal');
+
+ if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
+ self.toggle_bg(modal, false);
+ self.to_front(modal);
+ }
+
+ if (settings.multiple_opened) {
+ var isCurrent = modal.is(':not(.toback)');
+ self.hide(modal, settings.css.close, settings);
+ if(isCurrent) {
+ // remove the last modal since it is now closed
+ openModals.pop();
+ } else {
+ // if this isn't the current modal, then find it in the array and remove it
+ openModals = $.grep(openModals, function(elt) {
+ var isThis = elt[0]===modal[0];
+ if(isThis) {
+ // since it's not currently in the front, put it in the front now that it is hidden
+ // so that if it's re-opened, it won't be .toback
+ self.to_front(modal);
+ }
+ return !isThis;
+ });
+ }
+ // finally, show the next modal in the stack, if there is one
+ if(openModals.length>0) {
+ self.to_front(openModals[openModals.length - 1]);
+ }
+ } else {
+ self.hide(open_modals, settings.css.close, settings);
+ }
+ }
+ },
+
+ close_targets : function () {
+ var base = '.' + this.settings.dismiss_modal_class;
+
+ if (this.settings.close_on_background_click) {
+ return base + ', .' + this.settings.bg_class;
+ }
+
+ return base;
+ },
+
+ toggle_bg : function (modal, state) {
+ if (this.S('.' + this.settings.bg_class).length === 0) {
+ this.settings.bg = $('<div />', {'class': this.settings.bg_class})
+ .appendTo('body').hide();
+ }
+
+ var visible = this.settings.bg.filter(':visible').length > 0;
+ if ( state != visible ) {
+ if ( state == undefined ? visible : !state ) {
+ this.hide(this.settings.bg);
+ } else {
+ this.show(this.settings.bg);
+ }
+ }
+ },
+
+ show : function (el, css) {
+ // is modal
+ if (css) {
+ var settings = el.data(this.attr_name(true) + '-init') || this.settings,
+ root_element = settings.root_element,
+ context = this;
+
+ if (el.parent(root_element).length === 0) {
+ var placeholder = el.wrap('<div style="display: none;" />').parent();
+
+ el.on('closed.fndtn.reveal.wrapped', function () {
+ el.detach().appendTo(placeholder);
+ el.unwrap().unbind('closed.fndtn.reveal.wrapped');
+ });
+
+ el.detach().appendTo(root_element);
+ }
+
+ var animData = getAnimationData(settings.animation);
+ if (!animData.animate) {
+ this.locked = false;
+ }
+ if (animData.pop) {
+ css.top = $(window).scrollTop() - el.data('offset') + 'px';
+ var end_css = {
+ top: $(window).scrollTop() + el.data('css-top') + 'px',
+ opacity: 1
+ };
+
+ return setTimeout(function () {
+ return el
+ .css(css)
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.trigger('opened.fndtn.reveal');
+ })
+ .addClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ css.top = $(window).scrollTop() + el.data('css-top') + 'px';
+
+ if (animData.fade) {
+ var end_css = {opacity: 1};
+
+ return setTimeout(function () {
+ return el
+ .css(css)
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.trigger('opened.fndtn.reveal');
+ })
+ .addClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal');
+ }
+
+ var settings = this.settings;
+
+ // should we animate the background?
+ if (getAnimationData(settings.animation).fade) {
+ return el.fadeIn(settings.animation_speed / 2);
+ }
+
+ this.locked = false;
+
+ return el.show();
+ },
+
+ to_back : function(el) {
+ el.addClass('toback');
+ },
+
+ to_front : function(el) {
+ el.removeClass('toback');
+ },
+
+ hide : function (el, css) {
+ // is modal
+ if (css) {
+ var settings = el.data(this.attr_name(true) + '-init'),
+ context = this;
+ settings = settings || this.settings;
+
+ var animData = getAnimationData(settings.animation);
+ if (!animData.animate) {
+ this.locked = false;
+ }
+ if (animData.pop) {
+ var end_css = {
+ top: - $(window).scrollTop() - el.data('offset') + 'px',
+ opacity: 0
+ };
+
+ return setTimeout(function () {
+ return el
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.css(css).trigger('closed.fndtn.reveal');
+ })
+ .removeClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ if (animData.fade) {
+ var end_css = {opacity : 0};
+
+ return setTimeout(function () {
+ return el
+ .animate(end_css, settings.animation_speed, 'linear', function () {
+ context.locked = false;
+ el.css(css).trigger('closed.fndtn.reveal');
+ })
+ .removeClass('open');
+ }, settings.animation_speed / 2);
+ }
+
+ return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal');
+ }
+
+ var settings = this.settings;
+
+ // should we animate the background?
+ if (getAnimationData(settings.animation).fade) {
+ return el.fadeOut(settings.animation_speed / 2);
+ }
+
+ return el.hide();
+ },
+
+ close_video : function (e) {
+ var video = $('.flex-video', e.target),
+ iframe = $('iframe', video);
+
+ if (iframe.length > 0) {
+ iframe.attr('data-src', iframe[0].src);
+ iframe.attr('src', iframe.attr('src'));
+ video.hide();
+ }
+ },
+
+ open_video : function (e) {
+ var video = $('.flex-video', e.target),
+ iframe = video.find('iframe');
+
+ if (iframe.length > 0) {
+ var data_src = iframe.attr('data-src');
+ if (typeof data_src === 'string') {
+ iframe[0].src = iframe.attr('data-src');
+ } else {
+ var src = iframe[0].src;
+ iframe[0].src = undefined;
+ iframe[0].src = src;
+ }
+ video.show();
+ }
+ },
+
+ data_attr : function (str) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + str;
+ }
+
+ return str;
+ },
+
+ cache_offset : function (modal) {
+ var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY;
+
+ modal.hide();
+
+ return offset;
+ },
+
+ off : function () {
+ $(this.scope).off('.fndtn.reveal');
+ },
+
+ reflow : function () {}
+ };
+
+ /*
+ * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}
+ * getAnimationData('fade') // {animate: true, pop: false, fade: true}
+ * getAnimationData('pop') // {animate: true, pop: true, fade: false}
+ * getAnimationData('foo') // {animate: false, pop: false, fade: false}
+ * getAnimationData(null) // {animate: false, pop: false, fade: false}
+ */
+ function getAnimationData(str) {
+ var fade = /fade/i.test(str);
+ var pop = /pop/i.test(str);
+ return {
+ animate : fade || pop,
+ pop : pop,
+ fade : fade
+ };
+ }
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.slider = {
+ name : 'slider',
+
+ version : '5.5.3',
+
+ settings : {
+ start : 0,
+ end : 100,
+ step : 1,
+ precision : 2,
+ initial : null,
+ display_selector : '',
+ vertical : false,
+ trigger_input_change : false,
+ on_change : function () {}
+ },
+
+ cache : {},
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ events : function () {
+ var self = this;
+ $(this.scope)
+ .off('.slider')
+ .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
+ '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {
+ if (!self.cache.active) {
+ e.preventDefault();
+ self.set_active_slider($(e.target));
+ }
+ })
+ .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {
+ if (!!self.cache.active) {
+ e.preventDefault();
+ if ($.data(self.cache.active[0], 'settings').vertical) {
+ var scroll_offset = 0;
+ if (!e.pageY) {
+ scroll_offset = window.scrollY;
+ }
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+ } else {
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+ }
+ }
+ })
+ .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {
+ if(!self.cache.active) {
+ // if the user has just clicked into the slider without starting to drag the handle
+ var slider = $(e.target).attr('role') === 'slider' ? $(e.target) : $(e.target).closest('.range-slider').find("[role='slider']");
+
+ if (slider.length && (!slider.parent().hasClass('disabled') && !slider.parent().attr('disabled'))) {
+ self.set_active_slider(slider);
+ if ($.data(self.cache.active[0], 'settings').vertical) {
+ var scroll_offset = 0;
+ if (!e.pageY) {
+ scroll_offset = window.scrollY;
+ }
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
+ } else {
+ self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
+ }
+ }
+ }
+ self.remove_active_slider();
+ })
+ .on('change.fndtn.slider', function (e) {
+ self.settings.on_change();
+ });
+
+ self.S(window)
+ .on('resize.fndtn.slider', self.throttle(function (e) {
+ self.reflow();
+ }, 300));
+
+ // update slider value as users change input value
+ this.S('[' + this.attr_name() + ']').each(function () {
+ var slider = $(this),
+ handle = slider.children('.range-slider-handle')[0],
+ settings = self.initialize_settings(handle);
+
+ if (settings.display_selector != '') {
+ $(settings.display_selector).each(function(){
+ if ($(this).attr('value')) {
+ $(this).off('change').on('change', function () {
+ slider.foundation("slider", "set_value", $(this).val());
+ });
+ }
+ });
+ }
+ });
+ },
+
+ get_cursor_position : function (e, xy) {
+ var pageXY = 'page' + xy.toUpperCase(),
+ clientXY = 'client' + xy.toUpperCase(),
+ position;
+
+ if (typeof e[pageXY] !== 'undefined') {
+ position = e[pageXY];
+ } else if (typeof e.originalEvent[clientXY] !== 'undefined') {
+ position = e.originalEvent[clientXY];
+ } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {
+ position = e.originalEvent.touches[0][clientXY];
+ } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {
+ position = e.currentPoint[xy];
+ }
+
+ return position;
+ },
+
+ set_active_slider : function ($handle) {
+ this.cache.active = $handle;
+ },
+
+ remove_active_slider : function () {
+ this.cache.active = null;
+ },
+
+ calculate_position : function ($handle, cursor_x) {
+ var self = this,
+ settings = $.data($handle[0], 'settings'),
+ handle_l = $.data($handle[0], 'handle_l'),
+ handle_o = $.data($handle[0], 'handle_o'),
+ bar_l = $.data($handle[0], 'bar_l'),
+ bar_o = $.data($handle[0], 'bar_o');
+
+ requestAnimationFrame(function () {
+ var pct;
+
+ if (Foundation.rtl && !settings.vertical) {
+ pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);
+ } else {
+ pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);
+ }
+
+ pct = settings.vertical ? 1 - pct : pct;
+
+ var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);
+
+ self.set_ui($handle, norm);
+ });
+ },
+
+ set_ui : function ($handle, value) {
+ var settings = $.data($handle[0], 'settings'),
+ handle_l = $.data($handle[0], 'handle_l'),
+ bar_l = $.data($handle[0], 'bar_l'),
+ norm_pct = this.normalized_percentage(value, settings.start, settings.end),
+ handle_offset = norm_pct * (bar_l - handle_l) - 1,
+ progress_bar_length = norm_pct * 100,
+ $handle_parent = $handle.parent(),
+ $hidden_inputs = $handle.parent().children('input[type=hidden]');
+
+ if (Foundation.rtl && !settings.vertical) {
+ handle_offset = -handle_offset;
+ }
+
+ handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;
+ this.set_translate($handle, handle_offset, settings.vertical);
+
+ if (settings.vertical) {
+ $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');
+ } else {
+ $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
+ }
+
+ $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider');
+
+ $hidden_inputs.val(value);
+ if (settings.trigger_input_change) {
+ $hidden_inputs.trigger('change.fndtn.slider');
+ }
+
+ if (!$handle[0].hasAttribute('aria-valuemin')) {
+ $handle.attr({
+ 'aria-valuemin' : settings.start,
+ 'aria-valuemax' : settings.end
+ });
+ }
+ $handle.attr('aria-valuenow', value);
+
+ if (settings.display_selector != '') {
+ $(settings.display_selector).each(function () {
+ if (this.hasAttribute('value')) {
+ $(this).val(value);
+ } else {
+ $(this).text(value);
+ }
+ });
+ }
+
+ },
+
+ normalized_percentage : function (val, start, end) {
+ return Math.min(1, (val - start) / (end - start));
+ },
+
+ normalized_value : function (val, start, end, step, precision) {
+ var range = end - start,
+ point = val * range,
+ mod = (point - (point % step)) / step,
+ rem = point % step,
+ round = ( rem >= step * 0.5 ? step : 0);
+ return ((mod * step + round) + start).toFixed(precision);
+ },
+
+ set_translate : function (ele, offset, vertical) {
+ if (vertical) {
+ $(ele)
+ .css('-webkit-transform', 'translateY(' + offset + 'px)')
+ .css('-moz-transform', 'translateY(' + offset + 'px)')
+ .css('-ms-transform', 'translateY(' + offset + 'px)')
+ .css('-o-transform', 'translateY(' + offset + 'px)')
+ .css('transform', 'translateY(' + offset + 'px)');
+ } else {
+ $(ele)
+ .css('-webkit-transform', 'translateX(' + offset + 'px)')
+ .css('-moz-transform', 'translateX(' + offset + 'px)')
+ .css('-ms-transform', 'translateX(' + offset + 'px)')
+ .css('-o-transform', 'translateX(' + offset + 'px)')
+ .css('transform', 'translateX(' + offset + 'px)');
+ }
+ },
+
+ limit_to : function (val, min, max) {
+ return Math.min(Math.max(val, min), max);
+ },
+
+ initialize_settings : function (handle) {
+ var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),
+ decimal_places_match_result;
+
+ if (settings.precision === null) {
+ decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/);
+ settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;
+ }
+
+ if (settings.vertical) {
+ $.data(handle, 'bar_o', $(handle).parent().offset().top);
+ $.data(handle, 'bar_l', $(handle).parent().outerHeight());
+ $.data(handle, 'handle_o', $(handle).offset().top);
+ $.data(handle, 'handle_l', $(handle).outerHeight());
+ } else {
+ $.data(handle, 'bar_o', $(handle).parent().offset().left);
+ $.data(handle, 'bar_l', $(handle).parent().outerWidth());
+ $.data(handle, 'handle_o', $(handle).offset().left);
+ $.data(handle, 'handle_l', $(handle).outerWidth());
+ }
+
+ $.data(handle, 'bar', $(handle).parent());
+ return $.data(handle, 'settings', settings);
+ },
+
+ set_initial_position : function ($ele) {
+ var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
+ initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),
+ $handle = $ele.children('.range-slider-handle');
+ this.set_ui($handle, initial);
+ },
+
+ set_value : function (value) {
+ var self = this;
+ $('[' + self.attr_name() + ']', this.scope).each(function () {
+ $(this).attr(self.attr_name(), value);
+ });
+ if (!!$(this.scope).attr(self.attr_name())) {
+ $(this.scope).attr(self.attr_name(), value);
+ }
+ self.reflow();
+ },
+
+ reflow : function () {
+ var self = this;
+ self.S('[' + this.attr_name() + ']').each(function () {
+ var handle = $(this).children('.range-slider-handle')[0],
+ val = $(this).attr(self.attr_name());
+ self.initialize_settings(handle);
+
+ if (val) {
+ self.set_ui($(handle), parseFloat(val));
+ } else {
+ self.set_initial_position($(this));
+ }
+ });
+ }
+ };
+
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.tab = {
+ name : 'tab',
+
+ version : '5.5.3',
+
+ settings : {
+ active_class : 'active',
+ callback : function () {},
+ deep_linking : false,
+ scroll_to_content : true,
+ is_hover : false
+ },
+
+ default_tab_hashes : [],
+
+ init : function (scope, method, options) {
+ var self = this,
+ S = this.S;
+
+ // Store the default active tabs which will be referenced when the
+ // location hash is absent, as in the case of navigating the tabs and
+ // returning to the first viewing via the browser Back button.
+ S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
+ self.default_tab_hashes.push(this.hash);
+ });
+
+ this.bindings(method, options);
+ this.handle_location_hash_change();
+ },
+
+ events : function () {
+ var self = this,
+ S = this.S;
+
+ var usual_tab_behavior = function (e, target) {
+ var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+ if (!settings.is_hover || Modernizr.touch) {
+ // if user did not pressed tab key, prevent default action
+ var keyCode = e.keyCode || e.which;
+ if (keyCode !== 9) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ self.toggle_active_tab(S(target).parent());
+
+ }
+ };
+
+ S(this.scope)
+ .off('.tab')
+ // Key event: focus/tab key
+ .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+ var keyCode = e.keyCode || e.which;
+ // if user pressed tab key
+ if (keyCode === 13 || keyCode === 32) { // enter or space
+ var el = this;
+ usual_tab_behavior(e, el);
+ }
+ })
+ // Click event: tab title
+ .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) {
+ var el = this;
+ usual_tab_behavior(e, el);
+ })
+ // Hover event: tab title
+ .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
+ var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
+ if (settings.is_hover) {
+ self.toggle_active_tab(S(this).parent());
+ }
+ });
+
+ // Location hash change event
+ S(window).on('hashchange.fndtn.tab', function (e) {
+ e.preventDefault();
+ self.handle_location_hash_change();
+ });
+ },
+
+ handle_location_hash_change : function () {
+
+ var self = this,
+ S = this.S;
+
+ S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var settings = S(this).data(self.attr_name(true) + '-init');
+ if (settings.deep_linking) {
+ // Match the location hash to a label
+ var hash;
+ if (settings.scroll_to_content) {
+ hash = self.scope.location.hash;
+ } else {
+ // prefix the hash to prevent anchor scrolling
+ hash = self.scope.location.hash.replace('fndtn-', '');
+ }
+ if (hash != '') {
+ // Check whether the location hash references a tab content div or
+ // another element on the page (inside or outside the tab content div)
+ var hash_element = S(hash);
+ if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {
+ // Tab content div
+ self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());
+ } else {
+ // Not the tab content div. If inside the tab content, find the
+ // containing tab and toggle it as active.
+ var hash_tab_container_id = hash_element.closest('.content').attr('id');
+ if (hash_tab_container_id != undefined) {
+ self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);
+ }
+ }
+ } else {
+ // Reference the default tab hashes which were initialized in the init function
+ for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {
+ self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());
+ }
+ }
+ }
+ });
+ },
+
+ toggle_active_tab : function (tab, location_hash) {
+ var self = this,
+ S = self.S,
+ tabs = tab.closest('[' + this.attr_name() + ']'),
+ tab_link = tab.find('a'),
+ anchor = tab.children('a').first(),
+ target_hash = '#' + anchor.attr('href').split('#')[1],
+ target = S(target_hash),
+ siblings = tab.siblings(),
+ settings = tabs.data(this.attr_name(true) + '-init'),
+ interpret_keyup_action = function (e) {
+ // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
+
+ // define current, previous and next (possible) tabs
+
+ var $original = $(this);
+ var $prev = $(this).parents('li').prev().children('[role="tab"]');
+ var $next = $(this).parents('li').next().children('[role="tab"]');
+ var $target;
+
+ // find the direction (prev or next)
+
+ switch (e.keyCode) {
+ case 37:
+ $target = $prev;
+ break;
+ case 39:
+ $target = $next;
+ break;
+ default:
+ $target = false
+ break;
+ }
+
+ if ($target.length) {
+ $original.attr({
+ 'tabindex' : '-1',
+ 'aria-selected' : null
+ });
+ $target.attr({
+ 'tabindex' : '0',
+ 'aria-selected' : true
+ }).focus();
+ }
+
+ // Hide panels
+
+ $('[role="tabpanel"]')
+ .attr('aria-hidden', 'true');
+
+ // Show panel which corresponds to target
+
+ $('#' + $(document.activeElement).attr('href').substring(1))
+ .attr('aria-hidden', null);
+
+ },
+ go_to_hash = function(hash) {
+ // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it
+ // the user would get continually redirected to the default hash.
+ var default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : 'fndtn-' + self.default_tab_hashes[0].replace('#', '');
+
+ if (hash !== default_hash || window.location.hash) {
+ window.location.hash = hash;
+ }
+ };
+
+ // allow usage of data-tab-content attribute instead of href
+ if (anchor.data('tab-content')) {
+ target_hash = '#' + anchor.data('tab-content').split('#')[1];
+ target = S(target_hash);
+ }
+
+ if (settings.deep_linking) {
+
+ if (settings.scroll_to_content) {
+
+ // retain current hash to scroll to content
+ go_to_hash(location_hash || target_hash);
+
+ if (location_hash == undefined || location_hash == target_hash) {
+ tab.parent()[0].scrollIntoView();
+ } else {
+ S(target_hash)[0].scrollIntoView();
+ }
+ } else {
+ // prefix the hashes so that the browser doesn't scroll down
+ if (location_hash != undefined) {
+ go_to_hash('fndtn-' + location_hash.replace('#', ''));
+ } else {
+ go_to_hash('fndtn-' + target_hash.replace('#', ''));
+ }
+ }
+ }
+
+ // WARNING: The activation and deactivation of the tab content must
+ // occur after the deep linking in order to properly refresh the browser
+ // window (notably in Chrome).
+ // Clean up multiple attr instances to done once
+ tab.addClass(settings.active_class).triggerHandler('opened');
+ tab_link.attr({'aria-selected' : 'true', tabindex : 0});
+ siblings.removeClass(settings.active_class)
+ siblings.find('a').attr({'aria-selected' : 'false'/*, tabindex : -1*/});
+ target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true'/*, tabindex : -1*/});
+ target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
+ settings.callback(tab);
+ target.triggerHandler('toggled', [target]);
+ tabs.triggerHandler('toggled', [tab]);
+
+ tab_link.off('keydown').on('keydown', interpret_keyup_action );
+ },
+
+ data_attr : function (str) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + str;
+ }
+
+ return str;
+ },
+
+ off : function () {},
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.tooltip = {
+ name : 'tooltip',
+
+ version : '5.5.3',
+
+ settings : {
+ additional_inheritable_classes : [],
+ tooltip_class : '.tooltip',
+ append_to : 'body',
+ touch_close_text : 'Tap To Close',
+ disable_for_touch : false,
+ hover_delay : 200,
+ fade_in_duration : 150,
+ fade_out_duration : 150,
+ show_on : 'all',
+ tip_template : function (selector, content) {
+ return '<span data-selector="' + selector + '" id="' + selector + '" class="'
+ + Foundation.libs.tooltip.settings.tooltip_class.substring(1)
+ + '" role="tooltip">' + content + '<span class="nub"></span></span>';
+ }
+ },
+
+ cache : {},
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'random_str');
+ this.bindings(method, options);
+ },
+
+ should_show : function (target, tip) {
+ var settings = $.extend({}, this.settings, this.data_options(target));
+
+ if (settings.show_on === 'all') {
+ return true;
+ } else if (this.small() && settings.show_on === 'small') {
+ return true;
+ } else if (this.medium() && settings.show_on === 'medium') {
+ return true;
+ } else if (this.large() && settings.show_on === 'large') {
+ return true;
+ }
+ return false;
+ },
+
+ medium : function () {
+ return matchMedia(Foundation.media_queries['medium']).matches;
+ },
+
+ large : function () {
+ return matchMedia(Foundation.media_queries['large']).matches;
+ },
+
+ events : function (instance) {
+ var self = this,
+ S = self.S;
+
+ self.create(this.S(instance));
+
+ function _startShow(elt, $this, immediate) {
+ if (elt.timer) {
+ return;
+ }
+
+ if (immediate) {
+ elt.timer = null;
+ self.showTip($this);
+ } else {
+ elt.timer = setTimeout(function () {
+ elt.timer = null;
+ self.showTip($this);
+ }.bind(elt), self.settings.hover_delay);
+ }
+ }
+
+ function _startHide(elt, $this) {
+ if (elt.timer) {
+ clearTimeout(elt.timer);
+ elt.timer = null;
+ }
+
+ self.hide($this);
+ }
+
+ $(this.scope)
+ .off('.tooltip')
+ .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
+ '[' + this.attr_name() + ']', function (e) {
+ var $this = S(this),
+ settings = $.extend({}, self.settings, self.data_options($this)),
+ is_touch = false;
+
+ if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
+ return false;
+ }
+
+ if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+ return false;
+ }
+
+ if ($this.hasClass('open')) {
+ if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+ e.preventDefault();
+ }
+ self.hide($this);
+ } else {
+ if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+ return;
+ } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
+ e.preventDefault();
+ S(settings.tooltip_class + '.open').hide();
+ is_touch = true;
+ // close other open tooltips on touch
+ if ($('.open[' + self.attr_name() + ']').length > 0) {
+ var prevOpen = S($('.open[' + self.attr_name() + ']')[0]);
+ self.hide(prevOpen);
+ }
+ }
+
+ if (/enter|over/i.test(e.type)) {
+ _startShow(this, $this);
+
+ } else if (e.type === 'mouseout' || e.type === 'mouseleave') {
+ _startHide(this, $this);
+ } else {
+ _startShow(this, $this, true);
+ }
+ }
+ })
+ .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
+ if (/mouse/i.test(e.type) && self.ie_touch(e)) {
+ return false;
+ }
+
+ if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
+ return;
+ } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
+ self.convert_to_touch($(this));
+ } else {
+ _startHide(this, $(this));
+ }
+ })
+ .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
+ _startHide(this, S(this));
+ });
+ },
+
+ ie_touch : function (e) {
+ // How do I distinguish between IE11 and Windows Phone 8?????
+ return false;
+ },
+
+ showTip : function ($target) {
+ var $tip = this.getTip($target);
+ if (this.should_show($target, $tip)) {
+ return this.show($target);
+ }
+ return;
+ },
+
+ getTip : function ($target) {
+ var selector = this.selector($target),
+ settings = $.extend({}, this.settings, this.data_options($target)),
+ tip = null;
+
+ if (selector) {
+ tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
+ }
+
+ return (typeof tip === 'object') ? tip : false;
+ },
+
+ selector : function ($target) {
+ var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
+
+ if (typeof dataSelector != 'string') {
+ dataSelector = this.random_str(6);
+ $target
+ .attr('data-selector', dataSelector)
+ .attr('aria-describedby', dataSelector);
+ }
+
+ return dataSelector;
+ },
+
+ create : function ($target) {
+ var self = this,
+ settings = $.extend({}, this.settings, this.data_options($target)),
+ tip_template = this.settings.tip_template;
+
+ if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
+ tip_template = window[settings.tip_template];
+ }
+
+ var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
+ classes = this.inheritable_classes($target);
+
+ $tip.addClass(classes).appendTo(settings.append_to);
+
+ if (Modernizr.touch) {
+ $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+ $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
+ self.hide($target);
+ });
+ }
+
+ $target.removeAttr('title').attr('title', '');
+ },
+
+ reposition : function (target, tip, classes) {
+ var width, nub, nubHeight, nubWidth, objPos;
+
+ tip.css('visibility', 'hidden').show();
+
+ width = target.data('width');
+ nub = tip.children('.nub');
+ nubHeight = nub.outerHeight();
+ nubWidth = nub.outerWidth();
+
+ if (this.small()) {
+ tip.css({'width' : '100%'});
+ } else {
+ tip.css({'width' : (width) ? width : 'auto'});
+ }
+
+ objPos = function (obj, top, right, bottom, left, width) {
+ return obj.css({
+ 'top' : (top) ? top : 'auto',
+ 'bottom' : (bottom) ? bottom : 'auto',
+ 'left' : (left) ? left : 'auto',
+ 'right' : (right) ? right : 'auto'
+ }).end();
+ };
+
+ var o_top = target.offset().top;
+ var o_left = target.offset().left;
+ var outerHeight = target.outerHeight();
+
+ objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+
+ if (this.small()) {
+ objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', 12.5, $(this.scope).width());
+ tip.addClass('tip-override');
+ objPos(nub, -nubHeight, 'auto', 'auto', o_left);
+ } else {
+
+ if (Foundation.rtl) {
+ nub.addClass('rtl');
+ o_left = o_left + target.outerWidth() - tip.outerWidth();
+ }
+
+ objPos(tip, (o_top + outerHeight + 10), 'auto', 'auto', o_left);
+ // reset nub from small styles, if they've been applied
+ if (nub.attr('style')) {
+ nub.removeAttr('style');
+ }
+
+ tip.removeClass('tip-override');
+
+ var tip_outerHeight = tip.outerHeight();
+
+ if (classes && classes.indexOf('tip-top') > -1) {
+ if (Foundation.rtl) {
+ nub.addClass('rtl');
+ }
+ objPos(tip, (o_top - tip_outerHeight), 'auto', 'auto', o_left)
+ .removeClass('tip-override');
+ } else if (classes && classes.indexOf('tip-left') > -1) {
+ objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left - tip.outerWidth() - nubHeight))
+ .removeClass('tip-override');
+ nub.removeClass('rtl');
+ } else if (classes && classes.indexOf('tip-right') > -1) {
+ objPos(tip, (o_top + (outerHeight / 2) - (tip_outerHeight / 2)), 'auto', 'auto', (o_left + target.outerWidth() + nubHeight))
+ .removeClass('tip-override');
+ nub.removeClass('rtl');
+ }
+ }
+
+ tip.css('visibility', 'visible').hide();
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ inheritable_classes : function ($target) {
+ var settings = $.extend({}, this.settings, this.data_options($target)),
+ inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
+ classes = $target.attr('class'),
+ filtered = classes ? $.map(classes.split(' '), function (el, i) {
+ if ($.inArray(el, inheritables) !== -1) {
+ return el;
+ }
+ }).join(' ') : '';
+
+ return $.trim(filtered);
+ },
+
+ convert_to_touch : function ($target) {
+ var self = this,
+ $tip = self.getTip($target),
+ settings = $.extend({}, self.settings, self.data_options($target));
+
+ if ($tip.find('.tap-to-close').length === 0) {
+ $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
+ $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
+ self.hide($target);
+ });
+ }
+
+ $target.data('tooltip-open-event-type', 'touch');
+ },
+
+ show : function ($target) {
+ var $tip = this.getTip($target);
+ if ($target.data('tooltip-open-event-type') == 'touch') {
+ this.convert_to_touch($target);
+ }
+
+ this.reposition($target, $tip, $target.attr('class'));
+ $target.addClass('open');
+ $tip.fadeIn(this.settings.fade_in_duration);
+ },
+
+ hide : function ($target) {
+ var $tip = this.getTip($target);
+
+ $tip.fadeOut(this.settings.fade_out_duration, function () {
+ $tip.find('.tap-to-close').remove();
+ $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
+ $target.removeClass('open');
+ });
+ },
+
+ off : function () {
+ var self = this;
+ this.S(this.scope).off('.fndtn.tooltip');
+ this.S(this.settings.tooltip_class).each(function (i) {
+ $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
+ }).remove();
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.topbar = {
+ name : 'topbar',
+
+ version : '5.5.3',
+
+ settings : {
+ index : 0,
+ start_offset : 0,
+ sticky_class : 'sticky',
+ custom_back_text : true,
+ back_text : 'Back',
+ mobile_show_parent_link : true,
+ is_hover : true,
+ scrolltop : true, // jump to top when sticky nav menu toggle is clicked
+ sticky_on : 'all',
+ dropdown_autoclose: true
+ },
+
+ init : function (section, method, options) {
+ Foundation.inherit(this, 'add_custom_rule register_media throttle');
+ var self = this;
+
+ self.register_media('topbar', 'foundation-mq-topbar');
+
+ this.bindings(method, options);
+
+ self.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var topbar = $(this),
+ settings = topbar.data(self.attr_name(true) + '-init'),
+ section = self.S('section, .top-bar-section', this);
+ topbar.data('index', 0);
+ var topbarContainer = topbar.parent();
+ if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
+ self.settings.sticky_class = settings.sticky_class;
+ self.settings.sticky_topbar = topbar;
+ topbar.data('height', topbarContainer.outerHeight());
+ topbar.data('stickyoffset', topbarContainer.offset().top);
+ } else {
+ topbar.data('height', topbar.outerHeight());
+ }
+
+ if (!settings.assembled) {
+ self.assemble(topbar);
+ }
+
+ if (settings.is_hover) {
+ self.S('.has-dropdown', topbar).addClass('not-click');
+ } else {
+ self.S('.has-dropdown', topbar).removeClass('not-click');
+ }
+
+ // Pad body when sticky (scrolled) or fixed.
+ self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
+
+ if (topbarContainer.hasClass('fixed')) {
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ });
+
+ },
+
+ is_sticky : function (topbar, topbarContainer, settings) {
+ var sticky = topbarContainer.hasClass(settings.sticky_class);
+ var smallMatch = matchMedia(Foundation.media_queries.small).matches;
+ var medMatch = matchMedia(Foundation.media_queries.medium).matches;
+ var lrgMatch = matchMedia(Foundation.media_queries.large).matches;
+
+ if (sticky && settings.sticky_on === 'all') {
+ return true;
+ }
+ if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
+ if (smallMatch && !medMatch && !lrgMatch) { return true; }
+ }
+ if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
+ if (smallMatch && medMatch && !lrgMatch) { return true; }
+ }
+ if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
+ if (smallMatch && medMatch && lrgMatch) { return true; }
+ }
+
+ return false;
+ },
+
+ toggle : function (toggleEl) {
+ var self = this,
+ topbar;
+
+ if (toggleEl) {
+ topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
+ } else {
+ topbar = self.S('[' + this.attr_name() + ']');
+ }
+
+ var settings = topbar.data(this.attr_name(true) + '-init');
+
+ var section = self.S('section, .top-bar-section', topbar);
+
+ if (self.breakpoint()) {
+ if (!self.rtl) {
+ section.css({left : '0%'});
+ $('>.name', section).css({left : '100%'});
+ } else {
+ section.css({right : '0%'});
+ $('>.name', section).css({right : '100%'});
+ }
+
+ self.S('li.moved', section).removeClass('moved');
+ topbar.data('index', 0);
+
+ topbar
+ .toggleClass('expanded')
+ .css('height', '');
+ }
+
+ if (settings.scrolltop) {
+ if (!topbar.hasClass('expanded')) {
+ if (topbar.hasClass('fixed')) {
+ topbar.parent().addClass('fixed');
+ topbar.removeClass('fixed');
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ } else if (topbar.parent().hasClass('fixed')) {
+ if (settings.scrolltop) {
+ topbar.parent().removeClass('fixed');
+ topbar.addClass('fixed');
+ self.S('body').removeClass('f-topbar-fixed');
+
+ window.scrollTo(0, 0);
+ } else {
+ topbar.parent().removeClass('expanded');
+ }
+ }
+ } else {
+ if (self.is_sticky(topbar, topbar.parent(), settings)) {
+ topbar.parent().addClass('fixed');
+ }
+
+ if (topbar.parent().hasClass('fixed')) {
+ if (!topbar.hasClass('expanded')) {
+ topbar.removeClass('fixed');
+ topbar.parent().removeClass('expanded');
+ self.update_sticky_positioning();
+ } else {
+ topbar.addClass('fixed');
+ topbar.parent().addClass('expanded');
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ }
+ }
+ },
+
+ timer : null,
+
+ events : function (bar) {
+ var self = this,
+ S = this.S;
+
+ S(this.scope)
+ .off('.topbar')
+ .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
+ e.preventDefault();
+ self.toggle(this);
+ })
+ .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
+ var li = $(this).closest('li'),
+ topbar = li.closest('[' + self.attr_name() + ']'),
+ settings = topbar.data(self.attr_name(true) + '-init');
+
+ if (settings.dropdown_autoclose && settings.is_hover) {
+ var hoverLi = $(this).closest('.hover');
+ hoverLi.removeClass('hover');
+ }
+ if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
+ self.toggle();
+ }
+
+ })
+ .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
+ var li = S(this),
+ target = S(e.target),
+ topbar = li.closest('[' + self.attr_name() + ']'),
+ settings = topbar.data(self.attr_name(true) + '-init');
+
+ if (target.data('revealId')) {
+ self.toggle();
+ return;
+ }
+
+ if (self.breakpoint()) {
+ return;
+ }
+
+ if (settings.is_hover && !Modernizr.touch) {
+ return;
+ }
+
+ e.stopImmediatePropagation();
+
+ if (li.hasClass('hover')) {
+ li
+ .removeClass('hover')
+ .find('li')
+ .removeClass('hover');
+
+ li.parents('li.hover')
+ .removeClass('hover');
+ } else {
+ li.addClass('hover');
+
+ $(li).siblings().removeClass('hover');
+
+ if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
+ e.preventDefault();
+ }
+ }
+ })
+ .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
+ if (self.breakpoint()) {
+
+ e.preventDefault();
+
+ var $this = S(this),
+ topbar = $this.closest('[' + self.attr_name() + ']'),
+ section = topbar.find('section, .top-bar-section'),
+ dropdownHeight = $this.next('.dropdown').outerHeight(),
+ $selectedLi = $this.closest('li');
+
+ topbar.data('index', topbar.data('index') + 1);
+ $selectedLi.addClass('moved');
+
+ if (!self.rtl) {
+ section.css({left : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+ } else {
+ section.css({right : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+ }
+
+ topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
+ }
+ });
+
+ S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
+ self.resize.call(self);
+ }, 50)).trigger('resize.fndtn.topbar').load(function () {
+ // Ensure that the offset is calculated after all of the pages resources have loaded
+ S(this).trigger('resize.fndtn.topbar');
+ });
+
+ S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
+ var parent = S(e.target).closest('li').closest('li.hover');
+
+ if (parent.length > 0) {
+ return;
+ }
+
+ S('[' + self.attr_name() + '] li.hover').removeClass('hover');
+ });
+
+ // Go up a level on Click
+ S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
+ e.preventDefault();
+
+ var $this = S(this),
+ topbar = $this.closest('[' + self.attr_name() + ']'),
+ section = topbar.find('section, .top-bar-section'),
+ settings = topbar.data(self.attr_name(true) + '-init'),
+ $movedLi = $this.closest('li.moved'),
+ $previousLevelUl = $movedLi.parent();
+
+ topbar.data('index', topbar.data('index') - 1);
+
+ if (!self.rtl) {
+ section.css({left : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
+ } else {
+ section.css({right : -(100 * topbar.data('index')) + '%'});
+ section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
+ }
+
+ if (topbar.data('index') === 0) {
+ topbar.css('height', '');
+ } else {
+ topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
+ }
+
+ setTimeout(function () {
+ $movedLi.removeClass('moved');
+ }, 300);
+ });
+
+ // Show dropdown menus when their items are focused
+ S(this.scope).find('.dropdown a')
+ .focus(function () {
+ $(this).parents('.has-dropdown').addClass('hover');
+ })
+ .blur(function () {
+ $(this).parents('.has-dropdown').removeClass('hover');
+ });
+ },
+
+ resize : function () {
+ var self = this;
+ self.S('[' + this.attr_name() + ']').each(function () {
+ var topbar = self.S(this),
+ settings = topbar.data(self.attr_name(true) + '-init');
+
+ var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
+ var stickyOffset;
+
+ if (!self.breakpoint()) {
+ var doToggle = topbar.hasClass('expanded');
+ topbar
+ .css('height', '')
+ .removeClass('expanded')
+ .find('li')
+ .removeClass('hover');
+
+ if (doToggle) {
+ self.toggle(topbar);
+ }
+ }
+
+ if (self.is_sticky(topbar, stickyContainer, settings)) {
+ if (stickyContainer.hasClass('fixed')) {
+ // Remove the fixed to allow for correct calculation of the offset.
+ stickyContainer.removeClass('fixed');
+
+ stickyOffset = stickyContainer.offset().top;
+ if (self.S(document.body).hasClass('f-topbar-fixed')) {
+ stickyOffset -= topbar.data('height');
+ }
+
+ topbar.data('stickyoffset', stickyOffset);
+ stickyContainer.addClass('fixed');
+ } else {
+ stickyOffset = stickyContainer.offset().top;
+ topbar.data('stickyoffset', stickyOffset);
+ }
+ }
+
+ });
+ },
+
+ breakpoint : function () {
+ return !matchMedia(Foundation.media_queries['topbar']).matches;
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries['small']).matches;
+ },
+
+ medium : function () {
+ return matchMedia(Foundation.media_queries['medium']).matches;
+ },
+
+ large : function () {
+ return matchMedia(Foundation.media_queries['large']).matches;
+ },
+
+ assemble : function (topbar) {
+ var self = this,
+ settings = topbar.data(this.attr_name(true) + '-init'),
+ section = self.S('section, .top-bar-section', topbar);
+
+ // Pull element out of the DOM for manipulation
+ section.detach();
+
+ self.S('.has-dropdown>a', section).each(function () {
+ var $link = self.S(this),
+ $dropdown = $link.siblings('.dropdown'),
+ url = $link.attr('href'),
+ $titleLi;
+
+ if (!$dropdown.find('.title.back').length) {
+
+ if (settings.mobile_show_parent_link == true && url) {
+ $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
+ } else {
+ $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
+ }
+
+ // Copy link to subnav
+ if (settings.custom_back_text == true) {
+ $('h5>a', $titleLi).html(settings.back_text);
+ } else {
+ $('h5>a', $titleLi).html('« ' + $link.html());
+ }
+ $dropdown.prepend($titleLi);
+ }
+ });
+
+ // Put element back in the DOM
+ section.appendTo(topbar);
+
+ // check for sticky
+ this.sticky();
+
+ this.assembled(topbar);
+ },
+
+ assembled : function (topbar) {
+ topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
+ },
+
+ height : function (ul) {
+ var total = 0,
+ self = this;
+
+ $('> li', ul).each(function () {
+ total += self.S(this).outerHeight(true);
+ });
+
+ return total;
+ },
+
+ sticky : function () {
+ var self = this;
+
+ this.S(window).on('scroll', function () {
+ self.update_sticky_positioning();
+ });
+ },
+
+ update_sticky_positioning : function () {
+ var klass = '.' + this.settings.sticky_class,
+ $window = this.S(window),
+ self = this;
+
+ if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {
+ var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset;
+ if (!self.S(klass).hasClass('expanded')) {
+ if ($window.scrollTop() > (distance)) {
+ if (!self.S(klass).hasClass('fixed')) {
+ self.S(klass).addClass('fixed');
+ self.S('body').addClass('f-topbar-fixed');
+ }
+ } else if ($window.scrollTop() <= distance) {
+ if (self.S(klass).hasClass('fixed')) {
+ self.S(klass).removeClass('fixed');
+ self.S('body').removeClass('f-topbar-fixed');
+ }
+ }
+ }
+ }
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.topbar');
+ this.S(window).off('.fndtn.topbar');
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
--- /dev/null
+!function(){"use strict";/**
+ * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
+ *
+ * @codingstandard ftlabs-jsv2
+ * @copyright The Financial Times Limited [All Rights Reserved]
+ * @license MIT License (see LICENSE.txt)
+ */
+function a(b,d){function e(a,b){return function(){return a.apply(b,arguments)}}var f;if(d=d||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=d.touchBoundary||10,this.layer=b,this.tapDelay=d.tapDelay||200,this.tapTimeout=d.tapTimeout||700,!a.notNeeded(b)){for(var g=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],h=this,i=0,j=g.length;j>i;i++)h[g[i]]=e(h[g[i]],h);c&&(b.addEventListener("mouseover",this.onMouse,!0),b.addEventListener("mousedown",this.onMouse,!0),b.addEventListener("mouseup",this.onMouse,!0)),b.addEventListener("click",this.onClick,!0),b.addEventListener("touchstart",this.onTouchStart,!1),b.addEventListener("touchmove",this.onTouchMove,!1),b.addEventListener("touchend",this.onTouchEnd,!1),b.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(b.removeEventListener=function(a,c,d){var e=Node.prototype.removeEventListener;"click"===a?e.call(b,a,c.hijacked||c,d):e.call(b,a,c,d)},b.addEventListener=function(a,c,d){var e=Node.prototype.addEventListener;"click"===a?e.call(b,a,c.hijacked||(c.hijacked=function(a){a.propagationStopped||c(a)}),d):e.call(b,a,c,d)}),"function"==typeof b.onclick&&(f=b.onclick,b.addEventListener("click",function(a){f(a)},!1),b.onclick=null)}}var b=navigator.userAgent.indexOf("Windows Phone")>=0,c=navigator.userAgent.indexOf("Android")>0&&!b,d=/iP(ad|hone|od)/.test(navigator.userAgent)&&!b,e=d&&/OS 4_\d(_\d)?/.test(navigator.userAgent),f=d&&/OS [6-7]_\d/.test(navigator.userAgent),g=navigator.userAgent.indexOf("BB10")>0;a.prototype.needsClick=function(a){switch(a.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(a.disabled)return!0;break;case"input":if(d&&"file"===a.type||a.disabled)return!0;break;case"label":case"iframe":case"video":return!0}return/\bneedsclick\b/.test(a.className)},a.prototype.needsFocus=function(a){switch(a.nodeName.toLowerCase()){case"textarea":return!0;case"select":return!c;case"input":switch(a.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return!1}return!a.disabled&&!a.readOnly;default:return/\bneedsfocus\b/.test(a.className)}},a.prototype.sendClick=function(a,b){var c,d;document.activeElement&&document.activeElement!==a&&document.activeElement.blur(),d=b.changedTouches[0],c=document.createEvent("MouseEvents"),c.initMouseEvent(this.determineEventType(a),!0,!0,window,1,d.screenX,d.screenY,d.clientX,d.clientY,!1,!1,!1,!1,0,null),c.forwardedTouchEvent=!0,a.dispatchEvent(c)},a.prototype.determineEventType=function(a){return c&&"select"===a.tagName.toLowerCase()?"mousedown":"click"},a.prototype.focus=function(a){var b;d&&a.setSelectionRange&&0!==a.type.indexOf("date")&&"time"!==a.type&&"month"!==a.type?(b=a.value.length,a.setSelectionRange(b,b)):a.focus()},a.prototype.updateScrollParent=function(a){var b,c;if(b=a.fastClickScrollParent,!b||!b.contains(a)){c=a;do{if(c.scrollHeight>c.offsetHeight){b=c,a.fastClickScrollParent=c;break}c=c.parentElement}while(c)}b&&(b.fastClickLastScrollTop=b.scrollTop)},a.prototype.getTargetElementFromEventTarget=function(a){return a.nodeType===Node.TEXT_NODE?a.parentNode:a},a.prototype.onTouchStart=function(a){var b,c,f;if(a.targetTouches.length>1)return!0;if(b=this.getTargetElementFromEventTarget(a.target),c=a.targetTouches[0],d){if(f=window.getSelection(),f.rangeCount&&!f.isCollapsed)return!0;if(!e){if(c.identifier&&c.identifier===this.lastTouchIdentifier)return a.preventDefault(),!1;this.lastTouchIdentifier=c.identifier,this.updateScrollParent(b)}}return this.trackingClick=!0,this.trackingClickStart=a.timeStamp,this.targetElement=b,this.touchStartX=c.pageX,this.touchStartY=c.pageY,a.timeStamp-this.lastClickTime<this.tapDelay&&a.preventDefault(),!0},a.prototype.touchHasMoved=function(a){var b=a.changedTouches[0],c=this.touchBoundary;return Math.abs(b.pageX-this.touchStartX)>c||Math.abs(b.pageY-this.touchStartY)>c?!0:!1},a.prototype.onTouchMove=function(a){return this.trackingClick?((this.targetElement!==this.getTargetElementFromEventTarget(a.target)||this.touchHasMoved(a))&&(this.trackingClick=!1,this.targetElement=null),!0):!0},a.prototype.findControl=function(a){return void 0!==a.control?a.control:a.htmlFor?document.getElementById(a.htmlFor):a.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},a.prototype.onTouchEnd=function(a){var b,g,h,i,j,k=this.targetElement;if(!this.trackingClick)return!0;if(a.timeStamp-this.lastClickTime<this.tapDelay)return this.cancelNextClick=!0,!0;if(a.timeStamp-this.trackingClickStart>this.tapTimeout)return!0;if(this.cancelNextClick=!1,this.lastClickTime=a.timeStamp,g=this.trackingClickStart,this.trackingClick=!1,this.trackingClickStart=0,f&&(j=a.changedTouches[0],k=document.elementFromPoint(j.pageX-window.pageXOffset,j.pageY-window.pageYOffset)||k,k.fastClickScrollParent=this.targetElement.fastClickScrollParent),h=k.tagName.toLowerCase(),"label"===h){if(b=this.findControl(k)){if(this.focus(k),c)return!1;k=b}}else if(this.needsFocus(k))return a.timeStamp-g>100||d&&window.top!==window&&"input"===h?(this.targetElement=null,!1):(this.focus(k),this.sendClick(k,a),d&&"select"===h||(this.targetElement=null,a.preventDefault()),!1);return d&&!e&&(i=k.fastClickScrollParent,i&&i.fastClickLastScrollTop!==i.scrollTop)?!0:(this.needsClick(k)||(a.preventDefault(),this.sendClick(k,a)),!1)},a.prototype.onTouchCancel=function(){this.trackingClick=!1,this.targetElement=null},a.prototype.onMouse=function(a){return this.targetElement?a.forwardedTouchEvent?!0:a.cancelable&&(!this.needsClick(this.targetElement)||this.cancelNextClick)?(a.stopImmediatePropagation?a.stopImmediatePropagation():a.propagationStopped=!0,a.stopPropagation(),a.preventDefault(),!1):!0:!0},a.prototype.onClick=function(a){var b;return this.trackingClick?(this.targetElement=null,this.trackingClick=!1,!0):"submit"===a.target.type&&0===a.detail?!0:(b=this.onMouse(a),b||(this.targetElement=null),b)},a.prototype.destroy=function(){var a=this.layer;c&&(a.removeEventListener("mouseover",this.onMouse,!0),a.removeEventListener("mousedown",this.onMouse,!0),a.removeEventListener("mouseup",this.onMouse,!0)),a.removeEventListener("click",this.onClick,!0),a.removeEventListener("touchstart",this.onTouchStart,!1),a.removeEventListener("touchmove",this.onTouchMove,!1),a.removeEventListener("touchend",this.onTouchEnd,!1),a.removeEventListener("touchcancel",this.onTouchCancel,!1)},a.notNeeded=function(a){var b,d,e,f;if("undefined"==typeof window.ontouchstart)return!0;if(d=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1]){if(!c)return!0;if(b=document.querySelector("meta[name=viewport]")){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(d>31&&document.documentElement.scrollWidth<=window.outerWidth)return!0}}if(g&&(e=navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),e[1]>=10&&e[2]>=3&&(b=document.querySelector("meta[name=viewport]")))){if(-1!==b.content.indexOf("user-scalable=no"))return!0;if(document.documentElement.scrollWidth<=window.outerWidth)return!0}return"none"===a.style.msTouchAction||"manipulation"===a.style.touchAction?!0:(f=+(/Firefox\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1],f>=27&&(b=document.querySelector("meta[name=viewport]"),b&&(-1!==b.content.indexOf("user-scalable=no")||document.documentElement.scrollWidth<=window.outerWidth))?!0:"none"===a.style.touchAction||"manipulation"===a.style.touchAction?!0:!1)},a.attach=function(b,c){return new a(b,c)},"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return a}):"undefined"!=typeof module&&module.exports?(module.exports=a.attach,module.exports.FastClick=a):window.FastClick=a}();
\ No newline at end of file
--- /dev/null
+/*!
+ * jQuery Cookie Plugin v1.4.1
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2013 Klaus Hartl
+ * Released under the MIT license
+ */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
\ No newline at end of file
--- /dev/null
+/*!
+ * jQuery JavaScript Library v2.1.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-04-28T16:01Z
+ */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b="length"in a&&a.length,c=_.type(a);return"function"===c||_.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(_.isFunction(b))return _.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return _.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(ha.test(b))return _.filter(b,a,c);b=_.filter(b,a)}return _.grep(a,function(a){return U.call(b,a)>=0!==c})}function e(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function f(a){var b=oa[a]={};return _.each(a.match(na)||[],function(a,c){b[c]=!0}),b}function g(){Z.removeEventListener("DOMContentLoaded",g,!1),a.removeEventListener("load",g,!1),_.ready()}function h(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=_.expando+h.uid++}function i(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(ua,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:ta.test(c)?_.parseJSON(c):c}catch(e){}sa.set(a,b,c)}else c=void 0;return c}function j(){return!0}function k(){return!1}function l(){try{return Z.activeElement}catch(a){}}function m(a,b){return _.nodeName(a,"table")&&_.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function n(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function o(a){var b=Ka.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function p(a,b){for(var c=0,d=a.length;d>c;c++)ra.set(a[c],"globalEval",!b||ra.get(b[c],"globalEval"))}function q(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(ra.hasData(a)&&(f=ra.access(a),g=ra.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)_.event.add(b,e,j[e][c])}sa.hasData(a)&&(h=sa.access(a),i=_.extend({},h),sa.set(b,i))}}function r(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&_.nodeName(a,b)?_.merge([a],c):c}function s(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ya.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function t(b,c){var d,e=_(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:_.css(e[0],"display");return e.detach(),f}function u(a){var b=Z,c=Oa[a];return c||(c=t(a,b),"none"!==c&&c||(Na=(Na||_("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=Na[0].contentDocument,b.write(),b.close(),c=t(a,b),Na.detach()),Oa[a]=c),c}function v(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||_.contains(a.ownerDocument,a)||(g=_.style(a,b)),Qa.test(g)&&Pa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function w(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}function x(a,b){if(b in a)return b;for(var c=b[0].toUpperCase()+b.slice(1),d=b,e=Xa.length;e--;)if(b=Xa[e]+c,b in a)return b;return d}function y(a,b,c){var d=Ta.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function z(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=_.css(a,c+wa[f],!0,e)),d?("content"===c&&(g-=_.css(a,"padding"+wa[f],!0,e)),"margin"!==c&&(g-=_.css(a,"border"+wa[f]+"Width",!0,e))):(g+=_.css(a,"padding"+wa[f],!0,e),"padding"!==c&&(g+=_.css(a,"border"+wa[f]+"Width",!0,e)));return g}function A(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g="border-box"===_.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=v(a,b,f),(0>e||null==e)&&(e=a.style[b]),Qa.test(e))return e;d=g&&(Y.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+z(a,b,c||(g?"border":"content"),d,f)+"px"}function B(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=ra.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&xa(d)&&(f[g]=ra.access(d,"olddisplay",u(d.nodeName)))):(e=xa(d),"none"===c&&e||ra.set(d,"olddisplay",e?c:_.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function C(a,b,c,d,e){return new C.prototype.init(a,b,c,d,e)}function D(){return setTimeout(function(){Ya=void 0}),Ya=_.now()}function E(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=wa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function F(a,b,c){for(var d,e=(cb[b]||[]).concat(cb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function G(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},n=a.style,o=a.nodeType&&xa(a),p=ra.get(a,"fxshow");c.queue||(h=_._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,_.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],j=_.css(a,"display"),k="none"===j?ra.get(a,"olddisplay")||u(a.nodeName):j,"inline"===k&&"none"===_.css(a,"float")&&(n.display="inline-block")),c.overflow&&(n.overflow="hidden",l.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],$a.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(o?"hide":"show")){if("show"!==e||!p||void 0===p[d])continue;o=!0}m[d]=p&&p[d]||_.style(a,d)}else j=void 0;if(_.isEmptyObject(m))"inline"===("none"===j?u(a.nodeName):j)&&(n.display=j);else{p?"hidden"in p&&(o=p.hidden):p=ra.access(a,"fxshow",{}),f&&(p.hidden=!o),o?_(a).show():l.done(function(){_(a).hide()}),l.done(function(){var b;ra.remove(a,"fxshow");for(b in m)_.style(a,b,m[b])});for(d in m)g=F(o?p[d]:0,d,l),d in p||(p[d]=g.start,o&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function H(a,b){var c,d,e,f,g;for(c in a)if(d=_.camelCase(c),e=b[d],f=a[c],_.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=_.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function I(a,b,c){var d,e,f=0,g=bb.length,h=_.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||D(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:_.extend({},b),opts:_.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Ya||D(),duration:c.duration,tweens:[],createTween:function(b,c){var d=_.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(H(k,j.opts.specialEasing);g>f;f++)if(d=bb[f].call(j,a,k,j.opts))return d;return _.map(k,F,j),_.isFunction(j.opts.start)&&j.opts.start.call(a,j),_.fx.timer(_.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function J(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(na)||[];if(_.isFunction(c))for(;d=f[e++];)"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function K(a,b,c,d){function e(h){var i;return f[h]=!0,_.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===tb;return e(b.dataTypes[0])||!f["*"]&&e("*")}function L(a,b){var c,d,e=_.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&_.extend(!0,a,d),a}function M(a,b,c){for(var d,e,f,g,h=a.contents,i=a.dataTypes;"*"===i[0];)i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function N(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];for(f=k.shift();f;)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}function O(a,b,c,d){var e;if(_.isArray(b))_.each(b,function(b,e){c||yb.test(a)?d(a,e):O(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==_.type(b))d(a,b);else for(e in b)O(a+"["+e+"]",b[e],c,d)}function P(a){return _.isWindow(a)?a:9===a.nodeType&&a.defaultView}var Q=[],R=Q.slice,S=Q.concat,T=Q.push,U=Q.indexOf,V={},W=V.toString,X=V.hasOwnProperty,Y={},Z=a.document,$="2.1.4",_=function(a,b){return new _.fn.init(a,b)},aa=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ba=/^-ms-/,ca=/-([\da-z])/gi,da=function(a,b){return b.toUpperCase()};_.fn=_.prototype={jquery:$,constructor:_,selector:"",length:0,toArray:function(){return R.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:R.call(this)},pushStack:function(a){var b=_.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return _.each(this,a,b)},map:function(a){return this.pushStack(_.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(R.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:T,sort:Q.sort,splice:Q.splice},_.extend=_.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||_.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(_.isPlainObject(d)||(e=_.isArray(d)))?(e?(e=!1,f=c&&_.isArray(c)?c:[]):f=c&&_.isPlainObject(c)?c:{},g[b]=_.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},_.extend({expando:"jQuery"+($+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===_.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!_.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==_.type(a)||a.nodeType||_.isWindow(a)?!1:a.constructor&&!X.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?V[W.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=_.trim(a),a&&(1===a.indexOf("use strict")?(b=Z.createElement("script"),b.text=a,Z.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(ba,"ms-").replace(ca,da)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(aa,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?_.merge(d,"string"==typeof a?[a]:a):T.call(d,a)),d},inArray:function(a,b,c){return null==b?-1:U.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&i.push(e);else for(f in a)e=b(a[f],f,d),null!=e&&i.push(e);return S.apply([],i)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),_.isFunction(a)?(d=R.call(arguments,2),e=function(){return a.apply(b||this,d.concat(R.call(arguments)))},e.guid=a.guid=a.guid||_.guid++,e):void 0},now:Date.now,support:Y}),_.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){V["[object "+b+"]"]=b.toLowerCase()});var ea=/*!
+ * Sizzle CSS Selector Engine v2.2.0-pre
+ * http://sizzlejs.com/
+ *
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-12-16
+ */
+function(a){function b(a,b,c,d){var e,f,g,h,i,j,l,n,o,p;if((b?b.ownerDocument||b:O)!==G&&F(b),b=b||G,c=c||[],h=b.nodeType,"string"!=typeof a||!a||1!==h&&9!==h&&11!==h)return c;if(!d&&I){if(11!==h&&(e=sa.exec(a)))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&M(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return $.apply(c,b.getElementsByTagName(a)),c;if((g=e[3])&&v.getElementsByClassName)return $.apply(c,b.getElementsByClassName(g)),c}if(v.qsa&&(!J||!J.test(a))){if(n=l=N,o=b,p=1!==h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=z(a),(l=b.getAttribute("id"))?n=l.replace(ua,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=ta.test(a)&&k(b.parentNode)||b,p=j.join(",")}if(p)try{return $.apply(c,o.querySelectorAll(p)),c}catch(q){}finally{l||b.removeAttribute("id")}}}return B(a.replace(ia,"$1"),b,c,d)}function c(){function a(c,d){return b.push(c+" ")>w.cacheLength&&delete a[b.shift()],a[c+" "]=d}var b=[];return a}function d(a){return a[N]=!0,a}function e(a){var b=G.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function f(a,b){for(var c=a.split("|"),d=a.length;d--;)w.attrHandle[c[d]]=b}function g(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||V)-(~a.sourceIndex||V);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function h(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function i(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function j(a){return d(function(b){return b=+b,d(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function k(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}function l(){}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=Q++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[P,f];if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e){if(i=b[N]||(b[N]={}),(h=i[d])&&h[0]===P&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,c,d){for(var e=0,f=c.length;f>e;e++)b(a,c[e],d);return d}function q(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function r(a,b,c,e,f,g){return e&&!e[N]&&(e=r(e)),f&&!f[N]&&(f=r(f,g)),d(function(d,g,h,i){var j,k,l,m=[],n=[],o=g.length,r=d||p(b||"*",h.nodeType?[h]:h,[]),s=!a||!d&&b?r:q(r,m,a,h,i),t=c?f||(d?a:o||e)?[]:g:s;if(c&&c(s,t,h,i),e)for(j=q(t,n),e(j,[],h,i),k=j.length;k--;)(l=j[k])&&(t[n[k]]=!(s[n[k]]=l));if(d){if(f||a){if(f){for(j=[],k=t.length;k--;)(l=t[k])&&j.push(s[k]=l);f(null,t=[],j,i)}for(k=t.length;k--;)(l=t[k])&&(j=f?aa(d,l):m[k])>-1&&(d[j]=!(g[j]=l))}}else t=q(t===g?t.splice(o,t.length):t),f?f(null,g,t,i):$.apply(g,t)})}function s(a){for(var b,c,d,e=a.length,f=w.relative[a[0].type],g=f||w.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return aa(b,a)>-1},g,!0),k=[function(a,c,d){var e=!f&&(d||c!==C)||((b=c).nodeType?i(a,c,d):j(a,c,d));return b=null,e}];e>h;h++)if(c=w.relative[a[h].type])k=[n(o(k),c)];else{if(c=w.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!w.relative[a[d].type];d++);return r(h>1&&o(k),h>1&&m(a.slice(0,h-1).concat({value:" "===a[h-2].type?"*":""})).replace(ia,"$1"),c,d>h&&s(a.slice(h,d)),e>d&&s(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function t(a,c){var e=c.length>0,f=a.length>0,g=function(d,g,h,i,j){var k,l,m,n=0,o="0",p=d&&[],r=[],s=C,t=d||f&&w.find.TAG("*",j),u=P+=null==s?1:Math.random()||.1,v=t.length;for(j&&(C=g!==G&&g);o!==v&&null!=(k=t[o]);o++){if(f&&k){for(l=0;m=a[l++];)if(m(k,g,h)){i.push(k);break}j&&(P=u)}e&&((k=!m&&k)&&n--,d&&p.push(k))}if(n+=o,e&&o!==n){for(l=0;m=c[l++];)m(p,r,g,h);if(d){if(n>0)for(;o--;)p[o]||r[o]||(r[o]=Y.call(i));r=q(r)}$.apply(i,r),j&&!d&&r.length>0&&n+c.length>1&&b.uniqueSort(i)}return j&&(P=u,C=s),p};return e?d(g):g}var u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+1*new Date,O=a.document,P=0,Q=0,R=c(),S=c(),T=c(),U=function(a,b){return a===b&&(E=!0),0},V=1<<31,W={}.hasOwnProperty,X=[],Y=X.pop,Z=X.push,$=X.push,_=X.slice,aa=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},ba="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ca="[\\x20\\t\\r\\n\\f]",da="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ea=da.replace("w","w#"),fa="\\["+ca+"*("+da+")(?:"+ca+"*([*^$|!~]?=)"+ca+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ea+"))|)"+ca+"*\\]",ga=":("+da+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+fa+")*)|.*)\\)|)",ha=new RegExp(ca+"+","g"),ia=new RegExp("^"+ca+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ca+"+$","g"),ja=new RegExp("^"+ca+"*,"+ca+"*"),ka=new RegExp("^"+ca+"*([>+~]|"+ca+")"+ca+"*"),la=new RegExp("="+ca+"*([^\\]'\"]*?)"+ca+"*\\]","g"),ma=new RegExp(ga),na=new RegExp("^"+ea+"$"),oa={ID:new RegExp("^#("+da+")"),CLASS:new RegExp("^\\.("+da+")"),TAG:new RegExp("^("+da.replace("w","w*")+")"),ATTR:new RegExp("^"+fa),PSEUDO:new RegExp("^"+ga),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ca+"*(even|odd|(([+-]|)(\\d*)n|)"+ca+"*(?:([+-]|)"+ca+"*(\\d+)|))"+ca+"*\\)|)","i"),bool:new RegExp("^(?:"+ba+")$","i"),needsContext:new RegExp("^"+ca+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ca+"*((?:-\\d)?\\d*)"+ca+"*\\)|)(?=[^-]|$)","i")},pa=/^(?:input|select|textarea|button)$/i,qa=/^h\d$/i,ra=/^[^{]+\{\s*\[native \w/,sa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ta=/[+~]/,ua=/'|\\/g,va=new RegExp("\\\\([\\da-f]{1,6}"+ca+"?|("+ca+")|.)","ig"),wa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},xa=function(){F()};try{$.apply(X=_.call(O.childNodes),O.childNodes),X[O.childNodes.length].nodeType}catch(ya){$={apply:X.length?function(a,b){Z.apply(a,_.call(b))}:function(a,b){for(var c=a.length,d=0;a[c++]=b[d++];);a.length=c-1}}}v=b.support={},y=b.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},F=b.setDocument=function(a){var b,c,d=a?a.ownerDocument||a:O;return d!==G&&9===d.nodeType&&d.documentElement?(G=d,H=d.documentElement,c=d.defaultView,c&&c!==c.top&&(c.addEventListener?c.addEventListener("unload",xa,!1):c.attachEvent&&c.attachEvent("onunload",xa)),I=!y(d),v.attributes=e(function(a){return a.className="i",!a.getAttribute("className")}),v.getElementsByTagName=e(function(a){return a.appendChild(d.createComment("")),!a.getElementsByTagName("*").length}),v.getElementsByClassName=ra.test(d.getElementsByClassName),v.getById=e(function(a){return H.appendChild(a).id=N,!d.getElementsByName||!d.getElementsByName(N).length}),v.getById?(w.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&I){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},w.filter.ID=function(a){var b=a.replace(va,wa);return function(a){return a.getAttribute("id")===b}}):(delete w.find.ID,w.filter.ID=function(a){var b=a.replace(va,wa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),w.find.TAG=v.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):v.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},w.find.CLASS=v.getElementsByClassName&&function(a,b){return I?b.getElementsByClassName(a):void 0},K=[],J=[],(v.qsa=ra.test(d.querySelectorAll))&&(e(function(a){H.appendChild(a).innerHTML="<a id='"+N+"'></a><select id='"+N+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&J.push("[*^$]="+ca+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||J.push("\\["+ca+"*(?:value|"+ba+")"),a.querySelectorAll("[id~="+N+"-]").length||J.push("~="),a.querySelectorAll(":checked").length||J.push(":checked"),a.querySelectorAll("a#"+N+"+*").length||J.push(".#.+[+~]")}),e(function(a){var b=d.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&J.push("name"+ca+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||J.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),J.push(",.*:")})),(v.matchesSelector=ra.test(L=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&e(function(a){v.disconnectedMatch=L.call(a,"div"),L.call(a,"[s!='']:x"),K.push("!=",ga)}),J=J.length&&new RegExp(J.join("|")),K=K.length&&new RegExp(K.join("|")),b=ra.test(H.compareDocumentPosition),M=b||ra.test(H.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},U=b?function(a,b){if(a===b)return E=!0,0;var c=!a.compareDocumentPosition-!b.compareDocumentPosition;return c?c:(c=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&c||!v.sortDetached&&b.compareDocumentPosition(a)===c?a===d||a.ownerDocument===O&&M(O,a)?-1:b===d||b.ownerDocument===O&&M(O,b)?1:D?aa(D,a)-aa(D,b):0:4&c?-1:1)}:function(a,b){if(a===b)return E=!0,0;var c,e=0,f=a.parentNode,h=b.parentNode,i=[a],j=[b];if(!f||!h)return a===d?-1:b===d?1:f?-1:h?1:D?aa(D,a)-aa(D,b):0;if(f===h)return g(a,b);for(c=a;c=c.parentNode;)i.unshift(c);for(c=b;c=c.parentNode;)j.unshift(c);for(;i[e]===j[e];)e++;return e?g(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},d):G},b.matches=function(a,c){return b(a,null,null,c)},b.matchesSelector=function(a,c){if((a.ownerDocument||a)!==G&&F(a),c=c.replace(la,"='$1']"),v.matchesSelector&&I&&(!K||!K.test(c))&&(!J||!J.test(c)))try{var d=L.call(a,c);if(d||v.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return b(c,G,null,[a]).length>0},b.contains=function(a,b){return(a.ownerDocument||a)!==G&&F(a),M(a,b)},b.attr=function(a,b){(a.ownerDocument||a)!==G&&F(a);var c=w.attrHandle[b.toLowerCase()],d=c&&W.call(w.attrHandle,b.toLowerCase())?c(a,b,!I):void 0;return void 0!==d?d:v.attributes||!I?a.getAttribute(b):(d=a.getAttributeNode(b))&&d.specified?d.value:null},b.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},b.uniqueSort=function(a){var b,c=[],d=0,e=0;if(E=!v.detectDuplicates,D=!v.sortStable&&a.slice(0),a.sort(U),E){for(;b=a[e++];)b===a[e]&&(d=c.push(e));for(;d--;)a.splice(c[d],1)}return D=null,a},x=b.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=x(a)}else if(3===e||4===e)return a.nodeValue}else for(;b=a[d++];)c+=x(b);return c},w=b.selectors={cacheLength:50,createPseudo:d,match:oa,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(va,wa),a[3]=(a[3]||a[4]||a[5]||"").replace(va,wa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&b.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return oa.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&ma.test(c)&&(b=z(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(va,wa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=R[a+" "];return b||(b=new RegExp("(^|"+ca+")"+a+"("+ca+"|$)"))&&R(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,c,d){return function(e){var f=b.attr(e,a);return null==f?"!="===c:c?(f+="","="===c?f===d:"!="===c?f!==d:"^="===c?d&&0===f.indexOf(d):"*="===c?d&&f.indexOf(d)>-1:"$="===c?d&&f.slice(-d.length)===d:"~="===c?(" "+f.replace(ha," ")+" ").indexOf(d)>-1:"|="===c?f===d||f.slice(0,d.length+1)===d+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===P&&j[1],m=j[0]===P&&j[2],l=n&&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[P,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===P)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[P,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,c){var e,f=w.pseudos[a]||w.setFilters[a.toLowerCase()]||b.error("unsupported pseudo: "+a);return f[N]?f(c):f.length>1?(e=[a,a,"",c],w.setFilters.hasOwnProperty(a.toLowerCase())?d(function(a,b){for(var d,e=f(a,c),g=e.length;g--;)d=aa(a,e[g]),a[d]=!(b[d]=e[g])}):function(a){return f(a,0,e)}):f}},pseudos:{not:d(function(a){var b=[],c=[],e=A(a.replace(ia,"$1"));return e[N]?d(function(a,b,c,d){for(var f,g=e(a,null,d,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,d,f){return b[0]=a,e(b,null,f,c),b[0]=null,!c.pop()}}),has:d(function(a){return function(c){return b(a,c).length>0}}),contains:d(function(a){return a=a.replace(va,wa),function(b){return(b.textContent||b.innerText||x(b)).indexOf(a)>-1}}),lang:d(function(a){return na.test(a||"")||b.error("unsupported lang: "+a),a=a.replace(va,wa).toLowerCase(),function(b){var c;do if(c=I?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===H},focus:function(a){return a===G.activeElement&&(!G.hasFocus||G.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!w.pseudos.empty(a)},header:function(a){return qa.test(a.nodeName)},input:function(a){return pa.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:j(function(){return[0]}),last:j(function(a,b){return[b-1]}),eq:j(function(a,b,c){return[0>c?c+b:c]}),even:j(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:j(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:j(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:j(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},w.pseudos.nth=w.pseudos.eq;for(u in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[u]=h(u);for(u in{submit:!0,reset:!0})w.pseudos[u]=i(u);return l.prototype=w.filters=w.pseudos,w.setFilters=new l,z=b.tokenize=function(a,c){var d,e,f,g,h,i,j,k=S[a+" "];if(k)return c?0:k.slice(0);for(h=a,i=[],j=w.preFilter;h;){(!d||(e=ja.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),d=!1,(e=ka.exec(h))&&(d=e.shift(),f.push({value:d,type:e[0].replace(ia," ")}),h=h.slice(d.length));for(g in w.filter)!(e=oa[g].exec(h))||j[g]&&!(e=j[g](e))||(d=e.shift(),f.push({value:d,type:g,matches:e}),h=h.slice(d.length));if(!d)break}return c?h.length:h?b.error(a):S(a,i).slice(0)},A=b.compile=function(a,b){var c,d=[],e=[],f=T[a+" "];if(!f){for(b||(b=z(a)),c=b.length;c--;)f=s(b[c]),f[N]?d.push(f):e.push(f);f=T(a,t(e,d)),f.selector=a}return f},B=b.select=function(a,b,c,d){var e,f,g,h,i,j="function"==typeof a&&a,l=!d&&z(a=j.selector||a);if(c=c||[],1===l.length){if(f=l[0]=l[0].slice(0),f.length>2&&"ID"===(g=f[0]).type&&v.getById&&9===b.nodeType&&I&&w.relative[f[1].type]){if(b=(w.find.ID(g.matches[0].replace(va,wa),b)||[])[0],!b)return c;j&&(b=b.parentNode),a=a.slice(f.shift().value.length)}for(e=oa.needsContext.test(a)?0:f.length;e--&&(g=f[e],!w.relative[h=g.type]);)if((i=w.find[h])&&(d=i(g.matches[0].replace(va,wa),ta.test(f[0].type)&&k(b.parentNode)||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return $.apply(c,d),c;break}}return(j||A(a,l))(d,b,!I,c,ta.test(a)&&k(b.parentNode)||b),c},v.sortStable=N.split("").sort(U).join("")===N,v.detectDuplicates=!!E,F(),v.sortDetached=e(function(a){return 1&a.compareDocumentPosition(G.createElement("div"))}),e(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||f("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),v.attributes&&e(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||f("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),e(function(a){return null==a.getAttribute("disabled")})||f(ba,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),b}(a);_.find=ea,_.expr=ea.selectors,_.expr[":"]=_.expr.pseudos,_.unique=ea.uniqueSort,_.text=ea.getText,_.isXMLDoc=ea.isXML,_.contains=ea.contains;var fa=_.expr.match.needsContext,ga=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ha=/^.[^:#\[\.,]*$/;_.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?_.find.matchesSelector(d,a)?[d]:[]:_.find.matches(a,_.grep(b,function(a){return 1===a.nodeType}))},_.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(_(a).filter(function(){for(b=0;c>b;b++)if(_.contains(e[b],this))return!0}));for(b=0;c>b;b++)_.find(a,e[b],d);return d=this.pushStack(c>1?_.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(d(this,a||[],!1))},not:function(a){return this.pushStack(d(this,a||[],!0))},is:function(a){return!!d(this,"string"==typeof a&&fa.test(a)?_(a):a||[],!1).length}});var ia,ja=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ka=_.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:ja.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||ia).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof _?b[0]:b,_.merge(this,_.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:Z,!0)),ga.test(c[1])&&_.isPlainObject(b))for(c in b)_.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=Z.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=Z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):_.isFunction(a)?"undefined"!=typeof ia.ready?ia.ready(a):a(_):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),_.makeArray(a,this))};ka.prototype=_.fn,ia=_(Z);var la=/^(?:parents|prev(?:Until|All))/,ma={children:!0,contents:!0,next:!0,prev:!0};_.extend({dir:function(a,b,c){for(var d=[],e=void 0!==c;(a=a[b])&&9!==a.nodeType;)if(1===a.nodeType){if(e&&_(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),_.fn.extend({has:function(a){var b=_(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(_.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=fa.test(a)||"string"!=typeof a?_(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&_.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?_.unique(f):f)},index:function(a){return a?"string"==typeof a?U.call(_(a),this[0]):U.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(_.unique(_.merge(this.get(),_(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),_.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return _.dir(a,"parentNode")},parentsUntil:function(a,b,c){return _.dir(a,"parentNode",c)},next:function(a){return e(a,"nextSibling")},prev:function(a){return e(a,"previousSibling")},nextAll:function(a){return _.dir(a,"nextSibling")},prevAll:function(a){return _.dir(a,"previousSibling")},nextUntil:function(a,b,c){return _.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return _.dir(a,"previousSibling",c)},siblings:function(a){return _.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return _.sibling(a.firstChild)},contents:function(a){return a.contentDocument||_.merge([],a.childNodes)}},function(a,b){_.fn[a]=function(c,d){var e=_.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=_.filter(d,e)),this.length>1&&(ma[a]||_.unique(e),la.test(a)&&e.reverse()),this.pushStack(e)}});var na=/\S+/g,oa={};_.Callbacks=function(a){a="string"==typeof a?oa[a]||f(a):_.extend({},a);var b,c,d,e,g,h,i=[],j=!a.once&&[],k=function(f){for(b=a.memory&&f,c=!0,h=e||0,e=0,g=i.length,d=!0;i&&g>h;h++)if(i[h].apply(f[0],f[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,i&&(j?j.length&&k(j.shift()):b?i=[]:l.disable())},l={add:function(){if(i){var c=i.length;!function f(b){_.each(b,function(b,c){var d=_.type(c);"function"===d?a.unique&&l.has(c)||i.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),d?g=i.length:b&&(e=c,k(b))}return this},remove:function(){return i&&_.each(arguments,function(a,b){for(var c;(c=_.inArray(b,i,c))>-1;)i.splice(c,1),d&&(g>=c&&g--,h>=c&&h--)}),this},has:function(a){return a?_.inArray(a,i)>-1:!(!i||!i.length)},empty:function(){return i=[],g=0,this},disable:function(){return i=j=b=void 0,this},disabled:function(){return!i},lock:function(){return j=void 0,b||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return!i||c&&!j||(b=b||[],b=[a,b.slice?b.slice():b],d?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!c}};return l},_.extend({Deferred:function(a){var b=[["resolve","done",_.Callbacks("once memory"),"resolved"],["reject","fail",_.Callbacks("once memory"),"rejected"],["notify","progress",_.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return _.Deferred(function(c){_.each(b,function(b,f){var g=_.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&_.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?_.extend(a,d):d}},e={};return d.pipe=d.then,_.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=R.call(arguments),g=f.length,h=1!==g||a&&_.isFunction(a.promise)?g:0,i=1===h?a:_.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?R.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&_.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}});var pa;_.fn.ready=function(a){return _.ready.promise().done(a),this},_.extend({isReady:!1,readyWait:1,holdReady:function(a){a?_.readyWait++:_.ready(!0)},ready:function(a){(a===!0?--_.readyWait:_.isReady)||(_.isReady=!0,a!==!0&&--_.readyWait>0||(pa.resolveWith(Z,[_]),_.fn.triggerHandler&&(_(Z).triggerHandler("ready"),_(Z).off("ready"))))}}),_.ready.promise=function(b){return pa||(pa=_.Deferred(),"complete"===Z.readyState?setTimeout(_.ready):(Z.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1))),pa.promise(b)},_.ready.promise();var qa=_.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===_.type(c)){e=!0;for(h in c)_.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,_.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(_(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};_.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType},h.uid=1,h.accepts=_.acceptData,h.prototype={key:function(a){if(!h.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=h.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,_.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(_.isEmptyObject(f))_.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,_.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{_.isArray(b)?d=b.concat(b.map(_.camelCase)):(e=_.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(na)||[])),c=d.length;for(;c--;)delete g[d[c]]}},hasData:function(a){return!_.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var ra=new h,sa=new h,ta=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ua=/([A-Z])/g;_.extend({hasData:function(a){return sa.hasData(a)||ra.hasData(a)},data:function(a,b,c){return sa.access(a,b,c)},removeData:function(a,b){sa.remove(a,b)},_data:function(a,b,c){return ra.access(a,b,c)},_removeData:function(a,b){ra.remove(a,b)}}),_.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=sa.get(f),1===f.nodeType&&!ra.get(f,"hasDataAttrs"))){for(c=g.length;c--;)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=_.camelCase(d.slice(5)),i(f,d,e[d])));ra.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){sa.set(this,a)}):qa(this,function(b){var c,d=_.camelCase(a);if(f&&void 0===b){if(c=sa.get(f,a),void 0!==c)return c;if(c=sa.get(f,d),void 0!==c)return c;if(c=i(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=sa.get(this,d);sa.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&sa.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){sa.remove(this,a)})}}),_.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=ra.get(a,b),c&&(!d||_.isArray(c)?d=ra.access(a,b,_.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=_.queue(a,b),d=c.length,e=c.shift(),f=_._queueHooks(a,b),g=function(){_.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return ra.get(a,c)||ra.access(a,c,{empty:_.Callbacks("once memory").add(function(){ra.remove(a,[b+"queue",c])})})}}),_.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?_.queue(this[0],a):void 0===b?this:this.each(function(){var c=_.queue(this,a,b);_._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&_.dequeue(this,a)})},dequeue:function(a){return this.each(function(){_.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=_.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};for("string"!=typeof a&&(b=a,a=void 0),a=a||"fx";g--;)c=ra.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var va=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,wa=["Top","Right","Bottom","Left"],xa=function(a,b){return a=b||a,"none"===_.css(a,"display")||!_.contains(a.ownerDocument,a)},ya=/^(?:checkbox|radio)$/i;!function(){var a=Z.createDocumentFragment(),b=a.appendChild(Z.createElement("div")),c=Z.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),Y.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",Y.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var za="undefined";Y.focusinBubbles="onfocusin"in a;var Aa=/^key/,Ba=/^(?:mouse|pointer|contextmenu)|click/,Ca=/^(?:focusinfocus|focusoutblur)$/,Da=/^([^.]*)(?:\.(.+)|)$/;_.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ra.get(a);if(q)for(c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=_.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return typeof _!==za&&_.event.triggered!==b.type?_.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(na)||[""],j=b.length;j--;)h=Da.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=_.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=_.event.special[n]||{},k=_.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&_.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),_.event.global[n]=!0)},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ra.hasData(a)&&ra.get(a);if(q&&(i=q.events)){for(b=(b||"").match(na)||[""],j=b.length;j--;)if(h=Da.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=_.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;f--;)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||_.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)_.event.remove(a,n+b[j],c,d,!0);_.isEmptyObject(i)&&(delete q.handle,ra.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,j,k,l,m=[d||Z],n=X.call(b,"type")?b.type:b,o=X.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||Z,3!==d.nodeType&&8!==d.nodeType&&!Ca.test(n+_.event.triggered)&&(n.indexOf(".")>=0&&(o=n.split("."),n=o.shift(),o.sort()),j=n.indexOf(":")<0&&"on"+n,b=b[_.expando]?b:new _.Event(n,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=o.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),
+c=null==c?[b]:_.makeArray(c,[b]),l=_.event.special[n]||{},e||!l.trigger||l.trigger.apply(d,c)!==!1)){if(!e&&!l.noBubble&&!_.isWindow(d)){for(i=l.delegateType||n,Ca.test(i+n)||(g=g.parentNode);g;g=g.parentNode)m.push(g),h=g;h===(d.ownerDocument||Z)&&m.push(h.defaultView||h.parentWindow||a)}for(f=0;(g=m[f++])&&!b.isPropagationStopped();)b.type=f>1?i:l.bindType||n,k=(ra.get(g,"events")||{})[b.type]&&ra.get(g,"handle"),k&&k.apply(g,c),k=j&&g[j],k&&k.apply&&_.acceptData(g)&&(b.result=k.apply(g,c),b.result===!1&&b.preventDefault());return b.type=n,e||b.isDefaultPrevented()||l._default&&l._default.apply(m.pop(),c)!==!1||!_.acceptData(d)||j&&_.isFunction(d[n])&&!_.isWindow(d)&&(h=d[j],h&&(d[j]=null),_.event.triggered=n,d[n](),_.event.triggered=void 0,h&&(d[j]=h)),b.result}},dispatch:function(a){a=_.event.fix(a);var b,c,d,e,f,g=[],h=R.call(arguments),i=(ra.get(this,"events")||{})[a.type]||[],j=_.event.special[a.type]||{};if(h[0]=a,a.delegateTarget=this,!j.preDispatch||j.preDispatch.call(this,a)!==!1){for(g=_.event.handlers.call(this,a,i),b=0;(e=g[b++])&&!a.isPropagationStopped();)for(a.currentTarget=e.elem,c=0;(f=e.handlers[c++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(f.namespace))&&(a.handleObj=f,a.data=f.data,d=((_.event.special[f.origType]||{}).handle||f.handler).apply(e.elem,h),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()));return j.postDispatch&&j.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?_(e,this).index(i)>=0:_.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||Z,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[_.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];for(g||(this.fixHooks[e]=g=Ba.test(e)?this.mouseHooks:Aa.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new _.Event(f),b=d.length;b--;)c=d[b],a[c]=f[c];return a.target||(a.target=Z),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==l()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===l()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&_.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return _.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=_.extend(new _.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?_.event.trigger(e,null,b):_.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},_.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},_.Event=function(a,b){return this instanceof _.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?j:k):this.type=a,b&&_.extend(this,b),this.timeStamp=a&&a.timeStamp||_.now(),void(this[_.expando]=!0)):new _.Event(a,b)},_.Event.prototype={isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=j,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=j,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=j,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},_.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){_.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!_.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),Y.focusinBubbles||_.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){_.event.simulate(b,a.target,_.event.fix(a),!0)};_.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=ra.access(d,b);e||d.addEventListener(a,c,!0),ra.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=ra.access(d,b)-1;e?ra.access(d,b,e):(d.removeEventListener(a,c,!0),ra.remove(d,b))}}}),_.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=k;else if(!d)return this;return 1===e&&(f=d,d=function(a){return _().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=_.guid++)),this.each(function(){_.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,_(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=k),this.each(function(){_.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){_.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?_.event.trigger(a,b,c,!0):void 0}});var Ea=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Fa=/<([\w:]+)/,Ga=/<|&#?\w+;/,Ha=/<(?:script|style|link)/i,Ia=/checked\s*(?:[^=]|=\s*.checked.)/i,Ja=/^$|\/(?:java|ecma)script/i,Ka=/^true\/(.*)/,La=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Ma.optgroup=Ma.option,Ma.tbody=Ma.tfoot=Ma.colgroup=Ma.caption=Ma.thead,Ma.th=Ma.td,_.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=_.contains(a.ownerDocument,a);if(!(Y.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||_.isXMLDoc(a)))for(g=r(h),f=r(a),d=0,e=f.length;e>d;d++)s(f[d],g[d]);if(b)if(c)for(f=f||r(a),g=g||r(h),d=0,e=f.length;e>d;d++)q(f[d],g[d]);else q(a,h);return g=r(h,"script"),g.length>0&&p(g,!i&&r(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===_.type(e))_.merge(l,e.nodeType?[e]:e);else if(Ga.test(e)){for(f=f||k.appendChild(b.createElement("div")),g=(Fa.exec(e)||["",""])[1].toLowerCase(),h=Ma[g]||Ma._default,f.innerHTML=h[1]+e.replace(Ea,"<$1></$2>")+h[2],j=h[0];j--;)f=f.lastChild;_.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));for(k.textContent="",m=0;e=l[m++];)if((!d||-1===_.inArray(e,d))&&(i=_.contains(e.ownerDocument,e),f=r(k.appendChild(e),"script"),i&&p(f),c))for(j=0;e=f[j++];)Ja.test(e.type||"")&&c.push(e);return k},cleanData:function(a){for(var b,c,d,e,f=_.event.special,g=0;void 0!==(c=a[g]);g++){if(_.acceptData(c)&&(e=c[ra.expando],e&&(b=ra.cache[e]))){if(b.events)for(d in b.events)f[d]?_.event.remove(c,d):_.removeEvent(c,d,b.handle);ra.cache[e]&&delete ra.cache[e]}delete sa.cache[c[sa.expando]]}}}),_.fn.extend({text:function(a){return qa(this,function(a){return void 0===a?_.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=m(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=m(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?_.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||_.cleanData(r(c)),c.parentNode&&(b&&_.contains(c.ownerDocument,c)&&p(r(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(_.cleanData(r(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return _.clone(this,a,b)})},html:function(a){return qa(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Ha.test(a)&&!Ma[(Fa.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ea,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(_.cleanData(r(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,_.cleanData(r(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=S.apply([],a);var c,d,e,f,g,h,i=0,j=this.length,k=this,l=j-1,m=a[0],p=_.isFunction(m);if(p||j>1&&"string"==typeof m&&!Y.checkClone&&Ia.test(m))return this.each(function(c){var d=k.eq(c);p&&(a[0]=m.call(this,c,d.html())),d.domManip(a,b)});if(j&&(c=_.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(e=_.map(r(c,"script"),n),f=e.length;j>i;i++)g=c,i!==l&&(g=_.clone(g,!0,!0),f&&_.merge(e,r(g,"script"))),b.call(this[i],g,i);if(f)for(h=e[e.length-1].ownerDocument,_.map(e,o),i=0;f>i;i++)g=e[i],Ja.test(g.type||"")&&!ra.access(g,"globalEval")&&_.contains(h,g)&&(g.src?_._evalUrl&&_._evalUrl(g.src):_.globalEval(g.textContent.replace(La,"")))}return this}}),_.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){_.fn[a]=function(a){for(var c,d=[],e=_(a),f=e.length-1,g=0;f>=g;g++)c=g===f?this:this.clone(!0),_(e[g])[b](c),T.apply(d,c.get());return this.pushStack(d)}});var Na,Oa={},Pa=/^margin/,Qa=new RegExp("^("+va+")(?!px)[a-z%]+$","i"),Ra=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};!function(){function b(){g.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",g.innerHTML="",e.appendChild(f);var b=a.getComputedStyle(g,null);c="1%"!==b.top,d="4px"===b.width,e.removeChild(f)}var c,d,e=Z.documentElement,f=Z.createElement("div"),g=Z.createElement("div");g.style&&(g.style.backgroundClip="content-box",g.cloneNode(!0).style.backgroundClip="",Y.clearCloneStyle="content-box"===g.style.backgroundClip,f.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",f.appendChild(g),a.getComputedStyle&&_.extend(Y,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return null==d&&b(),d},reliableMarginRight:function(){var b,c=g.appendChild(Z.createElement("div"));return c.style.cssText=g.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",g.style.width="1px",e.appendChild(f),b=!parseFloat(a.getComputedStyle(c,null).marginRight),e.removeChild(f),g.removeChild(c),b}}))}(),_.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Sa=/^(none|table(?!-c[ea]).+)/,Ta=new RegExp("^("+va+")(.*)$","i"),Ua=new RegExp("^([+-])=("+va+")","i"),Va={position:"absolute",visibility:"hidden",display:"block"},Wa={letterSpacing:"0",fontWeight:"400"},Xa=["Webkit","O","Moz","ms"];_.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=v(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=_.camelCase(b),i=a.style;return b=_.cssProps[h]||(_.cssProps[h]=x(i,h)),g=_.cssHooks[b]||_.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ua.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(_.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||_.cssNumber[h]||(c+="px"),Y.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=_.camelCase(b);return b=_.cssProps[h]||(_.cssProps[h]=x(a.style,h)),g=_.cssHooks[b]||_.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=v(a,b,d)),"normal"===e&&b in Wa&&(e=Wa[b]),""===c||c?(f=parseFloat(e),c===!0||_.isNumeric(f)?f||0:e):e}}),_.each(["height","width"],function(a,b){_.cssHooks[b]={get:function(a,c,d){return c?Sa.test(_.css(a,"display"))&&0===a.offsetWidth?_.swap(a,Va,function(){return A(a,b,d)}):A(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return y(a,c,d?z(a,b,d,"border-box"===_.css(a,"boxSizing",!1,e),e):0)}}}),_.cssHooks.marginRight=w(Y.reliableMarginRight,function(a,b){return b?_.swap(a,{display:"inline-block"},v,[a,"marginRight"]):void 0}),_.each({margin:"",padding:"",border:"Width"},function(a,b){_.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+wa[d]+b]=f[d]||f[d-2]||f[0];return e}},Pa.test(a)||(_.cssHooks[a+b].set=y)}),_.fn.extend({css:function(a,b){return qa(this,function(a,b,c){var d,e,f={},g=0;if(_.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=_.css(a,b[g],!1,d);return f}return void 0!==c?_.style(a,b,c):_.css(a,b)},a,b,arguments.length>1)},show:function(){return B(this,!0)},hide:function(){return B(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){xa(this)?_(this).show():_(this).hide()})}}),_.Tween=C,C.prototype={constructor:C,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(_.cssNumber[c]?"":"px")},cur:function(){var a=C.propHooks[this.prop];return a&&a.get?a.get(this):C.propHooks._default.get(this)},run:function(a){var b,c=C.propHooks[this.prop];return this.options.duration?this.pos=b=_.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):C.propHooks._default.set(this),this}},C.prototype.init.prototype=C.prototype,C.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=_.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){_.fx.step[a.prop]?_.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[_.cssProps[a.prop]]||_.cssHooks[a.prop])?_.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},C.propHooks.scrollTop=C.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},_.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},_.fx=C.prototype.init,_.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=new RegExp("^(?:([+-])=|)("+va+")([a-z%]*)$","i"),ab=/queueHooks$/,bb=[G],cb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=_a.exec(b),f=e&&e[3]||(_.cssNumber[a]?"":"px"),g=(_.cssNumber[a]||"px"!==f&&+d)&&_a.exec(_.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,_.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};_.Animation=_.extend(I,{tweener:function(a,b){_.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],cb[c]=cb[c]||[],cb[c].unshift(b)},prefilter:function(a,b){b?bb.unshift(a):bb.push(a)}}),_.speed=function(a,b,c){var d=a&&"object"==typeof a?_.extend({},a):{complete:c||!c&&b||_.isFunction(a)&&a,duration:a,easing:c&&b||b&&!_.isFunction(b)&&b};return d.duration=_.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in _.fx.speeds?_.fx.speeds[d.duration]:_.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){_.isFunction(d.old)&&d.old.call(this),d.queue&&_.dequeue(this,d.queue)},d},_.fn.extend({fadeTo:function(a,b,c,d){return this.filter(xa).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=_.isEmptyObject(a),f=_.speed(b,c,d),g=function(){var b=I(this,_.extend({},a),f);(e||ra.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=_.timers,g=ra.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&_.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=ra.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=_.timers,g=d?d.length:0;for(c.finish=!0,_.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),_.each(["toggle","show","hide"],function(a,b){var c=_.fn[b];_.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(E(b,!0),a,d,e)}}),_.each({slideDown:E("show"),slideUp:E("hide"),slideToggle:E("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){_.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),_.timers=[],_.fx.tick=function(){var a,b=0,c=_.timers;for(Ya=_.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||_.fx.stop(),Ya=void 0},_.fx.timer=function(a){_.timers.push(a),a()?_.fx.start():_.timers.pop()},_.fx.interval=13,_.fx.start=function(){Za||(Za=setInterval(_.fx.tick,_.fx.interval))},_.fx.stop=function(){clearInterval(Za),Za=null},_.fx.speeds={slow:600,fast:200,_default:400},_.fn.delay=function(a,b){return a=_.fx?_.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=Z.createElement("input"),b=Z.createElement("select"),c=b.appendChild(Z.createElement("option"));a.type="checkbox",Y.checkOn=""!==a.value,Y.optSelected=c.selected,b.disabled=!0,Y.optDisabled=!c.disabled,a=Z.createElement("input"),a.value="t",a.type="radio",Y.radioValue="t"===a.value}();var db,eb,fb=_.expr.attrHandle;_.fn.extend({attr:function(a,b){return qa(this,_.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){_.removeAttr(this,a)})}}),_.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===za?_.prop(a,b,c):(1===f&&_.isXMLDoc(a)||(b=b.toLowerCase(),d=_.attrHooks[b]||(_.expr.match.bool.test(b)?eb:db)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=_.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void _.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(na);if(f&&1===a.nodeType)for(;c=f[e++];)d=_.propFix[c]||c,_.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!Y.radioValue&&"radio"===b&&_.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),eb={set:function(a,b,c){return b===!1?_.removeAttr(a,c):a.setAttribute(c,c),c}},_.each(_.expr.match.bool.source.match(/\w+/g),function(a,b){var c=fb[b]||_.find.attr;fb[b]=function(a,b,d){var e,f;return d||(f=fb[b],fb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,fb[b]=f),e}});var gb=/^(?:input|select|textarea|button)$/i;_.fn.extend({prop:function(a,b){return qa(this,_.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[_.propFix[a]||a]})}}),_.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!_.isXMLDoc(a),f&&(b=_.propFix[b]||b,e=_.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||gb.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),Y.optSelected||(_.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),_.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){_.propFix[this.toLowerCase()]=this});var hb=/[\t\r\n\f]/g;_.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(_.isFunction(a))return this.each(function(b){_(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(na)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(hb," "):" ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=_.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(_.isFunction(a))return this.each(function(b){_(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(na)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(hb," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");g=a?_.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):_.isFunction(a)?this.each(function(c){_(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if("string"===c)for(var b,d=0,e=_(this),f=a.match(na)||[];b=f[d++];)e.hasClass(b)?e.removeClass(b):e.addClass(b);else(c===za||"boolean"===c)&&(this.className&&ra.set(this,"__className__",this.className),this.className=this.className||a===!1?"":ra.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(hb," ").indexOf(b)>=0)return!0;return!1}});var ib=/\r/g;_.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=_.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,_(this).val()):a,null==e?e="":"number"==typeof e?e+="":_.isArray(e)&&(e=_.map(e,function(a){return null==a?"":a+""})),b=_.valHooks[this.type]||_.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=_.valHooks[e.type]||_.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ib,""):null==c?"":c)}}}),_.extend({valHooks:{option:{get:function(a){var b=_.find.attr(a,"value");return null!=b?b:_.trim(_.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(Y.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!_.nodeName(c.parentNode,"optgroup"))){if(b=_(c).val(),f)return b;g.push(b)}return g},set:function(a,b){for(var c,d,e=a.options,f=_.makeArray(b),g=e.length;g--;)d=e[g],(d.selected=_.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),_.each(["radio","checkbox"],function(){_.valHooks[this]={set:function(a,b){return _.isArray(b)?a.checked=_.inArray(_(a).val(),b)>=0:void 0}},Y.checkOn||(_.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),_.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){_.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),_.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var jb=_.now(),kb=/\?/;_.parseJSON=function(a){return JSON.parse(a+"")},_.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&_.error("Invalid XML: "+a),b};var lb=/#.*$/,mb=/([?&])_=[^&]*/,nb=/^(.*?):[ \t]*([^\r\n]*)$/gm,ob=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,pb=/^(?:GET|HEAD)$/,qb=/^\/\//,rb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,sb={},tb={},ub="*/".concat("*"),vb=a.location.href,wb=rb.exec(vb.toLowerCase())||[];_.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:vb,type:"GET",isLocal:ob.test(wb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":_.parseJSON,"text xml":_.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?L(L(a,_.ajaxSettings),b):L(_.ajaxSettings,a)},ajaxPrefilter:J(sb),ajaxTransport:J(tb),ajax:function(a,b){function c(a,b,c,g){var i,k,r,s,u,w=b;2!==t&&(t=2,h&&clearTimeout(h),d=void 0,f=g||"",v.readyState=a>0?4:0,i=a>=200&&300>a||304===a,c&&(s=M(l,v,c)),s=N(l,s,v,i),i?(l.ifModified&&(u=v.getResponseHeader("Last-Modified"),u&&(_.lastModified[e]=u),u=v.getResponseHeader("etag"),u&&(_.etag[e]=u)),204===a||"HEAD"===l.type?w="nocontent":304===a?w="notmodified":(w=s.state,k=s.data,r=s.error,i=!r)):(r=w,(a||!w)&&(w="error",0>a&&(a=0))),v.status=a,v.statusText=(b||w)+"",i?o.resolveWith(m,[k,w,v]):o.rejectWith(m,[v,w,r]),v.statusCode(q),q=void 0,j&&n.trigger(i?"ajaxSuccess":"ajaxError",[v,l,i?k:r]),p.fireWith(m,[v,w]),j&&(n.trigger("ajaxComplete",[v,l]),--_.active||_.event.trigger("ajaxStop")))}"object"==typeof a&&(b=a,a=void 0),b=b||{};var d,e,f,g,h,i,j,k,l=_.ajaxSetup({},b),m=l.context||l,n=l.context&&(m.nodeType||m.jquery)?_(m):_.event,o=_.Deferred(),p=_.Callbacks("once memory"),q=l.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!g)for(g={};b=nb.exec(f);)g[b[1].toLowerCase()]=b[2];b=g[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return d&&d.abort(b),c(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,l.url=((a||l.url||vb)+"").replace(lb,"").replace(qb,wb[1]+"//"),l.type=b.method||b.type||l.method||l.type,l.dataTypes=_.trim(l.dataType||"*").toLowerCase().match(na)||[""],null==l.crossDomain&&(i=rb.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]===wb[1]&&i[2]===wb[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(wb[3]||("http:"===wb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=_.param(l.data,l.traditional)),K(sb,l,b,v),2===t)return v;j=_.event&&l.global,j&&0===_.active++&&_.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!pb.test(l.type),e=l.url,l.hasContent||(l.data&&(e=l.url+=(kb.test(e)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=mb.test(e)?e.replace(mb,"$1_="+jb++):e+(kb.test(e)?"&":"?")+"_="+jb++)),l.ifModified&&(_.lastModified[e]&&v.setRequestHeader("If-Modified-Since",_.lastModified[e]),_.etag[e]&&v.setRequestHeader("If-None-Match",_.etag[e])),(l.data&&l.hasContent&&l.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",l.contentType),v.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+ub+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)v.setRequestHeader(k,l.headers[k]);if(l.beforeSend&&(l.beforeSend.call(m,v,l)===!1||2===t))return v.abort();u="abort";for(k in{success:1,error:1,complete:1})v[k](l[k]);if(d=K(tb,l,b,v)){v.readyState=1,j&&n.trigger("ajaxSend",[v,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){v.abort("timeout")},l.timeout));try{t=1,d.send(r,c)}catch(w){if(!(2>t))throw w;c(-1,w)}}else c(-1,"No Transport");return v},getJSON:function(a,b,c){return _.get(a,b,c,"json")},getScript:function(a,b){return _.get(a,void 0,b,"script")}}),_.each(["get","post"],function(a,b){_[b]=function(a,c,d,e){return _.isFunction(c)&&(e=e||d,d=c,c=void 0),_.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),_._evalUrl=function(a){return _.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},_.fn.extend({wrapAll:function(a){var b;return _.isFunction(a)?this.each(function(b){_(this).wrapAll(a.call(this,b))}):(this[0]&&(b=_(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstElementChild;)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return _.isFunction(a)?this.each(function(b){_(this).wrapInner(a.call(this,b))}):this.each(function(){var b=_(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=_.isFunction(a);return this.each(function(c){_(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){_.nodeName(this,"body")||_(this).replaceWith(this.childNodes)}).end()}}),_.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},_.expr.filters.visible=function(a){return!_.expr.filters.hidden(a)};var xb=/%20/g,yb=/\[\]$/,zb=/\r?\n/g,Ab=/^(?:submit|button|image|reset|file)$/i,Bb=/^(?:input|select|textarea|keygen)/i;_.param=function(a,b){var c,d=[],e=function(a,b){b=_.isFunction(b)?b():null==b?"":b,
+d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=_.ajaxSettings&&_.ajaxSettings.traditional),_.isArray(a)||a.jquery&&!_.isPlainObject(a))_.each(a,function(){e(this.name,this.value)});else for(c in a)O(c,a[c],b,e);return d.join("&").replace(xb,"+")},_.fn.extend({serialize:function(){return _.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=_.prop(this,"elements");return a?_.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!_(this).is(":disabled")&&Bb.test(this.nodeName)&&!Ab.test(a)&&(this.checked||!ya.test(a))}).map(function(a,b){var c=_(this).val();return null==c?null:_.isArray(c)?_.map(c,function(a){return{name:b.name,value:a.replace(zb,"\r\n")}}):{name:b.name,value:c.replace(zb,"\r\n")}}).get()}}),_.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cb=0,Db={},Eb={0:200,1223:204},Fb=_.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Db)Db[a]()}),Y.cors=!!Fb&&"withCredentials"in Fb,Y.ajax=Fb=!!Fb,_.ajaxTransport(function(a){var b;return Y.cors||Fb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Db[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Eb[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Db[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),_.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return _.globalEval(a),a}}}),_.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),_.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=_("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),Z.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gb=[],Hb=/(=)\?(?=&|$)|\?\?/;_.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gb.pop()||_.expando+"_"+jb++;return this[a]=!0,a}}),_.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=_.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hb,"$1"+e):b.jsonp!==!1&&(b.url+=(kb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||_.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gb.push(e)),g&&_.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),_.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||Z;var d=ga.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=_.buildFragment([a],b,e),e&&e.length&&_(e).remove(),_.merge([],d.childNodes))};var Ib=_.fn.load;_.fn.load=function(a,b,c){if("string"!=typeof a&&Ib)return Ib.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=_.trim(a.slice(h)),a=a.slice(0,h)),_.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&_.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?_("<div>").append(_.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},_.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){_.fn[b]=function(a){return this.on(b,a)}}),_.expr.filters.animated=function(a){return _.grep(_.timers,function(b){return a===b.elem}).length};var Jb=a.document.documentElement;_.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=_.css(a,"position"),l=_(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=_.css(a,"top"),i=_.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),_.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},_.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){_.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,_.contains(b,d)?(typeof d.getBoundingClientRect!==za&&(e=d.getBoundingClientRect()),c=P(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===_.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),_.nodeName(a[0],"html")||(d=a.offset()),d.top+=_.css(a[0],"borderTopWidth",!0),d.left+=_.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-_.css(c,"marginTop",!0),left:b.left-d.left-_.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||Jb;a&&!_.nodeName(a,"html")&&"static"===_.css(a,"position");)a=a.offsetParent;return a||Jb})}}),_.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;_.fn[b]=function(e){return qa(this,function(b,e,f){var g=P(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),_.each(["top","left"],function(a,b){_.cssHooks[b]=w(Y.pixelPosition,function(a,c){return c?(c=v(a,b),Qa.test(c)?_(a).position()[b]+"px":c):void 0})}),_.each({Height:"height",Width:"width"},function(a,b){_.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){_.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return qa(this,function(b,c,d){var e;return _.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?_.css(b,c,g):_.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),_.fn.size=function(){return this.length},_.fn.andSelf=_.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return _});var Kb=a.jQuery,Lb=a.$;return _.noConflict=function(b){return a.$===_&&(a.$=Lb),b&&a.jQuery===_&&(a.jQuery=Kb),_},typeof b===za&&(a.jQuery=a.$=_),_});
\ No newline at end of file
--- /dev/null
+/*!
+ * Modernizr v2.8.3
+ * www.modernizr.com
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
+ * Available under the BSD and MIT licenses: www.modernizr.com/license/
+ */
+window.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+";")+(b||""))}function f(a,b){return typeof a===b}function g(a,b){return!!~(""+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,"-")&&t[e]!==c)return"pfx"==b?e:!0}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return d===!1?a[e]:f(g,"function")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+z.join(d+" ")+d).split(" ");return f(b,"string")||f(b,"undefined")?h(e,b):(e=(a+" "+A.join(d+" ")+d).split(" "),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;e>d;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement("datalist")||!a.HTMLDataListElement)),E}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;h>g;g++)u.setAttribute("type",e=a[g]),d="text"!==u.type,d&&(u.value=v,u.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&u.checkValidity()===!1:u.value!=v)),D[a[g]]=!!d;return D}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var l,m,n="2.8.3",o={},p=!0,q=b.documentElement,r="modernizr",s=b.createElement(r),t=s.style,u=b.createElement("input"),v=":)",w={}.toString,x=" -webkit- -moz- -o- -ms- ".split(" "),y="Webkit Moz O ms",z=y.split(" "),A=y.toLowerCase().split(" "),B={svg:"http://www.w3.org/2000/svg"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement("div"),k=b.body,l=k||b.createElement("body");if(parseInt(d,10))for(;d--;)h=b.createElement("div"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=["­",'<style id="s',r,'">',a,"</style>"].join(""),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background="",l.style.overflow="hidden",i=q.style.overflow,q.style.overflow="hidden",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H("@media "+b+" { #"+r+" { position: absolute; } }",function(b){d="absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||"div"),a="on"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,""),g=f(e[a],"function"),f(e[a],"undefined")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return a}(),K={}.hasOwnProperty;m=f(K,"undefined")||f(K.call,"undefined")?function(a,b){return b in a&&f(a.constructor.prototype[b],"undefined")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j("flexWrap")},C.flexboxlegacy=function(){return j("boxDirection")},C.canvas=function(){var a=b.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement("canvas").getContext("2d").fillText,"function"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H(["@media (",x.join("touch-enabled),("),r,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return"geolocation"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j("indexedDB",a)},C.hashchange=function(){return J("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},C.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},C.rgba=function(){return d("background-color:rgba(150,255,150,.5)"),g(t.backgroundColor,"rgba")},C.hsla=function(){return d("background-color:hsla(120,40%,100%,.5)"),g(t.backgroundColor,"rgba")||g(t.backgroundColor,"hsla")},C.multiplebgs=function(){return d("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j("backgroundSize")},C.borderimage=function(){return j("borderImage")},C.borderradius=function(){return j("borderRadius")},C.boxshadow=function(){return j("boxShadow")},C.textshadow=function(){return""===b.createElement("div").style.textShadow},C.opacity=function(){return e("opacity:.55"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j("animationName")},C.csscolumns=function(){return j("columnCount")},C.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return d((a+"-webkit- ".split(" ").join(b+a)+x.join(c+a)).slice(0,-a.length)),g(t.backgroundImage,"gradient")},C.cssreflections=function(){return j("boxReflect")},C.csstransforms=function(){return!!j("transform")},C.csstransforms3d=function(){var a=!!j("perspective");return a&&"webkitPerspective"in q.style&&H("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j("transition")},C.fontface=function(){var a;return H('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&0===g.indexOf(d.split(" ")[0])}),a},C.generatedcontent=function(){var a;return H(["#",r,"{font:0/0 a}#",r,':after{content:"',v,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement("video"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(d){}return c},C.audio=function(){var a=b.createElement("audio"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(d){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,"svg").createSVGRect},C.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,"animate")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,"clipPath")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?"":"no-")+l));return o.input||k(),o.addTest=function(a,b){if("object"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b="function"==typeof b?b():b,"undefined"!=typeof p&&p&&(q.className+=" "+(b?"":"no-")+a),o[a]=b}return o},d(""),s=u=null,function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||h(a,d),a}var j,k,l="3.7.0",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",q=0,r={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",j="hidden"in a,k=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){j=!0,k=!0}}();var s={elements:m.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:l,shivCSS:m.shivCSS!==!1,supportsUnknownElements:k,shivMethods:m.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,"pfx")},q.className=q.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(p?" js "+F.join(" "):""),o}(this,this.document);
\ No newline at end of file
--- /dev/null
+/*! http://mths.be/placeholder v2.0.9 by @mathias */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(b){var c={},d=/^jQuery\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(d);if(d.value==f.attr("placeholder")&&f.hasClass("placeholder"))if(f.data("placeholder-password")){if(f=f.hide().nextAll('input[type="password"]:first').show().attr("id",f.removeAttr("id").data("placeholder-id")),b===!0)return f[0].value=c;f.focus()}else d.value="",f.removeClass("placeholder"),d==e()&&d.select()}function d(){var d,e=this,f=a(e),g=this.id;if(""===e.value){if("password"===e.type){if(!f.data("placeholder-textinput")){try{d=f.clone().attr({type:"text"})}catch(h){d=a("<input>").attr(a.extend(b(this),{type:"text"}))}d.removeAttr("name").data({"placeholder-password":f,"placeholder-id":g}).bind("focus.placeholder",c),f.data({"placeholder-textinput":d,"placeholder-id":g}).before(d)}f=f.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id",g).show()}f.addClass("placeholder"),f[0].value=f.attr("placeholder")}else f.removeClass("placeholder")}function e(){try{return document.activeElement}catch(a){}}var f,g,h="[object OperaMini]"==Object.prototype.toString.call(window.operamini),i="placeholder"in document.createElement("input")&&!h,j="placeholder"in document.createElement("textarea")&&!h,k=a.valHooks,l=a.propHooks;i&&j?(g=a.fn.placeholder=function(){return this},g.input=g.textarea=!0):(g=a.fn.placeholder=function(){var a=this;return a.filter((i?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":c,"blur.placeholder":d}).data("placeholder-enabled",!0).trigger("blur.placeholder"),a},g.input=i,g.textarea=j,f={get:function(b){var c=a(b),d=c.data("placeholder-password");return d?d[0].value:c.data("placeholder-enabled")&&c.hasClass("placeholder")?"":b.value},set:function(b,f){var g=a(b),h=g.data("placeholder-password");return h?h[0].value=f:g.data("placeholder-enabled")?(""===f?(b.value=f,b!=e()&&d.call(b)):g.hasClass("placeholder")?c.call(b,!0,f)||(b.value=f):b.value=f,g):b.value=f}},i||(k.input=f,l.value=f),j||(k.textarea=f,l.value=f),a(function(){a(document).delegate("form","submit.placeholder",function(){var b=a(".placeholder",this).each(c);setTimeout(function(){b.each(d)},10)})}),a(window).bind("beforeunload.placeholder",function(){a(".placeholder").each(function(){this.value=""})}))});
\ No newline at end of file
--- /dev/null
+/*! http://mths.be/placeholder v2.0.9 by @mathias */
+(function(factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD
+ define(['jquery'], factory);
+ } else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function($) {
+
+ // Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
+ var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
+ var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
+ var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
+ var valHooks = $.valHooks;
+ var propHooks = $.propHooks;
+ var hooks;
+ var placeholder;
+
+ if (isInputSupported && isTextareaSupported) {
+
+ placeholder = $.fn.placeholder = function() {
+ return this;
+ };
+
+ placeholder.input = placeholder.textarea = true;
+
+ } else {
+
+ placeholder = $.fn.placeholder = function() {
+ var $this = this;
+ $this
+ .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
+ .not('.placeholder')
+ .bind({
+ 'focus.placeholder': clearPlaceholder,
+ 'blur.placeholder': setPlaceholder
+ })
+ .data('placeholder-enabled', true)
+ .trigger('blur.placeholder');
+ return $this;
+ };
+
+ placeholder.input = isInputSupported;
+ placeholder.textarea = isTextareaSupported;
+
+ hooks = {
+ 'get': function(element) {
+ var $element = $(element);
+
+ var $passwordInput = $element.data('placeholder-password');
+ if ($passwordInput) {
+ return $passwordInput[0].value;
+ }
+
+ return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
+ },
+ 'set': function(element, value) {
+ var $element = $(element);
+
+ var $passwordInput = $element.data('placeholder-password');
+ if ($passwordInput) {
+ return $passwordInput[0].value = value;
+ }
+
+ if (!$element.data('placeholder-enabled')) {
+ return element.value = value;
+ }
+ if (value === '') {
+ element.value = value;
+ // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
+ if (element != safeActiveElement()) {
+ // We can't use `triggerHandler` here because of dummy text/password inputs :(
+ setPlaceholder.call(element);
+ }
+ } else if ($element.hasClass('placeholder')) {
+ clearPlaceholder.call(element, true, value) || (element.value = value);
+ } else {
+ element.value = value;
+ }
+ // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
+ return $element;
+ }
+ };
+
+ if (!isInputSupported) {
+ valHooks.input = hooks;
+ propHooks.value = hooks;
+ }
+ if (!isTextareaSupported) {
+ valHooks.textarea = hooks;
+ propHooks.value = hooks;
+ }
+
+ $(function() {
+ // Look for forms
+ $(document).delegate('form', 'submit.placeholder', function() {
+ // Clear the placeholder values so they don't get submitted
+ var $inputs = $('.placeholder', this).each(clearPlaceholder);
+ setTimeout(function() {
+ $inputs.each(setPlaceholder);
+ }, 10);
+ });
+ });
+
+ // Clear placeholder values upon page reload
+ $(window).bind('beforeunload.placeholder', function() {
+ $('.placeholder').each(function() {
+ this.value = '';
+ });
+ });
+
+ }
+
+ function args(elem) {
+ // Return an object of element attributes
+ var newAttrs = {};
+ var rinlinejQuery = /^jQuery\d+$/;
+ $.each(elem.attributes, function(i, attr) {
+ if (attr.specified && !rinlinejQuery.test(attr.name)) {
+ newAttrs[attr.name] = attr.value;
+ }
+ });
+ return newAttrs;
+ }
+
+ function clearPlaceholder(event, value) {
+ var input = this;
+ var $input = $(input);
+ if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
+ if ($input.data('placeholder-password')) {
+ $input = $input.hide().nextAll('input[type="password"]:first').show().attr('id', $input.removeAttr('id').data('placeholder-id'));
+ // If `clearPlaceholder` was called from `$.valHooks.input.set`
+ if (event === true) {
+ return $input[0].value = value;
+ }
+ $input.focus();
+ } else {
+ input.value = '';
+ $input.removeClass('placeholder');
+ input == safeActiveElement() && input.select();
+ }
+ }
+ }
+
+ function setPlaceholder() {
+ var $replacement;
+ var input = this;
+ var $input = $(input);
+ var id = this.id;
+ if (input.value === '') {
+ if (input.type === 'password') {
+ if (!$input.data('placeholder-textinput')) {
+ try {
+ $replacement = $input.clone().attr({ 'type': 'text' });
+ } catch(e) {
+ $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
+ }
+ $replacement
+ .removeAttr('name')
+ .data({
+ 'placeholder-password': $input,
+ 'placeholder-id': id
+ })
+ .bind('focus.placeholder', clearPlaceholder);
+ $input
+ .data({
+ 'placeholder-textinput': $replacement,
+ 'placeholder-id': id
+ })
+ .before($replacement);
+ }
+ $input = $input.removeAttr('id').hide().prevAll('input[type="text"]:first').attr('id', id).show();
+ // Note: `$input[0] != input` now!
+ }
+ $input.addClass('placeholder');
+ $input[0].value = $input.attr('placeholder');
+ } else {
+ $input.removeClass('placeholder');
+ }
+ }
+
+ function safeActiveElement() {
+ // Avoid IE9 `document.activeElement` of death
+ // https://github.com/mathiasbynens/jquery-placeholder/pull/99
+ try {
+ return document.activeElement;
+ } catch (exception) {}
+ }
+
+}));
--- /dev/null
+/*!
+ * jQuery Cookie Plugin v1.4.1
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2013 Klaus Hartl
+ * Released under the MIT license
+ */
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD
+ define(['jquery'], factory);
+ } else if (typeof exports === 'object') {
+ // CommonJS
+ factory(require('jquery'));
+ } else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function ($) {
+
+ var pluses = /\+/g;
+
+ function encode(s) {
+ return config.raw ? s : encodeURIComponent(s);
+ }
+
+ function decode(s) {
+ return config.raw ? s : decodeURIComponent(s);
+ }
+
+ function stringifyCookieValue(value) {
+ return encode(config.json ? JSON.stringify(value) : String(value));
+ }
+
+ function parseCookieValue(s) {
+ if (s.indexOf('"') === 0) {
+ // This is a quoted cookie as according to RFC2068, unescape...
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
+ }
+
+ try {
+ // Replace server-side written pluses with spaces.
+ // If we can't decode the cookie, ignore it, it's unusable.
+ // If we can't parse the cookie, ignore it, it's unusable.
+ s = decodeURIComponent(s.replace(pluses, ' '));
+ return config.json ? JSON.parse(s) : s;
+ } catch(e) {}
+ }
+
+ function read(s, converter) {
+ var value = config.raw ? s : parseCookieValue(s);
+ return $.isFunction(converter) ? converter(value) : value;
+ }
+
+ var config = $.cookie = function (key, value, options) {
+
+ // Write
+
+ if (value !== undefined && !$.isFunction(value)) {
+ options = $.extend({}, config.defaults, options);
+
+ if (typeof options.expires === 'number') {
+ var days = options.expires, t = options.expires = new Date();
+ t.setTime(+t + days * 864e+5);
+ }
+
+ return (document.cookie = [
+ encode(key), '=', stringifyCookieValue(value),
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+ options.path ? '; path=' + options.path : '',
+ options.domain ? '; domain=' + options.domain : '',
+ options.secure ? '; secure' : ''
+ ].join(''));
+ }
+
+ // Read
+
+ var result = key ? undefined : {};
+
+ // To prevent the for loop in the first place assign an empty array
+ // in case there are no cookies at all. Also prevents odd result when
+ // calling $.cookie().
+ var cookies = document.cookie ? document.cookie.split('; ') : [];
+
+ for (var i = 0, l = cookies.length; i < l; i++) {
+ var parts = cookies[i].split('=');
+ var name = decode(parts.shift());
+ var cookie = parts.join('=');
+
+ if (key && key === name) {
+ // If second argument (value) is a function it's a converter...
+ result = read(cookie, value);
+ break;
+ }
+
+ // Prevent storing a cookie that we couldn't decode.
+ if (!key && (cookie = read(cookie)) !== undefined) {
+ result[name] = cookie;
+ }
+ }
+
+ return result;
+ };
+
+ config.defaults = {};
+
+ $.removeCookie = function (key, options) {
+ if ($.cookie(key) === undefined) {
+ return false;
+ }
+
+ // Must not alter options, thus extending a fresh object...
+ $.cookie(key, '', $.extend({}, options, { expires: -1 }));
+ return !$.cookie(key);
+ };
+
+}));
--- /dev/null
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+define( [
+ "./var/arr",
+ "./var/document",
+ "./var/getProto",
+ "./var/slice",
+ "./var/concat",
+ "./var/push",
+ "./var/indexOf",
+ "./var/class2type",
+ "./var/toString",
+ "./var/hasOwn",
+ "./var/fnToString",
+ "./var/ObjectFunctionString",
+ "./var/support",
+ "./core/DOMEval"
+], function( arr, document, getProto, slice, concat, push, indexOf,
+ class2type, toString, hasOwn, fnToString, ObjectFunctionString,
+ support, DOMEval ) {
+
+"use strict";
+
+var
+ version = "3.2.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+
+ // Return all the elements in a clean array
+ if ( num == null ) {
+ return slice.call( this );
+ }
+
+ // Return just the one element from the set
+ return num < 0 ? this[ num + this.length ] : this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && Array.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // As of jQuery 3.0, isNumeric is limited to
+ // strings and numbers (primitives or objects)
+ // that can be coerced to finite numbers (gh-2662)
+ var type = jQuery.type( obj );
+ return ( type === "number" || type === "string" ) &&
+
+ // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN( obj - parseFloat( obj ) );
+ },
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+
+ /* eslint-disable no-unused-vars */
+ // See https://github.com/eslint/eslint/issues/6125
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ DOMEval( code );
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+
+return jQuery;
+} );
--- /dev/null
+/*!
+ * jQuery JavaScript Library v3.2.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2017-03-20T18:59Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+ function DOMEval( code, doc ) {
+ doc = doc || document;
+
+ var script = doc.createElement( "script" );
+
+ script.text = code;
+ doc.head.appendChild( script ).parentNode.removeChild( script );
+ }
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+ version = "3.2.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+
+ // Return all the elements in a clean array
+ if ( num == null ) {
+ return slice.call( this );
+ }
+
+ // Return just the one element from the set
+ return num < 0 ? this[ num + this.length ] : this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && Array.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // As of jQuery 3.0, isNumeric is limited to
+ // strings and numbers (primitives or objects)
+ // that can be coerced to finite numbers (gh-2662)
+ var type = jQuery.type( obj );
+ return ( type === "number" || type === "string" ) &&
+
+ // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN( obj - parseFloat( obj ) );
+ },
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+
+ /* eslint-disable no-unused-vars */
+ // See https://github.com/eslint/eslint/issues/6125
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ DOMEval( code );
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // https://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+
+ // CSS escapes
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ },
+
+ disabledAncestor = addCombinator(
+ function( elem ) {
+ return elem.disabled === true && ("form" in elem || "label" in elem);
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+ var el = document.createElement("fieldset");
+
+ try {
+ return !!fn( el );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( el.parentNode ) {
+ el.parentNode.removeChild( el );
+ }
+ // release memory in IE
+ el = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ a.sourceIndex - b.sourceIndex;
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+ return function( elem ) {
+
+ // Only certain elements can match :enabled or :disabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+ if ( "form" in elem ) {
+
+ // Check for inherited disabledness on relevant non-disabled elements:
+ // * listed form-associated elements in a disabled fieldset
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+ // * option elements in a disabled optgroup
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+ // All such elements have a "form" property.
+ if ( elem.parentNode && elem.disabled === false ) {
+
+ // Option elements defer to a parent optgroup if present
+ if ( "label" in elem ) {
+ if ( "label" in elem.parentNode ) {
+ return elem.parentNode.disabled === disabled;
+ } else {
+ return elem.disabled === disabled;
+ }
+ }
+
+ // Support: IE 6 - 11
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+ return elem.isDisabled === disabled ||
+
+ // Where there is no isDisabled, check manually
+ /* jshint -W018 */
+ elem.isDisabled !== !disabled &&
+ disabledAncestor( elem ) === disabled;
+ }
+
+ return elem.disabled === disabled;
+
+ // Try to winnow out elements that can't be disabled before trusting the disabled property.
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+ // even exist on them, let alone have a boolean value.
+ } else if ( "label" in elem ) {
+ return elem.disabled === disabled;
+ }
+
+ // Remaining elements are neither :enabled nor :disabled
+ return false;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, subWindow,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( preferredDoc !== document &&
+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+ // Support: IE 11, Edge
+ if ( subWindow.addEventListener ) {
+ subWindow.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( subWindow.attachEvent ) {
+ subWindow.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( el ) {
+ el.className = "i";
+ return !el.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( el ) {
+ el.appendChild( document.createComment("") );
+ return !el.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programmatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( el ) {
+ docElem.appendChild( el ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID filter and find
+ if ( support.getById ) {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var elem = context.getElementById( id );
+ return elem ? [ elem ] : [];
+ }
+ };
+ } else {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+
+ // Support: IE 6 - 7 only
+ // getElementById is not reliable as a find shortcut
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var node, i, elems,
+ elem = context.getElementById( id );
+
+ if ( elem ) {
+
+ // Verify the id attribute
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+
+ // Fall back on getElementsByName
+ elems = context.getElementsByName( id );
+ i = 0;
+ while ( (elem = elems[i++]) ) {
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+ }
+ }
+
+ return [];
+ }
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See https://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( el ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // https://bugs.jquery.com/ticket/12359
+ docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !el.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !el.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibling-combinator selector` fails
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( el ) {
+ el.innerHTML = "<a href='' disabled='disabled'></a>" +
+ "<select disabled='disabled'><option/></select>";
+
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ el.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( el.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Support: IE9-11+
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
+ docElem.appendChild( el ).disabled = true;
+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ el.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( el ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( el, "*" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( el, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.escape = function( sel ) {
+ return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": createDisabledPseudo( false ),
+ "disabled": createDisabledPseudo( true ),
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ skip = combinator.next,
+ key = skip || dir,
+ checkNonElements = base && key === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ return false;
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( skip && skip === elem.nodeName.toLowerCase() ) {
+ elem = elem[ dir ] || elem;
+ } else if ( (oldCache = uniqueCache[ key ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ key ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+ // Should return 1, but returns 4 (following)
+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+ el.innerHTML = "<a href='#'></a>";
+ return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+ el.innerHTML = "<input/>";
+ el.firstChild.setAttribute( "value", "" );
+ return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+ return el.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+ }
+
+ // Single element
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+ }
+
+ // Arraylike of elements (jQuery, arguments, Array)
+ if ( typeof qualifier !== "string" ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+ }
+
+ // Simple selector that can be filtered directly, removing non-Elements
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ // Complex selector, compare the two sets, removing non-Elements
+ qualifier = jQuery.filter( qualifier, elements );
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+ } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ if ( elems.length === 1 && elem.nodeType === 1 ) {
+ return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+ }
+
+ return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i, ret,
+ len = this.length,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ ret = this.pushStack( [] );
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ // Shortcut simple #id case for speed
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ if ( elem ) {
+
+ // Inject the element directly into the jQuery object
+ this[ 0 ] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ targets = typeof selectors !== "string" && jQuery( selectors );
+
+ // Positional selectors never match, since there's no _selection_ context
+ if ( !rneedsContext.test( selectors ) ) {
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( targets ?
+ targets.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ if ( nodeName( elem, "iframe" ) ) {
+ return elem.contentDocument;
+ }
+
+ // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+ // Treat the template element as a regular one in browsers that
+ // don't support it.
+ if ( nodeName( elem, "template" ) ) {
+ elem = elem.content || elem;
+ }
+
+ return jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = locked || options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( jQuery.isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory && !firing ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+function Identity( v ) {
+ return v;
+}
+function Thrower( ex ) {
+ throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+ var method;
+
+ try {
+
+ // Check for promise aspect first to privilege synchronous behavior
+ if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+ method.call( value ).done( resolve ).fail( reject );
+
+ // Other thenables
+ } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+ method.call( value, resolve, reject );
+
+ // Other non-thenables
+ } else {
+
+ // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+ // * false: [ value ].slice( 0 ) => resolve( value )
+ // * true: [ value ].slice( 1 ) => resolve()
+ resolve.apply( undefined, [ value ].slice( noValue ) );
+ }
+
+ // For Promises/A+, convert exceptions into rejections
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+ // Deferred#then to conditionally suppress rejection.
+ } catch ( value ) {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ reject.apply( undefined, [ value ] );
+ }
+}
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [ "notify", "progress", jQuery.Callbacks( "memory" ),
+ jQuery.Callbacks( "memory" ), 2 ],
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ "catch": function( fn ) {
+ return promise.then( null, fn );
+ },
+
+ // Keep pipe for back-compat
+ pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+ var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+ then: function( onFulfilled, onRejected, onProgress ) {
+ var maxDepth = 0;
+ function resolve( depth, deferred, handler, special ) {
+ return function() {
+ var that = this,
+ args = arguments,
+ mightThrow = function() {
+ var returned, then;
+
+ // Support: Promises/A+ section 2.3.3.3.3
+ // https://promisesaplus.com/#point-59
+ // Ignore double-resolution attempts
+ if ( depth < maxDepth ) {
+ return;
+ }
+
+ returned = handler.apply( that, args );
+
+ // Support: Promises/A+ section 2.3.1
+ // https://promisesaplus.com/#point-48
+ if ( returned === deferred.promise() ) {
+ throw new TypeError( "Thenable self-resolution" );
+ }
+
+ // Support: Promises/A+ sections 2.3.3.1, 3.5
+ // https://promisesaplus.com/#point-54
+ // https://promisesaplus.com/#point-75
+ // Retrieve `then` only once
+ then = returned &&
+
+ // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ ( typeof returned === "object" ||
+ typeof returned === "function" ) &&
+ returned.then;
+
+ // Handle a returned thenable
+ if ( jQuery.isFunction( then ) ) {
+
+ // Special processors (notify) just wait for resolution
+ if ( special ) {
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special )
+ );
+
+ // Normal processors (resolve) also hook into progress
+ } else {
+
+ // ...and disregard older resolution values
+ maxDepth++;
+
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special ),
+ resolve( maxDepth, deferred, Identity,
+ deferred.notifyWith )
+ );
+ }
+
+ // Handle all other returned values
+ } else {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Identity ) {
+ that = undefined;
+ args = [ returned ];
+ }
+
+ // Process the value(s)
+ // Default process is resolve
+ ( special || deferred.resolveWith )( that, args );
+ }
+ },
+
+ // Only normal processors (resolve) catch and reject exceptions
+ process = special ?
+ mightThrow :
+ function() {
+ try {
+ mightThrow();
+ } catch ( e ) {
+
+ if ( jQuery.Deferred.exceptionHook ) {
+ jQuery.Deferred.exceptionHook( e,
+ process.stackTrace );
+ }
+
+ // Support: Promises/A+ section 2.3.3.3.4.1
+ // https://promisesaplus.com/#point-61
+ // Ignore post-resolution exceptions
+ if ( depth + 1 >= maxDepth ) {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Thrower ) {
+ that = undefined;
+ args = [ e ];
+ }
+
+ deferred.rejectWith( that, args );
+ }
+ }
+ };
+
+ // Support: Promises/A+ section 2.3.3.3.1
+ // https://promisesaplus.com/#point-57
+ // Re-resolve promises immediately to dodge false rejection from
+ // subsequent errors
+ if ( depth ) {
+ process();
+ } else {
+
+ // Call an optional hook to record the stack, in case of exception
+ // since it's otherwise lost when execution goes async
+ if ( jQuery.Deferred.getStackHook ) {
+ process.stackTrace = jQuery.Deferred.getStackHook();
+ }
+ window.setTimeout( process );
+ }
+ };
+ }
+
+ return jQuery.Deferred( function( newDefer ) {
+
+ // progress_handlers.add( ... )
+ tuples[ 0 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onProgress ) ?
+ onProgress :
+ Identity,
+ newDefer.notifyWith
+ )
+ );
+
+ // fulfilled_handlers.add( ... )
+ tuples[ 1 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onFulfilled ) ?
+ onFulfilled :
+ Identity
+ )
+ );
+
+ // rejected_handlers.add( ... )
+ tuples[ 2 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onRejected ) ?
+ onRejected :
+ Thrower
+ )
+ );
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 5 ];
+
+ // promise.progress = list.add
+ // promise.done = list.add
+ // promise.fail = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(
+ function() {
+
+ // state = "resolved" (i.e., fulfilled)
+ // state = "rejected"
+ state = stateString;
+ },
+
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[ 3 - i ][ 2 ].disable,
+
+ // progress_callbacks.lock
+ tuples[ 0 ][ 2 ].lock
+ );
+ }
+
+ // progress_handlers.fire
+ // fulfilled_handlers.fire
+ // rejected_handlers.fire
+ list.add( tuple[ 3 ].fire );
+
+ // deferred.notify = function() { deferred.notifyWith(...) }
+ // deferred.resolve = function() { deferred.resolveWith(...) }
+ // deferred.reject = function() { deferred.rejectWith(...) }
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+ return this;
+ };
+
+ // deferred.notifyWith = list.fireWith
+ // deferred.resolveWith = list.fireWith
+ // deferred.rejectWith = list.fireWith
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( singleValue ) {
+ var
+
+ // count of uncompleted subordinates
+ remaining = arguments.length,
+
+ // count of unprocessed arguments
+ i = remaining,
+
+ // subordinate fulfillment data
+ resolveContexts = Array( i ),
+ resolveValues = slice.call( arguments ),
+
+ // the master Deferred
+ master = jQuery.Deferred(),
+
+ // subordinate callback factory
+ updateFunc = function( i ) {
+ return function( value ) {
+ resolveContexts[ i ] = this;
+ resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( !( --remaining ) ) {
+ master.resolveWith( resolveContexts, resolveValues );
+ }
+ };
+ };
+
+ // Single- and empty arguments are adopted like Promise.resolve
+ if ( remaining <= 1 ) {
+ adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+ !remaining );
+
+ // Use .then() to unwrap secondary thenables (cf. gh-3000)
+ if ( master.state() === "pending" ||
+ jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+ return master.then();
+ }
+ }
+
+ // Multiple arguments are aggregated like Promise.all array elements
+ while ( i-- ) {
+ adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+ }
+
+ return master.promise();
+ }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+ // Support: IE 8 - 9 only
+ // Console exists when dev tools are open, which can happen at any time
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+ }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+ window.setTimeout( function() {
+ throw error;
+ } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+ readyList
+ .then( fn )
+
+ // Wrap jQuery.readyException in a function so that the lookup
+ // happens at the time of error handling instead of callback
+ // registration.
+ .catch( function( error ) {
+ jQuery.readyException( error );
+ } );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+ }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ if ( chainable ) {
+ return elems;
+ }
+
+ // Gets
+ if ( bulk ) {
+ return fn.call( elems );
+ }
+
+ return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ cache: function( owner ) {
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ // Always use camelCase key (gh-2257)
+ if ( typeof data === "string" ) {
+ cache[ jQuery.camelCase( data ) ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+
+ // Always use camelCase key (gh-2257)
+ owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+ },
+ access: function( owner, key, value ) {
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ return this.get( owner, key );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key !== undefined ) {
+
+ // Support array or space separated string of keys
+ if ( Array.isArray( key ) ) {
+
+ // If key is an array of keys...
+ // We always set camelCase keys, so remove that.
+ key = key.map( jQuery.camelCase );
+ } else {
+ key = jQuery.camelCase( key );
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ key = key in cache ?
+ [ key ] :
+ ( key.match( rnothtmlwhite ) || [] );
+ }
+
+ i = key.length;
+
+ while ( i-- ) {
+ delete cache[ key[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <=35 - 45
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+ if ( data === "true" ) {
+ return true;
+ }
+
+ if ( data === "false" ) {
+ return false;
+ }
+
+ if ( data === "null" ) {
+ return null;
+ }
+
+ // Only convert to a number if it doesn't change the string
+ if ( data === +data + "" ) {
+ return +data;
+ }
+
+ if ( rbrace.test( data ) ) {
+ return JSON.parse( data );
+ }
+
+ return data;
+}
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = getData( data );
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE 11 only
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // The key will always be camelCased in Data
+ data = dataUser.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each( function() {
+
+ // We always store the camelCased key
+ dataUser.set( this, key, value );
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || Array.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+ // isHiddenWithinTree might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+
+ // Inline style trumps all
+ return elem.style.display === "none" ||
+ elem.style.display === "" &&
+
+ // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ jQuery.contains( elem.ownerDocument, elem ) &&
+
+ jQuery.css( elem, "display" ) === "none";
+ };
+
+var swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted,
+ scale = 1,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() {
+ return tween.cur();
+ } :
+ function() {
+ return jQuery.css( elem, prop, "" );
+ },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ do {
+
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ initialInUnit = initialInUnit / scale;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+ } while (
+ scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+ );
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+ var temp,
+ doc = elem.ownerDocument,
+ nodeName = elem.nodeName,
+ display = defaultDisplayMap[ nodeName ];
+
+ if ( display ) {
+ return display;
+ }
+
+ temp = doc.body.appendChild( doc.createElement( nodeName ) );
+ display = jQuery.css( temp, "display" );
+
+ temp.parentNode.removeChild( temp );
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+ defaultDisplayMap[ nodeName ] = display;
+
+ return display;
+}
+
+function showHide( elements, show ) {
+ var display, elem,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ // Determine new display value for elements that need to change
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ display = elem.style.display;
+ if ( show ) {
+
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+ // check is required in this first loop unless we have a nonempty display value (either
+ // inline or about-to-be-restored)
+ if ( display === "none" ) {
+ values[ index ] = dataPriv.get( elem, "display" ) || null;
+ if ( !values[ index ] ) {
+ elem.style.display = "";
+ }
+ }
+ if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+ values[ index ] = getDefaultDisplay( elem );
+ }
+ } else {
+ if ( display !== "none" ) {
+ values[ index ] = "none";
+
+ // Remember what we're overwriting
+ dataPriv.set( elem, "display", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop to avoid constant reflow
+ for ( index = 0; index < length; index++ ) {
+ if ( values[ index ] != null ) {
+ elements[ index ].style.display = values[ index ];
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend( {
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHiddenWithinTree( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE <=9 only
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting <tbody> or other required elements.
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE <=9 - 11 only
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret;
+
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ ret = context.getElementsByTagName( tag || "*" );
+
+ } else if ( typeof context.querySelectorAll !== "undefined" ) {
+ ret = context.querySelectorAll( tag || "*" );
+
+ } else {
+ ret = [];
+ }
+
+ if ( tag === undefined || tag && nodeName( context, tag ) ) {
+ return jQuery.merge( [ context ], ret );
+ }
+
+ return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0 - 4.3 only
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Android <=4.1 only
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE <=11 only
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Ensure that invalid selectors throw exceptions at attach time
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+ if ( selector ) {
+ jQuery.find.matchesSelector( documentElement, selector );
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( nativeEvent ) {
+
+ // Make a writable jQuery.Event from the native event object
+ var event = jQuery.event.fix( nativeEvent );
+
+ var i, j, ret, matched, handleObj, handlerQueue,
+ args = new Array( arguments.length ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+
+ for ( i = 1; i < arguments.length; i++ ) {
+ args[ i ] = arguments[ i ];
+ }
+
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ if ( delegateCount &&
+
+ // Support: IE <=9
+ // Black-hole SVG <use> instance trees (trac-13180)
+ cur.nodeType &&
+
+ // Support: Firefox <=42
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+ // Support: IE 11 only
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+ !( event.type === "click" && event.button >= 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+ matchedHandlers = [];
+ matchedSelectors = {};
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matchedSelectors[ sel ] === undefined ) {
+ matchedSelectors[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matchedSelectors[ sel ] ) {
+ matchedHandlers.push( handleObj );
+ }
+ }
+ if ( matchedHandlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ cur = this;
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ addProp: function( name, hook ) {
+ Object.defineProperty( jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+
+ get: jQuery.isFunction( hook ) ?
+ function() {
+ if ( this.originalEvent ) {
+ return hook( this.originalEvent );
+ }
+ } :
+ function() {
+ if ( this.originalEvent ) {
+ return this.originalEvent[ name ];
+ }
+ },
+
+ set: function( value ) {
+ Object.defineProperty( this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: value
+ } );
+ }
+ } );
+ },
+
+ fix: function( originalEvent ) {
+ return originalEvent[ jQuery.expando ] ?
+ originalEvent :
+ new jQuery.Event( originalEvent );
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android <=2.3 only
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Create target properties
+ // Support: Safari <=6 - 7 only
+ // Target should not be a text node (#504, #13143)
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
+ src.target.parentNode :
+ src.target;
+
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+
+ which: function( event ) {
+ var button = event.button;
+
+ // Add which for key events
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
+ return event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+ if ( button & 1 ) {
+ return 1;
+ }
+
+ if ( button & 2 ) {
+ return 3;
+ }
+
+ if ( button & 4 ) {
+ return 2;
+ }
+
+ return 0;
+ }
+
+ return event.which;
+ }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+
+var
+
+ /* eslint-disable max-len */
+
+ // See https://github.com/eslint/eslint/issues/3229
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+ /* eslint-enable */
+
+ // Support: IE <=10 - 11, Edge 12 - 13
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /<script|<style|<link/i,
+
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+ if ( nodeName( elem, "table" ) &&
+ nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+ return jQuery( ">tbody", elem )[ 0 ] || elem;
+ }
+
+ return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute( "type" );
+ }
+
+ return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( dataPriv.hasData( src ) ) {
+ pdataOld = dataPriv.access( src );
+ pdataCur = dataPriv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( dataUser.hasData( src ) ) {
+ udataOld = dataUser.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ dataUser.set( dest, udataCur );
+ }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = collection.length,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return collection.each( function( index ) {
+ var self = collection.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ domManip( self, args, callback, ignored );
+ } );
+ }
+
+ if ( l ) {
+ fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ // Require either new content or an interest in ignored elements to invoke the callback
+ if ( first || ignored ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item
+ // instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( collection[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !dataPriv.access( node, "globalEval" ) &&
+ jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return collection;
+}
+
+function remove( elem, selector, keepData ) {
+ var node,
+ nodes = selector ? jQuery.filter( selector, elem ) : elem,
+ i = 0;
+
+ for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+ if ( !keepData && node.nodeType === 1 ) {
+ jQuery.cleanData( getAll( node ) );
+ }
+
+ if ( node.parentNode ) {
+ if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+ setGlobalEval( getAll( node, "script" ) );
+ }
+ node.parentNode.removeChild( node );
+ }
+ }
+
+ return elem;
+}
+
+jQuery.extend( {
+ htmlPrefilter: function( html ) {
+ return html.replace( rxhtmlTag, "<$1></$2>" );
+ },
+
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+ if ( acceptData( elem ) ) {
+ if ( ( data = elem[ dataPriv.expando ] ) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataPriv.expando ] = undefined;
+ }
+ if ( elem[ dataUser.expando ] ) {
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataUser.expando ] = undefined;
+ }
+ }
+ }
+ }
+} );
+
+jQuery.fn.extend( {
+ detach: function( selector ) {
+ return remove( this, selector, true );
+ },
+
+ remove: function( selector ) {
+ return remove( this, selector );
+ },
+
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each( function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ } );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ } );
+ },
+
+ prepend: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ } );
+ },
+
+ before: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ } );
+ },
+
+ after: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ } );
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; ( elem = this[ i ] ) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ } );
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = jQuery.htmlPrefilter( value );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch ( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var ignored = [];
+
+ // Make the changes, replacing each non-ignored context element with the new content
+ return domManip( this, arguments, function( elem ) {
+ var parent = this.parentNode;
+
+ if ( jQuery.inArray( this, ignored ) < 0 ) {
+ jQuery.cleanData( getAll( this ) );
+ if ( parent ) {
+ parent.replaceChild( elem, this );
+ }
+ }
+
+ // Force callback invocation
+ }, ignored );
+ }
+} );
+
+jQuery.each( {
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // .get() because push.apply(_, arraylike) throws on ancient WebKit
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+ // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ var view = elem.ownerDocument.defaultView;
+
+ if ( !view || !view.opener ) {
+ view = window;
+ }
+
+ return view.getComputedStyle( elem );
+ };
+
+
+
+( function() {
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computeStyleTests() {
+
+ // This is a singleton, we need to execute it only once
+ if ( !div ) {
+ return;
+ }
+
+ div.style.cssText =
+ "box-sizing:border-box;" +
+ "position:relative;display:block;" +
+ "margin:auto;border:1px;padding:1px;" +
+ "top:1%;width:50%";
+ div.innerHTML = "";
+ documentElement.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div );
+ pixelPositionVal = divStyle.top !== "1%";
+
+ // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+ reliableMarginLeftVal = divStyle.marginLeft === "2px";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ // Support: Android 4.0 - 4.3 only
+ // Some styles come back with percentage values, even though they shouldn't
+ div.style.marginRight = "50%";
+ pixelMarginRightVal = divStyle.marginRight === "4px";
+
+ documentElement.removeChild( container );
+
+ // Nullify the div so it wouldn't be stored in the memory and
+ // it will also be a sign that checks already performed
+ div = null;
+ }
+
+ var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ // Finish early in limited (non-browser) environments
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE <=9 - 11 only
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+ "padding:0;margin-top:1px;position:absolute";
+ container.appendChild( div );
+
+ jQuery.extend( support, {
+ pixelPosition: function() {
+ computeStyleTests();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ computeStyleTests();
+ return boxSizingReliableVal;
+ },
+ pixelMarginRight: function() {
+ computeStyleTests();
+ return pixelMarginRightVal;
+ },
+ reliableMarginLeft: function() {
+ computeStyleTests();
+ return reliableMarginLeftVal;
+ }
+ } );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+
+ // Support: Firefox 51+
+ // Retrieving style before computed somehow
+ // fixes an issue with getting wrong values
+ // on detached elements
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // getPropertyValue is needed for:
+ // .css('filter') (IE 9 only, #12537)
+ // .css('--customProperty) (#3144)
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Android Browser returns percentage for some values,
+ // but width seems to be reliably pixels.
+ // This is against the CSSOM draft spec:
+ // https://drafts.csswg.org/cssom/#resolved-values
+ if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+
+ // Support: IE <=9 - 11 only
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return ( this.get = hookFn ).apply( this, arguments );
+ }
+ };
+}
+
+
+var
+
+ // Swappable if display is none or starts with table
+ // except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rcustomProp = /^--/,
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "Moz", "ms" ],
+ emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in emptyStyle ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in emptyStyle ) {
+ return name;
+ }
+ }
+}
+
+// Return a property mapped along what jQuery.cssProps suggests or to
+// a vendor prefixed property.
+function finalPropName( name ) {
+ var ret = jQuery.cssProps[ name ];
+ if ( !ret ) {
+ ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+ }
+ return ret;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+ // Any relative (+/-) values have already been
+ // normalized at this point
+ var matches = rcssNum.exec( value );
+ return matches ?
+
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i,
+ val = 0;
+
+ // If we already have the right measurement, avoid augmentation
+ if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+ i = 4;
+
+ // Otherwise initialize for horizontal or vertical properties
+ } else {
+ i = name === "width" ? 1 : 0;
+ }
+
+ for ( ; i < 4; i += 2 ) {
+
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with computed style
+ var valueIsBorderBox,
+ styles = getStyles( elem ),
+ val = curCSS( elem, name, styles ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test( val ) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Fall back to offsetWidth/Height when value is "auto"
+ // This happens for inline elements with no explicit setting (gh-3571)
+ if ( val === "auto" ) {
+ val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
+ }
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+jQuery.extend( {
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "animationIterationCount": true,
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ isCustomProp = rcustomProp.test( name ),
+ style = elem.style;
+
+ // Make sure that we're working with the right name. We don't
+ // want to query the value if it is a CSS custom property
+ // since they are user-defined.
+ if ( !isCustomProp ) {
+ name = finalPropName( origName );
+ }
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+ value = adjustCSS( elem, name, ret );
+
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number was passed in, add the unit (except for certain CSS properties)
+ if ( type === "number" ) {
+ value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+ }
+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !( "set" in hooks ) ||
+ ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+ if ( isCustomProp ) {
+ style.setProperty( name, value );
+ } else {
+ style[ name ] = value;
+ }
+ }
+
+ } else {
+
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks &&
+ ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name ),
+ isCustomProp = rcustomProp.test( name );
+
+ // Make sure that we're working with the right name. We don't
+ // want to modify the value if it is a CSS custom property
+ // since they are user-defined.
+ if ( !isCustomProp ) {
+ name = finalPropName( origName );
+ }
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || isFinite( num ) ? num || 0 : val;
+ }
+
+ return val;
+ }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+ // Support: Safari 8+
+ // Table columns in Safari have non-zero offsetWidth & zero
+ // getBoundingClientRect().width unless display is changed.
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+ swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ } ) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var matches,
+ styles = extra && getStyles( elem ),
+ subtract = extra && augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ );
+
+ // Convert to pixels if value adjustment is needed
+ if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+ ( matches[ 3 ] || "px" ) !== "px" ) {
+
+ elem.style[ name ] = value;
+ value = jQuery.css( elem, name );
+ }
+
+ return setPositiveNumber( elem, value, subtract );
+ }
+ };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+ function( elem, computed ) {
+ if ( computed ) {
+ return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+ elem.getBoundingClientRect().left -
+ swap( elem, { marginLeft: 0 }, function() {
+ return elem.getBoundingClientRect().left;
+ } )
+ ) + "px";
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+} );
+
+jQuery.fn.extend( {
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( Array.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ }
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || jQuery.easing._default;
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ // Use a property on the element directly when it is not a DOM element,
+ // or when there is no matching style property that exists.
+ if ( tween.elem.nodeType !== 1 ||
+ tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // Passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails.
+ // Simple values such as "10px" are parsed to Float;
+ // complex values such as "rotate(1rad)" are returned as-is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+
+ // Use step hook for back compat.
+ // Use cssHook if its there.
+ // Use .style if available and use plain properties where available.
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.nodeType === 1 &&
+ ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+ jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ },
+ _default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+ fxNow, inProgress,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rrun = /queueHooks$/;
+
+function schedule() {
+ if ( inProgress ) {
+ if ( document.hidden === false && window.requestAnimationFrame ) {
+ window.requestAnimationFrame( schedule );
+ } else {
+ window.setTimeout( schedule, jQuery.fx.interval );
+ }
+
+ jQuery.fx.tick();
+ }
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ window.setTimeout( function() {
+ fxNow = undefined;
+ } );
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // If we include width, step value is 1 to do all cssExpand values,
+ // otherwise step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+ // We're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+ isBox = "width" in props || "height" in props,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHiddenWithinTree( elem ),
+ dataShow = dataPriv.get( elem, "fxshow" );
+
+ // Queue-skipping animations hijack the fx hooks
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always( function() {
+
+ // Ensure the complete handler is called before this completes
+ anim.always( function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ } );
+ } );
+ }
+
+ // Detect show/hide animations
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.test( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // Pretend to be hidden if this is a "show" and
+ // there is still data from a stopped show/hide
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+
+ // Ignore all other no-op show/hide data
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ // Bail out if this is a no-op like .hide().hide()
+ propTween = !jQuery.isEmptyObject( props );
+ if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+ return;
+ }
+
+ // Restrict "overflow" and "display" styles during box animations
+ if ( isBox && elem.nodeType === 1 ) {
+
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Record all 3 overflow attributes because IE does not infer the shorthand
+ // from identically-valued overflowX and overflowY
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Identify a display type, preferring old show/hide data over the CSS cascade
+ restoreDisplay = dataShow && dataShow.display;
+ if ( restoreDisplay == null ) {
+ restoreDisplay = dataPriv.get( elem, "display" );
+ }
+ display = jQuery.css( elem, "display" );
+ if ( display === "none" ) {
+ if ( restoreDisplay ) {
+ display = restoreDisplay;
+ } else {
+
+ // Get nonempty value(s) by temporarily forcing visibility
+ showHide( [ elem ], true );
+ restoreDisplay = elem.style.display || restoreDisplay;
+ display = jQuery.css( elem, "display" );
+ showHide( [ elem ] );
+ }
+ }
+
+ // Animate inline elements as inline-block
+ if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+ if ( jQuery.css( elem, "float" ) === "none" ) {
+
+ // Restore the original display value at the end of pure show/hide animations
+ if ( !propTween ) {
+ anim.done( function() {
+ style.display = restoreDisplay;
+ } );
+ if ( restoreDisplay == null ) {
+ display = style.display;
+ restoreDisplay = display === "none" ? "" : display;
+ }
+ }
+ style.display = "inline-block";
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always( function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ } );
+ }
+
+ // Implement show/hide animations
+ propTween = false;
+ for ( prop in orig ) {
+
+ // General show/hide setup for this element animation
+ if ( !propTween ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+ }
+
+ // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+
+ // Show elements before animating them
+ if ( hidden ) {
+ showHide( [ elem ], true );
+ }
+
+ /* eslint-disable no-loop-func */
+
+ anim.done( function() {
+
+ /* eslint-enable no-loop-func */
+
+ // The final step of a "hide" animation is actually hiding the element
+ if ( !hidden ) {
+ showHide( [ elem ] );
+ }
+ dataPriv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ } );
+ }
+
+ // Per-property setup
+ propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = propTween.start;
+ if ( hidden ) {
+ propTween.end = propTween.start;
+ propTween.start = 0;
+ }
+ }
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( Array.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // Not quite $.extend, this won't overwrite existing keys.
+ // Reusing 'index' because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = Animation.prefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+
+ // Don't match elem in the :animated selector
+ delete tick.elem;
+ } ),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+ // Support: Android 2.3 only
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+ // If there's more to do, yield
+ if ( percent < 1 && length ) {
+ return remaining;
+ }
+
+ // If this was an empty animation, synthesize a final progress notification
+ if ( !length ) {
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
+ }
+
+ // Resolve the animation and report its conclusion
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ },
+ animation = deferred.promise( {
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, {
+ specialEasing: {},
+ easing: jQuery.easing._default
+ }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+
+ // If we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // Resolve when we played the last frame; otherwise, reject
+ if ( gotoEnd ) {
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ } ),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length; index++ ) {
+ result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ if ( jQuery.isFunction( result.stop ) ) {
+ jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+ jQuery.proxy( result.stop, result );
+ }
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ // Attach callbacks from options
+ animation
+ .progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ } )
+ );
+
+ return animation;
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweeners: {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value );
+ adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+ return tween;
+ } ]
+ },
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.match( rnothtmlwhite );
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length; index++ ) {
+ prop = props[ index ];
+ Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+ Animation.tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilters: [ defaultPrefilter ],
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ Animation.prefilters.unshift( callback );
+ } else {
+ Animation.prefilters.push( callback );
+ }
+ }
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ // Go to the end state if fx are off
+ if ( jQuery.fx.off ) {
+ opt.duration = 0;
+
+ } else {
+ if ( typeof opt.duration !== "number" ) {
+ if ( opt.duration in jQuery.fx.speeds ) {
+ opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+ } else {
+ opt.duration = jQuery.fx.speeds._default;
+ }
+ }
+ }
+
+ // Normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend( {
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // Show any hidden elements after setting opacity to 0
+ return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+ // Animate to the value specified
+ .end().animate( { opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || dataPriv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each( function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = dataPriv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this &&
+ ( type == null || timers[ index ].queue === type ) ) {
+
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Start the next in the queue if the last step wasn't forced.
+ // Timers currently will call their complete callbacks, which
+ // will dequeue but only if they were gotoEnd.
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each( function() {
+ var index,
+ data = dataPriv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // Enable finishing flag on private data
+ data.finish = true;
+
+ // Empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // Look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // Turn off finishing flag
+ delete data.finish;
+ } );
+ }
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+ slideDown: genFx( "show" ),
+ slideUp: genFx( "hide" ),
+ slideToggle: genFx( "toggle" ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+
+ // Run the timer and safely remove it when done (allowing for external removal)
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ jQuery.fx.start();
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+ if ( inProgress ) {
+ return;
+ }
+
+ inProgress = true;
+ schedule();
+};
+
+jQuery.fx.stop = function() {
+ inProgress = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+
+ // Default speed
+ _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = window.setTimeout( next, time );
+ hooks.stop = function() {
+ window.clearTimeout( timeout );
+ };
+ } );
+};
+
+
+( function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: Android <=4.3 only
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE <=11 only
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: IE <=11 only
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each( function() {
+ jQuery.removeAttr( this, name );
+ } );
+ }
+} );
+
+jQuery.extend( {
+ attr: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set attributes on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // Attribute hooks are determined by the lowercase version
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+ }
+
+ if ( value !== undefined ) {
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+ }
+
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ? undefined : ret;
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name,
+ i = 0,
+
+ // Attribute names can contain non-HTML whitespace characters
+ // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+ attrNames = value && value.match( rnothtmlwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( ( name = attrNames[ i++ ] ) ) {
+ elem.removeAttribute( name );
+ }
+ }
+ }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle,
+ lowercaseName = name.toLowerCase();
+
+ if ( !isXML ) {
+
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ lowercaseName ];
+ attrHandle[ lowercaseName ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ lowercaseName :
+ null;
+ attrHandle[ lowercaseName ] = handle;
+ }
+ return ret;
+ };
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+ rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each( function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ } );
+ }
+} );
+
+jQuery.extend( {
+ prop: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ return ( elem[ name ] = value );
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ return elem[ name ];
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+
+ // Support: IE <=9 - 11 only
+ // elem.tabIndex doesn't always return the
+ // correct value when it hasn't been explicitly set
+ // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ if ( tabindex ) {
+ return parseInt( tabindex, 10 );
+ }
+
+ if (
+ rfocusable.test( elem.nodeName ) ||
+ rclickable.test( elem.nodeName ) &&
+ elem.href
+ ) {
+ return 0;
+ }
+
+ return -1;
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+
+ /* eslint no-unused-expressions: "off" */
+
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ },
+ set: function( elem ) {
+
+ /* eslint no-unused-expressions: "off" */
+
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ };
+}
+
+jQuery.each( [
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+ // Strip and collapse whitespace according to HTML spec
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+ function stripAndCollapse( value ) {
+ var tokens = value.match( rnothtmlwhite ) || [];
+ return tokens.join( " " );
+ }
+
+
+function getClass( elem ) {
+ return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+ addClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnothtmlwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = stripAndCollapse( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( !arguments.length ) {
+ return this.attr( "class", "" );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnothtmlwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = stripAndCollapse( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).toggleClass(
+ value.call( this, i, getClass( this ), stateVal ),
+ stateVal
+ );
+ } );
+ }
+
+ return this.each( function() {
+ var className, i, self, classNames;
+
+ if ( type === "string" ) {
+
+ // Toggle individual class names
+ i = 0;
+ self = jQuery( this );
+ classNames = value.match( rnothtmlwhite ) || [];
+
+ while ( ( className = classNames[ i++ ] ) ) {
+
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( value === undefined || type === "boolean" ) {
+ className = getClass( this );
+ if ( className ) {
+
+ // Store className if set
+ dataPriv.set( this, "__className__", className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ if ( this.setAttribute ) {
+ this.setAttribute( "class",
+ className || value === false ?
+ "" :
+ dataPriv.get( this, "__className__" ) || ""
+ );
+ }
+ }
+ } );
+ },
+
+ hasClass: function( selector ) {
+ var className, elem,
+ i = 0;
+
+ className = " " + selector + " ";
+ while ( ( elem = this[ i++ ] ) ) {
+ if ( elem.nodeType === 1 &&
+ ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[ 0 ];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] ||
+ jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks &&
+ "get" in hooks &&
+ ( ret = hooks.get( elem, "value" ) ) !== undefined
+ ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ // Handle most common string cases
+ if ( typeof ret === "string" ) {
+ return ret.replace( rreturn, "" );
+ }
+
+ // Handle cases where value is null/undef or number
+ return ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each( function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( Array.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ } );
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ } );
+ }
+} );
+
+jQuery.extend( {
+ valHooks: {
+ option: {
+ get: function( elem ) {
+
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+
+ // Support: IE <=10 - 11 only
+ // option.text throws exceptions (#14686, #14858)
+ // Strip and collapse whitespace
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+ stripAndCollapse( jQuery.text( elem ) );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option, i,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one",
+ values = one ? null : [],
+ max = one ? index + 1 : options.length;
+
+ if ( index < 0 ) {
+ i = max;
+
+ } else {
+ i = one ? index : 0;
+ }
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Support: IE <=9 only
+ // IE8-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+
+ // Don't return options that are disabled or in a disabled optgroup
+ !option.disabled &&
+ ( !option.parentNode.disabled ||
+ !nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+
+ /* eslint-disable no-cond-assign */
+
+ if ( option.selected =
+ jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+ ) {
+ optionSet = true;
+ }
+
+ /* eslint-enable no-cond-assign */
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( Array.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+ };
+ }
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "." ) > -1 ) {
+
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split( "." );
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join( "." );
+ event.rnamespace = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === ( elem.ownerDocument || document ) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+ dataPriv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( ( !special._default ||
+ special._default.apply( eventPath.pop(), data ) === false ) &&
+ acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ // Piggyback on a donor event to simulate a different one
+ // Used only for `focus(in | out)` events
+ simulate: function( type, elem, event ) {
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true
+ }
+ );
+
+ jQuery.event.trigger( e, null, elem );
+ }
+
+} );
+
+jQuery.fn.extend( {
+
+ trigger: function( type, data ) {
+ return this.each( function() {
+ jQuery.event.trigger( type, data, this );
+ } );
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[ 0 ];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+ function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+} );
+
+jQuery.fn.extend( {
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+ jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ dataPriv.remove( doc, fix );
+
+ } else {
+ dataPriv.access( doc, fix, attaches );
+ }
+ }
+ };
+ } );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE 9 - 11 only
+ // IE throws on parseFromString with invalid input.
+ try {
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+
+var
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( Array.isArray( obj ) ) {
+
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams(
+ prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+ v,
+ traditional,
+ add
+ );
+ }
+ } );
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, valueOrFunction ) {
+
+ // If value is a function, invoke it and use its return value
+ var value = jQuery.isFunction( valueOrFunction ) ?
+ valueOrFunction() :
+ valueOrFunction;
+
+ s[ s.length ] = encodeURIComponent( key ) + "=" +
+ encodeURIComponent( value == null ? "" : value );
+ };
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ } );
+
+ } else {
+
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map( function() {
+
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ } )
+ .filter( function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ } )
+ .map( function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ if ( val == null ) {
+ return null;
+ }
+
+ if ( Array.isArray( val ) ) {
+ return jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } );
+ }
+
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ).get();
+ }
+} );
+
+
+var
+ r20 = /%20/g,
+ rhash = /#.*$/,
+ rantiCache = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat( "*" ),
+
+ // Anchor tag for parsing the document origin
+ originAnchor = document.createElement( "a" );
+ originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+
+ // For each dataType in the dataTypeExpression
+ while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+ // Prepend if requested
+ if ( dataType[ 0 ] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+ // Otherwise append
+ } else {
+ ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" &&
+ !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ } );
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s.throws ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return {
+ state: "parsererror",
+ error: conv ? e : "No conversion from " + prev + " to " + current
+ };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: location.href,
+ type: "GET",
+ isLocal: rlocalProtocol.test( location.protocol ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /\bxml\b/,
+ html: /\bhtml/,
+ json: /\bjson\b/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": JSON.parse,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+
+ // URL without anti-cache param
+ cacheURL,
+
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+
+ // timeout handle
+ timeoutTimer,
+
+ // Url cleanup var
+ urlAnchor,
+
+ // Request state (becomes false upon send and true upon completion)
+ completed,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ // Loop variable
+ i,
+
+ // uncached part of the url
+ uncached,
+
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+
+ // Callbacks context
+ callbackContext = s.context || s,
+
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context &&
+ ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+
+ // Default abort message
+ strAbort = "canceled",
+
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( completed ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return completed ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( completed == null ) {
+ name = requestHeadersNames[ name.toLowerCase() ] =
+ requestHeadersNames[ name.toLowerCase() ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( completed == null ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( completed ) {
+
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ } else {
+
+ // Lazy-add the new callbacks in a way that preserves old ones
+ for ( code in map ) {
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || location.href ) + "" )
+ .replace( rprotocol, location.protocol + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+ // A cross-domain request is in order when the origin doesn't match the current origin.
+ if ( s.crossDomain == null ) {
+ urlAnchor = document.createElement( "a" );
+
+ // Support: IE <=8 - 11, Edge 12 - 13
+ // IE throws exception on accessing the href property if url is malformed,
+ // e.g. http://example.com:80x/
+ try {
+ urlAnchor.href = s.url;
+
+ // Support: IE <=8 - 11 only
+ // Anchor's host property isn't correctly set when s.url is relative
+ urlAnchor.href = urlAnchor.href;
+ s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+ urlAnchor.protocol + "//" + urlAnchor.host;
+ } catch ( e ) {
+
+ // If there is an error parsing the URL, assume it is crossDomain,
+ // it can be rejected by the transport if it is invalid
+ s.crossDomain = true;
+ }
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( completed ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ // Remove hash to simplify url manipulation
+ cacheURL = s.url.replace( rhash, "" );
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // Remember the hash so we can put it back
+ uncached = s.url.slice( cacheURL.length );
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add or update anti-cache param if needed
+ if ( s.cache === false ) {
+ cacheURL = cacheURL.replace( rantiCache, "$1" );
+ uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+ }
+
+ // Put hash and anti-cache on the URL that will be requested (gh-1732)
+ s.url = cacheURL + uncached;
+
+ // Change '%20' to '+' if this is encoded form body content (gh-2658)
+ } else if ( s.data && s.processData &&
+ ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+ s.data = s.data.replace( r20, "+" );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+ s.accepts[ s.dataTypes[ 0 ] ] +
+ ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend &&
+ ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // Aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ completeDeferred.add( s.complete );
+ jqXHR.done( s.success );
+ jqXHR.fail( s.error );
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+
+ // If request was aborted inside ajaxSend, stop there
+ if ( completed ) {
+ return jqXHR;
+ }
+
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = window.setTimeout( function() {
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ completed = false;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+
+ // Rethrow post-completion exceptions
+ if ( completed ) {
+ throw e;
+ }
+
+ // Propagate others as results
+ done( -1, e );
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Ignore repeat invocations
+ if ( completed ) {
+ return;
+ }
+
+ completed = true;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ window.clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader( "Last-Modified" );
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader( "etag" );
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+
+ // Extract error from statusText and normalize for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+
+ // Shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ // The url can be an options object (which then must have .url)
+ return jQuery.ajax( jQuery.extend( {
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ }, jQuery.isPlainObject( url ) && url ) );
+ };
+} );
+
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax( {
+ url: url,
+
+ // Make this explicit, since user can override this through ajaxSetup (#11264)
+ type: "GET",
+ dataType: "script",
+ cache: true,
+ async: false,
+ global: false,
+ "throws": true
+ } );
+};
+
+
+jQuery.fn.extend( {
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( this[ 0 ] ) {
+ if ( jQuery.isFunction( html ) ) {
+ html = html.call( this[ 0 ] );
+ }
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map( function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ } ).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).wrapInner( html.call( this, i ) );
+ } );
+ }
+
+ return this.each( function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ } );
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each( function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+ } );
+ },
+
+ unwrap: function( selector ) {
+ this.parent( selector ).not( "body" ).each( function() {
+ jQuery( this ).replaceWith( this.childNodes );
+ } );
+ return this;
+ }
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+ return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+ return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+ // File protocol always yields status code 0, assume 200
+ 0: 200,
+
+ // Support: IE <=9 only
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+ var callback, errorCallback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr();
+
+ xhr.open(
+ options.type,
+ options.url,
+ options.async,
+ options.username,
+ options.password
+ );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ callback = errorCallback = xhr.onload =
+ xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+
+ // Support: IE <=9 only
+ // On a manual native abort, IE9 throws
+ // errors on any property access that is not readyState
+ if ( typeof xhr.status !== "number" ) {
+ complete( 0, "error" );
+ } else {
+ complete(
+
+ // File: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ }
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+
+ // Support: IE <=9 only
+ // IE9 has no XHR2 but throws on binary (trac-11426)
+ // For XHR2 non-text, let the caller handle it (gh-2498)
+ ( xhr.responseType || "text" ) !== "text" ||
+ typeof xhr.responseText !== "string" ?
+ { binary: xhr.response } :
+ { text: xhr.responseText },
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ errorCallback = xhr.onerror = callback( "error" );
+
+ // Support: IE 9 only
+ // Use onreadystatechange to replace onabort
+ // to handle uncaught aborts
+ if ( xhr.onabort !== undefined ) {
+ xhr.onabort = errorCallback;
+ } else {
+ xhr.onreadystatechange = function() {
+
+ // Check readyState before timeout as it changes
+ if ( xhr.readyState === 4 ) {
+
+ // Allow onerror to be called first,
+ // but that will not handle a native abort
+ // Also, save errorCallback to a variable
+ // as xhr.onerror cannot be accessed
+ window.setTimeout( function() {
+ if ( callback ) {
+ errorCallback();
+ }
+ } );
+ }
+ };
+ }
+
+ // Create the abort callback
+ callback = callback( "abort" );
+
+ try {
+
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+ if ( s.crossDomain ) {
+ s.contents.script = false;
+ }
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+ accepts: {
+ script: "text/javascript, application/javascript, " +
+ "application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /\b(?:java|ecma)script\b/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery( "<script>" ).prop( {
+ charset: s.scriptCharset,
+ src: s.url
+ } ).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" &&
+ ( s.contentType || "" )
+ .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+ rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters[ "script json" ] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // Force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always( function() {
+
+ // If previous value didn't exist - remove it
+ if ( overwritten === undefined ) {
+ jQuery( window ).removeProp( callbackName );
+
+ // Otherwise restore preexisting value
+ } else {
+ window[ callbackName ] = overwritten;
+ }
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+
+ // Make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // Save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ } );
+
+ // Delegate to script
+ return "script";
+ }
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+ var body = document.implementation.createHTMLDocument( "" ).body;
+ body.innerHTML = "<form></form><form></form>";
+ return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( typeof data !== "string" ) {
+ return [];
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+
+ var base, parsed, scripts;
+
+ if ( !context ) {
+
+ // Stop scripts or inline event handlers from being executed immediately
+ // by using document.implementation
+ if ( support.createHTMLDocument ) {
+ context = document.implementation.createHTMLDocument( "" );
+
+ // Set the base href for the created document
+ // so any parsed elements with URLs
+ // are based on the document's URL (gh-2965)
+ base = context.createElement( "base" );
+ base.href = document.location.href;
+ context.head.appendChild( base );
+ } else {
+ context = document;
+ }
+ }
+
+ parsed = rsingleTag.exec( data );
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[ 1 ] ) ];
+ }
+
+ parsed = buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ var selector, type, response,
+ self = this,
+ off = url.indexOf( " " );
+
+ if ( off > -1 ) {
+ selector = stripAndCollapse( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax( {
+ url: url,
+
+ // If "type" variable is undefined, then "GET" method will be used.
+ // Make value of this field explicit since
+ // user can override it through ajaxSetup method
+ type: type || "GET",
+ dataType: "html",
+ data: params
+ } ).done( function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ // If the request succeeds, this function gets "data", "status", "jqXHR"
+ // but they are ignored because response was set above.
+ // If it fails, this function gets "jqXHR", "status", "error"
+ } ).always( callback && function( jqXHR, status ) {
+ self.each( function() {
+ callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+ } );
+ } );
+ }
+
+ return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+ "ajaxStart",
+ "ajaxStop",
+ "ajaxComplete",
+ "ajaxError",
+ "ajaxSuccess",
+ "ajaxSend"
+], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+ return jQuery.grep( jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ } ).length;
+};
+
+
+
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+
+ // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+ options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend( {
+ offset: function( options ) {
+
+ // Preserve chaining for setter
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each( function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ } );
+ }
+
+ var doc, docElem, rect, win,
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return;
+ }
+
+ // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a
+ // disconnected node in IE throws an error
+ if ( !elem.getClientRects().length ) {
+ return { top: 0, left: 0 };
+ }
+
+ rect = elem.getBoundingClientRect();
+
+ doc = elem.ownerDocument;
+ docElem = doc.documentElement;
+ win = doc.defaultView;
+
+ return {
+ top: rect.top + win.pageYOffset - docElem.clientTop,
+ left: rect.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+ // because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset = {
+ top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+ left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+ };
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ // This method will return documentElement in the following cases:
+ // 1) For the element inside the iframe without offsetParent, this method will return
+ // documentElement of the parent window
+ // 2) For the hidden or detached element
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
+ //
+ // but those exceptions were never presented as a real life use-cases
+ // and might be considered as more preferable results.
+ //
+ // This logic, however, is not guaranteed and can change at any point in the future
+ offsetParent: function() {
+ return this.map( function() {
+ var offsetParent = this.offsetParent;
+
+ while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || documentElement;
+ } );
+ }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+
+ // Coalesce documents and windows
+ var win;
+ if ( jQuery.isWindow( elem ) ) {
+ win = elem;
+ } else if ( elem.nodeType === 9 ) {
+ win = elem.defaultView;
+ }
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : win.pageXOffset,
+ top ? val : win.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length );
+ };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+ function( defaultExtra, funcName ) {
+
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+
+ // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+ return funcName.indexOf( "outer" ) === 0 ?
+ elem[ "inner" + name ] :
+ elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable );
+ };
+ } );
+} );
+
+
+jQuery.fn.extend( {
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ?
+ this.off( selector, "**" ) :
+ this.off( types, selector || "**", fn );
+ }
+} );
+
+jQuery.holdReady = function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ } );
+}
+
+
+
+
+var
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+} );
--- /dev/null
+/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
+a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),
+null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});
--- /dev/null
+{"version":3,"sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","DOMEval","code","doc","script","createElement","text","head","appendChild","parentNode","removeChild","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","isWindow","isNumeric","isNaN","parseFloat","proto","Ctor","isEmptyObject","globalEval","camelCase","string","isArrayLike","trim","makeArray","results","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","nodeType","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","targets","l","closest","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","width","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","rcustomProp","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","finalPropName","cssProps","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","float","origName","isCustomProp","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prefix","suffix","expand","expanded","parts","Tween","easing","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","defaultPrefilter","opts","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","complete","timer","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","parseInt","for","class","stripAndCollapse","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","hover","fnOver","fnOut","focusin","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","offsetWidth","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","holdReady","hold","parseJSON","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.min.js"}
\ No newline at end of file
--- /dev/null
+/*!
+ * jQuery JavaScript Library v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2017-03-20T19:00Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+ function DOMEval( code, doc ) {
+ doc = doc || document;
+
+ var script = doc.createElement( "script" );
+
+ script.text = code;
+ doc.head.appendChild( script ).parentNode.removeChild( script );
+ }
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+ version = "3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+
+ // Return all the elements in a clean array
+ if ( num == null ) {
+ return slice.call( this );
+ }
+
+ // Return just the one element from the set
+ return num < 0 ? this[ num + this.length ] : this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && Array.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // As of jQuery 3.0, isNumeric is limited to
+ // strings and numbers (primitives or objects)
+ // that can be coerced to finite numbers (gh-2662)
+ var type = jQuery.type( obj );
+ return ( type === "number" || type === "string" ) &&
+
+ // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN( obj - parseFloat( obj ) );
+ },
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+
+ /* eslint-disable no-unused-vars */
+ // See https://github.com/eslint/eslint/issues/6125
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ DOMEval( code );
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // https://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+
+ // CSS escapes
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ },
+
+ disabledAncestor = addCombinator(
+ function( elem ) {
+ return elem.disabled === true && ("form" in elem || "label" in elem);
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+ var el = document.createElement("fieldset");
+
+ try {
+ return !!fn( el );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( el.parentNode ) {
+ el.parentNode.removeChild( el );
+ }
+ // release memory in IE
+ el = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ a.sourceIndex - b.sourceIndex;
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+ return function( elem ) {
+
+ // Only certain elements can match :enabled or :disabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+ if ( "form" in elem ) {
+
+ // Check for inherited disabledness on relevant non-disabled elements:
+ // * listed form-associated elements in a disabled fieldset
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+ // * option elements in a disabled optgroup
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+ // All such elements have a "form" property.
+ if ( elem.parentNode && elem.disabled === false ) {
+
+ // Option elements defer to a parent optgroup if present
+ if ( "label" in elem ) {
+ if ( "label" in elem.parentNode ) {
+ return elem.parentNode.disabled === disabled;
+ } else {
+ return elem.disabled === disabled;
+ }
+ }
+
+ // Support: IE 6 - 11
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+ return elem.isDisabled === disabled ||
+
+ // Where there is no isDisabled, check manually
+ /* jshint -W018 */
+ elem.isDisabled !== !disabled &&
+ disabledAncestor( elem ) === disabled;
+ }
+
+ return elem.disabled === disabled;
+
+ // Try to winnow out elements that can't be disabled before trusting the disabled property.
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+ // even exist on them, let alone have a boolean value.
+ } else if ( "label" in elem ) {
+ return elem.disabled === disabled;
+ }
+
+ // Remaining elements are neither :enabled nor :disabled
+ return false;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, subWindow,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( preferredDoc !== document &&
+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+ // Support: IE 11, Edge
+ if ( subWindow.addEventListener ) {
+ subWindow.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( subWindow.attachEvent ) {
+ subWindow.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( el ) {
+ el.className = "i";
+ return !el.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( el ) {
+ el.appendChild( document.createComment("") );
+ return !el.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programmatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( el ) {
+ docElem.appendChild( el ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID filter and find
+ if ( support.getById ) {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var elem = context.getElementById( id );
+ return elem ? [ elem ] : [];
+ }
+ };
+ } else {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+
+ // Support: IE 6 - 7 only
+ // getElementById is not reliable as a find shortcut
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var node, i, elems,
+ elem = context.getElementById( id );
+
+ if ( elem ) {
+
+ // Verify the id attribute
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+
+ // Fall back on getElementsByName
+ elems = context.getElementsByName( id );
+ i = 0;
+ while ( (elem = elems[i++]) ) {
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+ }
+ }
+
+ return [];
+ }
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See https://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( el ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // https://bugs.jquery.com/ticket/12359
+ docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !el.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !el.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibling-combinator selector` fails
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( el ) {
+ el.innerHTML = "<a href='' disabled='disabled'></a>" +
+ "<select disabled='disabled'><option/></select>";
+
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ el.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( el.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Support: IE9-11+
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
+ docElem.appendChild( el ).disabled = true;
+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ el.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( el ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( el, "*" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( el, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.escape = function( sel ) {
+ return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": createDisabledPseudo( false ),
+ "disabled": createDisabledPseudo( true ),
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ skip = combinator.next,
+ key = skip || dir,
+ checkNonElements = base && key === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ return false;
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( skip && skip === elem.nodeName.toLowerCase() ) {
+ elem = elem[ dir ] || elem;
+ } else if ( (oldCache = uniqueCache[ key ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ key ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+ // Should return 1, but returns 4 (following)
+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+ el.innerHTML = "<a href='#'></a>";
+ return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+ el.innerHTML = "<input/>";
+ el.firstChild.setAttribute( "value", "" );
+ return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+ return el.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+ }
+
+ // Single element
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+ }
+
+ // Arraylike of elements (jQuery, arguments, Array)
+ if ( typeof qualifier !== "string" ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+ }
+
+ // Simple selector that can be filtered directly, removing non-Elements
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ // Complex selector, compare the two sets, removing non-Elements
+ qualifier = jQuery.filter( qualifier, elements );
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+ } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ if ( elems.length === 1 && elem.nodeType === 1 ) {
+ return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+ }
+
+ return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i, ret,
+ len = this.length,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ ret = this.pushStack( [] );
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ // Shortcut simple #id case for speed
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ if ( elem ) {
+
+ // Inject the element directly into the jQuery object
+ this[ 0 ] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ targets = typeof selectors !== "string" && jQuery( selectors );
+
+ // Positional selectors never match, since there's no _selection_ context
+ if ( !rneedsContext.test( selectors ) ) {
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( targets ?
+ targets.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ if ( nodeName( elem, "iframe" ) ) {
+ return elem.contentDocument;
+ }
+
+ // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+ // Treat the template element as a regular one in browsers that
+ // don't support it.
+ if ( nodeName( elem, "template" ) ) {
+ elem = elem.content || elem;
+ }
+
+ return jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = locked || options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( jQuery.isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory && !firing ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+function Identity( v ) {
+ return v;
+}
+function Thrower( ex ) {
+ throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+ var method;
+
+ try {
+
+ // Check for promise aspect first to privilege synchronous behavior
+ if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+ method.call( value ).done( resolve ).fail( reject );
+
+ // Other thenables
+ } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+ method.call( value, resolve, reject );
+
+ // Other non-thenables
+ } else {
+
+ // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+ // * false: [ value ].slice( 0 ) => resolve( value )
+ // * true: [ value ].slice( 1 ) => resolve()
+ resolve.apply( undefined, [ value ].slice( noValue ) );
+ }
+
+ // For Promises/A+, convert exceptions into rejections
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+ // Deferred#then to conditionally suppress rejection.
+ } catch ( value ) {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ reject.apply( undefined, [ value ] );
+ }
+}
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [ "notify", "progress", jQuery.Callbacks( "memory" ),
+ jQuery.Callbacks( "memory" ), 2 ],
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ "catch": function( fn ) {
+ return promise.then( null, fn );
+ },
+
+ // Keep pipe for back-compat
+ pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+ var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+ then: function( onFulfilled, onRejected, onProgress ) {
+ var maxDepth = 0;
+ function resolve( depth, deferred, handler, special ) {
+ return function() {
+ var that = this,
+ args = arguments,
+ mightThrow = function() {
+ var returned, then;
+
+ // Support: Promises/A+ section 2.3.3.3.3
+ // https://promisesaplus.com/#point-59
+ // Ignore double-resolution attempts
+ if ( depth < maxDepth ) {
+ return;
+ }
+
+ returned = handler.apply( that, args );
+
+ // Support: Promises/A+ section 2.3.1
+ // https://promisesaplus.com/#point-48
+ if ( returned === deferred.promise() ) {
+ throw new TypeError( "Thenable self-resolution" );
+ }
+
+ // Support: Promises/A+ sections 2.3.3.1, 3.5
+ // https://promisesaplus.com/#point-54
+ // https://promisesaplus.com/#point-75
+ // Retrieve `then` only once
+ then = returned &&
+
+ // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ ( typeof returned === "object" ||
+ typeof returned === "function" ) &&
+ returned.then;
+
+ // Handle a returned thenable
+ if ( jQuery.isFunction( then ) ) {
+
+ // Special processors (notify) just wait for resolution
+ if ( special ) {
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special )
+ );
+
+ // Normal processors (resolve) also hook into progress
+ } else {
+
+ // ...and disregard older resolution values
+ maxDepth++;
+
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special ),
+ resolve( maxDepth, deferred, Identity,
+ deferred.notifyWith )
+ );
+ }
+
+ // Handle all other returned values
+ } else {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Identity ) {
+ that = undefined;
+ args = [ returned ];
+ }
+
+ // Process the value(s)
+ // Default process is resolve
+ ( special || deferred.resolveWith )( that, args );
+ }
+ },
+
+ // Only normal processors (resolve) catch and reject exceptions
+ process = special ?
+ mightThrow :
+ function() {
+ try {
+ mightThrow();
+ } catch ( e ) {
+
+ if ( jQuery.Deferred.exceptionHook ) {
+ jQuery.Deferred.exceptionHook( e,
+ process.stackTrace );
+ }
+
+ // Support: Promises/A+ section 2.3.3.3.4.1
+ // https://promisesaplus.com/#point-61
+ // Ignore post-resolution exceptions
+ if ( depth + 1 >= maxDepth ) {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Thrower ) {
+ that = undefined;
+ args = [ e ];
+ }
+
+ deferred.rejectWith( that, args );
+ }
+ }
+ };
+
+ // Support: Promises/A+ section 2.3.3.3.1
+ // https://promisesaplus.com/#point-57
+ // Re-resolve promises immediately to dodge false rejection from
+ // subsequent errors
+ if ( depth ) {
+ process();
+ } else {
+
+ // Call an optional hook to record the stack, in case of exception
+ // since it's otherwise lost when execution goes async
+ if ( jQuery.Deferred.getStackHook ) {
+ process.stackTrace = jQuery.Deferred.getStackHook();
+ }
+ window.setTimeout( process );
+ }
+ };
+ }
+
+ return jQuery.Deferred( function( newDefer ) {
+
+ // progress_handlers.add( ... )
+ tuples[ 0 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onProgress ) ?
+ onProgress :
+ Identity,
+ newDefer.notifyWith
+ )
+ );
+
+ // fulfilled_handlers.add( ... )
+ tuples[ 1 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onFulfilled ) ?
+ onFulfilled :
+ Identity
+ )
+ );
+
+ // rejected_handlers.add( ... )
+ tuples[ 2 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onRejected ) ?
+ onRejected :
+ Thrower
+ )
+ );
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 5 ];
+
+ // promise.progress = list.add
+ // promise.done = list.add
+ // promise.fail = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(
+ function() {
+
+ // state = "resolved" (i.e., fulfilled)
+ // state = "rejected"
+ state = stateString;
+ },
+
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[ 3 - i ][ 2 ].disable,
+
+ // progress_callbacks.lock
+ tuples[ 0 ][ 2 ].lock
+ );
+ }
+
+ // progress_handlers.fire
+ // fulfilled_handlers.fire
+ // rejected_handlers.fire
+ list.add( tuple[ 3 ].fire );
+
+ // deferred.notify = function() { deferred.notifyWith(...) }
+ // deferred.resolve = function() { deferred.resolveWith(...) }
+ // deferred.reject = function() { deferred.rejectWith(...) }
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+ return this;
+ };
+
+ // deferred.notifyWith = list.fireWith
+ // deferred.resolveWith = list.fireWith
+ // deferred.rejectWith = list.fireWith
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( singleValue ) {
+ var
+
+ // count of uncompleted subordinates
+ remaining = arguments.length,
+
+ // count of unprocessed arguments
+ i = remaining,
+
+ // subordinate fulfillment data
+ resolveContexts = Array( i ),
+ resolveValues = slice.call( arguments ),
+
+ // the master Deferred
+ master = jQuery.Deferred(),
+
+ // subordinate callback factory
+ updateFunc = function( i ) {
+ return function( value ) {
+ resolveContexts[ i ] = this;
+ resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( !( --remaining ) ) {
+ master.resolveWith( resolveContexts, resolveValues );
+ }
+ };
+ };
+
+ // Single- and empty arguments are adopted like Promise.resolve
+ if ( remaining <= 1 ) {
+ adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+ !remaining );
+
+ // Use .then() to unwrap secondary thenables (cf. gh-3000)
+ if ( master.state() === "pending" ||
+ jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+ return master.then();
+ }
+ }
+
+ // Multiple arguments are aggregated like Promise.all array elements
+ while ( i-- ) {
+ adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+ }
+
+ return master.promise();
+ }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+ // Support: IE 8 - 9 only
+ // Console exists when dev tools are open, which can happen at any time
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+ }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+ window.setTimeout( function() {
+ throw error;
+ } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+ readyList
+ .then( fn )
+
+ // Wrap jQuery.readyException in a function so that the lookup
+ // happens at the time of error handling instead of callback
+ // registration.
+ .catch( function( error ) {
+ jQuery.readyException( error );
+ } );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+ }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ if ( chainable ) {
+ return elems;
+ }
+
+ // Gets
+ if ( bulk ) {
+ return fn.call( elems );
+ }
+
+ return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ cache: function( owner ) {
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ // Always use camelCase key (gh-2257)
+ if ( typeof data === "string" ) {
+ cache[ jQuery.camelCase( data ) ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+
+ // Always use camelCase key (gh-2257)
+ owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+ },
+ access: function( owner, key, value ) {
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ return this.get( owner, key );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key !== undefined ) {
+
+ // Support array or space separated string of keys
+ if ( Array.isArray( key ) ) {
+
+ // If key is an array of keys...
+ // We always set camelCase keys, so remove that.
+ key = key.map( jQuery.camelCase );
+ } else {
+ key = jQuery.camelCase( key );
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ key = key in cache ?
+ [ key ] :
+ ( key.match( rnothtmlwhite ) || [] );
+ }
+
+ i = key.length;
+
+ while ( i-- ) {
+ delete cache[ key[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <=35 - 45
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+ if ( data === "true" ) {
+ return true;
+ }
+
+ if ( data === "false" ) {
+ return false;
+ }
+
+ if ( data === "null" ) {
+ return null;
+ }
+
+ // Only convert to a number if it doesn't change the string
+ if ( data === +data + "" ) {
+ return +data;
+ }
+
+ if ( rbrace.test( data ) ) {
+ return JSON.parse( data );
+ }
+
+ return data;
+}
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = getData( data );
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE 11 only
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // The key will always be camelCased in Data
+ data = dataUser.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each( function() {
+
+ // We always store the camelCased key
+ dataUser.set( this, key, value );
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || Array.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+ // isHiddenWithinTree might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+
+ // Inline style trumps all
+ return elem.style.display === "none" ||
+ elem.style.display === "" &&
+
+ // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ jQuery.contains( elem.ownerDocument, elem ) &&
+
+ jQuery.css( elem, "display" ) === "none";
+ };
+
+var swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted,
+ scale = 1,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() {
+ return tween.cur();
+ } :
+ function() {
+ return jQuery.css( elem, prop, "" );
+ },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ do {
+
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ initialInUnit = initialInUnit / scale;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+ } while (
+ scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+ );
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+ var temp,
+ doc = elem.ownerDocument,
+ nodeName = elem.nodeName,
+ display = defaultDisplayMap[ nodeName ];
+
+ if ( display ) {
+ return display;
+ }
+
+ temp = doc.body.appendChild( doc.createElement( nodeName ) );
+ display = jQuery.css( temp, "display" );
+
+ temp.parentNode.removeChild( temp );
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+ defaultDisplayMap[ nodeName ] = display;
+
+ return display;
+}
+
+function showHide( elements, show ) {
+ var display, elem,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ // Determine new display value for elements that need to change
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ display = elem.style.display;
+ if ( show ) {
+
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+ // check is required in this first loop unless we have a nonempty display value (either
+ // inline or about-to-be-restored)
+ if ( display === "none" ) {
+ values[ index ] = dataPriv.get( elem, "display" ) || null;
+ if ( !values[ index ] ) {
+ elem.style.display = "";
+ }
+ }
+ if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+ values[ index ] = getDefaultDisplay( elem );
+ }
+ } else {
+ if ( display !== "none" ) {
+ values[ index ] = "none";
+
+ // Remember what we're overwriting
+ dataPriv.set( elem, "display", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop to avoid constant reflow
+ for ( index = 0; index < length; index++ ) {
+ if ( values[ index ] != null ) {
+ elements[ index ].style.display = values[ index ];
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend( {
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHiddenWithinTree( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE <=9 only
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting <tbody> or other required elements.
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE <=9 - 11 only
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret;
+
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ ret = context.getElementsByTagName( tag || "*" );
+
+ } else if ( typeof context.querySelectorAll !== "undefined" ) {
+ ret = context.querySelectorAll( tag || "*" );
+
+ } else {
+ ret = [];
+ }
+
+ if ( tag === undefined || tag && nodeName( context, tag ) ) {
+ return jQuery.merge( [ context ], ret );
+ }
+
+ return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0 - 4.3 only
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Android <=4.1 only
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE <=11 only
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Ensure that invalid selectors throw exceptions at attach time
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+ if ( selector ) {
+ jQuery.find.matchesSelector( documentElement, selector );
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( nativeEvent ) {
+
+ // Make a writable jQuery.Event from the native event object
+ var event = jQuery.event.fix( nativeEvent );
+
+ var i, j, ret, matched, handleObj, handlerQueue,
+ args = new Array( arguments.length ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+
+ for ( i = 1; i < arguments.length; i++ ) {
+ args[ i ] = arguments[ i ];
+ }
+
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ if ( delegateCount &&
+
+ // Support: IE <=9
+ // Black-hole SVG <use> instance trees (trac-13180)
+ cur.nodeType &&
+
+ // Support: Firefox <=42
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+ // Support: IE 11 only
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+ !( event.type === "click" && event.button >= 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+ matchedHandlers = [];
+ matchedSelectors = {};
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matchedSelectors[ sel ] === undefined ) {
+ matchedSelectors[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matchedSelectors[ sel ] ) {
+ matchedHandlers.push( handleObj );
+ }
+ }
+ if ( matchedHandlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ cur = this;
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ addProp: function( name, hook ) {
+ Object.defineProperty( jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+
+ get: jQuery.isFunction( hook ) ?
+ function() {
+ if ( this.originalEvent ) {
+ return hook( this.originalEvent );
+ }
+ } :
+ function() {
+ if ( this.originalEvent ) {
+ return this.originalEvent[ name ];
+ }
+ },
+
+ set: function( value ) {
+ Object.defineProperty( this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: value
+ } );
+ }
+ } );
+ },
+
+ fix: function( originalEvent ) {
+ return originalEvent[ jQuery.expando ] ?
+ originalEvent :
+ new jQuery.Event( originalEvent );
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android <=2.3 only
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Create target properties
+ // Support: Safari <=6 - 7 only
+ // Target should not be a text node (#504, #13143)
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
+ src.target.parentNode :
+ src.target;
+
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+
+ which: function( event ) {
+ var button = event.button;
+
+ // Add which for key events
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
+ return event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+ if ( button & 1 ) {
+ return 1;
+ }
+
+ if ( button & 2 ) {
+ return 3;
+ }
+
+ if ( button & 4 ) {
+ return 2;
+ }
+
+ return 0;
+ }
+
+ return event.which;
+ }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+
+var
+
+ /* eslint-disable max-len */
+
+ // See https://github.com/eslint/eslint/issues/3229
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+ /* eslint-enable */
+
+ // Support: IE <=10 - 11, Edge 12 - 13
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /<script|<style|<link/i,
+
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+ if ( nodeName( elem, "table" ) &&
+ nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+ return jQuery( ">tbody", elem )[ 0 ] || elem;
+ }
+
+ return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute( "type" );
+ }
+
+ return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( dataPriv.hasData( src ) ) {
+ pdataOld = dataPriv.access( src );
+ pdataCur = dataPriv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( dataUser.hasData( src ) ) {
+ udataOld = dataUser.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ dataUser.set( dest, udataCur );
+ }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = collection.length,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return collection.each( function( index ) {
+ var self = collection.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ domManip( self, args, callback, ignored );
+ } );
+ }
+
+ if ( l ) {
+ fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ // Require either new content or an interest in ignored elements to invoke the callback
+ if ( first || ignored ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item
+ // instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( collection[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !dataPriv.access( node, "globalEval" ) &&
+ jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return collection;
+}
+
+function remove( elem, selector, keepData ) {
+ var node,
+ nodes = selector ? jQuery.filter( selector, elem ) : elem,
+ i = 0;
+
+ for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+ if ( !keepData && node.nodeType === 1 ) {
+ jQuery.cleanData( getAll( node ) );
+ }
+
+ if ( node.parentNode ) {
+ if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+ setGlobalEval( getAll( node, "script" ) );
+ }
+ node.parentNode.removeChild( node );
+ }
+ }
+
+ return elem;
+}
+
+jQuery.extend( {
+ htmlPrefilter: function( html ) {
+ return html.replace( rxhtmlTag, "<$1></$2>" );
+ },
+
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+ if ( acceptData( elem ) ) {
+ if ( ( data = elem[ dataPriv.expando ] ) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataPriv.expando ] = undefined;
+ }
+ if ( elem[ dataUser.expando ] ) {
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataUser.expando ] = undefined;
+ }
+ }
+ }
+ }
+} );
+
+jQuery.fn.extend( {
+ detach: function( selector ) {
+ return remove( this, selector, true );
+ },
+
+ remove: function( selector ) {
+ return remove( this, selector );
+ },
+
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each( function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ } );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ } );
+ },
+
+ prepend: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ } );
+ },
+
+ before: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ } );
+ },
+
+ after: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ } );
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; ( elem = this[ i ] ) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ } );
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = jQuery.htmlPrefilter( value );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch ( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var ignored = [];
+
+ // Make the changes, replacing each non-ignored context element with the new content
+ return domManip( this, arguments, function( elem ) {
+ var parent = this.parentNode;
+
+ if ( jQuery.inArray( this, ignored ) < 0 ) {
+ jQuery.cleanData( getAll( this ) );
+ if ( parent ) {
+ parent.replaceChild( elem, this );
+ }
+ }
+
+ // Force callback invocation
+ }, ignored );
+ }
+} );
+
+jQuery.each( {
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // .get() because push.apply(_, arraylike) throws on ancient WebKit
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+ // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ var view = elem.ownerDocument.defaultView;
+
+ if ( !view || !view.opener ) {
+ view = window;
+ }
+
+ return view.getComputedStyle( elem );
+ };
+
+
+
+( function() {
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computeStyleTests() {
+
+ // This is a singleton, we need to execute it only once
+ if ( !div ) {
+ return;
+ }
+
+ div.style.cssText =
+ "box-sizing:border-box;" +
+ "position:relative;display:block;" +
+ "margin:auto;border:1px;padding:1px;" +
+ "top:1%;width:50%";
+ div.innerHTML = "";
+ documentElement.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div );
+ pixelPositionVal = divStyle.top !== "1%";
+
+ // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+ reliableMarginLeftVal = divStyle.marginLeft === "2px";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ // Support: Android 4.0 - 4.3 only
+ // Some styles come back with percentage values, even though they shouldn't
+ div.style.marginRight = "50%";
+ pixelMarginRightVal = divStyle.marginRight === "4px";
+
+ documentElement.removeChild( container );
+
+ // Nullify the div so it wouldn't be stored in the memory and
+ // it will also be a sign that checks already performed
+ div = null;
+ }
+
+ var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ // Finish early in limited (non-browser) environments
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE <=9 - 11 only
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+ "padding:0;margin-top:1px;position:absolute";
+ container.appendChild( div );
+
+ jQuery.extend( support, {
+ pixelPosition: function() {
+ computeStyleTests();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ computeStyleTests();
+ return boxSizingReliableVal;
+ },
+ pixelMarginRight: function() {
+ computeStyleTests();
+ return pixelMarginRightVal;
+ },
+ reliableMarginLeft: function() {
+ computeStyleTests();
+ return reliableMarginLeftVal;
+ }
+ } );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+
+ // Support: Firefox 51+
+ // Retrieving style before computed somehow
+ // fixes an issue with getting wrong values
+ // on detached elements
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // getPropertyValue is needed for:
+ // .css('filter') (IE 9 only, #12537)
+ // .css('--customProperty) (#3144)
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Android Browser returns percentage for some values,
+ // but width seems to be reliably pixels.
+ // This is against the CSSOM draft spec:
+ // https://drafts.csswg.org/cssom/#resolved-values
+ if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+
+ // Support: IE <=9 - 11 only
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return ( this.get = hookFn ).apply( this, arguments );
+ }
+ };
+}
+
+
+var
+
+ // Swappable if display is none or starts with table
+ // except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rcustomProp = /^--/,
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "Moz", "ms" ],
+ emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in emptyStyle ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in emptyStyle ) {
+ return name;
+ }
+ }
+}
+
+// Return a property mapped along what jQuery.cssProps suggests or to
+// a vendor prefixed property.
+function finalPropName( name ) {
+ var ret = jQuery.cssProps[ name ];
+ if ( !ret ) {
+ ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+ }
+ return ret;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+ // Any relative (+/-) values have already been
+ // normalized at this point
+ var matches = rcssNum.exec( value );
+ return matches ?
+
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i,
+ val = 0;
+
+ // If we already have the right measurement, avoid augmentation
+ if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+ i = 4;
+
+ // Otherwise initialize for horizontal or vertical properties
+ } else {
+ i = name === "width" ? 1 : 0;
+ }
+
+ for ( ; i < 4; i += 2 ) {
+
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with computed style
+ var valueIsBorderBox,
+ styles = getStyles( elem ),
+ val = curCSS( elem, name, styles ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test( val ) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Fall back to offsetWidth/Height when value is "auto"
+ // This happens for inline elements with no explicit setting (gh-3571)
+ if ( val === "auto" ) {
+ val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
+ }
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+jQuery.extend( {
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "animationIterationCount": true,
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ isCustomProp = rcustomProp.test( name ),
+ style = elem.style;
+
+ // Make sure that we're working with the right name. We don't
+ // want to query the value if it is a CSS custom property
+ // since they are user-defined.
+ if ( !isCustomProp ) {
+ name = finalPropName( origName );
+ }
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+ value = adjustCSS( elem, name, ret );
+
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number was passed in, add the unit (except for certain CSS properties)
+ if ( type === "number" ) {
+ value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+ }
+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !( "set" in hooks ) ||
+ ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+ if ( isCustomProp ) {
+ style.setProperty( name, value );
+ } else {
+ style[ name ] = value;
+ }
+ }
+
+ } else {
+
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks &&
+ ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name ),
+ isCustomProp = rcustomProp.test( name );
+
+ // Make sure that we're working with the right name. We don't
+ // want to modify the value if it is a CSS custom property
+ // since they are user-defined.
+ if ( !isCustomProp ) {
+ name = finalPropName( origName );
+ }
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || isFinite( num ) ? num || 0 : val;
+ }
+
+ return val;
+ }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+ // Support: Safari 8+
+ // Table columns in Safari have non-zero offsetWidth & zero
+ // getBoundingClientRect().width unless display is changed.
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+ swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ } ) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var matches,
+ styles = extra && getStyles( elem ),
+ subtract = extra && augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ );
+
+ // Convert to pixels if value adjustment is needed
+ if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+ ( matches[ 3 ] || "px" ) !== "px" ) {
+
+ elem.style[ name ] = value;
+ value = jQuery.css( elem, name );
+ }
+
+ return setPositiveNumber( elem, value, subtract );
+ }
+ };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+ function( elem, computed ) {
+ if ( computed ) {
+ return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+ elem.getBoundingClientRect().left -
+ swap( elem, { marginLeft: 0 }, function() {
+ return elem.getBoundingClientRect().left;
+ } )
+ ) + "px";
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+} );
+
+jQuery.fn.extend( {
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( Array.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ }
+} );
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = window.setTimeout( next, time );
+ hooks.stop = function() {
+ window.clearTimeout( timeout );
+ };
+ } );
+};
+
+
+( function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: Android <=4.3 only
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE <=11 only
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: IE <=11 only
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each( function() {
+ jQuery.removeAttr( this, name );
+ } );
+ }
+} );
+
+jQuery.extend( {
+ attr: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set attributes on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // Attribute hooks are determined by the lowercase version
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+ }
+
+ if ( value !== undefined ) {
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+ }
+
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ? undefined : ret;
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name,
+ i = 0,
+
+ // Attribute names can contain non-HTML whitespace characters
+ // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+ attrNames = value && value.match( rnothtmlwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( ( name = attrNames[ i++ ] ) ) {
+ elem.removeAttribute( name );
+ }
+ }
+ }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle,
+ lowercaseName = name.toLowerCase();
+
+ if ( !isXML ) {
+
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ lowercaseName ];
+ attrHandle[ lowercaseName ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ lowercaseName :
+ null;
+ attrHandle[ lowercaseName ] = handle;
+ }
+ return ret;
+ };
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+ rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each( function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ } );
+ }
+} );
+
+jQuery.extend( {
+ prop: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ return ( elem[ name ] = value );
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ return elem[ name ];
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+
+ // Support: IE <=9 - 11 only
+ // elem.tabIndex doesn't always return the
+ // correct value when it hasn't been explicitly set
+ // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ if ( tabindex ) {
+ return parseInt( tabindex, 10 );
+ }
+
+ if (
+ rfocusable.test( elem.nodeName ) ||
+ rclickable.test( elem.nodeName ) &&
+ elem.href
+ ) {
+ return 0;
+ }
+
+ return -1;
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+
+ /* eslint no-unused-expressions: "off" */
+
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ },
+ set: function( elem ) {
+
+ /* eslint no-unused-expressions: "off" */
+
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ };
+}
+
+jQuery.each( [
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+ // Strip and collapse whitespace according to HTML spec
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+ function stripAndCollapse( value ) {
+ var tokens = value.match( rnothtmlwhite ) || [];
+ return tokens.join( " " );
+ }
+
+
+function getClass( elem ) {
+ return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+ addClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnothtmlwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = stripAndCollapse( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( !arguments.length ) {
+ return this.attr( "class", "" );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnothtmlwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = stripAndCollapse( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).toggleClass(
+ value.call( this, i, getClass( this ), stateVal ),
+ stateVal
+ );
+ } );
+ }
+
+ return this.each( function() {
+ var className, i, self, classNames;
+
+ if ( type === "string" ) {
+
+ // Toggle individual class names
+ i = 0;
+ self = jQuery( this );
+ classNames = value.match( rnothtmlwhite ) || [];
+
+ while ( ( className = classNames[ i++ ] ) ) {
+
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( value === undefined || type === "boolean" ) {
+ className = getClass( this );
+ if ( className ) {
+
+ // Store className if set
+ dataPriv.set( this, "__className__", className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ if ( this.setAttribute ) {
+ this.setAttribute( "class",
+ className || value === false ?
+ "" :
+ dataPriv.get( this, "__className__" ) || ""
+ );
+ }
+ }
+ } );
+ },
+
+ hasClass: function( selector ) {
+ var className, elem,
+ i = 0;
+
+ className = " " + selector + " ";
+ while ( ( elem = this[ i++ ] ) ) {
+ if ( elem.nodeType === 1 &&
+ ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[ 0 ];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] ||
+ jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks &&
+ "get" in hooks &&
+ ( ret = hooks.get( elem, "value" ) ) !== undefined
+ ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ // Handle most common string cases
+ if ( typeof ret === "string" ) {
+ return ret.replace( rreturn, "" );
+ }
+
+ // Handle cases where value is null/undef or number
+ return ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each( function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( Array.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ } );
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ } );
+ }
+} );
+
+jQuery.extend( {
+ valHooks: {
+ option: {
+ get: function( elem ) {
+
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+
+ // Support: IE <=10 - 11 only
+ // option.text throws exceptions (#14686, #14858)
+ // Strip and collapse whitespace
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+ stripAndCollapse( jQuery.text( elem ) );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option, i,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one",
+ values = one ? null : [],
+ max = one ? index + 1 : options.length;
+
+ if ( index < 0 ) {
+ i = max;
+
+ } else {
+ i = one ? index : 0;
+ }
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Support: IE <=9 only
+ // IE8-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+
+ // Don't return options that are disabled or in a disabled optgroup
+ !option.disabled &&
+ ( !option.parentNode.disabled ||
+ !nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+
+ /* eslint-disable no-cond-assign */
+
+ if ( option.selected =
+ jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+ ) {
+ optionSet = true;
+ }
+
+ /* eslint-enable no-cond-assign */
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( Array.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+ };
+ }
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "." ) > -1 ) {
+
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split( "." );
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join( "." );
+ event.rnamespace = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === ( elem.ownerDocument || document ) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+ dataPriv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( ( !special._default ||
+ special._default.apply( eventPath.pop(), data ) === false ) &&
+ acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ // Piggyback on a donor event to simulate a different one
+ // Used only for `focus(in | out)` events
+ simulate: function( type, elem, event ) {
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true
+ }
+ );
+
+ jQuery.event.trigger( e, null, elem );
+ }
+
+} );
+
+jQuery.fn.extend( {
+
+ trigger: function( type, data ) {
+ return this.each( function() {
+ jQuery.event.trigger( type, data, this );
+ } );
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[ 0 ];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+ function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+} );
+
+jQuery.fn.extend( {
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+ jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ dataPriv.remove( doc, fix );
+
+ } else {
+ dataPriv.access( doc, fix, attaches );
+ }
+ }
+ };
+ } );
+}
+
+
+var
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( Array.isArray( obj ) ) {
+
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams(
+ prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+ v,
+ traditional,
+ add
+ );
+ }
+ } );
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, valueOrFunction ) {
+
+ // If value is a function, invoke it and use its return value
+ var value = jQuery.isFunction( valueOrFunction ) ?
+ valueOrFunction() :
+ valueOrFunction;
+
+ s[ s.length ] = encodeURIComponent( key ) + "=" +
+ encodeURIComponent( value == null ? "" : value );
+ };
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ } );
+
+ } else {
+
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map( function() {
+
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ } )
+ .filter( function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ } )
+ .map( function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ if ( val == null ) {
+ return null;
+ }
+
+ if ( Array.isArray( val ) ) {
+ return jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } );
+ }
+
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ).get();
+ }
+} );
+
+
+jQuery.fn.extend( {
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( this[ 0 ] ) {
+ if ( jQuery.isFunction( html ) ) {
+ html = html.call( this[ 0 ] );
+ }
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map( function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ } ).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).wrapInner( html.call( this, i ) );
+ } );
+ }
+
+ return this.each( function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ } );
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each( function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+ } );
+ },
+
+ unwrap: function( selector ) {
+ this.parent( selector ).not( "body" ).each( function() {
+ jQuery( this ).replaceWith( this.childNodes );
+ } );
+ return this;
+ }
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+ return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+ return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+ var body = document.implementation.createHTMLDocument( "" ).body;
+ body.innerHTML = "<form></form><form></form>";
+ return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( typeof data !== "string" ) {
+ return [];
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+
+ var base, parsed, scripts;
+
+ if ( !context ) {
+
+ // Stop scripts or inline event handlers from being executed immediately
+ // by using document.implementation
+ if ( support.createHTMLDocument ) {
+ context = document.implementation.createHTMLDocument( "" );
+
+ // Set the base href for the created document
+ // so any parsed elements with URLs
+ // are based on the document's URL (gh-2965)
+ base = context.createElement( "base" );
+ base.href = document.location.href;
+ context.head.appendChild( base );
+ } else {
+ context = document;
+ }
+ }
+
+ parsed = rsingleTag.exec( data );
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[ 1 ] ) ];
+ }
+
+ parsed = buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+
+ // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+ options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend( {
+ offset: function( options ) {
+
+ // Preserve chaining for setter
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each( function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ } );
+ }
+
+ var doc, docElem, rect, win,
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return;
+ }
+
+ // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a
+ // disconnected node in IE throws an error
+ if ( !elem.getClientRects().length ) {
+ return { top: 0, left: 0 };
+ }
+
+ rect = elem.getBoundingClientRect();
+
+ doc = elem.ownerDocument;
+ docElem = doc.documentElement;
+ win = doc.defaultView;
+
+ return {
+ top: rect.top + win.pageYOffset - docElem.clientTop,
+ left: rect.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+ // because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset = {
+ top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+ left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+ };
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ // This method will return documentElement in the following cases:
+ // 1) For the element inside the iframe without offsetParent, this method will return
+ // documentElement of the parent window
+ // 2) For the hidden or detached element
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
+ //
+ // but those exceptions were never presented as a real life use-cases
+ // and might be considered as more preferable results.
+ //
+ // This logic, however, is not guaranteed and can change at any point in the future
+ offsetParent: function() {
+ return this.map( function() {
+ var offsetParent = this.offsetParent;
+
+ while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || documentElement;
+ } );
+ }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+
+ // Coalesce documents and windows
+ var win;
+ if ( jQuery.isWindow( elem ) ) {
+ win = elem;
+ } else if ( elem.nodeType === 9 ) {
+ win = elem.defaultView;
+ }
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : win.pageXOffset,
+ top ? val : win.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length );
+ };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+ function( defaultExtra, funcName ) {
+
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+
+ // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+ return funcName.indexOf( "outer" ) === 0 ?
+ elem[ "inner" + name ] :
+ elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable );
+ };
+ } );
+} );
+
+
+jQuery.fn.extend( {
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ?
+ this.off( selector, "**" ) :
+ this.off( types, selector || "**", fn );
+ }
+} );
+
+jQuery.holdReady = function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ } );
+}
+
+
+
+
+var
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+} );
--- /dev/null
+/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a);
+}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var _a,ab=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?_a:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),_a={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ab[b]||r.find.attr;ab[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ab[g],ab[g]=e,e=null!=c(a,b,d)?g:null,ab[g]=f),e}});var bb=/^(?:input|select|textarea|button)$/i,cb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function db(a){var b=a.match(L)||[];return b.join(" ")}function eb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,eb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,eb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,eb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=eb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+db(eb(c))+" ").indexOf(b)>-1)return!0;return!1}});var fb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(fb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:db(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var gb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!gb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,gb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var hb=/\[\]$/,ib=/\r?\n/g,jb=/^(?:submit|button|image|reset|file)$/i,kb=/^(?:input|select|textarea|keygen)/i;function lb(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||hb.test(a)?d(a,e):lb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d);
+});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)lb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)lb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&kb.test(this.nodeName)&&!jb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ib,"\r\n")}}):{name:b.name,value:c.replace(ib,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var mb=a.jQuery,nb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=nb),b&&a.jQuery===r&&(a.jQuery=mb),r},b||(a.jQuery=a.$=r),r});
--- /dev/null
+{"version":3,"sources":["jquery.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","DOMEval","code","doc","script","createElement","text","head","appendChild","parentNode","removeChild","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","isWindow","isNumeric","isNaN","parseFloat","proto","Ctor","isEmptyObject","globalEval","camelCase","string","isArrayLike","trim","makeArray","results","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","nodeType","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","targets","l","closest","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","width","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","rcustomProp","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","finalPropName","cssProps","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","float","origName","isCustomProp","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","opt","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","propHooks","tabindex","parseInt","for","class","stripAndCollapse","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","hover","fnOver","fnOut","focusin","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","unwrap","hidden","visible","offsetWidth","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","holdReady","hold","parseJSON","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.slim.min.js"}
\ No newline at end of file
--- /dev/null
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // https://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+
+ // CSS escapes
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ },
+
+ disabledAncestor = addCombinator(
+ function( elem ) {
+ return elem.disabled === true && ("form" in elem || "label" in elem);
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+ var el = document.createElement("fieldset");
+
+ try {
+ return !!fn( el );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( el.parentNode ) {
+ el.parentNode.removeChild( el );
+ }
+ // release memory in IE
+ el = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ a.sourceIndex - b.sourceIndex;
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+ return function( elem ) {
+
+ // Only certain elements can match :enabled or :disabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+ if ( "form" in elem ) {
+
+ // Check for inherited disabledness on relevant non-disabled elements:
+ // * listed form-associated elements in a disabled fieldset
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+ // * option elements in a disabled optgroup
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+ // All such elements have a "form" property.
+ if ( elem.parentNode && elem.disabled === false ) {
+
+ // Option elements defer to a parent optgroup if present
+ if ( "label" in elem ) {
+ if ( "label" in elem.parentNode ) {
+ return elem.parentNode.disabled === disabled;
+ } else {
+ return elem.disabled === disabled;
+ }
+ }
+
+ // Support: IE 6 - 11
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+ return elem.isDisabled === disabled ||
+
+ // Where there is no isDisabled, check manually
+ /* jshint -W018 */
+ elem.isDisabled !== !disabled &&
+ disabledAncestor( elem ) === disabled;
+ }
+
+ return elem.disabled === disabled;
+
+ // Try to winnow out elements that can't be disabled before trusting the disabled property.
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+ // even exist on them, let alone have a boolean value.
+ } else if ( "label" in elem ) {
+ return elem.disabled === disabled;
+ }
+
+ // Remaining elements are neither :enabled nor :disabled
+ return false;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, subWindow,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( preferredDoc !== document &&
+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+ // Support: IE 11, Edge
+ if ( subWindow.addEventListener ) {
+ subWindow.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( subWindow.attachEvent ) {
+ subWindow.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( el ) {
+ el.className = "i";
+ return !el.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( el ) {
+ el.appendChild( document.createComment("") );
+ return !el.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programmatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( el ) {
+ docElem.appendChild( el ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID filter and find
+ if ( support.getById ) {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var elem = context.getElementById( id );
+ return elem ? [ elem ] : [];
+ }
+ };
+ } else {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+
+ // Support: IE 6 - 7 only
+ // getElementById is not reliable as a find shortcut
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var node, i, elems,
+ elem = context.getElementById( id );
+
+ if ( elem ) {
+
+ // Verify the id attribute
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+
+ // Fall back on getElementsByName
+ elems = context.getElementsByName( id );
+ i = 0;
+ while ( (elem = elems[i++]) ) {
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+ }
+ }
+
+ return [];
+ }
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See https://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( el ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // https://bugs.jquery.com/ticket/12359
+ docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !el.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !el.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibling-combinator selector` fails
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( el ) {
+ el.innerHTML = "<a href='' disabled='disabled'></a>" +
+ "<select disabled='disabled'><option/></select>";
+
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ el.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( el.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Support: IE9-11+
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
+ docElem.appendChild( el ).disabled = true;
+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ el.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( el ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( el, "*" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( el, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.escape = function( sel ) {
+ return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": createDisabledPseudo( false ),
+ "disabled": createDisabledPseudo( true ),
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ skip = combinator.next,
+ key = skip || dir,
+ checkNonElements = base && key === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ return false;
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( skip && skip === elem.nodeName.toLowerCase() ) {
+ elem = elem[ dir ] || elem;
+ } else if ( (oldCache = uniqueCache[ key ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ key ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+ // Should return 1, but returns 4 (following)
+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+ el.innerHTML = "<a href='#'></a>";
+ return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+ el.innerHTML = "<input/>";
+ el.firstChild.setAttribute( "value", "" );
+ return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+ return el.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+// EXPOSE
+var _sizzle = window.Sizzle;
+
+Sizzle.noConflict = function() {
+ if ( window.Sizzle === Sizzle ) {
+ window.Sizzle = _sizzle;
+ }
+
+ return Sizzle;
+};
+
+if ( typeof define === "function" && define.amd ) {
+ define(function() { return Sizzle; });
+// Sizzle requires that there be a global window in Common-JS like environments
+} else if ( typeof module !== "undefined" && module.exports ) {
+ module.exports = Sizzle;
+} else {
+ window.Sizzle = Sizzle;
+}
+// EXPOSE
+
+})( window );
--- /dev/null
+/*! Sizzle v2.3.3 | (c) jQuery Foundation, Inc. | jquery.org/license */
+!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null});var Aa=a.Sizzle;ga.noConflict=function(){return a.Sizzle===ga&&(a.Sizzle=Aa),ga},"function"==typeof define&&define.amd?define(function(){return ga}):"undefined"!=typeof module&&module.exports?module.exports=ga:a.Sizzle=ga}(window);
+//# sourceMappingURL=sizzle.min.map
\ No newline at end of file
--- /dev/null
+{"version":3,"sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","toString","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","join","testContext","parentNode","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","el","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","elems","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","escape","sel","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","defaultValue","_sizzle","noConflict","define","amd","module","exports"],"mappings":"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","file":"sizzle.min.js"}
\ No newline at end of file
--- /dev/null
+define( [
+ "./core",
+ "./var/document",
+ "./var/rnothtmlwhite",
+ "./ajax/var/location",
+ "./ajax/var/nonce",
+ "./ajax/var/rquery",
+
+ "./core/init",
+ "./ajax/parseXML",
+ "./event/trigger",
+ "./deferred",
+ "./serialize" // jQuery.param
+], function( jQuery, document, rnothtmlwhite, location, nonce, rquery ) {
+
+"use strict";
+
+var
+ r20 = /%20/g,
+ rhash = /#.*$/,
+ rantiCache = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat( "*" ),
+
+ // Anchor tag for parsing the document origin
+ originAnchor = document.createElement( "a" );
+ originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+
+ // For each dataType in the dataTypeExpression
+ while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+ // Prepend if requested
+ if ( dataType[ 0 ] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+ // Otherwise append
+ } else {
+ ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" &&
+ !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ } );
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s.throws ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return {
+ state: "parsererror",
+ error: conv ? e : "No conversion from " + prev + " to " + current
+ };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: location.href,
+ type: "GET",
+ isLocal: rlocalProtocol.test( location.protocol ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /\bxml\b/,
+ html: /\bhtml/,
+ json: /\bjson\b/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": JSON.parse,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+
+ // URL without anti-cache param
+ cacheURL,
+
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+
+ // timeout handle
+ timeoutTimer,
+
+ // Url cleanup var
+ urlAnchor,
+
+ // Request state (becomes false upon send and true upon completion)
+ completed,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ // Loop variable
+ i,
+
+ // uncached part of the url
+ uncached,
+
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+
+ // Callbacks context
+ callbackContext = s.context || s,
+
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context &&
+ ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+
+ // Default abort message
+ strAbort = "canceled",
+
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( completed ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return completed ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( completed == null ) {
+ name = requestHeadersNames[ name.toLowerCase() ] =
+ requestHeadersNames[ name.toLowerCase() ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( completed == null ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( completed ) {
+
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ } else {
+
+ // Lazy-add the new callbacks in a way that preserves old ones
+ for ( code in map ) {
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || location.href ) + "" )
+ .replace( rprotocol, location.protocol + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+ // A cross-domain request is in order when the origin doesn't match the current origin.
+ if ( s.crossDomain == null ) {
+ urlAnchor = document.createElement( "a" );
+
+ // Support: IE <=8 - 11, Edge 12 - 13
+ // IE throws exception on accessing the href property if url is malformed,
+ // e.g. http://example.com:80x/
+ try {
+ urlAnchor.href = s.url;
+
+ // Support: IE <=8 - 11 only
+ // Anchor's host property isn't correctly set when s.url is relative
+ urlAnchor.href = urlAnchor.href;
+ s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+ urlAnchor.protocol + "//" + urlAnchor.host;
+ } catch ( e ) {
+
+ // If there is an error parsing the URL, assume it is crossDomain,
+ // it can be rejected by the transport if it is invalid
+ s.crossDomain = true;
+ }
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( completed ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ // Remove hash to simplify url manipulation
+ cacheURL = s.url.replace( rhash, "" );
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // Remember the hash so we can put it back
+ uncached = s.url.slice( cacheURL.length );
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add or update anti-cache param if needed
+ if ( s.cache === false ) {
+ cacheURL = cacheURL.replace( rantiCache, "$1" );
+ uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+ }
+
+ // Put hash and anti-cache on the URL that will be requested (gh-1732)
+ s.url = cacheURL + uncached;
+
+ // Change '%20' to '+' if this is encoded form body content (gh-2658)
+ } else if ( s.data && s.processData &&
+ ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+ s.data = s.data.replace( r20, "+" );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+ s.accepts[ s.dataTypes[ 0 ] ] +
+ ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend &&
+ ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // Aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ completeDeferred.add( s.complete );
+ jqXHR.done( s.success );
+ jqXHR.fail( s.error );
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+
+ // If request was aborted inside ajaxSend, stop there
+ if ( completed ) {
+ return jqXHR;
+ }
+
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = window.setTimeout( function() {
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ completed = false;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+
+ // Rethrow post-completion exceptions
+ if ( completed ) {
+ throw e;
+ }
+
+ // Propagate others as results
+ done( -1, e );
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Ignore repeat invocations
+ if ( completed ) {
+ return;
+ }
+
+ completed = true;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ window.clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader( "Last-Modified" );
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader( "etag" );
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+
+ // Extract error from statusText and normalize for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+
+ // Shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ // The url can be an options object (which then must have .url)
+ return jQuery.ajax( jQuery.extend( {
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ }, jQuery.isPlainObject( url ) && url ) );
+ };
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "./var/nonce",
+ "./var/rquery",
+ "../ajax"
+], function( jQuery, nonce, rquery ) {
+
+"use strict";
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" &&
+ ( s.contentType || "" )
+ .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+ rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters[ "script json" ] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // Force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always( function() {
+
+ // If previous value didn't exist - remove it
+ if ( overwritten === undefined ) {
+ jQuery( window ).removeProp( callbackName );
+
+ // Otherwise restore preexisting value
+ } else {
+ window[ callbackName ] = overwritten;
+ }
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+
+ // Make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // Save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ } );
+
+ // Delegate to script
+ return "script";
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../core/stripAndCollapse",
+ "../core/parseHTML",
+ "../ajax",
+ "../traversing",
+ "../manipulation",
+ "../selector"
+], function( jQuery, stripAndCollapse ) {
+
+"use strict";
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ var selector, type, response,
+ self = this,
+ off = url.indexOf( " " );
+
+ if ( off > -1 ) {
+ selector = stripAndCollapse( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax( {
+ url: url,
+
+ // If "type" variable is undefined, then "GET" method will be used.
+ // Make value of this field explicit since
+ // user can override it through ajaxSetup method
+ type: type || "GET",
+ dataType: "html",
+ data: params
+ } ).done( function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ // If the request succeeds, this function gets "data", "status", "jqXHR"
+ // but they are ignored because response was set above.
+ // If it fails, this function gets "jqXHR", "status", "error"
+ } ).always( callback && function( jqXHR, status ) {
+ self.each( function() {
+ callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+ } );
+ } );
+ }
+
+ return this;
+};
+
+} );
--- /dev/null
+define( [
+ "../core"
+], function( jQuery ) {
+
+"use strict";
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE 9 - 11 only
+ // IE throws on parseFromString with invalid input.
+ try {
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+return jQuery.parseXML;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/document",
+ "../ajax"
+], function( jQuery, document ) {
+
+"use strict";
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+ if ( s.crossDomain ) {
+ s.contents.script = false;
+ }
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+ accepts: {
+ script: "text/javascript, application/javascript, " +
+ "application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /\b(?:java|ecma)script\b/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery( "<script>" ).prop( {
+ charset: s.scriptCharset,
+ src: s.url
+ } ).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return window.location;
+} );
--- /dev/null
+define( [
+ "../../core"
+], function( jQuery ) {
+ "use strict";
+
+ return jQuery.now();
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return ( /\?/ );
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/support",
+ "../ajax"
+], function( jQuery, support ) {
+
+"use strict";
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+ // File protocol always yields status code 0, assume 200
+ 0: 200,
+
+ // Support: IE <=9 only
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+ var callback, errorCallback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr();
+
+ xhr.open(
+ options.type,
+ options.url,
+ options.async,
+ options.username,
+ options.password
+ );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ callback = errorCallback = xhr.onload =
+ xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+
+ // Support: IE <=9 only
+ // On a manual native abort, IE9 throws
+ // errors on any property access that is not readyState
+ if ( typeof xhr.status !== "number" ) {
+ complete( 0, "error" );
+ } else {
+ complete(
+
+ // File: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ }
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+
+ // Support: IE <=9 only
+ // IE9 has no XHR2 but throws on binary (trac-11426)
+ // For XHR2 non-text, let the caller handle it (gh-2498)
+ ( xhr.responseType || "text" ) !== "text" ||
+ typeof xhr.responseText !== "string" ?
+ { binary: xhr.response } :
+ { text: xhr.responseText },
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ errorCallback = xhr.onerror = callback( "error" );
+
+ // Support: IE 9 only
+ // Use onreadystatechange to replace onabort
+ // to handle uncaught aborts
+ if ( xhr.onabort !== undefined ) {
+ xhr.onabort = errorCallback;
+ } else {
+ xhr.onreadystatechange = function() {
+
+ // Check readyState before timeout as it changes
+ if ( xhr.readyState === 4 ) {
+
+ // Allow onerror to be called first,
+ // but that will not handle a native abort
+ // Also, save errorCallback to a variable
+ // as xhr.onerror cannot be accessed
+ window.setTimeout( function() {
+ if ( callback ) {
+ errorCallback();
+ }
+ } );
+ }
+ };
+ }
+
+ // Create the abort callback
+ callback = callback( "abort" );
+
+ try {
+
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./attributes/attr",
+ "./attributes/prop",
+ "./attributes/classes",
+ "./attributes/val"
+], function( jQuery ) {
+
+"use strict";
+
+// Return jQuery for attributes-only inclusion
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../core/access",
+ "../core/nodeName",
+ "./support",
+ "../var/rnothtmlwhite",
+ "../selector"
+], function( jQuery, access, nodeName, support, rnothtmlwhite ) {
+
+"use strict";
+
+var boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each( function() {
+ jQuery.removeAttr( this, name );
+ } );
+ }
+} );
+
+jQuery.extend( {
+ attr: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set attributes on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // Attribute hooks are determined by the lowercase version
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+ }
+
+ if ( value !== undefined ) {
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+ }
+
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ? undefined : ret;
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name,
+ i = 0,
+
+ // Attribute names can contain non-HTML whitespace characters
+ // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+ attrNames = value && value.match( rnothtmlwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( ( name = attrNames[ i++ ] ) ) {
+ elem.removeAttribute( name );
+ }
+ }
+ }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle,
+ lowercaseName = name.toLowerCase();
+
+ if ( !isXML ) {
+
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ lowercaseName ];
+ attrHandle[ lowercaseName ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ lowercaseName :
+ null;
+ attrHandle[ lowercaseName ] = handle;
+ }
+ return ret;
+ };
+} );
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../core/stripAndCollapse",
+ "../var/rnothtmlwhite",
+ "../data/var/dataPriv",
+ "../core/init"
+], function( jQuery, stripAndCollapse, rnothtmlwhite, dataPriv ) {
+
+"use strict";
+
+function getClass( elem ) {
+ return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+ addClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnothtmlwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = stripAndCollapse( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( !arguments.length ) {
+ return this.attr( "class", "" );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnothtmlwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = stripAndCollapse( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).toggleClass(
+ value.call( this, i, getClass( this ), stateVal ),
+ stateVal
+ );
+ } );
+ }
+
+ return this.each( function() {
+ var className, i, self, classNames;
+
+ if ( type === "string" ) {
+
+ // Toggle individual class names
+ i = 0;
+ self = jQuery( this );
+ classNames = value.match( rnothtmlwhite ) || [];
+
+ while ( ( className = classNames[ i++ ] ) ) {
+
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( value === undefined || type === "boolean" ) {
+ className = getClass( this );
+ if ( className ) {
+
+ // Store className if set
+ dataPriv.set( this, "__className__", className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ if ( this.setAttribute ) {
+ this.setAttribute( "class",
+ className || value === false ?
+ "" :
+ dataPriv.get( this, "__className__" ) || ""
+ );
+ }
+ }
+ } );
+ },
+
+ hasClass: function( selector ) {
+ var className, elem,
+ i = 0;
+
+ className = " " + selector + " ";
+ while ( ( elem = this[ i++ ] ) ) {
+ if ( elem.nodeType === 1 &&
+ ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../core/access",
+ "./support",
+ "../selector"
+], function( jQuery, access, support ) {
+
+"use strict";
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+ rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each( function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ } );
+ }
+} );
+
+jQuery.extend( {
+ prop: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ return ( elem[ name ] = value );
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ return elem[ name ];
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+
+ // Support: IE <=9 - 11 only
+ // elem.tabIndex doesn't always return the
+ // correct value when it hasn't been explicitly set
+ // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ if ( tabindex ) {
+ return parseInt( tabindex, 10 );
+ }
+
+ if (
+ rfocusable.test( elem.nodeName ) ||
+ rclickable.test( elem.nodeName ) &&
+ elem.href
+ ) {
+ return 0;
+ }
+
+ return -1;
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+
+ /* eslint no-unused-expressions: "off" */
+
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ },
+ set: function( elem ) {
+
+ /* eslint no-unused-expressions: "off" */
+
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ };
+}
+
+jQuery.each( [
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+} );
--- /dev/null
+define( [
+ "../var/document",
+ "../var/support"
+], function( document, support ) {
+
+"use strict";
+
+( function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: Android <=4.3 only
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE <=11 only
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: IE <=11 only
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+} )();
+
+return support;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../core/stripAndCollapse",
+ "./support",
+ "../core/nodeName",
+
+ "../core/init"
+], function( jQuery, stripAndCollapse, support, nodeName ) {
+
+"use strict";
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[ 0 ];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] ||
+ jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks &&
+ "get" in hooks &&
+ ( ret = hooks.get( elem, "value" ) ) !== undefined
+ ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ // Handle most common string cases
+ if ( typeof ret === "string" ) {
+ return ret.replace( rreturn, "" );
+ }
+
+ // Handle cases where value is null/undef or number
+ return ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each( function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( Array.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ } );
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ } );
+ }
+} );
+
+jQuery.extend( {
+ valHooks: {
+ option: {
+ get: function( elem ) {
+
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+
+ // Support: IE <=10 - 11 only
+ // option.text throws exceptions (#14686, #14858)
+ // Strip and collapse whitespace
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+ stripAndCollapse( jQuery.text( elem ) );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option, i,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one",
+ values = one ? null : [],
+ max = one ? index + 1 : options.length;
+
+ if ( index < 0 ) {
+ i = max;
+
+ } else {
+ i = one ? index : 0;
+ }
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Support: IE <=9 only
+ // IE8-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+
+ // Don't return options that are disabled or in a disabled optgroup
+ !option.disabled &&
+ ( !option.parentNode.disabled ||
+ !nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+
+ /* eslint-disable no-cond-assign */
+
+ if ( option.selected =
+ jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+ ) {
+ optionSet = true;
+ }
+
+ /* eslint-enable no-cond-assign */
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( Array.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+ };
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/rnothtmlwhite"
+], function( jQuery, rnothtmlwhite ) {
+
+"use strict";
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = locked || options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( jQuery.isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory && !firing ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+return jQuery;
+} );
--- /dev/null
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+define( [
+ "./var/arr",
+ "./var/document",
+ "./var/getProto",
+ "./var/slice",
+ "./var/concat",
+ "./var/push",
+ "./var/indexOf",
+ "./var/class2type",
+ "./var/toString",
+ "./var/hasOwn",
+ "./var/fnToString",
+ "./var/ObjectFunctionString",
+ "./var/support",
+ "./core/DOMEval"
+], function( arr, document, getProto, slice, concat, push, indexOf,
+ class2type, toString, hasOwn, fnToString, ObjectFunctionString,
+ support, DOMEval ) {
+
+"use strict";
+
+var
+ version = "3.2.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+
+ // Return all the elements in a clean array
+ if ( num == null ) {
+ return slice.call( this );
+ }
+
+ // Return just the one element from the set
+ return num < 0 ? this[ num + this.length ] : this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && Array.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // As of jQuery 3.0, isNumeric is limited to
+ // strings and numbers (primitives or objects)
+ // that can be coerced to finite numbers (gh-2662)
+ var type = jQuery.type( obj );
+ return ( type === "number" || type === "string" ) &&
+
+ // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN( obj - parseFloat( obj ) );
+ },
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+
+ /* eslint-disable no-unused-vars */
+ // See https://github.com/eslint/eslint/issues/6125
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ DOMEval( code );
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../var/document"
+], function( document ) {
+ "use strict";
+
+ function DOMEval( code, doc ) {
+ doc = doc || document;
+
+ var script = doc.createElement( "script" );
+
+ script.text = code;
+ doc.head.appendChild( script ).parentNode.removeChild( script );
+ }
+
+ return DOMEval;
+} );
--- /dev/null
+define( [
+ "../core"
+], function( jQuery ) {
+
+"use strict";
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ if ( chainable ) {
+ return elems;
+ }
+
+ // Gets
+ if ( bulk ) {
+ return fn.call( elems );
+ }
+
+ return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+
+return access;
+
+} );
--- /dev/null
+// Initialize a jQuery object
+define( [
+ "../core",
+ "../var/document",
+ "./var/rsingleTag",
+
+ "../traversing/findFilter"
+], function( jQuery, document, rsingleTag ) {
+
+"use strict";
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ // Shortcut simple #id case for speed
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ if ( elem ) {
+
+ // Inject the element directly into the jQuery object
+ this[ 0 ] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+return init;
+
+} );
--- /dev/null
+define( function() {
+
+"use strict";
+
+function nodeName( elem, name ) {
+
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+
+return nodeName;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/document",
+ "./var/rsingleTag",
+ "../manipulation/buildFragment",
+
+ // This is the only module that needs core/support
+ "./support"
+], function( jQuery, document, rsingleTag, buildFragment, support ) {
+
+"use strict";
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( typeof data !== "string" ) {
+ return [];
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+
+ var base, parsed, scripts;
+
+ if ( !context ) {
+
+ // Stop scripts or inline event handlers from being executed immediately
+ // by using document.implementation
+ if ( support.createHTMLDocument ) {
+ context = document.implementation.createHTMLDocument( "" );
+
+ // Set the base href for the created document
+ // so any parsed elements with URLs
+ // are based on the document's URL (gh-2965)
+ base = context.createElement( "base" );
+ base.href = document.location.href;
+ context.head.appendChild( base );
+ } else {
+ context = document;
+ }
+ }
+
+ parsed = rsingleTag.exec( data );
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[ 1 ] ) ];
+ }
+
+ parsed = buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+return jQuery.parseHTML;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/document"
+], function( jQuery, document ) {
+
+"use strict";
+
+var readyCallbacks = [],
+ whenReady = function( fn ) {
+ readyCallbacks.push( fn );
+ },
+ executeReady = function( fn ) {
+
+ // Prevent errors from freezing future callback execution (gh-1823)
+ // Not backwards-compatible as this does not execute sync
+ window.setTimeout( function() {
+ fn.call( document, jQuery );
+ } );
+ };
+
+jQuery.fn.ready = function( fn ) {
+ whenReady( fn );
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ whenReady = function( fn ) {
+ readyCallbacks.push( fn );
+
+ while ( readyCallbacks.length ) {
+ fn = readyCallbacks.shift();
+ if ( jQuery.isFunction( fn ) ) {
+ executeReady( fn );
+ }
+ }
+ };
+
+ whenReady();
+ }
+} );
+
+// Make jQuery.ready Promise consumable (gh-1778)
+jQuery.ready.then = jQuery.fn.ready;
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE9-10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/document",
+ "../core/readyException",
+ "../deferred"
+], function( jQuery, document ) {
+
+"use strict";
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+ readyList
+ .then( fn )
+
+ // Wrap jQuery.readyException in a function so that the lookup
+ // happens at the time of error handling instead of callback
+ // registration.
+ .catch( function( error ) {
+ jQuery.readyException( error );
+ } );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+ }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+} );
--- /dev/null
+define( [
+ "../core"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.readyException = function( error ) {
+ window.setTimeout( function() {
+ throw error;
+ } );
+};
+
+} );
--- /dev/null
+define( [
+ "../var/rnothtmlwhite"
+], function( rnothtmlwhite ) {
+ "use strict";
+
+ // Strip and collapse whitespace according to HTML spec
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
+ function stripAndCollapse( value ) {
+ var tokens = value.match( rnothtmlwhite ) || [];
+ return tokens.join( " " );
+ }
+
+ return stripAndCollapse;
+} );
--- /dev/null
+define( [
+ "../var/document",
+ "../var/support"
+], function( document, support ) {
+
+"use strict";
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+ var body = document.implementation.createHTMLDocument( "" ).body;
+ body.innerHTML = "<form></form><form></form>";
+ return body.childNodes.length === 2;
+} )();
+
+return support;
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ // Match a standalone tag
+ return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/pnum",
+ "./core/access",
+ "./css/var/rmargin",
+ "./var/document",
+ "./var/rcssNum",
+ "./css/var/rnumnonpx",
+ "./css/var/cssExpand",
+ "./css/var/getStyles",
+ "./css/var/swap",
+ "./css/curCSS",
+ "./css/adjustCSS",
+ "./css/addGetHookIf",
+ "./css/support",
+
+ "./core/init",
+ "./core/ready",
+ "./selector" // contains
+], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
+ getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
+
+"use strict";
+
+var
+
+ // Swappable if display is none or starts with table
+ // except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ rcustomProp = /^--/,
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "Moz", "ms" ],
+ emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in emptyStyle ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in emptyStyle ) {
+ return name;
+ }
+ }
+}
+
+// Return a property mapped along what jQuery.cssProps suggests or to
+// a vendor prefixed property.
+function finalPropName( name ) {
+ var ret = jQuery.cssProps[ name ];
+ if ( !ret ) {
+ ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+ }
+ return ret;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+ // Any relative (+/-) values have already been
+ // normalized at this point
+ var matches = rcssNum.exec( value );
+ return matches ?
+
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i,
+ val = 0;
+
+ // If we already have the right measurement, avoid augmentation
+ if ( extra === ( isBorderBox ? "border" : "content" ) ) {
+ i = 4;
+
+ // Otherwise initialize for horizontal or vertical properties
+ } else {
+ i = name === "width" ? 1 : 0;
+ }
+
+ for ( ; i < 4; i += 2 ) {
+
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with computed style
+ var valueIsBorderBox,
+ styles = getStyles( elem ),
+ val = curCSS( elem, name, styles ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test( val ) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Fall back to offsetWidth/Height when value is "auto"
+ // This happens for inline elements with no explicit setting (gh-3571)
+ if ( val === "auto" ) {
+ val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ];
+ }
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+jQuery.extend( {
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "animationIterationCount": true,
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ isCustomProp = rcustomProp.test( name ),
+ style = elem.style;
+
+ // Make sure that we're working with the right name. We don't
+ // want to query the value if it is a CSS custom property
+ // since they are user-defined.
+ if ( !isCustomProp ) {
+ name = finalPropName( origName );
+ }
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+ value = adjustCSS( elem, name, ret );
+
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number was passed in, add the unit (except for certain CSS properties)
+ if ( type === "number" ) {
+ value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+ }
+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !( "set" in hooks ) ||
+ ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+ if ( isCustomProp ) {
+ style.setProperty( name, value );
+ } else {
+ style[ name ] = value;
+ }
+ }
+
+ } else {
+
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks &&
+ ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name ),
+ isCustomProp = rcustomProp.test( name );
+
+ // Make sure that we're working with the right name. We don't
+ // want to modify the value if it is a CSS custom property
+ // since they are user-defined.
+ if ( !isCustomProp ) {
+ name = finalPropName( origName );
+ }
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || isFinite( num ) ? num || 0 : val;
+ }
+
+ return val;
+ }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+ // Support: Safari 8+
+ // Table columns in Safari have non-zero offsetWidth & zero
+ // getBoundingClientRect().width unless display is changed.
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+ swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ } ) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var matches,
+ styles = extra && getStyles( elem ),
+ subtract = extra && augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ );
+
+ // Convert to pixels if value adjustment is needed
+ if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+ ( matches[ 3 ] || "px" ) !== "px" ) {
+
+ elem.style[ name ] = value;
+ value = jQuery.css( elem, name );
+ }
+
+ return setPositiveNumber( elem, value, subtract );
+ }
+ };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+ function( elem, computed ) {
+ if ( computed ) {
+ return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+ elem.getBoundingClientRect().left -
+ swap( elem, { marginLeft: 0 }, function() {
+ return elem.getBoundingClientRect().left;
+ } )
+ ) + "px";
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+} );
+
+jQuery.fn.extend( {
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( Array.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( function() {
+
+"use strict";
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return ( this.get = hookFn ).apply( this, arguments );
+ }
+ };
+}
+
+return addGetHookIf;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/rcssNum"
+], function( jQuery, rcssNum ) {
+
+"use strict";
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted,
+ scale = 1,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() {
+ return tween.cur();
+ } :
+ function() {
+ return jQuery.css( elem, prop, "" );
+ },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ do {
+
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ initialInUnit = initialInUnit / scale;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+ } while (
+ scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+ );
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+
+return adjustCSS;
+} );
--- /dev/null
+define( [
+ "../core",
+ "./var/rnumnonpx",
+ "./var/rmargin",
+ "./var/getStyles",
+ "./support",
+ "../selector" // Get jQuery.contains
+], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
+
+"use strict";
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+
+ // Support: Firefox 51+
+ // Retrieving style before computed somehow
+ // fixes an issue with getting wrong values
+ // on detached elements
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // getPropertyValue is needed for:
+ // .css('filter') (IE 9 only, #12537)
+ // .css('--customProperty) (#3144)
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Android Browser returns percentage for some values,
+ // but width seems to be reliably pixels.
+ // This is against the CSSOM draft spec:
+ // https://drafts.csswg.org/cssom/#resolved-values
+ if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+
+ // Support: IE <=9 - 11 only
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+return curCSS;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../selector"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+ return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+ return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../data/var/dataPriv",
+ "../css/var/isHiddenWithinTree"
+], function( jQuery, dataPriv, isHiddenWithinTree ) {
+
+"use strict";
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+ var temp,
+ doc = elem.ownerDocument,
+ nodeName = elem.nodeName,
+ display = defaultDisplayMap[ nodeName ];
+
+ if ( display ) {
+ return display;
+ }
+
+ temp = doc.body.appendChild( doc.createElement( nodeName ) );
+ display = jQuery.css( temp, "display" );
+
+ temp.parentNode.removeChild( temp );
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+ defaultDisplayMap[ nodeName ] = display;
+
+ return display;
+}
+
+function showHide( elements, show ) {
+ var display, elem,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ // Determine new display value for elements that need to change
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ display = elem.style.display;
+ if ( show ) {
+
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+ // check is required in this first loop unless we have a nonempty display value (either
+ // inline or about-to-be-restored)
+ if ( display === "none" ) {
+ values[ index ] = dataPriv.get( elem, "display" ) || null;
+ if ( !values[ index ] ) {
+ elem.style.display = "";
+ }
+ }
+ if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+ values[ index ] = getDefaultDisplay( elem );
+ }
+ } else {
+ if ( display !== "none" ) {
+ values[ index ] = "none";
+
+ // Remember what we're overwriting
+ dataPriv.set( elem, "display", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop to avoid constant reflow
+ for ( index = 0; index < length; index++ ) {
+ if ( values[ index ] != null ) {
+ elements[ index ].style.display = values[ index ];
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend( {
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHiddenWithinTree( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+
+return showHide;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/document",
+ "../var/documentElement",
+ "../var/support"
+], function( jQuery, document, documentElement, support ) {
+
+"use strict";
+
+( function() {
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computeStyleTests() {
+
+ // This is a singleton, we need to execute it only once
+ if ( !div ) {
+ return;
+ }
+
+ div.style.cssText =
+ "box-sizing:border-box;" +
+ "position:relative;display:block;" +
+ "margin:auto;border:1px;padding:1px;" +
+ "top:1%;width:50%";
+ div.innerHTML = "";
+ documentElement.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div );
+ pixelPositionVal = divStyle.top !== "1%";
+
+ // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+ reliableMarginLeftVal = divStyle.marginLeft === "2px";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ // Support: Android 4.0 - 4.3 only
+ // Some styles come back with percentage values, even though they shouldn't
+ div.style.marginRight = "50%";
+ pixelMarginRightVal = divStyle.marginRight === "4px";
+
+ documentElement.removeChild( container );
+
+ // Nullify the div so it wouldn't be stored in the memory and
+ // it will also be a sign that checks already performed
+ div = null;
+ }
+
+ var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ // Finish early in limited (non-browser) environments
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE <=9 - 11 only
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+ "padding:0;margin-top:1px;position:absolute";
+ container.appendChild( div );
+
+ jQuery.extend( support, {
+ pixelPosition: function() {
+ computeStyleTests();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ computeStyleTests();
+ return boxSizingReliableVal;
+ },
+ pixelMarginRight: function() {
+ computeStyleTests();
+ return pixelMarginRightVal;
+ },
+ reliableMarginLeft: function() {
+ computeStyleTests();
+ return reliableMarginLeftVal;
+ }
+ } );
+} )();
+
+return support;
+
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return [ "Top", "Right", "Bottom", "Left" ];
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return function( elem ) {
+
+ // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ var view = elem.ownerDocument.defaultView;
+
+ if ( !view || !view.opener ) {
+ view = window;
+ }
+
+ return view.getComputedStyle( elem );
+ };
+} );
--- /dev/null
+define( [
+ "../../core",
+ "../../selector"
+
+ // css is assumed
+], function( jQuery ) {
+ "use strict";
+
+ // isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or
+ // through the CSS cascade), which is useful in deciding whether or not to make it visible.
+ // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:
+ // * A hidden ancestor does not force an element to be classified as hidden.
+ // * Being disconnected from the document does not force an element to be classified as hidden.
+ // These differences improve the behavior of .toggle() et al. when applied to elements that are
+ // detached or contained within hidden ancestors (gh-2404, gh-2863).
+ return function( elem, el ) {
+
+ // isHiddenWithinTree might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+
+ // Inline style trumps all
+ return elem.style.display === "none" ||
+ elem.style.display === "" &&
+
+ // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ jQuery.contains( elem.ownerDocument, elem ) &&
+
+ jQuery.css( elem, "display" ) === "none";
+ };
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return ( /^margin/ );
+} );
--- /dev/null
+define( [
+ "../../var/pnum"
+], function( pnum ) {
+ "use strict";
+
+ return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+} );
--- /dev/null
+define( function() {
+
+"use strict";
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+return function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./core/access",
+ "./data/var/dataPriv",
+ "./data/var/dataUser"
+], function( jQuery, access, dataPriv, dataUser ) {
+
+"use strict";
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+ if ( data === "true" ) {
+ return true;
+ }
+
+ if ( data === "false" ) {
+ return false;
+ }
+
+ if ( data === "null" ) {
+ return null;
+ }
+
+ // Only convert to a number if it doesn't change the string
+ if ( data === +data + "" ) {
+ return +data;
+ }
+
+ if ( rbrace.test( data ) ) {
+ return JSON.parse( data );
+ }
+
+ return data;
+}
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = getData( data );
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE 11 only
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // The key will always be camelCased in Data
+ data = dataUser.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each( function() {
+
+ // We always store the camelCased key
+ dataUser.set( this, key, value );
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/rnothtmlwhite",
+ "./var/acceptData"
+], function( jQuery, rnothtmlwhite, acceptData ) {
+
+"use strict";
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ cache: function( owner ) {
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ // Always use camelCase key (gh-2257)
+ if ( typeof data === "string" ) {
+ cache[ jQuery.camelCase( data ) ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+
+ // Always use camelCase key (gh-2257)
+ owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+ },
+ access: function( owner, key, value ) {
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ return this.get( owner, key );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key !== undefined ) {
+
+ // Support array or space separated string of keys
+ if ( Array.isArray( key ) ) {
+
+ // If key is an array of keys...
+ // We always set camelCase keys, so remove that.
+ key = key.map( jQuery.camelCase );
+ } else {
+ key = jQuery.camelCase( key );
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ key = key in cache ?
+ [ key ] :
+ ( key.match( rnothtmlwhite ) || [] );
+ }
+
+ i = key.length;
+
+ while ( i-- ) {
+ delete cache[ key[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <=35 - 45
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+
+return Data;
+} );
--- /dev/null
+define( function() {
+
+"use strict";
+
+/**
+ * Determines whether an object can have data
+ */
+return function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+} );
--- /dev/null
+define( [
+ "../Data"
+], function( Data ) {
+ "use strict";
+
+ return new Data();
+} );
--- /dev/null
+define( [
+ "../Data"
+], function( Data ) {
+ "use strict";
+
+ return new Data();
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/slice",
+ "./callbacks"
+], function( jQuery, slice ) {
+
+"use strict";
+
+function Identity( v ) {
+ return v;
+}
+function Thrower( ex ) {
+ throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+ var method;
+
+ try {
+
+ // Check for promise aspect first to privilege synchronous behavior
+ if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+ method.call( value ).done( resolve ).fail( reject );
+
+ // Other thenables
+ } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+ method.call( value, resolve, reject );
+
+ // Other non-thenables
+ } else {
+
+ // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+ // * false: [ value ].slice( 0 ) => resolve( value )
+ // * true: [ value ].slice( 1 ) => resolve()
+ resolve.apply( undefined, [ value ].slice( noValue ) );
+ }
+
+ // For Promises/A+, convert exceptions into rejections
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+ // Deferred#then to conditionally suppress rejection.
+ } catch ( value ) {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ reject.apply( undefined, [ value ] );
+ }
+}
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [ "notify", "progress", jQuery.Callbacks( "memory" ),
+ jQuery.Callbacks( "memory" ), 2 ],
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ "catch": function( fn ) {
+ return promise.then( null, fn );
+ },
+
+ // Keep pipe for back-compat
+ pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+ var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+ then: function( onFulfilled, onRejected, onProgress ) {
+ var maxDepth = 0;
+ function resolve( depth, deferred, handler, special ) {
+ return function() {
+ var that = this,
+ args = arguments,
+ mightThrow = function() {
+ var returned, then;
+
+ // Support: Promises/A+ section 2.3.3.3.3
+ // https://promisesaplus.com/#point-59
+ // Ignore double-resolution attempts
+ if ( depth < maxDepth ) {
+ return;
+ }
+
+ returned = handler.apply( that, args );
+
+ // Support: Promises/A+ section 2.3.1
+ // https://promisesaplus.com/#point-48
+ if ( returned === deferred.promise() ) {
+ throw new TypeError( "Thenable self-resolution" );
+ }
+
+ // Support: Promises/A+ sections 2.3.3.1, 3.5
+ // https://promisesaplus.com/#point-54
+ // https://promisesaplus.com/#point-75
+ // Retrieve `then` only once
+ then = returned &&
+
+ // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ ( typeof returned === "object" ||
+ typeof returned === "function" ) &&
+ returned.then;
+
+ // Handle a returned thenable
+ if ( jQuery.isFunction( then ) ) {
+
+ // Special processors (notify) just wait for resolution
+ if ( special ) {
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special )
+ );
+
+ // Normal processors (resolve) also hook into progress
+ } else {
+
+ // ...and disregard older resolution values
+ maxDepth++;
+
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special ),
+ resolve( maxDepth, deferred, Identity,
+ deferred.notifyWith )
+ );
+ }
+
+ // Handle all other returned values
+ } else {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Identity ) {
+ that = undefined;
+ args = [ returned ];
+ }
+
+ // Process the value(s)
+ // Default process is resolve
+ ( special || deferred.resolveWith )( that, args );
+ }
+ },
+
+ // Only normal processors (resolve) catch and reject exceptions
+ process = special ?
+ mightThrow :
+ function() {
+ try {
+ mightThrow();
+ } catch ( e ) {
+
+ if ( jQuery.Deferred.exceptionHook ) {
+ jQuery.Deferred.exceptionHook( e,
+ process.stackTrace );
+ }
+
+ // Support: Promises/A+ section 2.3.3.3.4.1
+ // https://promisesaplus.com/#point-61
+ // Ignore post-resolution exceptions
+ if ( depth + 1 >= maxDepth ) {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Thrower ) {
+ that = undefined;
+ args = [ e ];
+ }
+
+ deferred.rejectWith( that, args );
+ }
+ }
+ };
+
+ // Support: Promises/A+ section 2.3.3.3.1
+ // https://promisesaplus.com/#point-57
+ // Re-resolve promises immediately to dodge false rejection from
+ // subsequent errors
+ if ( depth ) {
+ process();
+ } else {
+
+ // Call an optional hook to record the stack, in case of exception
+ // since it's otherwise lost when execution goes async
+ if ( jQuery.Deferred.getStackHook ) {
+ process.stackTrace = jQuery.Deferred.getStackHook();
+ }
+ window.setTimeout( process );
+ }
+ };
+ }
+
+ return jQuery.Deferred( function( newDefer ) {
+
+ // progress_handlers.add( ... )
+ tuples[ 0 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onProgress ) ?
+ onProgress :
+ Identity,
+ newDefer.notifyWith
+ )
+ );
+
+ // fulfilled_handlers.add( ... )
+ tuples[ 1 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onFulfilled ) ?
+ onFulfilled :
+ Identity
+ )
+ );
+
+ // rejected_handlers.add( ... )
+ tuples[ 2 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onRejected ) ?
+ onRejected :
+ Thrower
+ )
+ );
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 5 ];
+
+ // promise.progress = list.add
+ // promise.done = list.add
+ // promise.fail = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(
+ function() {
+
+ // state = "resolved" (i.e., fulfilled)
+ // state = "rejected"
+ state = stateString;
+ },
+
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[ 3 - i ][ 2 ].disable,
+
+ // progress_callbacks.lock
+ tuples[ 0 ][ 2 ].lock
+ );
+ }
+
+ // progress_handlers.fire
+ // fulfilled_handlers.fire
+ // rejected_handlers.fire
+ list.add( tuple[ 3 ].fire );
+
+ // deferred.notify = function() { deferred.notifyWith(...) }
+ // deferred.resolve = function() { deferred.resolveWith(...) }
+ // deferred.reject = function() { deferred.rejectWith(...) }
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+ return this;
+ };
+
+ // deferred.notifyWith = list.fireWith
+ // deferred.resolveWith = list.fireWith
+ // deferred.rejectWith = list.fireWith
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( singleValue ) {
+ var
+
+ // count of uncompleted subordinates
+ remaining = arguments.length,
+
+ // count of unprocessed arguments
+ i = remaining,
+
+ // subordinate fulfillment data
+ resolveContexts = Array( i ),
+ resolveValues = slice.call( arguments ),
+
+ // the master Deferred
+ master = jQuery.Deferred(),
+
+ // subordinate callback factory
+ updateFunc = function( i ) {
+ return function( value ) {
+ resolveContexts[ i ] = this;
+ resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( !( --remaining ) ) {
+ master.resolveWith( resolveContexts, resolveValues );
+ }
+ };
+ };
+
+ // Single- and empty arguments are adopted like Promise.resolve
+ if ( remaining <= 1 ) {
+ adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+ !remaining );
+
+ // Use .then() to unwrap secondary thenables (cf. gh-3000)
+ if ( master.state() === "pending" ||
+ jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+ return master.then();
+ }
+ }
+
+ // Multiple arguments are aggregated like Promise.all array elements
+ while ( i-- ) {
+ adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+ }
+
+ return master.promise();
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../deferred"
+], function( jQuery ) {
+
+"use strict";
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+ // Support: IE 8 - 9 only
+ // Console exists when dev tools are open, which can happen at any time
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+ }
+};
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./core/nodeName"
+], function( jQuery, nodeName ) {
+
+"use strict";
+
+jQuery.fn.extend( {
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ?
+ this.off( selector, "**" ) :
+ this.off( types, selector || "**", fn );
+ }
+} );
+
+jQuery.holdReady = function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./core/access",
+ "./css"
+], function( jQuery, access ) {
+
+"use strict";
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+ function( defaultExtra, funcName ) {
+
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+
+ // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+ return funcName.indexOf( "outer" ) === 0 ?
+ elem[ "inner" + name ] :
+ elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable );
+ };
+ } );
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/document",
+ "./var/rcssNum",
+ "./var/rnothtmlwhite",
+ "./css/var/cssExpand",
+ "./css/var/isHiddenWithinTree",
+ "./css/var/swap",
+ "./css/adjustCSS",
+ "./data/var/dataPriv",
+ "./css/showHide",
+
+ "./core/init",
+ "./queue",
+ "./deferred",
+ "./traversing",
+ "./manipulation",
+ "./css",
+ "./effects/Tween"
+], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap,
+ adjustCSS, dataPriv, showHide ) {
+
+"use strict";
+
+var
+ fxNow, inProgress,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rrun = /queueHooks$/;
+
+function schedule() {
+ if ( inProgress ) {
+ if ( document.hidden === false && window.requestAnimationFrame ) {
+ window.requestAnimationFrame( schedule );
+ } else {
+ window.setTimeout( schedule, jQuery.fx.interval );
+ }
+
+ jQuery.fx.tick();
+ }
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ window.setTimeout( function() {
+ fxNow = undefined;
+ } );
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // If we include width, step value is 1 to do all cssExpand values,
+ // otherwise step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+ // We're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+ isBox = "width" in props || "height" in props,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHiddenWithinTree( elem ),
+ dataShow = dataPriv.get( elem, "fxshow" );
+
+ // Queue-skipping animations hijack the fx hooks
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always( function() {
+
+ // Ensure the complete handler is called before this completes
+ anim.always( function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ } );
+ } );
+ }
+
+ // Detect show/hide animations
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.test( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // Pretend to be hidden if this is a "show" and
+ // there is still data from a stopped show/hide
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+
+ // Ignore all other no-op show/hide data
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ // Bail out if this is a no-op like .hide().hide()
+ propTween = !jQuery.isEmptyObject( props );
+ if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+ return;
+ }
+
+ // Restrict "overflow" and "display" styles during box animations
+ if ( isBox && elem.nodeType === 1 ) {
+
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Record all 3 overflow attributes because IE does not infer the shorthand
+ // from identically-valued overflowX and overflowY
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Identify a display type, preferring old show/hide data over the CSS cascade
+ restoreDisplay = dataShow && dataShow.display;
+ if ( restoreDisplay == null ) {
+ restoreDisplay = dataPriv.get( elem, "display" );
+ }
+ display = jQuery.css( elem, "display" );
+ if ( display === "none" ) {
+ if ( restoreDisplay ) {
+ display = restoreDisplay;
+ } else {
+
+ // Get nonempty value(s) by temporarily forcing visibility
+ showHide( [ elem ], true );
+ restoreDisplay = elem.style.display || restoreDisplay;
+ display = jQuery.css( elem, "display" );
+ showHide( [ elem ] );
+ }
+ }
+
+ // Animate inline elements as inline-block
+ if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+ if ( jQuery.css( elem, "float" ) === "none" ) {
+
+ // Restore the original display value at the end of pure show/hide animations
+ if ( !propTween ) {
+ anim.done( function() {
+ style.display = restoreDisplay;
+ } );
+ if ( restoreDisplay == null ) {
+ display = style.display;
+ restoreDisplay = display === "none" ? "" : display;
+ }
+ }
+ style.display = "inline-block";
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always( function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ } );
+ }
+
+ // Implement show/hide animations
+ propTween = false;
+ for ( prop in orig ) {
+
+ // General show/hide setup for this element animation
+ if ( !propTween ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+ }
+
+ // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+
+ // Show elements before animating them
+ if ( hidden ) {
+ showHide( [ elem ], true );
+ }
+
+ /* eslint-disable no-loop-func */
+
+ anim.done( function() {
+
+ /* eslint-enable no-loop-func */
+
+ // The final step of a "hide" animation is actually hiding the element
+ if ( !hidden ) {
+ showHide( [ elem ] );
+ }
+ dataPriv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ } );
+ }
+
+ // Per-property setup
+ propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = propTween.start;
+ if ( hidden ) {
+ propTween.end = propTween.start;
+ propTween.start = 0;
+ }
+ }
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( Array.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // Not quite $.extend, this won't overwrite existing keys.
+ // Reusing 'index' because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = Animation.prefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+
+ // Don't match elem in the :animated selector
+ delete tick.elem;
+ } ),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+ // Support: Android 2.3 only
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+ // If there's more to do, yield
+ if ( percent < 1 && length ) {
+ return remaining;
+ }
+
+ // If this was an empty animation, synthesize a final progress notification
+ if ( !length ) {
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
+ }
+
+ // Resolve the animation and report its conclusion
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ },
+ animation = deferred.promise( {
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, {
+ specialEasing: {},
+ easing: jQuery.easing._default
+ }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+
+ // If we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // Resolve when we played the last frame; otherwise, reject
+ if ( gotoEnd ) {
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ } ),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length; index++ ) {
+ result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ if ( jQuery.isFunction( result.stop ) ) {
+ jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+ jQuery.proxy( result.stop, result );
+ }
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ // Attach callbacks from options
+ animation
+ .progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ } )
+ );
+
+ return animation;
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweeners: {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value );
+ adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+ return tween;
+ } ]
+ },
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.match( rnothtmlwhite );
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length; index++ ) {
+ prop = props[ index ];
+ Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+ Animation.tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilters: [ defaultPrefilter ],
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ Animation.prefilters.unshift( callback );
+ } else {
+ Animation.prefilters.push( callback );
+ }
+ }
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ // Go to the end state if fx are off
+ if ( jQuery.fx.off ) {
+ opt.duration = 0;
+
+ } else {
+ if ( typeof opt.duration !== "number" ) {
+ if ( opt.duration in jQuery.fx.speeds ) {
+ opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+ } else {
+ opt.duration = jQuery.fx.speeds._default;
+ }
+ }
+ }
+
+ // Normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend( {
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // Show any hidden elements after setting opacity to 0
+ return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+ // Animate to the value specified
+ .end().animate( { opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || dataPriv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each( function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = dataPriv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this &&
+ ( type == null || timers[ index ].queue === type ) ) {
+
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Start the next in the queue if the last step wasn't forced.
+ // Timers currently will call their complete callbacks, which
+ // will dequeue but only if they were gotoEnd.
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each( function() {
+ var index,
+ data = dataPriv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // Enable finishing flag on private data
+ data.finish = true;
+
+ // Empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // Look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // Turn off finishing flag
+ delete data.finish;
+ } );
+ }
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+ slideDown: genFx( "show" ),
+ slideUp: genFx( "hide" ),
+ slideToggle: genFx( "toggle" ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+
+ // Run the timer and safely remove it when done (allowing for external removal)
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ jQuery.fx.start();
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+ if ( inProgress ) {
+ return;
+ }
+
+ inProgress = true;
+ schedule();
+};
+
+jQuery.fx.stop = function() {
+ inProgress = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+
+ // Default speed
+ _default: 400
+};
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../css"
+], function( jQuery ) {
+
+"use strict";
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || jQuery.easing._default;
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ // Use a property on the element directly when it is not a DOM element,
+ // or when there is no matching style property that exists.
+ if ( tween.elem.nodeType !== 1 ||
+ tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // Passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails.
+ // Simple values such as "10px" are parsed to Float;
+ // complex values such as "rotate(1rad)" are returned as-is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+
+ // Use step hook for back compat.
+ // Use cssHook if its there.
+ // Use .style if available and use plain properties where available.
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.nodeType === 1 &&
+ ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+ jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ },
+ _default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../selector",
+ "../effects"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.expr.pseudos.animated = function( elem ) {
+ return jQuery.grep( jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ } ).length;
+};
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/document",
+ "./var/documentElement",
+ "./var/rnothtmlwhite",
+ "./var/slice",
+ "./data/var/dataPriv",
+ "./core/nodeName",
+
+ "./core/init",
+ "./selector"
+], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv, nodeName ) {
+
+"use strict";
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Ensure that invalid selectors throw exceptions at attach time
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+ if ( selector ) {
+ jQuery.find.matchesSelector( documentElement, selector );
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( nativeEvent ) {
+
+ // Make a writable jQuery.Event from the native event object
+ var event = jQuery.event.fix( nativeEvent );
+
+ var i, j, ret, matched, handleObj, handlerQueue,
+ args = new Array( arguments.length ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+
+ for ( i = 1; i < arguments.length; i++ ) {
+ args[ i ] = arguments[ i ];
+ }
+
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ if ( delegateCount &&
+
+ // Support: IE <=9
+ // Black-hole SVG <use> instance trees (trac-13180)
+ cur.nodeType &&
+
+ // Support: Firefox <=42
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+ // Support: IE 11 only
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+ !( event.type === "click" && event.button >= 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+ matchedHandlers = [];
+ matchedSelectors = {};
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matchedSelectors[ sel ] === undefined ) {
+ matchedSelectors[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matchedSelectors[ sel ] ) {
+ matchedHandlers.push( handleObj );
+ }
+ }
+ if ( matchedHandlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ cur = this;
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ addProp: function( name, hook ) {
+ Object.defineProperty( jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+
+ get: jQuery.isFunction( hook ) ?
+ function() {
+ if ( this.originalEvent ) {
+ return hook( this.originalEvent );
+ }
+ } :
+ function() {
+ if ( this.originalEvent ) {
+ return this.originalEvent[ name ];
+ }
+ },
+
+ set: function( value ) {
+ Object.defineProperty( this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: value
+ } );
+ }
+ } );
+ },
+
+ fix: function( originalEvent ) {
+ return originalEvent[ jQuery.expando ] ?
+ originalEvent :
+ new jQuery.Event( originalEvent );
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android <=2.3 only
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Create target properties
+ // Support: Safari <=6 - 7 only
+ // Target should not be a text node (#504, #13143)
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
+ src.target.parentNode :
+ src.target;
+
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+
+ which: function( event ) {
+ var button = event.button;
+
+ // Add which for key events
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
+ return event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+ if ( button & 1 ) {
+ return 1;
+ }
+
+ if ( button & 2 ) {
+ return 3;
+ }
+
+ if ( button & 4 ) {
+ return 2;
+ }
+
+ return 0;
+ }
+
+ return event.which;
+ }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../event"
+], function( jQuery ) {
+
+"use strict";
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+ "ajaxStart",
+ "ajaxStop",
+ "ajaxComplete",
+ "ajaxError",
+ "ajaxSuccess",
+ "ajaxSend"
+], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+} );
+
+} );
--- /dev/null
+define( [
+ "../core",
+
+ "../event",
+ "./trigger"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+ function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+} );
+
+jQuery.fn.extend( {
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../data/var/dataPriv",
+ "./support",
+
+ "../event",
+ "./trigger"
+], function( jQuery, dataPriv, support ) {
+
+"use strict";
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+ jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ dataPriv.remove( doc, fix );
+
+ } else {
+ dataPriv.access( doc, fix, attaches );
+ }
+ }
+ };
+ } );
+}
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../var/support"
+], function( support ) {
+
+"use strict";
+
+support.focusin = "onfocusin" in window;
+
+return support;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/document",
+ "../data/var/dataPriv",
+ "../data/var/acceptData",
+ "../var/hasOwn",
+
+ "../event"
+], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
+
+"use strict";
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "." ) > -1 ) {
+
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split( "." );
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join( "." );
+ event.rnamespace = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === ( elem.ownerDocument || document ) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+ dataPriv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( ( !special._default ||
+ special._default.apply( eventPath.pop(), data ) === false ) &&
+ acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ // Piggyback on a donor event to simulate a different one
+ // Used only for `focus(in | out)` events
+ simulate: function( type, elem, event ) {
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true
+ }
+ );
+
+ jQuery.event.trigger( e, null, elem );
+ }
+
+} );
+
+jQuery.fn.extend( {
+
+ trigger: function( type, data ) {
+ return this.each( function() {
+ jQuery.event.trigger( type, data, this );
+ } );
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[ 0 ];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core"
+], function( jQuery ) {
+
+"use strict";
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ } );
+}
+
+} );
--- /dev/null
+define( [
+ "../core"
+], function( jQuery, noGlobal ) {
+
+"use strict";
+
+var
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./selector",
+ "./traversing",
+ "./callbacks",
+ "./deferred",
+ "./deferred/exceptionHook",
+ "./core/ready",
+ "./data",
+ "./queue",
+ "./queue/delay",
+ "./attributes",
+ "./event",
+ "./event/alias",
+ "./event/focusin",
+ "./manipulation",
+ "./manipulation/_evalUrl",
+ "./wrap",
+ "./css",
+ "./css/hiddenVisibleSelectors",
+ "./serialize",
+ "./ajax",
+ "./ajax/xhr",
+ "./ajax/script",
+ "./ajax/jsonp",
+ "./ajax/load",
+ "./event/ajax",
+ "./effects",
+ "./effects/animatedSelector",
+ "./offset",
+ "./dimensions",
+ "./deprecated",
+ "./exports/amd",
+ "./exports/global"
+], function( jQuery ) {
+
+"use strict";
+
+return jQuery;
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/concat",
+ "./var/push",
+ "./core/access",
+ "./manipulation/var/rcheckableType",
+ "./manipulation/var/rtagName",
+ "./manipulation/var/rscriptType",
+ "./manipulation/wrapMap",
+ "./manipulation/getAll",
+ "./manipulation/setGlobalEval",
+ "./manipulation/buildFragment",
+ "./manipulation/support",
+
+ "./data/var/dataPriv",
+ "./data/var/dataUser",
+ "./data/var/acceptData",
+ "./core/DOMEval",
+ "./core/nodeName",
+
+ "./core/init",
+ "./traversing",
+ "./selector",
+ "./event"
+], function( jQuery, concat, push, access,
+ rcheckableType, rtagName, rscriptType,
+ wrapMap, getAll, setGlobalEval, buildFragment, support,
+ dataPriv, dataUser, acceptData, DOMEval, nodeName ) {
+
+"use strict";
+
+var
+
+ /* eslint-disable max-len */
+
+ // See https://github.com/eslint/eslint/issues/3229
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+ /* eslint-enable */
+
+ // Support: IE <=10 - 11, Edge 12 - 13
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /<script|<style|<link/i,
+
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+ if ( nodeName( elem, "table" ) &&
+ nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+ return jQuery( ">tbody", elem )[ 0 ] || elem;
+ }
+
+ return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute( "type" );
+ }
+
+ return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( dataPriv.hasData( src ) ) {
+ pdataOld = dataPriv.access( src );
+ pdataCur = dataPriv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( dataUser.hasData( src ) ) {
+ udataOld = dataUser.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ dataUser.set( dest, udataCur );
+ }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = collection.length,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return collection.each( function( index ) {
+ var self = collection.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ domManip( self, args, callback, ignored );
+ } );
+ }
+
+ if ( l ) {
+ fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ // Require either new content or an interest in ignored elements to invoke the callback
+ if ( first || ignored ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item
+ // instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( collection[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !dataPriv.access( node, "globalEval" ) &&
+ jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return collection;
+}
+
+function remove( elem, selector, keepData ) {
+ var node,
+ nodes = selector ? jQuery.filter( selector, elem ) : elem,
+ i = 0;
+
+ for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+ if ( !keepData && node.nodeType === 1 ) {
+ jQuery.cleanData( getAll( node ) );
+ }
+
+ if ( node.parentNode ) {
+ if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+ setGlobalEval( getAll( node, "script" ) );
+ }
+ node.parentNode.removeChild( node );
+ }
+ }
+
+ return elem;
+}
+
+jQuery.extend( {
+ htmlPrefilter: function( html ) {
+ return html.replace( rxhtmlTag, "<$1></$2>" );
+ },
+
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+ if ( acceptData( elem ) ) {
+ if ( ( data = elem[ dataPriv.expando ] ) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataPriv.expando ] = undefined;
+ }
+ if ( elem[ dataUser.expando ] ) {
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataUser.expando ] = undefined;
+ }
+ }
+ }
+ }
+} );
+
+jQuery.fn.extend( {
+ detach: function( selector ) {
+ return remove( this, selector, true );
+ },
+
+ remove: function( selector ) {
+ return remove( this, selector );
+ },
+
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each( function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ } );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ } );
+ },
+
+ prepend: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ } );
+ },
+
+ before: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ } );
+ },
+
+ after: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ } );
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; ( elem = this[ i ] ) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ } );
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = jQuery.htmlPrefilter( value );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch ( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var ignored = [];
+
+ // Make the changes, replacing each non-ignored context element with the new content
+ return domManip( this, arguments, function( elem ) {
+ var parent = this.parentNode;
+
+ if ( jQuery.inArray( this, ignored ) < 0 ) {
+ jQuery.cleanData( getAll( this ) );
+ if ( parent ) {
+ parent.replaceChild( elem, this );
+ }
+ }
+
+ // Force callback invocation
+ }, ignored );
+ }
+} );
+
+jQuery.each( {
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // .get() because push.apply(_, arraylike) throws on ancient WebKit
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../ajax"
+], function( jQuery ) {
+
+"use strict";
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax( {
+ url: url,
+
+ // Make this explicit, since user can override this through ajaxSetup (#11264)
+ type: "GET",
+ dataType: "script",
+ cache: true,
+ async: false,
+ global: false,
+ "throws": true
+ } );
+};
+
+return jQuery._evalUrl;
+
+} );
--- /dev/null
+define( [
+ "../core",
+ "./var/rtagName",
+ "./var/rscriptType",
+ "./wrapMap",
+ "./getAll",
+ "./setGlobalEval"
+], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
+
+"use strict";
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+return buildFragment;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../core/nodeName"
+], function( jQuery, nodeName ) {
+
+"use strict";
+
+function getAll( context, tag ) {
+
+ // Support: IE <=9 - 11 only
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret;
+
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ ret = context.getElementsByTagName( tag || "*" );
+
+ } else if ( typeof context.querySelectorAll !== "undefined" ) {
+ ret = context.querySelectorAll( tag || "*" );
+
+ } else {
+ ret = [];
+ }
+
+ if ( tag === undefined || tag && nodeName( context, tag ) ) {
+ return jQuery.merge( [ context ], ret );
+ }
+
+ return ret;
+}
+
+return getAll;
+} );
--- /dev/null
+define( [
+ "../data/var/dataPriv"
+], function( dataPriv ) {
+
+"use strict";
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+return setGlobalEval;
+} );
--- /dev/null
+define( [
+ "../var/document",
+ "../var/support"
+], function( document, support ) {
+
+"use strict";
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0 - 4.3 only
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Android <=4.1 only
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE <=11 only
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+
+return support;
+
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return ( /^(?:checkbox|radio)$/i );
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return ( /^$|\/(?:java|ecma)script/i );
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+} );
--- /dev/null
+define( function() {
+
+"use strict";
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE <=9 only
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting <tbody> or other required elements.
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+return wrapMap;
+} );
--- /dev/null
+define( [
+ "./core",
+ "./core/access",
+ "./var/document",
+ "./var/documentElement",
+ "./css/var/rnumnonpx",
+ "./css/curCSS",
+ "./css/addGetHookIf",
+ "./css/support",
+ "./core/nodeName",
+
+ "./core/init",
+ "./css",
+ "./selector" // contains
+], function( jQuery, access, document, documentElement, rnumnonpx,
+ curCSS, addGetHookIf, support, nodeName ) {
+
+"use strict";
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+
+ // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+ options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend( {
+ offset: function( options ) {
+
+ // Preserve chaining for setter
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each( function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ } );
+ }
+
+ var doc, docElem, rect, win,
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return;
+ }
+
+ // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a
+ // disconnected node in IE throws an error
+ if ( !elem.getClientRects().length ) {
+ return { top: 0, left: 0 };
+ }
+
+ rect = elem.getBoundingClientRect();
+
+ doc = elem.ownerDocument;
+ docElem = doc.documentElement;
+ win = doc.defaultView;
+
+ return {
+ top: rect.top + win.pageYOffset - docElem.clientTop,
+ left: rect.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+ // because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset = {
+ top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+ left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+ };
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ // This method will return documentElement in the following cases:
+ // 1) For the element inside the iframe without offsetParent, this method will return
+ // documentElement of the parent window
+ // 2) For the hidden or detached element
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
+ //
+ // but those exceptions were never presented as a real life use-cases
+ // and might be considered as more preferable results.
+ //
+ // This logic, however, is not guaranteed and can change at any point in the future
+ offsetParent: function() {
+ return this.map( function() {
+ var offsetParent = this.offsetParent;
+
+ while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || documentElement;
+ } );
+ }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+
+ // Coalesce documents and windows
+ var win;
+ if ( jQuery.isWindow( elem ) ) {
+ win = elem;
+ } else if ( elem.nodeType === 9 ) {
+ win = elem.defaultView;
+ }
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : win.pageXOffset,
+ top ? val : win.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length );
+ };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "./core",
+ "./data/var/dataPriv",
+ "./deferred",
+ "./callbacks"
+], function( jQuery, dataPriv ) {
+
+"use strict";
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || Array.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../queue",
+ "../effects" // Delay is optional because of this dependency
+], function( jQuery ) {
+
+"use strict";
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = window.setTimeout( next, time );
+ hooks.stop = function() {
+ window.clearTimeout( timeout );
+ };
+ } );
+};
+
+return jQuery.fn.delay;
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/document",
+ "./var/documentElement",
+ "./var/hasOwn",
+ "./var/indexOf"
+], function( jQuery, document, documentElement, hasOwn, indexOf ) {
+
+"use strict";
+
+/*
+ * Optional (non-Sizzle) selector module for custom builds.
+ *
+ * Note that this DOES NOT SUPPORT many documented jQuery
+ * features in exchange for its smaller size:
+ *
+ * Attribute not equal selector
+ * Positional selectors (:first; :eq(n); :odd; etc.)
+ * Type selectors (:input; :checkbox; :button; etc.)
+ * State-based selectors (:animated; :visible; :hidden; etc.)
+ * :has(selector)
+ * :not(complex selector)
+ * custom selectors via Sizzle extensions
+ * Leading combinators (e.g., $collection.find("> *"))
+ * Reliable functionality on XML fragments
+ * Requiring all parts of a selector to match elements under context
+ * (e.g., $div.find("div > *") now matches children of $div)
+ * Matching against non-elements
+ * Reliable sorting of disconnected nodes
+ * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
+ *
+ * If any of these are unacceptable tradeoffs, either use Sizzle or
+ * customize this stub for the project's specific needs.
+ */
+
+var hasDuplicate, sortInput,
+ sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
+ matches = documentElement.matches ||
+ documentElement.webkitMatchesSelector ||
+ documentElement.mozMatchesSelector ||
+ documentElement.oMatchesSelector ||
+ documentElement.msMatchesSelector,
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ };
+
+function sortOrder( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === document &&
+ jQuery.contains( document, a ) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === document &&
+ jQuery.contains( document, b ) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+}
+
+function uniqueSort( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ hasDuplicate = false;
+ sortInput = !sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( ( elem = results[ i++ ] ) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+}
+
+function escape( sel ) {
+ return ( sel + "" ).replace( rcssescape, fcssescape );
+}
+
+jQuery.extend( {
+ uniqueSort: uniqueSort,
+ unique: uniqueSort,
+ escapeSelector: escape,
+ find: function( selector, context, results, seed ) {
+ var elem, nodeType,
+ i = 0;
+
+ results = results || [];
+ context = context || document;
+
+ // Same basic safeguard as Sizzle
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ // Early return if context is not an element or document
+ if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( seed ) {
+ while ( ( elem = seed[ i++ ] ) ) {
+ if ( jQuery.find.matchesSelector( elem, selector ) ) {
+ results.push( elem );
+ }
+ }
+ } else {
+ jQuery.merge( results, context.querySelectorAll( selector ) );
+ }
+
+ return results;
+ },
+ text: function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+
+ // If no nodeType, this is expected to be an array
+ while ( ( node = elem[ i++ ] ) ) {
+
+ // Do not traverse comment nodes
+ ret += jQuery.text( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+
+ // Use textContent for elements
+ return elem.textContent;
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+ },
+ contains: function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
+ },
+ isXMLDoc: function( elem ) {
+
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && ( elem.ownerDocument || elem ).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+ },
+ expr: {
+ attrHandle: {},
+ match: {
+ bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
+ "|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
+ needsContext: /^[\x20\t\r\n\f]*[>+~]/
+ }
+ }
+} );
+
+jQuery.extend( jQuery.find, {
+ matches: function( expr, elements ) {
+ return jQuery.find( expr, null, null, elements );
+ },
+ matchesSelector: function( elem, expr ) {
+ return matches.call( elem, expr );
+ },
+ attr: function( elem, name ) {
+ var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
+
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, jQuery.isXMLDoc( elem ) ) :
+ undefined;
+ return value !== undefined ? value : elem.getAttribute( name );
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "./core",
+ "../external/sizzle/dist/sizzle"
+], function( jQuery, Sizzle ) {
+
+"use strict";
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+} );
--- /dev/null
+define( [ "./selector-sizzle" ], function() {
+ "use strict";
+} );
--- /dev/null
+define( [
+ "./core",
+ "./manipulation/var/rcheckableType",
+ "./core/init",
+ "./traversing", // filter
+ "./attributes/prop"
+], function( jQuery, rcheckableType ) {
+
+"use strict";
+
+var
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( Array.isArray( obj ) ) {
+
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams(
+ prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+ v,
+ traditional,
+ add
+ );
+ }
+ } );
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, valueOrFunction ) {
+
+ // If value is a function, invoke it and use its return value
+ var value = jQuery.isFunction( valueOrFunction ) ?
+ valueOrFunction() :
+ valueOrFunction;
+
+ s[ s.length ] = encodeURIComponent( key ) + "=" +
+ encodeURIComponent( value == null ? "" : value );
+ };
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ } );
+
+ } else {
+
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map( function() {
+
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ } )
+ .filter( function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ } )
+ .map( function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ if ( val == null ) {
+ return null;
+ }
+
+ if ( Array.isArray( val ) ) {
+ return jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } );
+ }
+
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ).get();
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "./core",
+ "./var/indexOf",
+ "./traversing/var/dir",
+ "./traversing/var/siblings",
+ "./traversing/var/rneedsContext",
+ "./core/nodeName",
+
+ "./core/init",
+ "./traversing/findFilter",
+ "./selector"
+], function( jQuery, indexOf, dir, siblings, rneedsContext, nodeName ) {
+
+"use strict";
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ targets = typeof selectors !== "string" && jQuery( selectors );
+
+ // Positional selectors never match, since there's no _selection_ context
+ if ( !rneedsContext.test( selectors ) ) {
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( targets ?
+ targets.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ if ( nodeName( elem, "iframe" ) ) {
+ return elem.contentDocument;
+ }
+
+ // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+ // Treat the template element as a regular one in browsers that
+ // don't support it.
+ if ( nodeName( elem, "template" ) ) {
+ elem = elem.content || elem;
+ }
+
+ return jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+
+return jQuery;
+} );
--- /dev/null
+define( [
+ "../core",
+ "../var/indexOf",
+ "./var/rneedsContext",
+ "../selector"
+], function( jQuery, indexOf, rneedsContext ) {
+
+"use strict";
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+ }
+
+ // Single element
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+ }
+
+ // Arraylike of elements (jQuery, arguments, Array)
+ if ( typeof qualifier !== "string" ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+ }
+
+ // Simple selector that can be filtered directly, removing non-Elements
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ // Complex selector, compare the two sets, removing non-Elements
+ qualifier = jQuery.filter( qualifier, elements );
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+ } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ if ( elems.length === 1 && elem.nodeType === 1 ) {
+ return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+ }
+
+ return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i, ret,
+ len = this.length,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ ret = this.pushStack( [] );
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+} );
--- /dev/null
+define( [
+ "../../core"
+], function( jQuery ) {
+
+"use strict";
+
+return function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+} );
--- /dev/null
+define( [
+ "../../core",
+ "../../selector"
+], function( jQuery ) {
+ "use strict";
+
+ return jQuery.expr.match.needsContext;
+} );
--- /dev/null
+define( function() {
+
+"use strict";
+
+return function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+} );
--- /dev/null
+define( [
+ "./fnToString"
+], function( fnToString ) {
+ "use strict";
+
+ return fnToString.call( Object );
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return [];
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ // [[Class]] -> type pairs
+ return {};
+} );
--- /dev/null
+define( [
+ "./arr"
+], function( arr ) {
+ "use strict";
+
+ return arr.concat;
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return window.document;
+} );
--- /dev/null
+define( [
+ "./document"
+], function( document ) {
+ "use strict";
+
+ return document.documentElement;
+} );
--- /dev/null
+define( [
+ "./hasOwn"
+], function( hasOwn ) {
+ "use strict";
+
+ return hasOwn.toString;
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return Object.getPrototypeOf;
+} );
--- /dev/null
+define( [
+ "./class2type"
+], function( class2type ) {
+ "use strict";
+
+ return class2type.hasOwnProperty;
+} );
--- /dev/null
+define( [
+ "./arr"
+], function( arr ) {
+ "use strict";
+
+ return arr.indexOf;
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+} );
--- /dev/null
+define( [
+ "./arr"
+], function( arr ) {
+ "use strict";
+
+ return arr.push;
+} );
--- /dev/null
+define( [
+ "../var/pnum"
+], function( pnum ) {
+
+"use strict";
+
+return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ // Only count HTML whitespace
+ // Other whitespace should count in values
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#space-character
+ return ( /[^\x20\t\r\n\f]+/g );
+} );
--- /dev/null
+define( [
+ "./arr"
+], function( arr ) {
+ "use strict";
+
+ return arr.slice;
+} );
--- /dev/null
+define( function() {
+ "use strict";
+
+ // All support tests are defined in their respective modules.
+ return {};
+} );
--- /dev/null
+define( [
+ "./class2type"
+], function( class2type ) {
+ "use strict";
+
+ return class2type.toString;
+} );
--- /dev/null
+define( [
+ "./core",
+ "./core/init",
+ "./manipulation", // clone
+ "./traversing" // parent, contents
+], function( jQuery ) {
+
+"use strict";
+
+jQuery.fn.extend( {
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( this[ 0 ] ) {
+ if ( jQuery.isFunction( html ) ) {
+ html = html.call( this[ 0 ] );
+ }
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map( function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ } ).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).wrapInner( html.call( this, i ) );
+ } );
+ }
+
+ return this.each( function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ } );
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each( function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+ } );
+ },
+
+ unwrap: function( selector ) {
+ this.parent( selector ).not( "body" ).each( function() {
+ jQuery( this ).replaceWith( this.childNodes );
+ } );
+ return this;
+ }
+} );
+
+return jQuery;
+} );
--- /dev/null
+
+// a[download] attribute
+// When used on an <a>, this attribute signifies that the resource it
+// points to should be downloaded by the browser rather than navigating to it.
+// http://developers.whatwg.org/links.html#downloading-resources
+// By Addy Osmani
+
+Modernizr.addTest('adownload', 'download' in document.createElement('a'));
--- /dev/null
+// Mozilla Audio Data API
+// https://wiki.mozilla.org/Audio_Data_API
+// by Addy Osmani
+Modernizr.addTest('audiodata', !!(window.Audio));
--- /dev/null
+// Web Audio API
+// https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
+// By Addy Osmani
+Modernizr.addTest('webaudio', !!(window.webkitAudioContext || window.AudioContext));
--- /dev/null
+
+// Battery API
+// https://developer.mozilla.org/en/DOM/window.navigator.mozBattery
+// By: Paul Sayre
+
+Modernizr.addTest('battery',
+ !!Modernizr.prefixed('battery', navigator)
+);
\ No newline at end of file
--- /dev/null
+
+// Low Battery Level
+// Enable a developer to remove CPU intensive CSS/JS when battery is low
+// developer.mozilla.org/en/DOM/window.navigator.mozBattery
+// By: Paul Sayre
+
+Modernizr.addTest('lowbattery', function () {
+ var minLevel = 0.20,
+ battery = Modernizr.prefixed('battery', navigator);
+ return !!(battery && !battery.charging && battery.level <= minLevel);
+});
--- /dev/null
+// Blob constructor
+// http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob
+
+Modernizr.addTest('blobconstructor', function () {
+ try {
+ return !!new Blob();
+ } catch (e) {
+ return false;
+ }
+});
--- /dev/null
+// canvas.toDataURL type support
+// http://www.w3.org/TR/html5/the-canvas-element.html#dom-canvas-todataurl
+
+// This test is asynchronous. Watch out.
+
+(function () {
+
+ if (!Modernizr.canvas) {
+ return false;
+ }
+
+ var image = new Image(),
+ canvas = document.createElement('canvas'),
+ ctx = canvas.getContext('2d');
+
+ image.onload = function() {
+ ctx.drawImage(image, 0, 0);
+
+ Modernizr.addTest('todataurljpeg', function() {
+ return canvas.toDataURL('image/jpeg').indexOf('data:image/jpeg') === 0;
+ });
+ Modernizr.addTest('todataurlwebp', function() {
+ return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
+ });
+ };
+
+ image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==';
+}());
--- /dev/null
+// contentEditable
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable
+
+// this is known to false positive in some mobile browsers
+// here is a whitelist of verified working browsers:
+// https://github.com/NielsLeenheer/html5test/blob/549f6eac866aa861d9649a0707ff2c0157895706/scripts/engine.js#L2083
+
+Modernizr.addTest('contenteditable',
+ 'contentEditable' in document.documentElement);
--- /dev/null
+// Test for (experimental) Content Security Policy 1.1 support.
+//
+// This feature is still quite experimental, but is available now in Chrome 22.
+// If the `SecurityPolicy` property is available, you can be sure the browser
+// supports CSP. If it's not available, the browser still might support an
+// earlier version of the CSP spec.
+//
+// Editor's Draft: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
+
+Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document));
--- /dev/null
+// http://www.w3.org/TR/html5/interactive-elements.html#context-menus
+// Demo at http://thewebrocks.com/demos/context-menu/
+Modernizr.addTest(
+ 'contextmenu',
+ ('contextMenu' in document.documentElement && 'HTMLMenuItemElement' in window)
+);
+
+
+
+
+
--- /dev/null
+
+// by tauren
+// https://github.com/Modernizr/Modernizr/issues/191
+
+Modernizr.addTest('cookies', function () {
+ // Quick test if browser has cookieEnabled host property
+ if (navigator.cookieEnabled) return true;
+ // Create cookie
+ document.cookie = "cookietest=1";
+ var ret = document.cookie.indexOf("cookietest=") != -1;
+ // Delete cookie
+ document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
+ return ret;
+});
+
--- /dev/null
+// cors
+// By Theodoor van Donge
+Modernizr.addTest('cors', !!(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()));
\ No newline at end of file
--- /dev/null
+/*
+ https://developer.mozilla.org/en/CSS/background-position
+ http://www.w3.org/TR/css3-background/#background-position
+
+ Example: http://jsfiddle.net/Blink/bBXvt/
+*/
+
+(function() {
+
+ var elem = document.createElement('a'),
+ eStyle = elem.style,
+ val = "right 10px bottom 10px";
+
+ Modernizr.addTest('bgpositionshorthand', function(){
+ eStyle.cssText = "background-position: " + val + ";";
+ return (eStyle.backgroundPosition === val);
+ });
+
+}());
--- /dev/null
+/*
+ Allan Lei https://github.com/allanlei
+
+ Check adapted from https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js
+
+ Test: http://jsfiddle.net/allanlei/R8AYS/
+*/
+Modernizr.addTest('bgpositionxy', function() {
+ return Modernizr.testStyles('#modernizr {background-position: 3px 5px;}', function(elem) {
+ var cssStyleDeclaration = window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle;
+ var xSupport = (cssStyleDeclaration.backgroundPositionX == '3px') || (cssStyleDeclaration['background-position-x'] == '3px');
+ var ySupport = (cssStyleDeclaration.backgroundPositionY == '5px') || (cssStyleDeclaration['background-position-y'] == '5px');
+ return xSupport && ySupport;
+ });
+});
\ No newline at end of file
--- /dev/null
+// developer.mozilla.org/en/CSS/background-repeat
+
+// test page: jsbin.com/uzesun/
+// http://jsfiddle.net/ryanseddon/yMLTQ/6/
+
+(function(){
+
+
+function getBgRepeatValue(elem){
+ return (window.getComputedStyle ?
+ getComputedStyle(elem, null).getPropertyValue('background') :
+ elem.currentStyle['background']);
+}
+
+
+Modernizr.testStyles(' #modernizr { background-repeat: round; } ', function(elem, rule){
+
+ Modernizr.addTest('bgrepeatround', getBgRepeatValue(elem) == 'round');
+
+});
+
+
+
+Modernizr.testStyles(' #modernizr { background-repeat: space; } ', function(elem, rule){
+
+ Modernizr.addTest('bgrepeatspace', getBgRepeatValue(elem) == 'space');
+
+});
+
+
+})();
--- /dev/null
+
+// developer.mozilla.org/en/CSS/background-size
+
+Modernizr.testStyles( '#modernizr{background-size:cover}', function( elem ) {
+ var style = window.getComputedStyle ?
+ window.getComputedStyle( elem, null )
+ : elem.currentStyle;
+
+ Modernizr.addTest( 'bgsizecover', style.backgroundSize == 'cover' );
+});
\ No newline at end of file
--- /dev/null
+
+// developer.mozilla.org/en/CSS/box-sizing
+// github.com/Modernizr/Modernizr/issues/248
+
+Modernizr.addTest("boxsizing",function(){
+ return Modernizr.testAllProps("boxSizing") && (document.documentMode === undefined || document.documentMode > 7);
+});
+
+
--- /dev/null
+// Method of allowing calculated values for length units, i.e. width: calc(100%-3em) http://caniuse.com/#search=calc
+// By @calvein
+
+Modernizr.addTest('csscalc', function() {
+ var prop = 'width:';
+ var value = 'calc(10px);';
+ var el = document.createElement('div');
+
+ el.style.cssText = prop + Modernizr._prefixes.join(value + prop);
+
+ return !!el.style.length;
+});
--- /dev/null
+// cubic-bezier values can't be > 1 for Webkit until bug #45761 (https://bugs.webkit.org/show_bug.cgi?id=45761) is fixed
+// By @calvein
+
+Modernizr.addTest('cubicbezierrange', function() {
+ var el = document.createElement('div');
+ el.style.cssText = Modernizr._prefixes.join('transition-timing-function' + ':cubic-bezier(1,0,0,1.1); ');
+ return !!el.style.length;
+});
--- /dev/null
+
+// by alanhogan
+
+// https://github.com/Modernizr/Modernizr/issues/198
+// http://css-tricks.com/596-run-in/
+
+
+
+Modernizr.testStyles(' #modernizr { display: run-in; } ', function(elem, rule){
+
+ var ret = (window.getComputedStyle ?
+ getComputedStyle(elem, null).getPropertyValue('display') :
+ elem.currentStyle['display']);
+
+ Modernizr.addTest('display-runin', ret == 'run-in');
+
+});
+
--- /dev/null
+// display: table and table-cell test. (both are tested under one name "table-cell" )
+// By @scottjehl
+
+// all additional table display values are here: http://pastebin.com/Gk9PeVaQ though Scott has seen some IE false positives with that sort of weak detection.
+// more testing neccessary perhaps.
+
+Modernizr.addTest( "display-table",function(){
+
+ var doc = window.document,
+ docElem = doc.documentElement,
+ parent = doc.createElement( "div" ),
+ child = doc.createElement( "div" ),
+ childb = doc.createElement( "div" ),
+ ret;
+
+ parent.style.cssText = "display: table";
+ child.style.cssText = childb.style.cssText = "display: table-cell; padding: 10px";
+
+ parent.appendChild( child );
+ parent.appendChild( childb );
+ docElem.insertBefore( parent, docElem.firstChild );
+
+ ret = child.offsetLeft < childb.offsetLeft;
+ docElem.removeChild(parent);
+ return ret;
+});
+
--- /dev/null
+// https://github.com/Modernizr/Modernizr/issues/615
+// documentMode is needed for false positives in oldIE, please see issue above
+Modernizr.addTest('cssfilters', function() {
+ var el = document.createElement('div');
+ el.style.cssText = Modernizr._prefixes.join('filter' + ':blur(2px); ');
+ return !!el.style.length && ((document.documentMode === undefined || document.documentMode > 9));
+});
\ No newline at end of file
--- /dev/null
+/* see http://davidnewton.ca/the-current-state-of-hyphenation-on-the-web
+ http://davidnewton.ca/demos/hyphenation/test.html
+
+
+There are three tests:
+ 1. csshyphens - tests hyphens:auto actually adds hyphens to text
+ 2. softhyphens - tests that ­ does its job
+ 3. softhyphensfind - tests that in-browser Find functionality still works correctly with ­
+
+These tests currently require document.body to be present
+
+Hyphenation is language specific, sometimes.
+ See for more details: http://code.google.com/p/hyphenator/source/diff?spec=svn975&r=975&format=side&path=/trunk/Hyphenator.js#sc_svn975_313
+
+If loading Hyphenator.js via Modernizr.load, be cautious of issue 158: http://code.google.com/p/hyphenator/issues/detail?id=158
+
+More details at https://github.com/Modernizr/Modernizr/issues/312
+
+*/
+
+(function() {
+
+ if (!document.body){
+ window.console && console.warn('document.body doesn\'t exist. Modernizr hyphens test needs it.');
+ return;
+ }
+
+ // functional test of adding hyphens:auto
+ function test_hyphens_css() {
+ try {
+ /* create a div container and a span within that
+ * these have to be appended to document.body, otherwise some browsers can give false negative */
+ var div = document.createElement('div'),
+ span = document.createElement('span'),
+ divStyle = div.style,
+ spanHeight = 0,
+ spanWidth = 0,
+ result = false,
+ firstChild = document.body.firstElementChild || document.body.firstChild;
+
+ div.appendChild(span);
+ span.innerHTML = 'Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.';
+
+ document.body.insertBefore(div, firstChild);
+
+ /* get size of unhyphenated text */
+ divStyle.cssText = 'position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;';
+ spanHeight = span.offsetHeight;
+ spanWidth = span.offsetWidth;
+
+ /* compare size with hyphenated text */
+ divStyle.cssText = 'position:absolute;top:0;left:0;width:5em;text-align:justify;'+
+ 'text-justification:newspaper;'+
+ Modernizr._prefixes.join('hyphens:auto; ');
+
+ result = (span.offsetHeight != spanHeight || span.offsetWidth != spanWidth);
+
+ /* results and cleanup */
+ document.body.removeChild(div);
+ div.removeChild(span);
+
+ return result;
+ } catch(e) {
+ return false;
+ }
+ }
+
+ // for the softhyphens test
+ function test_hyphens(delimiter, testWidth) {
+ try {
+ /* create a div container and a span within that
+ * these have to be appended to document.body, otherwise some browsers can give false negative */
+ var div = document.createElement('div'),
+ span = document.createElement('span'),
+ divStyle = div.style,
+ spanSize = 0,
+ result = false,
+ result1 = false,
+ result2 = false,
+ firstChild = document.body.firstElementChild || document.body.firstChild;
+
+ divStyle.cssText = 'position:absolute;top:0;left:0;overflow:visible;width:1.25em;';
+ div.appendChild(span);
+ document.body.insertBefore(div, firstChild);
+
+
+ /* get height of unwrapped text */
+ span.innerHTML = 'mm';
+ spanSize = span.offsetHeight;
+
+ /* compare height w/ delimiter, to see if it wraps to new line */
+ span.innerHTML = 'm' + delimiter + 'm';
+ result1 = (span.offsetHeight > spanSize);
+
+ /* if we're testing the width too (i.e. for soft-hyphen, not zws),
+ * this is because tested Blackberry devices will wrap the text but not display the hyphen */
+ if (testWidth) {
+ /* get width of wrapped, non-hyphenated text */
+ span.innerHTML = 'm<br />m';
+ spanSize = span.offsetWidth;
+
+ /* compare width w/ wrapped w/ delimiter to see if hyphen is present */
+ span.innerHTML = 'm' + delimiter + 'm';
+ result2 = (span.offsetWidth > spanSize);
+ } else {
+ result2 = true;
+ }
+
+ /* results and cleanup */
+ if (result1 === true && result2 === true) { result = true; }
+ document.body.removeChild(div);
+ div.removeChild(span);
+
+ return result;
+ } catch(e) {
+ return false;
+ }
+ }
+
+ // testing if in-browser Find functionality will work on hyphenated text
+ function test_hyphens_find(delimiter) {
+ try {
+ /* create a dummy input for resetting selection location, and a div container
+ * these have to be appended to document.body, otherwise some browsers can give false negative
+ * div container gets the doubled testword, separated by the delimiter
+ * Note: giving a width to div gives false positive in iOS Safari */
+ var dummy = document.createElement('input'),
+ div = document.createElement('div'),
+ testword = 'lebowski',
+ result = false,
+ textrange,
+ firstChild = document.body.firstElementChild || document.body.firstChild;
+
+ div.innerHTML = testword + delimiter + testword;
+
+ document.body.insertBefore(div, firstChild);
+ document.body.insertBefore(dummy, div);
+
+
+ /* reset the selection to the dummy input element, i.e. BEFORE the div container
+ * stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area */
+ if (dummy.setSelectionRange) {
+ dummy.focus();
+ dummy.setSelectionRange(0,0);
+ } else if (dummy.createTextRange) {
+ textrange = dummy.createTextRange();
+ textrange.collapse(true);
+ textrange.moveEnd('character', 0);
+ textrange.moveStart('character', 0);
+ textrange.select();
+ }
+
+ /* try to find the doubled testword, without the delimiter */
+ if (window.find) {
+ result = window.find(testword + testword);
+ } else {
+ try {
+ textrange = window.self.document.body.createTextRange();
+ result = textrange.findText(testword + testword);
+ } catch(e) {
+ result = false;
+ }
+ }
+
+ document.body.removeChild(div);
+ document.body.removeChild(dummy);
+
+ return result;
+ } catch(e) {
+ return false;
+ }
+ }
+
+ Modernizr.addTest("csshyphens", function() {
+
+ if (!Modernizr.testAllProps('hyphens')) return false;
+
+ /* Chrome lies about its hyphens support so we need a more robust test
+ crbug.com/107111
+ */
+ try {
+ return test_hyphens_css();
+ } catch(e) {
+ return false;
+ }
+ });
+
+ Modernizr.addTest("softhyphens", function() {
+ try {
+ // use numeric entity instead of ­ in case it's XHTML
+ return test_hyphens('­', true) && test_hyphens('​', false);
+ } catch(e) {
+ return false;
+ }
+ });
+
+ Modernizr.addTest("softhyphensfind", function() {
+ try {
+ return test_hyphens_find('­') && test_hyphens_find('​');
+ } catch(e) {
+ return false;
+ }
+ });
+
+})();
--- /dev/null
+// last-child pseudo selector
+// https://github.com/Modernizr/Modernizr/pull/304
+
+
+Modernizr.addTest('lastchild', function(){
+
+ return Modernizr.testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function (elem) {
+ return elem.lastChild.offsetWidth > elem.firstChild.offsetWidth;
+ }, 2);
+
+});
--- /dev/null
+// this tests passes for webkit's proprietary `-webkit-mask` feature
+// www.webkit.org/blog/181/css-masks/
+// developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html
+
+// it does not pass mozilla's implementation of `mask` for SVG
+
+// developer.mozilla.org/en/CSS/mask
+// developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content
+
+// Can combine with clippaths for awesomeness: http://generic.cx/for/webkit/test.html
+
+Modernizr.addTest('cssmask', Modernizr.testAllProps('maskRepeat'));
--- /dev/null
+
+
+Modernizr.addTest('mediaqueries', Modernizr.mq('only all'));
\ No newline at end of file
--- /dev/null
+
+// dev.opera.com/articles/view/css3-object-fit-object-position/
+
+Modernizr.addTest('object-fit',
+ !!Modernizr.prefixed('objectFit')
+);
\ No newline at end of file
--- /dev/null
+
+// johanbrook.com/browsers/native-momentum-scrolling-ios-5/
+// introduced in iOS5b2. Possible API may change...
+
+Modernizr.addTest("overflowscrolling",function(){
+ return Modernizr.testAllProps("overflowScrolling");
+});
+
+
--- /dev/null
+
+// developer.mozilla.org/en/CSS/pointer-events
+
+// Test and project pages:
+// ausi.github.com/Feature-detection-technique-for-pointer-events/
+// github.com/ausi/Feature-detection-technique-for-pointer-events/wiki
+// github.com/Modernizr/Modernizr/issues/80
+
+
+Modernizr.addTest('pointerevents', function(){
+ var element = document.createElement('x'),
+ documentElement = document.documentElement,
+ getComputedStyle = window.getComputedStyle,
+ supports;
+ if(!('pointerEvents' in element.style)){
+ return false;
+ }
+ element.style.pointerEvents = 'auto';
+ element.style.pointerEvents = 'x';
+ documentElement.appendChild(element);
+ supports = getComputedStyle &&
+ getComputedStyle(element, '').pointerEvents === 'auto';
+ documentElement.removeChild(element);
+ return !!supports;
+});
--- /dev/null
+// Sticky positioning - constrains an element to be positioned inside the
+// intersection of its container box, and the viewport.
+Modernizr.addTest('csspositionsticky', function () {
+
+ var prop = 'position:';
+ var value = 'sticky';
+ var el = document.createElement('modernizr');
+ var mStyle = el.style;
+
+ mStyle.cssText = prop + Modernizr._prefixes.join(value + ';' + prop).slice(0, -prop.length);
+
+ return mStyle.position.indexOf(value) !== -1;
+});
--- /dev/null
+// CSS Regions
+// http://www.w3.org/TR/css3-regions/
+// By: Mihai Balan
+
+// We start with a CSS parser test then we check page geometry to see if it's affected by regions
+// Later we might be able to retire the second part, as WebKit builds with the false positives die out
+
+Modernizr.addTest('regions', function() {
+
+ /* Get the 'flowFrom' property name available in the browser. Either default or vendor prefixed.
+ If the property name can't be found we'll get Boolean 'false' and fail quickly */
+ var flowFromProperty = Modernizr.prefixed("flowFrom"),
+ flowIntoProperty = Modernizr.prefixed("flowInto");
+
+ if (!flowFromProperty || !flowIntoProperty){
+ return false;
+ }
+
+ /* If CSS parsing is there, try to determine if regions actually work. */
+ var container = document.createElement('div'),
+ content = document.createElement('div'),
+ region = document.createElement('div'),
+
+ /* we create a random, unlikely to be generated flow number to make sure we don't
+ clash with anything more vanilla, like 'flow', or 'article', or 'f1' */
+ flowName = 'modernizr_flow_for_regions_check';
+
+ /* First create a div with two adjacent divs inside it. The first will be the
+ content, the second will be the region. To be able to distinguish between the two,
+ we'll give the region a particular padding */
+ content.innerText = 'M';
+ container.style.cssText = 'top: 150px; left: 150px; padding: 0px;';
+ region.style.cssText = 'width: 50px; height: 50px; padding: 42px;';
+
+ region.style[flowFromProperty] = flowName;
+ container.appendChild(content);
+ container.appendChild(region);
+ document.documentElement.appendChild(container);
+
+ /* Now compute the bounding client rect, before and after attempting to flow the
+ content div in the region div. If regions are enabled, the after bounding rect
+ should reflect the padding of the region div.*/
+ var flowedRect, delta,
+ plainRect = content.getBoundingClientRect();
+
+
+ content.style[flowIntoProperty] = flowName;
+ flowedRect = content.getBoundingClientRect();
+
+ delta = flowedRect.left - plainRect.left;
+ document.documentElement.removeChild(container);
+ content = region = container = undefined;
+
+ return (delta == 42);
+});
--- /dev/null
+
+// test by github.com/nsfmc
+
+// "The 'rem' unit ('root em') is relative to the computed
+// value of the 'font-size' value of the root element."
+// http://www.w3.org/TR/css3-values/#relative0
+// you can test by checking if the prop was ditched
+
+// http://snook.ca/archives/html_and_css/font-size-with-rem
+
+Modernizr.addTest('cssremunit', function(){
+
+ var div = document.createElement('div');
+ try {
+ div.style.fontSize = '3rem';
+ } catch(er){}
+ return (/rem/).test(div.style.fontSize);
+
+});
--- /dev/null
+
+// Test for CSS 3 UI "resize" property
+// http://www.w3.org/TR/css3-ui/#resize
+// https://developer.mozilla.org/en/CSS/resize
+
+Modernizr.addTest('cssresize', Modernizr.testAllProps('resize'));
+
+
--- /dev/null
+// Stylable scrollbars detection
+Modernizr.addTest('cssscrollbar', function() {
+
+ var bool,
+
+ styles = "#modernizr{overflow: scroll; width: 40px }#" +
+ Modernizr._prefixes
+ .join("scrollbar{width:0px}"+' #modernizr::')
+ .split('#')
+ .slice(1)
+ .join('#') + "scrollbar{width:0px}";
+
+ Modernizr.testStyles(styles, function(node) {
+ bool = 'scrollWidth' in node && node.scrollWidth == 40;
+ });
+
+ return bool;
+
+});
--- /dev/null
+
+// http://html.adobe.com/webplatform/layout/shapes
+
+Modernizr.addTest('shapes', Modernizr.testAllProps('shapeOutside', 'content-box', true));
--- /dev/null
+/*
+ * Test for SubPixel Font Rendering
+ * (to infer if GDI or DirectWrite is used on Windows)
+ * Authors: @derSchepp, @gerritvanaaken, @rodneyrehm, @yatil, @ryanseddon
+ * Web: https://github.com/gerritvanaaken/subpixeldetect
+ */
+Modernizr.addTest('subpixelfont', function() {
+ var bool,
+ styles = "#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}";
+
+ // see https://github.com/Modernizr/Modernizr/blob/master/modernizr.js#L97
+ Modernizr.testStyles(styles, function(elem) {
+ var subpixel = elem.firstChild;
+
+ subpixel.innerHTML = 'This is a text written in Arial';
+
+ bool = window.getComputedStyle ?
+ window.getComputedStyle(subpixel, null).getPropertyValue("width") !== '44px'
+ : false;
+ }, 1, ['subpixel']);
+
+ return bool;
+});
--- /dev/null
+// http://dev.w3.org/csswg/css3-conditional/#at-supports
+// github.com/Modernizr/Modernizr/issues/648
+// Relies on the fact that a browser vendor should expose the CSSSupportsRule interface
+// http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface
+
+Modernizr.addTest("supports","CSSSupportsRule" in window);
\ No newline at end of file
--- /dev/null
+// -moz-user-select:none test.
+
+// by ryan seddon
+//https://github.com/Modernizr/Modernizr/issues/250
+
+
+Modernizr.addTest("userselect",function(){
+ return Modernizr.testAllProps("user-select");
+});
+
--- /dev/null
+// https://github.com/Modernizr/Modernizr/issues/572
+// Similar to http://jsfiddle.net/FWeinb/etnYC/
+Modernizr.addTest('cssvhunit', function() {
+ var bool;
+ Modernizr.testStyles("#modernizr { height: 50vh; }", function(elem, rule) {
+ var height = parseInt(window.innerHeight/2,10),
+ compStyle = parseInt((window.getComputedStyle ?
+ getComputedStyle(elem, null) :
+ elem.currentStyle)["height"],10);
+
+ bool= (compStyle == height);
+ });
+ return bool;
+});
\ No newline at end of file
--- /dev/null
+// https://github.com/Modernizr/Modernizr/issues/572
+// http://jsfiddle.net/glsee/JDsWQ/4/
+Modernizr.addTest('cssvmaxunit', function(){
+ var bool;
+ Modernizr.testStyles("#modernizr { width: 50vmax; }", function(elem, rule) {
+ var one_vw = window.innerWidth/100,
+ one_vh = window.innerHeight/100,
+ compWidth = parseInt((window.getComputedStyle ?
+ getComputedStyle(elem, null) :
+ elem.currentStyle)['width'],10);
+ bool = ( parseInt(Math.max(one_vw, one_vh)*50,10) == compWidth );
+ });
+ return bool;
+});
\ No newline at end of file
--- /dev/null
+// https://github.com/Modernizr/Modernizr/issues/572
+// http://jsfiddle.net/glsee/JRmdq/8/
+Modernizr.addTest('cssvminunit', function(){
+ var bool;
+ Modernizr.testStyles("#modernizr { width: 50vmin; }", function(elem, rule) {
+ var one_vw = window.innerWidth/100,
+ one_vh = window.innerHeight/100,
+ compWidth = parseInt((window.getComputedStyle ?
+ getComputedStyle(elem, null) :
+ elem.currentStyle)['width'],10);
+ bool = ( parseInt(Math.min(one_vw, one_vh)*50,10) == compWidth );
+ });
+ return bool;
+});
--- /dev/null
+// https://github.com/Modernizr/Modernizr/issues/572
+// http://jsfiddle.net/FWeinb/etnYC/
+Modernizr.addTest('cssvwunit', function(){
+ var bool;
+ Modernizr.testStyles("#modernizr { width: 50vw; }", function(elem, rule) {
+ var width = parseInt(window.innerWidth/2,10),
+ compStyle = parseInt((window.getComputedStyle ?
+ getComputedStyle(elem, null) :
+ elem.currentStyle)["width"],10);
+
+ bool= (compStyle == width);
+ });
+ return bool;
+});
--- /dev/null
+/*
+ Custom protocol handler support
+ http://developers.whatwg.org/timers.html#custom-handlers
+
+ Added by @benschwarz
+*/
+
+Modernizr.addTest('customprotocolhandler', function () {
+ return !!navigator.registerProtocolHandler;
+});
--- /dev/null
+// Dart
+// By Theodoor van Donge
+
+// https://chromiumcodereview.appspot.com/9232049/
+
+Modernizr.addTest('dart', !!Modernizr.prefixed('startDart', navigator));
--- /dev/null
+// DataView
+// https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView
+// By Addy Osmani
+Modernizr.addTest('dataview', (typeof DataView !== 'undefined' && 'getFloat64' in DataView.prototype));
\ No newline at end of file
--- /dev/null
+// classList
+// https://developer.mozilla.org/en/DOM/element.classList
+// By Addy Osmani
+Modernizr.addTest('classlist', 'classList' in document.documentElement);
--- /dev/null
+// by james a rosen.
+// https://github.com/Modernizr/Modernizr/issues/258
+
+Modernizr.addTest('createelement-attrs', function() {
+ try {
+ return document.createElement("<input name='test' />").getAttribute('name') == 'test';
+ } catch(e) {
+ return false;
+ }
+});
+
--- /dev/null
+
+// dataset API for data-* attributes
+// test by @phiggins42
+
+Modernizr.addTest('dataset', function(){
+ var n = document.createElement("div");
+ n.setAttribute("data-a-b", "c");
+ return !!(n.dataset && n.dataset.aB === "c");
+});
--- /dev/null
+// Microdata support
+// http://www.w3.org/TR/html5/microdata.html
+// By Addy Osmani
+Modernizr.addTest('microdata', !!(document['getItems']));
\ No newline at end of file
--- /dev/null
+
+
+// lol. we already have a test for datalist built in! silly you.
+
+
+// Helpful links while you're here, though..
+
+// http://css-tricks.com/15346-relevant-dropdowns-polyfill-for-datalist/
+// http://miketaylr.com/test/datalist.html
+// http://miketaylr.com/code/datalist.html
+
+Modernizr.addTest('datalistelem', Modernizr.input.list );
--- /dev/null
+// By @mathias, based on http://mths.be/axh
+Modernizr.addTest('details', function() {
+ var doc = document,
+ el = doc.createElement('details'),
+ fake,
+ root,
+ diff;
+ if (!('open' in el)) { // return early if possible; thanks @aFarkas!
+ return false;
+ }
+ root = doc.body || (function() {
+ var de = doc.documentElement;
+ fake = true;
+ return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
+ }());
+ el.innerHTML = '<summary>a</summary>b';
+ el.style.display = 'block';
+ root.appendChild(el);
+ diff = el.offsetHeight;
+ el.open = true;
+ diff = diff != el.offsetHeight;
+ root.removeChild(el);
+ fake && root.parentNode.removeChild(root);
+ return diff;
+});
\ No newline at end of file
--- /dev/null
+// <output>
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-output-element
+// by Addy Osmani
+Modernizr.addTest('outputelem', 'value' in document.createElement('output'));
--- /dev/null
+//By Stefan Wallin
+
+//tests for progressbar-support. All browsers that don't support progressbar returns undefined =)
+Modernizr.addTest("progressbar",function(){
+ return document.createElement('progress').max !== undefined;
+});
+
+//tests for meter-support. All browsers that don't support meters returns undefined =)
+Modernizr.addTest("meter",function(){
+ return document.createElement('meter').max !== undefined;
+});
--- /dev/null
+// Browser support test for the HTML5 <ruby>, <rt> and <rp> elements
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-ruby-element
+//
+// by @alrra
+
+Modernizr.addTest('ruby', function () {
+
+ var ruby = document.createElement('ruby'),
+ rt = document.createElement('rt'),
+ rp = document.createElement('rp'),
+ docElement = document.documentElement,
+ displayStyleProperty = 'display',
+ fontSizeStyleProperty = 'fontSize'; // 'fontSize' - because it`s only used for IE6 and IE7
+
+ ruby.appendChild(rp);
+ ruby.appendChild(rt);
+ docElement.appendChild(ruby);
+
+ // browsers that support <ruby> hide the <rp> via "display:none"
+ if ( getStyle(rp, displayStyleProperty) == 'none' || // for non-IE browsers
+ // but in IE browsers <rp> has "display:inline" so, the test needs other conditions:
+ getStyle(ruby, displayStyleProperty) == 'ruby' && getStyle(rt, displayStyleProperty) == 'ruby-text' || // for IE8 & IE9
+ getStyle(rp, fontSizeStyleProperty) == '6pt' && getStyle(rt, fontSizeStyleProperty) == '6pt' ) { // for IE6 & IE7
+
+ cleanUp();
+ return true;
+
+ } else {
+ cleanUp();
+ return false;
+ }
+
+ function getStyle( element, styleProperty ) {
+ var result;
+
+ if ( window.getComputedStyle ) { // for non-IE browsers
+ result = document.defaultView.getComputedStyle(element,null).getPropertyValue(styleProperty);
+ } else if ( element.currentStyle ) { // for IE
+ result = element.currentStyle[styleProperty];
+ }
+
+ return result;
+ }
+
+ function cleanUp() {
+ docElement.removeChild(ruby);
+ // the removed child node still exists in memory, so ...
+ ruby = null;
+ rt = null;
+ rp = null;
+ }
+
+});
--- /dev/null
+// <time> element
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#the-time-element-0
+// by Addy Osmani
+Modernizr.addTest('time', 'valueAsDate' in document.createElement('time'));
--- /dev/null
+// Track element + Timed Text Track API
+// http://www.w3.org/TR/html5/video.html#the-track-element
+// http://www.w3.org/TR/html5/media-elements.html#text-track-api
+//
+// While IE10 has implemented the track element, IE10 does not expose the underlying APIs to create timed text tracks by JS (really sad)
+// By Addy Osmani
+Modernizr.addTest({
+ texttrackapi: (typeof (document.createElement('video').addTextTrack) === 'function'),
+ // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
+ track: ('kind' in document.createElement('track'))
+});
--- /dev/null
+// Requires a Modernizr build with `canvastext` included
+// http://www.modernizr.com/download/#-canvas-canvastext
+Modernizr.addTest('emoji', function() {
+ if (!Modernizr.canvastext) return false;
+ var node = document.createElement('canvas'),
+ ctx = node.getContext('2d');
+ ctx.textBaseline = 'top';
+ ctx.font = '32px Arial';
+ ctx.fillText('\ud83d\ude03', 0, 0); // "smiling face with open mouth" emoji
+ return ctx.getImageData(16, 16, 1, 1).data[0] !== 0;
+});
\ No newline at end of file
--- /dev/null
+// strict mode
+
+// test by @kangax
+
+Modernizr.addTest('strictmode', function(){
+ return (function(){ "use strict"; return !this; })();
+});
\ No newline at end of file
--- /dev/null
+//By Shi Chuan
+//Part of Device Access aspect of HTML5, same category as geolocation
+//W3C Editor's Draft at http://dev.w3.org/geo/api/spec-source-orientation.html
+//Implementation by iOS Safari at http://goo.gl/fhce3 and http://goo.gl/rLKz8
+
+
+//test for Device Motion Event support, returns boolean value true/false
+Modernizr.addTest('devicemotion', ('DeviceMotionEvent' in window) );
+
+//test for Device Orientation Event support, returns boolean value true/false
+Modernizr.addTest('deviceorientation', ('DeviceOrientationEvent' in window) );
--- /dev/null
+// EXIF Orientation test
+
+// iOS looks at the EXIF Orientation flag in jpgs and rotates the image
+// accordingly. Looks like most desktop browsers just ignore this data.
+
+// description: www.impulseadventure.com/photo/exif-orientation.html
+
+// Bug trackers:
+// bugzil.la/298619 (unimplemented)
+// crbug.com/56845 (looks incomplete)
+// webk.it/19688 (available upstream but its up all ports to turn on individually)
+//
+
+// detect by Paul Sayre
+
+
+(function(){
+
+ var img = new Image();
+
+ img.onerror = function() {
+ Modernizr.addTest('exif-orientation', function () { return false; });
+ };
+
+ img.onload = function() {
+ Modernizr.addTest('exif-orientation', function () { return img.width !== 2; });
+ };
+
+ // There may be a way to shrink this more, it's a 1x2 white jpg with the orientation flag set to 6
+ img.src = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q==";
+
+})();
--- /dev/null
+/**
+ * file tests for the File API specification
+ * Tests for objects specific to the File API W3C specification without
+ * being redundant (don't bother testing for Blob since it is assumed
+ * to be the File object's prototype.
+ *
+ * Will fail in Safari 5 due to its lack of support for the standards
+ * defined FileReader object
+ */
+Modernizr.addTest('filereader', function () {
+ return !!(window.File && window.FileList && window.FileReader);
+});
--- /dev/null
+// Filesystem API
+// dev.w3.org/2009/dap/file-system/file-dir-sys.html
+
+// The API will be present in Chrome incognito, but will throw an exception.
+// See crbug.com/93417
+//
+// By Eric Bidelman (@ebidel)
+
+Modernizr.addTest('filesystem', !!Modernizr.prefixed('requestFileSystem', window));
\ No newline at end of file
--- /dev/null
+
+
+// Detects whether input type="file" is available on the platform
+// E.g. iOS < 6 and some android version don't support this
+
+// It's useful if you want to hide the upload feature of your app on devices that
+// don't support it (iphone, ipad, etc).
+
+Modernizr.addTest('fileinput', function() {
+ var elem = document.createElement('input');
+ elem.type = 'file';
+ return !elem.disabled;
+});
--- /dev/null
+// Detects whether input form="form_id" is available on the platform
+// E.g. IE 10 (and below), don't support this
+Modernizr.addTest("formattribute", function() {
+ var form = document.createElement("form"),
+ input = document.createElement("input"),
+ div = document.createElement("div"),
+ id = "formtest"+(new Date().getTime()),
+ attr,
+ bool = false;
+
+ form.id = id;
+
+ //IE6/7 confuses the form idl attribute and the form content attribute
+ if(document.createAttribute){
+ attr = document.createAttribute("form");
+ attr.nodeValue = id;
+ input.setAttributeNode(attr);
+ div.appendChild(form);
+ div.appendChild(input);
+
+ document.documentElement.appendChild(div);
+
+ bool = form.elements.length === 1 && input.form == form;
+
+ div.parentNode.removeChild(div);
+ }
+
+ return bool;
+});
\ No newline at end of file
--- /dev/null
+// input[type="number"] localized input/output
+// // Detects whether input type="number" is capable of receiving and
+// // displaying localized numbers, e.g. with comma separator
+// // https://bugs.webkit.org/show_bug.cgi?id=42484
+// // Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/script-tests/input-number-keyoperation.js?rev=80096#L9
+// // By Peter Janes
+
+Modernizr.addTest('localizedNumber', function() {
+ var doc = document,
+ el = document.createElement('div'),
+ fake,
+ root,
+ input,
+ diff;
+ root = doc.body || (function() {
+ var de = doc.documentElement;
+ fake = true;
+ return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
+ }());
+ el.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
+ input = el.childNodes[0];
+ root.appendChild(el);
+ input.focus();
+ try {
+ doc.execCommand('InsertText', false, '1,1');
+ } catch(e) { // prevent warnings in IE
+ }
+ diff = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity();
+ root.removeChild(el);
+ fake && root.parentNode.removeChild(root);
+ return diff;
+});
--- /dev/null
+// testing for placeholder attribute in inputs and textareas
+// re-using Modernizr.input if available
+
+Modernizr.addTest('placeholder', function(){
+
+ return !!( 'placeholder' in ( Modernizr.input || document.createElement('input') ) &&
+ 'placeholder' in ( Modernizr.textarea || document.createElement('textarea') )
+ );
+
+});
--- /dev/null
+// speech input for inputs
+// by @alrra
+
+
+// `webkitSpeech` in elem
+// doesn`t work correctly in all versions of Chromium based browsers.
+// It can return false even if they have support for speech i.imgur.com/2Y40n.png
+// Testing with 'onwebkitspeechchange' seems to fix this problem
+
+// this detect only checks the webkit version because
+// the speech attribute is likely to be deprecated in favor of a JavaScript API.
+// http://lists.w3.org/Archives/Public/public-webapps/2011OctDec/att-1696/speechapi.html
+
+// FIXME: add support for detecting the new spec'd behavior
+
+Modernizr.addTest('speechinput', function(){
+ var elem = document.createElement('input');
+ return 'speech' in elem || 'onwebkitspeechchange' in elem;
+});
\ No newline at end of file
--- /dev/null
+// This implementation only tests support for interactive form validation.
+// To check validation for a specific type or a specific other constraint,
+// the test can be combined:
+// - Modernizr.inputtypes.numer && Modernizr.formvalidation (browser supports rangeOverflow, typeMismatch etc. for type=number)
+// - Modernizr.input.required && Modernizr.formvalidation (browser supports valueMissing)
+//
+(function(document, Modernizr){
+
+
+ Modernizr.formvalidationapi = false;
+ Modernizr.formvalidationmessage = false;
+
+ Modernizr.addTest('formvalidation', function() {
+ var form = document.createElement('form');
+ if ( !('checkValidity' in form) || !('addEventListener' in form) ) {
+ return false;
+ }
+ if ('reportValidity' in form) {
+ return true;
+ }
+ var invalidFired = false;
+ var input;
+
+ Modernizr.formvalidationapi = true;
+
+ // Prevent form from being submitted
+ form.addEventListener('submit', function(e) {
+ //Opera does not validate form, if submit is prevented
+ if ( !window.opera ) {
+ e.preventDefault();
+ }
+ e.stopPropagation();
+ }, false);
+
+ // Calling form.submit() doesn't trigger interactive validation,
+ // use a submit button instead
+ //older opera browsers need a name attribute
+ form.innerHTML = '<input name="modTest" required><button></button>';
+
+ Modernizr.testStyles('#modernizr form{position:absolute;top:-99999em}', function( node ) {
+ node.appendChild(form);
+
+ input = form.getElementsByTagName('input')[0];
+
+ // Record whether "invalid" event is fired
+ input.addEventListener('invalid', function(e) {
+ invalidFired = true;
+ e.preventDefault();
+ e.stopPropagation();
+ }, false);
+
+ //Opera does not fully support the validationMessage property
+ Modernizr.formvalidationmessage = !!input.validationMessage;
+
+ // Submit form by clicking submit button
+ form.getElementsByTagName('button')[0].click();
+ });
+
+ return invalidFired;
+ });
+
+})(document, window.Modernizr);
--- /dev/null
+Modernizr.addTest('fullscreen',function(){
+ for(var i = 0; i < Modernizr._domPrefixes.length; i++) {
+ if( document[Modernizr._domPrefixes[i].toLowerCase() + 'CancelFullScreen'])
+ return true;
+ }
+ return !!document['cancelFullScreen'] || false;
+});
+
+// http://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/ControllingMediaWithJavaScript/ControllingMediaWithJavaScript.html#//apple_ref/doc/uid/TP40009523-CH3-SW20
+// https://developer.mozilla.org/en/API/Fullscreen
--- /dev/null
+// GamePad API
+// https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html
+// By Eric Bidelman
+
+// FF has Gamepad API support only in special builds, but not in any release (even behind a flag)
+// Their current implementation has no way to feature detect, only events to bind to.
+// http://www.html5rocks.com/en/tutorials/doodles/gamepad/#toc-featuredetect
+
+// but a patch will bring them up to date with the spec when it lands (and they'll pass this test)
+// https://bugzilla.mozilla.org/show_bug.cgi?id=690935
+
+Modernizr.addTest('gamepads', !!Modernizr.prefixed('getGamepads', navigator));
--- /dev/null
+// getUserMedia
+// http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html
+// By Eric Bidelman
+
+Modernizr.addTest('getusermedia', !!Modernizr.prefixed('getUserMedia', navigator));
\ No newline at end of file
--- /dev/null
+
+// IE8 compat mode aka Fake IE7
+// by Erich Ocean
+
+// In this case, IE8 will be acting as IE7. You may choose to remove features in this case.
+
+// related:
+// james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/
+
+Modernizr.addTest('ie8compat',function(){
+ return (!window.addEventListener && document.documentMode && document.documentMode === 7);
+});
--- /dev/null
+// Test for `sandbox` attribute in iframes.
+//
+// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox
+
+Modernizr.addTest('sandbox', 'sandbox' in document.createElement('iframe'));
--- /dev/null
+// Test for `seamless` attribute in iframes.
+//
+// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-seamless
+
+Modernizr.addTest('seamless', 'seamless' in document.createElement('iframe'));
--- /dev/null
+// Test for `srcdoc` attribute in iframes.
+//
+// Spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-srcdoc
+
+Modernizr.addTest('srcdoc', 'srcdoc' in document.createElement('iframe'));
--- /dev/null
+// Animated PNG
+// http://en.wikipedia.org/wiki/APNG
+// By Addy Osmani
+(function () {
+
+ if (!Modernizr.canvas) return false;
+
+ var image = new Image(),
+ canvas = document.createElement('canvas'),
+ ctx = canvas.getContext('2d');
+
+
+ image.onload = function () {
+ Modernizr.addTest('apng', function () {
+ if (typeof canvas.getContext == 'undefined') {
+ return false;
+ } else {
+ ctx.drawImage(image, 0, 0);
+ return ctx.getImageData(0, 0, 1, 1).data[3] === 0;
+ }
+ });
+ };
+
+ image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg==";
+
+}());
--- /dev/null
+// code.google.com/speed/webp/
+// by rich bradshaw, ryan seddon, and paul irish
+
+
+// This test is asynchronous. Watch out.
+
+(function(){
+
+ var image = new Image();
+
+ image.onerror = function() {
+ Modernizr.addTest('webp', false);
+ };
+ image.onload = function() {
+ Modernizr.addTest('webp', function() { return image.width == 1; });
+ };
+
+ image.src = 'data:image/webp;base64,UklGRiwAAABXRUJQVlA4ICAAAAAUAgCdASoBAAEAL/3+/3+CAB/AAAFzrNsAAP5QAAAAAA==';
+
+}());
\ No newline at end of file
--- /dev/null
+// native JSON support.
+// developer.mozilla.org/en/JSON
+
+// this will also succeed if you've loaded the JSON2.js polyfill ahead of time
+// ... but that should be obvious. :)
+
+Modernizr.addTest('json', !!window.JSON && !!JSON.parse);
--- /dev/null
+
+// impressivewebs.com/reverse-ordered-lists-html5
+// polyfill: github.com/impressivewebs/HTML5-Reverse-Ordered-Lists
+
+
+Modernizr.addTest('olreversed', 'reversed' in document.createElement('ol'));
--- /dev/null
+// MathML
+// http://www.w3.org/Math/
+// By Addy Osmani
+// Based on work by Davide (@dpvc) and David (@davidcarlisle)
+// in https://github.com/mathjax/MathJax/issues/182
+
+Modernizr.addTest('mathml', function(){
+ var hasMathML = false;
+ if ( document.createElementNS ) {
+ var ns = "http://www.w3.org/1998/Math/MathML",
+ div = document.createElement("div");
+ div.style.position = "absolute";
+ var mfrac = div.appendChild(document.createElementNS(ns,"math"))
+ .appendChild(document.createElementNS(ns,"mfrac"));
+ mfrac.appendChild(document.createElementNS(ns,"mi"))
+ .appendChild(document.createTextNode("xx"));
+ mfrac.appendChild(document.createElementNS(ns,"mi"))
+ .appendChild(document.createTextNode("yy"));
+ document.body.appendChild(div);
+ hasMathML = div.offsetHeight > div.offsetWidth;
+ }
+ return hasMathML;
+});
\ No newline at end of file
--- /dev/null
+// determining low-bandwidth via navigator.connection
+
+// There are two iterations of the navigator.connection interface:
+
+// The first is present in Android 2.2+ and only in the Browser (not WebView)
+// : docs.phonegap.com/en/1.2.0/phonegap_connection_connection.md.html#connection.type
+// : davidbcalhoun.com/2010/using-navigator-connection-android
+
+// The second is specced at dev.w3.org/2009/dap/netinfo/ and perhaps landing in WebKit
+// : bugs.webkit.org/show_bug.cgi?id=73528
+
+// unknown devices are assumed as fast
+// for more rigorous network testing, consider boomerang.js: github.com/bluesmoon/boomerang/
+
+Modernizr.addTest('lowbandwidth', function() {
+
+ var connection = navigator.connection || { type: 0 }; // polyfill
+
+ return connection.type == 3 || // connection.CELL_2G
+ connection.type == 4 || // connection.CELL_3G
+ /^[23]g$/.test(connection.type); // string value in new spec
+});
--- /dev/null
+
+// server sent events aka eventsource
+// dev.w3.org/html5/eventsource/
+
+Modernizr.addTest('eventsource', !!window.EventSource);
--- /dev/null
+
+
+// XML HTTP Request Level 2
+// www.w3.org/TR/XMLHttpRequest2/
+
+// Much more details at github.com/Modernizr/Modernizr/issues/385
+
+// all three of these details report consistently across all target browsers:
+// !!(window.ProgressEvent);
+// !!(window.FormData);
+// window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest;
+
+Modernizr.addTest('xhr2', 'FormData' in window);
--- /dev/null
+// Notifications
+// By Theodoor van Donge
+
+// window.webkitNotifications is only used by Chrome
+// http://www.html5rocks.com/en/tutorials/notifications/quick/
+
+// window.Notification only exist in the draft specs
+// http://dev.w3.org/2006/webapi/WebNotifications/publish/Notifications.html#idl-if-Notification
+
+Modernizr.addTest('notification', 'Notification' in window && 'permission' in window.Notification && 'requestPermission' in window.Notification);
--- /dev/null
+// Navigation Timing (Performance)
+// https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/
+// http://www.html5rocks.com/en/tutorials/webperformance/basics/
+// By Scott Murphy (uxder)
+Modernizr.addTest('performance', !!Modernizr.prefixed('performance', window));
\ No newline at end of file
--- /dev/null
+// https://developer.mozilla.org/en-US/docs/API/Pointer_Lock_API
+
+Modernizr.addTest('pointerlock',!!Modernizr.prefixed('pointerLockElement', document));
+
--- /dev/null
+// Quota Storage Management API
+// This API can be used to check how much quota an origin is using and request more
+
+// Currently only implemented in Chrome.
+// https://developers.google.com/chrome/whitepapers/storage
+// By Addy Osmani
+
+Modernizr.addTest('quotamanagement', function(){
+ var storage = Modernizr.prefixed('StorageInfo', window);
+ return !!(storage && 'TEMPORARY' in storage && 'PERSISTENT' in storage);
+});
--- /dev/null
+
+// requestAnimationFrame
+// Offload animation repainting to browser for optimized performance.
+// http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/RequestAnimationFrame/Overview.html
+// By Addy Osmani
+
+Modernizr.addTest('raf', !!Modernizr.prefixed('requestAnimationFrame', window));
\ No newline at end of file
--- /dev/null
+// async script
+// By Theodoor van Donge
+Modernizr.addTest('scriptasync', 'async' in document.createElement('script'));
\ No newline at end of file
--- /dev/null
+// defer script
+// By Theodoor van Donge
+Modernizr.addTest('scriptdefer', 'defer' in document.createElement('script'));
\ No newline at end of file
--- /dev/null
+// Browser support test for <style scoped>
+// http://www.w3.org/TR/html5/the-style-element.html#attr-style-scoped
+//
+// by @alrra
+
+Modernizr.addTest( 'stylescoped', 'scoped' in document.createElement('style') );
--- /dev/null
+// Detect support for svg filters - http://www.w3.org/TR/SVG11/filters.html.
+// Should fail in Safari: http://stackoverflow.com/questions/9739955/feature-detecting-support-for-svg-filters.
+// detect by erik dahlstrom
+
+Modernizr.addTest('svgfilters', function(){
+ var result = false;
+ try {
+ result = typeof SVGFEColorMatrixElement !== undefined &&
+ SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2;
+ }
+ catch(e) {}
+ return result;
+});
--- /dev/null
+/**
+ * Unicode special character support
+ *
+ * Detection is made by testing missing glyph box rendering against star character
+ * If widths are the same, this "probably" means the browser didn't support the star character and rendered a glyph box instead
+ * Just need to ensure the font characters have different widths
+ *
+ * Warning : positive Unicode support doesn't mean you can use it inside <title>, this seams more related to OS & Language packs
+ */
+Modernizr.addTest('unicode', function() {
+
+
+ var bool,
+
+ missingGlyph = document.createElement('span'),
+
+ star = document.createElement('span');
+
+ Modernizr.testStyles('#modernizr{font-family:Arial,sans;font-size:300em;}', function(node) {
+
+ missingGlyph.innerHTML = 'ᝣ';
+ star.innerHTML = '☆';
+
+ node.appendChild(missingGlyph);
+ node.appendChild(star);
+
+ bool = 'offsetWidth' in missingGlyph && missingGlyph.offsetWidth !== star.offsetWidth;
+ });
+
+ return bool;
+
+});
\ No newline at end of file
--- /dev/null
+// data uri test.
+// https://github.com/Modernizr/Modernizr/issues/14
+
+// This test is asynchronous. Watch out.
+
+
+// in IE7 in HTTPS this can cause a Mixed Content security popup.
+// github.com/Modernizr/Modernizr/issues/362
+// To avoid that you can create a new iframe and inject this.. perhaps..
+
+
+(function(){
+
+ var datauri = new Image();
+
+
+ datauri.onerror = function() {
+ Modernizr.addTest('datauri', function () { return false; });
+ };
+ datauri.onload = function() {
+ Modernizr.addTest('datauri', function () { return (datauri.width == 1 && datauri.height == 1); });
+ };
+
+ datauri.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
+
+})();
--- /dev/null
+// test if IE userdata supported
+// msdn.microsoft.com/en-us/library/ms531424(v=vs.85).aspx
+// test by @stereobooster
+
+Modernizr.addTest('userdata', function(){
+ return !!document.createElement('div').addBehavior;
+});
--- /dev/null
+// Vibration API
+// http://www.w3.org/TR/vibration/
+// https://developer.mozilla.org/en/DOM/window.navigator.mozVibrate
+Modernizr.addTest('vibrate', !!Modernizr.prefixed('vibrate', navigator));
\ No newline at end of file
--- /dev/null
+// Tests for the ability to use Web Intents (http://webintents.org).
+// By Eric Bidelman
+
+Modernizr.addTest('webintents', function() {
+ return !!Modernizr.prefixed('startActivity', navigator);
+});
--- /dev/null
+
+// Grab the WebGL extensions currently supported and add to the Modernizr.webgl object
+// spec: www.khronos.org/registry/webgl/specs/latest/#5.13.14
+
+// based on code from ilmari heikkinen
+// code.google.com/p/graphics-detect/source/browse/js/detect.js
+
+
+(function(){
+
+ if (!Modernizr.webgl) return;
+
+ var canvas, ctx, exts;
+
+ try {
+ canvas = document.createElement('canvas');
+ ctx = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
+ exts = ctx.getSupportedExtensions();
+ }
+ catch (e) {
+ return;
+ }
+
+ if (ctx === undefined) {
+ Modernizr.webgl = new Boolean(false);
+ }
+ else {
+ Modernizr.webgl = new Boolean(true);
+ }
+
+
+ for (var i = -1, len = exts.length; ++i < len; ){
+ Modernizr.webgl[exts[i]] = true;
+ }
+
+ // hack for addressing modernizr testsuite failures. sorry.
+ if (window.TEST && TEST.audvid){
+ TEST.audvid.push('webgl');
+ }
+
+ canvas = undefined;
+})();
\ No newline at end of file
--- /dev/null
+
+// binaryType is truthy if there is support.. returns "blob" in new-ish chrome.
+// plus.google.com/115535723976198353696/posts/ERN6zYozENV
+// github.com/Modernizr/Modernizr/issues/370
+
+Modernizr.addTest('websocketsbinary', function() {
+ var protocol = 'https:'==location.protocol?'wss':'ws',
+ protoBin;
+
+ if('WebSocket' in window) {
+ if( protoBin = 'binaryType' in WebSocket.prototype ) {
+ return protoBin;
+ }
+ try {
+ return !!(new WebSocket(protocol+'://.').binaryType);
+ } catch (e){}
+ }
+
+ return false;
+});
--- /dev/null
+
+// tests if page is iframed
+
+// github.com/Modernizr/Modernizr/issues/242
+
+Modernizr.addTest('framed', function(){
+ return window.location != top.location;
+});
--- /dev/null
+// by jussi-kalliokoski
+
+
+// This test is asynchronous. Watch out.
+
+// The test will potentially add garbage to console.
+
+(function(){
+ try {
+ // we're avoiding using Modernizr._domPrefixes as the prefix capitalization on
+ // these guys are notoriously peculiar.
+ var BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.OBlobBuilder || window.BlobBuilder;
+ var URL = window.MozURL || window.webkitURL || window.MSURL || window.OURL || window.URL;
+ var data = 'Modernizr',
+ blob,
+ bb,
+ worker,
+ url,
+ timeout,
+ scriptText = 'this.onmessage=function(e){postMessage(e.data)}';
+
+ try {
+ blob = new Blob([scriptText], {type:'text/javascript'});
+ } catch(e) {
+ // we'll fall back to the deprecated BlobBuilder
+ }
+ if (!blob) {
+ bb = new BlobBuilder();
+ bb.append(scriptText);
+ blob = bb.getBlob();
+ }
+
+ url = URL.createObjectURL(blob);
+ worker = new Worker(url);
+
+ worker.onmessage = function(e) {
+ Modernizr.addTest('blobworkers', data === e.data);
+ cleanup();
+ };
+
+ // Just in case...
+ worker.onerror = fail;
+ timeout = setTimeout(fail, 200);
+
+ worker.postMessage(data);
+ } catch (e) {
+ fail();
+ }
+
+ function fail() {
+ Modernizr.addTest('blobworkers', false);
+ cleanup();
+ }
+
+ function cleanup() {
+ if (url) {
+ URL.revokeObjectURL(url);
+ }
+ if (worker) {
+ worker.terminate();
+ }
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ }
+}());
--- /dev/null
+// by jussi-kalliokoski
+
+
+// This test is asynchronous. Watch out.
+
+// The test will potentially add garbage to console.
+
+(function(){
+ try {
+ var data = 'Modernizr',
+ worker = new Worker('data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=');
+
+ worker.onmessage = function(e) {
+ worker.terminate();
+ Modernizr.addTest('dataworkers', data === e.data);
+ worker = null;
+ };
+
+ // Just in case...
+ worker.onerror = function() {
+ Modernizr.addTest('dataworkers', false);
+ worker = null;
+ };
+
+ setTimeout(function() {
+ Modernizr.addTest('dataworkers', false);
+ }, 200);
+
+ worker.postMessage(data);
+
+ } catch (e) {
+ Modernizr.addTest('dataworkers', false);
+ }
+}());
--- /dev/null
+Modernizr.addTest('sharedworkers', function(){
+ return !!window.SharedWorker;
+});
\ No newline at end of file
--- /dev/null
+/*global module */
+module.exports = function( grunt ) {
+ 'use strict';
+
+ grunt.initConfig({
+ meta: {
+ version: '2.8.3',
+ banner: '/*!\n' +
+ ' * Modernizr v<%= meta.version %>\n' +
+ ' * www.modernizr.com\n *\n' +
+ ' * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n' +
+ ' * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */'
+ },
+ qunit: {
+ files: ['test/index.html']
+ },
+ lint: {
+ files: [
+ 'grunt.js',
+ 'modernizr.js',
+ 'feature-detects/*.js'
+ ]
+ },
+ min: {
+ dist: {
+ src: [
+ '<banner:meta.banner>',
+ 'modernizr.js'
+ ],
+ dest: 'modernizr.min.js'
+ }
+ },
+ watch: {
+ files: '<config:lint.files>',
+ tasks: 'lint'
+ },
+ jshint: {
+ options: {
+ boss: true,
+ browser: true,
+ curly: false,
+ devel: true,
+ eqeqeq: false,
+ eqnull: true,
+ expr: true,
+ evil: true,
+ immed: false,
+ laxcomma: true,
+ newcap: false,
+ noarg: true,
+ smarttabs: true,
+ sub: true,
+ undef: true
+ },
+ globals: {
+ Modernizr: true,
+ DocumentTouch: true,
+ TEST: true,
+ SVGFEColorMatrixElement : true,
+ Blob: true
+ }
+ }
+ });
+
+ grunt.registerTask('default', 'min');
+
+ // Travis CI task.
+ grunt.registerTask('travis', 'qunit');
+};
--- /dev/null
+/*!
+ * Modernizr v2.8.3
+ * www.modernizr.com
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
+ * Available under the BSD and MIT licenses: www.modernizr.com/license/
+ */
+
+/*
+ * Modernizr tests which native CSS3 and HTML5 features are available in
+ * the current UA and makes the results available to you in two ways:
+ * as properties on a global Modernizr object, and as classes on the
+ * <html> element. This information allows you to progressively enhance
+ * your pages with a granular level of control over the experience.
+ *
+ * Modernizr has an optional (not included) conditional resource loader
+ * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
+ * To get a build that includes Modernizr.load(), as well as choosing
+ * which tests to include, go to www.modernizr.com/download/
+ *
+ * Authors Faruk Ates, Paul Irish, Alex Sexton
+ * Contributors Ryan Seddon, Ben Alman
+ */
+
+window.Modernizr = (function( window, document, undefined ) {
+
+ var version = '2.8.3',
+
+ Modernizr = {},
+
+ /*>>cssclasses*/
+ // option for enabling the HTML classes to be added
+ enableClasses = true,
+ /*>>cssclasses*/
+
+ docElement = document.documentElement,
+
+ /**
+ * Create our "modernizr" element that we do most feature tests on.
+ */
+ mod = 'modernizr',
+ modElem = document.createElement(mod),
+ mStyle = modElem.style,
+
+ /**
+ * Create the input element for various Web Forms feature tests.
+ */
+ inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
+
+ /*>>smile*/
+ smile = ':)',
+ /*>>smile*/
+
+ toString = {}.toString,
+
+ // TODO :: make the prefixes more granular
+ /*>>prefixes*/
+ // List of property values to set for css tests. See ticket #21
+ prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
+ /*>>prefixes*/
+
+ /*>>domprefixes*/
+ // Following spec is to expose vendor-specific style properties as:
+ // elem.style.WebkitBorderRadius
+ // and the following would be incorrect:
+ // elem.style.webkitBorderRadius
+
+ // Webkit ghosts their properties in lowercase but Opera & Moz do not.
+ // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
+ // erik.eae.net/archives/2008/03/10/21.48.10/
+
+ // More here: github.com/Modernizr/Modernizr/issues/issue/21
+ omPrefixes = 'Webkit Moz O ms',
+
+ cssomPrefixes = omPrefixes.split(' '),
+
+ domPrefixes = omPrefixes.toLowerCase().split(' '),
+ /*>>domprefixes*/
+
+ /*>>ns*/
+ ns = {'svg': 'http://www.w3.org/2000/svg'},
+ /*>>ns*/
+
+ tests = {},
+ inputs = {},
+ attrs = {},
+
+ classes = [],
+
+ slice = classes.slice,
+
+ featureName, // used in testing loop
+
+
+ /*>>teststyles*/
+ // Inject element with style element and some CSS rules
+ injectElementWithStyles = function( rule, callback, nodes, testnames ) {
+
+ var style, ret, node, docOverflow,
+ div = document.createElement('div'),
+ // After page load injecting a fake body doesn't work so check if body exists
+ body = document.body,
+ // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
+ fakeBody = body || document.createElement('body');
+
+ if ( parseInt(nodes, 10) ) {
+ // In order not to give false positives we create a node for each test
+ // This also allows the method to scale for unspecified uses
+ while ( nodes-- ) {
+ node = document.createElement('div');
+ node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
+ div.appendChild(node);
+ }
+ }
+
+ // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
+ // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
+ // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
+ // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
+ // Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277
+ style = ['­','<style id="s', mod, '">', rule, '</style>'].join('');
+ div.id = mod;
+ // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
+ // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
+ (body ? div : fakeBody).innerHTML += style;
+ fakeBody.appendChild(div);
+ if ( !body ) {
+ //avoid crashing IE8, if background image is used
+ fakeBody.style.background = '';
+ //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
+ fakeBody.style.overflow = 'hidden';
+ docOverflow = docElement.style.overflow;
+ docElement.style.overflow = 'hidden';
+ docElement.appendChild(fakeBody);
+ }
+
+ ret = callback(div, rule);
+ // If this is done after page load we don't want to remove the body so check if body exists
+ if ( !body ) {
+ fakeBody.parentNode.removeChild(fakeBody);
+ docElement.style.overflow = docOverflow;
+ } else {
+ div.parentNode.removeChild(div);
+ }
+
+ return !!ret;
+
+ },
+ /*>>teststyles*/
+
+ /*>>mq*/
+ // adapted from matchMedia polyfill
+ // by Scott Jehl and Paul Irish
+ // gist.github.com/786768
+ testMediaQuery = function( mq ) {
+
+ var matchMedia = window.matchMedia || window.msMatchMedia;
+ if ( matchMedia ) {
+ return matchMedia(mq) && matchMedia(mq).matches || false;
+ }
+
+ var bool;
+
+ injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
+ bool = (window.getComputedStyle ?
+ getComputedStyle(node, null) :
+ node.currentStyle)['position'] == 'absolute';
+ });
+
+ return bool;
+
+ },
+ /*>>mq*/
+
+
+ /*>>hasevent*/
+ //
+ // isEventSupported determines if a given element supports the given event
+ // kangax.github.com/iseventsupported/
+ //
+ // The following results are known incorrects:
+ // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
+ // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
+ // ...
+ isEventSupported = (function() {
+
+ var TAGNAMES = {
+ 'select': 'input', 'change': 'input',
+ 'submit': 'form', 'reset': 'form',
+ 'error': 'img', 'load': 'img', 'abort': 'img'
+ };
+
+ function isEventSupported( eventName, element ) {
+
+ element = element || document.createElement(TAGNAMES[eventName] || 'div');
+ eventName = 'on' + eventName;
+
+ // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
+ var isSupported = eventName in element;
+
+ if ( !isSupported ) {
+ // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
+ if ( !element.setAttribute ) {
+ element = document.createElement('div');
+ }
+ if ( element.setAttribute && element.removeAttribute ) {
+ element.setAttribute(eventName, '');
+ isSupported = is(element[eventName], 'function');
+
+ // If property was created, "remove it" (by setting value to `undefined`)
+ if ( !is(element[eventName], 'undefined') ) {
+ element[eventName] = undefined;
+ }
+ element.removeAttribute(eventName);
+ }
+ }
+
+ element = null;
+ return isSupported;
+ }
+ return isEventSupported;
+ })(),
+ /*>>hasevent*/
+
+ // TODO :: Add flag for hasownprop ? didn't last time
+
+ // hasOwnProperty shim by kangax needed for Safari 2.0 support
+ _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
+
+ if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
+ hasOwnProp = function (object, property) {
+ return _hasOwnProperty.call(object, property);
+ };
+ }
+ else {
+ hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
+ return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
+ };
+ }
+
+ // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
+ // es5.github.com/#x15.3.4.5
+
+ if (!Function.prototype.bind) {
+ Function.prototype.bind = function bind(that) {
+
+ var target = this;
+
+ if (typeof target != "function") {
+ throw new TypeError();
+ }
+
+ var args = slice.call(arguments, 1),
+ bound = function () {
+
+ if (this instanceof bound) {
+
+ var F = function(){};
+ F.prototype = target.prototype;
+ var self = new F();
+
+ var result = target.apply(
+ self,
+ args.concat(slice.call(arguments))
+ );
+ if (Object(result) === result) {
+ return result;
+ }
+ return self;
+
+ } else {
+
+ return target.apply(
+ that,
+ args.concat(slice.call(arguments))
+ );
+
+ }
+
+ };
+
+ return bound;
+ };
+ }
+
+ /**
+ * setCss applies given styles to the Modernizr DOM node.
+ */
+ function setCss( str ) {
+ mStyle.cssText = str;
+ }
+
+ /**
+ * setCssAll extrapolates all vendor-specific css strings.
+ */
+ function setCssAll( str1, str2 ) {
+ return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
+ }
+
+ /**
+ * is returns a boolean for if typeof obj is exactly type.
+ */
+ function is( obj, type ) {
+ return typeof obj === type;
+ }
+
+ /**
+ * contains returns a boolean for if substr is found within str.
+ */
+ function contains( str, substr ) {
+ return !!~('' + str).indexOf(substr);
+ }
+
+ /*>>testprop*/
+
+ // testProps is a generic CSS / DOM property test.
+
+ // In testing support for a given CSS property, it's legit to test:
+ // `elem.style[styleName] !== undefined`
+ // If the property is supported it will return an empty string,
+ // if unsupported it will return undefined.
+
+ // We'll take advantage of this quick test and skip setting a style
+ // on our modernizr element, but instead just testing undefined vs
+ // empty string.
+
+ // Because the testing of the CSS property names (with "-", as
+ // opposed to the camelCase DOM properties) is non-portable and
+ // non-standard but works in WebKit and IE (but not Gecko or Opera),
+ // we explicitly reject properties with dashes so that authors
+ // developing in WebKit or IE first don't end up with
+ // browser-specific content by accident.
+
+ function testProps( props, prefixed ) {
+ for ( var i in props ) {
+ var prop = props[i];
+ if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
+ return prefixed == 'pfx' ? prop : true;
+ }
+ }
+ return false;
+ }
+ /*>>testprop*/
+
+ // TODO :: add testDOMProps
+ /**
+ * testDOMProps is a generic DOM property test; if a browser supports
+ * a certain property, it won't return undefined for it.
+ */
+ function testDOMProps( props, obj, elem ) {
+ for ( var i in props ) {
+ var item = obj[props[i]];
+ if ( item !== undefined) {
+
+ // return the property name as a string
+ if (elem === false) return props[i];
+
+ // let's bind a function
+ if (is(item, 'function')){
+ // default to autobind unless override
+ return item.bind(elem || obj);
+ }
+
+ // return the unbound function or obj or value
+ return item;
+ }
+ }
+ return false;
+ }
+
+ /*>>testallprops*/
+ /**
+ * testPropsAll tests a list of DOM properties we want to check against.
+ * We specify literally ALL possible (known and/or likely) properties on
+ * the element including the non-vendor prefixed one, for forward-
+ * compatibility.
+ */
+ function testPropsAll( prop, prefixed, elem ) {
+
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
+ props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
+
+ // did they call .prefixed('boxSizing') or are we just testing a prop?
+ if(is(prefixed, "string") || is(prefixed, "undefined")) {
+ return testProps(props, prefixed);
+
+ // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
+ } else {
+ props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
+ return testDOMProps(props, prefixed, elem);
+ }
+ }
+ /*>>testallprops*/
+
+
+ /**
+ * Tests
+ * -----
+ */
+
+ // The *new* flexbox
+ // dev.w3.org/csswg/css3-flexbox
+
+ tests['flexbox'] = function() {
+ return testPropsAll('flexWrap');
+ };
+
+ // The *old* flexbox
+ // www.w3.org/TR/2009/WD-css3-flexbox-20090723/
+
+ tests['flexboxlegacy'] = function() {
+ return testPropsAll('boxDirection');
+ };
+
+ // On the S60 and BB Storm, getContext exists, but always returns undefined
+ // so we actually have to call getContext() to verify
+ // github.com/Modernizr/Modernizr/issues/issue/97/
+
+ tests['canvas'] = function() {
+ var elem = document.createElement('canvas');
+ return !!(elem.getContext && elem.getContext('2d'));
+ };
+
+ tests['canvastext'] = function() {
+ return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
+ };
+
+ // webk.it/70117 is tracking a legit WebGL feature detect proposal
+
+ // We do a soft detect which may false positive in order to avoid
+ // an expensive context creation: bugzil.la/732441
+
+ tests['webgl'] = function() {
+ return !!window.WebGLRenderingContext;
+ };
+
+ /*
+ * The Modernizr.touch test only indicates if the browser supports
+ * touch events, which does not necessarily reflect a touchscreen
+ * device, as evidenced by tablets running Windows 7 or, alas,
+ * the Palm Pre / WebOS (touch) phones.
+ *
+ * Additionally, Chrome (desktop) used to lie about its support on this,
+ * but that has since been rectified: crbug.com/36415
+ *
+ * We also test for Firefox 4 Multitouch Support.
+ *
+ * For more info, see: modernizr.github.com/Modernizr/touch.html
+ */
+
+ tests['touch'] = function() {
+ var bool;
+
+ if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
+ bool = true;
+ } else {
+ injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
+ bool = node.offsetTop === 9;
+ });
+ }
+
+ return bool;
+ };
+
+
+ // geolocation is often considered a trivial feature detect...
+ // Turns out, it's quite tricky to get right:
+ //
+ // Using !!navigator.geolocation does two things we don't want. It:
+ // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
+ // 2. Disables page caching in WebKit: webk.it/43956
+ //
+ // Meanwhile, in Firefox < 8, an about:config setting could expose
+ // a false positive that would throw an exception: bugzil.la/688158
+
+ tests['geolocation'] = function() {
+ return 'geolocation' in navigator;
+ };
+
+
+ tests['postmessage'] = function() {
+ return !!window.postMessage;
+ };
+
+
+ // Chrome incognito mode used to throw an exception when using openDatabase
+ // It doesn't anymore.
+ tests['websqldatabase'] = function() {
+ return !!window.openDatabase;
+ };
+
+ // Vendors had inconsistent prefixing with the experimental Indexed DB:
+ // - Webkit's implementation is accessible through webkitIndexedDB
+ // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
+ // For speed, we don't test the legacy (and beta-only) indexedDB
+ tests['indexedDB'] = function() {
+ return !!testPropsAll("indexedDB", window);
+ };
+
+ // documentMode logic from YUI to filter out IE8 Compat Mode
+ // which false positives.
+ tests['hashchange'] = function() {
+ return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
+ };
+
+ // Per 1.6:
+ // This used to be Modernizr.historymanagement but the longer
+ // name has been deprecated in favor of a shorter and property-matching one.
+ // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+ // and in the first release thereafter disappear entirely.
+ tests['history'] = function() {
+ return !!(window.history && history.pushState);
+ };
+
+ tests['draganddrop'] = function() {
+ var div = document.createElement('div');
+ return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
+ };
+
+ // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
+ // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
+ // FF10 still uses prefixes, so check for it until then.
+ // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
+ tests['websockets'] = function() {
+ return 'WebSocket' in window || 'MozWebSocket' in window;
+ };
+
+
+ // css-tricks.com/rgba-browser-support/
+ tests['rgba'] = function() {
+ // Set an rgba() color and check the returned value
+
+ setCss('background-color:rgba(150,255,150,.5)');
+
+ return contains(mStyle.backgroundColor, 'rgba');
+ };
+
+ tests['hsla'] = function() {
+ // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
+ // except IE9 who retains it as hsla
+
+ setCss('background-color:hsla(120,40%,100%,.5)');
+
+ return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
+ };
+
+ tests['multiplebgs'] = function() {
+ // Setting multiple images AND a color on the background shorthand property
+ // and then querying the style.background property value for the number of
+ // occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
+
+ setCss('background:url(https://),url(https://),red url(https://)');
+
+ // If the UA supports multiple backgrounds, there should be three occurrences
+ // of the string "url(" in the return value for elemStyle.background
+
+ return (/(url\s*\(.*?){3}/).test(mStyle.background);
+ };
+
+
+
+ // this will false positive in Opera Mini
+ // github.com/Modernizr/Modernizr/issues/396
+
+ tests['backgroundsize'] = function() {
+ return testPropsAll('backgroundSize');
+ };
+
+ tests['borderimage'] = function() {
+ return testPropsAll('borderImage');
+ };
+
+
+ // Super comprehensive table about all the unique implementations of
+ // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
+
+ tests['borderradius'] = function() {
+ return testPropsAll('borderRadius');
+ };
+
+ // WebOS unfortunately false positives on this test.
+ tests['boxshadow'] = function() {
+ return testPropsAll('boxShadow');
+ };
+
+ // FF3.0 will false positive on this test
+ tests['textshadow'] = function() {
+ return document.createElement('div').style.textShadow === '';
+ };
+
+
+ tests['opacity'] = function() {
+ // Browsers that actually have CSS Opacity implemented have done so
+ // according to spec, which means their return values are within the
+ // range of [0.0,1.0] - including the leading zero.
+
+ setCssAll('opacity:.55');
+
+ // The non-literal . in this regex is intentional:
+ // German Chrome returns this value as 0,55
+ // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
+ return (/^0.55$/).test(mStyle.opacity);
+ };
+
+
+ // Note, Android < 4 will pass this test, but can only animate
+ // a single property at a time
+ // goo.gl/v3V4Gp
+ tests['cssanimations'] = function() {
+ return testPropsAll('animationName');
+ };
+
+
+ tests['csscolumns'] = function() {
+ return testPropsAll('columnCount');
+ };
+
+
+ tests['cssgradients'] = function() {
+ /**
+ * For CSS Gradients syntax, please see:
+ * webkit.org/blog/175/introducing-css-gradients/
+ * developer.mozilla.org/en/CSS/-moz-linear-gradient
+ * developer.mozilla.org/en/CSS/-moz-radial-gradient
+ * dev.w3.org/csswg/css3-images/#gradients-
+ */
+
+ var str1 = 'background-image:',
+ str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+ str3 = 'linear-gradient(left top,#9f9, white);';
+
+ setCss(
+ // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
+ (str1 + '-webkit- '.split(' ').join(str2 + str1) +
+ // standard syntax // trailing 'background-image:'
+ prefixes.join(str3 + str1)).slice(0, -str1.length)
+ );
+
+ return contains(mStyle.backgroundImage, 'gradient');
+ };
+
+
+ tests['cssreflections'] = function() {
+ return testPropsAll('boxReflect');
+ };
+
+
+ tests['csstransforms'] = function() {
+ return !!testPropsAll('transform');
+ };
+
+
+ tests['csstransforms3d'] = function() {
+
+ var ret = !!testPropsAll('perspective');
+
+ // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
+ // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
+ // some conditions. As a result, Webkit typically recognizes the syntax but
+ // will sometimes throw a false positive, thus we must do a more thorough check:
+ if ( ret && 'webkitPerspective' in docElement.style ) {
+
+ // Webkit allows this media query to succeed only if the feature is enabled.
+ // `@media (transform-3d),(-webkit-transform-3d){ ... }`
+ injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
+ ret = node.offsetLeft === 9 && node.offsetHeight === 3;
+ });
+ }
+ return ret;
+ };
+
+
+ tests['csstransitions'] = function() {
+ return testPropsAll('transition');
+ };
+
+
+ /*>>fontface*/
+ // @font-face detection routine by Diego Perini
+ // javascript.nwbox.com/CSSSupport/
+
+ // false positives:
+ // WebOS github.com/Modernizr/Modernizr/issues/342
+ // WP7 github.com/Modernizr/Modernizr/issues/538
+ tests['fontface'] = function() {
+ var bool;
+
+ injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
+ var style = document.getElementById('smodernizr'),
+ sheet = style.sheet || style.styleSheet,
+ cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
+
+ bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
+ });
+
+ return bool;
+ };
+ /*>>fontface*/
+
+ // CSS generated content detection
+ tests['generatedcontent'] = function() {
+ var bool;
+
+ injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
+ bool = node.offsetHeight >= 3;
+ });
+
+ return bool;
+ };
+
+
+
+ // These tests evaluate support of the video/audio elements, as well as
+ // testing what types of content they support.
+ //
+ // We're using the Boolean constructor here, so that we can extend the value
+ // e.g. Modernizr.video // true
+ // Modernizr.video.ogg // 'probably'
+ //
+ // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
+ // thx to NielsLeenheer and zcorpan
+
+ // Note: in some older browsers, "no" was a return value instead of empty string.
+ // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
+ // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
+
+ tests['video'] = function() {
+ var elem = document.createElement('video'),
+ bool = false;
+
+ // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
+ try {
+ if ( bool = !!elem.canPlayType ) {
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
+
+ // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
+ bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
+
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
+ }
+
+ } catch(e) { }
+
+ return bool;
+ };
+
+ tests['audio'] = function() {
+ var elem = document.createElement('audio'),
+ bool = false;
+
+ try {
+ if ( bool = !!elem.canPlayType ) {
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
+ bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
+
+ // Mimetypes accepted:
+ // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
+ // bit.ly/iphoneoscodecs
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
+ bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
+ elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
+ }
+ } catch(e) { }
+
+ return bool;
+ };
+
+
+ // In FF4, if disabled, window.localStorage should === null.
+
+ // Normally, we could not test that directly and need to do a
+ // `('localStorage' in window) && ` test first because otherwise Firefox will
+ // throw bugzil.la/365772 if cookies are disabled
+
+ // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
+ // will throw the exception:
+ // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
+ // Peculiarly, getItem and removeItem calls do not throw.
+
+ // Because we are forced to try/catch this, we'll go aggressive.
+
+ // Just FWIW: IE8 Compat mode supports these features completely:
+ // www.quirksmode.org/dom/html5.html
+ // But IE8 doesn't support either with local files
+
+ tests['localstorage'] = function() {
+ try {
+ localStorage.setItem(mod, mod);
+ localStorage.removeItem(mod);
+ return true;
+ } catch(e) {
+ return false;
+ }
+ };
+
+ tests['sessionstorage'] = function() {
+ try {
+ sessionStorage.setItem(mod, mod);
+ sessionStorage.removeItem(mod);
+ return true;
+ } catch(e) {
+ return false;
+ }
+ };
+
+
+ tests['webworkers'] = function() {
+ return !!window.Worker;
+ };
+
+
+ tests['applicationcache'] = function() {
+ return !!window.applicationCache;
+ };
+
+
+ // Thanks to Erik Dahlstrom
+ tests['svg'] = function() {
+ return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
+ };
+
+ // specifically for SVG inline in HTML, not within XHTML
+ // test page: paulirish.com/demo/inline-svg
+ tests['inlinesvg'] = function() {
+ var div = document.createElement('div');
+ div.innerHTML = '<svg/>';
+ return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+ };
+
+ // SVG SMIL animation
+ tests['smil'] = function() {
+ return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
+ };
+
+ // This test is only for clip paths in SVG proper, not clip paths on HTML content
+ // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
+
+ // However read the comments to dig into applying SVG clippaths to HTML content here:
+ // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
+ tests['svgclippaths'] = function() {
+ return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
+ };
+
+ /*>>webforms*/
+ // input features and input types go directly onto the ret object, bypassing the tests loop.
+ // Hold this guy to execute in a moment.
+ function webforms() {
+ /*>>input*/
+ // Run through HTML5's new input attributes to see if the UA understands any.
+ // We're using f which is the <input> element created early on
+ // Mike Taylr has created a comprehensive resource for testing these attributes
+ // when applied to all input types:
+ // miketaylr.com/code/input-type-attr.html
+ // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+
+ // Only input placeholder is tested while textarea's placeholder is not.
+ // Currently Safari 4 and Opera 11 have support only for the input placeholder
+ // Both tests are available in feature-detects/forms-placeholder.js
+ Modernizr['input'] = (function( props ) {
+ for ( var i = 0, len = props.length; i < len; i++ ) {
+ attrs[ props[i] ] = !!(props[i] in inputElem);
+ }
+ if (attrs.list){
+ // safari false positive's on datalist: webk.it/74252
+ // see also github.com/Modernizr/Modernizr/issues/146
+ attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
+ }
+ return attrs;
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+ /*>>input*/
+
+ /*>>inputtypes*/
+ // Run through HTML5's new input types to see if the UA understands any.
+ // This is put behind the tests runloop because it doesn't return a
+ // true/false like all the other tests; instead, it returns an object
+ // containing each input type with its corresponding true/false value
+
+ // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
+ Modernizr['inputtypes'] = (function(props) {
+
+ for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
+
+ inputElem.setAttribute('type', inputElemType = props[i]);
+ bool = inputElem.type !== 'text';
+
+ // We first check to see if the type we give it sticks..
+ // If the type does, we feed it a textual value, which shouldn't be valid.
+ // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+ if ( bool ) {
+
+ inputElem.value = smile;
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+ if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
+
+ docElement.appendChild(inputElem);
+ defaultView = document.defaultView;
+
+ // Safari 2-4 allows the smiley as a value, despite making a slider
+ bool = defaultView.getComputedStyle &&
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+ // Mobile android web browser has false positive, so must
+ // check the height to see if the widget is actually there.
+ (inputElem.offsetHeight !== 0);
+
+ docElement.removeChild(inputElem);
+
+ } else if ( /^(search|tel)$/.test(inputElemType) ){
+ // Spec doesn't define any special parsing or detectable UI
+ // behaviors so we pass these through as true
+
+ // Interestingly, opera fails the earlier test, so it doesn't
+ // even make it here.
+
+ } else if ( /^(url|email)$/.test(inputElemType) ) {
+ // Real url and email support comes with prebaked validation.
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+ } else {
+ // If the upgraded input compontent rejects the :) text, we got a winner
+ bool = inputElem.value != smile;
+ }
+ }
+
+ inputs[ props[i] ] = !!bool;
+ }
+ return inputs;
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+ /*>>inputtypes*/
+ }
+ /*>>webforms*/
+
+
+ // End of test definitions
+ // -----------------------
+
+
+
+ // Run through all tests and detect their support in the current UA.
+ // todo: hypothetically we could be doing an array of tests and use a basic loop here.
+ for ( var feature in tests ) {
+ if ( hasOwnProp(tests, feature) ) {
+ // run the test, throw the return value into the Modernizr,
+ // then based on that boolean, define an appropriate className
+ // and push it into an array of classes we'll join later.
+ featureName = feature.toLowerCase();
+ Modernizr[featureName] = tests[feature]();
+
+ classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
+ }
+ }
+
+ /*>>webforms*/
+ // input tests need to run.
+ Modernizr.input || webforms();
+ /*>>webforms*/
+
+
+ /**
+ * addTest allows the user to define their own feature tests
+ * the result will be added onto the Modernizr object,
+ * as well as an appropriate className set on the html element
+ *
+ * @param feature - String naming the feature
+ * @param test - Function returning true if feature is supported, false if not
+ */
+ Modernizr.addTest = function ( feature, test ) {
+ if ( typeof feature == 'object' ) {
+ for ( var key in feature ) {
+ if ( hasOwnProp( feature, key ) ) {
+ Modernizr.addTest( key, feature[ key ] );
+ }
+ }
+ } else {
+
+ feature = feature.toLowerCase();
+
+ if ( Modernizr[feature] !== undefined ) {
+ // we're going to quit if you're trying to overwrite an existing test
+ // if we were to allow it, we'd do this:
+ // var re = new RegExp("\\b(no-)?" + feature + "\\b");
+ // docElement.className = docElement.className.replace( re, '' );
+ // but, no rly, stuff 'em.
+ return Modernizr;
+ }
+
+ test = typeof test == 'function' ? test() : test;
+
+ if (typeof enableClasses !== "undefined" && enableClasses) {
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
+ }
+ Modernizr[feature] = test;
+
+ }
+
+ return Modernizr; // allow chaining.
+ };
+
+
+ // Reset modElem.cssText to nothing to reduce memory footprint.
+ setCss('');
+ modElem = inputElem = null;
+
+ /*>>shiv*/
+ /**
+ * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+ */
+ ;(function(window, document) {
+ /*jshint evil:true */
+ /** version */
+ var version = '3.7.0';
+
+ /** Preset options */
+ var options = window.html5 || {};
+
+ /** Used to skip problem elements */
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+ /** Not all elements can be cloned in IE **/
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+ /** Detect whether the browser supports default html5 styles */
+ var supportsHtml5Styles;
+
+ /** Name of the expando, to work with multiple documents or to re-shiv one document */
+ var expando = '_html5shiv';
+
+ /** The id for the the documents expando */
+ var expanID = 0;
+
+ /** Cached data for each document */
+ var expandoData = {};
+
+ /** Detect whether the browser supports unknown elements */
+ var supportsUnknownElements;
+
+ (function() {
+ try {
+ var a = document.createElement('a');
+ a.innerHTML = '<xyz></xyz>';
+ //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+ supportsHtml5Styles = ('hidden' in a);
+
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
+ // assign a false positive if unable to shiv
+ (document.createElement)('a');
+ var frag = document.createDocumentFragment();
+ return (
+ typeof frag.cloneNode == 'undefined' ||
+ typeof frag.createDocumentFragment == 'undefined' ||
+ typeof frag.createElement == 'undefined'
+ );
+ }());
+ } catch(e) {
+ // assign a false positive if detection fails => unable to shiv
+ supportsHtml5Styles = true;
+ supportsUnknownElements = true;
+ }
+
+ }());
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * Creates a style sheet with the given CSS text and adds it to the document.
+ * @private
+ * @param {Document} ownerDocument The document.
+ * @param {String} cssText The CSS text.
+ * @returns {StyleSheet} The style element.
+ */
+ function addStyleSheet(ownerDocument, cssText) {
+ var p = ownerDocument.createElement('p'),
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+ p.innerHTML = 'x<style>' + cssText + '</style>';
+ return parent.insertBefore(p.lastChild, parent.firstChild);
+ }
+
+ /**
+ * Returns the value of `html5.elements` as an array.
+ * @private
+ * @returns {Array} An array of shived element node names.
+ */
+ function getElements() {
+ var elements = html5.elements;
+ return typeof elements == 'string' ? elements.split(' ') : elements;
+ }
+
+ /**
+ * Returns the data associated to the given document
+ * @private
+ * @param {Document} ownerDocument The document.
+ * @returns {Object} An object of data.
+ */
+ function getExpandoData(ownerDocument) {
+ var data = expandoData[ownerDocument[expando]];
+ if (!data) {
+ data = {};
+ expanID++;
+ ownerDocument[expando] = expanID;
+ expandoData[expanID] = data;
+ }
+ return data;
+ }
+
+ /**
+ * returns a shived element for the given nodeName and document
+ * @memberOf html5
+ * @param {String} nodeName name of the element
+ * @param {Document} ownerDocument The context document.
+ * @returns {Object} The shived element.
+ */
+ function createElement(nodeName, ownerDocument, data){
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ if(supportsUnknownElements){
+ return ownerDocument.createElement(nodeName);
+ }
+ if (!data) {
+ data = getExpandoData(ownerDocument);
+ }
+ var node;
+
+ if (data.cache[nodeName]) {
+ node = data.cache[nodeName].cloneNode();
+ } else if (saveClones.test(nodeName)) {
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+ } else {
+ node = data.createElem(nodeName);
+ }
+
+ // Avoid adding some elements to fragments in IE < 9 because
+ // * Attributes like `name` or `type` cannot be set/changed once an element
+ // is inserted into a document/fragment
+ // * Link elements with `src` attributes that are inaccessible, as with
+ // a 403 response, will cause the tab/window to crash
+ // * Script elements appended to fragments will execute when their `src`
+ // or `text` property is set
+ return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+ }
+
+ /**
+ * returns a shived DocumentFragment for the given document
+ * @memberOf html5
+ * @param {Document} ownerDocument The context document.
+ * @returns {Object} The shived DocumentFragment.
+ */
+ function createDocumentFragment(ownerDocument, data){
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ if(supportsUnknownElements){
+ return ownerDocument.createDocumentFragment();
+ }
+ data = data || getExpandoData(ownerDocument);
+ var clone = data.frag.cloneNode(),
+ i = 0,
+ elems = getElements(),
+ l = elems.length;
+ for(;i<l;i++){
+ clone.createElement(elems[i]);
+ }
+ return clone;
+ }
+
+ /**
+ * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+ * @private
+ * @param {Document|DocumentFragment} ownerDocument The document.
+ * @param {Object} data of the document.
+ */
+ function shivMethods(ownerDocument, data) {
+ if (!data.cache) {
+ data.cache = {};
+ data.createElem = ownerDocument.createElement;
+ data.createFrag = ownerDocument.createDocumentFragment;
+ data.frag = data.createFrag();
+ }
+
+
+ ownerDocument.createElement = function(nodeName) {
+ //abort shiv
+ if (!html5.shivMethods) {
+ return data.createElem(nodeName);
+ }
+ return createElement(nodeName, ownerDocument, data);
+ };
+
+ ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+ 'var n=f.cloneNode(),c=n.createElement;' +
+ 'h.shivMethods&&(' +
+ // unroll the `createElement` calls
+ getElements().join().replace(/[\w\-]+/g, function(nodeName) {
+ data.createElem(nodeName);
+ data.frag.createElement(nodeName);
+ return 'c("' + nodeName + '")';
+ }) +
+ ');return n}'
+ )(html5, data.frag);
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * Shivs the given document.
+ * @memberOf html5
+ * @param {Document} ownerDocument The document to shiv.
+ * @returns {Document} The shived document.
+ */
+ function shivDocument(ownerDocument) {
+ if (!ownerDocument) {
+ ownerDocument = document;
+ }
+ var data = getExpandoData(ownerDocument);
+
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+ data.hasCSS = !!addStyleSheet(ownerDocument,
+ // corrects block display not defined in IE6/7/8/9
+ 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+ // adds styling not present in IE6/7/8/9
+ 'mark{background:#FF0;color:#000}' +
+ // hides non-rendered elements
+ 'template{display:none}'
+ );
+ }
+ if (!supportsUnknownElements) {
+ shivMethods(ownerDocument, data);
+ }
+ return ownerDocument;
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ /**
+ * The `html5` object is exposed so that more elements can be shived and
+ * existing shiving can be detected on iframes.
+ * @type Object
+ * @example
+ *
+ * // options can be changed before the script is included
+ * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+ */
+ var html5 = {
+
+ /**
+ * An array or space separated string of node names of the elements to shiv.
+ * @memberOf html5
+ * @type Array|String
+ */
+ 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
+
+ /**
+ * current version of html5shiv
+ */
+ 'version': version,
+
+ /**
+ * A flag to indicate that the HTML5 style sheet should be inserted.
+ * @memberOf html5
+ * @type Boolean
+ */
+ 'shivCSS': (options.shivCSS !== false),
+
+ /**
+ * Is equal to true if a browser supports creating unknown/HTML5 elements
+ * @memberOf html5
+ * @type boolean
+ */
+ 'supportsUnknownElements': supportsUnknownElements,
+
+ /**
+ * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+ * methods should be overwritten.
+ * @memberOf html5
+ * @type Boolean
+ */
+ 'shivMethods': (options.shivMethods !== false),
+
+ /**
+ * A string to describe the type of `html5` object ("default" or "default print").
+ * @memberOf html5
+ * @type String
+ */
+ 'type': 'default',
+
+ // shivs the document according to the specified `html5` object options
+ 'shivDocument': shivDocument,
+
+ //creates a shived element
+ createElement: createElement,
+
+ //creates a shived documentFragment
+ createDocumentFragment: createDocumentFragment
+ };
+
+ /*--------------------------------------------------------------------------*/
+
+ // expose html5
+ window.html5 = html5;
+
+ // shiv the document
+ shivDocument(document);
+
+ }(this, document));
+ /*>>shiv*/
+
+ // Assign private properties to the return object with prefix
+ Modernizr._version = version;
+
+ // expose these for the plugin API. Look in the source for how to join() them against your input
+ /*>>prefixes*/
+ Modernizr._prefixes = prefixes;
+ /*>>prefixes*/
+ /*>>domprefixes*/
+ Modernizr._domPrefixes = domPrefixes;
+ Modernizr._cssomPrefixes = cssomPrefixes;
+ /*>>domprefixes*/
+
+ /*>>mq*/
+ // Modernizr.mq tests a given media query, live against the current state of the window
+ // A few important notes:
+ // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
+ // * A max-width or orientation query will be evaluated against the current state, which may change later.
+ // * You must specify values. Eg. If you are testing support for the min-width media query use:
+ // Modernizr.mq('(min-width:0)')
+ // usage:
+ // Modernizr.mq('only screen and (max-width:768)')
+ Modernizr.mq = testMediaQuery;
+ /*>>mq*/
+
+ /*>>hasevent*/
+ // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
+ // Modernizr.hasEvent('gesturestart', elem)
+ Modernizr.hasEvent = isEventSupported;
+ /*>>hasevent*/
+
+ /*>>testprop*/
+ // Modernizr.testProp() investigates whether a given style property is recognized
+ // Note that the property names must be provided in the camelCase variant.
+ // Modernizr.testProp('pointerEvents')
+ Modernizr.testProp = function(prop){
+ return testProps([prop]);
+ };
+ /*>>testprop*/
+
+ /*>>testallprops*/
+ // Modernizr.testAllProps() investigates whether a given style property,
+ // or any of its vendor-prefixed variants, is recognized
+ // Note that the property names must be provided in the camelCase variant.
+ // Modernizr.testAllProps('boxSizing')
+ Modernizr.testAllProps = testPropsAll;
+ /*>>testallprops*/
+
+
+ /*>>teststyles*/
+ // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
+ // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
+ Modernizr.testStyles = injectElementWithStyles;
+ /*>>teststyles*/
+
+
+ /*>>prefixed*/
+ // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
+ // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
+
+ // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
+ // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
+ //
+ // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
+
+ // If you're trying to ascertain which transition end event to bind to, you might do something like...
+ //
+ // var transEndEventNames = {
+ // 'WebkitTransition' : 'webkitTransitionEnd',
+ // 'MozTransition' : 'transitionend',
+ // 'OTransition' : 'oTransitionEnd',
+ // 'msTransition' : 'MSTransitionEnd',
+ // 'transition' : 'transitionend'
+ // },
+ // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
+
+ Modernizr.prefixed = function(prop, obj, elem){
+ if(!obj) {
+ return testPropsAll(prop, 'pfx');
+ } else {
+ // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
+ return testPropsAll(prop, obj, elem);
+ }
+ };
+ /*>>prefixed*/
+
+
+ /*>>cssclasses*/
+ // Remove "no-js" class from <html> element, if it exists:
+ docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
+
+ // Add the new classes to the <html> element.
+ (enableClasses ? ' js ' + classes.join(' ') : '');
+ /*>>cssclasses*/
+
+ return Modernizr;
+
+})(this, this.document);
--- /dev/null
+window.Modernizr=function(a,b,c){function d(a){t.cssText=a}function e(a,b){return d(x.join(a+";")+(b||""))}function f(a,b){return typeof a===b}function g(a,b){return!!~(""+a).indexOf(b)}function h(a,b){for(var d in a){var e=a[d];if(!g(e,"-")&&t[e]!==c)return"pfx"!=b||e}return!1}function i(a,b,d){for(var e in a){var g=b[a[e]];if(g!==c)return!1===d?a[e]:f(g,"function")?g.bind(d||b):g}return!1}function j(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+z.join(d+" ")+d).split(" ");return f(b,"string")||f(b,"undefined")?h(e,b):(e=(a+" "+A.join(d+" ")+d).split(" "),i(e,b,c))}function k(){o.input=function(c){for(var d=0,e=c.length;d<e;d++)E[c[d]]=!!(c[d]in u);return E.list&&(E.list=!(!b.createElement("datalist")||!a.HTMLDataListElement)),E}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),o.inputtypes=function(a){for(var d,e,f,g=0,h=a.length;g<h;g++)u.setAttribute("type",e=a[g]),d="text"!==u.type,d&&(u.value=v,u.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&u.style.WebkitAppearance!==c?(q.appendChild(u),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(u,null).WebkitAppearance&&0!==u.offsetHeight,q.removeChild(u)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?u.checkValidity&&!1===u.checkValidity():u.value!=v)),D[a[g]]=!!d;return D}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var l,m,n="2.8.3",o={},p=!0,q=b.documentElement,r="modernizr",s=b.createElement(r),t=s.style,u=b.createElement("input"),v=":)",w={}.toString,x=" -webkit- -moz- -o- -ms- ".split(" "),y="Webkit Moz O ms",z=y.split(" "),A=y.toLowerCase().split(" "),B={svg:"http://www.w3.org/2000/svg"},C={},D={},E={},F=[],G=F.slice,H=function(a,c,d,e){var f,g,h,i,j=b.createElement("div"),k=b.body,l=k||b.createElement("body");if(parseInt(d,10))for(;d--;)h=b.createElement("div"),h.id=e?e[d]:r+(d+1),j.appendChild(h);return f=["­",'<style id="s',r,'">',a,"</style>"].join(""),j.id=r,(k?j:l).innerHTML+=f,l.appendChild(j),k||(l.style.background="",l.style.overflow="hidden",i=q.style.overflow,q.style.overflow="hidden",q.appendChild(l)),g=c(j,a),k?j.parentNode.removeChild(j):(l.parentNode.removeChild(l),q.style.overflow=i),!!g},I=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return H("@media "+b+" { #"+r+" { position: absolute; } }",function(b){d="absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position}),d},J=function(){function a(a,e){e=e||b.createElement(d[a]||"div"),a="on"+a;var g=a in e;return g||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(a,""),g=f(e[a],"function"),f(e[a],"undefined")||(e[a]=c),e.removeAttribute(a))),e=null,g}var d={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return a}(),K={}.hasOwnProperty;m=f(K,"undefined")||f(K.call,"undefined")?function(a,b){return b in a&&f(a.constructor.prototype[b],"undefined")}:function(a,b){return K.call(a,b)},Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=G.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(G.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(G.call(arguments)))};return d}),C.flexbox=function(){return j("flexWrap")},C.flexboxlegacy=function(){return j("boxDirection")},C.canvas=function(){var a=b.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))},C.canvastext=function(){return!(!o.canvas||!f(b.createElement("canvas").getContext("2d").fillText,"function"))},C.webgl=function(){return!!a.WebGLRenderingContext},C.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:H(["@media (",x.join("touch-enabled),("),r,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=9===a.offsetTop}),c},C.geolocation=function(){return"geolocation"in navigator},C.postmessage=function(){return!!a.postMessage},C.websqldatabase=function(){return!!a.openDatabase},C.indexedDB=function(){return!!j("indexedDB",a)},C.hashchange=function(){return J("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},C.history=function(){return!(!a.history||!history.pushState)},C.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},C.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},C.rgba=function(){return d("background-color:rgba(150,255,150,.5)"),g(t.backgroundColor,"rgba")},C.hsla=function(){return d("background-color:hsla(120,40%,100%,.5)"),g(t.backgroundColor,"rgba")||g(t.backgroundColor,"hsla")},C.multiplebgs=function(){return d("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(t.background)},C.backgroundsize=function(){return j("backgroundSize")},C.borderimage=function(){return j("borderImage")},C.borderradius=function(){return j("borderRadius")},C.boxshadow=function(){return j("boxShadow")},C.textshadow=function(){return""===b.createElement("div").style.textShadow},C.opacity=function(){return e("opacity:.55"),/^0.55$/.test(t.opacity)},C.cssanimations=function(){return j("animationName")},C.csscolumns=function(){return j("columnCount")},C.cssgradients=function(){var a="background-image:";return d((a+"-webkit- ".split(" ").join("gradient(linear,left top,right bottom,from(#9f9),to(white));"+a)+x.join("linear-gradient(left top,#9f9, white);"+a)).slice(0,-a.length)),g(t.backgroundImage,"gradient")},C.cssreflections=function(){return j("boxReflect")},C.csstransforms=function(){return!!j("transform")},C.csstransforms3d=function(){var a=!!j("perspective");return a&&"webkitPerspective"in q.style&&H("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=9===b.offsetLeft&&3===b.offsetHeight}),a},C.csstransitions=function(){return j("transition")},C.fontface=function(){var a;return H('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&0===g.indexOf(d.split(" ")[0])}),a},C.generatedcontent=function(){var a;return H(["#",r,"{font:0/0 a}#",r,':after{content:"',v,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},C.video=function(){var a=b.createElement("video"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(a){}return c},C.audio=function(){var a=b.createElement("audio"),c=!1;try{(c=!!a.canPlayType)&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(a){}return c},C.localstorage=function(){try{return localStorage.setItem(r,r),localStorage.removeItem(r),!0}catch(a){return!1}},C.sessionstorage=function(){try{return sessionStorage.setItem(r,r),sessionStorage.removeItem(r),!0}catch(a){return!1}},C.webworkers=function(){return!!a.Worker},C.applicationcache=function(){return!!a.applicationCache},C.svg=function(){return!!b.createElementNS&&!!b.createElementNS(B.svg,"svg").createSVGRect},C.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==B.svg},C.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(w.call(b.createElementNS(B.svg,"animate")))},C.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(w.call(b.createElementNS(B.svg,"clipPath")))};for(var L in C)m(C,L)&&(l=L.toLowerCase(),o[l]=C[L](),F.push((o[l]?"":"no-")+l));return o.input||k(),o.addTest=function(a,b){if("object"==typeof a)for(var d in a)m(a,d)&&o.addTest(d,a[d]);else{if(a=a.toLowerCase(),o[a]!==c)return o;b="function"==typeof b?b():b,void 0!==p&&p&&(q.className+=" "+(b?"":"no-")+a),o[a]=b}return o},d(""),s=u=null,function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=s.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=r[a[p]];return b||(b={},q++,a[p]=q,r[q]=b),b}function f(a,c,d){if(c||(c=b),k)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():o.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!f.canHaveChildren||n.test(a)||f.tagUrn?f:d.frag.appendChild(f)}function g(a,c){if(a||(a=b),k)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;g<i;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function i(a){a||(a=b);var d=e(a);return!s.shivCSS||j||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||h(a,d),a}var j,k,l="3.7.0",m=a.html5||{},n=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,o=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",q=0,r={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",j="hidden"in a,k=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return void 0===a.cloneNode||void 0===a.createDocumentFragment||void 0===a.createElement}()}catch(a){j=!0,k=!0}}();var s={elements:m.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:l,shivCSS:!1!==m.shivCSS,supportsUnknownElements:k,shivMethods:!1!==m.shivMethods,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g};a.html5=s,i(b)}(this,b),o._version=n,o._prefixes=x,o._domPrefixes=A,o._cssomPrefixes=z,o.mq=I,o.hasEvent=J,o.testProp=function(a){return h([a])},o.testAllProps=j,o.testStyles=H,o.prefixed=function(a,b,c){return b?j(a,b,c):j(a,"pfx")},q.className=q.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(p?" js "+F.join(" "):""),o}(this,this.document);
\ No newline at end of file
--- /dev/null
+(function(){var k=void 0,aa=encodeURIComponent,l=String,o=Math,ba="push",ca="cookie",p="charAt",q="indexOf",da="getTime",r="toString",t="window",v="length",w="document",x="split",y="location",ea="protocol",fa="href",z="substring",A="join",C="toLowerCase";var ga="_gat",ha="_gaq",ia="4.9.4",ja="_gaUserPrefs",ka="ioo",D="&",E="=",F="__utma=",H="__utmb=",la="__utmc=",ma="__utmk=",I="__utmv=",J="__utmz=",na="__utmx=",oa="GASO=";var pa=function(){var d=this,f=[],b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";d.set=function(b){f[b]=!0};d.Sc=function(){for(var d=[],e=0;e<f[v];e++)f[e]&&(d[o.floor(e/6)]^=1<<e%6);for(e=0;e<d[v];e++)d[e]=b[p](d[e]||0);return d[A]("")+"~"}},qa=new pa;function K(d){qa.set(d)};var ra=function(d,f){var b=this;b.window=d;b.document=f;b.setTimeout=function(b,e){setTimeout(b,e)};b.Jb=function(b){return navigator.userAgent[q](b)>=0};b.Xc=function(){return b.Jb("Firefox")&&![].reduce};b.Vc=function(){return L[t][ja]};b.Gc=function(){return L[t].external};b.Hc=function(){return L[t].performance||L[t].webkitPerformance};b.Ic=function(){return L[t].top==L[t]};b.Ya=function(b){var e=L[t]&&L[t].gaGlobal;if(b&&!e)e={},L[t].gaGlobal=e;return e};b.ec=function(b){L[w][y].href=b};b.qb=
+function(d){if(!d||!b.Jb("Firefox"))return d;for(var d=d.replace(/\n|\r/g," "),e=0,f=d[v];e<f;++e){var g=d.charCodeAt(e)&255;if(g==10||g==13)d=d[z](0,e)+"?"+d[z](e+1)}return d}},L=new ra(window,document);var sa=function(d){return function(f,b,h){d[f]=function(){K(b);return h.apply(d,arguments)};return h}},ta=function(d,f,b,h){d.addEventListener?d.addEventListener(f,b,!!h):d.attachEvent&&d.attachEvent("on"+f,b)},ua=function(d){return Object.prototype[r].call(Object(d))=="[object Array]"},M=function(d){return k==d||"-"==d||""==d},N=function(d,f,b){var h="-",e;!M(d)&&!M(f)&&!M(b)&&(e=d[q](f),e>-1&&(b=d[q](b,e),b<0&&(b=d[v]),h=d[z](e+f[q](E)+1,b)));return h},xa=function(d){var f=!1,b=0,h,e;if(!M(d)){f=
+!0;for(h=0;h<d[v];h++)e=d[p](h),b+="."==e?1:0,f=f&&b<=1&&(0==h&&"-"==e||".0123456789"[q](e)>-1)}return f},P=function(d,f){var b=aa;return b instanceof Function?f?encodeURI(d):b(d):(K(68),escape(d))},Q=function(d,f){var b=decodeURIComponent,h,d=d[x]("+")[A](" ");if(b instanceof Function)try{h=f?decodeURI(d):b(d)}catch(e){K(17),h=unescape(d)}else K(68),h=unescape(d);return h},R=function(d,f){return d[q](f)>-1};
+function ya(d){if(!d||""==d)return"";for(;d[p](0)[v]>0&&" \n\r\t"[q](d[p](0))>-1;)d=d[z](1);for(;d[p](d[v]-1)[v]>0&&" \n\r\t"[q](d[p](d[v]-1))>-1;)d=d[z](0,d[v]-1);return d}var T=function(d,f){d[ba]||K(94);d[d[v]]=f},za=function(d){var f=1,b=0,h;if(!M(d)){f=0;for(h=d[v]-1;h>=0;h--)b=d.charCodeAt(h),f=(f<<6&268435455)+b+(b<<14),b=f&266338304,f=b!=0?f^b>>21:f}return f},Aa=function(){return o.round(o.random()*2147483647)},Ba=function(){};var Ca=function(d,f){this.ib=d;this.jb=f},Da=function(){function d(b){for(var d=[],b=b[x](","),e,f=0;f<b[v];f++)e=b[f][x](":"),d[ba](new Ca(e[0],e[1]));return d}var f=this;f.Ca="utm_campaign";f.Da="utm_content";f.Ea="utm_id";f.Fa="utm_medium";f.Ga="utm_nooverride";f.Ha="utm_source";f.Ia="utm_term";f.Ja="gclid";f.vc="dclid";f.U=0;f.w=0;f.La=15768E6;f.Ma=18E5;f.s=63072E6;f.V=[];f.W=[];f.wc="cse";f.xc="q";f.Ta=50;f.J=d("daum:q,eniro:search_word,naver:query,pchome:q,images.google:q,google:q,yahoo:p,yahoo:q,msn:q,bing:q,aol:query,aol:encquery,aol:q,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:q,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:query,rambler:words");
+f.f="/";f.L=100;f.ga="/__utm.gif";f.la=1;f.ma=1;f.u="|";f.ka=1;f.Ka=1;f.Ua=1;f.b="auto";f.B=1;f.Wb=10;f.zc=10;f.Ac=0.2;f.o=k};var Ea=function(d){function f(a,c,b,j){var i="",d=0,i=N(a,"2"+c,";");if(!M(i)){a=i[q]("^"+b+".");if(a<0)return["",0];i=i[z](a+b[v]+2);i[q]("^")>0&&(i=i[x]("^")[0]);b=i[x](":");i=b[1];d=parseInt(b[0],10);!j&&d<e.m&&(i="")}M(i)&&(i="");return[i,d]}function b(a,c){return"^"+[[c,a[1]][A]("."),a[0]][A](":")}function h(a){var c=new Date,a=new Date(c[da]()+a);return"expires="+a.toGMTString()+"; "}var e=this,m=d;e.m=(new Date)[da]();var g=[F,H,la,J,I,na,oa];e.g=function(){var a=L[w][ca];return m.o?e.Nc(a,
+m.o):a};e.Nc=function(a,c){for(var b=[],j,i=0;i<g[v];i++)j=f(a,g[i],c)[0],M(j)||(b[b[v]]=g[i]+j+";");return b[A]("")};e.l=function(a,c,b){var j=b>0?h(b):"";m.o&&(c=e.Oc(L[w][ca],a,m.o,c,b),a="2"+a,j=b>0?h(m.s):"");a+=c;a=L.qb(a);a[v]>2E3&&(K(69),a=a[z](0,2E3));j=a+"; path="+m.f+"; "+j+e.hb();if(!V.pb())L[w].cookie=j};e.Oc=function(a,c,d,j,i){var g="",i=i||m.s,j=b([j,e.m+i*1],d),g=N(a,"2"+c,";");if(!M(g))return a=b(f(a,c,d,!0),d),g=g[x](a)[A](""),g=j+g;return j};e.hb=function(){return M(m.b)?"":"domain="+
+m.b+";"}};var Fa=function(d){function f(a){a=ua(a)?a[A]("."):"";return M(a)?"-":a}function b(a,c){var n=[],b;if(!M(a)&&(n=a[x]("."),c))for(b=0;b<n[v];b++)xa(n[b])||(n[b]="-");return n}function h(a,c,n){var b=i.I,j,d;for(j=0;j<b[v];j++)d=b[j][0],d+=M(c)?c:c+b[j][4],b[j][2](N(a,d,n))}var e,m,g,a,c,u,j,i=this,s,n=d;i.i=new Ea(d);i.Ba=function(){return k==s||s==i.K()};i.g=function(){return i.i.g()};i.ea=function(){return c?c:"-"};i.Pa=function(a){c=a};i.fa=function(a){s=xa(a)?a*1:"-"};i.da=function(){return f(u)};
+i.X=function(a){u=b(a)};i.yc=function(){i.i.l(I,"",-1)};i.Rb=function(){return s?s:"-"};i.hb=function(){return M(n.b)?"":"domain="+n.b+";"};i.ba=function(){return f(e)};i.Na=function(a){e=b(a,1)};i.z=function(){return f(m)};i.$=function(a){m=b(a,1)};i.ca=function(){return f(g)};i.Oa=function(a){g=b(a,1)};i.qa=function(){return f(a)};i.ra=function(c){a=b(c);for(c=0;c<a[v];c++)c<4&&!xa(a[c])&&(a[c]="-")};i.Fc=function(){return j};i.Dc=function(a){j=a};i.Qb=function(){e=[];m=[];g=[];a=[];c=k;u=[];s=
+k};i.K=function(){for(var a="",c=0;c<i.I[v];c++)a+=i.I[c][1]();return za(a)};i.Z=function(a){var c=i.g(),n=!1;c&&(h(c,a,";"),i.fa(l(i.K())),n=!0);return n};i.Sb=function(a){h(a,"",D);i.fa(N(a,ma,D))};i.Tb=function(){var a=i.I,c=[],n;for(n=0;n<a[v];n++)T(c,a[n][0]+a[n][1]());T(c,ma+i.K());return c[A](D)};i.Ub=function(a,c){var b=i.I,j=n.f;i.Z(a);n.f=c;for(var d=0;d<b[v];d++)if(!M(b[d][1]()))b[d][3]();n.f=j};i.Qa=function(){i.i.l(F,i.ba(),n.s)};i.aa=function(){i.i.l(H,i.z(),n.Ma)};i.Ra=function(){i.i.l(la,
+i.ca(),0)};i.sa=function(){i.i.l(J,i.qa(),n.La)};i.Sa=function(){i.i.l(na,i.ea(),n.s)};i.Y=function(){i.i.l(I,i.da(),n.s)};i.Ec=function(){i.i.l(oa,i.Fc(),0)};i.I=[[F,i.ba,i.Na,i.Qa,"."],[H,i.z,i.$,i.aa,""],[la,i.ca,i.Oa,i.Ra,""],[na,i.ea,i.Pa,i.Sa,""],[J,i.qa,i.ra,i.sa,"."],[I,i.da,i.X,i.Y,"."]]};var Ga="https:"==L[w][y][ea]?"https://ssl.google-analytics.com/":"http://www.google-analytics.com/",Ha=Ga+"p/__utm.gif",Ja=function(){var d=this;d.Bb=function(f,b,h,e,m){b[v]<=2036||m?d.Aa(f+"?"+b,e):b[v]<=8192?L.Xc()?d.Aa(f+"?"+h+"&err=ff2post&len="+b[v],e):d.fd(b,e):d.Aa(f+"?"+h+"&err=len&max=8192&len="+b[v],e)};d.Aa=function(d,b){var h=new Image(1,1);h.src=d;h.onload=function(){h.onload=null;(b||Ba)()}};d.fd=function(f,b){d.ed(f,b)||d.Ob(f,b)};d.ed=function(d,b){var h,e=L[t].XDomainRequest;if(e)h=
+new e,h.open("POST",Ha);else if(e=L[t].XMLHttpRequest)e=new e,"withCredentials"in e&&(h=e,h.open("POST",Ha,!0),h.setRequestHeader("Content-Type","text/plain"));if(h)return h.onreadystatechange=function(){h.readyState==4&&(b&&b(),h=null)},h.send(d),!0;return!1};d.Ob=function(f,b){var h=L[w];if(h.body){f=aa(f);try{var e=h.createElement('<iframe name="'+f+'"></iframe>')}catch(m){e=h.createElement("iframe"),e.name=f}e.height="0";e.width="0";e.style.display="none";e.style.visibility="hidden";var g=h[y],
+g=g[ea]+"//"+g.host+"/favicon.ico",g=Ga+"u/post_iframe.html#"+aa(g),a=function(){e.src="";e.parentNode&&e.parentNode.removeChild(e)};ta(L[t],"beforeunload",a);var c=!1,u=0,j=function(){if(!c){try{if(u>9||e.contentWindow[y].host==h[y].host){c=!0;a();var d=L[t],g="beforeunload",n=a;d.removeEventListener?d.removeEventListener(g,n,!1):d.detachEvent&&d.detachEvent("on"+g,n);b&&b();return}}catch(f){}u++;L.setTimeout(j,200)}};ta(e,"load",j);h.body.appendChild(e);e.src=g}else L.setTimeout(function(){d.Ob(f,
+b)},100)}};var Ka=function(d){var f=this,b=d,h=new Fa(b),e=null,m=!V.pb(),g=function(){};f.Uc=function(){return"https:"==L[w][y][ea]?"https://ssl.google-analytics.com/__utm.gif":"http://www.google-analytics.com/__utm.gif"};f.A=function(a,c,d,j,i,s){e||(e=new Ja);var n=b.B,O=L[w][y];h.Z(d);var B=h.z()[x](".");if(B[1]<500||j){if(i){var S=(new Date)[da](),X;X=(S-B[3])*(b.Ac/1E3);X>=1&&(B[2]=o.min(o.floor(B[2]*1+X),b.zc),B[3]=S)}if(j||!i||B[2]>=1){!j&&i&&(B[2]=B[2]*1-1);j=B[1]*1+1;B[1]=j;i="utmwv="+ia;S="&utms="+
+j;X="&utmn="+Aa();j=i+"e"+S+X;a=i+S+X+(M(O.hostname)?"":"&utmhn="+P(O.hostname))+(b.L==100?"":"&utmsp="+P(b.L))+a;if(0==n||2==n)O=2==n?g:s||g,m&&e.Bb(b.ga,a,j,O,!0);if(1==n||2==n)c="&utmac="+c,j+=c,a+=c+"&utmcc="+f.Tc(d),V.Ab&&(d="&aip=1",j+=d,a+=d),a+="&utmu="+qa.Sc(),m&&e.Bb(f.Uc(),a,j,s)}}h.$(B[A]("."));h.aa()};f.Tc=function(a){for(var c=[],b=[F,J,I,na],d=h.g(),i,g=0;g<b[v];g++)if(i=N(d,b[g]+a,";"),!M(i)){if(b[g]==I){i=i[x](a+".")[1][x]("|")[0];if(M(i))continue;i=a+"."+i}T(c,b[g]+i+";")}return P(c[A]("+"))}};var W=function(){var d=this;d.N=[];d.Va=function(f){for(var b,h=d.N,e=0;e<h[v];e++)b=f==h[e].q?h[e]:b;return b};d.Xb=function(f,b,h,e,m,g,a,c){var u=d.Va(f);k==u?(u=new W.Wc(f,b,h,e,m,g,a,c),T(d.N,u)):(u.tb=b,u.zb=h,u.yb=e,u.wb=m,u.ub=g,u.xb=a,u.vb=c);return u}};W.Qc=function(d,f,b,h,e,m){var g=this;g.Fb=d;g.va=f;g.n=b;g.Cb=h;g.Db=e;g.Eb=m;g.ha=function(){return"&"+["utmt=item","tid="+P(g.Fb),"ipc="+P(g.va),"ipn="+P(g.n),"iva="+P(g.Cb),"ipr="+P(g.Db),"iqt="+P(g.Eb)][A]("&utm")}};
+W.Wc=function(d,f,b,h,e,m,g,a){var c=this;c.q=d;c.tb=f;c.zb=b;c.yb=h;c.wb=e;c.ub=m;c.xb=g;c.vb=a;c.M=[];c.Vb=function(a,b,d,g,n){var e=c.Rc(a),f=c.q;k==e?T(c.M,new W.Qc(f,a,b,d,g,n)):(e.Fb=f,e.va=a,e.n=b,e.Cb=d,e.Db=g,e.Eb=n)};c.Rc=function(a){for(var b,d=c.M,g=0;g<d[v];g++)b=a==d[g].va?d[g]:b;return b};c.ha=function(){return"&"+["utmt=tran","id="+P(c.q),"st="+P(c.tb),"to="+P(c.zb),"tx="+P(c.yb),"sp="+P(c.wb),"ci="+P(c.ub),"rg="+P(c.xb),"co="+P(c.vb)][A]("&utmt")}};var La=function(d){function f(){var b,a,c;a="ShockwaveFlash";var d="$version",j=L[t].navigator;if((j=j?j.plugins:k)&&j[v]>0)for(b=0;b<j[v]&&!c;b++)a=j[b],R(a.name,"Shockwave Flash")&&(c=a.description[x]("Shockwave Flash ")[1]);else{a=a+"."+a;try{b=new ActiveXObject(a+".7"),c=b.GetVariable(d)}catch(e){}if(!c)try{b=new ActiveXObject(a+".6"),c="WIN 6,0,21,0",b.we="always",c=b.GetVariable(d)}catch(f){}if(!c)try{b=new ActiveXObject(a),c=b.GetVariable(d)}catch(n){}c&&(c=c[x](" ")[1][x](","),c=c[0]+"."+
+c[1]+" r"+c[2])}return c?c:h}var b=this,h="-",e=L[t].screen,m=L[t].navigator;b.Nb=e?e.width+"x"+e.height:h;b.Mb=e?e.colorDepth+"-bit":h;b.cd=P(L[w].characterSet?L[w].characterSet:L[w].charset?L[w].charset:h);b.Lb=(m&&m.language?m.language:m&&m.browserLanguage?m.browserLanguage:h)[C]();b.Kb=m&&m.javaEnabled()?1:0;b.dd=d?f():h;b.dc=function(){return D+"utm"+["cs="+P(b.cd),"sr="+b.Nb,"sc="+b.Mb,"ul="+b.Lb,"je="+b.Kb,"fl="+P(b.dd)][A]("&utm")};b.cc=function(){for(var d=L[t].navigator,a=L[t].history[v],
+d=d.appName+d.version+b.Lb+d.platform+d.userAgent+b.Kb+b.Nb+b.Mb+(L[w][ca]?L[w][ca]:"")+(L[w].referrer?L[w].referrer:""),c=d[v];a>0;)d+=a--^c++;return za(d)}};var Z=function(d,f,b,h){function e(a){var c="",c=a[x]("://")[1][C]();R(c,"/")&&(c=c[x]("/")[0]);return c}var m=h,g=this;g.a=d;g.ob=f;g.m=b;g.mb=function(a){var c=g.ua();return new Z.v(N(a,m.Ea+E,D),N(a,m.Ha+E,D),N(a,m.Ja+E,D),g.R(a,m.Ca,"(not set)"),g.R(a,m.Fa,"(not set)"),g.R(a,m.Ia,c&&!M(c.G)?Q(c.G):k),g.R(a,m.Da,k),N(a,m.vc+E,D))};g.nb=function(a){var c=e(a),b;b=a;var d="";b=b[x]("://")[1][C]();R(b,"/")&&(b=b[x]("/")[1],R(b,"?")&&(d=b[x]("?")[0]));b=d;if(R(c,"google")&&(a=a[x]("?")[A](D),R(a,D+
+m.xc+E)&&b==m.wc))return!0;return!1};g.ua=function(){var a,c=g.ob,b,d=m.J;if(!M(c)&&"0"!=c&&R(c,"://")&&!g.nb(c)){a=e(c);for(var i=0;i<d[v];i++)if(b=d[i],R(a,b.ib[C]())&&(c=c[x]("?")[A](D),R(c,D+b.jb+E)))return a=c[x](D+b.jb+E)[1],R(a,D)&&(a=a[x](D)[0]),new Z.v(k,b.ib,k,"(organic)","organic",a,k,k)}};g.R=function(a,c,b){a=N(a,c+E,D);return b=!M(a)?Q(a):!M(b)?b:"-"};g.Bc=function(a){var c=m.V,b=!1;if(a&&"organic"==a.P)for(var a=Q(a.G)[C](),d=0;d<c[v];d++)b=b||c[d][C]()==a;return b};g.lb=function(){var a=
+"",c="",a=g.ob;if(!M(a)&&"0"!=a&&R(a,"://")&&!g.nb(a))return a=a[x]("://")[1],R(a,"/")&&(c=a[z](a[q]("/")),c=c[x]("?")[0],a=a[x]("/")[0][C]()),0==a[q]("www.")&&(a=a[z](4)),new Z.v(k,a,k,"(referral)","referral",k,c,k)};g.kb=function(a){var c="";m.U&&(c=a&&a.hash?a[fa][z](a[fa][q]("#")):"",c=""!=c?c+D:c);c+=a.search;return c};g.ta=function(){return new Z.v(k,"(direct)",k,"(direct)","(none)",k,k,k)};g.Cc=function(a){var c=!1,b=m.W;if(a&&"referral"==a.P)for(var a=P(a.Q)[C](),d=0;d<b[v];d++)c=c||R(a,b[d][C]());
+return c};g.h=function(a){return k!=a&&a.fb()};g.te=function(a){var a=N(a,J+g.a+".",";"),c=a[x]("."),a=new Z.v;a.gb(c.slice(4)[A]("."));if(!g.h(a))return!0;c=L[w][y];c=g.kb(c);c=g.mb(c);g.h(c)||(c=g.ua(),g.h(c)||(c=g.lb()));return g.h(c)&&a.H()[C]()!=c.H()[C]()};g.Pb=function(a,c){if(m.Ka){var b="",d="-",e,f=0,n,h,B=g.a;if(a){h=a.g();b=g.kb(L[w][y]);if(m.w&&a.Ba()&&(d=Q(a.qa()),!M(d)&&!R(d,";"))){a.ra(d);a.sa();return}d=N(h,J+B+".",";");e=g.mb(b);if(g.h(e)&&(b=N(b,m.Ga+E,D),"1"==b&&!M(d)))return;
+if(!g.h(e)){e=g.ua();b=g.Bc(e);if(!M(d)&&b)return;b&&(e=g.ta())}if(!g.h(e)&&c){e=g.lb();b=g.Cc(e);if(!M(d)&&b)return;b&&(e=g.ta())}g.h(e)||M(d)&&c&&(e=g.ta());if(g.h(e)&&(M(d)||(f=d[x]("."),n=new Z.v,n.gb(f.slice(4)[A](".")),n=n.H()[C]()==e.H()[C](),f=f[3]*1),!n||c))h=N(h,F+B+".",";"),n=h.lastIndexOf("."),h=n>9?h[z](n+1)*1:0,f++,h=0==h?1:h,a.ra([B,g.m,h,f,e.H()][A](".")),a.sa()}}}};
+Z.v=function(d,f,b,h,e,m,g,a){var c=this;c.q=d;c.Q=f;c.ya=b;c.n=h;c.P=e;c.G=m;c.Gb=g;c.xa=a;c.H=function(){var a=[],b=[["cid",c.q],["csr",c.Q],["gclid",c.ya],["ccn",c.n],["cmd",c.P],["ctr",c.G],["cct",c.Gb],["dclid",c.xa]],d,e;if(c.fb())for(d=0;d<b[v];d++)M(b[d][1])||(e=b[d][1][x]("+")[A]("%20"),e=e[x](" ")[A]("%20"),T(a,"utm"+b[d][0]+E+e));return L.qb(a[A]("|"))};c.fb=function(){return!(M(c.q)&&M(c.Q)&&M(c.ya)&&M(c.xa))};c.gb=function(a){var b=function(b){return Q(N(a,"utm"+b+E,"|"))};c.q=b("cid");
+c.Q=b("csr");c.ya=b("gclid");c.n=b("ccn");c.P=b("cmd");c.G=b("ctr");c.Gb=b("cct");c.xa=b("dclid")}};var Ma=function(d,f,b,h){var e=this,m=f,g=E,a=d,c=h;e.S=b;e.wa="";e.r={};e.$b=function(){var a;a=N(e.S.g(),I+m+".",";")[x](m+".")[1];if(!M(a)){a=a[x]("|");var b=e.r,c=a[1],d;if(!M(c))for(var c=c[x](","),n=0;n<c[v];n++)d=c[n],M(d)||(d=d[x](g),d[v]==4&&(b[d[0]]=[Q(d[1]),Q(d[2]),1]));e.wa=Q(a[0]);e.T()}};e.T=function(){e.Pc();var a=P(e.wa),b,c,d="";for(b in e.r)(c=e.r[b])&&1===c[2]&&(d+=b+g+P(c[0])+g+P(c[1])+g+1+",");M(d)||(a+="|"+d);M(a)?e.S.yc():(e.S.X(m+"."+a),e.S.Y())};e.bc=function(a){e.wa=a;e.T()};
+e.ac=function(b,c,d,g){1!=g&&2!=g&&3!=g&&(g=3);var n=!1;if(c&&d&&b>0&&b<=a.Ta){var f=P(c),h=P(d);f[v]+h[v]<=64&&(e.r[b]=[c,d,g],e.T(),n=!0)}return n};e.Zb=function(a){if((a=e.r[a])&&1===a[2])return a[1]};e.Yb=function(a){var b=e.r;b[a]&&(delete b[a],e.T())};e.Pc=function(){c.t(8);c.t(9);c.t(11);var a=e.r,b,d;for(d in a)if(b=a[d])c.j(8,d,b[0]),c.j(9,d,b[1]),(b=b[2])&&3!=b&&c.j(11,d,""+b)}};var Na=function(){function d(a,b,c,d){k==g[a]&&(g[a]={});k==g[a][b]&&(g[a][b]=[]);g[a][b][c]=d}function f(a,b,c){if(k!=g[a]&&k!=g[a][b])return g[a][b][c]}function b(a,b){if(k!=g[a]&&k!=g[a][b]){g[a][b]=k;var c=!0,d;for(d=0;d<u[v];d++)if(k!=g[a][u[d]]){c=!1;break}c&&(g[a]=k)}}function h(a){var b="",c=!1,d,e;for(d=0;d<u[v];d++)if(e=a[u[d]],k!=e){c&&(b+=u[d]);for(var c=[],g=k,f=k,f=0;f<e[v];f++)if(k!=e[f]){g="";f!=S&&k==e[f-1]&&(g+=f[r]()+n);var h;h=e[f];for(var O="",m=k,U=k,wa=k,m=0;m<h[v];m++)U=h[p](m),
+wa=B[U],O+=k!=wa?wa:U;h=O;g+=h;T(c,g)}e=j+c[A](s)+i;b+=e;c=!1}else c=!0;return b}var e=this,m=sa(e),g={},a="k",c="v",u=[a,c],j="(",i=")",s="*",n="!",O="'",B={};B[O]="'0";B[i]="'1";B[s]="'2";B[n]="'3";var S=1;e.Yc=function(a){return k!=g[a]};e.C=function(){var a="",b;for(b in g)k!=g[b]&&(a+=b[r]()+h(g[b]));return a};e.hc=function(a){if(a==k)return e.C();var b=a.C(),c;for(c in g)k!=g[c]&&!a.Yc(c)&&(b+=c[r]()+h(g[c]));return b};e.j=m("_setKey",89,function(b,c,n){if(typeof n!="string")return!1;d(b,a,
+c,n);return!0});e.ja=m("_setValue",90,function(a,b,n){if(typeof n!="number"&&(k==Number||!(n instanceof Number))||o.round(n)!=n||n==NaN||n==Infinity)return!1;d(a,c,b,n[r]());return!0});e.fc=m("_getKey",87,function(b,c){return f(b,a,c)});e.gc=m("_getValue",88,function(a,b){return f(a,c,b)});e.t=m("_clearKey",85,function(c){b(c,a)});e.ia=m("_clearValue",86,function(a){b(a,c)})};var Oa=function(d,f){var b=this,h=sa(b);b.ze=f;b.gd=d;b.Za=h("_trackEvent",91,function(d,h,g){return f.Za(b.gd,d,h,g)})};var Pa=function(d,f){var b=this,h=L.Gc(),e=L.Hc(),m=10;b.rb=new Na;b.Kc=function(){var b,a="timing",c="onloadT";h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart);return b};b.Mc=function(){return d.D()&&d.Xa()%100<m};b.Lc=function(){var e="&utmt=event&utme="+P(b.rb.C())+d.na();f.A(e,d.p,d.a,!1,!0)};b.Jc=function(b){b=o.min(o.floor(b/100),5E3);return b>0?b+"00":"0"};b.sb=function(){var d=b.Kc();if(d==k||isNaN(d))return!1;if(d<=0)return!0;if(d>2147483648)return!1;
+var a=b.rb;a.t(14);a.ia(14);var c=b.Jc(d);a.j(14,1,c)&&a.ja(14,1,d)&&b.Lc();h&&h.isValidLoadTime!=k&&h.setPageReadyTime();return!1};b.Wa=function(){if(!b.Mc())return!1;if(!L.Ic())return!1;b.sb()&&ta(L[t],"load",b.sb,!1);return!0}};var $=function(){};$.Zc=function(d){var f="gaso=",b=L[w][y].hash;d=b&&1==b[q](f)?N(b,f,D):(b=L[t].name)&&0<=b[q](f)?N(b,f,D):N(d.g(),oa,";");return d};$.ad=function(d,f){var b=(f||"www")+".google.com",b="https://"+b+"/analytics/reporting/overlay_js?gaso="+d+D+Aa(),h="_gasojs",e=L[w].createElement("script");e.type="text/javascript";e.src=b;if(h)e.id=h;(L[w].getElementsByTagName("head")[0]||L[w].getElementsByTagName("body")[0]).appendChild(e)};
+$.load=function(d,f){if(!$.$c){var b=$.Zc(f),h=b&&b.match(/^(?:\|([-0-9a-z.]{1,30})\|)?([-.\w]{10,1200})$/i);if(h)f.Dc(b),f.Ec(),V._gasoDomain=d.b,V._gasoCPath=d.f,$.ad(h[2],h[1]);$.$c=!0}};var Qa=function(d,f,b){function h(){if("auto"==j.b){var a=L[w].domain;"www."==a[z](0,4)&&(a=a[z](4));j.b=a}j.b=j.b[C]()}function e(){h();var a=j.b,b=a[q]("www.google.")*a[q](".google.")*a[q]("google.");return b||"/"!=j.f||a[q]("google.org")>-1}function m(b,c,d){if(M(b)||M(c)||M(d))return"-";b=N(b,F+a.a+".",c);M(b)||(b=b[x]("."),b[5]=""+(b[5]?b[5]*1+1:1),b[3]=b[4],b[4]=d,b=b[A]("."));return b}function g(){return"file:"!=L[w][y][ea]&&e()}var a=this,c=sa(a),u=k,j=new Da,i=!1,s=k;a.n=d;a.m=o.round((new Date)[da]()/
+1E3);a.p=f||"UA-XXXXX-X";a.ab=L[w].referrer;a.oa=k;a.d=k;a.F=!1;a.O=k;a.e=k;a.bb=k;a.pa=k;a.a=k;a.k=k;j.o=b?P(b):k;a.eb=!1;a.mc=function(){return Aa()^a.O.cc()&2147483647};a.lc=function(){if(!j.b||""==j.b||"none"==j.b)return j.b="",1;h();return j.Ua?za(j.b):1};a.kc=function(a,b){if(M(a))a="-";else{b+=j.f&&"/"!=j.f?j.f:"";var c=a[q](b),a=c>=0&&c<=8?"0":"["==a[p](0)&&"]"==a[p](a[v]-1)?"-":a}return a};a.na=function(b){var c="";c+=j.ka?a.O.dc():"";c+=j.la&&!M(L[w].title)?"&utmdt="+P(L[w].title):"";var d;
+d=L.Ya(!0);if(!d.hid)d.hid=Aa();d=d.hid;c+="&utmhid="+d+"&utmr="+P(l(a.oa))+"&utmp="+P(a.pc(b));return c};a.pc=function(a){var b=L[w][y];a&&K(13);return a=k!=a&&""!=a?P(a,!0):P(b.pathname+b.search,!0)};a.uc=function(b){if(a.D()){var c="";a.e!=k&&a.e.C()[v]>0&&(c+="&utme="+P(a.e.C()));c+=a.na(b);u.A(c,a.p,a.a)}};a.jc=function(){var b=new Fa(j);return b.Z(a.a)?b.Tb():k};a.cb=c("_getLinkerUrl",52,function(b,c){var d=b[x]("#"),e=b,f=a.jc();if(f)if(c&&1>=d[v])e+="#"+f;else if(!c||1>=d[v])1>=d[v]?e+=(R(b,
+"?")?D:"?")+f:e=d[0]+(R(b,"?")?D:"?")+f+"#"+d[1];return e});a.nc=function(){var b=a.m,c=a.k,d=c.g(),e=a.a+"",f=L.Ya(),g,h=R(d,F+e+"."),i=R(d,H+e),u=R(d,la+e),s,G=[],Y="",Ia=!1,d=M(d)?"":d;if(j.w&&!a.eb){g=L[w][y]&&L[w][y].hash?L[w][y][fa][z](L[w][y][fa][q]("#")):"";j.U&&!M(g)&&(Y=g+D);Y+=L[w][y].search;if(!M(Y)&&R(Y,F))c.Sb(Y),c.Ba()||c.Qb(),s=c.ba(),a.eb=!0;g=c.ea;var va=c.Pa,U=c.Sa;M(g())||(va(Q(g())),R(g(),";")||U());g=c.da;va=c.X;U=c.Y;M(g())||(va(g()),R(g(),";")||U())}M(s)?h?(s=!i||!u)?(s=m(d,
+";",l(b)),a.F=!0):(s=N(d,F+e+".",";"),G=N(d,H+e,";")[x](".")):(s=[e,a.mc(),b,b,b,1][A]("."),Ia=a.F=!0):M(c.z())||M(c.ca())?(s=m(Y,D,l(b)),a.F=!0):(G=c.z()[x]("."),e=G[0]);s=s[x](".");L[t]&&f&&f.dh==e&&!j.o&&(s[4]=f.sid?f.sid:s[4],Ia&&(s[3]=f.sid?f.sid:s[4],f.vid&&(b=f.vid[x]("."),s[1]=b[0],s[2]=b[1])));c.Na(s[A]("."));G[0]=e;G[1]=G[1]?G[1]:0;G[2]=k!=G[2]?G[2]:j.Wb;G[3]=G[3]?G[3]:s[4];c.$(G[A]("."));c.Oa(e);M(c.Rb())||c.fa(c.K());c.Qa();c.aa();c.Ra()};a.oc=function(){u=new Ka(j)};a.getName=c("_getName",
+58,function(){return a.n});a.c=c("_initData",2,function(){var b;if(!i){if(!a.O)a.O=new La(j.ma);a.a=a.lc();a.k=new Fa(j);a.e=new Na;s=new Ma(j,l(a.a),a.k,a.e);a.oc()}if(g()){if(!i)a.oa=a.kc(a.ab,L[w].domain),b=new Z(l(a.a),a.oa,a.m,j);a.nc(b);s.$b()}if(!i)g()&&b.Pb(a.k,a.F),a.bb=new Na,$.load(j,a.k),i=!0});a.Xa=c("_visitCode",54,function(){a.c();var b=N(a.k.g(),F+a.a+".",";"),b=b[x](".");return b[v]<4?"":b[1]});a.qd=c("_cookiePathCopy",30,function(b){a.c();a.k&&a.k.Ub(a.a,b)});a.D=function(){return a.Xa()%
+1E4<j.L*100};a.re=c("_trackPageview",1,function(b){if(g())a.c(),a.uc(b),a.F=!1});a.se=c("_trackTrans",18,function(){var b=a.a,c=[],d,e,f;a.c();if(a.d&&a.D()){for(d=0;d<a.d.N[v];d++){e=a.d.N[d];T(c,e.ha());for(f=0;f<e.M[v];f++)T(c,e.M[f].ha())}for(d=0;d<c[v];d++)u.A(c[d],a.p,b,!0)}});a.me=c("_setTrans",20,function(){var b,c,d,e;b=L[w].getElementById?L[w].getElementById("utmtrans"):L[w].utmform&&L[w].utmform.utmtrans?L[w].utmform.utmtrans:k;a.c();if(b&&b.value){a.d=new W;e=b.value[x]("UTM:");j.u=!j.u||
+""==j.u?"|":j.u;for(b=0;b<e[v];b++){e[b]=ya(e[b]);c=e[b][x](j.u);for(d=0;d<c[v];d++)c[d]=ya(c[d]);"T"==c[0]?a.$a(c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8]):"I"==c[0]&&a.ic(c[1],c[2],c[3],c[4],c[5],c[6])}}});a.$a=c("_addTrans",21,function(b,c,d,e,f,g,h,i){a.d=a.d?a.d:new W;return a.d.Xb(b,c,d,e,f,g,h,i)});a.ic=c("_addItem",19,function(b,c,d,e,f,g){var h;a.d=a.d?a.d:new W;(h=a.d.Va(b))||(h=a.$a(b,"","","","","","",""));h.Vb(c,d,e,f,g)});a.oe=c("_setVar",22,function(b){b&&""!=b&&e()&&(a.c(),s.bc(b),a.D()&&
+u.A("&utmt=var",a.p,a.a))});a.Yd=c("_setCustomVar",10,function(b,c,d,e){a.c();return s.ac(b,c,d,e)});a.td=c("_deleteCustomVar",35,function(b){a.c();s.Yb(b)});a.Cd=c("_getVisitorCustomVar",50,function(b){a.c();return s.Zb(b)});a.fe=c("_setMaxCustomVariables",71,function(a){j.Ta=a});a.link=c("_link",101,function(b,c){j.w&&b&&(a.c(),L.ec(a.cb(b,c)))});a.Fd=c("_linkByPost",102,function(b,c){if(j.w&&b&&b.action)a.c(),b.action=a.cb(b.action,c)});a.pe=c("_setXKey",83,function(b,c,d){a.e.j(b,c,d)});a.qe=
+c("_setXValue",84,function(b,c,d){a.e.ja(b,c,d)});a.Dd=c("_getXKey",76,function(b,c){return a.e.fc(b,c)});a.Ed=c("_getXValue",77,function(b,c){return a.e.gc(b,c)});a.od=c("_clearXKey",72,function(b){a.e.t(b)});a.pd=c("_clearXValue",73,function(b){a.e.ia(b)});a.sd=c("_createXObj",75,function(){a.c();return new Na});a.qc=c("_sendXEvent",78,function(b){var c="";a.c();a.D()&&(c+="&utmt=event&utme="+P(a.e.hc(b))+a.na(),u.A(c,a.p,a.a,!1,!0))});a.rd=c("_createEventTracker",74,function(b){a.c();return new Oa(b,
+a)});a.Za=c("_trackEvent",4,function(b,c,d,e){a.c();var f=a.bb;k!=b&&k!=c&&""!=b&&""!=c?(f.t(5),f.ia(5),(b=f.j(5,1,b)&&f.j(5,2,c)&&(k==d||f.j(5,3,d))&&(k==e||f.ja(5,1,e)))&&a.qc(f)):b=!1;return b});a.Wa=c("_trackPageLoadTime",100,function(){a.c();if(!a.pa)a.pa=new Pa(a,u);return a.pa.Wa()});a.wd=function(){return j};a.ae=c("_setDomainName",6,function(a){j.b=a});a.kd=c("_addOrganic",14,function(a,b,c){j.J.splice(c?0:j.J[v],0,new Ca(a,b))});a.nd=c("_clearOrganic",70,function(){j.J=[]});a.hd=c("_addIgnoredOrganic",
+15,function(a){T(j.V,a)});a.ld=c("_clearIgnoredOrganic",97,function(){j.V=[]});a.jd=c("_addIgnoredRef",31,function(a){T(j.W,a)});a.md=c("_clearIgnoredRef",32,function(){j.W=[]});a.Id=c("_setAllowHash",8,function(a){j.Ua=a?1:0});a.Td=c("_setCampaignTrack",36,function(a){j.Ka=a?1:0});a.Ud=c("_setClientInfo",66,function(a){j.ka=a?1:0});a.vd=c("_getClientInfo",53,function(){return j.ka});a.Vd=c("_setCookiePath",9,function(a){j.f=a});a.ne=c("_setTransactionDelim",82,function(a){j.u=a});a.Xd=c("_setCookieTimeout",
+25,function(b){a.rc(b*1E3)});a.rc=c("_setCampaignCookieTimeout",29,function(a){j.La=a});a.Zd=c("_setDetectFlash",61,function(a){j.ma=a?1:0});a.xd=c("_getDetectFlash",65,function(){return j.ma});a.$d=c("_setDetectTitle",62,function(a){j.la=a?1:0});a.yd=c("_getDetectTitle",56,function(){return j.la});a.ce=c("_setLocalGifPath",46,function(a){j.ga=a});a.zd=c("_getLocalGifPath",57,function(){return j.ga});a.ee=c("_setLocalServerMode",92,function(){j.B=0});a.ie=c("_setRemoteServerMode",63,function(){j.B=
+1});a.de=c("_setLocalRemoteServerMode",47,function(){j.B=2});a.Ad=c("_getServiceMode",59,function(){return j.B});a.je=c("_setSampleRate",45,function(a){j.L=a});a.ke=c("_setSessionTimeout",27,function(b){a.sc(b*1E3)});a.sc=c("_setSessionCookieTimeout",26,function(a){j.Ma=a});a.Jd=c("_setAllowLinker",11,function(a){j.w=a?1:0});a.Hd=c("_setAllowAnchor",7,function(a){j.U=a?1:0});a.Qd=c("_setCampNameKey",41,function(a){j.Ca=a});a.Md=c("_setCampContentKey",38,function(a){j.Da=a});a.Nd=c("_setCampIdKey",
+39,function(a){j.Ea=a});a.Od=c("_setCampMediumKey",40,function(a){j.Fa=a});a.Pd=c("_setCampNOKey",42,function(a){j.Ga=a});a.Rd=c("_setCampSourceKey",43,function(a){j.Ha=a});a.Sd=c("_setCampTermKey",44,function(a){j.Ia=a});a.Ld=c("_setCampCIdKey",37,function(a){j.Ja=a});a.ud=c("_getAccount",64,function(){return a.p});a.Gd=c("_setAccount",3,function(b){a.p=b});a.ge=c("_setNamespace",48,function(a){j.o=a?P(a):k});a.Bd=c("_getVersion",60,function(){return ia});a.Kd=c("_setAutoTrackOutbound",79,Ba);a.le=
+c("_setTrackOutboundSubdomains",81,Ba);a.be=c("_setHrefExamineLimit",80,Ba);a.he=c("_setReferrerOverride",49,function(b){a.ab=b});a.Wd=c("_setCookiePersistence",24,function(b){a.tc(b)});a.tc=c("_setVisitorCookieTimeout",28,function(a){j.s=a})};var Ra=function(){var d=this,f=sa(d);d.Ab=!1;d.Ib={};d.bd=0;d._gasoDomain=k;d._gasoCPath=k;d.ve=f("_getTracker",0,function(b,f){return d.za(b,k,f)});d.za=f("_createTracker",55,function(b,d,e){d&&K(23);e&&K(67);d==k&&(d="~"+V.bd++);return V.Ib[d]=new Qa(d,b,e)});d.Hb=f("_getTrackerByName",51,function(b){b=b||"";return V.Ib[b]||V.za(k,b)});d.pb=function(){var b=L.Vc();return b&&b[ka]&&b[ka]()};d.ue=f("_anonymizeIp",16,function(){d.Ab=!0})};var Ta=function(){var d=this,f=sa(d);d.xe=f("_createAsyncTracker",33,function(b,d){return V.za(b,d||"")});d.ye=f("_getAsyncTracker",34,function(b){return V.Hb(b)});d.push=function(){K(5);for(var b=arguments,d=0,e=0;e<b[v];e++)try{if(typeof b[e]==="function")b[e]();else{var f="",g=b[e][0],a=g.lastIndexOf(".");a>0&&(f=g[z](0,a),g=g[z](a+1));var c=f==ga?V:f==ha?Sa:V.Hb(f);c[g].apply(c,b[e].slice(1))}}catch(u){d++}return d}};var V=new Ra;var Ua=L[t][ga];Ua&&typeof Ua._getTracker=="function"?V=Ua:L[t][ga]=V;var Sa=new Ta;a:{var Va=L[t][ha],Wa=!1;if(Va&&typeof Va[ba]=="function"&&(Wa=ua(Va),!Wa))break a;L[t][ha]=Sa;Wa&&Sa[ba].apply(Sa,Va)};})();
--- /dev/null
+/*!
+ * jQuery JavaScript Library v1.6.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu May 12 15:04:36 2011 -0400
+ */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("<!doctype><html><body></body></html>");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bF.test(a)?d(a,e):b_(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bU,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bQ),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bD(a,b,c){var d=b==="width"?bx:by,e=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return e;f.each(d,function(){c||(e-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?e+=parseFloat(f.css(a,"margin"+this))||0:e-=parseFloat(f.css(a,"border"+this+"Width"))||0});return e}function bn(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bm(a){f.nodeName(a,"input")?bl(a):a.getElementsByTagName&&f.grep(a.getElementsByTagName("input"),bl)}function bl(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bk(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bj(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bi(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bh(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(S.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:E?function(a){return a==null?"":E.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?C.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(F)return F.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=D.call(arguments,2),g=function(){return a.apply(c,f.concat(D.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()}),x=e.uaMatch(w),x.browser&&(e.browser[x.browser]=!0,e.browser.version=x.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?z=function(){c.removeEventListener("DOMContentLoaded",z,!1),e.ready()}:c.attachEvent&&(z=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",z),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.addClass(a.call(this,b,c.attr("class")||""))});if(a&&typeof a=="string"){var b=(a||"").split(o);for(var c=0,d=this.length;c<d;c++){var e=this[c];if(e.nodeType===1)if(!e.className)e.className=a;else{var g=" "+e.className+" ",h=e.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);e.className=f.trim(h)}}}return this},removeClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a=="string"||a===b){var c=(a||"").split(o);for(var d=0,e=this.length;d<e;d++){var g=this[d];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(n," ");for(var i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){var d=f(this);d.toggleClass(a.call(this,c,d.attr("class"),b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem
+)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,O(a.origType,a.selector),f.extend({},a,{handler:N,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,O(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?F:E):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=F;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=F;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=F,this.stopPropagation()},isDefaultPrevented:E,isPropagationStopped:E,isImmediatePropagationStopped:E};var G=function(a){var b=a.relatedTarget;a.type=a.data;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&f.event.handle.apply(this,arguments)}catch(d){}},H=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?H:G,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?H:G)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&L("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&L("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var I,J=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var M={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||E,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=y.exec(h),k="",j&&(k=j[0],h=h.replace(y,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,M[h]?(a.push(M[h]+k),h=h+k):h=(M[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+O(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+O(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var P=/Until$/,Q=/^(?:parents|prevUntil|prevAll)/,R=/,/,S=/^.[^:#\[\.,]*$/,T=Array.prototype.slice,U=f.expr.match.POS,V={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(X(this,a,!1),"not",a)},filter:function(a){return this.pushStack(X(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=U.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/<tbody/i,bb=/<|&#?\w+;/,bc=/<(?:script|object|embed|option|style)/i,bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bh(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bn)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bc.test(a[0])&&(f.support.checkClone||!bd.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1></$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bm(k[i]);else bm(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bo=/alpha\([^)]*\)/i,bp=/opacity=([^)]*)/,bq=/-([a-z])/ig,br=/([A-Z]|^ms)/g,bs=/^-?\d+(?:px)?$/i,bt=/^-?\d/,bu=/^[+\-]=/,bv=/[^+\-\.\de]+/g,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB,bC=function(a,b){return b.toUpperCase()};f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0,widows:!0,orphans:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bu.test(d)&&(d=+d.replace(bv,"")+parseFloat(f.css(a,c))),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bq,bC)}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){a.offsetWidth!==0?e=bD(a,b,d):f.swap(a,bw,function(){e=bD(a,b,d)});if(e<=0){e=bz(a,b,b),e==="0px"&&bB&&(e=bB(a,b,b));if(e!=null)return e===""||e==="auto"?"0px":e}if(e<0||e==null){e=a.style[b];return e===""||e==="auto"?"0px":e}return typeof e=="string"?e:e+"px"}},set:function(a,b){if(!bs.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cv(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cm.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=cn.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this),f.isFunction(d.old)&&d.old.call(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cq||cs(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!co&&(cr?(co=1,g=function(){co&&(cr(g),e.tick())},cr(g)):co=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cq||cs(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
--- /dev/null
+// Modernizr v1.7 www.modernizr.com
+window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=!!(a[b]in l);return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function F(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return!!E(d,b)}function E(a,b){for(var d in a)if(k[a[d]]!==c&&(!b||b(a[d],j)))return!0}function D(a,b){return(""+a).indexOf(b)!==-1}function C(a,b){return typeof a===b}function B(a,b){return A(o.join(a+";")+(b||""))}function A(a){k.cssText=a}var d="1.7",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v,w=function(a){var c=b.createElement("style"),d=b.createElement("div"),e;c.textContent=a+"{#modernizr{height:3px}}",h.appendChild(c),d.id="modernizr",g.appendChild(d),e=d.offsetHeight===3,c.parentNode.removeChild(c),d.parentNode.removeChild(d);return!!e},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div");var f=(d="on"+d)in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y=({}).hasOwnProperty,z;C(y,c)||C(y.call,c)?z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)}:z=function(a,b){return y.call(a,b)},r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return a.getContext&&a.getContext("2d")},r.canvastext=function(){return e.canvas&&C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return"ontouchstart"in a||w("@media ("+o.join("touch-enabled),(")+"modernizr)")},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;){var d=p[b].toLowerCase();if(a[d+"_indexedDB"]||a[d+"IndexedDB"])return!0}return!1},r.hashchange=function(){return x("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c<d)e=a[c],(b=e.media||b)!="screen"&&f.push(p(e.imports,b),e.cssText);return f.join("")}function o(a){var b=-1;while(++b<e)a.createElement(d[b])}var c="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",d=c.split("|"),e=d.length,f=new RegExp("(^|\\s)("+c+")","gi"),g=new RegExp("<(/*)("+c+")","gi"),h=new RegExp("(^|[^\\n]*?\\s)("+c+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),i=b.createDocumentFragment(),j=b.documentElement,k=j.firstChild,l=b.createElement("body"),m=b.createElement("style"),n;o(b),o(i),k.insertBefore(m,k.firstChild),m.media="print",a.attachEvent("onbeforeprint",function(){var a=-1,c=p(b.styleSheets,"all"),k=[],o;n=n||b.body;while((o=h.exec(c))!=null)k.push((o[1]+o[2]+o[3]).replace(f,"$1.iepp_$2")+o[4]);m.styleSheet.cssText=k.join("\n");while(++a<e){var q=b.getElementsByTagName(d[a]),r=q.length,s=-1;while(++s<r)q[s].className.indexOf("iepp_")<0&&(q[s].className+=" iepp_"+d[a])}i.appendChild(n),j.appendChild(l),l.className=n.className,l.innerHTML=n.innerHTML.replace(g,"<$1font")}),a.attachEvent("onafterprint",function(){l.innerHTML="",j.removeChild(l),j.appendChild(n),m.styleSheet.cssText=""})}(a,b),e._enableHTML5=f,e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+" js "+u.join(" ");return e}(this,this.document)
\ No newline at end of file
--- /dev/null
+function dumpModernizr(){
+ var str = '';
+ dumpModernizr.old = dumpModernizr.old || {};
+
+ for (var prop in Modernizr) {
+
+ // skip previously done ones.
+ if (dumpModernizr.old[prop]) continue;
+ else dumpModernizr.old[prop] = true;
+
+ if (typeof Modernizr[prop] === 'function') continue;
+ // skip unit test items
+ if (/^test/.test(prop)) continue;
+
+ if (~TEST.inputs.indexOf(prop)) {
+ str += '<li><b>'+prop+'{}</b><ul>';
+ for (var field in Modernizr[prop]) {
+ str += '<li class="' + (Modernizr[prop][field] ? 'yes' : '') + '">' + field + ': ' + Modernizr[prop][field] + '</li>';
+ }
+ str += '</ul></li>';
+ } else {
+ str += '<li id="'+prop+'" class="' + (Modernizr[prop] ? 'yes' : '') + '">' + prop + ': ' + Modernizr[prop] + '</li>';
+ }
+ }
+ return str;
+}
+
+
+function grabFeatDetects(){
+ // thx github.js
+ $.getScript('https://api.github.com/repos/Modernizr/Modernizr/git/trees/master?recursive=1&callback=processTree');
+}
+
+
+function processTree(data){
+ var filenames = [];
+
+ for (var i = 0; i < data.data.tree.length; i++){
+ var file = data.data.tree[i];
+ var match = file.path.match(/^feature-detects\/(.*)/);
+ if (!match) continue;
+
+ var relpath = location.host == "modernizr.github.com" ?
+ '../modernizr-git/' : '../';
+
+ filenames.push(relpath + match[0]);
+ }
+
+ var jqxhrs = filenames.map(function(filename){
+ return jQuery.getScript(filename);
+ });
+
+ jQuery.when.apply(jQuery, jqxhrs).done(resultsToDOM);
+
+}
+
+function resultsToDOM(){
+
+ var modOutput = document.createElement('div'),
+ ref = document.getElementById('qunit-testresult') || document.getElementById('qunit-tests');
+
+ modOutput.className = 'output';
+ modOutput.innerHTML = dumpModernizr();
+
+ ref.parentNode.insertBefore(modOutput, ref);
+
+ // Modernizr object as text
+ document.getElementsByTagName('textarea')[0].innerHTML = JSON.stringify(Modernizr);
+
+}
+
+/* uno */ resultsToDOM();
+/* dos */ grabFeatDetects();
+/* tres */ setTimeout(resultsToDOM, 5e3);
+/* quatro */ setTimeout(resultsToDOM, 15e3);
--- /dev/null
+// https://github.com/kangax/detect-global
+
+// tweaked to run without a UI.
+
+(function () {
+ function getPropertyDescriptors(object) {
+ var props = { };
+ for (var prop in object) {
+
+ // nerfing for firefox who goes crazy over some objects like sessionStorage
+ try {
+
+ props[prop] = {
+ type: typeof object[prop],
+ value: object[prop]
+ };
+
+ } catch(e){
+ props[prop] = {};
+ }
+ }
+ return props;
+ }
+
+ function getCleanWindow() {
+ var elIframe = document.createElement('iframe');
+ elIframe.style.display = 'none';
+
+ var ref = document.getElementsByTagName('script')[0];
+ ref.parentNode.insertBefore(elIframe, ref);
+
+ elIframe.src = 'about:blank';
+ return elIframe.contentWindow;
+ }
+
+ function appendControl(el, name) {
+ var elCheckbox = document.createElement('input');
+ elCheckbox.type = 'checkbox';
+ elCheckbox.checked = true;
+ elCheckbox.id = '__' + name;
+
+ var elLabel = document.createElement('label');
+ elLabel.htmlFor = '__' + name;
+ elLabel.innerHTML = 'Exclude ' + name + ' properties?';
+ elLabel.style.marginLeft = '0.5em';
+
+ var elWrapper = document.createElement('p');
+ elWrapper.style.marginBottom = '0.5em';
+
+ elWrapper.appendChild(elCheckbox);
+ elWrapper.appendChild(elLabel);
+
+ el.appendChild(elWrapper);
+ }
+
+ function appendAnalyze(el) {
+ var elAnalyze = document.createElement('button');
+ elAnalyze.id = '__analyze';
+ elAnalyze.innerHTML = 'Analyze';
+ elAnalyze.style.marginTop = '1em';
+ el.appendChild(elAnalyze);
+ }
+
+ function appendCancel(el) {
+ var elCancel = document.createElement('a');
+ elCancel.href = '#';
+ elCancel.innerHTML = 'Cancel';
+ elCancel.style.cssText = 'color:#eee;margin-left:0.5em;';
+ elCancel.onclick = function() {
+ el.parentNode.removeChild(el);
+ return false;
+ };
+ el.appendChild(elCancel);
+ }
+
+ function initConfigPopup() {
+ var el = document.createElement('div');
+
+ el.style.cssText = 'position:fixed; left:10px; top:10px; width:300px; background:rgba(50,50,50,0.9);' +
+ '-moz-border-radius:10px; padding:1em; color: #eee; text-align: left;' +
+ 'font-family: "Helvetica Neue", Verdana, Arial, sans serif; z-index: 99999;';
+
+ for (var prop in propSets) {
+ appendControl(el, prop);
+ }
+
+ appendAnalyze(el);
+ appendCancel(el);
+
+ var ref = document.getElementsByTagName('script')[0];
+ ref.parentNode.insertBefore(el, ref);
+ }
+
+ function getPropsCount(object) {
+ var count = 0;
+ for (var prop in object) {
+ count++;
+ }
+ return count;
+ }
+
+ function shouldDeleteProperty(propToCheck) {
+ for (var prop in propSets) {
+ var elCheckbox = document.getElementById('__' + prop);
+ var isPropInSet = propSets[prop].indexOf(propToCheck) > -1;
+ if (isPropInSet && (elCheckbox ? elCheckbox.checked : true) ) {
+ return true;
+ }
+ }
+ }
+
+ function analyze() {
+ var global = (function(){ return this; })(),
+ globalProps = getPropertyDescriptors(global),
+ cleanWindow = getCleanWindow();
+
+ for (var prop in cleanWindow) {
+ if (globalProps[prop]) {
+ delete globalProps[prop];
+ }
+ }
+ for (var prop in globalProps) {
+ if (shouldDeleteProperty(prop)) {
+ delete globalProps[prop];
+ }
+ }
+
+ window.__globalsCount = getPropsCount(globalProps);
+ window.__globals = globalProps;
+
+ window.console && console.log('Total number of global properties: ' + __globalsCount);
+ window.console && console.dir(__globals);
+ }
+
+ var propSets = {
+ 'Prototype': '$$ $A $F $H $R $break $continue $w Abstract Ajax Class Enumerable Element Field Form ' +
+ 'Hash Insertion ObjectRange PeriodicalExecuter Position Prototype Selector Template Toggle Try'.split(' '),
+
+ 'Scriptaculous': 'Autocompleter Builder Control Draggable Draggables Droppables Effect Sortable SortableObserver Sound Scriptaculous'.split(' '),
+ 'Firebug': 'loadFirebugConsole console _getFirebugConsoleElement _FirebugConsole _FirebugCommandLine _firebug'.split(' '),
+ 'Mozilla': 'Components XPCNativeWrapper XPCSafeJSObjectWrapper getInterface netscape GetWeakReference GeckoActiveXObject'.split(' '),
+ 'GoogleAnalytics': 'gaJsHost gaGlobal _gat _gaq pageTracker'.split(' '),
+ 'lazyGlobals': 'onhashchange'.split(' ')
+ };
+
+ // initConfigPopup(); // disable because we're going UI-less.
+
+ var analyzeElem = document.getElementById('__analyze');
+ analyzeElem && (analyzeElem.onclick = analyze);
+
+ analyze(); // and assign total added globals to window.__globalsCount
+
+})();
\ No newline at end of file
--- /dev/null
+/*!
+ * jQuery JavaScript Library v1.7b2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 13 21:12:55 2011 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+ navigator = window.navigator,
+ location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Matches dashed string for camelizing
+ rdashAlpha = /-([a-z]|[0-9])/ig,
+ rmsPrefix = /^-ms-/,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return ( letter + "" ).toUpperCase();
+ },
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = quickExpr.exec( selector );
+ }
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.7b2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.add( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // Either a released hold or an DOMready/load event and not yet ready
+ if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.fireWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyList ) {
+ return;
+ }
+
+ readyList = jQuery.Callbacks( "once memory" );
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNumeric: function( obj ) {
+ return obj != null && rdigit.test( obj ) && !isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return (new Function( "return " + data ))();
+
+ }
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction( object );
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type( array );
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array, i ) {
+ var len;
+
+ if ( array ) {
+ if ( indexOf ) {
+ return indexOf.call( array, elem, i );
+ }
+
+ len = array.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in array && array[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value, key, ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ if ( typeof context === "string" ) {
+ var tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ var args = slice.call( arguments, 2 ),
+ proxy = function() {
+ return fn.apply( context, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery as an AMD module, but only for AMD loaders that
+// understand the issues with loading multiple versions of jQuery
+// in a page that all might call define(). The loader will indicate
+// they have special allowances for multiple jQuery versions by
+// specifying define.amd.jQuery = true. Register as a named module,
+// since jQuery can be concatenated with other files that may use define,
+// but not use a proper concatenation script that understands anonymous
+// AMD modules. A named AMD is safest and most robust way to register.
+// Lowercase jquery is used because AMD module names are derived from
+// file names, and jQuery is normally delivered in a lowercase file name.
+if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
+ define( "jquery", [], function () { return jQuery; } );
+}
+
+return jQuery;
+
+})();
+
+
+// String to Object flags format cache
+var flagsCache = {};
+
+// Convert String-formatted flags into Object-formatted ones and store in cache
+function createFlags( flags ) {
+ var object = flagsCache[ flags ] = {},
+ i, length;
+ flags = flags.split( /\s+/ );
+ for ( i = 0, length = flags.length; i < length; i++ ) {
+ object[ flags[i] ] = true;
+ }
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * flags: an optional list of space-separated flags that will change how
+ * the callback list behaves
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible flags:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( flags ) {
+
+ // Convert flags from String-formatted to Object-formatted
+ // (we check in cache first)
+ flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
+
+ var // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = [],
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list is currently firing
+ firing,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // Add one or several callbacks to the list
+ add = function( args ) {
+ var i,
+ length,
+ elem,
+ type,
+ actual;
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ // Inspect recursively
+ add( elem );
+ } else if ( type === "function" ) {
+ // Add if not in unique mode and callback is not in
+ if ( !flags.unique || !self.has( elem ) ) {
+ list.push( elem );
+ }
+ }
+ }
+ },
+ // Fire callbacks
+ fire = function( context, args ) {
+ args = args || [];
+ memory = !flags.memory || [ context, args ];
+ firing = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
+ memory = true; // Mark as halted
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( !flags.once ) {
+ if ( stack && stack.length ) {
+ memory = stack.shift();
+ self.fireWith( memory[ 0 ], memory[ 1 ] );
+ }
+ } else if ( memory === true ) {
+ self.disable();
+ } else {
+ list = [];
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ var length = list.length;
+ add( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away, unless previous
+ // firing was halted (stopOnFalse)
+ } else if ( memory && memory !== true ) {
+ firingStart = length;
+ fire( memory[ 0 ], memory[ 1 ] );
+ }
+ }
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ var args = arguments,
+ argIndex = 0,
+ argLength = args.length;
+ for ( ; argIndex < argLength ; argIndex++ ) {
+ for ( var i = 0; i < list.length; i++ ) {
+ if ( args[ argIndex ] === list[ i ] ) {
+ // Handle firingIndex and firingLength
+ if ( firing ) {
+ if ( i <= firingLength ) {
+ firingLength--;
+ if ( i <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ }
+ // Remove the element
+ list.splice( i--, 1 );
+ // If we have some unicity property then
+ // we only need to do this once
+ if ( flags.unique ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+ return this;
+ },
+ // Control if a given callback is in the list
+ has: function( fn ) {
+ if ( list ) {
+ var i = 0,
+ length = list.length;
+ for ( ; i < length; i++ ) {
+ if ( fn === list[ i ] ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory || memory === true ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( stack ) {
+ if ( firing ) {
+ if ( !flags.once ) {
+ stack.push( [ context, args ] );
+ }
+ } else if ( !( flags.once && memory ) ) {
+ fire( context, args );
+ }
+ }
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!memory;
+ }
+ };
+
+ return self;
+};
+
+
+
+
+var // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+
+ Deferred: function( func ) {
+ var doneList = jQuery.Callbacks( "once memory" ),
+ failList = jQuery.Callbacks( "once memory" ),
+ progressList = jQuery.Callbacks( "memory" ),
+ state = "pending",
+ lists = {
+ resolve: doneList,
+ reject: failList,
+ notify: progressList
+ },
+ promise = {
+ done: doneList.add,
+ fail: failList.add,
+ progress: progressList.add,
+
+ state: function() {
+ return state;
+ },
+
+ // Deprecated
+ isResolved: doneList.fired,
+ isRejected: failList.fired,
+
+ then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
+ return this;
+ },
+ always: function() {
+ return deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
+ },
+ pipe: function( fnDone, fnFail, fnProgress ) {
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( {
+ done: [ fnDone, "resolve" ],
+ fail: [ fnFail, "reject" ],
+ progress: [ fnProgress, "notify" ]
+ }, function( handler, data ) {
+ var fn = data[ 0 ],
+ action = data[ 1 ],
+ returned;
+ if ( jQuery.isFunction( fn ) ) {
+ deferred[ handler ](function() {
+ returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+ }
+ });
+ } else {
+ deferred[ handler ]( newDefer[ action ] );
+ }
+ });
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ obj = promise;
+ } else {
+ for( var key in promise ) {
+ obj[ key ] = promise[ key ];
+ }
+ }
+ return obj;
+ }
+ },
+ deferred = promise.promise({}),
+ key;
+
+ for ( key in lists ) {
+ deferred[ key ] = lists[ key ].fire;
+ deferred[ key + "With" ] = lists[ key ].fireWith;
+ }
+
+ // Handle state
+ deferred.done( function() {
+ state = "resolved";
+ }, failList.disable, progressList.lock ).fail( function() {
+ state = "rejected";
+ }, doneList.disable, progressList.lock );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = sliceDeferred.call( arguments, 0 ),
+ i = 0,
+ length = args.length,
+ pValues = new Array( length ),
+ count = length,
+ pCount = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred(),
+ promise = deferred.promise();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ deferred.resolveWith( deferred, args );
+ }
+ };
+ }
+ function progressFunc( i ) {
+ return function( value ) {
+ pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ deferred.notifyWith( promise, pValues );
+ };
+ }
+ if ( length > 1 ) {
+ for( ; i < length; i++ ) {
+ if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+ }
+ return promise;
+ }
+});
+
+
+
+
+jQuery.support = (function() {
+
+ var div = document.createElement( "div" ),
+ documentElement = document.documentElement,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ marginDiv,
+ support,
+ fragment,
+ body,
+ testElementParent,
+ testElement,
+ testElementStyle,
+ tds,
+ events,
+ eventName,
+ i,
+ isSupported,
+ offsetSupport;
+
+ // Preliminary tests
+ div.setAttribute("className", "t");
+ div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>";
+
+
+ all = div.getElementsByTagName( "*" );
+ a = div.getElementsByTagName( "a" )[ 0 ];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return {};
+ }
+
+ // First batch of supports tests
+ select = document.createElement( "select" );
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName( "input" )[ 0 ];
+
+ support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName( "tbody" ).length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName( "link" ).length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure unknown elements (like HTML5 elems) are handled appropriately
+ unknownElems: !!div.getElementsByTagName( "nav" ).length,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: ( input.value === "on" ),
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
+
+ // Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
+ deleteExpando: true,
+ noCloneEvent: true,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true
+ };
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", function() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ support.noCloneEvent = false;
+ });
+ div.cloneNode( true ).fireEvent( "onclick" );
+ }
+
+ // Check if a radio maintains its value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute("type", "radio");
+ support.radioValue = input.value === "t";
+
+ input.setAttribute("checked", "checked");
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ div.innerHTML = "";
+
+ // Figure out if the W3C box model works as expected
+ div.style.width = div.style.paddingLeft = "1px";
+
+ // We don't want to do body-related feature tests on frameset
+ // documents, which lack a body. So we use
+ // document.getElementsByTagName("body")[0], which is undefined in
+ // frameset documents, while document.body isn’t. (7398)
+ body = document.getElementsByTagName("body")[ 0 ];
+ // We use our own, invisible, body unless the body is already present
+ // in which case we use a div (#9239)
+ testElement = document.createElement( body ? "div" : "body" );
+ testElementStyle = {
+ visibility: "hidden",
+ width: 0,
+ height: 0,
+ border: 0,
+ margin: 0,
+ background: "none"
+ };
+ if ( body ) {
+ jQuery.extend( testElementStyle, {
+ position: "absolute",
+ left: "-999px",
+ top: "-999px"
+ });
+ }
+ for ( i in testElementStyle ) {
+ testElement.style[ i ] = testElementStyle[ i ];
+ }
+ testElement.appendChild( div );
+ testElementParent = body || documentElement;
+ testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName( "td" );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+ div.innerHTML = "";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
+
+ // Remove the body element we added
+ testElement.innerHTML = "";
+
+ // Technique from Juriy Zaytsev
+ // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for( i in {
+ submit: 1,
+ change: 1,
+ focusin: 1
+ } ) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
+
+ // Determine fixed-position support early
+ testElement.style.position = "static";
+ testElement.style.top = "0px";
+ testElement.style.marginTop = "1px";
+ offsetSupport = (function( body, container ) {
+
+ var outer, inner, table, td, supports,
+ bodyMarginTop = parseFloat( body.style.marginTop ) || 0,
+ ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",
+ style = "style='" + ptlm + "border:5px solid #000;padding:0;'",
+ html = "<div " + style + "><div></div></div>" +
+ "<table " + style + " cellpadding='0' cellspacing='0'>" +
+ "<tr><td></td></tr></table>";
+
+ container.style.cssText = ptlm + "border:0;visibility:hidden";
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ outer = container.firstChild;
+ inner = outer.firstChild;
+ td = outer.nextSibling.firstChild.firstChild;
+
+ supports = {
+ doesNotAddBorder: (inner.offsetTop !== 5),
+ doesAddBorderForTableAndCells: (td.offsetTop === 5)
+ };
+
+ inner.style.position = "fixed";
+ inner.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ supports.supportsFixedPosition = (inner.offsetTop === 20 || inner.offsetTop === 15);
+ inner.style.position = inner.style.top = "";
+
+ outer.style.overflow = "hidden";
+ outer.style.position = "relative";
+
+ supports.subtractsBorderForOverflowNotVisible = (inner.offsetTop === -5);
+ supports.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ return supports;
+
+ })( testElement, div );
+
+ jQuery.extend( support, offsetSupport );
+ testElementParent.removeChild( testElement );
+
+ // Null connected elements to avoid leaks in IE
+ testElement = fragment = select = opt = body = marginDiv = div = input = null;
+
+ return support;
+})();
+
+// Keep track of boxModel
+jQuery.boxModel = jQuery.support.boxModel;
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+ rmultiDash = /([A-Z])/g;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, ret,
+ internalKey = jQuery.expando,
+ getByName = typeof name === "string",
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ } else {
+ id = jQuery.expando;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // Avoids exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
+
+ thisCache = thisCache.data;
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+ // not attempt to inspect the internal events object using jQuery.data, as this
+ // internal data object is undocumented and subject to change.
+ if ( name === "events" && !thisCache[name] ) {
+ return thisCache[ internalKey ] && thisCache[ internalKey ].events;
+ }
+
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( getByName ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var thisCache, i, l,
+
+ // Reference to internal data cache key
+ internalKey = jQuery.expando,
+
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+ if ( thisCache ) {
+
+ // Support space separated names
+ if ( jQuery.isArray( name ) ) {
+ name = name;
+ } else if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+
+ // split the camel cased version by spaces
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split( " " );
+ }
+ }
+
+ for ( i = 0, l = name.length; i < l; i++ ) {
+ delete thisCache[ name[i] ];
+ }
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ // Ensure that `cache` is not a window object #10080
+ if ( jQuery.support.deleteExpando || !cache.setInterval ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the cache and need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ } else {
+ elem[ jQuery.expando ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var parts, attr, name,
+ data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
+ attr = this[0].attributes;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ jQuery._data( this[0], "parsedAttrs", true );
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ jQuery.isNumeric( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery._data( elem, deferDataKey );
+ if ( defer &&
+ ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
+ ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery._data( elem, queueDataKey ) &&
+ !jQuery._data( elem, markDataKey ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.fire();
+ }
+ }, 0 );
+ }
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = (type || "fx") + "mark";
+ jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
+ }
+ },
+
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
+ if ( count ) {
+ jQuery._data( elem, key, count );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ var q;
+ if ( elem ) {
+ type = (type || "fx") + "queue";
+ q = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ runner = {};
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ jQuery._data( elem, type + ".run", runner );
+ fn.call( elem, function() {
+ jQuery.dequeue( elem, type );
+ }, runner );
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue " + type + ".run", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, runner ) {
+ var timeout = setTimeout( next, time );
+ runner.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
+ count++;
+ tmp.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ nodeHook, boolHook, fixSpecified;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.prop );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classNames, i, l, elem,
+ setClass, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ classNames = value.split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className && classNames.length === 1 ) {
+ elem.className = value;
+
+ } else {
+ setClass = " " + elem.className + " ";
+
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+ setClass += classNames[ c ] + " ";
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classNames, i, l, elem, className, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ classNames = (value || "").split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ className = (" " + elem.className + " ").replace( rclass, " " );
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[ c ] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var hooks, ret,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var self = jQuery(this), val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
+
+ jQuery(elem).find("option").each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ var nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery( elem )[ name ]( value );
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( !("getAttribute" in elem) ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // Normalize the name if needed
+ if ( notxml ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] || (rboolean.test( name ) ? boolHook : nodeHook);
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return undefined;
+
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, "" + value );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var propName, attrNames, name, l,
+ i = 0;
+
+ if ( elem.nodeType === 1 ) {
+ attrNames = (value || "").split( rspace );
+ l = attrNames.length;
+
+ for ( ; i < l; i++ ) {
+ name = attrNames[ i ].toLowerCase();
+
+ // See #9699 for explanation of this approach (setting first, then removal)
+ jQuery.attr( elem, name, "" );
+ elem.removeAttribute( name );
+
+ // Set corresponding property to false for boolean attributes
+ if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ },
+ // Use the value property for back compat
+ // Use the nodeHook for button elements in IE6/7 (#1954)
+ value: {
+ get: function( elem, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.get( elem, name );
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+ }
+ },
+
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return (elem[ name ] = value);
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ var attributeNode = elem.getAttributeNode("tabindex");
+
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ }
+ }
+});
+
+// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
+jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ // Fall back to attribute presence where some booleans are not supported
+ var attrNode,
+ property = jQuery.prop( elem, name );
+ return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !jQuery.support.getSetAttribute ) {
+
+ fixSpecified = {
+ name: true,
+ id: true
+ };
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ return ret && (fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified) ?
+ ret.nodeValue :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ ret = document.createAttribute( name );
+ elem.setAttributeNode( ret );
+ }
+ return (ret.nodeValue = value + "");
+ }
+ };
+
+ // Apply the nodeHook to tabindex
+ jQuery.attrHooks.tabindex.set = nodeHook.set;
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ });
+ });
+
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ get: nodeHook.get,
+ set: function( elem, value, name ) {
+ if ( value === "" ) {
+ value = "false";
+ }
+ nodeHook.set( elem, value, name );
+ }
+ };
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return (elem.style.cssText = "" + value);
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ });
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
+ }
+ }
+ });
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspaces = / /g,
+ rescape = /[^\w\s.|`]/g,
+ rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
+ rhoverHack = /\bhover(\.\S+)?/,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rquickIs = /^([\w\-]+)?(?:#([\w\-]+))?(?:\.([\w\-]+))?(?:\[([\w+\-]+)=["']?([\w\-]*)["']?\])?$/,
+ quickParse = function( selector ) {
+ var quick = rquickIs.exec( selector );
+ if ( quick ) {
+ // 0 1 2 3 4 5
+ // [ _, tag, id, class, attrName, attrValue ]
+ quick[1] = ( quick[1] || "" ).toLowerCase();
+ quick[3] = quick[3] && new RegExp( "\\b" + quick[3] + "\\b" );
+ }
+ return quick;
+ },
+ quickIs = function( elem, m ) {
+ return (
+ (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
+ (!m[2] || elem.id === m[2]) &&
+ (!m[3] || m[3].test( elem.className )) &&
+ (!m[4] || elem.getAttribute( m[4] ) == m[5])
+ );
+ };
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var elemData, eventHandle, events,
+ t, tns, type, namespaces, handleObj,
+ handleObjIn, quick, handlers, special;
+
+ // Don't attach events to noData or text/comment nodes (allow plain objects tho)
+ if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ events = elemData.events;
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+ eventHandle = elemData.handle;
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.replace( rhoverHack, "mouseover$1 mouseout$1" ).split( " " );
+ for ( t = 0; t < types.length; t++ ) {
+
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = tns[1];
+ namespaces = (tns[2] || "").split( "." ).sort();
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: tns[1],
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ namespace: namespaces.join(".")
+ }, handleObjIn );
+
+ // Delegated event; pre-analyze selector so it's processed quickly on event dispatch
+ if ( selector ) {
+ handleObj.quick = quickParse( selector );
+ if ( !handleObj.quick && jQuery.expr.match.POS.test( selector ) ) {
+ handleObj.isPositional = true;
+ }
+ }
+
+ // Init the event handler queue if we're the first
+ handlers = events[ type ];
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector ) {
+
+ var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ t, tns, type, namespaces, origCount,
+ j, events, special, handle, eventType, handleObj;
+
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
+ }
+
+ // For removal, types can be an Event object
+ if ( types && types.type && types.handler ) {
+ handler = types.handler;
+ types = types.type;
+ selector = types.selector;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = (types || "").replace( rhoverHack, "mouseover$1 mouseout$1" ).split(" ");
+ for ( t = 0; t < types.length; t++ ) {
+ tns = rtypenamespace.exec( types[t] ) || [];
+ type = tns[1];
+ namespaces = tns[2];
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ namespaces = namespaces? "." + namespaces : "";
+ for ( j in events ) {
+ jQuery.event.remove( elem, j + namespaces, handler, selector );
+ }
+ return;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector? special.delegateType : special.bindType ) || type;
+ eventType = events[ type ] || [];
+ origCount = eventType.length;
+ namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+
+ // Only need to loop for special events or selective removal
+ if ( handler || namespaces || selector || special.remove ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( !handler || handler.guid === handleObj.guid ) {
+ if ( !namespaces || namespaces.test( handleObj.namespace ) ) {
+ if ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) {
+ eventType.splice( j--, 1 );
+
+ if ( handleObj.selector ) {
+ eventType.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+ }
+ }
+ } else {
+ // Removing all events
+ eventType.length = 0;
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( eventType.length === 0 && origCount !== eventType.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery.removeData( elem, [ "events", "handle" ], true );
+ }
+ },
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ // Don't do events on text and comment nodes
+ if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
+ return;
+ }
+
+ // Event object or event type
+ var type = event.type || event,
+ namespaces = [],
+ cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
+
+ if ( type.indexOf( "!" ) >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
+
+ if ( type.indexOf( "." ) >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
+
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
+
+ event.type = type;
+ event.isTrigger = true;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join( "." );
+ event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+ ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+
+ // triggerHandler() and global events don't bubble or run the default action
+ if ( onlyHandlers || !elem ) {
+ event.preventDefault();
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ cache = jQuery.cache;
+ event.stopPropagation();
+ for ( i in cache ) {
+ if ( cache[ i ].events && cache[ i ].events[ type ] ) {
+ jQuery.event.trigger( event, data, cache[ i ].handle.elem );
+ }
+ }
+ return;
+ }
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data != null ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ eventPath = [[ elem, special.bindType || type ]];
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ old = null;
+ for ( cur = elem.parentNode; cur; cur = cur.parentNode ) {
+ eventPath.push([ cur, bubbleType ]);
+ old = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( old && old === elem.ownerDocument ) {
+ eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
+ }
+ }
+
+ // Fire handlers on the event path
+ for ( i = 0; i < eventPath.length; i++ ) {
+
+ cur = eventPath[i][0];
+ event.type = eventPath[i][1];
+
+ handle = (jQuery._data( cur, "events" ) || {})[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) ) {
+ handle.apply( cur, data );
+ }
+
+ if ( event.isPropagationStopped() ) {
+ break;
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !event.isDefaultPrevented() ) {
+
+ if ( (!special._default || special._default.call( elem.ownerDocument, event, data ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ // IE<9 dies on focus/blur to hidden element (#1486)
+ if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
+
+ if ( old ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ handle: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event || window.event );
+
+ var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []),
+ delegateCount = handlers.delegateCount,
+ args = [].slice.call( arguments, 0 ),
+ handlerQueue = [],
+ i, cur, selMatch, matches, handleObj, sel, hit, related;
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+
+ // Determine handlers that should run if there are delegated events
+ // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
+
+ for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
+ selMatch = {};
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+ sel = handleObj.selector;
+ hit = selMatch[ sel ];
+
+ if ( handleObj.isPositional ) {
+ // Since .is() does not work for positionals; see http://jsfiddle.net/eJ4yd/3/
+ hit = ( hit || (selMatch[ sel ] = jQuery( sel )) ).index( cur ) >= 0;
+ } else if ( hit === undefined ) {
+ hit = selMatch[ sel ] = ( handleObj.quick ? quickIs( cur, handleObj.quick ) : jQuery( cur ).is( sel ) );
+ }
+ if ( hit ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, matches: matches });
+ }
+ }
+ }
+
+ // Copy the remaining (bound) handlers in case they're changed
+ handlers = handlers.slice( delegateCount );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ event.delegateTarget = this;
+ for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
+ matched = handlerQueue[ i ];
+ dispatch( matched.elem, event, matched.matches, args );
+ }
+ delete event.delegateTarget;
+
+ // Run non-delegated handlers for this level
+ if ( handlers.length ) {
+ dispatch( this, event, handlers, args );
+ }
+
+ return event.result;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
+ props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement layerX layerY offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button,
+ fromElement = original.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop,
+ originalEvent = event,
+ fixHook = jQuery.event.fixHooks[ event.type ] || {},
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = jQuery.Event( originalEvent );
+
+ for ( i = copy.length; i; ) {
+ prop = copy[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
+
+ // Target should not be a text node (#504, Safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
+ if ( event.metaKey === undefined ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady
+ },
+
+ focus: {
+ delegateType: "focusin",
+ noBubble: true
+ },
+ blur: {
+ delegateType: "focusout",
+ noBubble: true
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ },
+
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ { type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.handle.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
+
+// Run jQuery handler functions; called from jQuery.event.handle
+function dispatch( target, event, handlers, args ) {
+ var run_all = !event.exclusive && !event.namespace,
+ specialHandle = ( jQuery.event.special[ event.type ] || {} ).handle,
+ j, handleObj, ret;
+
+ event.currentTarget = target;
+ for ( j = 0; j < handlers.length && !event.isImmediatePropagationStopped(); j++ ) {
+ handleObj = handlers[ j ];
+
+ // Triggered event must either 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ ret = ( specialHandle || handleObj.handler ).apply( target, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+}
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = jQuery.event.special[ fix ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj,
+ selector = handleObj.selector,
+ oldType, ret;
+
+ // For a real mouseover/out, always call the handler; for
+ // mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || handleObj.origType === event.type || (related !== target && !jQuery.contains( target, related )) ) {
+ oldType = event.type;
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = oldType;
+ }
+ return ret;
+ }
+ };
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !form._submit_attached ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ // Form was submitted, bubble the event up the tree
+ if ( this.parentNode ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ });
+ form._submit_attached = true;
+ }
+ });
+ // return undefined since we don't need an event listener
+ },
+
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
+
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
+ };
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+ jQuery.event.special.change = {
+
+ setup: function() {
+
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed ) {
+ this._just_changed = false;
+ jQuery.event.simulate( "change", this, event, true );
+ }
+ });
+ }
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
+
+ if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ elem._change_attached = true;
+ }
+ });
+ },
+
+ handle: function( event ) {
+ var elem = event.target;
+
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
+
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
+
+jQuery.fn.extend({
+
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
+ }
+
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ jQuery.event.remove( event.delegateTarget || this, event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on.call( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ if ( types && types.preventDefault ) {
+ // ( event ) native or jQuery.Event
+ return this.off( types.type, types.handler, types.selector );
+ }
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( var type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ live: function( types, data, fn ) {
+ jQuery( this.context ).on( types, this.selector, data, fn );
+ return this;
+ },
+ die: function( types, fn ) {
+ jQuery( this.context ).off( types, this.selector || "**", fn );
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ return jQuery.event.trigger( type, data, this[0], true );
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+
+ if ( rkeyEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
+ }
+
+ if ( rmouseEvent.test( name ) ) {
+ jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
+ }
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ expando = "sizcache" + (Math.random() + '').replace('.', ''),
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rReturn = /\r\n/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context, seed );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set, seed );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set, i, len, match, type, left;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( i = 0, len = Expr.order.length; i < len; i++ ) {
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ type, found, item, filter, left,
+ i, pass,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ filter = Expr.filter[ type ];
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ pass = not ^ found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+/**
+ * Utility function for retreiving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+var getText = Sizzle.getText = function( elem ) {
+ var i, node,
+ nodeType = elem.nodeType,
+ ret = "";
+
+ if ( nodeType ) {
+ if ( nodeType === 1 ) {
+ // Use textContent || innerText for elements
+ if ( typeof elem.textContent === 'string' ) {
+ return elem.textContent;
+ } else if ( typeof elem.innerText === 'string' ) {
+ // Replace IE's carriage returns
+ return elem.innerText.replace( rReturn, '' );
+ } else {
+ // Traverse it's children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ } else {
+
+ // If no nodeType, this is expected to be an array
+ for ( i = 0; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ if ( node.nodeType !== 8 ) {
+ ret += getText( node );
+ }
+ }
+ }
+ return ret;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+ },
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+ },
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ },
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var first, last,
+ doneName, parent, cache,
+ count, diff,
+ type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ first = match[2];
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ doneName = match[0];
+ parent = elem.parentNode;
+
+ if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
+ count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent[ expando ] = doneName;
+ }
+
+ diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Sizzle.attr ?
+ Sizzle.attr( elem, name ) :
+ Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ !type && Sizzle.attr ?
+ result != null :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem[ expando ] === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem[ expando ] = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem[ expando ] === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem[ expando ] = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context, seed ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet, seed );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+// Override sizzle attribute retrieval
+Sizzle.attr = jQuery.attr;
+Sizzle.selectors.attrMap = {};
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var self = this,
+ i, l;
+
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
+ }
+
+ var ret = this.pushStack( "", "find", selector ),
+ length, n, r;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && (
+ typeof selector === "string" ?
+ // If this is a positional selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ POS.test( selector ) ?
+ jQuery( selector, this.context ).index( this[0] ) >= 0 :
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ // Array (deprecated as of jQuery 1.7)
+ if ( jQuery.isArray( selectors ) ) {
+ var level = 1;
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( i = 0; i < selectors.length; i++ ) {
+
+ if ( jQuery( cur ).is( selectors[ i ] ) ) {
+ ret.push({ selector: selectors[ i ], elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+
+ return ret;
+ }
+
+ // String
+ var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until ),
+ // The variable 'args' was introduced in
+ // https://github.com/jquery/jquery/commit/52a0238
+ // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
+ // http://code.google.com/p/v8/issues/detail?id=1050
+ args = slice.call(arguments);
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, args.join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+function createSafeFragment( document ) {
+ var nodeNames = (
+ "abbr article aside audio canvas datalist details figcaption figure footer " +
+ "header hgroup mark meter nav output progress section summary time video"
+ ).split( " " ),
+ safeFrag = document.createDocumentFragment();
+
+ if ( safeFrag.createElement ) {
+ while ( nodeNames.length ) {
+ safeFrag.createElement(
+ nodeNames.pop()
+ );
+ }
+ }
+ return safeFrag;
+}
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnoInnerhtml = /<(?:script|style)/i,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ },
+ safeFragment = createSafeFragment( document );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || (l > 1 && i < lastIndex) ?
+ jQuery.clone( fragment, true, true ) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var type, i, l,
+ oldData = jQuery._data( src ),
+ curData = jQuery._data( dest, oldData ),
+ events = oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+ }
+ }
+ }
+
+ // make the cloned public data object a copy from the original
+ if ( curData.data ) {
+ curData.data = jQuery.extend( {}, curData.data );
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults, doc;
+
+ // nodes may contain either an explicit document object,
+ // a jQuery collection or context object.
+ // If nodes[0] contains a valid object to assign to doc
+ if ( nodes && nodes[0] ) {
+ doc = nodes[0].ownerDocument || nodes[0];
+ }
+
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
+ // Chrome and Firefox seem to allow this to occur and will throw exception
+ // Fixes #8950
+ if ( !doc.createDocumentFragment ) {
+ doc = document;
+ }
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults && cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( typeof elem.querySelectorAll !== "undefined" ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( elem.type === "checkbox" || elem.type === "radio" ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+ var nodeName = (elem.nodeName || "").toLowerCase();
+ if ( nodeName === "input" ) {
+ fixDefaultChecked( elem );
+ // Skip scripts, get other children
+ } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var clone = elem.cloneNode(true),
+ srcElements,
+ destElements,
+ i;
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName
+ // instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ srcElements = destElements = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ clean: function( elems, context, fragment, scripts ) {
+ var checkScriptType;
+
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [], j;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Append wrapper element to unknown element safe doc fragment
+ if ( context === document ) {
+ // Use the fragment we've already created for this document
+ safeFragment.appendChild( div );
+ } else {
+ // Use a fragment created with the owner document
+ createSafeFragment( context ).appendChild( div );
+ }
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+ }
+
+ // Resets defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ var len;
+ if ( !jQuery.support.appendChecked ) {
+ if ( elem[0] && typeof (len = elem.length) === "number" ) {
+ for ( j = 0; j < len; j++ ) {
+ findInputs( elem[j] );
+ }
+ } else {
+ findInputs( elem );
+ }
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ checkScriptType = function( elem ) {
+ return !elem.type || rscriptType.test( elem.type );
+ };
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id,
+ cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+ rrelNum = /^([\-+])=([\-+.\de]+)/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle;
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ var ret, hooks;
+
+ // Make sure that we're working with the right name
+ name = jQuery.camelCase( name );
+ hooks = jQuery.cssHooks[ name ];
+ name = jQuery.cssProps[ name ] || name;
+
+ // cssFloat needs a special treatment
+ if ( name === "cssFloat" ) {
+ name = "float";
+ }
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ return getWH( elem, name, extra );
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ return val;
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat( value );
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there there is no filter style applied in a css rule, we are done
+ if ( currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ var ret;
+ jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ ret = curCSS( elem, "margin-right", "marginRight" );
+ } else {
+ ret = elem.style.marginRight;
+ }
+ });
+ return ret;
+ }
+ };
+ }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
+ style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+
+ // Start with offset property
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ which = name === "width" ? cssWidth : cssHeight;
+
+ if ( val > 0 ) {
+ if ( extra !== "border" ) {
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+ } else {
+ val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ });
+ }
+
+ return val + "px";
+ }
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, name );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ] || 0;
+ }
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Add padding, border, margin
+ if ( extra ) {
+ jQuery.each( which, function() {
+ val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+ if ( extra !== "padding" ) {
+ val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+ }
+ });
+ }
+
+ return val + "px";
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts,
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for(; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for(; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+ for( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+}
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf( " " );
+ if ( off >= 0 ) {
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
+ // If successful, inject the HTML into all the matched elements
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [ responseText, status, jqXHR ] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.bind( o, f );
+ };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+});
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ if ( settings ) {
+ // Building a settings object
+ ajaxExtend( target, jQuery.ajaxSettings );
+ } else {
+ // Extending ajaxSettings
+ settings = target;
+ target = jQuery.ajaxSettings;
+ }
+ ajaxExtend( target, settings );
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": allTypes
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ context: true,
+ url: true
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, nativeStatusText, responses, headers ) {
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ var isSuccess,
+ success,
+ error,
+ statusText = nativeStatusText,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = "" + ( nativeStatusText || statusText );
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.add;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefiler, stop there
+ if ( state === 2 ) {
+ return false;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
+ }
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ jQuery.error( e );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for( key in s.converters ) {
+ if( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+ ( typeof s.data === "string" );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ inspectData && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2";
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( inspectData ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
+ }
+ }
+
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Clean-up function
+ jqXHR.always(function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ });
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0,
+ xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
+var elemdisplay = {},
+ iframe, iframeDoc,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ],
+ fxNow;
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "none" || ( display === "" && jQuery.css( elem, "display" ) === "none" ) ) {
+ jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data(elem, "olddisplay") || "";
+ }
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ if ( this[i].style ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
+ jQuery._data( this[i], "olddisplay", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ if ( this[i].style ) {
+ this[i].style.display = "none";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed( speed, easing, callback );
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete, [ false ] );
+ }
+
+ // Do not change referenced properties as per-property easing will be lost
+ prop = jQuery.extend( {}, prop );
+
+ function doAnimation() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ if ( optall.queue === false ) {
+ jQuery._mark( this );
+ }
+
+ var opt = jQuery.extend( {}, optall ),
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ name, val, p, e,
+ parts, start, end, unit,
+ method;
+
+ // will store per property easing and be used to determine when an animation is complete
+ opt.animatedProperties = {};
+
+ for ( p in prop ) {
+
+ // property name normalization
+ name = jQuery.camelCase( p );
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ }
+
+ val = prop[ name ];
+
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+ if ( jQuery.isArray( val ) ) {
+ opt.animatedProperties[ name ] = val[ 1 ];
+ val = prop[ name ] = val[ 0 ];
+ } else {
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+ }
+
+ if ( val === "hide" && hidden || val === "show" && !hidden ) {
+ return opt.complete.call( this );
+ }
+
+ if ( isElement && ( name === "height" || name === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ for ( p in prop ) {
+ e = new jQuery.fx( this, opt, p );
+ val = prop[ p ];
+
+ if ( rfxtypes.test( val ) ) {
+
+ // Tracks whether to show or hide based on private
+ // data attached to the element
+ method = jQuery._data( this, "toggle" + p ) || (val === "toggle" ? hidden ? "show" : "hide" : 0);
+ if ( method ) {
+ jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
+ e[ method ]();
+ } else {
+ e[ val ]();
+ }
+
+ } else {
+ parts = rfxnum.exec( val );
+ start = e.cur();
+
+ if ( parts ) {
+ end = parseFloat( parts[2] );
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( this, p, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( this, p, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ }
+
+ // For JS strict compliance
+ return true;
+ }
+
+ return optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+
+ stop: function( type, clearQueue, gotoEnd ) {
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each(function() {
+ var i,
+ hadTimers = false,
+ timers = jQuery.timers,
+ data = jQuery._data( this );
+
+ // clear marker counters if we know they won't be
+ if ( !gotoEnd ) {
+ jQuery._unmark( true, this );
+ }
+
+ function stopQueue( elem, data, i ) {
+ var runner = data[ i ];
+ jQuery.removeData( elem, i, true );
+ runner.stop( gotoEnd );
+ }
+
+ if ( type == null ) {
+ for ( i in data ) {
+ if ( data[ i ].stop && i.indexOf(".run") === i.length - 4 ) {
+ stopQueue( this, data, i );
+ }
+ }
+ } else if ( data[ i = type + ".run" ] && data[ i ].stop ){
+ stopQueue( this, data, i );
+ }
+
+ for ( i = timers.length; i--; ) {
+ if ( timers[ i ].elem === this && (type == null || timers[ i ].queue === type) ) {
+ if ( gotoEnd ) {
+
+ // force the next step to be the last
+ timers[ i ]( true );
+ } else {
+ timers[ i ].saveState();
+ }
+ hadTimers = true;
+ timers.splice( i, 1 );
+ }
+ }
+
+ // start the next in the queue if the last step wasn't forced
+ // timers currently will call their complete callbacks, which will dequeue
+ // but only if they were gotoEnd
+ if ( !( gotoEnd && hadTimers ) ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ }
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout( clearFxNow, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+ fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx( "show", 1 ),
+ slideUp: genFx( "hide", 1 ),
+ slideToggle: genFx( "toggle", 1 ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function( noUnmark ) {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ } else if ( noUnmark !== false ) {
+ jQuery._unmark( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ options.orig = options.orig || {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[ this.prop ] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = fxNow || createFxNow();
+ this.end = to;
+ this.now = this.start = from;
+ this.pos = this.state = 0;
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+
+ function t( gotoEnd ) {
+ return self.step( gotoEnd );
+ }
+
+ t.queue = this.options.queue;
+ t.elem = this.elem;
+ t.saveState = function() {
+ if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
+ jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+ }
+ };
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval( fx.tick, fx.interval );
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
+
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any flash of content
+ if ( dataShow !== undefined ) {
+ // This show is picking up where a previous hide or show left off
+ this.custom( this.cur(), dataShow );
+ } else {
+ this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
+ }
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom( this.cur(), 0 );
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var p, n, complete,
+ t = fxNow || createFxNow(),
+ done = true,
+ elem = this.elem,
+ options = this.options;
+
+ if ( gotoEnd || t >= options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ options.animatedProperties[ this.prop ] = true;
+
+ for ( p in options.animatedProperties ) {
+ if ( options.animatedProperties[ p ] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+ jQuery.each( [ "", "X", "Y" ], function( index, value ) {
+ elem.style[ "overflow" + value ] = options.overflow[ index ];
+ });
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( options.hide ) {
+ jQuery( elem ).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( options.hide || options.show ) {
+ for ( p in options.animatedProperties ) {
+ jQuery.style( elem, p, options.orig[ p ] );
+ jQuery.removeData( elem, "fxshow" + p, true );
+ // Toggle data is no longer needed
+ jQuery.removeData( elem, "toggle" + p, true );
+ }
+ }
+
+ // Execute the complete function
+ // in the event that the complete function throws an exception
+ // we must ensure it won't be called twice. #5684
+
+ complete = options.complete;
+ if ( complete ) {
+
+ options.complete = false;
+ complete.call( elem );
+ }
+ }
+
+ return false;
+
+ } else {
+ // classical easing cannot be used with an Infinity duration
+ if ( options.duration == Infinity ) {
+ this.now = t;
+ } else {
+ n = t - this.startTime;
+ this.state = n / options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
+ this.now = this.start + ( (this.end - this.start) * this.pos );
+ }
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timer,
+ timers = jQuery.timers,
+ i = 0;
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+// Adds width/height step functions
+// Do not set anything below 0
+jQuery.each([ "width", "height" ], function( i, prop ) {
+ jQuery.fx.step[ prop ] = function( fx ) {
+ jQuery.style( fx.elem, prop, Math.max(0, fx.now) );
+ };
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+ if ( !elemdisplay[ nodeName ] ) {
+
+ var body = document.body,
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+ display = elem.css( "display" );
+
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // No iframe to use yet, so create it
+ if ( !iframe ) {
+ iframe = document.createElement( "iframe" );
+ iframe.frameBorder = iframe.width = iframe.height = 0;
+ }
+
+ body.appendChild( iframe );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+ iframeDoc.close();
+ }
+
+ elem = iframeDoc.createElement( nodeName );
+
+ iframeDoc.body.appendChild( elem );
+
+ display = jQuery.css( elem, "display" );
+
+ body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {};
+
+jQuery.each(
+ ( "doesAddBorderForTableAndCells doesNotAddBorder " +
+ "doesNotIncludeMarginInBodyOffset subtractsBorderForOverflowNotVisible " +
+ "supportsFixedPosition" ).split(" "), function( i, prop ) {
+
+ jQuery.offset[ prop ] = jQuery.support[ prop ];
+});
+
+jQuery.extend( jQuery.offset, {
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+});
+
+
+jQuery.fn.extend({
+
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function( val ) {
+ var elem, win;
+
+ if ( val === undefined ) {
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return null;
+ }
+
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery( win ).scrollLeft(),
+ i ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn[ "inner" + name ] = function() {
+ var elem = this[0];
+ return elem ?
+ elem.style ?
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
+ this[ type ]() :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn[ "outer" + name ] = function( margin ) {
+ var elem = this[0];
+ return elem ?
+ elem.style ?
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
+ this[ type ]() :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ var docElemProp = elem.document.documentElement[ "client" + name ],
+ body = elem.document.body;
+ return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+ body && body[ "client" + name ] || docElemProp;
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNumeric( ret ) ? ret : orig;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+})(window);
--- /dev/null
+/*! Copyright (c) 2011, Lloyd Hilaiel, ISC License */
+/*
+ * This is the JSONSelect reference implementation, in javascript.
+ */
+(function(exports) {
+
+ var // localize references
+ toString = Object.prototype.toString;
+
+ function jsonParse(str) {
+ try {
+ if(JSON && JSON.parse){
+ return JSON.parse(str);
+ }
+ return (new Function("return " + str))();
+ } catch(e) {
+ te("ijs");
+ }
+ }
+
+ // emitted error codes.
+ var errorCodes = {
+ "ijs": "invalid json string",
+ "mpc": "multiple pseudo classes (:xxx) not allowed",
+ "mepf": "malformed expression in pseudo-function",
+ "nmi": "multiple ids not allowed",
+ "se": "selector expected",
+ "sra": "string required after '.'",
+ "uc": "unrecognized char",
+ "ujs": "unclosed json string",
+ "upc": "unrecognized pseudo class"
+ };
+
+ // throw an error message
+ function te(ec) {
+ throw new Error(errorCodes[ec]);
+ }
+
+ // THE LEXER
+ var toks = {
+ psc: 1, // pseudo class
+ psf: 2, // pseudo class function
+ typ: 3, // type
+ str: 4 // string
+ };
+
+ var pat = /^(?:([\r\n\t\ ]+)|([*.,>])|(string|boolean|null|array|object|number)|(:(?:root|first-child|last-child|only-child))|(:(?:nth-child|nth-last-child))|(:\w+)|(\"(?:[^\\]|\\[^\"])*\")|(\")|((?:[_a-zA-Z]|[^\0-\0177]|\\[^\r\n\f0-9a-fA-F])(?:[_a-zA-Z0-9\-]|[^\u0000-\u0177]|(?:\\[^\r\n\f0-9a-fA-F]))*))/;
+ var exprPat = /^\s*\(\s*(?:([+\-]?)([0-9]*)n\s*(?:([+\-])\s*([0-9]))?|(odd|even)|([+\-]?[0-9]+))\s*\)/;
+ var lex = function (str, off) {
+ if (!off) off = 0;
+ var m = pat.exec(str.substr(off));
+ if (!m) return undefined;
+ off+=m[0].length;
+ var a;
+ if (m[1]) a = [off, " "];
+ else if (m[2]) a = [off, m[0]];
+ else if (m[3]) a = [off, toks.typ, m[0]];
+ else if (m[4]) a = [off, toks.psc, m[0]];
+ else if (m[5]) a = [off, toks.psf, m[0]];
+ else if (m[6]) te("upc");
+ else if (m[7]) a = [off, toks.str, jsonParse(m[0])];
+ else if (m[8]) te("ujs");
+ else if (m[9]) a = [off, toks.str, m[0].replace(/\\([^\r\n\f0-9a-fA-F])/g,"$1")];
+ return a;
+ };
+
+ // THE PARSER
+
+ var parse = function (str) {
+ var a = [], off = 0, am;
+
+ while (true) {
+ var s = parse_selector(str, off);
+ a.push(s[1]);
+ s = lex(str, off = s[0]);
+ if (s && s[1] === " ") s = lex(str, off = s[0]);
+ if (!s) break;
+ // now we've parsed a selector, and have something else...
+ if (s[1] === ">") {
+ a.push(">");
+ off = s[0];
+ } else if (s[1] === ",") {
+ if (am === undefined) am = [ ",", a ];
+ else am.push(a);
+ a = [];
+ off = s[0];
+ }
+ }
+ if (am) am.push(a);
+ return am ? am : a;
+ };
+
+ var parse_selector = function(str, off) {
+ var soff = off;
+ var s = { };
+ var l = lex(str, off);
+ // skip space
+ if (l && l[1] === " ") { soff = off = l[0]; l = lex(str, off); }
+ if (l && l[1] === toks.typ) {
+ s.type = l[2];
+ l = lex(str, (off = l[0]));
+ } else if (l && l[1] === "*") {
+ // don't bother representing the universal sel, '*' in the
+ // parse tree, cause it's the default
+ l = lex(str, (off = l[0]));
+ }
+
+ // now support either an id or a pc
+ while (true) {
+ if (l === undefined) {
+ break;
+ } else if (l[1] === ".") {
+ l = lex(str, (off = l[0]));
+ if (!l || l[1] !== toks.str) te("sra");
+ if (s.id) te("nmi");
+ s.id = l[2];
+ } else if (l[1] === toks.psc) {
+ if (s.pc || s.pf) te("mpc");
+ // collapse first-child and last-child into nth-child expressions
+ if (l[2] === ":first-child") {
+ s.pf = ":nth-child";
+ s.a = 0;
+ s.b = 1;
+ } else if (l[2] === ":last-child") {
+ s.pf = ":nth-last-child";
+ s.a = 0;
+ s.b = 1;
+ } else {
+ s.pc = l[2];
+ }
+ } else if (l[1] === toks.psf) {
+ if (s.pc || s.pf ) te("mpc");
+ s.pf = l[2];
+ var m = exprPat.exec(str.substr(l[0]));
+ if (!m) te("mepf");
+ if (m[5]) {
+ s.a = 2;
+ s.b = (m[5] === "odd") ? 1 : 0;
+ } else if (m[6]) {
+ s.a = 0;
+ s.b = parseInt(m[6], 10);
+ } else {
+ s.a = parseInt((m[1] ? m[1] : "+") + (m[2] ? m[2] : "1"),10);
+ s.b = m[3] ? parseInt(m[3] + m[4],10) : 0;
+ }
+ l[0] += m[0].length;
+ } else {
+ break;
+ }
+ l = lex(str, (off = l[0]));
+ }
+
+ // now if we didn't actually parse anything it's an error
+ if (soff === off) te("se");
+
+ return [off, s];
+ };
+
+ // THE EVALUATOR
+
+ function isArray(o) {
+ return Array.isArray ? Array.isArray(o) :
+ toString.call(o) === "[object Array]";
+ }
+
+ function mytypeof(o) {
+ if (o === null) return "null";
+ var to = typeof o;
+ if (to === "object" && isArray(o)) to = "array";
+ return to;
+ }
+
+ function mn(node, sel, id, num, tot) {
+ var sels = [];
+ var cs = (sel[0] === ">") ? sel[1] : sel[0];
+ var m = true, mod;
+ if (cs.type) m = m && (cs.type === mytypeof(node));
+ if (cs.id) m = m && (cs.id === id);
+ if (m && cs.pf) {
+ if (cs.pf === ":nth-last-child") num = tot - num;
+ else num++;
+ if (cs.a === 0) {
+ m = cs.b === num;
+ } else {
+ mod = ((num - cs.b) % cs.a);
+
+ m = (!mod && ((num*cs.a + cs.b) >= 0));
+ }
+ }
+
+ // should we repeat this selector for descendants?
+ if (sel[0] !== ">" && sel[0].pc !== ":root") sels.push(sel);
+
+ if (m) {
+ // is there a fragment that we should pass down?
+ if (sel[0] === ">") { if (sel.length > 2) { m = false; sels.push(sel.slice(2)); } }
+ else if (sel.length > 1) { m = false; sels.push(sel.slice(1)); }
+ }
+
+ return [m, sels];
+ }
+
+ function forEach(sel, obj, fun, id, num, tot) {
+ var a = (sel[0] === ",") ? sel.slice(1) : [sel],
+ a0 = [],
+ call = false,
+ i = 0, j = 0, l = 0, k, x;
+ for (i = 0; i < a.length; i++) {
+ x = mn(obj, a[i], id, num, tot);
+ if (x[0]) {
+ call = true;
+ }
+ for (j = 0; j < x[1].length; j++) {
+ a0.push(x[1][j]);
+ }
+ }
+ if (a0.length && typeof obj === "object") {
+ if (a0.length >= 1) {
+ a0.unshift(",");
+ }
+ if (isArray(obj)) {
+ for (i = 0; i < obj.length; i++) {
+ forEach(a0, obj[i], fun, undefined, i, obj.length);
+ }
+ } else {
+ // it's a shame to do this for :last-child and other
+ // properties which count from the end when we don't
+ // even know if they're present. Also, the stream
+ // parser is going to be pissed.
+ l = 0;
+ for (k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ l++;
+ }
+ }
+ i = 0;
+ for (k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ forEach(a0, obj[k], fun, k, i++, l);
+ }
+ }
+ }
+ }
+ if (call && fun) {
+ fun(obj);
+ }
+ }
+
+ function match(sel, obj) {
+ var a = [];
+ forEach(sel, obj, function(x) {
+ a.push(x);
+ });
+ return a;
+ }
+
+ function compile(sel) {
+ return {
+ sel: parse(sel),
+ match: function(obj){
+ return match(this.sel, obj);
+ },
+ forEach: function(obj, fun) {
+ return forEach(this.sel, obj, fun);
+ }
+ };
+ }
+
+ exports._lex = lex;
+ exports._parse = parse;
+ exports.match = function (sel, obj) {
+ return compile(sel).match(obj);
+ };
+ exports.forEach = function(sel, obj, fun) {
+ return compile(sel).forEach(obj, fun);
+ };
+ exports.compile = compile;
+})(typeof exports === "undefined" ? (window.JSONSelect = {}) : exports);
+
--- /dev/null
+
+// Array.prototype.indexOf polyfill
+if (!Array.prototype.indexOf){
+ Array.prototype.indexOf = function(searchElement /*, fromIndex */)
+ {
+ "use strict";
+
+ if (this === void 0 || this === null)
+ throw new TypeError();
+
+ var t = Object(this);
+ var len = t.length >>> 0;
+ if (len === 0)
+ return -1;
+
+ var n = 0;
+ if (arguments.length > 0)
+ {
+ n = Number(arguments[1]);
+ if (n !== n) // shortcut for verifying if it's NaN
+ n = 0;
+ else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
+ }
+
+ if (n >= len)
+ return -1;
+
+ var k = n >= 0
+ ? n
+ : Math.max(len - Math.abs(n), 0);
+
+ for (; k < len; k++)
+ {
+ if (k in t && t[k] === searchElement)
+ return k;
+ }
+ return -1;
+ };
+}
+
+
+// Object.keys()
+if (!Object.keys) Object.keys = function(o){
+ if (o !== Object(o)) throw new TypeError('Object.keys called on non-object');
+ var ret=[], p;
+ for (p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
+ return ret;
+};
+
+
+
+if (!Array.prototype.map)
+{
+ Array.prototype.map = function(fun /*, thisp */)
+ {
+ "use strict";
+
+ if (this === void 0 || this === null)
+ throw new TypeError();
+
+ var t = Object(this);
+ var len = t.length >>> 0;
+ if (typeof fun !== "function")
+ throw new TypeError();
+
+ var res = new Array(len);
+ var thisp = arguments[1];
+ for (var i = 0; i < len; i++)
+ {
+ if (i in t)
+ res[i] = fun.call(thisp, t[i], i, t);
+ }
+
+ return res;
+ };
+}
+
+
+
+
+/*!
+ http://www.JSON.org/json2.js
+ 2011-10-19
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+*/
+var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
--- /dev/null
+// uaparser by lindsey simon,
+// ported to node by tobie
+// https://github.com/tobie/ua-parser/
+
+// browserized by paul irish
+
+(function(exports){
+
+ exports.uaparse = parse;
+
+ function parse(ua) {
+ for (var i=0; i < parsers.length; i++) {
+ var result = parsers[i](ua);
+ if (result) { return result; }
+ }
+ return new UserAgent();
+ }
+
+ function UserAgent(family) {
+ this.family = family || 'Other';
+ }
+
+ UserAgent.prototype.toVersionString = function() {
+ var output = '';
+ if (this.major != null) {
+ output += this.major;
+ if (this.minor != null) {
+ output += '.' + this.minor;
+ if (this.patch != null) {
+ output += '.' + this.patch;
+ }
+ }
+ }
+ return output;
+ };
+
+ UserAgent.prototype.toString = function() {
+ var suffix = this.toVersionString();
+ if (suffix) { suffix = ' ' + suffix; }
+ return this.family + suffix;
+ };
+
+
+ var regexes = [
+ {"pattern":"^(Opera)/(\\d+)\\.(\\d+) \\(Nintendo Wii",
+ "v1_replacement":null,
+ "family_replacement":"Wii"},
+ {"pattern":"(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)",
+ "v1_replacement":null,
+ "family_replacement":"Firefox ($1)"},
+ {"pattern":"(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?",
+ "v1_replacement":null,
+ "family_replacement":"Firefox ($1)"},
+ {"pattern":"(SeaMonkey|Fennec|Camino)/(\\d+)\\.(\\d+)([ab]?\\d+[a-z]*)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Flock)/(\\d+)\\.(\\d+)(b\\d+?)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Fennec)/(\\d+)\\.(\\d+)(pre)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Netscape"},
+ {"pattern":"(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Netscape"},
+ {"pattern":"(Netscape6)/(\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Netscape"},
+ {"pattern":"(MyIBrow)/(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"My Internet Browser"},
+ {"pattern":"(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"MicroB"},
+ {"pattern":"(Opera)/9.80.*Version\\/(\\d+)\\.(\\d+)(?:\\.(\\d+))?",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?) \\(Swiftfox\\)",
+ "v1_replacement":null,
+ "family_replacement":"Swiftfox"},
+ {"pattern":"(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)? \\(Swiftfox\\)",
+ "v1_replacement":null,
+ "family_replacement":"Swiftfox"},
+ {"pattern":"(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Konqueror"},
+ {"pattern":"(Jasmine|ANTGalio|Midori|Fresco|Lobo|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Shiira|Sunrise|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Vodafone|NetFront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|Iron|Iris)/(\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Bolt|Jasmine|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|Vodafone|NetFront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Iron|Space Bison|Stainless|Orca)/(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(iCab|Lunascape|Opera|Android) (\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(IEMobile) (\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"IE Mobile"},
+ {"pattern":"(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+))?",
+ "v1_replacement":null,
+ "family_replacement":"Obigo"},
+ {"pattern":"(MAXTHON|Maxthon) (\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Maxthon"},
+ {"pattern":"(Maxthon|MyIE2|Uzbl|Shiira)",
+ "v1_replacement":"0",
+ "family_replacement":null},
+ {"pattern":"(PLAYSTATION) (\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"PlayStation"},
+ {"pattern":"(PlayStation Portable)[^\\d]+(\\d+).(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Opera)/(\\d+)\\.(\\d+).*Opera Mobi",
+ "v1_replacement":null,
+ "family_replacement":"Opera Mobile"},
+ {"pattern":"(POLARIS)/(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Polaris"},
+ {"pattern":"(BonEcho)/(\\d+)\\.(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Bon Echo"},
+ {"pattern":"(iPhone) OS (\\d+)_(\\d+)(?:_(\\d+))?",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Avant)",
+ "v1_replacement":"1",
+ "family_replacement":null},
+ {"pattern":"(Nokia)[EN]?(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Black[bB]erry)(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Blackberry"},
+ {"pattern":"(OmniWeb)/v(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Blazer)/(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Palm Blazer"},
+ {"pattern":"(Pre)/(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"Palm Pre"},
+ {"pattern":"(Links) \\((\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(QtWeb) Internet Browser/(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/",
+ "v1_replacement":null,
+ "family_replacement":"Safari"},
+ {"pattern":"(OLPC)/Update(\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(OLPC)/Update()\\.(\\d+)",
+ "v1_replacement":"0",
+ "family_replacement":null},
+ {"pattern":"(SamsungSGHi560)",
+ "v1_replacement":null,
+ "family_replacement":"Samsung SGHi560"},
+ {"pattern":"^(SonyEricssonK800i)",
+ "v1_replacement":null,
+ "family_replacement":"Sony Ericsson K800i"},
+ {"pattern":"(Teleca Q7)",
+ "v1_replacement":null,
+ "family_replacement":null},
+ {"pattern":"(MSIE) (\\d+)\\.(\\d+)",
+ "v1_replacement":null,
+ "family_replacement":"IE"}
+
+ ];
+
+ var parsers = regexes.map(function(obj) {
+ var regexp = new RegExp(obj.pattern),
+ famRep = obj.family_replacement,
+ v1Rep = obj.v1_replacement;
+
+ function parser(ua) {
+ var m = ua.match(regexp);
+
+ if (!m) { return null; }
+
+ var familly = famRep ? famRep.replace('$1', m[1]) : m[1];
+
+ var obj = new UserAgent(familly);
+ obj.major = parseInt(v1Rep ? v1Rep : m[2]);
+ obj.minor = m[3] ? parseInt(m[3]) : null;
+ obj.patch = m[4] ? parseInt(m[4]) : null;
+
+ return obj;
+ }
+
+ return parser;
+ });
+
+
+})(window);
+
+
--- /dev/null
+
+// Avoid `console` errors in browsers that lack a console
+if (!(window.console && console.log)) {
+ (function() {
+ var noop = function() {};
+ var methods = ['assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'markTimeline', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn'];
+ var length = methods.length;
+ var console = window.console = {};
+ while (length--) {
+ console[methods[length]] = noop;
+ }
+ }());
+}
+
+// test helper object
+window.TEST = {
+ // note some unique members of the Modernizr object
+ inputs : ['input','inputtypes', 'textarea'],
+ audvid : ['video','audio'],
+ API : ['addTest', 'mq', 'hasEvent', 'testProp', 'testAllProps', 'testStyles', '_prefixes', '_domPrefixes', '_cssomPrefixes', 'prefixed'],
+ extraclass: ['js'],
+ privates : ['_enableHTML5','_version','_fontfaceready'],
+ deprecated : [
+ { oldish : 'crosswindowmessaging', newish : 'postmessage'},
+ { oldish : 'historymanagement', newish : 'history'},
+ ],
+
+ // utility methods
+ inArray: function(elem, array) {
+ if (array.indexOf) {
+ return array.indexOf(elem);
+ }
+ for (var i = 0, length = array.length; i < length; i++) {
+ if (array[i] === elem) {
+ return i;
+ }
+ }
+ return -1;
+ },
+ trim : function(str){
+ return str.replace(/^\s*/, "").replace(/\s*$/, "");
+ }
+};
+
--- /dev/null
+
+
+var myscript = document.createElement('script'),
+ ref = document.getElementsByTagName('script')[0];
+
+myscript.src = 'http://caniuse.com/jsonp.php?callback=caniusecb';
+
+setTimeout(function(){
+ ref.parentNode.insertBefore(myscript, ref);
+}, 100);
+
+// mapping Modernizr terms over to caniuse terms
+var map = {
+ audio : 'audio',
+ borderimage : 'border-image',
+ borderradius : 'border-radius',
+ canvas : 'canvas',
+ canvastext : 'canvas-text',
+ cssanimations : 'css-animation',
+ boxshadow : 'css-boxshadow',
+ cssgradients : 'css-gradients',
+ opacity : 'css-opacity',
+ cssreflections : 'css-reflections',
+ textshadow : 'css-textshadow',
+ csstransitions : 'css-transitions',
+ hsla : 'css3-colors',
+ rgba : 'css3-colors',
+ draganddrop : 'dragndrop',
+ flexbox : 'flexbox',
+ fontface : 'fontface',
+ geolocation : 'geolocation',
+ hashchange : 'hashchange',
+ history : 'history',
+ indexeddb : 'indexeddb',
+ multiplebgs : 'multibackgrounds',
+ csscolumns : 'multicolumn',
+ localstorage : 'namevalue-storage',
+ applicationcache : 'offline-apps',
+ websqldatabase : 'sql-storage',
+ svg : 'svg',
+ touch : 'touch',
+ csstransforms : 'transforms2d',
+ csstransforms3d : 'transforms3d',
+ video: 'video',
+ webgl: 'webgl',
+ websockets : 'websockets',
+ webworkers : 'webworkers',
+ postmessage : 'x-doc-messaging'
+};
+
+window.caniusecb = function(scriptdata) {
+
+ window.doo = scriptdata;
+
+ // quit if JSONSelect didn't make it.
+ if (!window.JSONSelect) return;
+
+ var testdata = scriptdata.data,
+
+ // parse the current UA with uaparser
+ ua = uaparse(navigator.userAgent),
+
+ // match the UA from uaparser into the browser used by caniuse
+ browserKey = JSONSelect.match('.agents .browser', scriptdata).indexOf(ua.family),
+ currBrowser = Object.keys(scriptdata.agents)[browserKey];
+
+ // So Phantom doesn't kill the caniuse.com matching exit out as it's useless anyway within PhantomJS
+ if(navigator.userAgent.indexOf("PhantomJS") != -1) {
+ return;
+ }
+
+ // translate 'y' 'n' or 'a' into a boolean that Modernizr uses
+ function bool(ciuresult){
+ if (ciuresult == 'y' || ciuresult == 'a') return true;
+ // 'p' is for polyfill
+ if (ciuresult == 'n' || ciuresult == 'p') return false;
+ throw 'unknown return value from can i use';
+ }
+
+ function testify(o){
+
+ var ciubool = bool(o.ciuresult);
+
+ // caniuse says audio/video are yes/no, Modernizr has more detail which we'll dumb down.
+ if (~TEST.audvid.indexOf(o.feature))
+ o.result = !!o.result;
+
+ // if caniuse gave us a 'partial', lets let it pass with a note.
+ if (o.ciuresult == 'a'){
+ return ok(true,
+ o.browser + o.version + ': Caniuse reported partial support for ' + o.ciufeature +
+ '. So.. Modernizr\'s ' + o.result + ' is good enough...'
+ );
+ }
+
+
+ // change the *documented* false positives
+ if ((o.feature == 'textshadow' && o.browser == 'firefox' && o.version == 3)
+ && ciubool == false
+ ) {
+ ciubool = o.fp = true;
+ }
+
+ // where we actually do most our assertions
+ equal(o.result, ciubool,
+ o.browser + o.version + ': Caniuse result for ' + o.ciufeature +
+ ' matches Modernizr\'s ' + (o.fp ? '*false positive*' : 'result') + ' for ' + o.feature
+ );
+ }
+
+
+ module('caniuse.com data matches', {
+ setup:function() {
+ },
+ teardown:function() {
+ }
+ });
+
+
+ test("we match caniuse data", function() {
+
+ for (var feature in Modernizr){
+
+ var ciufeatname = map[feature];
+
+ if (ciufeatname === undefined) continue;
+
+ var ciufeatdata = testdata[ciufeatname];
+
+ if (ciufeatdata === undefined) throw 'unknown key of caniusedata';
+
+ // get results for this feature for all versions of this browser
+ var browserResults = ciufeatdata.stats[currBrowser];
+
+ // let's get our versions in order..
+ var minorver = ua.minor && // caniuse doesn't use two digit minors
+ ua.minor.toString().replace(/(\d)\d$/,'$1'), // but opera does.
+
+ majorminor = (ua.major + '.' + minorver)
+ // opera gets grouped in some cases by caniuse
+ .replace(/(9\.(6|5))/ , ua.family == 'opera' ? '9.5-9.6' : "$1")
+ .replace(/(10\.(0|1))/, ua.family == 'opera' ? '10.0-10.1' : "$1"),
+
+ mmResult = browserResults[majorminor],
+ mResult = browserResults[ua.major];
+
+
+ // check it against the major.minor: eg. FF 3.6
+ if (mmResult && mmResult != 'u'){ // 'y' 'n' or 'a'
+
+ // data ends w/ ` x` if its still prefixed in the imp
+ mmResult = mmResult.replace(' x','');
+
+ // match it against our data.
+ testify({ feature : feature
+ , ciufeature : ciufeatname
+ , result : Modernizr[feature]
+ , ciuresult : mmResult
+ , browser : currBrowser
+ , version : majorminor
+ });
+
+ continue; // don't check the major version
+ }
+
+ // check it against just the major version: eg. FF 3
+ if (mResult){
+
+ // unknown support from caniuse... He would probably like to know our data, though!
+ if (mResult == 'u') continue;
+
+ // data ends w/ ` x` if its still prefixed in the imp
+ mResult = mResult.replace(' x','');
+
+ testify({ feature : feature
+ , ciufeature : ciufeatname
+ , result : Modernizr[feature]
+ , ciuresult : mResult
+ , browser : currBrowser
+ , version : ua.major
+ });
+
+
+ }
+
+ } // for in loop
+
+ }); // eo test()
+
+
+}; // eo caniusecallback()
--- /dev/null
+QUnit.begin = function() {
+ console.log("Starting test suite");
+ console.log("================================================\n");
+};
+
+QUnit.moduleDone = function(opts) {
+ if(opts.failed === 0) {
+ console.log("\u2714 All tests passed in '"+opts.name+"' module");
+ } else {
+ console.log("\u2716 "+ opts.failed +" tests failed in '"+opts.name+"' module");
+ }
+};
+
+QUnit.done = function(opts) {
+ console.log("\n================================================");
+ console.log("Tests completed in "+opts.runtime+" milliseconds");
+ console.log(opts.passed + " tests of "+opts.total+" passed, "+opts.failed+" failed.");
+};
+
+module('Basics', {
+ setup:function() {
+ },
+ teardown:function() {
+ }
+});
+
+test("globals set up", function() {
+
+ ok(window.Modernizr, 'global modernizr object created');
+
+});
+
+test("bind is implemented", function() {
+
+ ok(Function.prototype.bind, 'bind is a member of Function.prototype');
+
+ var a = function(){
+ return this.modernizr;
+ };
+ a = a.bind({modernizr: 'just awsome'});
+
+ equal("just awsome", a(), 'bind works as expected');
+
+
+ // thank you webkit layoutTests
+
+
+ var result;
+
+ function F(x, y)
+ {
+ result = this + " -> x:" + x + ", y:" + y;
+ }
+
+ G = F.bind("'a'", "'b'");
+ H = G.bind("'Cannot rebind this!'", "'c'");
+
+ G(1,2);
+ equal(result, "\'a\' -> x:\'b\', y:1");
+ H(1,2);
+ equal(result, "\'a\' -> x:\'b\', y:\'c\'");
+
+ var f = new F(1,2);
+ equal(result, "[object Object] -> x:1, y:2");
+ var g = new G(1,2);
+ equal(result, "[object Object] -> x:\'b\', y:1");
+ var h = new H(1,2);
+ equal(result, "[object Object] -> x:\'b\', y:\'c\'");
+
+ ok(f instanceof F, "f instanceof F");
+ ok(g instanceof F, "g instanceof F");
+ ok(h instanceof F, "h instanceof F");
+
+ // Bound functions don't have a 'prototype' property.
+ ok("prototype" in F, '"prototype" in F');
+
+ // The object passed to bind as 'this' must be callable.
+ raises(function(){
+ Function.bind.call(undefined);
+ });
+
+ // Objects that allow call but not construct can be bound, but should throw if used with new.
+ var abcAt = String.prototype.charAt.bind("abc");
+ equal(abcAt(1), "b", 'Objects that allow call but not construct can be bound...');
+
+ equal(1, Function.bind.length, 'it exists');
+
+
+});
+
+
+
+test("document.documentElement is valid and correct",1, function() {
+ equal(document.documentElement,document.getElementsByTagName('html')[0]);
+});
+
+
+test("no-js class is gone.", function() {
+
+ ok(!/(?:^|\s)no-js(?:^|\s)/.test(document.documentElement.className),
+ 'no-js class is gone');
+
+ ok(/(?:^|\s)js(?:^|\s)/.test(document.documentElement.className),
+ 'html.js class is present');
+
+ ok(/(?:^|\s)\+no-js(?:\s|$)/.test(document.documentElement.className),
+ 'html.+no-js class is still present');
+
+ ok(/(?:^|\s)no-js-(?:\s|$)/.test(document.documentElement.className),
+ 'html.no-js- class is still present');
+
+ ok(/(?:^|\s)i-has-no-js(?:\s|$)/.test(document.documentElement.className),
+ 'html.i-has-no-js class is still present');
+
+ if (document.querySelector){
+ ok(document.querySelector('html.js') == document.documentElement,
+ "document.querySelector('html.js') matches.");
+ }
+});
+
+test('html shim worked', function(){
+ expect(2);
+
+ // the exact test we use in the script
+ var elem = document.getElementsByTagName("section")[0];
+ elem.id = "html5section";
+
+ ok( elem.childNodes.length === 1 , 'unknown elements dont collapse');
+
+ elem.style.color = 'red';
+ ok( /red|#ff0000/i.test(elem.style.color), 'unknown elements are styleable')
+
+});
+
+
+module('Modernizr classes and bools', {
+ setup:function() {
+ },
+ teardown:function() {
+ }
+});
+
+
+test('html classes are looking good',function(){
+
+ var classes = TEST.trim(document.documentElement.className).split(/\s+/);
+
+ var modprops = Object.keys(Modernizr),
+ newprops = modprops;
+
+ // decrement for the properties that are private
+ for (var i = -1, len = TEST.privates.length; ++i < len; ){
+ var item = TEST.privates[i];
+ equal(-1, TEST.inArray(item, classes), 'private Modernizr object '+ item +'should not have matching classes');
+ equal(-1, TEST.inArray('no-' + item, classes), 'private Modernizr object no-'+item+' should not have matching classes');
+ }
+
+ // decrement for the non-boolean objects
+// for (var i = -1, len = TEST.inputs.length; ++i < len; ){
+// if (Modernizr[TEST.inputs[i]] != undefined) newprops--;
+// }
+
+ // TODO decrement for the extraclasses
+
+ // decrement for deprecated ones.
+ $.each( TEST.deprecated, function(key, val){
+ newprops.splice( TEST.inArray(item, newprops), 1);
+ });
+
+
+ //equal(classes,newprops,'equal number of classes and global object props');
+
+ if (classes.length !== newprops){
+ //window.console && console.log(classes, newprops);
+
+ }
+
+ for (var i = 0, len = classes.length, aclass; i <len; i++){
+ aclass = classes[i];
+
+ // Skip js related classes.
+ if (/^(?:js|\+no-js|no-js-|i-has-no-js)$/.test(aclass)) continue;
+
+ if (aclass.indexOf('no-') === 0){
+ aclass = aclass.replace('no-','');
+
+ equal(Modernizr[aclass], false,
+ aclass + ' is correctly false in the classes and object')
+
+ } else {
+ equal(Modernizr[aclass], true,
+ aclass + ' is correctly true in the classes and object')
+ }
+ }
+
+
+ for (var i = 0, len = classes.length, aclass; i <len; i++){
+ equal(classes[i],classes[i].toLowerCase(),'all classes are lowerCase.');
+ }
+
+ // Remove fake no-js classes before test.
+ var docElClass = document.documentElement.className;
+ $.each(['\\+no-js', 'no-js-', 'i-has-no-js'], function(i, fakeClass) {
+ docElClass = docElClass.replace(new RegExp('(^|\\s)' + fakeClass + '(\\s|$)', 'g'), '$1$2');
+ });
+ equal(/[^\s]no-/.test(docElClass), false, 'whitespace between all classes.');
+
+
+})
+
+
+test('Modernizr properties are looking good',function(){
+
+ var count = 0,
+ nobool = TEST.API.concat(TEST.inputs)
+ .concat(TEST.audvid)
+ .concat(TEST.privates)
+ .concat(['textarea']); // due to forms-placeholder.js test
+
+ for (var prop in window.Modernizr){
+ if (Modernizr.hasOwnProperty(prop)){
+
+ if (TEST.inArray(prop,nobool) >= 0) continue;
+
+ ok(Modernizr[prop] === true || Modernizr[prop] === false,
+ 'Modernizr.'+prop+' is a straight up boolean');
+
+
+ equal(prop,prop.toLowerCase(),'all properties are lowerCase.')
+ }
+ }
+})
+
+
+
+test('Modernizr.audio and Modernizr.video',function(){
+
+ for (var i = -1, len = TEST.audvid.length; ++i < len;){
+ var prop = TEST.audvid[i];
+
+ if (Modernizr[prop].toString() == 'true'){
+
+ ok(Modernizr[prop], 'Modernizr.'+prop+' is truthy.');
+ equal(Modernizr[prop] == true,true, 'Modernizr.'+prop+' is == true')
+ equal(typeof Modernizr[prop] === 'object',true,'Moderizr.'+prop+' is truly an object');
+ equal(Modernizr[prop] !== true,true, 'Modernizr.'+prop+' is !== true')
+
+ } else {
+
+ equal(Modernizr[prop] != true,true, 'Modernizr.'+prop+' is != true')
+ }
+ }
+
+
+});
+
+
+test('Modernizr results match expected values',function(){
+
+ // i'm bringing over a few tests from inside Modernizr.js
+ equal(!!document.createElement('canvas').getContext,Modernizr.canvas,'canvas test consistent');
+
+ equal(!!window.Worker,Modernizr.webworkers,'web workers test consistent')
+
+});
+
+
+
+module('Modernizr\'s API methods', {
+ setup:function() {
+ },
+ teardown:function() {
+ }
+});
+
+test('Modernizr.addTest()',22,function(){
+
+ var docEl = document.documentElement;
+
+
+ Modernizr.addTest('testtrue',function(){
+ return true;
+ });
+
+ Modernizr.addTest('testtruthy',function(){
+ return 100;
+ });
+
+ Modernizr.addTest('testfalse',function(){
+ return false;
+ });
+
+ Modernizr.addTest('testfalsy',function(){
+ return undefined;
+ });
+
+ ok(docEl.className.indexOf(' testtrue') >= 0,'positive class added');
+ equal(Modernizr.testtrue,true,'positive prop added');
+
+ ok(docEl.className.indexOf(' testtruthy') >= 0,'positive class added');
+ equal(Modernizr.testtruthy,100,'truthy value is not casted to straight boolean');
+
+ ok(docEl.className.indexOf(' no-testfalse') >= 0,'negative class added');
+ equal(Modernizr.testfalse,false,'negative prop added');
+
+ ok(docEl.className.indexOf(' no-testfalsy') >= 0,'negative class added');
+ equal(Modernizr.testfalsy,undefined,'falsy value is not casted to straight boolean');
+
+
+
+ Modernizr.addTest('testcamelCase',function(){
+ return true;
+ });
+
+ ok(docEl.className.indexOf(' testcamelCase') === -1,
+ 'camelCase test name toLowerCase()\'d');
+
+
+ // okay new signature for this API! woo
+
+ Modernizr.addTest('testboolfalse', false);
+
+ ok(~docEl.className.indexOf(' no-testboolfalse'), 'Modernizr.addTest(feature, bool): negative class added');
+ equal(Modernizr.testboolfalse, false, 'Modernizr.addTest(feature, bool): negative prop added');
+
+
+
+ Modernizr.addTest('testbooltrue', true);
+
+ ok(~docEl.className.indexOf(' testbooltrue'), 'Modernizr.addTest(feature, bool): positive class added');
+ equal(Modernizr.testbooltrue, true, 'Modernizr.addTest(feature, bool): positive prop added');
+
+
+
+ Modernizr.addTest({'testobjboolfalse': false,
+ 'testobjbooltrue' : true });
+
+ ok(~docEl.className.indexOf(' no-testobjboolfalse'), 'Modernizr.addTest({feature: bool}): negative class added');
+ equal(Modernizr.testobjboolfalse, false, 'Modernizr.addTest({feature: bool}): negative prop added');
+
+ ok(~docEl.className.indexOf(' testobjbooltrue'), 'Modernizr.addTest({feature: bool}): positive class added');
+ equal(Modernizr.testobjbooltrue, true, 'Modernizr.addTest({feature: bool}): positive prop added');
+
+
+
+
+ Modernizr.addTest({'testobjfnfalse': function(){ return false },
+ 'testobjfntrue' : function(){ return true } });
+
+
+ ok(~docEl.className.indexOf(' no-testobjfnfalse'), 'Modernizr.addTest({feature: bool}): negative class added');
+ equal(Modernizr.testobjfnfalse, false, 'Modernizr.addTest({feature: bool}): negative prop added');
+
+ ok(~docEl.className.indexOf(' testobjfntrue'), 'Modernizr.addTest({feature: bool}): positive class added');
+ equal(Modernizr.testobjfntrue, true, 'Modernizr.addTest({feature: bool}): positive prop added');
+
+
+ Modernizr
+ .addTest('testchainone', true)
+ .addTest({ testchaintwo: true })
+ .addTest('testchainthree', function(){ return true; });
+
+ ok( Modernizr.testchainone == Modernizr.testchaintwo == Modernizr.testchainthree, 'addTest is chainable');
+
+
+}); // eo addTest
+
+
+
+
+
+test('Modernizr.mq: media query testing',function(){
+
+ var $html = $('html');
+ $.mobile = {};
+
+ // from jquery mobile
+
+ $.mobile.media = (function() {
+ // TODO: use window.matchMedia once at least one UA implements it
+ var cache = {},
+ testDiv = $( "<div id='jquery-mediatest'>" ),
+ fakeBody = $( "<body>" ).append( testDiv );
+
+ return function( query ) {
+ if ( !( query in cache ) ) {
+ var styleBlock = document.createElement('style'),
+ cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }";
+ //must set type for IE!
+ styleBlock.type = "text/css";
+ if (styleBlock.styleSheet){
+ styleBlock.styleSheet.cssText = cssrule;
+ }
+ else {
+ styleBlock.appendChild(document.createTextNode(cssrule));
+ }
+
+ $html.prepend( fakeBody ).prepend( styleBlock );
+ cache[ query ] = testDiv.css( "position" ) === "absolute";
+ fakeBody.add( styleBlock ).remove();
+ }
+ return cache[ query ];
+ };
+ })();
+
+
+ ok(Modernizr.mq,'Modernizr.mq() doesn\' freak out.');
+
+ equal($.mobile.media('only screen'), Modernizr.mq('only screen'),'screen media query matches jQuery mobile\'s result');
+
+ equal(Modernizr.mq('only all'), Modernizr.mq('only all'), 'Cache hit matches');
+
+
+});
+
+
+
+
+test('Modernizr.hasEvent()',function(){
+
+ ok(typeof Modernizr.hasEvent == 'function','Modernizr.hasEvent() is a function');
+
+
+ equal(Modernizr.hasEvent('click'), true,'click event is supported');
+
+ equal(Modernizr.hasEvent('modernizrcustomevent'), false,'random event is definitely not supported');
+
+ /* works fine in webkit but not gecko
+ equal( Modernizr.hasEvent('resize', window),
+ !Modernizr.hasEvent('resize', document.createElement('div')),
+ 'Resize is supported in window but not a div, typically...');
+ */
+
+});
+
+
+
+
+
+test('Modernizr.testStyles()',function(){
+
+ equal(typeof Modernizr.testStyles, 'function','Modernizr.testStyles() is a function');
+
+ var style = '#modernizr{ width: 9px; height: 4px; font-size: 0; color: papayawhip; }';
+
+ Modernizr.testStyles(style, function(elem, rule){
+ equal(style, rule, 'rule passsed back matches what i gave it.')
+ equal(elem.offsetWidth, 9, 'width was set through the style');
+ equal(elem.offsetHeight, 4, 'height was set through the style');
+ equal(elem.id, 'modernizr', 'element is indeed the modernizr element');
+ });
+
+});
+
+
+test('Modernizr._[properties]',function(){
+
+ equal(6, Modernizr._prefixes.length, 'Modernizr._prefixes has 6 items');
+
+ equal(4, Modernizr._domPrefixes.length, 'Modernizr.domPrefixes has 4 items');
+
+});
+
+test('Modernizr.testProp()',function(){
+
+ equal(true, Modernizr.testProp('margin'), 'Everyone supports margin');
+
+ equal(false, Modernizr.testProp('happiness'), 'Nobody supports the happiness style. :(');
+ equal(true, Modernizr.testProp('fontSize'), 'Everyone supports fontSize');
+ equal(false, Modernizr.testProp('font-size'), 'Nobody supports font-size');
+
+ equal('pointerEvents' in document.createElement('div').style,
+ Modernizr.testProp('pointerEvents'),
+ 'results for `pointer-events` are consistent with a homegrown feature test');
+
+});
+
+
+
+test('Modernizr.testAllProps()',function(){
+
+ equal(true, Modernizr.testAllProps('margin'), 'Everyone supports margin');
+
+ equal(false, Modernizr.testAllProps('happiness'), 'Nobody supports the happiness style. :(');
+ equal(true, Modernizr.testAllProps('fontSize'), 'Everyone supports fontSize');
+ equal(false, Modernizr.testAllProps('font-size'), 'Nobody supports font-size');
+
+ equal(Modernizr.csstransitions, Modernizr.testAllProps('transition'), 'Modernizr result matches API result: csstransitions');
+
+ equal(Modernizr.csscolumns, Modernizr.testAllProps('columnCount'), 'Modernizr result matches API result: csscolumns')
+
+});
+
+
+
+
+
+
+test('Modernizr.prefixed() - css and DOM resolving', function(){
+ // https://gist.github.com/523692
+
+ function gimmePrefix(prop, obj){
+ var prefixes = ['Moz','Khtml','Webkit','O','ms'],
+ domPrefixes = ['moz','khtml','webkit','o','ms'],
+ elem = document.createElement('div'),
+ upper = prop.charAt(0).toUpperCase() + prop.slice(1);
+
+ if(!obj) {
+ if (prop in elem.style)
+ return prop;
+
+ for (var len = prefixes.length; len--; ){
+ if ((prefixes[len] + upper) in elem.style)
+ return (prefixes[len] + upper);
+ }
+ } else {
+ if (prop in obj)
+ return prop;
+
+ for (var len = domPrefixes.length; len--; ){
+ if ((domPrefixes[len] + upper) in obj)
+ return (domPrefixes[len] + upper);
+ }
+ }
+
+
+ return false;
+ }
+
+ var propArr = ['transition', 'backgroundSize', 'boxSizing', 'borderImage',
+ 'borderRadius', 'boxShadow', 'columnCount'];
+
+ var domPropArr = [{ 'prop': 'requestAnimationFrame', 'obj': window },
+ { 'prop': 'querySelectorAll', 'obj': document },
+ { 'prop': 'matchesSelector', 'obj': document.createElement('div') }];
+
+ for (var i = -1, len = propArr.length; ++i < len; ){
+ var prop = propArr[i];
+ equal(Modernizr.prefixed(prop), gimmePrefix(prop), 'results for ' + prop + ' match the homebaked prefix finder');
+ }
+
+ for (var i = -1, len = domPropArr.length; ++i < len; ){
+ var prop = domPropArr[i];
+ ok(!!~Modernizr.prefixed(prop.prop, prop.obj, false).toString().indexOf(gimmePrefix(prop.prop, prop.obj)), 'results for ' + prop.prop + ' match the homebaked prefix finder');
+ }
+
+
+
+
+});
+
+
+// FIXME: so a few of these are whitelisting for webkit. i'd like to improve that.
+test('Modernizr.prefixed autobind', function(){
+
+ var rAFName;
+
+ // quick sniff to find the local rAF prefixed name.
+ var vendors = ['ms', 'moz', 'webkit', 'o'];
+ for(var x = 0; x < vendors.length && !rAFName; ++x) {
+ rAFName = window[vendors[x]+'RequestAnimationFrame'] && vendors[x]+'RequestAnimationFrame';
+ }
+
+ if (rAFName){
+ // rAF returns a function
+ equal(
+ 'function',
+ typeof Modernizr.prefixed('requestAnimationFrame', window),
+ "Modernizr.prefixed('requestAnimationFrame', window) returns a function")
+
+ // unless we false it to a string
+ equal(
+ rAFName,
+ Modernizr.prefixed('requestAnimationFrame', window, false),
+ "Modernizr.prefixed('requestAnimationFrame', window, false) returns a string (the prop name)")
+
+ }
+
+ if (document.body.webkitMatchesSelector || document.body.mozMatchesSelector){
+
+ var fn = Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body);
+
+ //returns function
+ equal(
+ 'function',
+ typeof fn,
+ "Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body) returns a function");
+
+ // fn scoping
+ equal(
+ true,
+ fn('body'),
+ "Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body) is scoped to the body")
+
+ }
+
+ // Webkit only: are there other objects that are prefixed?
+ if (window.webkitNotifications){
+ // should be an object.
+
+ equal(
+ 'object',
+ typeof Modernizr.prefixed('Notifications', window),
+ "Modernizr.prefixed('Notifications') returns an object");
+
+ }
+
+ // Webkit only:
+ if (typeof document.webkitIsFullScreen !== 'undefined'){
+ // boolean
+
+ equal(
+ 'boolean',
+ typeof Modernizr.prefixed('isFullScreen', document),
+ "Modernizr.prefixed('isFullScreen') returns a boolean");
+ }
+
+
+
+ // Moz only:
+ if (typeof document.mozFullScreen !== 'undefined'){
+ // boolean
+
+ equal(
+ 'boolean',
+ typeof Modernizr.prefixed('fullScreen', document),
+ "Modernizr.prefixed('fullScreen') returns a boolean");
+ }
+
+
+ // Webkit-only.. takes advantage of Webkit's mixed case of prefixes
+ if (document.body.style.WebkitAnimation){
+ // string
+
+ equal(
+ 'string',
+ typeof Modernizr.prefixed('animation', document.body.style),
+ "Modernizr.prefixed('animation', document.body.style) returns value of that, as a string");
+
+ equal(
+ animationStyle.toLowerCase(),
+ Modernizr.prefixed('animation', document.body.style, false).toLowerCase(),
+ "Modernizr.prefixed('animation', document.body.style, false) returns the (case-normalized) name of the property: webkitanimation");
+
+ }
+
+ equal(
+ false,
+ Modernizr.prefixed('doSomethingAmazing$#$', window),
+ "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj) returns false");
+
+ equal(
+ false,
+ Modernizr.prefixed('doSomethingAmazing$#$', window, document.body),
+ "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj, scope) returns false");
+
+
+ equal(
+ false,
+ Modernizr.prefixed('doSomethingAmazing$#$', window, false),
+ "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj, false) returns false");
+
+
+});
+
+
+
+
+
--- /dev/null
+/**
+ * QUnit v1.9.0 - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2012 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function( window ) {
+
+var QUnit,
+ config,
+ onErrorFnPrev,
+ testId = 0,
+ fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ defined = {
+ setTimeout: typeof window.setTimeout !== "undefined",
+ sessionStorage: (function() {
+ var x = "qunit-test-string";
+ try {
+ sessionStorage.setItem( x, x );
+ sessionStorage.removeItem( x );
+ return true;
+ } catch( e ) {
+ return false;
+ }
+ }())
+};
+
+function Test( settings ) {
+ extend( this, settings );
+ this.assertions = [];
+ this.testNumber = ++Test.count;
+}
+
+Test.count = 0;
+
+Test.prototype = {
+ init: function() {
+ var a, b, li,
+ tests = id( "qunit-tests" );
+
+ if ( tests ) {
+ b = document.createElement( "strong" );
+ b.innerHTML = this.name;
+
+ // `a` initialized at top of scope
+ a = document.createElement( "a" );
+ a.innerHTML = "Rerun";
+ a.href = QUnit.url({ testNumber: this.testNumber });
+
+ li = document.createElement( "li" );
+ li.appendChild( b );
+ li.appendChild( a );
+ li.className = "running";
+ li.id = this.id = "qunit-test-output" + testId++;
+
+ tests.appendChild( li );
+ }
+ },
+ setup: function() {
+ if ( this.module !== config.previousModule ) {
+ if ( config.previousModule ) {
+ runLoggingCallbacks( "moduleDone", QUnit, {
+ name: config.previousModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ });
+ }
+ config.previousModule = this.module;
+ config.moduleStats = { all: 0, bad: 0 };
+ runLoggingCallbacks( "moduleStart", QUnit, {
+ name: this.module
+ });
+ } else if ( config.autorun ) {
+ runLoggingCallbacks( "moduleStart", QUnit, {
+ name: this.module
+ });
+ }
+
+ config.current = this;
+
+ this.testEnvironment = extend({
+ setup: function() {},
+ teardown: function() {}
+ }, this.moduleTestEnvironment );
+
+ runLoggingCallbacks( "testStart", QUnit, {
+ name: this.testName,
+ module: this.module
+ });
+
+ // allow utility functions to access the current test environment
+ // TODO why??
+ QUnit.current_testEnvironment = this.testEnvironment;
+
+ if ( !config.pollution ) {
+ saveGlobal();
+ }
+ if ( config.notrycatch ) {
+ this.testEnvironment.setup.call( this.testEnvironment );
+ return;
+ }
+ try {
+ this.testEnvironment.setup.call( this.testEnvironment );
+ } catch( e ) {
+ QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
+ }
+ },
+ run: function() {
+ config.current = this;
+
+ var running = id( "qunit-testresult" );
+
+ if ( running ) {
+ running.innerHTML = "Running: <br/>" + this.name;
+ }
+
+ if ( this.async ) {
+ QUnit.stop();
+ }
+
+ if ( config.notrycatch ) {
+ this.callback.call( this.testEnvironment, QUnit.assert );
+ return;
+ }
+
+ try {
+ this.callback.call( this.testEnvironment, QUnit.assert );
+ } catch( e ) {
+ QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
+ // else next test will carry the responsibility
+ saveGlobal();
+
+ // Restart the tests if they're blocking
+ if ( config.blocking ) {
+ QUnit.start();
+ }
+ }
+ },
+ teardown: function() {
+ config.current = this;
+ if ( config.notrycatch ) {
+ this.testEnvironment.teardown.call( this.testEnvironment );
+ return;
+ } else {
+ try {
+ this.testEnvironment.teardown.call( this.testEnvironment );
+ } catch( e ) {
+ QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
+ }
+ }
+ checkPollution();
+ },
+ finish: function() {
+ config.current = this;
+ if ( config.requireExpects && this.expected == null ) {
+ QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
+ } else if ( this.expected != null && this.expected != this.assertions.length ) {
+ QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
+ } else if ( this.expected == null && !this.assertions.length ) {
+ QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
+ }
+
+ var assertion, a, b, i, li, ol,
+ test = this,
+ good = 0,
+ bad = 0,
+ tests = id( "qunit-tests" );
+
+ config.stats.all += this.assertions.length;
+ config.moduleStats.all += this.assertions.length;
+
+ if ( tests ) {
+ ol = document.createElement( "ol" );
+
+ for ( i = 0; i < this.assertions.length; i++ ) {
+ assertion = this.assertions[i];
+
+ li = document.createElement( "li" );
+ li.className = assertion.result ? "pass" : "fail";
+ li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
+ ol.appendChild( li );
+
+ if ( assertion.result ) {
+ good++;
+ } else {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+
+ // store result when possible
+ if ( QUnit.config.reorder && defined.sessionStorage ) {
+ if ( bad ) {
+ sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
+ } else {
+ sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
+ }
+ }
+
+ if ( bad === 0 ) {
+ ol.style.display = "none";
+ }
+
+ // `b` initialized at top of scope
+ b = document.createElement( "strong" );
+ b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
+
+ addEvent(b, "click", function() {
+ var next = b.nextSibling.nextSibling,
+ display = next.style.display;
+ next.style.display = display === "none" ? "block" : "none";
+ });
+
+ addEvent(b, "dblclick", function( e ) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location = QUnit.url({ testNumber: test.testNumber });
+ }
+ });
+
+ // `li` initialized at top of scope
+ li = id( this.id );
+ li.className = bad ? "fail" : "pass";
+ li.removeChild( li.firstChild );
+ a = li.firstChild;
+ li.appendChild( b );
+ li.appendChild ( a );
+ li.appendChild( ol );
+
+ } else {
+ for ( i = 0; i < this.assertions.length; i++ ) {
+ if ( !this.assertions[i].result ) {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ }
+
+ runLoggingCallbacks( "testDone", QUnit, {
+ name: this.testName,
+ module: this.module,
+ failed: bad,
+ passed: this.assertions.length - bad,
+ total: this.assertions.length
+ });
+
+ QUnit.reset();
+
+ config.current = undefined;
+ },
+
+ queue: function() {
+ var bad,
+ test = this;
+
+ synchronize(function() {
+ test.init();
+ });
+ function run() {
+ // each of these can by async
+ synchronize(function() {
+ test.setup();
+ });
+ synchronize(function() {
+ test.run();
+ });
+ synchronize(function() {
+ test.teardown();
+ });
+ synchronize(function() {
+ test.finish();
+ });
+ }
+
+ // `bad` initialized at top of scope
+ // defer when previous test run passed, if storage is available
+ bad = QUnit.config.reorder && defined.sessionStorage &&
+ +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
+
+ if ( bad ) {
+ run();
+ } else {
+ synchronize( run, true );
+ }
+ }
+};
+
+// Root QUnit object.
+// `QUnit` initialized at top of scope
+QUnit = {
+
+ // call on start of module test to prepend name to all tests
+ module: function( name, testEnvironment ) {
+ config.currentModule = name;
+ config.currentModuleTestEnviroment = testEnvironment;
+ },
+
+ asyncTest: function( testName, expected, callback ) {
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+
+ QUnit.test( testName, expected, callback, true );
+ },
+
+ test: function( testName, expected, callback, async ) {
+ var test,
+ name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
+
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+
+ if ( config.currentModule ) {
+ name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
+ }
+
+ test = new Test({
+ name: name,
+ testName: testName,
+ expected: expected,
+ async: async,
+ callback: callback,
+ module: config.currentModule,
+ moduleTestEnvironment: config.currentModuleTestEnviroment,
+ stack: sourceFromStacktrace( 2 )
+ });
+
+ if ( !validTest( test ) ) {
+ return;
+ }
+
+ test.queue();
+ },
+
+ // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+ expect: function( asserts ) {
+ config.current.expected = asserts;
+ },
+
+ start: function( count ) {
+ config.semaphore -= count || 1;
+ // don't start until equal number of stop-calls
+ if ( config.semaphore > 0 ) {
+ return;
+ }
+ // ignore if start is called more often then stop
+ if ( config.semaphore < 0 ) {
+ config.semaphore = 0;
+ }
+ // A slight delay, to avoid any current callbacks
+ if ( defined.setTimeout ) {
+ window.setTimeout(function() {
+ if ( config.semaphore > 0 ) {
+ return;
+ }
+ if ( config.timeout ) {
+ clearTimeout( config.timeout );
+ }
+
+ config.blocking = false;
+ process( true );
+ }, 13);
+ } else {
+ config.blocking = false;
+ process( true );
+ }
+ },
+
+ stop: function( count ) {
+ config.semaphore += count || 1;
+ config.blocking = true;
+
+ if ( config.testTimeout && defined.setTimeout ) {
+ clearTimeout( config.timeout );
+ config.timeout = window.setTimeout(function() {
+ QUnit.ok( false, "Test timed out" );
+ config.semaphore = 1;
+ QUnit.start();
+ }, config.testTimeout );
+ }
+ }
+};
+
+// Asssert helpers
+// All of these must call either QUnit.push() or manually do:
+// - runLoggingCallbacks( "log", .. );
+// - config.current.assertions.push({ .. });
+QUnit.assert = {
+ /**
+ * Asserts rough true-ish result.
+ * @name ok
+ * @function
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+ */
+ ok: function( result, msg ) {
+ if ( !config.current ) {
+ throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
+ }
+ result = !!result;
+
+ var source,
+ details = {
+ result: result,
+ message: msg
+ };
+
+ msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
+ msg = "<span class='test-message'>" + msg + "</span>";
+
+ if ( !result ) {
+ source = sourceFromStacktrace( 2 );
+ if ( source ) {
+ details.source = source;
+ msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
+ }
+ }
+ runLoggingCallbacks( "log", QUnit, details );
+ config.current.assertions.push({
+ result: result,
+ message: msg
+ });
+ },
+
+ /**
+ * Assert that the first two arguments are equal, with an optional message.
+ * Prints out both actual and expected values.
+ * @name equal
+ * @function
+ * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
+ */
+ equal: function( actual, expected, message ) {
+ QUnit.push( expected == actual, actual, expected, message );
+ },
+
+ /**
+ * @name notEqual
+ * @function
+ */
+ notEqual: function( actual, expected, message ) {
+ QUnit.push( expected != actual, actual, expected, message );
+ },
+
+ /**
+ * @name deepEqual
+ * @function
+ */
+ deepEqual: function( actual, expected, message ) {
+ QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
+ },
+
+ /**
+ * @name notDeepEqual
+ * @function
+ */
+ notDeepEqual: function( actual, expected, message ) {
+ QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
+ },
+
+ /**
+ * @name strictEqual
+ * @function
+ */
+ strictEqual: function( actual, expected, message ) {
+ QUnit.push( expected === actual, actual, expected, message );
+ },
+
+ /**
+ * @name notStrictEqual
+ * @function
+ */
+ notStrictEqual: function( actual, expected, message ) {
+ QUnit.push( expected !== actual, actual, expected, message );
+ },
+
+ throws: function( block, expected, message ) {
+ var actual,
+ ok = false;
+
+ // 'expected' is optional
+ if ( typeof expected === "string" ) {
+ message = expected;
+ expected = null;
+ }
+
+ config.current.ignoreGlobalErrors = true;
+ try {
+ block.call( config.current.testEnvironment );
+ } catch (e) {
+ actual = e;
+ }
+ config.current.ignoreGlobalErrors = false;
+
+ if ( actual ) {
+ // we don't want to validate thrown error
+ if ( !expected ) {
+ ok = true;
+ // expected is a regexp
+ } else if ( QUnit.objectType( expected ) === "regexp" ) {
+ ok = expected.test( actual );
+ // expected is a constructor
+ } else if ( actual instanceof expected ) {
+ ok = true;
+ // expected is a validation function which returns true is validation passed
+ } else if ( expected.call( {}, actual ) === true ) {
+ ok = true;
+ }
+
+ QUnit.push( ok, actual, null, message );
+ } else {
+ QUnit.pushFailure( message, null, 'No exception was thrown.' );
+ }
+ }
+};
+
+/**
+ * @deprecate since 1.8.0
+ * Kept assertion helpers in root for backwards compatibility
+ */
+extend( QUnit, QUnit.assert );
+
+/**
+ * @deprecated since 1.9.0
+ * Kept global "raises()" for backwards compatibility
+ */
+QUnit.raises = QUnit.assert.throws;
+
+/**
+ * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
+ * Kept to avoid TypeErrors for undefined methods.
+ */
+QUnit.equals = function() {
+ QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
+};
+QUnit.same = function() {
+ QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
+};
+
+// We want access to the constructor's prototype
+(function() {
+ function F() {}
+ F.prototype = QUnit;
+ QUnit = new F();
+ // Make F QUnit's constructor so that we can add to the prototype later
+ QUnit.constructor = F;
+}());
+
+/**
+ * Config object: Maintain internal state
+ * Later exposed as QUnit.config
+ * `config` initialized at top of scope
+ */
+config = {
+ // The queue of tests to run
+ queue: [],
+
+ // block until document ready
+ blocking: true,
+
+ // when enabled, show only failing tests
+ // gets persisted through sessionStorage and can be changed in UI via checkbox
+ hidepassed: false,
+
+ // by default, run previously failed tests first
+ // very useful in combination with "Hide passed tests" checked
+ reorder: true,
+
+ // by default, modify document.title when suite is done
+ altertitle: true,
+
+ // when enabled, all tests must call expect()
+ requireExpects: false,
+
+ // add checkboxes that are persisted in the query-string
+ // when enabled, the id is set to `true` as a `QUnit.config` property
+ urlConfig: [
+ {
+ id: "noglobals",
+ label: "Check for Globals",
+ tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
+ },
+ {
+ id: "notrycatch",
+ label: "No try-catch",
+ tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
+ }
+ ],
+
+ // logging callback queues
+ begin: [],
+ done: [],
+ log: [],
+ testStart: [],
+ testDone: [],
+ moduleStart: [],
+ moduleDone: []
+};
+
+// Initialize more QUnit.config and QUnit.urlParams
+(function() {
+ var i,
+ location = window.location || { search: "", protocol: "file:" },
+ params = location.search.slice( 1 ).split( "&" ),
+ length = params.length,
+ urlParams = {},
+ current;
+
+ if ( params[ 0 ] ) {
+ for ( i = 0; i < length; i++ ) {
+ current = params[ i ].split( "=" );
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
+ urlParams[ current[ 0 ] ] = current[ 1 ];
+ }
+ }
+
+ QUnit.urlParams = urlParams;
+
+ // String search anywhere in moduleName+testName
+ config.filter = urlParams.filter;
+
+ // Exact match of the module name
+ config.module = urlParams.module;
+
+ config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
+
+ // Figure out if we're running the tests from a server or not
+ QUnit.isLocal = location.protocol === "file:";
+}());
+
+// Export global variables, unless an 'exports' object exists,
+// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
+if ( typeof exports === "undefined" ) {
+ extend( window, QUnit );
+
+ // Expose QUnit object
+ window.QUnit = QUnit;
+}
+
+// Extend QUnit object,
+// these after set here because they should not be exposed as global functions
+extend( QUnit, {
+ config: config,
+
+ // Initialize the configuration options
+ init: function() {
+ extend( config, {
+ stats: { all: 0, bad: 0 },
+ moduleStats: { all: 0, bad: 0 },
+ started: +new Date(),
+ updateRate: 1000,
+ blocking: false,
+ autostart: true,
+ autorun: false,
+ filter: "",
+ queue: [],
+ semaphore: 0
+ });
+
+ var tests, banner, result,
+ qunit = id( "qunit" );
+
+ if ( qunit ) {
+ qunit.innerHTML =
+ "<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
+ "<h2 id='qunit-banner'></h2>" +
+ "<div id='qunit-testrunner-toolbar'></div>" +
+ "<h2 id='qunit-userAgent'></h2>" +
+ "<ol id='qunit-tests'></ol>";
+ }
+
+ tests = id( "qunit-tests" );
+ banner = id( "qunit-banner" );
+ result = id( "qunit-testresult" );
+
+ if ( tests ) {
+ tests.innerHTML = "";
+ }
+
+ if ( banner ) {
+ banner.className = "";
+ }
+
+ if ( result ) {
+ result.parentNode.removeChild( result );
+ }
+
+ if ( tests ) {
+ result = document.createElement( "p" );
+ result.id = "qunit-testresult";
+ result.className = "result";
+ tests.parentNode.insertBefore( result, tests );
+ result.innerHTML = "Running...<br/> ";
+ }
+ },
+
+ // Resets the test setup. Useful for tests that modify the DOM.
+ // If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
+ reset: function() {
+ var fixture;
+
+ if ( window.jQuery ) {
+ jQuery( "#qunit-fixture" ).html( config.fixture );
+ } else {
+ fixture = id( "qunit-fixture" );
+ if ( fixture ) {
+ fixture.innerHTML = config.fixture;
+ }
+ }
+ },
+
+ // Trigger an event on an element.
+ // @example triggerEvent( document.body, "click" );
+ triggerEvent: function( elem, type, event ) {
+ if ( document.createEvent ) {
+ event = document.createEvent( "MouseEvents" );
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+
+ elem.dispatchEvent( event );
+ } else if ( elem.fireEvent ) {
+ elem.fireEvent( "on" + type );
+ }
+ },
+
+ // Safe object type checking
+ is: function( type, obj ) {
+ return QUnit.objectType( obj ) == type;
+ },
+
+ objectType: function( obj ) {
+ if ( typeof obj === "undefined" ) {
+ return "undefined";
+ // consider: typeof null === object
+ }
+ if ( obj === null ) {
+ return "null";
+ }
+
+ var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
+
+ switch ( type ) {
+ case "Number":
+ if ( isNaN(obj) ) {
+ return "nan";
+ }
+ return "number";
+ case "String":
+ case "Boolean":
+ case "Array":
+ case "Date":
+ case "RegExp":
+ case "Function":
+ return type.toLowerCase();
+ }
+ if ( typeof obj === "object" ) {
+ return "object";
+ }
+ return undefined;
+ },
+
+ push: function( result, actual, expected, message ) {
+ if ( !config.current ) {
+ throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
+ }
+
+ var output, source,
+ details = {
+ result: result,
+ message: message,
+ actual: actual,
+ expected: expected
+ };
+
+ message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
+ message = "<span class='test-message'>" + message + "</span>";
+ output = message;
+
+ if ( !result ) {
+ expected = escapeInnerText( QUnit.jsDump.parse(expected) );
+ actual = escapeInnerText( QUnit.jsDump.parse(actual) );
+ output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
+
+ if ( actual != expected ) {
+ output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
+ output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
+ }
+
+ source = sourceFromStacktrace();
+
+ if ( source ) {
+ details.source = source;
+ output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
+ }
+
+ output += "</table>";
+ }
+
+ runLoggingCallbacks( "log", QUnit, details );
+
+ config.current.assertions.push({
+ result: !!result,
+ message: output
+ });
+ },
+
+ pushFailure: function( message, source, actual ) {
+ if ( !config.current ) {
+ throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
+ }
+
+ var output,
+ details = {
+ result: false,
+ message: message
+ };
+
+ message = escapeInnerText( message ) || "error";
+ message = "<span class='test-message'>" + message + "</span>";
+ output = message;
+
+ output += "<table>";
+
+ if ( actual ) {
+ output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeInnerText( actual ) + "</pre></td></tr>";
+ }
+
+ if ( source ) {
+ details.source = source;
+ output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
+ }
+
+ output += "</table>";
+
+ runLoggingCallbacks( "log", QUnit, details );
+
+ config.current.assertions.push({
+ result: false,
+ message: output
+ });
+ },
+
+ url: function( params ) {
+ params = extend( extend( {}, QUnit.urlParams ), params );
+ var key,
+ querystring = "?";
+
+ for ( key in params ) {
+ if ( !hasOwn.call( params, key ) ) {
+ continue;
+ }
+ querystring += encodeURIComponent( key ) + "=" +
+ encodeURIComponent( params[ key ] ) + "&";
+ }
+ return window.location.pathname + querystring.slice( 0, -1 );
+ },
+
+ extend: extend,
+ id: id,
+ addEvent: addEvent
+ // load, equiv, jsDump, diff: Attached later
+});
+
+/**
+ * @deprecated: Created for backwards compatibility with test runner that set the hook function
+ * into QUnit.{hook}, instead of invoking it and passing the hook function.
+ * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
+ * Doing this allows us to tell if the following methods have been overwritten on the actual
+ * QUnit object.
+ */
+extend( QUnit.constructor.prototype, {
+
+ // Logging callbacks; all receive a single argument with the listed properties
+ // run test/logs.html for any related changes
+ begin: registerLoggingCallback( "begin" ),
+
+ // done: { failed, passed, total, runtime }
+ done: registerLoggingCallback( "done" ),
+
+ // log: { result, actual, expected, message }
+ log: registerLoggingCallback( "log" ),
+
+ // testStart: { name }
+ testStart: registerLoggingCallback( "testStart" ),
+
+ // testDone: { name, failed, passed, total }
+ testDone: registerLoggingCallback( "testDone" ),
+
+ // moduleStart: { name }
+ moduleStart: registerLoggingCallback( "moduleStart" ),
+
+ // moduleDone: { name, failed, passed, total }
+ moduleDone: registerLoggingCallback( "moduleDone" )
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+ config.autorun = true;
+}
+
+QUnit.load = function() {
+ runLoggingCallbacks( "begin", QUnit, {} );
+
+ // Initialize the config, saving the execution queue
+ var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes,
+ urlConfigHtml = "",
+ oldconfig = extend( {}, config );
+
+ QUnit.init();
+ extend(config, oldconfig);
+
+ config.blocking = false;
+
+ len = config.urlConfig.length;
+
+ for ( i = 0; i < len; i++ ) {
+ val = config.urlConfig[i];
+ if ( typeof val === "string" ) {
+ val = {
+ id: val,
+ label: val,
+ tooltip: "[no tooltip available]"
+ };
+ }
+ config[ val.id ] = QUnit.urlParams[ val.id ];
+ urlConfigHtml += "<input id='qunit-urlconfig-" + val.id + "' name='" + val.id + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + " title='" + val.tooltip + "'><label for='qunit-urlconfig-" + val.id + "' title='" + val.tooltip + "'>" + val.label + "</label>";
+ }
+
+ // `userAgent` initialized at top of scope
+ userAgent = id( "qunit-userAgent" );
+ if ( userAgent ) {
+ userAgent.innerHTML = navigator.userAgent;
+ }
+
+ // `banner` initialized at top of scope
+ banner = id( "qunit-header" );
+ if ( banner ) {
+ banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
+ }
+
+ // `toolbar` initialized at top of scope
+ toolbar = id( "qunit-testrunner-toolbar" );
+ if ( toolbar ) {
+ // `filter` initialized at top of scope
+ filter = document.createElement( "input" );
+ filter.type = "checkbox";
+ filter.id = "qunit-filter-pass";
+
+ addEvent( filter, "click", function() {
+ var tmp,
+ ol = document.getElementById( "qunit-tests" );
+
+ if ( filter.checked ) {
+ ol.className = ol.className + " hidepass";
+ } else {
+ tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+ ol.className = tmp.replace( / hidepass /, " " );
+ }
+ if ( defined.sessionStorage ) {
+ if (filter.checked) {
+ sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
+ } else {
+ sessionStorage.removeItem( "qunit-filter-passed-tests" );
+ }
+ }
+ });
+
+ if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
+ filter.checked = true;
+ // `ol` initialized at top of scope
+ ol = document.getElementById( "qunit-tests" );
+ ol.className = ol.className + " hidepass";
+ }
+ toolbar.appendChild( filter );
+
+ // `label` initialized at top of scope
+ label = document.createElement( "label" );
+ label.setAttribute( "for", "qunit-filter-pass" );
+ label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." );
+ label.innerHTML = "Hide passed tests";
+ toolbar.appendChild( label );
+
+ urlConfigCheckboxes = document.createElement( 'span' );
+ urlConfigCheckboxes.innerHTML = urlConfigHtml;
+ addEvent( urlConfigCheckboxes, "change", function( event ) {
+ var params = {};
+ params[ event.target.name ] = event.target.checked ? true : undefined;
+ window.location = QUnit.url( params );
+ });
+ toolbar.appendChild( urlConfigCheckboxes );
+ }
+
+ // `main` initialized at top of scope
+ main = id( "qunit-fixture" );
+ if ( main ) {
+ config.fixture = main.innerHTML;
+ }
+
+ if ( config.autostart ) {
+ QUnit.start();
+ }
+};
+
+addEvent( window, "load", QUnit.load );
+
+// `onErrorFnPrev` initialized at top of scope
+// Preserve other handlers
+onErrorFnPrev = window.onerror;
+
+// Cover uncaught exceptions
+// Returning true will surpress the default browser handler,
+// returning false will let it run.
+window.onerror = function ( error, filePath, linerNr ) {
+ var ret = false;
+ if ( onErrorFnPrev ) {
+ ret = onErrorFnPrev( error, filePath, linerNr );
+ }
+
+ // Treat return value as window.onerror itself does,
+ // Only do our handling if not surpressed.
+ if ( ret !== true ) {
+ if ( QUnit.config.current ) {
+ if ( QUnit.config.current.ignoreGlobalErrors ) {
+ return true;
+ }
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
+ } else {
+ QUnit.test( "global failure", function() {
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
+ });
+ }
+ return false;
+ }
+
+ return ret;
+};
+
+function done() {
+ config.autorun = true;
+
+ // Log the last module results
+ if ( config.currentModule ) {
+ runLoggingCallbacks( "moduleDone", QUnit, {
+ name: config.currentModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ });
+ }
+
+ var i, key,
+ banner = id( "qunit-banner" ),
+ tests = id( "qunit-tests" ),
+ runtime = +new Date() - config.started,
+ passed = config.stats.all - config.stats.bad,
+ html = [
+ "Tests completed in ",
+ runtime,
+ " milliseconds.<br/>",
+ "<span class='passed'>",
+ passed,
+ "</span> tests of <span class='total'>",
+ config.stats.all,
+ "</span> passed, <span class='failed'>",
+ config.stats.bad,
+ "</span> failed."
+ ].join( "" );
+
+ if ( banner ) {
+ banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
+ }
+
+ if ( tests ) {
+ id( "qunit-testresult" ).innerHTML = html;
+ }
+
+ if ( config.altertitle && typeof document !== "undefined" && document.title ) {
+ // show ✖ for good, ✔ for bad suite result in title
+ // use escape sequences in case file gets loaded with non-utf-8-charset
+ document.title = [
+ ( config.stats.bad ? "\u2716" : "\u2714" ),
+ document.title.replace( /^[\u2714\u2716] /i, "" )
+ ].join( " " );
+ }
+
+ // clear own sessionStorage items if all tests passed
+ if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
+ // `key` & `i` initialized at top of scope
+ for ( i = 0; i < sessionStorage.length; i++ ) {
+ key = sessionStorage.key( i++ );
+ if ( key.indexOf( "qunit-test-" ) === 0 ) {
+ sessionStorage.removeItem( key );
+ }
+ }
+ }
+
+ runLoggingCallbacks( "done", QUnit, {
+ failed: config.stats.bad,
+ passed: passed,
+ total: config.stats.all,
+ runtime: runtime
+ });
+}
+
+/** @return Boolean: true if this test should be ran */
+function validTest( test ) {
+ var include,
+ filter = config.filter && config.filter.toLowerCase(),
+ module = config.module && config.module.toLowerCase(),
+ fullName = (test.module + ": " + test.testName).toLowerCase();
+
+ if ( config.testNumber ) {
+ return test.testNumber === config.testNumber;
+ }
+
+ if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
+ return false;
+ }
+
+ if ( !filter ) {
+ return true;
+ }
+
+ include = filter.charAt( 0 ) !== "!";
+ if ( !include ) {
+ filter = filter.slice( 1 );
+ }
+
+ // If the filter matches, we need to honour include
+ if ( fullName.indexOf( filter ) !== -1 ) {
+ return include;
+ }
+
+ // Otherwise, do the opposite
+ return !include;
+}
+
+// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
+// Later Safari and IE10 are supposed to support error.stack as well
+// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
+function extractStacktrace( e, offset ) {
+ offset = offset === undefined ? 3 : offset;
+
+ var stack, include, i, regex;
+
+ if ( e.stacktrace ) {
+ // Opera
+ return e.stacktrace.split( "\n" )[ offset + 3 ];
+ } else if ( e.stack ) {
+ // Firefox, Chrome
+ stack = e.stack.split( "\n" );
+ if (/^error$/i.test( stack[0] ) ) {
+ stack.shift();
+ }
+ if ( fileName ) {
+ include = [];
+ for ( i = offset; i < stack.length; i++ ) {
+ if ( stack[ i ].indexOf( fileName ) != -1 ) {
+ break;
+ }
+ include.push( stack[ i ] );
+ }
+ if ( include.length ) {
+ return include.join( "\n" );
+ }
+ }
+ return stack[ offset ];
+ } else if ( e.sourceURL ) {
+ // Safari, PhantomJS
+ // hopefully one day Safari provides actual stacktraces
+ // exclude useless self-reference for generated Error objects
+ if ( /qunit.js$/.test( e.sourceURL ) ) {
+ return;
+ }
+ // for actual exceptions, this is useful
+ return e.sourceURL + ":" + e.line;
+ }
+}
+function sourceFromStacktrace( offset ) {
+ try {
+ throw new Error();
+ } catch ( e ) {
+ return extractStacktrace( e, offset );
+ }
+}
+
+function escapeInnerText( s ) {
+ if ( !s ) {
+ return "";
+ }
+ s = s + "";
+ return s.replace( /[\&<>]/g, function( s ) {
+ switch( s ) {
+ case "&": return "&";
+ case "<": return "<";
+ case ">": return ">";
+ default: return s;
+ }
+ });
+}
+
+function synchronize( callback, last ) {
+ config.queue.push( callback );
+
+ if ( config.autorun && !config.blocking ) {
+ process( last );
+ }
+}
+
+function process( last ) {
+ function next() {
+ process( last );
+ }
+ var start = new Date().getTime();
+ config.depth = config.depth ? config.depth + 1 : 1;
+
+ while ( config.queue.length && !config.blocking ) {
+ if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
+ config.queue.shift()();
+ } else {
+ window.setTimeout( next, 13 );
+ break;
+ }
+ }
+ config.depth--;
+ if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
+ done();
+ }
+}
+
+function saveGlobal() {
+ config.pollution = [];
+
+ if ( config.noglobals ) {
+ for ( var key in window ) {
+ // in Opera sometimes DOM element ids show up here, ignore them
+ if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
+ continue;
+ }
+ config.pollution.push( key );
+ }
+ }
+}
+
+function checkPollution( name ) {
+ var newGlobals,
+ deletedGlobals,
+ old = config.pollution;
+
+ saveGlobal();
+
+ newGlobals = diff( config.pollution, old );
+ if ( newGlobals.length > 0 ) {
+ QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
+ }
+
+ deletedGlobals = diff( old, config.pollution );
+ if ( deletedGlobals.length > 0 ) {
+ QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
+ }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+ var i, j,
+ result = a.slice();
+
+ for ( i = 0; i < result.length; i++ ) {
+ for ( j = 0; j < b.length; j++ ) {
+ if ( result[i] === b[j] ) {
+ result.splice( i, 1 );
+ i--;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+function extend( a, b ) {
+ for ( var prop in b ) {
+ if ( b[ prop ] === undefined ) {
+ delete a[ prop ];
+
+ // Avoid "Member not found" error in IE8 caused by setting window.constructor
+ } else if ( prop !== "constructor" || a !== window ) {
+ a[ prop ] = b[ prop ];
+ }
+ }
+
+ return a;
+}
+
+function addEvent( elem, type, fn ) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, fn );
+ } else {
+ fn();
+ }
+}
+
+function id( name ) {
+ return !!( typeof document !== "undefined" && document && document.getElementById ) &&
+ document.getElementById( name );
+}
+
+function registerLoggingCallback( key ) {
+ return function( callback ) {
+ config[key].push( callback );
+ };
+}
+
+// Supports deprecated method of completely overwriting logging callbacks
+function runLoggingCallbacks( key, scope, args ) {
+ //debugger;
+ var i, callbacks;
+ if ( QUnit.hasOwnProperty( key ) ) {
+ QUnit[ key ].call(scope, args );
+ } else {
+ callbacks = config[ key ];
+ for ( i = 0; i < callbacks.length; i++ ) {
+ callbacks[ i ].call( scope, args );
+ }
+ }
+}
+
+// Test for equality any JavaScript type.
+// Author: Philippe Rathé <prathe@gmail.com>
+QUnit.equiv = (function() {
+
+ // Call the o related callback with the given arguments.
+ function bindCallbacks( o, callbacks, args ) {
+ var prop = QUnit.objectType( o );
+ if ( prop ) {
+ if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
+ return callbacks[ prop ].apply( callbacks, args );
+ } else {
+ return callbacks[ prop ]; // or undefined
+ }
+ }
+ }
+
+ // the real equiv function
+ var innerEquiv,
+ // stack to decide between skip/abort functions
+ callers = [],
+ // stack to avoiding loops from circular referencing
+ parents = [],
+
+ getProto = Object.getPrototypeOf || function ( obj ) {
+ return obj.__proto__;
+ },
+ callbacks = (function () {
+
+ // for string, boolean, number and null
+ function useStrictEquality( b, a ) {
+ if ( b instanceof a.constructor || a instanceof b.constructor ) {
+ // to catch short annotaion VS 'new' annotation of a
+ // declaration
+ // e.g. var i = 1;
+ // var j = new Number(1);
+ return a == b;
+ } else {
+ return a === b;
+ }
+ }
+
+ return {
+ "string": useStrictEquality,
+ "boolean": useStrictEquality,
+ "number": useStrictEquality,
+ "null": useStrictEquality,
+ "undefined": useStrictEquality,
+
+ "nan": function( b ) {
+ return isNaN( b );
+ },
+
+ "date": function( b, a ) {
+ return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
+ },
+
+ "regexp": function( b, a ) {
+ return QUnit.objectType( b ) === "regexp" &&
+ // the regex itself
+ a.source === b.source &&
+ // and its modifers
+ a.global === b.global &&
+ // (gmi) ...
+ a.ignoreCase === b.ignoreCase &&
+ a.multiline === b.multiline;
+ },
+
+ // - skip when the property is a method of an instance (OOP)
+ // - abort otherwise,
+ // initial === would have catch identical references anyway
+ "function": function() {
+ var caller = callers[callers.length - 1];
+ return caller !== Object && typeof caller !== "undefined";
+ },
+
+ "array": function( b, a ) {
+ var i, j, len, loop;
+
+ // b could be an object literal here
+ if ( QUnit.objectType( b ) !== "array" ) {
+ return false;
+ }
+
+ len = a.length;
+ if ( len !== b.length ) {
+ // safe and faster
+ return false;
+ }
+
+ // track reference to avoid circular references
+ parents.push( a );
+ for ( i = 0; i < len; i++ ) {
+ loop = false;
+ for ( j = 0; j < parents.length; j++ ) {
+ if ( parents[j] === a[i] ) {
+ loop = true;// dont rewalk array
+ }
+ }
+ if ( !loop && !innerEquiv(a[i], b[i]) ) {
+ parents.pop();
+ return false;
+ }
+ }
+ parents.pop();
+ return true;
+ },
+
+ "object": function( b, a ) {
+ var i, j, loop,
+ // Default to true
+ eq = true,
+ aProperties = [],
+ bProperties = [];
+
+ // comparing constructors is more strict than using
+ // instanceof
+ if ( a.constructor !== b.constructor ) {
+ // Allow objects with no prototype to be equivalent to
+ // objects with Object as their constructor.
+ if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
+ ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
+ return false;
+ }
+ }
+
+ // stack constructor before traversing properties
+ callers.push( a.constructor );
+ // track reference to avoid circular references
+ parents.push( a );
+
+ for ( i in a ) { // be strict: don't ensures hasOwnProperty
+ // and go deep
+ loop = false;
+ for ( j = 0; j < parents.length; j++ ) {
+ if ( parents[j] === a[i] ) {
+ // don't go down the same path twice
+ loop = true;
+ }
+ }
+ aProperties.push(i); // collect a's properties
+
+ if (!loop && !innerEquiv( a[i], b[i] ) ) {
+ eq = false;
+ break;
+ }
+ }
+
+ callers.pop(); // unstack, we are done
+ parents.pop();
+
+ for ( i in b ) {
+ bProperties.push( i ); // collect b's properties
+ }
+
+ // Ensures identical properties name
+ return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
+ }
+ };
+ }());
+
+ innerEquiv = function() { // can take multiple arguments
+ var args = [].slice.apply( arguments );
+ if ( args.length < 2 ) {
+ return true; // end transition
+ }
+
+ return (function( a, b ) {
+ if ( a === b ) {
+ return true; // catch the most you can
+ } else if ( a === null || b === null || typeof a === "undefined" ||
+ typeof b === "undefined" ||
+ QUnit.objectType(a) !== QUnit.objectType(b) ) {
+ return false; // don't lose time with error prone cases
+ } else {
+ return bindCallbacks(a, callbacks, [ b, a ]);
+ }
+
+ // apply transition with (1..n) arguments
+ }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
+ };
+
+ return innerEquiv;
+}());
+
+/**
+ * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
+ * http://flesler.blogspot.com Licensed under BSD
+ * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
+ *
+ * @projectDescription Advanced and extensible data dumping for Javascript.
+ * @version 1.0.0
+ * @author Ariel Flesler
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
+ */
+QUnit.jsDump = (function() {
+ function quote( str ) {
+ return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
+ }
+ function literal( o ) {
+ return o + "";
+ }
+ function join( pre, arr, post ) {
+ var s = jsDump.separator(),
+ base = jsDump.indent(),
+ inner = jsDump.indent(1);
+ if ( arr.join ) {
+ arr = arr.join( "," + s + inner );
+ }
+ if ( !arr ) {
+ return pre + post;
+ }
+ return [ pre, inner + arr, base + post ].join(s);
+ }
+ function array( arr, stack ) {
+ var i = arr.length, ret = new Array(i);
+ this.up();
+ while ( i-- ) {
+ ret[i] = this.parse( arr[i] , undefined , stack);
+ }
+ this.down();
+ return join( "[", ret, "]" );
+ }
+
+ var reName = /^function (\w+)/,
+ jsDump = {
+ parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
+ stack = stack || [ ];
+ var inStack, res,
+ parser = this.parsers[ type || this.typeOf(obj) ];
+
+ type = typeof parser;
+ inStack = inArray( obj, stack );
+
+ if ( inStack != -1 ) {
+ return "recursion(" + (inStack - stack.length) + ")";
+ }
+ //else
+ if ( type == "function" ) {
+ stack.push( obj );
+ res = parser.call( this, obj, stack );
+ stack.pop();
+ return res;
+ }
+ // else
+ return ( type == "string" ) ? parser : this.parsers.error;
+ },
+ typeOf: function( obj ) {
+ var type;
+ if ( obj === null ) {
+ type = "null";
+ } else if ( typeof obj === "undefined" ) {
+ type = "undefined";
+ } else if ( QUnit.is( "regexp", obj) ) {
+ type = "regexp";
+ } else if ( QUnit.is( "date", obj) ) {
+ type = "date";
+ } else if ( QUnit.is( "function", obj) ) {
+ type = "function";
+ } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
+ type = "window";
+ } else if ( obj.nodeType === 9 ) {
+ type = "document";
+ } else if ( obj.nodeType ) {
+ type = "node";
+ } else if (
+ // native arrays
+ toString.call( obj ) === "[object Array]" ||
+ // NodeList objects
+ ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
+ ) {
+ type = "array";
+ } else {
+ type = typeof obj;
+ }
+ return type;
+ },
+ separator: function() {
+ return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? " " : " ";
+ },
+ indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+ if ( !this.multiline ) {
+ return "";
+ }
+ var chr = this.indentChar;
+ if ( this.HTML ) {
+ chr = chr.replace( /\t/g, " " ).replace( / /g, " " );
+ }
+ return new Array( this._depth_ + (extra||0) ).join(chr);
+ },
+ up: function( a ) {
+ this._depth_ += a || 1;
+ },
+ down: function( a ) {
+ this._depth_ -= a || 1;
+ },
+ setParser: function( name, parser ) {
+ this.parsers[name] = parser;
+ },
+ // The next 3 are exposed so you can use them
+ quote: quote,
+ literal: literal,
+ join: join,
+ //
+ _depth_: 1,
+ // This is the list of parsers, to modify them, use jsDump.setParser
+ parsers: {
+ window: "[Window]",
+ document: "[Document]",
+ error: "[ERROR]", //when no parser is found, shouldn"t happen
+ unknown: "[Unknown]",
+ "null": "null",
+ "undefined": "undefined",
+ "function": function( fn ) {
+ var ret = "function",
+ name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
+
+ if ( name ) {
+ ret += " " + name;
+ }
+ ret += "( ";
+
+ ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
+ return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
+ },
+ array: array,
+ nodelist: array,
+ "arguments": array,
+ object: function( map, stack ) {
+ var ret = [ ], keys, key, val, i;
+ QUnit.jsDump.up();
+ if ( Object.keys ) {
+ keys = Object.keys( map );
+ } else {
+ keys = [];
+ for ( key in map ) {
+ keys.push( key );
+ }
+ }
+ keys.sort();
+ for ( i = 0; i < keys.length; i++ ) {
+ key = keys[ i ];
+ val = map[ key ];
+ ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
+ }
+ QUnit.jsDump.down();
+ return join( "{", ret, "}" );
+ },
+ node: function( node ) {
+ var a, val,
+ open = QUnit.jsDump.HTML ? "<" : "<",
+ close = QUnit.jsDump.HTML ? ">" : ">",
+ tag = node.nodeName.toLowerCase(),
+ ret = open + tag;
+
+ for ( a in QUnit.jsDump.DOMAttrs ) {
+ val = node[ QUnit.jsDump.DOMAttrs[a] ];
+ if ( val ) {
+ ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
+ }
+ }
+ return ret + close + open + "/" + tag + close;
+ },
+ functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
+ var args,
+ l = fn.length;
+
+ if ( !l ) {
+ return "";
+ }
+
+ args = new Array(l);
+ while ( l-- ) {
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
+ }
+ return " " + args.join( ", " ) + " ";
+ },
+ key: quote, //object calls it internally, the key part of an item in a map
+ functionCode: "[code]", //function calls it internally, it's the content of the function
+ attribute: quote, //node calls it internally, it's an html attribute value
+ string: quote,
+ date: quote,
+ regexp: literal, //regex
+ number: literal,
+ "boolean": literal
+ },
+ DOMAttrs: {
+ //attributes to dump from nodes, name=>realName
+ id: "id",
+ name: "name",
+ "class": "className"
+ },
+ HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
+ indentChar: " ",//indentation unit
+ multiline: true //if true, items in a collection, are separated by a \n, else just a space.
+ };
+
+ return jsDump;
+}());
+
+// from Sizzle.js
+function getText( elems ) {
+ var i, elem,
+ ret = "";
+
+ for ( i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+}
+
+// from jquery.js
+function inArray( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+/*
+ * Javascript Diff Algorithm
+ * By John Resig (http://ejohn.org/)
+ * Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ * http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ */
+QUnit.diff = (function() {
+ function diff( o, n ) {
+ var i,
+ ns = {},
+ os = {};
+
+ for ( i = 0; i < n.length; i++ ) {
+ if ( ns[ n[i] ] == null ) {
+ ns[ n[i] ] = {
+ rows: [],
+ o: null
+ };
+ }
+ ns[ n[i] ].rows.push( i );
+ }
+
+ for ( i = 0; i < o.length; i++ ) {
+ if ( os[ o[i] ] == null ) {
+ os[ o[i] ] = {
+ rows: [],
+ n: null
+ };
+ }
+ os[ o[i] ].rows.push( i );
+ }
+
+ for ( i in ns ) {
+ if ( !hasOwn.call( ns, i ) ) {
+ continue;
+ }
+ if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
+ n[ ns[i].rows[0] ] = {
+ text: n[ ns[i].rows[0] ],
+ row: os[i].rows[0]
+ };
+ o[ os[i].rows[0] ] = {
+ text: o[ os[i].rows[0] ],
+ row: ns[i].rows[0]
+ };
+ }
+ }
+
+ for ( i = 0; i < n.length - 1; i++ ) {
+ if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
+ n[ i + 1 ] == o[ n[i].row + 1 ] ) {
+
+ n[ i + 1 ] = {
+ text: n[ i + 1 ],
+ row: n[i].row + 1
+ };
+ o[ n[i].row + 1 ] = {
+ text: o[ n[i].row + 1 ],
+ row: i + 1
+ };
+ }
+ }
+
+ for ( i = n.length - 1; i > 0; i-- ) {
+ if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
+ n[ i - 1 ] == o[ n[i].row - 1 ]) {
+
+ n[ i - 1 ] = {
+ text: n[ i - 1 ],
+ row: n[i].row - 1
+ };
+ o[ n[i].row - 1 ] = {
+ text: o[ n[i].row - 1 ],
+ row: i - 1
+ };
+ }
+ }
+
+ return {
+ o: o,
+ n: n
+ };
+ }
+
+ return function( o, n ) {
+ o = o.replace( /\s+$/, "" );
+ n = n.replace( /\s+$/, "" );
+
+ var i, pre,
+ str = "",
+ out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
+ oSpace = o.match(/\s+/g),
+ nSpace = n.match(/\s+/g);
+
+ if ( oSpace == null ) {
+ oSpace = [ " " ];
+ }
+ else {
+ oSpace.push( " " );
+ }
+
+ if ( nSpace == null ) {
+ nSpace = [ " " ];
+ }
+ else {
+ nSpace.push( " " );
+ }
+
+ if ( out.n.length === 0 ) {
+ for ( i = 0; i < out.o.length; i++ ) {
+ str += "<del>" + out.o[i] + oSpace[i] + "</del>";
+ }
+ }
+ else {
+ if ( out.n[0].text == null ) {
+ for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
+ str += "<del>" + out.o[n] + oSpace[n] + "</del>";
+ }
+ }
+
+ for ( i = 0; i < out.n.length; i++ ) {
+ if (out.n[i].text == null) {
+ str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
+ }
+ else {
+ // `pre` initialized at top of scope
+ pre = "";
+
+ for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
+ pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
+ }
+ str += " " + out.n[i].text + nSpace[i] + pre;
+ }
+ }
+ }
+
+ return str;
+ };
+}());
+
+// for CommonJS enviroments, export everything
+if ( typeof exports !== "undefined" ) {
+ extend(exports, QUnit);
+}
+
+// get at whatever the global object is, like window in browsers
+}( (function() {return this;}.call()) ));
--- /dev/null
+/**
+* Wait until the test condition is true or a timeout occurs. Useful for waiting
+* on a server response or for a ui change (fadeIn, etc.) to occur.
+*
+* @param testFx javascript condition that evaluates to a boolean,
+* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
+* as a callback function.
+* @param onReady what to do when testFx condition is fulfilled,
+* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
+* as a callback function.
+* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
+*/
+function waitFor(testFx, onReady, timeOutMillis) {
+ var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timout is 3s
+ start = new Date().getTime(),
+ condition = false,
+ interval = setInterval(function() {
+ if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
+ // If not time-out yet and condition not yet fulfilled
+ condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
+ } else {
+ if(!condition) {
+ // If condition still not fulfilled (timeout but condition is 'false')
+ console.log("'waitFor()' timeout");
+ phantom.exit(1);
+ } else {
+ // Condition fulfilled (timeout and/or condition is 'true')
+ typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
+ clearInterval(interval); //< Stop this interval
+ }
+ }
+ }, 100); //< repeat check every 250ms
+};
+
+
+if (phantom.args.length === 0 || phantom.args.length > 2) {
+ console.log('Usage: run-qunit.js URL');
+ phantom.exit();
+}
+
+var page = new WebPage();
+
+// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
+page.onConsoleMessage = function(msg) {
+ console.log(msg);
+};
+
+page.open(phantom.args[0], function(status){
+ if (status !== "success") {
+ console.log("Unable to access network");
+ phantom.exit();
+ } else {
+ waitFor(function(){
+ return page.evaluate(function(){
+ var el = document.getElementById('qunit-testresult');
+ if (el && el.innerText.match('completed')) {
+ return true;
+ }
+ return false;
+ });
+ }, function(){
+ var failedNum = page.evaluate(function(){
+ var el = document.getElementById('qunit-testresult');
+ try {
+ return el.getElementsByClassName('failed')[0].innerHTML;
+ } catch (e) { }
+ return 10000;
+ });
+ phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0);
+ });
+ }
+});
\ No newline at end of file
<?php
register_nav_menus(array(
- 'top-bar' => 'Site Navigation'
+ 'top-bar' => 'Site Navigation',
+ 'mobile-menu' => 'Off Canvas',
+ 'alt-menu' => "I'd Like To...",
+
));
+if ( ! function_exists( 'glm_theme_members_only' ) ) {
+ function glm_theme_members_only($location) {
+ echo '<ul class="members-only">';
+ echo glm_theme_top_bar( $location );
+ echo '</ul>';
+ }
+}
/**
* Top Bar
*/
if ( ! function_exists( 'glm_theme_top_bar' ) ) {
- function glm_theme_top_bar() {
+ function glm_theme_top_bar($location) {
wp_nav_menu(array(
'container' => false, // remove nav container
'container_class' => '', // class of container
'menu' => '', // menu name
'menu_class' => '', // adding custom nav class
- 'theme_location' => 'top-bar', // where it's located in the theme
+ 'theme_location' => $location, // where it's located in the theme
'before' => '', // before each link <a>
'after' => '', // after each link </a>
'link_before' => '', // before each link text
'link_after' => '', // after each link text
- 'depth' => 3, // limit the depth of the nav
+ 'depth' => 2, // limit the depth of the nav
'fallback_cb' => false, // fallback function (see below)
'walker' => new Glm_Theme_Top_Bar_Walker()
));
* Mobile off-canvas
*/
if ( ! function_exists( 'glm_theme_mobile_off_canvas' ) ) {
- function glm_theme_mobile_off_canvas() {
+ function glm_theme_mobile_off_canvas($location) {
echo '<div class="left-off-canvas-list">';
echo '<ul><li class="page_item"><a href="' . get_bloginfo('url') . '">Home</a></li>';
+ echo glm_get_mobile_nav_menu( $location );
echo glm_get_mobile_nav_menu( 'top-bar' );
echo '</ul></div>';
}
}
-
+if ( ! function_exists( 'glm_theme_additional_off_canvas' ) ) {
+ function glm_theme_additional_off_canvas($location) {
+ echo glm_get_mobile_nav_menu( $location );
+ }
+}
function glm_get_mobile_nav_menu( $theme_location )
{
$menu = wp_nav_menu(array(
--- /dev/null
+<?php
+/*
+Template Name: GLM Members Only Template
+*/
+get_template_part('index');
+?>
\ No newline at end of file
{
- "name": "resortTownship",
+ "name": "meetingsmichigan",
"description": "Gaslight Media",
"version": "0.0.1",
"devDependencies": {
"grunt-contrib-uglify": "~0.7.0",
"grunt-contrib-concat": "~0.5.0",
"grunt-contrib-copy": "~0.7.0"
+ },
+ "dependencies": {
+ "request": "~2.81.0",
+ "node-sass": "~4.5.3"
}
-}
\ No newline at end of file
+}
-<?php $args = array( 'numberposts' => 4);?>
-<div id="home-feed-posts">
-<?php
-$lastposts = get_posts( $args );
- $count = 0;
-foreach($lastposts as $post) : setup_postdata($post); ?>
- <div class="home-feed-post">
- <div class="row">
- <?php if (has_post_thumbnail( $post->ID )) { ?>
- <div class="small-11 small-centered columns text-center home-feed-post-image">
- <?php echo get_the_post_thumbnail($post->ID, array(190, 190), array('class' => 'blog-excerpt-img-wrap')); ?>
+<?php $args = array( 'numberposts' => 1);?>
+<div id="home-feed-posts" class="row">
+ <?php $lastposts = get_posts( $args );
+ $count = 0; ?>
+ <ul class="small-12 columns">
+ <?php foreach($lastposts as $post) : setup_postdata($post); ?>
+ <div class="home-feed-post grid-block">
+ <div class="row">
+ <?php if (has_post_thumbnail( $post->ID )) { ?>
+ <!-- <?php $url = get_the_post_thumbnail_url($post->ID, 'glm-blog-image'); ?> -->
+ <!-- <div class="small-12 medium-2 home-feed-post-image columns" style="bacground: url(<?php //echo $url; ?>)"> -->
+ <div class="small-12 medium-6 home-feed-post-image columns">
+
+ <?php echo get_the_post_thumbnail($post->ID, 'glm-blog-image', array('class' => 'blog-excerpt-img-wrap')); ?>
+ </div>
+ <div class="small-12 medium-6 columns home-feed-post-content">
+ <?php } else { ?>
+ <div class="small-12 columns home-feed-post-content">
+ <?php } ?>
+
+ <h2 class="title-posts" href="<?php the_permalink(); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
+
+ <div class="post-excerpt excerpt<?php echo $count ?>"><?php echo the_advanced_excerpt('length=265&length_type=characters&no_custom=1&ellipsis=%26hellip;&exclude_tags=a,img,p,strong,h1,h2,h3,hr,div'); ?>
+ </div>
+ <div class="read-more">
+ <a href="<?php echo the_permalink(); ?>" class="post-link">Read More</a>
+ </div>
</div>
- <div class="small-12 medium-12 columns home-feed-post-content">
- <?php } else { ?>
- <div class="small-12 columns home-feed-post-content">
- <?php } ?>
- <span class="meta date"><?php the_time('F j, Y') ?></span>
- <h2 class="title-posts" href="<?php the_permalink(); ?>"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
-
- <div class="excerpt<?php echo $count ?>"><?php echo the_advanced_excerpt('length=265&length_type=characters&no_custom=1&ellipsis=%26hellip;&exclude_tags=a,img,p,strong,h1,h2,h3,hr,div'); ?></div>
</div>
- </div>
- </div>
- <hr>
+ </div>
<?php $count++; ?>
-<?php endforeach; ?>
+ <?php endforeach; ?>
+ </ul>
</div>
\ No newline at end of file
<article id="<?php the_ID()?>" <?php post_class()?>>
<header class="entry-header">
- <h1 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h1>
+ <h1 class="entry-title"><?php the_title();?></h1>
<?php if ( has_post_thumbnail() ):?>
<?php if (get_post_type( $post ) != "ai1ec_event") { ?>
<div class="featured-image-wrap"><?php the_post_thumbnail("large"); ?></div>
<?php } ?>
<?php endif; ?>
<span class="meta date">Posted on <?php the_time('F jS, Y') ?></span>
+ <?php get_template_part('parts/share-this'); ?>
</header>
<?php the_content(); ?>
</article>
\ No newline at end of file
<?php if(function_exists('fetch_all_glm_blocks')):?>
<?php $blocks = fetch_all_glm_blocks();?>
-<div class="blocks">
+<ul class="blocks small-block-grid 1 medium-block-grid-1 large-block-grid-2">
+ <?php $count = 1; ?>
<?php foreach ($blocks as $block):?>
- <div class="text-center small-12 medium-4 columns large-text-left blocks">
+ <li id="block-<?php echo $count; ?>" class="small-12 medium-6 block" data-equalizer-watch>
+
+ <!-- link if url for image is set in admin-->
<?php if($block->url):?>
<a href="<?php echo $block->url;?>"<?php if($block->externalUrl){echo ' target="_blank"';}?>>
<?php endif;?>
- <?php echo get_the_post_thumbnail($block->ID, 'glm-block-image');?>
- <?php if($block->url):?>
- </a>
- <?php endif;?>
+
+ <!-- block image-->
+ <?php $size = ($count == 1 | $count == 4) ? 'glm-block-large' : 'glm-block-small'; ?>
+ <?php echo get_the_post_thumbnail($block->ID, $size);?>
+
+ <!-- end link wrapper around image -->
+ <?php if($block->url):?> </a> <?php endif;?>
+
+ <!-- link wrapper for block title-->
<?php if($block->url):?>
<a class="title-posts" href="<?php echo $block->url;?>"<?php if($block->externalUrl){echo ' target="_blank"';}?>>
<?php endif;?>
- <h1><?php echo $block->post_title;?></h1>
- <?php if($block->url):?>
- </a>
- <?php endif;?>
- <p><?php echo apply_filters('the_content', $block->post_content) . $block->post_excerpt;?></p>
- <?php if($block->url):?>
- <a class="blocks-readmore" href="<?php echo $block->url;?>"></a>
- <?php endif;?>
- </div>
+
+ <!-- block title-->
+ <h1 class="block-title"><?php echo $block->post_title;?></h1>
+
+ <!-- end link wrapper around block title-->
+ <?php if($block->url):?> </a> <?php endif;?>
+
+ <div class="block-overlay">
+ <!-- block content-->
+ <div class="block-overlay-center">
+ <!-- block title-->
+ <h1 class="block-title-center"><?php echo $block->post_title;?></h1>
+ <div class="block-content">
+ <?php echo apply_filters('the_content', $block->post_content) . $block->post_excerpt;?>
+ </div>
+ <?php if($block->url):?>
+ <a class="blocks-readmore" href="<?php echo $block->url;?>">Find Out More</a>
+ <?php endif;?>
+ </div>
+ </div>
+ </li>
+
+ <?php $count++; ?>
<?php endforeach;?>
-</div>
+</ul>
<!--<div class="separator"><hr></div>-->
<?php endif;?>
--- /dev/null
+<div class="wp_login_error">
+ <p id="glm-member-login-notification">
+ <?php if( isset( $_GET['login'] ) && $_GET['login'] == 'failed' ) { ?>
+ The information you entered is incorrect. Please try again.
+ <?php }
+ else if( isset( $_GET['login'] ) && $_GET['login'] == 'empty' ) { ?>
+ Please enter both username and password.
+ <?php } else { ?>
+ <?php $glmAssociateConfig = apply_filters('glm_associate_config', null);
+ $supportEmail = $glmAssociateConfig['settings']['members_only_support_email'];
+ $supportPhone = $glmAssociateConfig['settings']['members_only_support_phone'];
+ $glmTerm = $glmAssociateConfig['terms']['term_member'];
+ ?>
+ Please log in with your <?php echo $glmTerm; ?> username and password.
+
+ <?php if ($supportEmail || $supportPhone) {
+ echo "<br>If you need assistance, ";
+ if ($supportEmail) {
+ echo "email (".$supportEmail.")";
+ if ($supportPhone) {
+ echo " or ";
+ }
+ }
+ if ($supportPhone) {
+ echo "call (".$supportPhone.")";
+ }
+ }
+ ?>
+ <?php } ?>
+ </p>
+ </div>
+ <div id='glm-member-login-form'>
+ <?php
+ update_option('glm_members_database_frontend_login_request', 'true');
+ $args = array(
+ 'echo' => false,
+ 'form_id' => 'glm_login_form'
+ );
+ $loginForm = wp_login_form($args);
+ $captcha = apply_filters('cptch_display', '', 'glm_login_form');
+ $form = str_replace( '<p class="login-remember">', $captcha . '<p class="login-remember">', $loginForm );
+ echo $form;
+ ?>
+</div>
+<?php get_template_part('parts/glm-members-only-lostpass-form'); ?>
--- /dev/null
+<a id="glm-member-password-lost-link" title="Lost Password">Lost Password?</a>
+ <div id="glm-member-password-lost-form">
+
+ <p>
+ <?php
+ _e(
+ "Enter your email address and we'll send you a link you can use to pick a new password.",
+ 'personalize_login'
+ );
+ ?>
+ </p>
+
+ <form id="lostpasswordform" action="<?php echo wp_lostpassword_url(); ?>" method="post">
+ <p class="form-row">
+ <label for="user_login"><?php _e( 'Email', 'personalize-login' ); ?>
+ <input type="text" name="user_login" id="user_login">
+ </p>
+
+ <p class="lostpassword-submit">
+ <input type="submit" name="submit" class="lostpassword-button"
+ value="<?php _e( 'Reset Password', 'personalize-login' ); ?>"/>
+ </p>
+ </form>
+ </div>
\ No newline at end of file
--- /dev/null
+<div id="glm-member-front-header" class="small-12 columns">
+ <?php if(function_exists('bcn_display') && !is_front_page()) {
+ echo "<div class='breadcrumbs small-12 medium-6 columns'>";
+ echo '<span class="st_sharethis" st_title="'. get_the_title().'" st_url="'. get_the_permalink() .'"></span>';
+ bcn_display();
+ echo "</div>";
+ } ?>
+ <div class="small-12 medium-6 columns members-only-buttons">
+ <a class='button glm-button' href="<?php echo wp_logout_url( home_url() ); ?>">Logout</a>
+ <?php if (current_user_can("glm_members_member")) { ?>
+ <?php $glmAssociateTerms = apply_filters('glm_associate_terms', "");?>
+ <?php apply_filters('glm_associate_terms', $glmAssociateTerms);?>
+ <a class='button glm-button' href='<?php echo get_admin_url(); ?>'>Enter <?php echo $glmAssociateTerms['term_member_cap']; ?> Admin Area</a>
+ <?php } ?>
+ </div>
+</div>
\ No newline at end of file
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><?php wp_title(); ?></title>
<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri() ; ?>/css/app.css">
- <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,400italic,700' rel='stylesheet' type='text/css'>
+ <link rel="shortcut icon" href="<?php echo get_stylesheet_directory_uri(); ?>/favicon.ico">
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic,700' rel='stylesheet' type='text/css'>
<?php wp_head(); ?>
</head>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 212 220" style="enable-background:new 0 0 212 220;" xml:space="preserve" width="350" height="360">
+<style type="text/css">
+ .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#6C9B40;}
+ .st1{display:none;}
+ .st2{display:inline;}
+ .st3{fill-rule:evenodd;clip-rule:evenodd;fill:#5170B3;}
+ .st4{fill:#FFFFFF;}
+ .st5{fill:none;}
+</style>
+<g id="State">
+ <g>
+ <path id="southeast-michigan" data-region="southeast-michigan" class="hover-region st0 sm-rect" d="M149.6,173.7v42.5c7.8-0.1,15.6-0.3,23-0.6c1-0.9,0.9-2.8,2-3.6c0-0.3-0.1-0.3-0.1-0.6
+ c0.9-0.2,1.7-1.2,1.2-2.2c0.8-1.2,2.4-1.6,2.7-3.4c0.8-0.7,1.8-1.7,2-2.8c0.2-0.9-0.3-1.8-0.2-2.8c0.1-1.1,0.8-3.2,1.1-4.5
+ c0.2-0.8,0.6-2.1,1-2.7c1.3-1.7,4.2-1.5,5.2-3.1c0.6-0.9,1.1-2.4,1.2-3.3c0.1-0.6-0.3-1.2-0.2-1.9c0.2-1.7,2.2-2.7,2.2-4.7
+ c0-0.3-0.3-0.7-0.2-0.9c0.1-0.5,1-0.9,1.2-1c1.2-0.9,3.2-1.3,4.5-0.1c0.3,0.3,0.3,0.8,0.7,0.9c0.7,0.2,1.8-0.3,2.2-0.3
+ c0.2-1.8,1.2-3.2,1.4-4.8H149.6z"/>
+ </g>
+ <g>
+ <path id="mid-michigan" data-region="mid-michigan" class="hover-region st0 mm-rect" d="M87.3,151.5c0.6,0.1,1.1-0.6,1.4-0.1c-1.9,1.3,0.1,4,0.7,5.6c0.6,0.2,1.5-0.5,1.7,0.1c-1.9,1-0.5,2.4,0.1,3.9
+ c0.9,2.6,2,6.2,2.2,9c0.1,0.9,0,1.8,0,2.7h107.2c0-0.1,0-0.2,0-0.3c-0.1-0.9,0-1.3,0.1-2.1c0.1-0.7-0.2-1.5,0-2.3
+ c0.2-1.1,1.4-2.2,1.4-3.2c0-0.8-0.6-2.4-1-3.1c-0.2-0.4-0.7-0.4-0.8-0.8c-0.1-0.4,0.1-0.8,0-1.2c-0.1-0.9-0.7-1.6-0.8-2.3
+ c-0.3-1.6-0.6-3.3-0.8-5c-0.5-4.2-1.7-8.6-2-12.8c-0.2-3.6-0.9-7.5-2.8-10.1c-0.6-1.6-1.1-3.3-2.5-4.2c-0.1-0.1-0.5,0-0.7-0.1
+ c-0.3-0.8-1-1.9-1.6-0.7c-0.1-1.1-1.8-0.6-2.1-1.6c-1.7-0.3-2.2,0.7-3.4,1c-0.2,2.4-3.4,1.7-4.7,3c-0.9-0.6-1.7,0.1-2.6,0.3
+ c-0.2,1.2-0.8,1.9-1.7,2.3c-0.3,1.9-2,2.4-2.2,4.4c-1.1,0.2-0.9,1.7-2,2c0.3,1.7-1,2.4-2.3,2.4c-1.5,1.4-2.2,3.6-4.1,4.6
+ c-0.7-1-1.7-2.3-3.6-1.7c-0.2-0.1-0.1-0.5-0.3-0.6c-0.4,0-0.5,0.2-0.9,0.1c-0.4-0.2-0.6-0.5-0.7-0.9c-0.8-0.3-1.5-0.6-1.8-1.2
+ c-0.7-1.4-0.3-2.5,0-3.4c0.5-1.8,0.2-4,0.5-5.6h-71c0.3,1.3,0.5,2.7,0.5,4.2c0.1,0.3,0.5,0.3,0.5,0.7c-0.4,0.6-0.9,1.1-0.3,1.9
+ c-1.1,1.5-2.6,3-3,4.7c-0.6,2.3,1.7,4.3,2.1,6.5C86.4,149.2,86.4,150.4,87.3,151.5z"/>
+ </g>
+ <g>
+ <g>
+ <path id="northern-michigan" data-region="northern-michigan" class="hover-region st0 nm-rect" d="M85.9,125.1c0.3,0.7-0.4,0.9-0.9,1c0.4,0.8,0.7,1.6,1,2.5h71.5c0.3-0.8,0.9-1.5,2.1-1.8
+ c0.5-0.1,0.9,0.1,1.5,0c1.7-0.2,2.5-1.2,3.3-2c0.6-0.6,1.5-0.9,1.9-1.6c0.8-1.5,0.6-3.5,1.1-5.4c0.5-1.4,1.1-2.7,2.4-3.3
+ c0-0.4,0.2-0.6,0.4-0.3c0.8-0.7,2.5-0.8,3-1.9c0.7-1.5,0.8-5.6,0.5-6.8c1-0.7,0.6-2.3,0.6-3.8c1.3-1.3,0.7-3.8,0.5-5.3
+ c-0.2-1.3-0.2-3.7-0.9-4.6c-0.4-0.5-1.3-0.5-1.8-0.9c-0.2-0.2-0.3-0.6-0.5-0.8c-0.3-0.2-0.7-0.2-0.9-0.4
+ c-0.4-0.4-0.2-0.8-0.5-1.6c-0.1-0.4-0.6-0.4-0.6-0.8c-0.1-0.9,1.1-1.5,0.7-2.6c0.5-1.2,3.3-1.1,3.5-2.3c0.1-0.9-1.4-2-1.8-2.8
+ c-0.7-1.3-1.3-2.9-0.7-3.8c-1.1-0.9-2.2-1.7-3.2-2.6c-2.6,0.1-4.6-0.3-5.6-1.8c-1,0.1-1.8,0-2.6-0.3c-1.7-2.2-4.1-3.3-8.4-2.8
+ c-0.8-1.3-1-3.1-1.9-4.1c-0.3-0.1-0.6-0.1-0.8-0.3c-0.1-0.2,0-0.6-0.1-0.7c-1.9-0.5-3.7-1.8-5.9-1.4c-0.4,0.1-0.6,0.6-1,0.6
+ c-0.8,0-1.7-1.2-2-1.6c-1.5-1.4-3.8-1.5-5.4-2.8c-0.2-0.4-1.3-1-1.5-0.5c-1.2,2.2-3.7,3-5.6,1c0.1,0.5,1,0.7,0.7,1.8
+ c-0.7,0.5-1.7,0.9-1.7,2.1c-3,0.6-3.8,3.9-2.5,6.7c0.6,1.3,3.2,1.4,4.5,2c0.2,0.4,0.4,0.7,0.3,1.4c-1.2,0.2-2.2,0.6-3.5,0.7
+ c-0.5,0-1.3-0.2-1.8-0.3c-1.6-0.1-2.3,1.3-3.8,1.6c-0.2,0.2,0,0.9-0.3,1.1c-4.3,0.3-3.7,5.6-3,8.9c0.1,0.1,0.6,0,0.7,0.1
+ c0.4,0.4,0.1,1,0.4,1.7c0.1,0.3,0.6,0.3,0.7,0.6c0.1,0.2-0.2,0.6-0.1,0.9c0.1,0.5,0.5,0.9,0.5,1.3c0,0.8-0.4,1.7-0.3,2.6
+ c0,0.7,0.4,1.7-0.5,1.7c-0.6-2.5,0.2-5.7-1.2-8c-0.7,1.9-0.6,4.6-1.3,6.4c-0.5,1-1.4,1.7-1.5,3.1c-0.5,0.6-1.3,0.9-1.2,2
+ c-0.5,0.9-1.8,1-2.2,0c-1.3,0.5-1.9-0.9-2-1.9c-0.1-1.5-0.1-3.6-0.1-5.5c0.1-2.4,2-4.5,1.2-6.2c0.1-0.8,0.9-1.3,0.9-2
+ c-0.2-0.3-0.6-0.4-1-0.4c-1.4,1.6-1.6,4.4-3.2,5.7c0.1,0.3-0.1,1.1-0.1,1.7c-1.6,0.3-1.4,2.4-3.3,2.4c-0.7-0.1-0.9-0.8-1.5-0.9
+ c-1.6-0.1-1.3,3.8-3.6,2.1c-0.4,0.2-0.7,0.5-0.8,0.9c0,0.8,0.4,1.8,0.3,2.6c0,0.3-0.4,0.6-0.4,0.9c0,0.4,0.3,0.7,0.2,1.1
+ c-0.2,1.1-1.1,1.2-2.2,1.4c-1.4,0.3-1.9,1.4-2.7,1.4c1,0.2,3.9,0.9,3.5,2.1c-0.1,0.4-1.2,0.6-1.7,0.1c-0.5-0.4-0.7-1.2-1.6-1.2
+ c-0.6,1.5,0.8,2.7,0.7,4.3c-0.1,1.3-0.9,2.6-0.9,3.9c0,1.1,0.1,2.1,0,3.4c0.2,0.4,1,0.1,0.9,0.6c-0.2,0.4-1,0.1-1.4,0.3
+ c-0.3,0.8-0.7,1.4-0.9,2.3c-0.3,0.9-1,1.4-1.3,2.1c-0.7,1.9-1.6,4.5-3.1,5.6c-0.6,0.4-1.5,0.5-1.2,1.6
+ C85.2,125.4,85.5,124.8,85.9,125.1z"/>
+ </g>
+ <g>
+ <g>
+ <path id="mackinaw-island" class="hover-region st0" data-region="northern-michigan"s d="M160,49c-0.7-0.1,0.1,0.8,0.1,0.2c0.3,0.1,0.4,0.3,0.5,0.6c-0.1,0.3-0.5,0.5-0.2,0.9
+ c0.5,0.3,1.3,0.1,1.5,0.7c-0.1,0.5-0.2,1.1-0.6,1.4c-0.5-0.2-0.9,0.3-1.3,0.3c-0.4,0-0.7-0.8-1.2-0.9c-1.4-0.3-4.1,1.1-4.6-0.7
+ c0.3,0,0.3,0.3,0.7,0.3c0.5-0.7,1.5-1.6,2.6-1.7c0.9-0.1,0-1.6-0.3-2C158.5,47.6,160,47.8,160,49z"/>
+ </g>
+ <g>
+ <path id="upper-peninsula" data-region="northern-michigan" class="hover-region st0 up-rect" d="M69.5,6.2c-0.8,0.2-1.3,0.7-2.1,0.9c-1-0.7-4.3-0.2-3,1.1c-2,2-4.9,3.1-6.6,5.4c-0.2,0.2-0.2-0.4-0.5-0.3
+ c0.2,1.4-0.8,2.2-1.5,3.3c-0.4,0.6-1,2.4-1.5,2.3c-0.5-0.1-1.1-2.6-0.1-2.6C54,16,53.5,16.1,53.3,16c-0.3-1-1.7-1.2-2.8-1.2
+ c0,0.5,0.7,0.4,1.1,0.5c0.8,0.5,0.3,1.6,0.5,2.6c0.7,0.4,1.1,1,1.5,1.6c-0.1,1-0.5,2-0.8,3c-0.1,0.4,0.1,0.9,0,1.4
+ c-0.1,0.4-0.3,0.6-0.3,0.9c0,0.3,0.5,0.5,0.5,0.8c0,0.4-0.6,0.7-0.6,1c1.1,0.7,1.8-1.9,2.6-2.6c1.3-1.1,2.7-2.3,4.1-2.7
+ c-0.2,1.1-1.6,0.9-1.4,2.4c-0.2,0.4-0.9,0.5-0.7,1c0.2,0.3,0.6-0.1,0.8-0.2c0.4-0.8,0.5-1.4,1-1.9c0.8-0.6,1.9,0,2.6-0.7
+ c1.5,0.3,2.8,0.5,4.4,0.5c0.1,0.1,0.1,0.3,0.1,0.5c0.7-0.1,0.8,0.2,1.1,0.5c0.8-0.7,0.9-0.1,1.4,0.5c0.3,0.5,1.2,0.8,0.8,1.4
+ c0.4,0.2,0.6,0.5,1,0.7c0.4,0,0.1-0.6,0.3-0.8c1.5,0.4,1.6,2.2,2.2,3.6c0.2,0.2,0.6,0.2,0.8,0.3c0,1.3,1.3,1.4,1.3,2.6
+ c0.5,0.6,1.2,1.2,1.4,2c0.1,0.4,0,0.6,0.2,0.9c0.8,1.2,2.9,0.6,4.1,1.4c0.3-0.3,0.6-0.7,1.2-0.5c0.2,0.1,0,0.6,0.3,0.7
+ c0.6-1.3,3.2-2.6,3.9-0.7c-0.1,0.2-0.5,0.2-0.5,0.5c0.4,0.5,0.9,0.3,1.5,0.6c0.5,0.2,0.7,1,1.5,0.9c0.6-0.1,0.7-1,1.2-1.2
+ c0.8-0.3,1.2,0.6,1.7,1c0.3,0,0.4,0.1,0.7,0.1c0.3,0.1,0.3,0.6,0.6,0.6c0.7,0.1,1.2-1.4,1.6-2.1c0.2-0.4,1.2-0.9,1.7-1.3
+ c0.3-0.2,0.5-0.6,0.7-0.7c0.6-0.3,1.5-0.1,2.1-0.3c0.4-0.2,0.5-0.6,0.9-1c1-1.1,3.1-1.5,3.9-2.7c1.9,1.5,4.8-1.3,6.9-0.2
+ c1.5,0.1,3.2-0.3,4.1,0.4c0.7-0.4,1.9-0.1,2.7-0.2c0.1,0.5,0.4,0.9,0.2,1.5c0.3-0.3,1.4-0.2,2-0.3c0.7-0.4,0-1.9,0.9-2.2
+ c0.3,0,0.6,0,0.4-0.1c0.7-1.6,2.9-1.4,4.5-1.6c-0.6,0.5-0.4,1.6-0.8,2.2c0.6,0.4,1-0.2,1.1-0.6c0.6,0,1.1,0.1,1.2,0.7
+ c-0.6,0.2-1.4,0.8-0.8,1.6c0.4,0.1,0.9-0.2,1.4,0.1c0.4,0.8,0.6,2-0.2,2.5c-0.2,2.4,1.9,2.9,4.1,2.8c1.4,1.6,3.4-0.2,4.6-0.8
+ c0.2,0.2,0,0.4,0.1,0.7c0.1,0.3,1.5,1.5,1.6,1.6c0.7,0.2,1.1-0.6,1.9-0.7c1.1-0.1,0.9,0.2,1.4-0.8c0.4-0.9,1.6-1.6,2.9-1.3
+ c-0.4,1,1,1.3,1.1,2.5c0,0.1-0.1,0.5-0.1,0.7c0.1,0.3,0.5,0.5,0.7,0.8c0.4,0.7,0.4,1.8,0.3,2.6c0.3,0.3,0.8,0.4,0.7,1.1
+ c-0.5,0.7-1.5,0.8-1.7,1.7c0.4,0.4,0.8,0.9,1,1.5c0.4-0.6,1.4-0.7,2.2-0.9c0.4,0.8,1.3,1,2,1.5c-0.4,0.6-0.9,1.1,0,1.5
+ c0,0.4,0.1,0.7,0.2,1c0.5,0.2,1.2,0.3,1.3,0.9c0.6-0.3,1.2-0.1,1.6,0.3c0,0.3,0.1,0.6,0.1,0.8c-0.3,0.4-1.3,0.3-1.6,0
+ c0-0.4,0-0.8-0.2-1c-0.3,0-0.5,0.1-0.7,0.2c0,0.4,0.3,0.4,0.3,0.7c-2.2,0.3-5.1-0.8-7.8-0.6c-0.5,0-1,0.3-1.3,0.3
+ c-0.4-0.1-0.6-0.5-1.1-0.3c-0.2,0.1-0.3,0.4-0.5,0.4c-0.7,0.3-1-0.4-1.3-1c-1.2,0.1-1.6-0.8-2.7-0.7c-0.9,0.1-0.5,1.5-0.9,2.3
+ c-0.3,0.5-1.3,1-0.4,1.8c0,0.3-0.2,0.3-0.3,0.5c0.2,0.2,0.4,0.8,0.1,1c-1.6-0.2-2.8-0.7-3.4-1.9c-0.5-0.2-1.2-0.5-1.1-1.1
+ c0.2-0.2,0.7-0.1,1-0.2c0,0.3,0.4,1.2,0.9,0.7c0.1-0.3-0.4-0.5-0.6-0.7c0.2-0.5-0.1-0.8-0.4-1.1c-0.2-0.1-0.4,0.1-0.5,0.2
+ c-0.3-0.3-1.2-0.6-1.6-0.3c-0.3,0-0.2-0.3-0.4-0.4c-2.3-0.2-5.5-2.1-8-2.5c-0.9-0.1-1.9-0.3-2.8-0.1c-1.1,0.3-1.2,2-2.4,2.5
+ c0,2.9-4.8,0.9-6.4,2.1c-0.3,0.2-0.5,0.8-0.8,0.9c-1,0.2-2-1-2.9-1c-2.1-0.2-4.8,0.4-5.4,2c-0.3,0.6-0.1,1-0.4,1.8
+ c-0.3,0.6-1.9,2.2-2.7,2.6c-0.8,0.4-1.6,0.1-1.7,1.3c-1.4,0.3-1.3,2-2.1,2.9c-0.9-0.2-1.8-1.4-0.6-1.9c0.1-0.3-0.2-0.4-0.2-0.7
+ c1.2,0,0.7-2.6,2.2-1.7c0.2-0.9,0.7-1.9,1.1-2.8c-0.1-1.3-1.6-1.2-2.3-0.4c0,0.4-0.2,0.6-0.3,0.9c-0.4,0.1-1.1,0-1.6,0.1
+ c-0.3-0.1-0.3-0.6-0.6-0.8c-0.5,0-0.8,0.1-1,0.3c0.2,1.4-1.5,3.6-2.6,4.2c-0.3,0.2-1,0.2-1.4,0.2c-0.6-0.7,0.1-2.3-0.5-3.3
+ c0.1-1,1.8-1.8,0.8-2.8c-0.8,0.2-1.2,0.9-1.1,1.8c-0.3,0.7-1.5,1-1.4,2c0.1,1,0.8,2-0.4,2.6c-0.2,0.1-0.5,0.1-0.7,0.2
+ c-1.4,0.7-1.5,3-3,3.7c-1.5,6-5.5,9.6-8.1,14.4c-1.1-0.7-2.7-1.1-2.6-2.4c0-0.6,0.5-1.3,0.7-1.9c0.3-1,1.4-2.5,1.4-3.2
+ c0-0.3-0.6-1-0.9-1c-0.5,0-0.9,0.9-1.6,1c-0.8,0.2-2.3,0-2.5-0.7c-0.1-0.4,0.4-0.7,0.5-1.1c0.1-0.4-0.2-0.7-0.1-1
+ c0.1-0.7,1.3-1,1.5-1.7c0.2-0.9-0.3-1.4-0.5-2.2c2.1-0.4-0.1-2.3,0.1-3c0.1-0.6,1.3-0.7,0.3-1.6c-0.2-0.1-0.5-0.2-0.7-0.3
+ c-0.4-0.3-0.5-0.8-0.9-1c-0.9-0.4-2.1-0.2-2.3-1.3c-1.3,0.3-3,0.1-2.9-1.2c0-0.6,1.1-0.8,1.1-1.4c0-0.1-0.3-1.1-0.5-1.4
+ c-0.3-0.6-1.7-1-2.5-1.1c-0.4-0.1-0.7-0.5-1-0.5c-0.3,0-0.7,0.1-1,0.1c-0.5-0.1-0.8-0.8-1.3-0.9C54.3,50.8,54,51,53.7,51
+ c-1.6-0.2-2.3-1.4-4-0.9c-0.3,0.1-0.5,0.5-0.8,0.5c-0.7,0.1-1.3-1-2.3-1.1c-0.7-0.1-1.2,0-1.8-0.1c-2.3-0.9-4-2.9-6.4-3.8
+ c-1.7-0.7-3.9-0.8-5.3-1.9c-0.3,0.1-0.8,0.1-1-0.1C32,43.5,32,43.3,32,43.1c-1.5,0.5-4.3-0.7-5.8-1.2c-1.9-0.6-3.6-1-5.2-1.5
+ c-0.1-0.1-0.2-0.3-0.2-0.5c-1.6,0.5-3.2-0.6-4.7-1c-1-2.4-1.3-5.4-4.1-5.9c-0.2-0.2-0.1-0.6-0.3-0.8C8.9,32.7,10,31,12,30.8
+ c1.1-0.1,2.6-1,3.1-1.4c3.9-0.2,5.5-2.7,7.5-4.8c2.2-1.4,4.6,0.1,7-0.9c1.2,0.1,3.2,0,4-0.5c1.3-0.9,2.9-1.7,3.9-2.6
+ c0.2-2,3-1.2,4.7-1.6c0.8-0.2,1-1.2,1.3-2.1c1-1.4,2.4-2.3,4-3.1c0.2-1,1-1.7,2.1-1.6c0.4,0.8-0.4,2.3,0.7,2.6
+ c0.3-0.8-0.1-2.3,0.2-3.1c2.3-0.8,2.7-3.8,4.9-4.7c1.8-0.7,3.4-1.9,5.3-2.2c1.3,0.3,2.7-0.4,4.1-0.2c0.7,0.1,1.5,0.6,2.2,0.1
+ c0.8,0.1,1.6,0.1,2.1,0.6C69.1,5.7,69.5,5.8,69.5,6.2z"/>
+ </g>
+ </g>
+ </g>
+ <g>
+ <g>
+ <path id="western-michigan" data-region="west-michigan" class="hover-region st0 wm-rect" d="M148.6,173.7h-55c0.1,0.3,0.1,0.6,0.3,0.9c0.4,0,0.8-0.1,1,0.1c0,0.7-0.8,0.5-1.1,0.8
+ c0.5,2.1-0.5,3.7-0.6,5.2c0,1.1,0.7,2.3-0.3,3.2c0.3,1.9,0,4.4-1.1,5.3c0.6,0.8-0.1,1.3-0.2,2c-0.5,2.3-1.7,5.6-3.3,6.6
+ c0.2,1.9-2.5,2.1-2.1,4.1c-1.1,2.2-1.8,4.7-2.8,7c-0.3,0.2-0.6,0.3-0.9,0.5c-0.7,2-2.9,2.5-4.1,4.1c18.5,0.6,38.7,0,57.4,0.7
+ c0.4,0.6-0.1,1.7,0.4,2.2c4,0,8.3-0.1,12.5-0.2V173.7z"/>
+ </g>
+ </g>
+</g>
+<g id="Northern" class="st1">
+ <g class="st2">
+ <g>
+ <path class="hover-region st3" d="M85.9,125.1c0.3,0.7-0.4,0.9-0.9,1c0.4,0.8,0.7,1.6,1,2.5h71.5c0.3-0.8,0.9-1.5,2.1-1.8
+ c0.5-0.1,0.9,0.1,1.5,0c1.7-0.2,2.5-1.2,3.3-2c0.6-0.6,1.5-0.9,1.9-1.6c0.8-1.5,0.6-3.5,1.1-5.4c0.5-1.4,1.1-2.7,2.4-3.3
+ c0-0.4,0.2-0.6,0.4-0.3c0.8-0.7,2.5-0.8,3-1.9c0.7-1.5,0.8-5.6,0.5-6.8c1-0.7,0.6-2.3,0.6-3.8c1.3-1.3,0.7-3.8,0.5-5.3
+ c-0.2-1.3-0.2-3.7-0.9-4.6c-0.4-0.5-1.3-0.5-1.8-0.9c-0.2-0.2-0.3-0.6-0.5-0.8c-0.3-0.2-0.7-0.2-0.9-0.4
+ c-0.4-0.4-0.2-0.8-0.5-1.6c-0.1-0.4-0.6-0.4-0.6-0.8c-0.1-0.9,1.1-1.5,0.7-2.6c0.5-1.2,3.3-1.1,3.5-2.3c0.1-0.9-1.4-2-1.8-2.8
+ c-0.7-1.3-1.3-2.9-0.7-3.8c-1.1-0.9-2.2-1.7-3.2-2.6c-2.6,0.1-4.6-0.3-5.6-1.8c-1,0.1-1.8,0-2.6-0.3c-1.7-2.2-4.1-3.3-8.4-2.8
+ c-0.8-1.3-1-3.1-1.9-4.1c-0.3-0.1-0.6-0.1-0.8-0.3c-0.1-0.2,0-0.6-0.1-0.7c-1.9-0.5-3.7-1.8-5.9-1.4c-0.4,0.1-0.6,0.6-1,0.6
+ c-0.8,0-1.7-1.2-2-1.6c-1.5-1.4-3.8-1.5-5.4-2.8c-0.2-0.4-1.3-1-1.5-0.5c-1.2,2.2-3.7,3-5.6,1c0.1,0.5,1,0.7,0.7,1.8
+ c-0.7,0.5-1.7,0.9-1.7,2.1c-3,0.6-3.8,3.9-2.5,6.7c0.6,1.3,3.2,1.4,4.5,2c0.2,0.4,0.4,0.7,0.3,1.4c-1.2,0.2-2.2,0.6-3.5,0.7
+ c-0.5,0-1.3-0.2-1.8-0.3c-1.6-0.1-2.3,1.3-3.8,1.6c-0.2,0.2,0,0.9-0.3,1.1c-4.3,0.3-3.7,5.6-3,8.9c0.1,0.1,0.6,0,0.7,0.1
+ c0.4,0.4,0.1,1,0.4,1.7c0.1,0.3,0.6,0.3,0.7,0.6c0.1,0.2-0.2,0.6-0.1,0.9c0.1,0.5,0.5,0.9,0.5,1.3c0,0.8-0.4,1.7-0.3,2.6
+ c0,0.7,0.4,1.7-0.5,1.7c-0.6-2.5,0.2-5.7-1.2-8c-0.7,1.9-0.6,4.6-1.3,6.4c-0.5,1-1.4,1.7-1.5,3.1c-0.5,0.6-1.3,0.9-1.2,2
+ c-0.5,0.9-1.8,1-2.2,0c-1.3,0.5-1.9-0.9-2-1.9c-0.1-1.5-0.1-3.6-0.1-5.5c0.1-2.4,2-4.5,1.2-6.2c0.1-0.8,0.9-1.3,0.9-2
+ c-0.2-0.3-0.6-0.4-1-0.4c-1.4,1.6-1.6,4.4-3.2,5.7c0.1,0.3-0.1,1.1-0.1,1.7c-1.6,0.3-1.4,2.4-3.3,2.4c-0.7-0.1-0.9-0.8-1.5-0.9
+ c-1.6-0.1-1.3,3.8-3.6,2.1c-0.4,0.2-0.7,0.5-0.8,0.9c0,0.8,0.4,1.8,0.3,2.6c0,0.3-0.4,0.6-0.4,0.9c0,0.4,0.3,0.7,0.2,1.1
+ c-0.2,1.1-1.1,1.2-2.2,1.4c-1.4,0.3-1.9,1.4-2.7,1.4c1,0.2,3.9,0.9,3.5,2.1c-0.1,0.4-1.2,0.6-1.7,0.1c-0.5-0.4-0.7-1.2-1.6-1.2
+ c-0.6,1.5,0.8,2.7,0.7,4.3c-0.1,1.3-0.9,2.6-0.9,3.9c0,1.1,0.1,2.1,0,3.4c0.2,0.4,1,0.1,0.9,0.6c-0.2,0.4-1,0.1-1.4,0.3
+ c-0.3,0.8-0.7,1.4-0.9,2.3c-0.3,0.9-1,1.4-1.3,2.1c-0.7,1.9-1.6,4.5-3.1,5.6c-0.6,0.4-1.5,0.5-1.2,1.6
+ C85.2,125.4,85.5,124.8,85.9,125.1z"/>
+ </g>
+ <g>
+ <g>
+ <path class="hover-region st3" d="M160,49c-0.7-0.1,0.1,0.8,0.1,0.2c0.3,0.1,0.4,0.3,0.5,0.6c-0.1,0.3-0.5,0.5-0.2,0.9
+ c0.5,0.3,1.3,0.1,1.5,0.7c-0.1,0.5-0.2,1.1-0.6,1.4c-0.5-0.2-0.9,0.3-1.3,0.3c-0.4,0-0.7-0.8-1.2-0.9c-1.4-0.3-4.1,1.1-4.6-0.7
+ c0.3,0,0.3,0.3,0.7,0.3c0.5-0.7,1.5-1.6,2.6-1.7c0.9-0.1,0-1.6-0.3-2C158.5,47.6,160,47.8,160,49z"/>
+ </g>
+ <g>
+ <path class="hover-region st3" d="M69.5,6.2c-0.8,0.2-1.3,0.7-2.1,0.9c-1-0.7-4.3-0.2-3,1.1c-2,2-4.9,3.1-6.6,5.4c-0.2,0.2-0.2-0.4-0.5-0.3
+ c0.2,1.4-0.8,2.2-1.5,3.3c-0.4,0.6-1,2.4-1.5,2.3c-0.5-0.1-1.1-2.6-0.1-2.6C54,16,53.5,16.1,53.3,16c-0.3-1-1.7-1.2-2.8-1.2
+ c0,0.5,0.7,0.4,1.1,0.5c0.8,0.5,0.3,1.6,0.5,2.6c0.7,0.4,1.1,1,1.5,1.6c-0.1,1-0.5,2-0.8,3c-0.1,0.4,0.1,0.9,0,1.4
+ c-0.1,0.4-0.3,0.6-0.3,0.9c0,0.3,0.5,0.5,0.5,0.8c0,0.4-0.6,0.7-0.6,1c1.1,0.7,1.8-1.9,2.6-2.6c1.3-1.1,2.7-2.3,4.1-2.7
+ c-0.2,1.1-1.6,0.9-1.4,2.4c-0.2,0.4-0.9,0.5-0.7,1c0.2,0.3,0.6-0.1,0.8-0.2c0.4-0.8,0.5-1.4,1-1.9c0.8-0.6,1.9,0,2.6-0.7
+ c1.5,0.3,2.8,0.5,4.4,0.5c0.1,0.1,0.1,0.3,0.1,0.5c0.7-0.1,0.8,0.2,1.1,0.5c0.8-0.7,0.9-0.1,1.4,0.5c0.3,0.5,1.2,0.8,0.8,1.4
+ c0.4,0.2,0.6,0.5,1,0.7c0.4,0,0.1-0.6,0.3-0.8c1.5,0.4,1.6,2.2,2.2,3.6c0.2,0.2,0.6,0.2,0.8,0.3c0,1.3,1.3,1.4,1.3,2.6
+ c0.5,0.6,1.2,1.2,1.4,2c0.1,0.4,0,0.6,0.2,0.9c0.8,1.2,2.9,0.6,4.1,1.4c0.3-0.3,0.6-0.7,1.2-0.5c0.2,0.1,0,0.6,0.3,0.7
+ c0.6-1.3,3.2-2.6,3.9-0.7c-0.1,0.2-0.5,0.2-0.5,0.5c0.4,0.5,0.9,0.3,1.5,0.6c0.5,0.2,0.7,1,1.5,0.9c0.6-0.1,0.7-1,1.2-1.2
+ c0.8-0.3,1.2,0.6,1.7,1c0.3,0,0.4,0.1,0.7,0.1c0.3,0.1,0.3,0.6,0.6,0.6c0.7,0.1,1.2-1.4,1.6-2.1c0.2-0.4,1.2-0.9,1.7-1.3
+ c0.3-0.2,0.5-0.6,0.7-0.7c0.6-0.3,1.5-0.1,2.1-0.3c0.4-0.2,0.5-0.6,0.9-1c1-1.1,3.1-1.5,3.9-2.7c1.9,1.5,4.8-1.3,6.9-0.2
+ c1.5,0.1,3.2-0.3,4.1,0.4c0.7-0.4,1.9-0.1,2.7-0.2c0.1,0.5,0.4,0.9,0.2,1.5c0.3-0.3,1.4-0.2,2-0.3c0.7-0.4,0-1.9,0.9-2.2
+ c0.3,0,0.6,0,0.4-0.1c0.7-1.6,2.9-1.4,4.5-1.6c-0.6,0.5-0.4,1.6-0.8,2.2c0.6,0.4,1-0.2,1.1-0.6c0.6,0,1.1,0.1,1.2,0.7
+ c-0.6,0.2-1.4,0.8-0.8,1.6c0.4,0.1,0.9-0.2,1.4,0.1c0.4,0.8,0.6,2-0.2,2.5c-0.2,2.4,1.9,2.9,4.1,2.8c1.4,1.6,3.4-0.2,4.6-0.8
+ c0.2,0.2,0,0.4,0.1,0.7c0.1,0.3,1.5,1.5,1.6,1.6c0.7,0.2,1.1-0.6,1.9-0.7c1.1-0.1,0.9,0.2,1.4-0.8c0.4-0.9,1.6-1.6,2.9-1.3
+ c-0.4,1,1,1.3,1.1,2.5c0,0.1-0.1,0.5-0.1,0.7c0.1,0.3,0.5,0.5,0.7,0.8c0.4,0.7,0.4,1.8,0.3,2.6c0.3,0.3,0.8,0.4,0.7,1.1
+ c-0.5,0.7-1.5,0.8-1.7,1.7c0.4,0.4,0.8,0.9,1,1.5c0.4-0.6,1.4-0.7,2.2-0.9c0.4,0.8,1.3,1,2,1.5c-0.4,0.6-0.9,1.1,0,1.5
+ c0,0.4,0.1,0.7,0.2,1c0.5,0.2,1.2,0.3,1.3,0.9c0.6-0.3,1.2-0.1,1.6,0.3c0,0.3,0.1,0.6,0.1,0.8c-0.3,0.4-1.3,0.3-1.6,0
+ c0-0.4,0-0.8-0.2-1c-0.3,0-0.5,0.1-0.7,0.2c0,0.4,0.3,0.4,0.3,0.7c-2.2,0.3-5.1-0.8-7.8-0.6c-0.5,0-1,0.3-1.3,0.3
+ c-0.4-0.1-0.6-0.5-1.1-0.3c-0.2,0.1-0.3,0.4-0.5,0.4c-0.7,0.3-1-0.4-1.3-1c-1.2,0.1-1.6-0.8-2.7-0.7c-0.9,0.1-0.5,1.5-0.9,2.3
+ c-0.3,0.5-1.3,1-0.4,1.8c0,0.3-0.2,0.3-0.3,0.5c0.2,0.2,0.4,0.8,0.1,1c-1.6-0.2-2.8-0.7-3.4-1.9c-0.5-0.2-1.2-0.5-1.1-1.1
+ c0.2-0.2,0.7-0.1,1-0.2c0,0.3,0.4,1.2,0.9,0.7c0.1-0.3-0.4-0.5-0.6-0.7c0.2-0.5-0.1-0.8-0.4-1.1c-0.2-0.1-0.4,0.1-0.5,0.2
+ c-0.3-0.3-1.2-0.6-1.6-0.3c-0.3,0-0.2-0.3-0.4-0.4c-2.3-0.2-5.5-2.1-8-2.5c-0.9-0.1-1.9-0.3-2.8-0.1c-1.1,0.3-1.2,2-2.4,2.5
+ c0,2.9-4.8,0.9-6.4,2.1c-0.3,0.2-0.5,0.8-0.8,0.9c-1,0.2-2-1-2.9-1c-2.1-0.2-4.8,0.4-5.4,2c-0.3,0.6-0.1,1-0.4,1.8
+ c-0.3,0.6-1.9,2.2-2.7,2.6c-0.8,0.4-1.6,0.1-1.7,1.3c-1.4,0.3-1.3,2-2.1,2.9c-0.9-0.2-1.8-1.4-0.6-1.9c0.1-0.3-0.2-0.4-0.2-0.7
+ c1.2,0,0.7-2.6,2.2-1.7c0.2-0.9,0.7-1.9,1.1-2.8c-0.1-1.3-1.6-1.2-2.3-0.4c0,0.4-0.2,0.6-0.3,0.9c-0.4,0.1-1.1,0-1.6,0.1
+ c-0.3-0.1-0.3-0.6-0.6-0.8c-0.5,0-0.8,0.1-1,0.3c0.2,1.4-1.5,3.6-2.6,4.2c-0.3,0.2-1,0.2-1.4,0.2c-0.6-0.7,0.1-2.3-0.5-3.3
+ c0.1-1,1.8-1.8,0.8-2.8c-0.8,0.2-1.2,0.9-1.1,1.8c-0.3,0.7-1.5,1-1.4,2c0.1,1,0.8,2-0.4,2.6c-0.2,0.1-0.5,0.1-0.7,0.2
+ c-1.4,0.7-1.5,3-3,3.7c-1.5,6-5.5,9.6-8.1,14.4c-1.1-0.7-2.7-1.1-2.6-2.4c0-0.6,0.5-1.3,0.7-1.9c0.3-1,1.4-2.5,1.4-3.2
+ c0-0.3-0.6-1-0.9-1c-0.5,0-0.9,0.9-1.6,1c-0.8,0.2-2.3,0-2.5-0.7c-0.1-0.4,0.4-0.7,0.5-1.1c0.1-0.4-0.2-0.7-0.1-1
+ c0.1-0.7,1.3-1,1.5-1.7c0.2-0.9-0.3-1.4-0.5-2.2c2.1-0.4-0.1-2.3,0.1-3c0.1-0.6,1.3-0.7,0.3-1.6c-0.2-0.1-0.5-0.2-0.7-0.3
+ c-0.4-0.3-0.5-0.8-0.9-1c-0.9-0.4-2.1-0.2-2.3-1.3c-1.3,0.3-3,0.1-2.9-1.2c0-0.6,1.1-0.8,1.1-1.4c0-0.1-0.3-1.1-0.5-1.4
+ c-0.3-0.6-1.7-1-2.5-1.1c-0.4-0.1-0.7-0.5-1-0.5c-0.3,0-0.7,0.1-1,0.1c-0.5-0.1-0.8-0.8-1.3-0.9C54.3,50.8,54,51,53.7,51
+ c-1.6-0.2-2.3-1.4-4-0.9c-0.3,0.1-0.5,0.5-0.8,0.5c-0.7,0.1-1.3-1-2.3-1.1c-0.7-0.1-1.2,0-1.8-0.1c-2.3-0.9-4-2.9-6.4-3.8
+ c-1.7-0.7-3.9-0.8-5.3-1.9c-0.3,0.1-0.8,0.1-1-0.1C32,43.5,32,43.3,32,43.1c-1.5,0.5-4.3-0.7-5.8-1.2c-1.9-0.6-3.6-1-5.2-1.5
+ c-0.1-0.1-0.2-0.3-0.2-0.5c-1.6,0.5-3.2-0.6-4.7-1c-1-2.4-1.3-5.4-4.1-5.9c-0.2-0.2-0.1-0.6-0.3-0.8C8.9,32.7,10,31,12,30.8
+ c1.1-0.1,2.6-1,3.1-1.4c3.9-0.2,5.5-2.7,7.5-4.8c2.2-1.4,4.6,0.1,7-0.9c1.2,0.1,3.2,0,4-0.5c1.3-0.9,2.9-1.7,3.9-2.6
+ c0.2-2,3-1.2,4.7-1.6c0.8-0.2,1-1.2,1.3-2.1c1-1.4,2.4-2.3,4-3.1c0.2-1,1-1.7,2.1-1.6c0.4,0.8-0.4,2.3,0.7,2.6
+ c0.3-0.8-0.1-2.3,0.2-3.1c2.3-0.8,2.7-3.8,4.9-4.7c1.8-0.7,3.4-1.9,5.3-2.2c1.3,0.3,2.7-0.4,4.1-0.2c0.7,0.1,1.5,0.6,2.2,0.1
+ c0.8,0.1,1.6,0.1,2.1,0.6C69.1,5.7,69.5,5.8,69.5,6.2z"/>
+ </g>
+ </g>
+ </g>
+</g>
+<g id="Mid" class="st1">
+ <g class="st2">
+ <path class="hover-region st3 mm-rect" d="M87.3,151.5c0.6,0.1,1.1-0.6,1.4-0.1c-1.9,1.3,0.1,4,0.7,5.6c0.6,0.2,1.5-0.5,1.7,0.1c-1.9,1-0.5,2.4,0.1,3.9
+ c0.9,2.6,2,6.2,2.2,9c0.1,0.9,0,1.8,0,2.7h107.2c0-0.1,0-0.2,0-0.3c-0.1-0.9,0-1.3,0.1-2.1c0.1-0.7-0.2-1.5,0-2.3
+ c0.2-1.1,1.4-2.2,1.4-3.2c0-0.8-0.6-2.4-1-3.1c-0.2-0.4-0.7-0.4-0.8-0.8c-0.1-0.4,0.1-0.8,0-1.2c-0.1-0.9-0.7-1.6-0.8-2.3
+ c-0.3-1.6-0.6-3.3-0.8-5c-0.5-4.2-1.7-8.6-2-12.8c-0.2-3.6-0.9-7.5-2.8-10.1c-0.6-1.6-1.1-3.3-2.5-4.2c-0.1-0.1-0.5,0-0.7-0.1
+ c-0.3-0.8-1-1.9-1.6-0.7c-0.1-1.1-1.8-0.6-2.1-1.6c-1.7-0.3-2.2,0.7-3.4,1c-0.2,2.4-3.4,1.7-4.7,3c-0.9-0.6-1.7,0.1-2.6,0.3
+ c-0.2,1.2-0.8,1.9-1.7,2.3c-0.3,1.9-2,2.4-2.2,4.4c-1.1,0.2-0.9,1.7-2,2c0.3,1.7-1,2.4-2.3,2.4c-1.5,1.4-2.2,3.6-4.1,4.6
+ c-0.7-1-1.7-2.3-3.6-1.7c-0.2-0.1-0.1-0.5-0.3-0.6c-0.4,0-0.5,0.2-0.9,0.1c-0.4-0.2-0.6-0.5-0.7-0.9c-0.8-0.3-1.5-0.6-1.8-1.2
+ c-0.7-1.4-0.3-2.5,0-3.4c0.5-1.8,0.2-4,0.5-5.6h-71c0.3,1.3,0.5,2.7,0.5,4.2c0.1,0.3,0.5,0.3,0.5,0.7c-0.4,0.6-0.9,1.1-0.3,1.9
+ c-1.1,1.5-2.6,3-3,4.7c-0.6,2.3,1.7,4.3,2.1,6.5C86.4,149.2,86.4,150.4,87.3,151.5z"/>
+ </g>
+</g>
+<g id="Western" class="st1">
+ <g class="st2">
+ <g>
+ <path class="hover-region st3" d="M148.6,173.7h-55c0.1,0.3,0.1,0.6,0.3,0.9c0.4,0,0.8-0.1,1,0.1c0,0.7-0.8,0.5-1.1,0.8
+ c0.5,2.1-0.5,3.7-0.6,5.2c0,1.1,0.7,2.3-0.3,3.2c0.3,1.9,0,4.4-1.1,5.3c0.6,0.8-0.1,1.3-0.2,2c-0.5,2.3-1.7,5.6-3.3,6.6
+ c0.2,1.9-2.5,2.1-2.1,4.1c-1.1,2.2-1.8,4.7-2.8,7c-0.3,0.2-0.6,0.3-0.9,0.5c-0.7,2-2.9,2.5-4.1,4.1c18.5,0.6,38.7,0,57.4,0.7
+ c0.4,0.6-0.1,1.7,0.4,2.2c4,0,8.3-0.1,12.5-0.2V173.7z"/>
+ </g>
+ </g>
+</g>
+<g id="Southeast" class="st1">
+ <g class="st2">
+ <path class="hover-region st3" d="M149.6,173.7v42.5c7.8-0.1,15.6-0.3,23-0.6c1-0.9,0.9-2.8,2-3.6c0-0.3-0.1-0.3-0.1-0.6
+ c0.9-0.2,1.7-1.2,1.2-2.2c0.8-1.2,2.4-1.6,2.7-3.4c0.8-0.7,1.8-1.7,2-2.8c0.2-0.9-0.3-1.8-0.2-2.8c0.1-1.1,0.8-3.2,1.1-4.5
+ c0.2-0.8,0.6-2.1,1-2.7c1.3-1.7,4.2-1.5,5.2-3.1c0.6-0.9,1.1-2.4,1.2-3.3c0.1-0.6-0.3-1.2-0.2-1.9c0.2-1.7,2.2-2.7,2.2-4.7
+ c0-0.3-0.3-0.7-0.2-0.9c0.1-0.5,1-0.9,1.2-1c1.2-0.9,3.2-1.3,4.5-0.1c0.3,0.3,0.3,0.8,0.7,0.9c0.7,0.2,1.8-0.3,2.2-0.3
+ c0.2-1.8,1.2-3.2,1.4-4.8H149.6z"/>
+ </g>
+</g>
+<g id="Text">
+ <g>
+ <path class="st4" d="M123.1,154.7c0-0.7-0.1-1.5-0.1-2h0c-0.2,0.5-0.4,1.1-0.6,1.8l-0.8,2.3h-0.5l-0.8-2.2
+ c-0.2-0.7-0.4-1.3-0.5-1.8h0c0,0.6,0,1.4-0.1,2.1l-0.1,2H119l0.3-4.7h0.8l0.8,2.3c0.2,0.6,0.3,1.1,0.5,1.6h0
+ c0.1-0.5,0.3-1,0.5-1.6l0.8-2.3h0.8l0.3,4.7h-0.6L123.1,154.7z"/>
+ <path class="st4" d="M125.5,152.4c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4
+ C125.4,152,125.5,152.2,125.5,152.4z M124.8,156.8v-3.4h0.6v3.4H124.8z"/>
+ <path class="st4" d="M129.4,151.8v4.1c0,0.3,0,0.6,0,0.9h-0.5l0-0.6h0c-0.2,0.4-0.6,0.7-1.1,0.7c-0.8,0-1.5-0.7-1.5-1.7
+ c0-1.1,0.7-1.8,1.5-1.8c0.5,0,0.9,0.2,1,0.5h0v-2H129.4z M128.8,154.8c0-0.1,0-0.2,0-0.3c-0.1-0.4-0.4-0.7-0.9-0.7
+ c-0.6,0-1,0.6-1,1.3c0,0.7,0.3,1.3,1,1.3c0.4,0,0.8-0.3,0.9-0.7c0-0.1,0-0.2,0-0.3V154.8z"/>
+ <path class="st4" d="M131.8,154.6v0.4h-1.7v-0.4H131.8z"/>
+ <path class="st4" d="M136.6,154.7c0-0.7-0.1-1.5-0.1-2h0c-0.2,0.5-0.4,1.1-0.6,1.8l-0.8,2.3h-0.5l-0.8-2.2
+ c-0.2-0.7-0.4-1.3-0.5-1.8h0c0,0.6,0,1.4-0.1,2.1l-0.1,2h-0.6l0.3-4.7h0.8l0.8,2.3c0.2,0.6,0.3,1.1,0.5,1.6h0
+ c0.1-0.5,0.3-1,0.5-1.6l0.8-2.3h0.8l0.3,4.7h-0.6L136.6,154.7z"/>
+ <path class="st4" d="M139,152.4c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4C138.8,152,139,152.2,139,152.4z
+ M138.3,156.8v-3.4h0.6v3.4H138.3z"/>
+ <path class="st4" d="M142.3,156.6c-0.2,0.1-0.5,0.2-1,0.2c-1,0-1.7-0.7-1.7-1.7c0-1,0.7-1.8,1.8-1.8c0.4,0,0.7,0.1,0.9,0.2
+ l-0.1,0.5c-0.1-0.1-0.4-0.2-0.7-0.2c-0.8,0-1.2,0.6-1.2,1.3c0,0.8,0.5,1.3,1.2,1.3c0.3,0,0.6-0.1,0.8-0.2L142.3,156.6z"/>
+ <path class="st4" d="M143.1,151.8h0.6v2.1h0c0.1-0.2,0.3-0.3,0.4-0.4c0.2-0.1,0.4-0.2,0.6-0.2c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-1.9
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V151.8z"/>
+ <path class="st4" d="M147.6,152.4c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4
+ C147.5,152,147.6,152.2,147.6,152.4z M146.9,156.8v-3.4h0.6v3.4H146.9z"/>
+ <path class="st4" d="M151.5,156.3c0,0.8-0.2,1.3-0.5,1.6c-0.3,0.3-0.8,0.4-1.2,0.4c-0.4,0-0.9-0.1-1.1-0.3l0.2-0.5
+ c0.2,0.1,0.6,0.3,1,0.3c0.6,0,1.1-0.3,1.1-1.2v-0.4h0c-0.2,0.3-0.6,0.6-1.1,0.6c-0.8,0-1.4-0.7-1.4-1.7c0-1.1,0.7-1.8,1.5-1.8
+ c0.6,0,0.9,0.3,1.1,0.6h0l0-0.5h0.5c0,0.2,0,0.5,0,0.9V156.3z M150.9,154.7c0-0.1,0-0.2,0-0.3c-0.1-0.4-0.4-0.7-0.9-0.7
+ c-0.6,0-1,0.5-1,1.3c0,0.7,0.3,1.2,1,1.2c0.4,0,0.7-0.2,0.9-0.6c0-0.1,0-0.2,0-0.3V154.7z"/>
+ <path class="st4" d="M154.9,156c0,0.3,0,0.6,0,0.8h-0.6l0-0.4h0c-0.2,0.3-0.6,0.5-1,0.5c-0.7,0-1-0.5-1-1c0-0.8,0.7-1.3,2-1.3
+ v-0.1c0-0.3-0.1-0.8-0.8-0.8c-0.3,0-0.7,0.1-0.9,0.3l-0.1-0.4c0.3-0.2,0.7-0.3,1.1-0.3c1,0,1.3,0.7,1.3,1.4V156z M154.3,155
+ c-0.7,0-1.4,0.1-1.4,0.8c0,0.4,0.3,0.6,0.6,0.6c0.4,0,0.7-0.3,0.8-0.6c0-0.1,0-0.1,0-0.2V155z"/>
+ <path class="st4" d="M155.9,154.3c0-0.4,0-0.6,0-0.9h0.5l0,0.6h0c0.2-0.3,0.6-0.6,1.1-0.6c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-2
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V154.3z"/>
+ </g>
+ <g>
+ <path class="st4" d="M105,111.6v-4.7h0.7l1.5,2.4c0.3,0.6,0.6,1.1,0.8,1.5l0,0c-0.1-0.6-0.1-1.2-0.1-1.9v-2h0.6v4.7h-0.6l-1.5-2.4
+ c-0.3-0.5-0.6-1.1-0.9-1.6l0,0c0,0.6,0,1.2,0,1.9v2H105z"/>
+ <path class="st4" d="M112.7,109.9c0,1.3-0.9,1.8-1.7,1.8c-0.9,0-1.6-0.7-1.6-1.7c0-1.1,0.7-1.8,1.7-1.8
+ C112,108.1,112.7,108.8,112.7,109.9z M110,109.9c0,0.7,0.4,1.3,1,1.3c0.6,0,1-0.6,1-1.3c0-0.6-0.3-1.3-1-1.3
+ C110.3,108.6,110,109.3,110,109.9z"/>
+ <path class="st4" d="M113.4,109.3c0-0.4,0-0.7,0-1.1h0.5l0,0.7h0c0.2-0.5,0.5-0.7,0.9-0.7c0.1,0,0.1,0,0.2,0v0.6
+ c-0.1,0-0.1,0-0.2,0c-0.4,0-0.7,0.3-0.8,0.8c0,0.1,0,0.2,0,0.3v1.8h-0.6V109.3z"/>
+ <path class="st4" d="M116.6,107.4v0.8h0.9v0.5h-0.9v1.8c0,0.4,0.1,0.7,0.5,0.7c0.2,0,0.3,0,0.4,0l0,0.5c-0.1,0-0.3,0.1-0.5,0.1
+ c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.2-0.5-0.2-0.9v-1.8h-0.5v-0.5h0.5v-0.6L116.6,107.4z"/>
+ <path class="st4" d="M118.2,106.6h0.6v2.1h0c0.1-0.2,0.3-0.3,0.4-0.4c0.2-0.1,0.4-0.2,0.6-0.2c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-1.9
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V106.6z"/>
+ <path class="st4" d="M122.4,110c0,0.8,0.5,1.2,1.2,1.2c0.4,0,0.7-0.1,0.9-0.2l0.1,0.4c-0.2,0.1-0.6,0.2-1.1,0.2
+ c-1,0-1.7-0.7-1.7-1.7c0-1,0.6-1.8,1.6-1.8c1.1,0,1.4,1,1.4,1.6c0,0.1,0,0.2,0,0.3H122.4z M124.3,109.6c0-0.4-0.2-1-0.9-1
+ c-0.6,0-0.9,0.6-0.9,1H124.3z"/>
+ <path class="st4" d="M125.6,109.3c0-0.4,0-0.7,0-1.1h0.5l0,0.7h0c0.2-0.5,0.5-0.7,0.9-0.7c0.1,0,0.1,0,0.2,0v0.6
+ c-0.1,0-0.1,0-0.2,0c-0.4,0-0.7,0.3-0.8,0.8c0,0.1,0,0.2,0,0.3v1.8h-0.6V109.3z"/>
+ <path class="st4" d="M127.9,109.1c0-0.4,0-0.6,0-0.9h0.5l0,0.6h0c0.2-0.3,0.6-0.6,1.1-0.6c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-2
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V109.1z"/>
+ <path class="st4" d="M137.3,109.5c0-0.7-0.1-1.5-0.1-2h0c-0.2,0.5-0.4,1.1-0.6,1.8l-0.8,2.3h-0.5l-0.8-2.2
+ c-0.2-0.7-0.4-1.3-0.5-1.8h0c0,0.6,0,1.4-0.1,2.1l-0.1,2h-0.6l0.3-4.7h0.8l0.8,2.3c0.2,0.6,0.3,1.1,0.5,1.6h0
+ c0.1-0.5,0.3-1,0.5-1.6l0.8-2.3h0.8l0.3,4.7h-0.6L137.3,109.5z"/>
+ <path class="st4" d="M139.7,107.2c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4
+ C139.5,106.9,139.7,107,139.7,107.2z M139,111.6v-3.4h0.6v3.4H139z"/>
+ <path class="st4" d="M143.1,111.5c-0.2,0.1-0.5,0.2-1,0.2c-1,0-1.7-0.7-1.7-1.7c0-1,0.7-1.8,1.8-1.8c0.4,0,0.7,0.1,0.9,0.2
+ l-0.1,0.5c-0.1-0.1-0.4-0.2-0.7-0.2c-0.8,0-1.2,0.6-1.2,1.3c0,0.8,0.5,1.3,1.2,1.3c0.3,0,0.6-0.1,0.8-0.2L143.1,111.5z"/>
+ <path class="st4" d="M143.8,106.6h0.6v2.1h0c0.1-0.2,0.3-0.3,0.4-0.4c0.2-0.1,0.4-0.2,0.6-0.2c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-1.9
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V106.6z"/>
+ <path class="st4" d="M148.4,107.2c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4
+ C148.2,106.9,148.4,107,148.4,107.2z M147.7,111.6v-3.4h0.6v3.4H147.7z"/>
+ <path class="st4" d="M152.2,111.1c0,0.8-0.2,1.3-0.5,1.6c-0.3,0.3-0.8,0.4-1.2,0.4c-0.4,0-0.9-0.1-1.1-0.3l0.2-0.5
+ c0.2,0.1,0.6,0.3,1,0.3c0.6,0,1.1-0.3,1.1-1.2V111h0c-0.2,0.3-0.6,0.6-1.1,0.6c-0.8,0-1.4-0.7-1.4-1.7c0-1.1,0.7-1.8,1.5-1.8
+ c0.6,0,0.9,0.3,1.1,0.6h0l0-0.5h0.5c0,0.2,0,0.5,0,0.9V111.1z M151.6,109.5c0-0.1,0-0.2,0-0.3c-0.1-0.4-0.4-0.7-0.9-0.7
+ c-0.6,0-1,0.5-1,1.3c0,0.7,0.3,1.2,1,1.2c0.4,0,0.7-0.2,0.9-0.6c0-0.1,0-0.2,0-0.3V109.5z"/>
+ <path class="st4" d="M155.6,110.8c0,0.3,0,0.6,0,0.8h-0.6l0-0.4h0c-0.2,0.3-0.6,0.5-1,0.5c-0.7,0-1-0.5-1-1c0-0.8,0.7-1.3,2-1.3
+ v-0.1c0-0.3-0.1-0.8-0.8-0.8c-0.3,0-0.7,0.1-0.9,0.3l-0.1-0.4c0.3-0.2,0.7-0.3,1.1-0.3c1,0,1.3,0.7,1.3,1.4V110.8z M155,109.9
+ c-0.7,0-1.4,0.1-1.4,0.8c0,0.4,0.3,0.6,0.6,0.6c0.4,0,0.7-0.3,0.8-0.6c0-0.1,0-0.1,0-0.2V109.9z"/>
+ <path class="st4" d="M156.6,109.1c0-0.4,0-0.6,0-0.9h0.5l0,0.6h0c0.2-0.3,0.6-0.6,1.1-0.6c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-2
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V109.1z"/>
+ </g>
+ <g>
+ <path class="st4" d="M84.8,43.1v2.8c0,1.1,0.5,1.5,1.1,1.5c0.7,0,1.1-0.5,1.1-1.5v-2.8h0.6v2.8c0,1.4-0.8,2-1.8,2
+ c-1,0-1.7-0.5-1.7-2v-2.8H84.8z"/>
+ <path class="st4" d="M88.3,47.5c0-0.3,0.2-0.4,0.4-0.4s0.4,0.2,0.4,0.4c0,0.3-0.2,0.4-0.4,0.4C88.5,47.9,88.3,47.8,88.3,47.5z"/>
+ <path class="st4" d="M90,43.2c0.3,0,0.7-0.1,1.2-0.1c0.6,0,1,0.1,1.3,0.4c0.3,0.2,0.4,0.6,0.4,1c0,0.4-0.1,0.8-0.4,1
+ c-0.3,0.3-0.8,0.5-1.4,0.5c-0.2,0-0.4,0-0.5,0v1.9H90V43.2z M90.6,45.5c0.1,0,0.3,0,0.5,0c0.7,0,1.2-0.4,1.2-1
+ c0-0.6-0.4-0.9-1.1-0.9c-0.3,0-0.5,0-0.6,0V45.5z"/>
+ <path class="st4" d="M92.5,47.5c0-0.3,0.2-0.4,0.4-0.4s0.4,0.2,0.4,0.4c0,0.3-0.2,0.4-0.4,0.4C92.7,47.9,92.5,47.8,92.5,47.5z"/>
+ </g>
+ <g>
+ <path class="st4" d="M152.5,190.4c0.3,0.2,0.6,0.3,1,0.3c0.6,0,0.9-0.3,0.9-0.8c0-0.4-0.2-0.7-0.8-0.9c-0.7-0.3-1.2-0.7-1.2-1.3
+ c0-0.7,0.6-1.3,1.4-1.3c0.4,0,0.8,0.1,1,0.2l-0.2,0.5c-0.1-0.1-0.4-0.2-0.8-0.2c-0.6,0-0.8,0.4-0.8,0.7c0,0.4,0.3,0.7,0.9,0.9
+ c0.8,0.3,1.1,0.7,1.1,1.4c0,0.7-0.5,1.4-1.6,1.4c-0.4,0-0.9-0.1-1.1-0.3L152.5,190.4z"/>
+ <path class="st4" d="M158.7,189.4c0,1.3-0.8,1.8-1.6,1.8c-0.9,0-1.5-0.7-1.5-1.7c0-1.1,0.7-1.8,1.6-1.8
+ C158.1,187.6,158.7,188.4,158.7,189.4z M156.2,189.4c0,0.7,0.4,1.3,1,1.3c0.6,0,1-0.6,1-1.3c0-0.6-0.3-1.3-1-1.3
+ C156.5,188.1,156.2,188.8,156.2,189.4z"/>
+ <path class="st4" d="M162.1,190.2c0,0.4,0,0.7,0,0.9h-0.5l0-0.6h0c-0.1,0.3-0.5,0.6-1.1,0.6c-0.5,0-1.1-0.3-1.1-1.5v-2h0.6v1.9
+ c0,0.6,0.2,1.1,0.7,1.1c0.4,0,0.7-0.3,0.8-0.6c0-0.1,0.1-0.2,0.1-0.3v-2.1h0.6V190.2z"/>
+ <path class="st4" d="M163.8,186.9v0.8h0.8v0.5h-0.8v1.8c0,0.4,0.1,0.7,0.4,0.7c0.2,0,0.3,0,0.3,0l0,0.5c-0.1,0-0.3,0.1-0.5,0.1
+ c-0.3,0-0.5-0.1-0.6-0.3c-0.2-0.2-0.2-0.5-0.2-0.9v-1.8h-0.5v-0.5h0.5v-0.6L163.8,186.9z"/>
+ <path class="st4" d="M165.3,186.1h0.6v2.1h0c0.1-0.2,0.2-0.3,0.4-0.4c0.2-0.1,0.4-0.2,0.6-0.2c0.4,0,1.1,0.3,1.1,1.4v2h-0.6v-1.9
+ c0-0.5-0.2-1-0.7-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V186.1z"/>
+ <path class="st4" d="M169.3,189.5c0,0.8,0.5,1.2,1.1,1.2c0.4,0,0.7-0.1,0.9-0.2l0.1,0.4c-0.2,0.1-0.6,0.2-1.1,0.2
+ c-1,0-1.6-0.7-1.6-1.7c0-1,0.6-1.8,1.5-1.8c1.1,0,1.3,1,1.3,1.6c0,0.1,0,0.2,0,0.3H169.3z M171,189.1c0-0.4-0.2-1-0.8-1
+ c-0.6,0-0.8,0.6-0.9,1H171z"/>
+ <path class="st4" d="M174.5,190.3c0,0.3,0,0.6,0,0.8H174l0-0.4h0c-0.2,0.3-0.5,0.5-1,0.5c-0.6,0-1-0.5-1-1c0-0.8,0.7-1.3,1.9-1.3
+ v-0.1c0-0.3-0.1-0.8-0.7-0.8c-0.3,0-0.6,0.1-0.8,0.3l-0.1-0.4c0.3-0.2,0.7-0.3,1.1-0.3c1,0,1.2,0.7,1.2,1.4V190.3z M173.9,189.4
+ c-0.6,0-1.4,0.1-1.4,0.8c0,0.4,0.3,0.6,0.5,0.6c0.4,0,0.7-0.3,0.8-0.6c0-0.1,0-0.1,0-0.2V189.4z"/>
+ <path class="st4" d="M175.4,190.5c0.2,0.1,0.5,0.2,0.8,0.2c0.4,0,0.6-0.2,0.6-0.5c0-0.3-0.2-0.4-0.6-0.6c-0.6-0.2-0.9-0.6-0.9-1
+ c0-0.5,0.4-1,1.1-1c0.3,0,0.6,0.1,0.8,0.2l-0.1,0.4c-0.1-0.1-0.4-0.2-0.7-0.2c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.4,0.6,0.6
+ c0.5,0.2,0.8,0.5,0.8,1c0,0.6-0.4,1-1.2,1c-0.4,0-0.7-0.1-0.9-0.2L175.4,190.5z"/>
+ <path class="st4" d="M178.8,186.9v0.8h0.8v0.5h-0.8v1.8c0,0.4,0.1,0.7,0.4,0.7c0.2,0,0.3,0,0.3,0l0,0.5c-0.1,0-0.3,0.1-0.5,0.1
+ c-0.3,0-0.5-0.1-0.6-0.3c-0.2-0.2-0.2-0.5-0.2-0.9v-1.8h-0.5v-0.5h0.5v-0.6L178.8,186.9z"/>
+ <path class="st4" d="M156.3,197.4c0-0.7-0.1-1.5-0.1-2h0c-0.2,0.5-0.3,1.1-0.6,1.8l-0.8,2.3h-0.4l-0.7-2.2
+ c-0.2-0.7-0.4-1.3-0.5-1.8h0c0,0.6,0,1.4-0.1,2.1l-0.1,2h-0.5l0.3-4.7h0.7l0.8,2.3c0.2,0.6,0.3,1.1,0.4,1.6h0
+ c0.1-0.5,0.3-1,0.5-1.6l0.8-2.3h0.7l0.3,4.7h-0.6L156.3,197.4z"/>
+ <path class="st4" d="M158.6,195.2c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.1-0.4,0.4-0.4
+ C158.4,194.8,158.6,194.9,158.6,195.2z M157.9,199.5v-3.4h0.6v3.4H157.9z"/>
+ <path class="st4" d="M161.7,199.4c-0.2,0.1-0.5,0.2-0.9,0.2c-1,0-1.6-0.7-1.6-1.7c0-1,0.7-1.8,1.7-1.8c0.3,0,0.6,0.1,0.8,0.2
+ l-0.1,0.5c-0.1-0.1-0.4-0.2-0.7-0.2c-0.7,0-1.1,0.6-1.1,1.3c0,0.8,0.5,1.3,1.1,1.3c0.3,0,0.5-0.1,0.7-0.2L161.7,199.4z"/>
+ <path class="st4" d="M162.4,194.5h0.6v2.1h0c0.1-0.2,0.2-0.3,0.4-0.4c0.2-0.1,0.4-0.2,0.6-0.2c0.4,0,1.1,0.3,1.1,1.4v2h-0.6v-1.9
+ c0-0.5-0.2-1-0.7-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V194.5z"/>
+ <path class="st4" d="M166.7,195.2c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.1-0.4,0.4-0.4
+ C166.6,194.8,166.7,194.9,166.7,195.2z M166.1,199.5v-3.4h0.6v3.4H166.1z"/>
+ <path class="st4" d="M170.4,199c0,0.8-0.2,1.3-0.5,1.6c-0.3,0.3-0.8,0.4-1.2,0.4c-0.4,0-0.8-0.1-1.1-0.3l0.1-0.5
+ c0.2,0.1,0.5,0.3,0.9,0.3c0.6,0,1-0.3,1-1.2v-0.4h0c-0.2,0.3-0.5,0.6-1,0.6c-0.8,0-1.4-0.7-1.4-1.7c0-1.1,0.7-1.8,1.4-1.8
+ c0.6,0,0.9,0.3,1,0.6h0l0-0.5h0.5c0,0.2,0,0.5,0,0.9V199z M169.8,197.5c0-0.1,0-0.2,0-0.3c-0.1-0.4-0.4-0.7-0.8-0.7
+ c-0.6,0-1,0.5-1,1.3c0,0.7,0.3,1.2,0.9,1.2c0.4,0,0.7-0.2,0.8-0.6c0-0.1,0-0.2,0-0.3V197.5z"/>
+ <path class="st4" d="M173.6,198.7c0,0.3,0,0.6,0,0.8h-0.5l0-0.4h0c-0.2,0.3-0.5,0.5-1,0.5c-0.6,0-1-0.5-1-1c0-0.8,0.7-1.3,1.9-1.3
+ v-0.1c0-0.3-0.1-0.8-0.7-0.8c-0.3,0-0.6,0.1-0.8,0.3l-0.1-0.4c0.3-0.2,0.7-0.3,1.1-0.3c1,0,1.2,0.7,1.2,1.4V198.7z M173,197.8
+ c-0.6,0-1.4,0.1-1.4,0.8c0,0.4,0.3,0.6,0.5,0.6c0.4,0,0.7-0.3,0.8-0.6c0-0.1,0-0.1,0-0.2V197.8z"/>
+ <path class="st4" d="M174.5,197c0-0.4,0-0.6,0-0.9h0.5l0,0.6h0c0.2-0.3,0.5-0.6,1.1-0.6c0.4,0,1.1,0.3,1.1,1.4v2h-0.6v-2
+ c0-0.5-0.2-1-0.7-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V197z"/>
+ </g>
+ <g>
+ <path class="st4" d="M101.1,195.3l-1.2-4.7h0.6l0.6,2.4c0.1,0.6,0.3,1.2,0.4,1.6h0c0.1-0.5,0.2-1,0.4-1.6l0.6-2.4h0.6l0.6,2.4
+ c0.1,0.6,0.3,1.1,0.3,1.6h0c0.1-0.5,0.2-1,0.4-1.6l0.6-2.4h0.6l-1.3,4.7h-0.6l-0.6-2.5c-0.1-0.6-0.2-1.1-0.3-1.5h0
+ c-0.1,0.5-0.2,0.9-0.4,1.5l-0.7,2.5H101.1z"/>
+ <path class="st4" d="M106.3,193.7c0,0.8,0.5,1.2,1.2,1.2c0.4,0,0.7-0.1,0.9-0.2l0.1,0.4c-0.2,0.1-0.6,0.2-1.1,0.2
+ c-1,0-1.7-0.7-1.7-1.7c0-1,0.6-1.8,1.6-1.8c1.1,0,1.4,1,1.4,1.6c0,0.1,0,0.2,0,0.3H106.3z M108.1,193.3c0-0.4-0.2-1-0.9-1
+ c-0.6,0-0.9,0.6-0.9,1H108.1z"/>
+ <path class="st4" d="M109.4,194.7c0.2,0.1,0.5,0.2,0.8,0.2c0.4,0,0.7-0.2,0.7-0.5c0-0.3-0.2-0.4-0.6-0.6c-0.6-0.2-0.9-0.6-0.9-1
+ c0-0.5,0.4-1,1.2-1c0.3,0,0.6,0.1,0.8,0.2l-0.1,0.4c-0.1-0.1-0.4-0.2-0.7-0.2c-0.4,0-0.6,0.2-0.6,0.5c0,0.3,0.2,0.4,0.6,0.6
+ c0.6,0.2,0.9,0.5,0.9,1c0,0.6-0.5,1-1.3,1c-0.4,0-0.7-0.1-1-0.2L109.4,194.7z"/>
+ <path class="st4" d="M113,191.1v0.8h0.9v0.5H113v1.8c0,0.4,0.1,0.7,0.5,0.7c0.2,0,0.3,0,0.4,0l0,0.5c-0.1,0-0.3,0.1-0.5,0.1
+ c-0.3,0-0.5-0.1-0.7-0.3c-0.2-0.2-0.2-0.5-0.2-0.9v-1.8h-0.5v-0.5h0.5v-0.6L113,191.1z"/>
+ <path class="st4" d="M120.1,193.2c0-0.7-0.1-1.5-0.1-2h0c-0.2,0.5-0.4,1.1-0.6,1.8l-0.8,2.3h-0.5l-0.8-2.2
+ c-0.2-0.7-0.4-1.3-0.5-1.8h0c0,0.6,0,1.4-0.1,2.1l-0.1,2H116l0.3-4.7h0.8l0.8,2.3c0.2,0.6,0.3,1.1,0.5,1.6h0
+ c0.1-0.5,0.3-1,0.5-1.6l0.8-2.3h0.8l0.3,4.7h-0.6L120.1,193.2z"/>
+ <path class="st4" d="M122.5,191c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4C122.3,190.6,122.5,190.8,122.5,191
+ z M121.8,195.3v-3.4h0.6v3.4H121.8z"/>
+ <path class="st4" d="M125.8,195.2c-0.2,0.1-0.5,0.2-1,0.2c-1,0-1.7-0.7-1.7-1.7c0-1,0.7-1.8,1.8-1.8c0.4,0,0.7,0.1,0.9,0.2
+ l-0.1,0.5c-0.1-0.1-0.4-0.2-0.7-0.2c-0.8,0-1.2,0.6-1.2,1.3c0,0.8,0.5,1.3,1.2,1.3c0.3,0,0.6-0.1,0.8-0.2L125.8,195.2z"/>
+ <path class="st4" d="M126.6,190.3h0.6v2.1h0c0.1-0.2,0.3-0.3,0.4-0.4c0.2-0.1,0.4-0.2,0.6-0.2c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-1.9
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V190.3z"/>
+ <path class="st4" d="M131.1,191c0,0.2-0.1,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4s0.2-0.4,0.4-0.4C131,190.6,131.1,190.8,131.1,191z
+ M130.4,195.3v-3.4h0.6v3.4H130.4z"/>
+ <path class="st4" d="M135,194.8c0,0.8-0.2,1.3-0.5,1.6c-0.3,0.3-0.8,0.4-1.2,0.4c-0.4,0-0.9-0.1-1.1-0.3l0.2-0.5
+ c0.2,0.1,0.6,0.3,1,0.3c0.6,0,1.1-0.3,1.1-1.2v-0.4h0c-0.2,0.3-0.6,0.6-1.1,0.6c-0.8,0-1.4-0.7-1.4-1.7c0-1.1,0.7-1.8,1.5-1.8
+ c0.6,0,0.9,0.3,1.1,0.6h0l0-0.5h0.5c0,0.2,0,0.5,0,0.9V194.8z M134.4,193.3c0-0.1,0-0.2,0-0.3c-0.1-0.4-0.4-0.7-0.9-0.7
+ c-0.6,0-1,0.5-1,1.3c0,0.7,0.3,1.2,1,1.2c0.4,0,0.7-0.2,0.9-0.6c0-0.1,0-0.2,0-0.3V193.3z"/>
+ <path class="st4" d="M138.4,194.5c0,0.3,0,0.6,0,0.8h-0.6l0-0.4h0c-0.2,0.3-0.6,0.5-1,0.5c-0.7,0-1-0.5-1-1c0-0.8,0.7-1.3,2-1.3
+ v-0.1c0-0.3-0.1-0.8-0.8-0.8c-0.3,0-0.7,0.1-0.9,0.3l-0.1-0.4c0.3-0.2,0.7-0.3,1.1-0.3c1,0,1.3,0.7,1.3,1.4V194.5z M137.8,193.6
+ c-0.7,0-1.4,0.1-1.4,0.8c0,0.4,0.3,0.6,0.6,0.6c0.4,0,0.7-0.3,0.8-0.6c0-0.1,0-0.1,0-0.2V193.6z"/>
+ <path class="st4" d="M139.4,192.8c0-0.4,0-0.6,0-0.9h0.5l0,0.6h0c0.2-0.3,0.6-0.6,1.1-0.6c0.5,0,1.2,0.3,1.2,1.4v2h-0.6v-2
+ c0-0.5-0.2-1-0.8-1c-0.4,0-0.7,0.3-0.8,0.6c0,0.1,0,0.2,0,0.3v2h-0.6V192.8z"/>
+ </g>
+ <rect id="up-rect" x="82.8" y="42" class="text-rect st5" width="11.8" height="7.5"/>
+ <rect id="nm-rect" x="103" y="105.6" class="text-rect st5" width="57.8" height="7.5"/>
+ <rect id="mm-rect" x="116.8" y="150.7" class="text-rect st5" width="43.5" height="7.5"/>
+ <rect id="wm-rect" x="98.6" y="189.1" class="text-rect st5" width="45.2" height="7.5"/>
+ <rect id="sm-rect" x="151.2" y="185.2" class="text-rect st5" width="30.6" height="16.6"/>
+</g>
+</svg>
\ No newline at end of file
--- /dev/null
+ <?php if (!is_post_type("ai1ec_event")) { ?>
+ <div class="addthis_wrapper">
+ <!-- AddThis Button BEGIN -->
+ <div class="addthis_toolbox addthis_default_style ">
+ <a class="addthis_counter addthis_pill_style"></a>
+ </div>
+ <script type="text/javascript">var addthis_config = {"data_track_addressbar":false};</script>
+ <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5135fe4558d287a9"></script>
+ <!-- <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js"></script>-->
+ <!-- AddThis Button END -->
+ </div><!--/#addthis_wrapper-->
+<?php } ?>
\ No newline at end of file
+++ /dev/null
-<?php if (is_front_page()) : ?>
- <div id="slideshow">
- <?php if ( is_active_sidebar( 'slideshow' ) ) : ?>
- <?php dynamic_sidebar( 'slideshow' ); ?>
- <?php endif; ?>
- </div>
-<?php endif; ?>
--- /dev/null
+<?php if (is_front_page()) : ?>
+ <div class="slideshow-blocks-container">
+ <div class="row">
+ <div id="slideshow" class="small-12 large-8 columns">
+ <ul>
+ <?php if ( is_active_sidebar( 'slideshow' ) ) : ?>
+ <?php dynamic_sidebar( 'slideshow' ); ?>
+ <?php endif; ?>
+ </ul>
+ </div>
+ <div class="small-12 large-4 columns">
+ posts
+ </div>
+ </div>
+ </div>
+<?php endif; ?>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg id="escanaba-map" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 930 400" enable-background="new 0 0 930 400" xml:space="preserve">
+<g id="water">
+ <rect y="0.001" fill="#006998" width="900.003" height="400"/>
+ <rect y="0" fill="#006998" width="929.997" height="400"/>
+</g>
+<g id="Land">
+ <g>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#97C93D" d="M311.444,340.267c-1.482-1.915-3.416-3.409-3.876-5.265
+ c-0.552-2.232-2.174-1.954-3.43-2.332c-0.409-0.123-1.595,1.223-1.889,2.08c-0.418,1.217-0.555,2.623-0.43,3.912
+ c0.298,3.071,0.764,6.129,1.296,9.169c0.112,0.641,0.825,1.165,1.21,1.774c0.489,0.772,1.037,1.535,1.358,2.378
+ c0.441,1.156,0.323,2.968,1.103,3.457c1.552,0.974,3.282,0.742,4.892-0.801c2.004-1.919,3.56-3.859,4.483-6.585
+ c1.205-3.557,0.154-6.28-1.748-9.121C313.312,339.428,312.414,339.831,311.444,340.267z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#97C93D" d="M257.552,373.443c-0.222-0.155-0.714-0.094-1,0.039
+ c-1.887,0.881-3.503,1.94-3.318,4.429c0.199,2.682,0.263,5.374,0.386,8.062c4.865-0.754,5.499,4.965,9.611,6.082
+ c0.235-4.524,0.474-8.837,0.66-13.152c0.017-0.402-0.179-0.974-0.479-1.204C261.495,376.233,259.534,374.822,257.552,373.443z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#97C93D" d="M291.645,315.641c0.018-0.08-0.038-0.175-0.213-0.903
+ c-1.456,0.323-3.518,0.197-4.007,1.009c-1.093,1.815-1.794,4.084-1.87,6.196c-0.04,1.123,1.348,2.614,2.476,3.367
+ c0.985,0.658,2.51,0.515,3.796,0.726c0.092-1.102,0.686-2.782,0.192-3.209C289.249,320.441,291.104,318.049,291.645,315.641z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#97C93D" d="M300.556,361.152c-0.987,0.626-2.482,1.158-2.467,1.643
+ c0.048,1.515,0.564,3.053,1.14,4.487c0.133,0.332,1.409,0.577,1.825,0.322c0.408-0.25,0.593-1.212,0.52-1.819
+ C301.42,364.497,301.033,363.236,300.556,361.152z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#97C93D" d="M550.116,0.066c0-0.021,0-0.043,0-0.064
+ c-183.371,0-366.746,0-550.116,0C0,133.328,0,266.673,0,400c13.661-0.003,34.022-0.43,47.676,0c2.659,0.084,4.927-1.22,5.334-4
+ c0.829-5.653,4.572-10.157,6.835-15.083c1.764-3.841,0.592-8.991,2.167-12.917c0.637-1.589-0.574-3.611,0.235-5.104
+ c1.676-3.093,3.599-5.617,4.718-9.015c1.4-4.25,2.147-8.569,6.745-12.265c1.16-0.932,1.923-2.934,2.672-4.549
+ c0.914-1.969,2.703-4.158,3.717-6.067c3.999-7.524,8.86-13.851,12.252-21.583c1.383-2.542,3.631-4.267,4.501-6.917
+ c0.875-2.667,2.053-5.079,3.717-4.519c2.262-5.926,5.314-8.295,11.314-11.093c2.237-1.043,4.317-4.283,6.572-5.256
+ c3.042-1.314,5.913-2.68,9.175-3.238c2.329-0.398,4.704-1.733,4.572-4.309c-0.228-4.449-0.701-4.701,3.563-6.104
+ c3.608-1.187,5.56-2.753,9.804-3.958c-1.361-0.891-2.286-1.497-3.197-2.094c-2.037,4.482-5.314,2.127-8.3,3.884
+ c-0.116-0.234-0.231-0.468-0.347-0.703c1.152-0.578,2.248-1.367,3.468-1.695c3.345-0.898,3.579-2.726,4.615-5.756
+ c0.499-1.459,1.756-2.653,2.614-4.002c0.37-0.582,0.799-1.235,0.858-1.886c0.309-3.433,1.924-5.177,5.996-5.565
+ c-1.344-1.748-2.251-3.429-3.605-4.592c-3.727-3.198-5.402-9.074-2.651-13.034c2.419-3.483,2.085-7.072,1.93-10.729
+ c-0.188-4.452,1.064-6.144,2.579-10.52c0.354-1.021,1.203-3.444,1.917-4.167c2.18-2.207,3.763-5.072,4.834-8.167
+ c0.399-1.154,0.916-2.098,2.501-2.5c3.989-1.013,6.941-3.566,10.265-6.289c-2.301-1.713-3.285-3.336-5.43-4.795
+ c-1.753-1.402-1.797-2.739,0.365-4.614c1.168-1.013,0.66-1.429,1.713-2.543c0.849-0.899,3.258-1.462,1.218-3.505
+ c-0.12-0.12,0.606-1.134,0.996-1.692c0.812-1.159,2.121-2.19,2.404-3.456c0.582-2.607,1.896-3.963,4.534-4.253
+ c0.765-0.084,1.483-0.583,2.95-1.196c-1.251-0.603-1.927-0.862-2.53-1.238c-0.561-0.35-1.44-0.797-1.47-1.248
+ c-0.045-0.688,0.387-1.925,0.849-2.045c3.168-0.826,3.443-3.346,3.82-5.883c0.065-0.438,0.308-0.849,0.54-1.46
+ c0.7,0.494,1.319,0.931,2.095,1.479c1.065-0.908,2.137-1.822,3.627-3.093c0,0.954-0.148,1.503,0.029,1.912
+ c0.472,1.09,1.085,2.12,1.641,3.174c1.15-0.896,2.333-1.754,3.437-2.703c0.67-0.575,0.934,0.016,1.538-0.637
+ c0.49,0.966,0.881,1.394,0.667,2.167c-0.49,1.762-0.292,3.662-1.6,4.156c-1.437,0.542-3.618,0.085-5.446-0.518
+ c-0.568-0.187-1.046-0.647-1.565-0.982c-0.196,0.196-0.393,0.393-0.589,0.589c0.726,0.682,1.343,1.587,2.199,2.005
+ c2.583,1.261,3.834,2.491,4.088,5.179c0.257,2.722,0.523,5.494,0.255,8.192c-0.127,1.274-1.229,2.832-2.348,3.554
+ c-2.686,1.733-4.529,3.708-5.073,7.033c-0.229,1.4-1.523,2.853-2.711,3.822c-2.166,1.766-4.156,3.492-4.888,6.356
+ c-0.912,3.569-4.057,3.728-7.377,4.046c1.449,3.798,0.151,8.24,4.597,10.647c2.263,1.225,2.765,3.527,2.032,5.984
+ c-0.695,2.33-0.78,4.364,1.467,6.112c0.786,0.611,1.277,2.095,1.247,3.161c-0.101,3.5-0.607,6.987-0.73,10.488
+ c-0.038,1.091,0.413,2.365,1.042,3.281c1.68,2.444,1.82,5.082,1.539,7.863c-0.21,2.08-0.452,4.166-0.488,6.252
+ c-0.054,3.084-0.265,5.973-1.456,9.015c-1.061,2.711-0.455,6.082-0.514,9.163c-0.017,0.902,0.362,1.823,0.284,2.712
+ c-0.184,2.093,0.657,3.257,2.727,3.683c2.348,0.484,3.019,2.035,2.66,4.287c-0.301,1.889-0.53,3.804-0.589,5.713
+ c-0.037,1.193,0.301,2.398,0.471,3.597c0.272,0.039,0.545,0.078,0.817,0.117c0.601-1.242,1.129-2.526,1.82-3.716
+ c1.107-1.905,2.432-3.692,3.453-5.638c0.655-1.249,1.065-2.668,1.35-4.059c0.845-4.118,3.255-6.252,7.317-6.392
+ c1.433-0.049,2.315,0.142,2.661,1.902c0.524,2.662,1.698,3.026,3.618,1.279c1.24-1.128,2.404-2.451,3.225-3.898
+ c1.584-2.789,4.282-3.34,6.981-3.539c1.931-0.142,3.934,0.408,5.876,0.79c1.715,0.338,3.287,0.22,3.8-1.636
+ c0.532-1.924,1.85-2.292,3.476-2.442c0.73-0.067,1.474-0.068,2.187-0.218c3.964-0.831,4.587-2.083,3.197-5.786
+ c-0.568-1.514-0.907-3.141-1.117-4.747c-0.095-0.729,0.152-1.726,0.628-2.267c2.58-2.931,5.27-5.767,7.943-8.616
+ c1.145-1.221,2.024-2.301,0.392-3.916c-1.442-1.427-1.12-3.1,0.449-4.24c1.453-1.055,3.129-1.804,4.706-2.69
+ c0.891-0.5,1.779-1.006,2.697-1.525c-1.179-1.238-2.452-2.02-2.878-3.125c-1.344-3.486,2.125-7.21,6.322-6.689
+ c2.183,0.271,3.272,0.052,3.882-2.378c0.619-2.467,2.476-4.643,3-7.112c0.828-3.905-0.248-7.452-3.951-9.702
+ c-1.507-0.915-1.755-1.81-1.025-3.576c0.9-2.178,1.524-4.646,1.516-6.986c-0.02-5.871,0.331-6.648,5.824-8.565
+ c0.517-0.181,1.035-0.361,1.545-0.559c5.488-2.135,7.723-1.366,10.643,3.828c0.753,1.339,1.165,2.865,1.858,4.242
+ c0.433,0.86,1.012,2.196,1.676,2.292c2.437,0.353,2.923,2.07,3.378,4.471c4.596-3.484,8.709-1.524,12.923,0.455
+ c1.343,0.631,3.029,0.509,4.536,0.833c1.028,0.221,2.256,0.349,2.979,0.987c1.721,1.518,3.127,1.702,4.194,0.049
+ c1.711,0.319,3.131,0.583,4.551,0.847c0-1.459,0-2.919,0-4.756c1.045,0.208,1.907,0.345,2.751,0.552
+ c3.159,0.777,3.904,0.12,3.349-3.029c-0.611-3.468-1.152-7.186,0.956-10.088c1.798-2.475,4.683-4.167,7.087-6.205
+ c4.717,1.761,5.893-1.77,7.313-4.885c0.677-1.484,0.731-2.216,1.637-3.557c2.084-3.083,4.418-2.25,8.002-0.417
+ c8.462,4.329,12.669,5.167,13.854,13.494c0.244,1.715,0.998,3.388,0.922,5.106c-0.206,4.632-1.278,5.868-5.495,6.809
+ c0,0.183-0.053,0.384,0.008,0.541c1.434,3.713,1.417,3.639-2.428,4.627c-0.955,0.245-2.297,0.978-2.51,1.748
+ c-0.737,2.658-1.789,5.558-1.346,8.13c0.566,3.293,0.487,5.889-2.257,7.623c-1.515,0.353-3.82,0.229-4.383,1.155
+ c-1.259,2.074-2.094,4.657-2.169,7.061c-0.028,0.914,2.44,2.018,3.885,2.834c1.636,0.923,3.649,1.321,5.051,2.482
+ c2.059,1.706,1.646,3.445-0.858,5.696c-1.951,1.753-3.44,1.669-5.195-0.152c-1.197-1.242-2.376-2.582-3.809-3.498
+ c-2.738-1.75-5.227-0.792-6.426,2.186c-0.263,0.654-0.634,1.265-1.291,2.555c-0.798-1.343-1.717-2.215-1.808-3.166
+ c-0.325-3.384-0.218-3.394-3.801-1.985c0.054-0.586,0.048-1.063,0.152-1.514c0.12-0.517,0.339-1.012,0.706-2.063
+ c-2.349,0.174-4.348,0.323-7.093,0.527c0.762,1.756,1.26,3.012,1.847,4.225c0.481,0.993,1.068,1.935,1.607,2.9
+ c-1.13,0.069-2.26,0.137-3.645,0.221c-0.491,0.897-1.186,2.165-2.086,3.808c1.072,0.123,2.457,0.732,3.199,0.283
+ c2.168-1.311,3.376-0.263,4.828,1.427c-4.184,1.667-0.429,5.87-2.818,8.352c-0.376-1.991-0.731-3.868-1.086-5.747
+ c-3.053,0.667-3.375,1.322-2.669,3.93c0.179,0.662-0.243,1.783-0.776,2.285c-2.091,1.972-4.118,3.844-4.105,7.09
+ c0.002,0.48-1.639,1.46-2.418,1.366c-4.421-0.528-5.902,1.001-4.752,5.526c-0.908-0.082-1.733-0.156-3.338-0.3
+ c1.261,2.027,2.26,3.609,3.232,5.208c0.311,0.512,0.785,1.064,0.787,1.6c0.015,3.628-4.665,9.917-8.233,10.675
+ c-1.471,0.312-3.317,0.015-4.691-0.635c-1.978-0.936-3.53-0.742-5.009,0.644c-2.562,2.4-3.783,5.364-3.216,8.867
+ c0.579,3.579,1.255,7.148,2.042,10.687c0.211,0.949,0.981,1.774,1.74,3.076c0.625-4.639,1.984-5.309,5.72-3.179
+ c-1.904,2.036-1.09,3.875,0.487,5.65c0.293,0.33,0.646,0.808,0.616,1.19c-0.422,5.229,3.82,6.785,7.16,8.973
+ c2.483,1.627,5.058,3.149,7.725,4.446c1.147,0.558,2.716,0.815,3.946,0.544c3.998-0.88,9.438,2.62,10.178,6.726
+ c0.147,0.816,0.63,1.572,0.958,2.356c1.097-0.58,2.359-0.988,3.225-1.81c0.464-0.44,0.609-1.813,0.263-2.383
+ c-0.885-1.458-1.923-2.984-3.279-3.956c-1.459-1.046-1.52-2.154-1.568-3.707c-0.059-1.915-0.661-3.814-1.04-5.718
+ c-0.457-2.292-1.031-4.567-1.365-6.876c-0.4-2.767-1.079-5.614-0.783-8.334c0.537-4.924,4.352-6.857,9.021-5.093
+ c1.629,0.615,3.3,1.12,5.325,1.8c-0.382-2.927-0.771-5.161-0.898-7.411c-0.031-0.546,0.699-1.282,1.257-1.687
+ c1.847-1.341,1.909-3.076,1.605-5.12c-0.463-3.113-1.62-6.372,0.293-9.326c1.057-1.632,2.561-4.018,4.024-4.14
+ c3.391-0.281,6.89,0.545,10.318,1.091c0.531,0.085,0.826,1.19,1.394,1.594c1.296,0.922,3.008,1.122,3.184-0.743
+ c0.236-2.499,1.25-3.839,3.567-4.457c0.266-0.071,0.429-0.522,0.728-0.911c-1.373-1.205-4.43-1.292-3.357-3.817
+ c0.544-1.281,2.555-1.943,4.367-3.21c-1.28-0.888-2.724-1.704-3.929-2.785c-0.9-0.807-1.493-1.954-2.222-2.949
+ c1.176-0.818,2.305-2.229,3.539-2.327c2.435-0.194,4.629-0.219,6.4-2.338c0.478-0.571,2.21-0.573,3.116-0.213
+ c1.591,0.632,2.971,1.776,4.473,2.647c1.629,0.946,2.558,0.849,2.946-1.404c0.388-2.25,1.232-4.469,2.187-6.56
+ c0.812-1.777,2.171-1.538,3.567-0.366c1.801,1.512,3.703,2.904,5.799,4.531c1.094-1.901,2.021-3.511,3.011-5.23
+ c1.394,0.822,2.607,1.537,4.314,2.543c0.16-1.515,0.267-2.531,0.306-2.899c0.775-1.071,1.561-1.661,1.557-2.246
+ c-0.011-1.735,0.013-3.239,2.003-4.001c0.347-0.133,0.599-1.199,0.472-1.734c-0.316-1.327-1.649-3.235-1.2-3.775
+ c1.578-1.895,3.578-3.581,5.721-4.829c1.943-1.132,4.041-0.793,5.603,1.244c0.554,0.723,1.469,1.172,2.461,1.932
+ c0.361-1.35,0.604-2.26,0.923-3.451c1.043,0.647,1.923,1.083,2.675,1.679c3.704,2.935,5.15,2.977,8.934,0.373
+ c0.609-0.419,1.51-0.417,2.535-0.674c0.055-0.5,0.152-1.371,0.258-2.326c0.85-0.195,1.637-0.375,2.578-0.591
+ c-0.123-0.348-0.155-0.716-0.35-0.952c-2.478-2.994-2.77-7.57-0.247-10.397c1.537-1.721,1.672-3.323,0.894-5.235
+ c-1.041-2.558-1.598-4.871,1.706-6.376c0.605-0.275,1.06-1.704,0.962-2.526c-0.3-2.529,0.473-4.217,2.901-5.216
+ c2.243-0.923,2.568-2.228,0.783-4.133c-1.591-1.698-2.046-3.798-1.162-6.102c0.781-2.037,1.458-4.114,2.146-6.185
+ c0.505-1.523,2.067-3.011,0.224-4.663c-0.097-0.087-0.12-0.438-0.036-0.518c2.449-2.327,1.794-3.769,1.195-6.551
+ c-0.048-0.221,1.917-0.123,2.086-0.322c3.949-4.647,7.028-8.816,12.852-12.062c2.882-1.245,4.756-2.116,4.493-5.188
+ c-0.25-2.917,0.546-3.065,2.834-3.833c2.822-0.948,2.586,0.533,4.501-2.25c0.207-0.3,3.05-0.222,3.584,0.25
+ c3.658,3.234,8.35,0.788,11.252-3.083c1.339-1.786,1.494-2.742,3.334-4c2.345-1.603,3.994-2.044,6.835-0.417
+ c2.109,1.208,4.483-0.588,6.909,0.069c0.086,0.023,0.209-0.032,0.27,0.011c4.636,3.315,9.445,1.704,14.522,0.095
+ c0.222-2.254,2.213-3.028,4.541-3.23c5.909-0.511,11.845-1.495,17.728-1.258c4.756,0.192,9.462,1.839,14.169,2.933
+ c2.387,0.555,4.732,1.309,7.093,1.976c0.001,0.023,0.002,0.057,0.003,0.057c18.546,8.984,35.727,23.069,57.881,19.684
+ c7.788-1.193,11.928-14.765,17.575-18.728c35.748-25.279,137.885,16.178,138.165-45.657
+ c25.171-10.566,127.633-45.001,151.944-52.277C926.512,24.757,930,0.001,930,0.001S555.796,0.067,550.116,0.066z M65.389,109.675
+ c-0.327,0.645-1.185,1.023-1.799,1.524c-0.143-0.757-0.427-1.519-0.397-2.269c0.045-1.109,0.513-2.225,0.43-3.309
+ c-0.077-1.005-0.641-1.973-0.99-2.958C64.352,104.737,66.98,106.535,65.389,109.675z M192.446,254.674
+ c-0.936-2.796-0.085-4.312,2.479-5.314c0.257,0.19,0.514,0.38,0.771,0.571C194.68,251.413,193.665,252.894,192.446,254.674z
+ M211.256,227.272c-0.921,0.456-1.841,0.913-2.762,1.369c-0.291-0.112-0.581-0.224-0.872-0.336
+ c0.164-1.197,0.328-2.394,0.491-3.591c1.126,0.567,2.251,1.134,3.377,1.7C211.413,226.701,211.334,226.987,211.256,227.272z
+ M269.433,18.598c-0.757,0.386-2.313,0.547-2.655,0.123c-0.66-0.816-1.073-2.182-0.891-3.196c0.118-0.656,1.481-1.547,2.271-1.532
+ c1.626,0.031,3.241,0.598,4.861,0.945c0.032,0.345,0.064,0.689,0.095,1.034C271.898,16.867,270.762,17.92,269.433,18.598z
+ M306.475,159.314c-2.699-1.225-4.636-0.169-6.764-1.244c0.766-2.357,1.321-4.123,1.915-5.876c0.457-1.348,0.729-2.848,1.53-3.959
+ c0.528-0.732,2.128-1.482,2.761-1.187c1.281,0.598,2.974,1.773,3.174,2.936c0.563,3.277,0.363,4.087,0.534,7.433
+ C309.727,159.397,308.097,160.051,306.475,159.314z M376.106,45.6c-0.116,0.687-0.959,1.537-0.749,1.944
+ c0.969,1.883-0.481,2.094-1.3,2.648c-0.655-2.268-1.234-4.272-1.626-5.63c0.614-2.05,1.122-3.745,1.794-5.99
+ c0.814,0.75,2.178,1.409,2.322,2.271C376.8,42.366,376.372,44.021,376.106,45.6z M438.603,114.489
+ c-1.123,1.127-1.808,2.938-2.132,4.549c-0.631,3.145-1.711,5.931-4.467,8.063c0.317,0.714,0.626,1.412,0.949,2.138
+ c-0.153,0.248-0.239,0.581-0.439,0.678c-1.14,0.552-2.27,1.162-3.471,1.544c-5.819,1.847-8.834-0.496-7.781-6.529
+ c0.431-2.471,0.896-5.075,0.541-7.503c-0.351-2.401-1.684-4.669-2.646-6.97c-0.783-1.874-1.412-3.55,0.086-5.547
+ c0.997-1.329,0.806-2.485-1.634-2.225c-1.287,0.137-2.936-0.816-4.031-1.737c-1.427-1.201-1.133-2.512,0.722-3.32
+ c1.901-0.828,3.953-1.504,5.564-2.733c0.998-0.762,1.548-2.372,1.862-3.704c0.806-3.419,2.064-4.488,5.612-4.63
+ c4.446-0.178,8.512,0.799,12.169,3.392c1.654,1.173,2.253,2.481,1.947,4.644c-0.211,1.49,0.741,3.16,1.256,4.723
+ c0.131,0.398,0.754,0.651,0.849,1.044c0.614,2.532,1.878,4.421,5.477,4.766C445.044,108.663,441.663,111.418,438.603,114.489z
+ M507.172,106.459c0.403-2.247,0.729-4.063,1.149-6.406c0.842,0.659,2.628,1.392,2.684,2.237
+ C511.134,104.257,509.744,105.668,507.172,106.459z M516.95,98.378c2.895-1.476,4.226,0.216,5.449,2.164
+ C519.591,102.394,518.568,101.995,516.95,98.378z M527.232,85.416c1.578,1.056,3.156,2.112,4.804,3.215
+ C529.503,91.459,529.157,91.24,527.232,85.416z"/>
+ </g>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#BBDAEB" d="M503.835,284.726c0.071,0.131,0.045,0.362,0.094,0.515
+ c0.155,0.095,0.374,0.126,0.562,0.188c0.586,0.694,0.758,1.936,1.312,2.812c2.996-0.374,4.673,0.41,5.861,1.923
+ c0.544,0.175,1.064,0.287,1.781,0.187c0.706,0.998,2.092,1.315,3.892,1.219c0.694,0.665,1.499,1.22,2.25,1.828
+ c-0.459,0.628-0.024,1.705,0.468,2.626c0.311,0.583,1.36,1.321,1.266,1.968c-0.125,0.853-2.091,0.79-2.437,1.594
+ c0.236,0.754-0.594,1.215-0.516,1.828c0.036,0.292,0.333,0.317,0.422,0.563c0.18,0.502,0.016,0.788,0.327,1.079
+ c0.168,0.155,0.471,0.12,0.657,0.282c0.138,0.12,0.169,0.408,0.328,0.563c0.345,0.336,0.961,0.319,1.219,0.656
+ c0.493,0.648,0.485,2.29,0.61,3.188c0.151,1.086,0.606,2.788-0.329,3.702c-0.021,1.061,0.267,2.108-0.421,2.626
+ c0.176,0.853,0.142,3.668-0.375,4.735c-0.373,0.767-1.528,0.851-2.109,1.312c-0.126-0.259-0.296-0.096-0.282,0.187
+ c-0.896,0.433-1.353,1.304-1.688,2.298c-0.41,1.341-0.225,2.697-0.797,3.75c-0.277,0.512-0.915,0.744-1.312,1.126
+ c-0.593,0.567-1.121,1.298-2.297,1.406c-0.438,0.04-0.708-0.095-1.031,0c-2.498,0.742-1.334,3.618-1.968,5.86
+ c-0.177,0.624-0.456,1.397,0,2.344c0.206,0.431,0.689,0.641,1.217,0.843c0.07,0.323,0.25,0.533,0.517,0.657
+ c0.299,0.048,0.398-0.102,0.656-0.095c0.134,0.071,0.049,0.357,0.187,0.422c1.359-0.445,2.028,0.466,2.533,1.172
+ c1.346-0.67,1.8-2.231,2.859-3.188c0.93-0.024,1.829-0.492,1.595-1.686c0.703-0.219,0.586-1.258,1.359-1.408
+ c0.176-1.354,1.328-1.734,1.547-3.046c0.635-0.288,1.05-0.795,1.172-1.594c0.594-0.142,1.165-0.644,1.782-0.234
+ c0.901-0.881,3.149-0.414,3.282-2.063c0.831-0.185,1.132-0.899,2.343-0.704c0.193,0.65,1.369,0.32,1.454,1.078
+ c0.421-0.872,0.909-0.119,1.125,0.47c0.102,0.085,0.383-0.009,0.469,0.093c0.949,0.598,1.288,1.806,1.734,2.907
+ c1.307,1.81,1.784,4.485,1.922,6.986c0.164,2.962,1.04,6.01,1.36,8.908c0.127,1.145,0.385,2.369,0.562,3.469
+ c0.074,0.46,0.479,1.004,0.563,1.594c0.04,0.285-0.074,0.594,0,0.844c0.078,0.269,0.422,0.316,0.562,0.561
+ c0.268,0.473,0.714,1.622,0.703,2.156c-0.014,0.674-0.817,1.432-0.984,2.205c-0.116,0.533,0.057,1.086,0,1.594
+ c-0.062,0.558-0.13,0.823-0.047,1.453c0.206,1.559-0.796,2.739-0.985,4.265c-0.288,0.003-1.053,0.323-1.547,0.189
+ c-0.28-0.077-0.308-0.416-0.516-0.61c-0.936-0.878-2.325-0.546-3.141,0.047c-0.135,0.097-0.775,0.369-0.843,0.704
+ c-0.041,0.193,0.145,0.454,0.14,0.656c-0.032,1.349-1.441,2.026-1.547,3.234c-0.043,0.486,0.179,0.911,0.141,1.313
+ c-0.062,0.66-0.45,1.702-0.844,2.296c-0.724,1.091-2.688,1.002-3.61,2.157c-0.313,0.39-0.545,1.334-0.703,1.875
+ c-0.275,0.934-0.742,2.365-0.796,3.141c-0.052,0.725,0.251,1.375,0.139,1.968c-0.135,0.725-0.826,1.458-1.359,1.921
+ c-0.179,1.229-1.296,1.518-1.875,2.346c0.359,0.695-0.228,1.346-0.844,1.5c-0.036,0.193,0.072,0.241,0.048,0.422
+ c-0.703,0.594-0.665,1.929-1.36,2.531c-8.094,0.314-17.158,0.475-25.315,0.563c-0.328-0.34,0.012-1.096-0.281-1.501
+ c-12.945-0.466-26.949-0.055-39.8-0.468c0.824-1.051,2.336-1.414,2.812-2.813c0.178-0.151,0.406-0.25,0.611-0.375
+ c0.701-1.581,1.194-3.368,1.969-4.875c-0.297-1.348,1.583-1.479,1.453-2.813c1.112-0.676,1.974-3.004,2.298-4.595
+ c0.094-0.462,0.553-0.791,0.14-1.36c0.806-0.648,0.983-2.369,0.797-3.704c0.7-0.596,0.159-1.416,0.188-2.203
+ c0.04-1.074,0.797-2.154,0.421-3.61c0.269-0.184,0.83-0.077,0.797-0.562c-0.123-0.143-0.451-0.08-0.703-0.094
+ c-0.415-1.081-0.189-2.052-0.282-3.188c-0.159-1.941-0.89-4.423-1.547-6.235c-0.371-1.023-1.352-1.996-0.047-2.672
+ c-0.146-0.408-0.74,0.013-1.171-0.095c-0.446-1.096-1.837-2.978-0.517-3.89c-0.239-0.336-0.574,0.122-0.984,0.046
+ c-0.578-0.73-0.628-1.597-0.844-2.718c-0.285-1.483-1.846-2.884-1.453-4.501c0.286-1.18,1.291-2.227,2.063-3.235
+ c-0.411-0.53-0.076-0.915,0.234-1.312c-0.031-0.25-0.327-0.237-0.375-0.469c0.104-2.007-0.515-3.834-1.219-5.391
+ c0.351-0.099,0.836-0.22,0.656-0.704c-0.287-0.174-0.497,0.241-0.797,0.048c-0.203-0.761,0.435-0.779,0.844-1.078
+ c1.041-0.762,1.65-2.55,2.157-3.891c0.18-0.474,0.712-0.831,0.891-1.453c0.187-0.651,0.426-1.017,0.656-1.594
+ c0.266-0.126,0.859,0.076,0.985-0.188c0.02-0.382-0.542-0.178-0.658-0.423c0.083-0.884-0.02-1.56,0-2.343
+ c0.024-0.942,0.589-1.829,0.658-2.72c0.082-1.086-0.89-1.935-0.471-2.953c0.624,0.001,0.767,0.565,1.125,0.844
+ c0.373,0.291,1.087,0.153,1.172-0.093c0.295-0.847-1.778-1.34-2.437-1.453c0.528,0.024,0.936-0.753,1.875-0.938
+ c0.737-0.144,1.38-0.195,1.5-0.983c0.035-0.233-0.163-0.493-0.14-0.75c0.018-0.21,0.257-0.431,0.281-0.657
+ c0.063-0.569-0.24-1.256-0.234-1.828c0.11-0.281,0.313-0.468,0.563-0.609c1.6,1.208,1.455-1.526,2.531-1.453
+ c0.43,0.029,0.56,0.518,1.031,0.61c1.336,0.022,1.206-1.42,2.298-1.641c0.039-0.391,0.177-0.939,0.093-1.172
+ c1.164-0.899,1.301-2.824,2.25-3.938c0.316,0.013,0.599,0.058,0.703,0.281c-0.012,0.493-0.559,0.844-0.656,1.406
+ c0.537,1.211-0.778,2.624-0.844,4.313c-0.053,1.344-0.049,2.79,0.048,3.845c0.063,0.699,0.482,1.666,1.406,1.313
+ c0.293,0.714,1.196,0.616,1.547,0c-0.029-0.765,0.491-0.978,0.843-1.36c0.088-0.974,0.667-1.458,1.031-2.156
+ c0.497-1.284,0.399-3.163,0.891-4.453c1.016,1.607,0.412,3.864,0.845,5.578c0.686-0.003,0.396-0.692,0.374-1.172
+ c-0.027-0.571,0.247-1.259,0.234-1.781c-0.007-0.28-0.329-0.527-0.375-0.892c-0.032-0.256,0.136-0.51,0.094-0.655
+ c-0.061-0.211-0.372-0.226-0.468-0.422c-0.219-0.445-0.02-0.915-0.283-1.171c-0.085-0.103-0.383,0.008-0.468-0.095
+ c-0.449-2.296-0.844-6.009,2.109-6.188c0.222-0.106,0.077-0.579,0.234-0.749c1.014-0.262,1.54-1.196,2.623-1.137
+ c0.302,0.016,0.894,0.199,1.222,0.178c0.899-0.057,1.626-0.357,2.437-0.494c0.044-0.435-0.118-0.663-0.234-0.938
+ c-0.912-0.446-2.734-0.495-3.141-1.406c-0.87-1.945-0.326-4.211,1.735-4.641c0.027-0.849,0.656-1.095,1.172-1.453
+ c0.225-0.759-0.411-0.903-0.469-1.22c1.28,1.342,3.054,0.809,3.862-0.708c0.138-0.321,0.927,0.122,1.061,0.38
+ c1.096,0.885,2.727,0.966,3.75,1.923c0.254,0.236,0.856,1.067,1.407,1.078c0.284,0.005,0.449-0.368,0.703-0.422
+ C501.257,283.469,502.499,284.378,503.835,284.726z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#B2C7DC" d="M511.603,274.886c-0.518-0.07,0.063,0.569,0.037,0.114
+ c0.195,0.069,0.293,0.236,0.378,0.416c-0.061,0.206-0.377,0.377-0.151,0.642c0.315,0.189,0.924,0.085,1.058,0.454
+ c-0.101,0.353-0.14,0.767-0.415,0.946c-0.362-0.149-0.626,0.223-0.908,0.189c-0.262-0.031-0.499-0.57-0.832-0.642
+ c-0.972-0.215-2.877,0.768-3.176-0.493c0.199,0.016,0.238,0.19,0.453,0.19c0.369-0.496,1.006-1.123,1.816-1.21
+ c0.658-0.072-0.026-1.131-0.227-1.399C510.551,273.946,511.567,274.025,511.603,274.886z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#BBDAEB" d="M448.803,245.206c-0.546,0.148-0.911,0.476-1.475,0.605
+ c-0.707-0.452-2.971-0.133-2.08,0.756c-1.395,1.39-3.401,2.168-4.613,3.742c-0.168,0.11-0.121-0.267-0.378-0.188
+ c0.156,0.965-0.571,1.538-1.019,2.269c-0.267,0.433-0.699,1.634-1.059,1.588c-0.324-0.041-0.788-1.836-0.038-1.814
+ c-0.086-0.18-0.45-0.081-0.605-0.19c-0.215-0.696-1.194-0.816-1.966-0.831c0.007,0.357,0.476,0.256,0.757,0.341
+ c0.578,0.365,0.177,1.116,0.34,1.776c0.471,0.247,0.764,0.672,1.058,1.097c-0.046,0.676-0.375,1.369-0.53,2.079
+ c-0.054,0.254,0.06,0.651,0,0.983c-0.044,0.243-0.21,0.415-0.189,0.605c0.024,0.211,0.366,0.381,0.379,0.567
+ c0.022,0.312-0.438,0.451-0.416,0.719c0.77,0.462,1.242-1.351,1.777-1.816c0.894-0.774,1.889-1.569,2.837-1.89
+ c-0.129,0.754-1.135,0.63-0.984,1.664c-0.126,0.255-0.613,0.338-0.492,0.718c0.171,0.18,0.411-0.083,0.567-0.151
+ c0.262-0.569,0.314-0.976,0.717-1.287c0.525-0.402,1.326-0.011,1.778-0.453c1.024,0.206,1.969,0.377,3.025,0.379
+ c0.04,0.098,0.092,0.185,0.076,0.34c0.459-0.095,0.571,0.16,0.756,0.341c0.56-0.494,0.644-0.076,0.945,0.339
+ c0.241,0.333,0.835,0.542,0.567,0.984c0.252,0.138,0.416,0.365,0.68,0.492c0.246,0.003,0.089-0.391,0.19-0.529
+ c1.07,0.265,1.122,1.548,1.512,2.494c0.123,0.129,0.383,0.122,0.53,0.227c-0.006,0.914,0.873,0.943,0.906,1.815
+ c0.377,0.386,0.834,0.827,0.984,1.361c0.072,0.255-0.03,0.432,0.113,0.643c0.554,0.814,2.017,0.394,2.835,0.983
+ c0.212-0.184,0.412-0.518,0.832-0.378c0.135,0.079,0.013,0.415,0.189,0.454c0.385-0.87,2.239-1.815,2.685-0.454
+ c-0.079,0.161-0.328,0.151-0.34,0.378c0.25,0.379,0.62,0.208,1.057,0.416c0.354,0.168,0.485,0.702,1.022,0.643
+ c0.397-0.044,0.469-0.693,0.832-0.831c0.578-0.224,0.822,0.402,1.209,0.718c0.19-0.026,0.265,0.064,0.454,0.038
+ c0.219,0.101,0.177,0.399,0.416,0.415c0.51,0.036,0.838-0.953,1.134-1.437c0.157-0.257,0.808-0.612,1.172-0.869
+ c0.194-0.138,0.341-0.41,0.454-0.454c0.451-0.177,1.018-0.072,1.437-0.227c0.29-0.107,0.36-0.428,0.605-0.681
+ c0.71-0.733,2.122-1.011,2.685-1.852c1.318,1.031,3.32-0.877,4.801-0.115c1.075,0.066,2.234-0.208,2.873,0.265
+ c0.497-0.297,1.326-0.052,1.852-0.113c0.086,0.333,0.25,0.651,0.152,1.057c0.197-0.184,0.953-0.127,1.399-0.188
+ c0.498-0.293,0.024-1.333,0.642-1.513c0.196,0.02,0.422,0.035,0.265-0.075c0.52-1.076,2.01-0.954,3.101-1.095
+ c-0.425,0.339-0.244,1.134-0.567,1.511c0.42,0.247,0.664-0.108,0.755-0.416c0.416,0.014,0.763,0.095,0.832,0.454
+ c-0.396,0.142-0.94,0.538-0.567,1.097c0.307,0.095,0.647-0.142,0.945,0.038c0.25,0.563,0.407,1.363-0.152,1.701
+ c-0.171,1.662,1.335,2.021,2.874,1.966c0.951,1.099,2.358-0.108,3.214-0.528c0.143,0.114-0.026,0.249,0.037,0.453
+ c0.067,0.217,1.009,1.072,1.096,1.096c0.488,0.134,0.736-0.446,1.286-0.492c0.77-0.064,0.605,0.133,0.945-0.53
+ c0.311-0.603,1.108-1.109,2.005-0.906c-0.248,0.716,0.69,0.933,0.755,1.701c0.009,0.098-0.096,0.319-0.075,0.454
+ c0.036,0.235,0.319,0.335,0.454,0.567c0.266,0.464,0.296,1.237,0.189,1.778c0.193,0.235,0.549,0.309,0.492,0.795
+ c-0.328,0.465-1.068,0.52-1.173,1.208c0.306,0.274,0.548,0.612,0.681,1.058c0.265-0.44,0.957-0.453,1.512-0.604
+ c0.268,0.538,0.909,0.704,1.361,1.058c-0.309,0.386-0.597,0.779,0,1.059c-0.035,0.311,0.064,0.491,0.114,0.719
+ c0.379,0.136,0.833,0.2,0.907,0.642c0.41-0.196,0.838-0.063,1.096,0.189c0.024,0.204,0.089,0.387,0.038,0.568
+ c-0.203,0.274-0.91,0.227-1.134,0c0.003-0.269,0.015-0.545-0.113-0.681c-0.219-0.005-0.373,0.055-0.492,0.152
+ c-0.026,0.252,0.2,0.252,0.189,0.49c-1.522,0.197-3.555-0.545-5.444-0.415c-0.328,0.022-0.671,0.22-0.908,0.189
+ c-0.293-0.039-0.429-0.314-0.757-0.228c-0.157,0.043-0.215,0.256-0.34,0.303c-0.503,0.194-0.678-0.274-0.907-0.68
+ c-0.818,0.067-1.111-0.579-1.854-0.455c-0.609,0.103-0.328,1.031-0.605,1.588c-0.181,0.365-0.931,0.724-0.302,1.246
+ c0.014,0.19-0.167,0.187-0.189,0.341c0.121,0.166,0.247,0.547,0.038,0.718c-1.091-0.12-1.961-0.458-2.343-1.285
+ c-0.376-0.118-0.818-0.325-0.757-0.757c0.145-0.12,0.475-0.054,0.68-0.113c-0.022,0.236,0.293,0.805,0.604,0.453
+ c0.068-0.215-0.277-0.32-0.415-0.453c0.119-0.362-0.089-0.58-0.265-0.757c-0.148-0.075-0.249,0.064-0.378,0.114
+ c-0.242-0.215-0.812-0.437-1.134-0.227c-0.183,0.005-0.135-0.221-0.266-0.264c-1.609-0.122-3.824-1.484-5.52-1.739
+ c-0.633-0.097-1.34-0.216-1.929-0.076c-0.797,0.191-0.851,1.361-1.663,1.702c-0.009,1.997-3.307,0.658-4.461,1.474
+ c-0.182,0.128-0.316,0.566-0.567,0.605c-0.715,0.109-1.378-0.665-2.042-0.719c-1.428-0.114-3.33,0.259-3.781,1.4
+ c-0.178,0.45-0.079,0.693-0.301,1.246c-0.18,0.447-1.298,1.522-1.853,1.778c-0.532,0.244-1.129,0.076-1.173,0.87
+ c-0.953,0.195-0.908,1.385-1.437,2.004c-0.654-0.108-1.216-0.975-0.416-1.285c0.041-0.231-0.12-0.258-0.114-0.454
+ c0.864-0.03,0.512-1.828,1.551-1.21c0.15-0.623,0.459-1.325,0.793-1.965c-0.096-0.92-1.078-0.814-1.587-0.302
+ c-0.018,0.259-0.116,0.44-0.228,0.604c-0.298,0.079-0.736,0.018-1.096,0.037c-0.219-0.095-0.203-0.425-0.416-0.529
+ c-0.317-0.015-0.531,0.075-0.719,0.189c0.109,0.975-1.018,2.492-1.777,2.911c-0.241,0.133-0.724,0.112-0.983,0.114
+ c-0.417-0.515,0.102-1.611-0.34-2.268c0.084-0.678,1.279-1.247,0.53-1.929c-0.52,0.136-0.841,0.629-0.757,1.248
+ c-0.235,0.519-1.029,0.712-0.983,1.362c0.047,0.667,0.567,1.361-0.302,1.814c-0.149,0.077-0.345,0.038-0.492,0.114
+ c-0.989,0.512-1.018,2.07-2.079,2.533c-1.059,4.159-3.799,6.636-5.634,10.019c-0.774-0.493-1.852-0.759-1.814-1.663
+ c0.016-0.407,0.369-0.911,0.49-1.323c0.208-0.704,0.964-1.727,0.946-2.231c-0.008-0.198-0.383-0.675-0.643-0.681
+ c-0.378-0.007-0.659,0.629-1.096,0.719c-0.535,0.109-1.618,0.013-1.702-0.453c-0.051-0.281,0.3-0.46,0.34-0.795
+ c0.035-0.283-0.112-0.496-0.075-0.68c0.091-0.469,0.918-0.678,1.021-1.209c0.113-0.59-0.223-0.947-0.34-1.551
+ c1.43-0.289-0.063-1.608,0.038-2.081c0.091-0.432,0.932-0.484,0.189-1.133c-0.111-0.095-0.339-0.109-0.492-0.226
+ c-0.27-0.207-0.381-0.588-0.643-0.719c-0.608-0.3-1.443-0.15-1.626-0.869c-0.882,0.197-2.049,0.039-2.004-0.831
+ c0.024-0.448,0.753-0.584,0.795-0.945c0.007-0.064-0.23-0.75-0.341-0.984c-0.19-0.402-1.19-0.673-1.739-0.756
+ c-0.253-0.039-0.455-0.34-0.718-0.379c-0.233-0.033-0.48,0.077-0.681,0.038c-0.36-0.071-0.539-0.53-0.908-0.604
+ c-0.17-0.035-0.372,0.095-0.567,0.075c-1.125-0.112-1.629-0.969-2.76-0.644c-0.19,0.055-0.376,0.352-0.567,0.379
+ c-0.49,0.066-0.918-0.726-1.587-0.794c-0.483-0.05-0.803,0.018-1.248-0.076c-1.592-0.618-2.783-2.003-4.423-2.647
+ c-1.213-0.476-2.715-0.548-3.667-1.285c-0.219,0.091-0.546,0.103-0.718-0.038c-0.089-0.063-0.083-0.221-0.076-0.379
+ c-1.057,0.354-2.965-0.504-4.046-0.831c-1.311-0.397-2.518-0.683-3.629-1.059c-0.069-0.096-0.13-0.199-0.113-0.377
+ c-1.127,0.341-2.239-0.428-3.252-0.681c-0.688-1.645-0.9-3.763-2.874-4.122c-0.104-0.148-0.08-0.422-0.227-0.53
+ c-1.919,0.405-1.155-0.752,0.227-0.907c0.772-0.087,1.832-0.695,2.155-0.983c2.732-0.105,3.798-1.873,5.18-3.328
+ c1.531-1.004,3.174,0.058,4.876-0.642c0.833,0.074,2.201,0.028,2.798-0.378c0.911-0.619,2.026-1.145,2.684-1.815
+ c0.114-1.413,2.056-0.802,3.251-1.096c0.565-0.139,0.719-0.844,0.87-1.437c0.681-0.957,1.654-1.623,2.76-2.155
+ c0.159-0.689,0.716-1.17,1.474-1.134c0.286,0.528-0.307,1.61,0.454,1.776c0.211-0.546-0.053-1.564,0.151-2.117
+ c1.594-0.556,1.861-2.621,3.403-3.252c1.244-0.51,2.353-1.348,3.705-1.551c0.878,0.227,1.853-0.294,2.874-0.15
+ c0.517,0.073,1.033,0.406,1.512,0.075c0.552,0.092,1.112,0.074,1.475,0.417C448.516,244.814,448.784,244.887,448.803,245.206z"/>
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFD200" d="M452.482,272.89v15.038h1.692
+ c0.347-0.749,0.646-1.545,0.868-2.418c1.061-0.463,1.09-2.021,2.079-2.533c0.146-0.076,0.343-0.037,0.492-0.114
+ c0.869-0.454,0.349-1.148,0.302-1.814c-0.046-0.65,0.748-0.843,0.983-1.362c-0.084-0.618,0.236-1.112,0.757-1.248
+ c0.749,0.682-0.446,1.25-0.53,1.929c0.443,0.657-0.077,1.753,0.34,2.268c0.258-0.001,0.742,0.019,0.983-0.114
+ c0.759-0.419,1.886-1.936,1.777-2.911c0.189-0.115,0.403-0.204,0.719-0.189c0.213,0.104,0.197,0.434,0.416,0.529
+ c0.36-0.019,0.798,0.042,1.096-0.037c0.112-0.164,0.21-0.345,0.228-0.604c0.509-0.512,1.491-0.618,1.587,0.302
+ c-0.334,0.64-0.643,1.342-0.793,1.965c-1.039-0.618-0.687,1.18-1.551,1.21c-0.006,0.196,0.155,0.224,0.114,0.454
+ c-0.801,0.31-0.238,1.177,0.416,1.285c0.528-0.619,0.484-1.809,1.437-2.004c0.044-0.794,0.641-0.625,1.173-0.87
+ c0.555-0.256,1.673-1.331,1.853-1.778c0.222-0.554,0.123-0.796,0.301-1.246c0.451-1.141,2.354-1.514,3.781-1.4
+ c0.259,0.021,0.519,0.153,0.781,0.298v-4.638H452.482z"/>
+ <g>
+ <polygon fill="#FFD200" points="521.384,228.954 526.739,227.981 532.327,229.153 526.995,215.625 "/>
+ </g>
+ <text transform="matrix(1 0 0 1 524.1675 240.5804)" fill="#FFD200" font-family="'GearedSlab-Regular'" font-size="12px">N</text>
+ <g>
+ <defs>
+ <rect id="SVGID_1_" x="1" y="0.667" width="931.006" height="400"/>
+ </defs>
+ <clipPath id="SVGID_2_">
+ <use xlink:href="#SVGID_1_" overflow="visible"/>
+ </clipPath>
+ </g>
+</g>
+<g id="Rivers" display="none">
+ <g display="inline">
+ <path fill="#00688E" d="M443.85,0c0.449,1.043,0.81,2.136,1.365,3.12c1.274,2.257,2.294,4.798,4.055,6.609
+ c2.681,2.758,5.091,5.708,8.356,8.085c4.216,3.07,8.93,3.082,13.385,4.538c0.487,0.159,1.083,0.476,1.297,0.89
+ c1.168,2.26,3.128,2.209,5.259,2.109c0.985-0.046,2.345,0.122,2.931,0.751c1.922,2.063,3.581,4.371,5.307,6.612
+ c0.38,0.494,0.79,1.07,0.89,1.658c0.7,4.094,2.735,7.324,5.653,10.297c1.667,1.698,2.463,4.245,3.757,6.602
+ c1.609-1.102,3.334-1.575,2.552-4.019c-0.228-0.713,0.717-1.799,0.998-2.431c-0.255-1.799-0.271-3.507-0.786-5.05
+ c-0.436-1.307-1.448-2.425-2.209-3.624c-0.68-1.072-1.162-2.388-2.098-3.149c-1.303-1.06-1.423-3.351-3.671-3.446
+ c-0.285-0.012-0.862-0.975-0.749-1.314c0.807-2.429-1.645-3.698-1.952-5.709c-0.041-0.267-0.459-0.67-0.718-0.682
+ c-2.844-0.134-3.03-2.066-3.017-4.224c0.01-1.577-0.761-2.868-1.37-4.301c-1.232-2.897-2.725-5.361-4.771-7.766
+ C477.345,4.42,478.02,1.896,477.95,0c0.55,0,1.1,0,1.65,0c-1.368,3.913,0.072,6.59,3.518,9.24c0.705,1.49,1.559,2.932,2.069,4.486
+ c0.405,1.234,0.481,2.601,0.535,3.916c0.059,1.429,0.426,2.035,1.91,2.913c1.834,1.085,2.841,3.658,4.012,5.697
+ c0.35,0.61,0.054,1.589,0.686,2.057c0.93,1.047,1.913,2.052,2.778,3.149c1.601,2.03,3.244,4.044,4.636,6.213
+ c0.513,0.8,0.368,2.019,0.525,3.047c0.1,0.654,0.005,1.443,0.343,1.936c0.91,1.327,1.457,2.35-0.051,3.783
+ c-0.613,0.582,0.046,2.547-0.568,3.066c-2.691,2.273-1.385,3.989,0.163,6.13c0.7,0.967,0.45,2.603,0.672,3.929
+ c0.197,1.174,0.041,2.794,0.751,3.426c2.573,2.291,1.771,4.476,0.423,6.688c3.499,4.01-0.107,8.256,0.445,12.368
+ c0.871-0.72,1.715-1.929,2.388-1.841c0.806,0.105,1.466,1.318,2.219,2.08c2.276-1.905,3.533-5.353,7.412-4.363
+ c-0.013-1.836-0.312-3.505,2.512-2.462c2.243,0.828,2.853-1.717,3.544-2.96c0.577-1.038-0.113-2.774-0.286-4.695
+ c1.77-1.258,3.927-2.791,6.499-4.619c-0.098-1.312,0.474-2.595,2.618-3.662c1.679-0.835,2.514-3.284,3.84-4.923
+ c0.831-1.028,1.878-1.883,3.187-3.169c-0.768-1.673,0.69-3.704,2.497-4.667c1.404-0.748,2.967-4.453,5.38-0.164
+ c0.17-1.508,0.257-2.277,0.366-3.247c0.82-0.105,1.672-0.214,2.355-0.301c0.979-2.583-0.744-6.072,3.022-7.435
+ c0,0.548,0,1.096,0,1.644c-0.51,1.873-2.07,3.621-0.681,5.726c0.087,0.132,0.067,0.354,0.051,0.53
+ c-0.194,2.033-2.998,0.47-3.539,2.839c-0.531,2.326-2.492,1.258-3.804-0.046c-0.213,0.602-0.269,1.434-0.588,1.55
+ c-2.272,0.828-3.97,1.94-3.476,4.773c0.045,0.26-0.577,0.919-0.88,0.913c-3.112-0.059-2.822,3.007-4.226,4.493
+ c-1.246,1.319-2.386,2.739-3.878,3.87c-0.572,1.889-0.309,4.236-3.749,4.088c-0.971-0.042-2.016,1.611-3.079,2.532
+ c1.253,4.138-2.486,10.004-5.912,8.393c0.346,3.693-2.585,2.094-3.852,2.508c-1.518,1.608-2.743,3.074-4.17,4.307
+ c-0.383,0.331-1.383-0.071-2.101-0.096c-0.758-0.027-1.605,0.214-2.262-0.044c-2.548-0.999-4.842,0.863-7.122,0.637
+ c-3.823-0.379-5.812-3.702-5.508-7.653c-1.15,0.533-2.424,1.124-3.831,1.776c0.126,0.563,0.372,1.33,0.439,2.113
+ c0.034,0.4-0.137,0.975-0.427,1.205c-0.387,0.305-1.015,0.552-1.478,0.472c-1.895-0.33-3.766-0.794-5.844-1.253
+ c-1.311,2.371-1.797,2.484-4.192,0.25c-0.507,0.737-0.995,1.449-1.494,2.175c1.442,0.92,2.679,1.71,3.916,2.5
+ c-0.293,0.362-0.587,0.724-0.88,1.085c-0.827,0.324-1.655,0.647-2.268,0.887c0.519,0.637,1.734,1.645,1.564,2.006
+ c-0.753,1.601-1.903,3.016-2.743,4.563c-0.619,1.049-1.221,2.11-1.87,3.141c-0.167,0.265-0.556,0.391-0.722,0.656
+ c-1.854,2.95-2.181,2.963-4.133,0.103c-1.839,0.934-2.727,4.241-1.235,5.222c2.033,1.335,2.536,2.686,1.05,4.683
+ c-0.169,0.228-0.023,0.688-0.023,1.309c0.857-0.18,1.594-0.385,2.345-0.484c2.621-0.347,3.012,0.186,2.373,2.778
+ c-0.16,0.649,0.254,1.42,0.306,2.143c0.081,1.127,0.077,2.261,0.109,3.392c-0.833-0.008-1.676,0.067-2.497-0.039
+ c-3.391-0.437-3.707,0.07-5.009,3.157c-1.904,4.514-1.436,8.886-0.253,13.369c0.115,0.435-0.051,0.943-0.129,1.98
+ c-2.564-2.732-2.503-5.543-2.394-8.411c0.046-1.202-0.207-2.417-0.336-3.624c-0.038-0.359-0.282-0.79-0.155-1.056
+ c0.941-1.968,1.65-4.169,3.055-5.747c0.835-0.938,2.788-0.922,4.259-1.244c0.601-0.132,1.255-0.022,2.143-0.559
+ c-0.645-0.362-1.387-1.143-1.92-1.02c-3.913,0.899-7.484-0.045-11.11-1.421c-1.109-0.421-2.637,0.398-3.896,0.188
+ c-1.116-0.187-2.827-0.812-3.053-1.594c-0.799-2.765-2.87-3.237-5.155-3.673c-0.371-0.071-0.694-0.398-1.184-0.694
+ c3.563-1.231,5.877-0.39,7.117,2.705c0.885,2.209,2.478,1.558,4.092,1.511c1.225-0.035,2.462,0.276,3.692,0.442
+ c2.857,0.385,5.706,0.923,8.575,1.073c0.84,0.044,1.738-1.01,2.784-1.671c-2.063-0.23-4.167,0.119-4.826-0.694
+ c-0.739-0.911-0.17-2.874-0.17-4.725c-0.523-0.647-1.864-1.617-2.134-2.824c-0.307-1.375-0.104-3.271,0.675-4.39
+ c1.446-2.078,3.405-1.902,4.86-0.342c0.919-0.837,1.83-1.668,2.614-2.382c0.081-1.75,0.163-3.513,0.258-5.545
+ c0.653-0.093,1.52-0.217,2.515-0.359c-0.747-0.453-1.427-0.866-2.582-1.566c1.163-0.911,2.08-1.628,2.79-2.185
+ c-0.553-0.813-1.875-1.954-1.665-2.608c0.483-1.505,1.711-2.772,2.783-4.351c0.947,0.892,1.507,1.42,2.058,1.939
+ c0.585-0.823,1.01-1.925,1.803-2.365c0.563-0.312,1.625,0.271,2.262,0.981c1.081-0.237,2.163-0.473,3.244-0.71
+ c-0.124-0.069-0.248-0.138-0.372-0.208c1.776-1.348,3.366-3.207,5.369-3.933c3.656-1.325,1.766,3.636,4.454,3.949
+ c-0.499,0.616-0.87,0.914-1.018,1.298c-0.166,0.43-0.129,0.937-0.181,1.41c0.466-0.06,1.019,0.022,1.384-0.202
+ c2.251-1.384,2.674-1.196,2.945,1.44c0.925-0.619,1.849-1.241,2.579-1.731c0.386-1.346,0.995-2.601,1.053-3.881
+ c0.078-1.724,0.285-3.852-0.586-5.095c-0.873-1.245-1.033-1.932-0.287-3.017c1.296-1.884,1.524-3.376-0.59-5.111
+ c-0.916-0.752-1.5-3.188-0.96-4.151c1.117-1.996-0.145-2.959-0.932-4.189c-2.173-3.396-4.331-6.808-6.669-10.09
+ c-1.348-1.891-3.055-3.525-4.554-5.313c-0.391-0.466-0.895-1.092-0.864-1.617c0.236-3.993-2.167-6.409-4.919-8.715
+ c-0.574-0.481-0.675-1.488-1.189-2.085c-0.457-0.53-1.221-1.215-1.788-1.163c-2.852,0.262-5.533,0.373-7.09-2.698
+ c-0.132-0.261-0.594-0.436-0.932-0.501c-3.118-0.601-6.245-1.159-9.364-1.755c-0.513-0.098-1.1-0.202-1.486-0.51
+ c-1.943-1.547-3.936-3.055-5.71-4.783c-2.043-1.99-3.854-4.213-5.81-6.294c-0.562-0.598-1.278-1.053-2.129-1.739
+ c1.663-2.539-1.525-3.679-2.192-5.731c-0.261-0.802-0.473-1.62-0.707-2.43C443.117,0,443.483,0,443.85,0z"/>
+ <path fill="#00688E" d="M0,134.247c2.857-2.382,6.42-4.074,7.35-8.26c0.252-1.134,1.287-2.213,2.206-3.052
+ c1.266-1.155,2.392-2.087,1.557-4.1c-0.233-0.562,0.535-1.61,0.977-2.357c0.492-0.832,1.136-1.574,1.869-2.567
+ c-2.245-0.929-4.044-1.623-6.008,0.187c-0.492,0.454-1.812,0.026-2.751-0.015c-1.171-0.05-2.341-0.119-3.511-0.18
+ c-0.048-0.278-0.096-0.555-0.144-0.833c1.082-0.119,2.199-0.465,3.236-0.301c1.332,0.211,2.351,0.19,3.74-0.328
+ c1.64-0.612,3.789-0.034,5.658,0.332c0.231,0.045,0.519,2.24,0.042,2.935c-1.022,1.487-2.25,2.664-1.615,4.754
+ c0.177,0.583-0.493,1.498-0.916,2.172c-1.317,2.097-2.557,4.267-4.1,6.191c-1.802,2.248-3.891,4.267-5.991,6.532
+ c1.579,1.434,2.554,3.066,1.533,4.169c0.817,1.188,1.633,2.375,2.616,3.804c0.315-0.248,0.921-0.604,1.371-1.102
+ c1.565-1.733,3.232-1.89,5.365-0.928c0.926,0.418,2.432,0.293,3.357-0.19c1.449-0.757,2.26-0.682,3.849,0.083
+ c2.326,1.12,5.196,1.12,7.659,1.566c2.796-4.915,3.669-6.103,7.091-5.767c2.903,0.285,4.621,3.77,3.574,6.362
+ c-0.99,2.449-1.357,5.149-1.981,7.742c-0.036,0.148,0.173,0.413,0.109,0.486c-2.876,3.29-1.07,4.916,1.902,6.834
+ c1.127,0.727,1.423,3.257,1.484,4.987c0.105,2.98-0.759,6.06-0.27,8.939c0.322,1.893,2.305,3.505,3.513,5.199
+ c2.82-1.203,5.12-2.423,7.571-3.083c0.738-0.198,2.074,1.016,2.8,1.868c0.435,0.51,0.218,1.57,0.294,2.383
+ c2.661,2.164,7.561,1.795,7.806,6.965c1.308,0.28,2.52,0.661,2.627-1.601c0.033-0.688,1.014-1.332,1.561-1.997
+ c0.609,0.573,1.244,1.12,1.821,1.723c0.931,0.973,1.838,1.968,2.727,2.978c1.069,1.214,2.712,2.313,3.039,3.71
+ c0.712,3.042,2.682,3.758,5.287,4.03c3.363,0.351,5.188,3.993,3.151,6.714c-1.028,1.373-0.953,2.394-0.715,3.927
+ c0.731,4.702-0.279,9.137-2.607,13.34c-0.622,1.122-0.464,2.66-0.726,3.996c-0.218,1.112-0.556,2.201-0.788,3.311
+ c-0.188,0.9-0.707,2.404-0.376,2.632c2.743,1.898,2.398,4.719,2.444,6.86c2.052,0.621,3.796,1.45,5.6,1.611
+ c1.824,0.163,3.732-0.21,5.559-0.573c3.281-0.651,4.352,0.251,4.046,3.623c-0.037,0.406-0.089,0.879,0.074,1.224
+ c1.895,4.02,1.704,4.746-1.96,7.148c0.488,2.366,0.908,4.732,1.501,7.054c0.152,0.596,0.745,1.274,1.311,1.537
+ c2.338,1.085,4.817,1.886,7.106,3.058c2.423,1.24,4.662,2.834,7.045,4.159c0.626,0.348,1.527,0.48,2.238,0.354
+ c3.884-0.687,4.943-0.281,6.468,2.728c1.206,2.379,0.633,4.756-2.144,6.881c-2.002,1.532-2.884,3.253-2.122,5.612
+ c0.305,0.945,1.046,1.75,1.752,2.879c-3.878-1.668-4.384-5.912-1.42-8.72c0.983-0.931,2.01-1.888,2.722-3.017
+ c1.303-2.067-0.904-5.97-3.029-5.151c-4.33,1.669-6.262-1.993-9.254-3.228c-3.017-1.245-5.95-2.709-9.017-3.81
+ c-2.017-0.724-4.108-3.525-3.913-5.949c0.022-0.268,0.277-0.594,0.188-0.783c-1.328-2.82-1.261-5.137,2.068-6.526
+ c0.326-0.136,0.615-1.075,0.47-1.48c-0.417-1.16-1.248-2.187-1.567-3.361c-0.271-0.996-0.056-2.123-0.056-3.466
+ c-2.315,0.583-4.143,1.114-6.005,1.476c-0.736,0.143-1.55-0.057-2.321-0.16c-1.616-0.216-3.226-0.476-4.841-0.705
+ c-0.263-0.037-0.715,0.089-0.777-0.024c-1.768-3.239-4.956-1.62-7.489-2.216c-0.325-0.077-0.601-0.361-0.312-0.179
+ c-1.989,0.93-3.57,1.669-5.15,2.408c-0.25-0.964-0.501-1.927-0.751-2.891c-0.071,0.059-0.142,0.117-0.213,0.176
+ c-0.787-1.431-1.717-2.804-2.327-4.306c-0.806-1.986-1.063-4.16-3.338-5.342c-0.805-0.419-1.239-1.712-1.653-2.685
+ c-1.716-4.037-7.424-5.991-11.01-3.494c-3.207,2.233-6.656,2.54-10.216,1.701c-4.466-1.052-11.784-5.153-11.989-9.904
+ c-0.111-2.57,0.01-4.663,2.08-6.675c1.075-1.045,1.061-3.245,1.444-4.944c0.496-2.198-0.544-3.188-2.62-3.984
+ c-0.972-0.373-1.79-2.165-1.949-3.407c-0.296-2.308-0.198-4.541-3.214-5.148c-0.589-0.118-0.992-1.017-1.545-1.479
+ c-1.645-1.376-3.293-1.902-5.683-1.675c-2.391,0.227-4.934-1.077-7.4-1.748c-0.217-0.059-0.454-0.375-0.517-0.615
+ c-0.544-2.082-1.05-4.173-1.579-6.308c1.426,0.764,2.869,1.472,2.655,3.832c-0.073,0.807,0.922,2.247,1.709,2.488
+ c1.814,0.554,3.802,0.538,5.716,0.778c1.229,0.154,2.618,0.046,3.645,0.595c2.136,1.142,4.327,2.397,6.006,4.089
+ c0.996,1.003,1.368,2.909,1.457,4.442c0.104,1.796,0.547,2.829,2.383,3.399c0.9,0.279,1.829,1.216,2.26,2.092
+ c1.057,2.146-0.383,7.533-2.212,9.089c-1.844,1.568-1.755,6.209,0.162,8.483c4.642,5.507,12.688,7.021,19.043,3.404
+ c3.95-2.248,11.57,0.122,12.625,4.506c0.183,0.761,0.594,1.762,1.201,2.076c2.809,1.454,3.343,4.131,4.071,6.767
+ c0.177,0.64,0.602,1.709,0.95,1.724c2.473,0.105,1.984,1.803,1.735,3.83c1.358-1.486,2.353-2.573,3.151-3.446
+ c1.497,0.539,2.61,1.153,3.783,1.301c1.106,0.14,2.275-0.21,3.559-0.362c0.417-1.632,0.094-3.059-1.586-4.471
+ c-0.734-0.616-0.519-2.521-0.464-3.829c0.026-0.628,1.14-1.418,0.977-1.816c-1.537-3.757,1.298-6.413,2.457-9.365
+ c1.409-3.588,1.357-6.995,0.656-10.612c-0.155-0.8,0.201-1.951,0.743-2.58c1.15-1.334,1.767-2.769,0.669-4.162
+ c-0.647-0.82-2.007-1.488-3.058-1.505c-2.72-0.044-3.958-1.505-5.139-3.706c-0.865-1.614-2.452-2.886-3.859-4.154
+ c-0.981-0.884-2.203-1.504-2.855-1.936c-0.272,1.825-2.454,1.625-4.483,1.434c-0.53-0.05-1.452-0.889-1.407-1.277
+ c0.317-2.777-1.688-3.564-3.603-4.382c-2.504-1.07-5.431-1.718-4.037-5.932c-2.554,0.919-4.54,1.859-6.632,2.303
+ c-1.305,0.277-3.177,0.306-4.086-0.427c-2.587-2.087-4.323-4.513-3.392-8.466c0.674-2.861-0.048-6.076-0.343-9.115
+ c-0.057-0.589-0.931-1.25-1.579-1.605c-2.51-1.378-3.178-3.085-2.235-5.725c1.27-3.556,2.661-7.093,3.531-10.748
+ c0.223-0.937-1.077-2.831-2.122-3.3c-1.027-0.461-2.626,0.308-3.96,0.599c-0.161,0.035-0.185,0.503-0.359,0.692
+ c-1.543,1.684-1.945,4.841-5.595,3.703c-2.295-0.716-4.803-0.755-8.214-1.24c-1.195,1.147-3.438,1.822-5.948-0.407
+ c-0.359-0.319-2.036,0.127-2.446,0.692c-2.097,2.887-3.434,2.141-5.733-0.111c-1.759-1.723-2.349-2.756-0.672-4.799
+ c-0.786-0.514-1.444-0.944-2.102-1.374C0,135.708,0,134.977,0,134.247z"/>
+ <path fill="#00688E" d="M21.45,400c-0.429-2.321-0.547-4.976-4.192-3.786c-0.211,0.069-0.558-0.082-0.767-0.233
+ c-1.949-1.406-2.921-6.593-1.714-8.718c0.315-0.555,0.397-1.246,0.563-1.88c0.365-1.398,0.366-3.051,1.155-4.14
+ c1.146-1.58,1.443-2.486,0.004-4.177c-1.635-1.922-2.976-4.276-3.748-6.665c-0.385-1.192,0.71-2.913,1.288-4.332
+ c0.26-0.638,1.402-1.309,1.278-1.653c-1.007-2.78,0.068-4.892,1.685-7.053c1.089-1.455,1.797-3.195,2.962-5.334
+ c-0.775-1.016-1.914-2.884,0.971-3.946c0.661-2.033-4.433-2.062-1.326-4.697c-2.592-3.293-2.554-3.528,0.235-6.537
+ c0.519-0.56,0.753-1.396,1.07-2.125c1.02-2.35,1.991-4.583,4.841-5.5c2.335-0.752,2.87-3.661,1.597-5.853
+ c-0.412-0.71-0.689-2.102-0.298-2.555c1.15-1.331,0.949-2.604,0.123-3.712c-1.392-1.866-1.456-4.755-4.421-5.538
+ c-0.479-0.126-0.757-2.084-0.621-3.13c0.131-1.009,0.918-1.933,1.677-3.396c-1.275-0.333-2.403-0.777-3.565-0.901
+ c-2.71-0.289-4.154-1.532-3.828-4.222c0.242-1.997,1.271-3.894,1.886-5.854c0.217-0.69,0.247-1.438,0.362-2.16
+ c-0.739,0.131-1.818,0.003-2.156,0.441c-1.169,1.519-2.036,3.265-3.106,4.866c-0.717,1.073-1.584,2.046-2.384,3.064
+ c-0.739-1.241-2.142-2.505-2.099-3.717c0.174-4.843,1.5-9.428,4.944-13.085c3.611-3.833,3.677-3.927-1.332-5.003
+ c-2.034-0.437-2.817-1.382-2.729-3.32c0.058-1.275,0.43-2.702-0.013-3.787c-0.422-1.034-1.67-1.789-2.692-2.458
+ c-0.133-0.087-1.289,0.983-1.626,1.682c-0.87,1.806-2.069,1.388-3.376,0.715c-0.711-0.366-1.4-0.775-2.099-1.164
+ c0-0.365,0-0.731,0-1.096c1.227,0.435,2.455,0.871,3.769,1.337c0.313-2.313,1.583-3.638,4.272-2.875
+ c2.812,0.798,3.879,2.518,3.329,5.316c-0.724,3.679-0.543,3.752,2.894,4.532c1.231,0.28,2.896,1.292,3.189,2.306
+ c0.293,1.012-0.564,2.789-1.474,3.636c-4.02,3.737-5.24,8.485-5.514,13.657c-0.023,0.434,0.124,0.885,0.241,1.314
+ c0.043,0.156,0.229,0.274,0.642,0.738c0.3-1.053,0.579-1.841,0.746-2.651c0.548-2.672,2.025-4.724,4.474-5.819
+ c0.873-0.39,2.657-0.295,3.102,0.283c0.6,0.779,0.615,2.322,0.329,3.391c-0.484,1.808-1.625,3.447-2.071,5.259
+ c-0.414,1.685,0.198,3.072,2.398,3.037c0.713-0.011,1.445,0.214,2.143,0.419c2.681,0.786,3.285,2.24,1.874,4.587
+ c-0.904,1.504-1.359,2.39,0.899,3.483c1.434,0.694,2.088,3.039,3.029,4.68c1.187,2.071,1.993,4.172-0.189,6.084
+ c2.716,4.039,1.709,7.205-2.373,9.332c-1.339,0.697-2.096,2.526-3.081,3.866c-0.888,1.209-1.743,2.444-2.573,3.694
+ c-0.326,0.491-0.915,1.293-0.752,1.542c1.108,1.687,1.535,3.643,2.32,5.376c0.986,2.179,1.334,3.404-1.193,4.69
+ c2.686,1.965,1.793,3.322-0.372,4.652c-0.658,0.405-0.984,1.378-1.407,2.122c-0.569,1-1.133,2.007-1.604,3.054
+ c-0.272,0.605-0.696,1.464-0.468,1.916c1.054,2.085-0.015,3.346-1.337,4.774c-2.038,2.203-1.888,3.431,0.109,5.884
+ c1.194,1.467,2.297,3.016,3.344,4.592c1.065,1.604,0.554,2.991-0.526,4.497c-0.674,0.941-0.734,2.322-1.057,3.51
+ c-0.185,0.681-0.216,1.437-0.538,2.043c-1.867,3.518-0.587,6.216,3.13,7.227c1.085,0.295,1.935,1.669,2.748,2.666
+ c0.691,0.847,1.172,1.864,1.746,2.805C23.283,400,22.367,400,21.45,400z"/>
+ <path fill="#00688E" d="M218.198,67.867c6.144-6.713,9.6-13.913,9.527-22.595c-0.006-0.704,0.078-1.471,0.356-2.105
+ c1.582-3.599,0.869-7.376,0.599-11.018c-0.125-1.694-1.919-3.214-2.736-4.918c-1.971-4.112-3.415-8.42-6.645-11.946
+ c-1.467-1.601-1.673-4.348-2.451-6.575c0.244-0.131,0.487-0.262,0.731-0.393c0.756,1.464,1.494,2.937,2.274,4.388
+ c0.572,1.066,1.191,2.107,1.803,3.151c1.115,1.902,2.37,3.736,3.332,5.712c1.424,2.925,1.61,6.384,4.56,8.677
+ c0.89,0.692,0.739,2.868,0.838,4.379c0.132,2.011,0.043,4.037,0.047,6.056c0,0.273,0.028,0.556-0.03,0.818
+ c-0.892,4.048-1.773,8.098-2.705,12.137c-1.033,4.477-2.847,8.601-6.064,11.956c-1.946,2.029-2.661,3.951-0.949,6.564
+ c0.414,0.631-0.047,2.496-0.723,3.061c-4.112,3.441-3.733,8.469-4.957,12.934c-0.524,1.911-1.138,3.804-1.832,5.66
+ c-0.818,2.185-1.708,4.348-2.68,6.47c-0.701,1.528-1.744,2.911-2.351,4.468c-0.766,1.965-1.188,4.061-1.865,6.065
+ c-0.464,1.375-0.892,2.841-1.711,4.005c-2.48,3.521-5.14,6.916-7.735,10.356c-0.603,0.8-1.063,1.905-1.873,2.317
+ c-2.626,1.336-2.405,4.316-3.886,6.294c-0.244,0.326,0.51,1.339,0.707,2.061c0.326,1.194,1.209,2.813,0.742,3.546
+ c-1.911,2.994-2.165,6.076-1.546,9.403c0.103,0.554-0.048,1.155-0.094,1.965c-2.226-2.557-2.449-7.563-0.402-10.683
+ c0.93-1.417,0.953-2.256-0.225-3.504c-1.226-1.298-0.846-2.606-0.329-4.496c1.157-4.231,5.578-5.889,6.708-9.906
+ c0.249-0.885,1.152-1.607,1.809-2.356c1.984-2.26,4.081-4.428,5.941-6.782c0.542-0.686,0.587-1.874,0.607-2.837
+ c0.053-2.531,0.455-4.871,2.457-6.693c0.448-0.408,0.75-1.025,0.994-1.599c1.475-3.477,3.153-6.893,4.296-10.477
+ c1.065-3.339,1.413-6.9,2.348-10.289c0.465-1.686,1.294-3.4,2.385-4.761c2.44-3.044,2.43-5.101-0.196-8.339
+ c-0.673-0.83-1.315-2.294-1.036-3.171c1.065-3.346-1.055-5.462-2.483-7.935c-1.008-1.746-1.725-3.658-2.569-5.498
+ c-0.037-0.081-0.003-0.212-0.057-0.263c-4.112-3.931-2.189-8.819-2.09-13.396c0.022-1.035,0.507-2.06,0.779-3.089
+ c0.233,0,0.467-0.001,0.7-0.001c-0.536-0.712-1.01-1.484-1.622-2.125c-1.399-1.467-2.775-2.981-4.339-4.258
+ c-0.861-0.704-2.044-1.175-3.152-1.39c-3.268-0.634-5.661-1.679-7.117-5.313c-0.821-2.048-4.027-3.899-6.451-4.381
+ c-3.588-0.713-5.127-3.003-6.657-5.632c-0.889-1.528-1.567-3.179-1.984-5.173c0.672,0.674,1.454,1.272,1.987,2.041
+ c0.558,0.805,1.031,1.734,1.274,2.677c1.203,4.671,5.899,4.409,9.016,6.315c2.163,1.323,3.938,2.426,4.704,5.201
+ c0.362,1.31,2.782,2.554,4.458,2.89c2.566,0.514,4.783,0.976,5.814,3.723c0.191,0.51,0.896,0.861,1.415,1.21
+ c3.608,2.427,3.455,2.54,2.674,6.737c-0.547,2.943-0.505,6.015-0.49,9.029c0.005,0.983,0.759,1.961,1.166,2.943
+ c0.474,1.143,0.91,2.303,1.424,3.427c0.48,1.05,0.924,2.147,1.589,3.077c2.017,2.823,4.298,5.482,3.236,9.4
+ C217.28,65.769,217.858,66.662,218.198,67.867z"/>
+ <path fill="#00688E" d="M265.077,78.869c-0.453-0.497-1.132-1.221-1.786-1.966c-1.455-1.657-1.514-3.117,0.311-4.677
+ c1.049-0.897,1.564-2.425,2.628-3.294c0.949-0.775,2.287-1.162,3.514-1.499c3.753-1.031,7.57-1.84,11.292-2.963
+ c2.314-0.698,4.502-1.81,7.334-2.979c0.181-1.565,1.265-3.471,3.718-4.035c-0.785,1.959-1.336,3.894-2.337,5.56
+ c-0.397,0.661-1.777,0.78-2.737,1.051c-1.415,0.399-2.877,0.643-4.279,1.077c-3.529,1.093-7.001,3.036-10.56,3.193
+ c-4.384,0.193-5.714,3.692-8.312,5.792c-0.172,0.139,1.06,1.927,1.556,2.987c0.474,1.012,0.967,2.045,1.225,3.123
+ c0.35,1.464,0.471,2.982,0.716,4.473c0.164,0.996,0.619,2.009,0.52,2.971c-0.36,3.47,1.879,5.541,5.359,4.793
+ c3.868-0.831,4.868,0.427,7.044,3.452c2.182,3.033,5.863,4.958,7.368,8.736c0.103,0.258,1.485,0.078,2.259-0.012
+ c2.299-0.267,4.612,0.245,5.209,2.496c0.673,2.537,2.634,5.094-0.14,8.064c-2.684,2.874-4.542,6.532-6.649,9.915
+ c-1.409,2.261-2.82,4.562-3.831,7.009c-0.487,1.179-0.152,2.745-0.016,4.119c0.265,2.672,0.809,5.326,0.906,8
+ c0.034,0.938-0.901,1.912-1.352,2.789c0.735,1.923,1.506,3.844,2.203,5.792c0.728,2.036,0.71,3.895-0.393,5.985
+ c-1.115,2.115-0.879,4.03,1.245,6.246c2.002,2.089,3.999,4.127,6.068,6.162c2.473,2.432,4.223,5.92,5.337,9.264
+ c0.592,1.779,1.846,4.587-0.968,6.479c2.546,1.838,2.214,3.864,0.215,5.999c-0.038-0.72-0.035-1.445-0.127-2.158
+ c-0.093-0.722-0.032-1.785-0.468-2.088c-2.258-1.572-1.436-2.764-0.208-3.487c-0.114-1.754-0.33-2.977-0.239-4.176
+ c0.138-1.821-0.636-3.048-1.896-4.277c-0.981-0.957-1.476-2.39-2.385-3.442c-1.03-1.194-2.423-2.086-3.406-3.309
+ c-2.326-2.894-5.882-5.17-5.261-9.664c0.073-0.531,0.059-1.149,0.332-1.567c2.199-3.369,0.557-6.419-0.829-9.418
+ c-0.693-1.5-1.298-2.734,0.101-4.177c0.408-0.421,0.474-1.361,0.394-2.027c-0.337-2.805-0.887-5.587-1.15-8.397
+ c-0.108-1.15,0.372-2.343,0.48-3.526c0.298-3.267,3.298-4.985,4.45-7.808c0.718-1.76,2.405-3.105,3.301-4.821
+ c1.555-2.976,5.045-5.195,3.457-9.478c-0.749-2.019-1.534-3.02-3.823-2.889c-4.524,0.259-4.438,0.122-6.231-4.254
+ c-0.429-1.047-1.574-2.263-2.603-2.506c-1.885-0.444-2.502-1.674-2.921-3.155c-0.738-2.607-2.671-2.956-4.845-2.537
+ c-5.221,1.006-7.799-1.294-7.418-6.441c0.09-1.221-1.1-2.486-1.315-3.794C264.889,82.089,265.077,80.534,265.077,78.869z"/>
+ <path fill="#00688E" d="M64.177,108.767c1.909,4.881,3.428,5.703,8.736,5.805c2.619,0.051,5.323,0.322,7.817,1.064
+ c3.754,1.117,5.091,3.835,4.353,7.615c-0.621,3.182-0.799,6.331,0.824,9.321c0.13,0.239,0.311,0.507,0.303,0.756
+ c-0.144,4.54,2.217,8.874,0.67,13.607c-1.086,3.321-0.133,6.776,1.992,9.573c0.738,0.97,2.417,1.757,3.644,1.728
+ c3.045-0.072,6.129-0.44,9.099-1.114c2.641-0.599,5.191-1.673,7.708-2.713c3.008-1.242,4.569-0.764,6.179,1.946
+ c1.296,2.182,2.803,4.238,4.139,6.397c0.401,0.647,0.718,1.442,0.77,2.19c0.183,2.602,1.808,3.617,4.143,2.48
+ c4.7-2.29,8.35,0.173,8.732,5.35c0.33,4.474,1.488,8.882,2.137,13.34c0.211,1.452,0.292,3.065-0.122,4.438
+ c-1.177,3.9-2.71,7.691-3.974,11.567c-1.407,4.315,0.096,6.326,3.945,8.61c2.631,1.562,5.144,4.269,6.354,7.05
+ c2.062,4.741,1.614,4.93,6.554,5.025c0.239,0.005,0.474,0.19,0.735,0.301c-2.731,2.566-7.345,1.485-7.914-2.205
+ c-0.534-3.462-3.201-5.257-4.701-7.914c-0.288-0.509-1.199-0.723-1.864-0.957c-4.367-1.536-6.263-5.186-4.823-9.703
+ c1.212-3.802,2.482-7.598,3.998-11.286c0.821-1.997,0.628-3.66,0.13-5.705c-0.958-3.93-1.56-7.99-1.831-12.029
+ c-0.313-4.665-2.841-6.346-6.931-4.152c-2.413,1.294-5.588-0.7-6.279-3.276c-0.688-2.565-2.22-4.905-3.387-7.342
+ c-0.037-0.076-0.133-0.124-0.199-0.187c-1.099-1.04-2.117-2.799-3.319-2.934c-1.417-0.159-2.94,1.329-4.512,1.673
+ c-3.151,0.69-6.373,1.052-9.552,1.621c-1.41,0.252-2.795,0.653-4.18,1.027c-2.79,0.755-4.796-0.279-6.247-2.646
+ c-2.265-3.693-2.68-7.626-1.649-11.789c0.401-1.619,1.195-3.248-0.289-4.882c-0.431-0.474-0.104-1.586-0.233-2.387
+ c-0.33-2.039-0.79-4.06-1.071-6.105c-0.339-2.467-1.07-5.032-0.703-7.413c0.819-5.322-0.35-7.436-5.68-8.262
+ c-1.477-0.229-3.023-0.155-4.525-0.049c-3.126,0.22-6.033-0.396-8.533-2.276C62.873,112.612,62.41,110.929,64.177,108.767z"/>
+ <path fill="#00688E" d="M62.765,102.584c-0.207-0.844-0.524-1.679-0.602-2.535c-0.23-2.525-0.222-5.081-0.621-7.574
+ c-0.125-0.782-1.137-1.829-1.928-2.03c-3.418-0.867-6.905-1.46-10.364-2.167c-0.708-0.145-1.718-0.113-2.054-0.561
+ c-1.853-2.471-4.322-1.829-6.763-1.614c-1.09,0.096-2.203,0.083-3.294-0.016c-4.19-0.38-6.205-3.389-4.72-7.28
+ c0.7-1.834,1.727-3.573,2.804-5.227c1.669-2.564,1.533-4.311-0.824-6.285c-1.606-1.345-2.324-2.794-1.696-5.018
+ c0.583-2.064,0.641-4.281,0.85-6.438c0.049-0.499-0.06-1.187-0.378-1.521c-2.397-2.521-4.941-4.906-7.273-7.482
+ c-1.024-1.131-1.658-2.61-2.475-3.928c-0.361-0.582-0.609-1.476-1.125-1.677c-2.492-0.973-2.976-2.981-3.078-5.273
+ c-0.024-0.542,0.105-1.334-0.194-1.583c-2.695-2.237-5.241-4.817-8.3-6.393c-2.056-1.06-3.974-1.592-5.024-3.981
+ c-1.315-2.989-3.143-5.752-4.713-8.632c-0.94-1.724-0.127-3.559,2.286-4.62c-0.204,0.771-0.378,1.291-0.473,1.825
+ c-0.12,0.672-0.469,1.503-0.211,2.009c1.44,2.827,3.318,5.463,4.493,8.384c1.165,2.896,3.193,3.352,6.136,3.202
+ c-0.621-3.055,0.778-5.005,3.435-6.331c0.637-0.318,1.009-1.248,1.399-1.952c0.615-1.109,0.905-2.501,1.755-3.359
+ c2.386-2.411,2.873-5.218,2.806-8.453c-0.031-1.504,0.963-3.055,1.624-4.527c0.134-0.299,0.856-0.336,1.018-0.393
+ c-0.364,3.347-0.51,6.629-1.165,9.806c-0.286,1.388-1.657,2.537-2.463,3.839c-1.784,2.88-2.778,6.179-6.117,8.108
+ c-1.928,1.114-1.034,6.246,1.117,7.406c2.818,1.519,4.712,3.399,4.389,6.832c-0.032,0.339,0.065,0.926,0.272,1.018
+ c4.054,1.799,3.798,7.009,7.632,9.245c2.408,1.404,4.107,4.15,5.836,6.504c0.585,0.796,0.464,2.252,0.356,3.376
+ c-0.206,2.152-0.802,4.277-0.879,6.426c-0.028,0.785,0.828,1.739,1.501,2.388c2.803,2.706,3.003,4.867,0.876,8.122
+ c-1.128,1.727-2.188,3.57-2.858,5.505c-0.881,2.543,0.606,4.473,3.339,4.626c1.733,0.097,3.501-0.214,5.21,0.001
+ c1.677,0.211,3.307,0.831,4.943,1.32c0.756,0.226,1.454,0.678,2.218,0.84c3.635,0.775,7.291,1.455,10.926,2.233
+ c1.795,0.384,2.884,1.471,2.988,3.403c0.185,3.411,0.402,6.819,0.605,10.229C63.579,102.449,63.172,102.517,62.765,102.584z"/>
+ <path fill="#00688E" d="M169.768,60.003c0.453-0.68,0.889-1.334,1.541-2.313c-1.152-0.465-2.107-0.874-3.08-1.236
+ c-0.584-0.217-1.313-0.208-1.777-0.561c-3.554-2.707-7.068-5.466-10.566-8.246c-0.408-0.324-0.752-0.831-0.929-1.323
+ c-1.005-2.79-2.56-4.223-5.808-3.129c-0.635,0.214-2.143-0.894-2.62-1.743c-0.826-1.469-0.637-3.517-2.98-3.988
+ c-0.335-0.067-0.664-1.666-0.493-2.447c0.537-2.454-0.427-3.363-2.799-3.3c-0.747,0.02-1.502-0.24-2.731-0.456
+ c2.165-1.941,3.857-0.869,5.368-0.173c2.471,1.138,1.661,3.289,1.161,5.268c0.284-0.137,0.567-0.275,0.851-0.412
+ c0.727,1.174,1.581,2.291,2.149,3.536c0.666,1.459,0.674,3.079,3.281,2.249c2.046-0.651,3.893,0.549,5.264,2.545
+ c1.592,2.318,3.364,4.705,5.588,6.352c2.838,2.102,6.227,3.455,9.335,5.208c1.236,0.697,1.646,1.595,1.596,3.304
+ c-0.077,2.609,0.211,5.694,1.589,7.747c1.344,2.003,0.424,3.143-0.499,3.877c-1.444,1.148-2.647,1.832-1.728,4.013
+ c0.296,0.702-1.067,1.998-0.896,2.872c0.451,2.304,1.26,4.55,2.06,6.771c0.434,1.206,1.142,2.314,1.967,3.943
+ c0.923-0.256,2.174-0.862,3.431-0.875c1.072-0.011,2.603,0.335,3.147,1.086c2.075,2.868,4.192,5.812,5.572,9.034
+ c0.796,1.858,0.258,4.304,0.235,6.485c-0.03,2.885-0.397,5.79-0.159,8.648c0.339,4.07-1.7,7.409-2.845,11.026
+ c-0.723,2.283-2.395,4.61-2.18,6.774c0.415,4.172,2.077,8.205,2.791,12.37c0.331,1.934-0.349,4.04-0.57,6.067
+ c-0.242,0.008-0.485,0.016-0.727,0.024c-0.191-0.245-0.599-0.621-0.541-0.717c2.074-3.413-0.691-6.326-1.005-9.48
+ c-0.236-2.378-1.388-4.742-1.247-7.059c0.165-2.711,1.047-5.459,2.055-8.021c1.748-4.443,3.309-8.839,2.712-13.738
+ c-0.19-1.564-0.371-3.329,0.149-4.744c1.801-4.896-0.594-8.481-3.269-12.088c-0.665-0.897-1.46-1.838-1.705-2.874
+ c-0.409-1.731-1.24-2.036-2.741-1.448c-0.765,0.3-1.556,0.739-2.336,0.738c-0.839-0.001-2.244-0.233-2.427-0.724
+ c-1.429-3.838-2.623-7.763-3.89-11.662c2.04-1.907-0.972-6.002,3.098-7.1c0.372-0.1,0.825-1.086,0.722-1.546
+ c-0.508-2.281-1.139-4.54-1.845-6.769C170.845,61.142,170.245,60.643,169.768,60.003z"/>
+ </g>
+</g>
+<g id="Roads">
+ <path fill="#FFD200" d="M549.952,105.021c-0.546,0.058-1.093,0.134-1.64,0.211c-1.135,0.159-2.306,0.327-3.438,0.298
+ c-1.808-0.041-3.614-0.115-5.419-0.188c-7.225-0.294-14.694-0.598-22.111,1.26c-0.696,0.174-1.393,0.333-2.084,0.492
+ c-4.471,1.023-8.693,1.99-11.318,6.404c-1.55,2.605-3.613,3.611-7.114,3.464c-1.207-0.05-2.424-0.167-3.601-0.279
+ c-2.168-0.208-4.414-0.423-6.678-0.228c-5.571,0.478-12.488,1.958-16.568,9.217c-0.758,1.35-1.318,1.986-1.874,2.127
+ c-0.759,0.195-1.861-0.448-3.585-1.529l-0.428-0.274c-1.008-0.653-2.051-1.33-3.152-0.981c-0.671,0.212-1.249,0.787-1.752,1.749
+ l-0.016-0.022l1.182-8.407l-3.344,0.26c-0.763-5.104-1.155-9.168-1.505-13.66c-0.15-1.925-0.34-3.841-0.531-5.753
+ c-0.429-4.313-0.872-8.773-0.806-13.2c0.033-2.21,0.801-4.648,1.958-6.209c1.961-2.647,2.806-5.495,2.74-9.233
+ c-0.12-6.781-0.212-13.562-0.305-20.344c-0.069-5.087-0.139-10.174-0.22-15.26c-0.019-1.204-0.154-2.419-0.402-3.614
+ c-0.752-3.623-2.47-5.058-6.128-5.121c-0.482-0.008-0.965-0.021-1.448-0.034c-1.699-0.046-3.457-0.094-5.179,0.071
+ c-1.149,0.11-1.905-0.029-2.376-0.437c-0.478-0.413-0.728-1.158-0.787-2.344c-0.189-3.762-1.633-5.157-5.506-5.116
+ c-4.163,0.036-8.395,0.123-12.486,0.207l-3.678,0.075c-10.135,0.191-16.118-3.055-19.34-10.553
+ c-0.737-1.713-1.66-3.366-2.553-4.965c-0.343-0.615-1.721-2.945-1.824-3.1h-2.24l2.102,3.523c2.355,3.974,4.791,8.083,7.2,11.911
+ c0.525,0.833,1.573,1.568,3.114,2.183c4.167,1.662,8.663,3.257,13.707,2.92c4.071-0.271,8.229-0.367,12.249-0.459l2.237-0.053
+ c4.622-0.116,4.977,0.204,5.445,4.833c0.23,2.271,1.454,3.332,3.724,3.282c1.648-0.045,3.331-0.033,4.959-0.024l1.875,0.009
+ c4.107,0.007,5.315,1.153,5.383,5.109l0.035,2.029c0.211,12.259,0.429,24.936,0.424,37.401c0,1.258-0.638,2.604-1.254,3.904
+ c-0.256,0.541-0.511,1.08-0.726,1.616c-0.27,0.672-0.656,1.37-1.029,2.045c-0.776,1.405-1.579,2.858-1.507,4.33
+ c0.447,9.248,1.123,17.784,1.838,26.821l0.43,5.463c0.06,0.76,0.264,1.506,0.461,2.228c0.091,0.333,0.184,0.671,0.263,1.015
+ l0.09,0.387h2.641l-0.63,7.272c-0.045,0.016-0.092,0.032-0.141,0.048c-0.488,0.168-1.156,0.398-1.834,0.555
+ c-4.657,1.079-7.53,3.627-8.31,7.369c-0.235,1.125-1.283,2.818-2.2,3.553c-2.313,1.852-4.477,3.728-6.568,5.541
+ c-2.498,2.166-5.078,4.403-7.947,6.63c-3.67-3.042-3.755-7.199-3.846-11.594c-0.033-1.593-0.067-3.241-0.282-4.838l-0.996,0.053
+ c-0.035,1.266-0.153,2.538-0.266,3.768c-0.452,4.897-0.88,9.533,3.517,13.793c-0.487,0.304-0.844,0.662-1.149,0.968
+ c-0.425,0.426-0.682,0.667-1.021,0.677l-1.424,0.044c-3.388,0.106-6.895,0.217-10.271-0.157
+ c-5.155-0.572-10.388-1.261-15.448-1.928c-5.512-0.726-11.212-1.476-16.836-2.079c-5.866-0.628-11.481-0.755-15.702,4.526
+ c-5.955,7.45-14.129,8.599-22.423,3.152c-0.743-0.488-1.613-0.881-2.454-1.261c-0.601-0.271-1.167-0.528-1.682-0.812
+ c-3.129-1.729-6.659-2.143-9.941-1.167c-5.252,1.561-10.441,3.716-14.894,5.614c-2.906,1.239-6.705,2.573-10.293,1.886
+ c-1.929-0.369-3.84-0.764-5.743-1.157c-7.998-1.652-15.548-3.214-23.756-2.865c-2.425,0.104-4.926-0.238-7.348-0.567
+ c-1.218-0.166-2.479-0.337-3.722-0.452c-0.45-0.042-0.899-0.086-1.35-0.131c-1.709-0.171-3.478-0.348-5.227-0.325
+ c-4.281,0.055-8.562,0.145-12.842,0.235c-6.016,0.126-12.236,0.256-18.353,0.284c-8.151,0.039-14.993-0.038-21.849-0.522
+ c-5.954-0.422-6.07-0.848-7.491-6.067c-0.132-0.485-0.275-1.009-0.434-1.575c-1.83-6.521-5.09-7.692-11.264-7.743
+ c-1.604-0.013-3.211-0.011-4.795-0.006l-1.602,0.002c0.082-1.022,0.171-2.026,0.258-3.016c0.232-2.632,0.452-5.119,0.533-7.642
+ c0.065-2,0.02-4.03-0.024-5.993c-0.037-1.631-0.074-3.317-0.048-4.969c0.034-2.109,0.125-4.589,0.546-6.994l0.037-0.21
+ c2.287-13.062,2.269-13.304-1.976-25.992c-0.12-0.357-0.252-0.712-0.385-1.067c-0.286-0.766-0.557-1.49-0.7-2.239
+ c-0.109-0.573-0.228-1.147-0.347-1.722c-0.404-1.952-0.823-3.97-0.83-5.929c-0.07-18.692-0.063-37.699-0.057-56.079l0.004-19.348
+ h-1.761v3.497c0,5.856,0.031,11.712,0.062,17.569c0.072,13.725,0.147,27.917-0.198,41.861c-0.319,12.894,1.432,23.379,5.51,32.997
+ c0.034,0.081,0.073,0.161,0.113,0.242c0.066,0.135,0.135,0.274,0.142,0.363c0.037,0.477,0.097,0.959,0.157,1.442
+ c0.143,1.137,0.277,2.211,0.107,3.227c-1.493,8.964-2.794,17.755-2.33,26.742c0.184,3.547-0.185,7.199-0.541,10.73l-0.146,1.465
+ c-0.048,0.49-0.924,1.365-1.537,1.535c-3.813,1.056-5.248,2.947-5.115,6.746c0.012,0.361,0.066,0.728,0.12,1.093
+ c0.081,0.547,0.158,1.063,0.075,1.524c-0.098,0.544-0.181,1.099-0.265,1.656c-0.27,1.792-0.548,3.646-1.34,5.142
+ c-1.832,3.46-4.108,6.775-6.311,9.98l-0.709,1.034c-2.557,3.733-4.974,7.813-4.018,13.011c0.013,0.068-0.06,0.271-0.117,0.433
+ c-0.01,0.027-0.02,0.054-0.029,0.082c-0.101-0.01-0.202-0.018-0.301-0.026c-0.349-0.028-0.745-0.06-0.881-0.182
+ c-1.94-1.741-4.21-2.221-7.357-1.564c-2.124,0.445-3.355-0.448-3.875-2.808l-0.028-0.129c-0.258-1.172-0.525-2.383-0.587-3.565
+ c-0.223-4.165-0.451-8.33-0.679-12.495c-0.736-13.463-1.498-27.384-2.066-41.083l-0.031-0.752
+ c-0.165-4.078-0.249-6.125-1.458-7.224c-1.249-1.134-3.437-1.012-7.798-0.771c-1.77,0.1-2.981-0.503-3.921-1.947
+ c-0.577-0.887-1.061-1.874-1.53-2.827L74.886,0.008L72.955,0.01l5.672,11.561c10.181,20.76,20.946,42.711,30.886,62.922
+ c2.294,4.664,4.607,9.319,6.92,13.974c3.265,6.57,6.641,13.363,9.903,20.072c2.021,4.156,4.693,5.724,8.674,5.079
+ c1.054-0.171,1.949-0.033,2.896,0.114c0.572,0.088,1.161,0.18,1.802,0.205c0.233,0.43,0.593,0.606,0.81,0.701
+ c0.19,4.771,0.372,9.543,0.554,14.314c0.417,10.93,0.848,22.232,1.375,33.344c0.254,5.357,0.956,10.771,1.643,16.074
+ c0.194,1.497,0.788,2.647,1.718,3.325c0.844,0.617,1.909,0.813,3.166,0.583c3.033-0.556,5.736,0.152,8.475,2.224l-3.15,5.472
+ c-3.777,6.564-7.544,13.112-11.34,19.644c-0.607,1.044-1.261,1.852-1.942,2.4c-5.507,4.429-6.756,10.336-3.711,17.558
+ c1.306,3.095,1.342,6.091,0.12,9.713c-0.551,1.631-1.206,2.087-3.046,2.122c-1.86,0.036-3.772,0.018-5.62,0.001
+ c-5.138-0.046-10.457-0.095-15.478,0.967c-9.617,2.034-19.265,4.681-28.595,7.241c-4.018,1.102-8.035,2.205-12.062,3.264
+ c-1.331,0.35-2.669,0.667-4.126,1.012c-0.52,0.124-1.056,0.25-1.611,0.384c-0.005-0.284-0.013-0.549-0.021-0.799
+ c-0.023-0.793-0.042-1.42,0.043-2.015c0.435-3.053-0.547-5.454-3.285-8.03c-9.72-9.146-19.217-18.38-29.734-28.637
+ c-6.793-6.625-13.666-13.397-20.311-19.947c-3.452-3.402-6.904-6.803-10.36-10.2c-0.612-0.602-2.292-2.109-2.887-2.639
+ l-0.335-0.328v3.356c0,0,0.333,0.048,0.636,0.199c0.606,0.303,1.179,0.589,1.592,0.988c13.762,13.29,26.29,25.436,38.301,37.13
+ c2.319,2.258,4.642,4.595,6.889,6.855c4.599,4.626,9.354,9.41,14.335,13.781c3.618,3.175,3.661,6.492,3.312,9.631
+ c-1.357,0.717-2.668,1.418-3.95,2.104c-3.109,1.664-6.046,3.235-9.031,4.695c-2.07,1.013-4.815,2.271-7.701,3.009
+ c-1.692,0.433-3.521,0.552-5.289,0.668c-0.746,0.049-1.492,0.098-2.232,0.168c-6.592,0.631-12.529,0.604-18.15-0.086
+ c-4.329-0.532-8.736-0.432-12.996-0.336c-1.871,0.042-3.808,0.083-5.711,0.075l-0.007,2.096c1.759,0.015,3.506,0.022,5.248,0.028
+ c3.939,0.015,8.013,0.03,12.064,0.153c2.2,0.067,4.439,0.224,6.604,0.376c2.745,0.192,5.583,0.392,8.385,0.411
+ c1.952,0.015,3.928-0.23,5.835-0.466c1.4-0.173,2.848-0.352,4.266-0.425c4.26-0.22,8-1.535,11.431-4.018
+ c4.438-3.212,9.204-5.112,14.571-5.81c1.893-0.246,3.775-0.815,5.368-1.34c17.209-5.676,31.841-9.736,47.315-11.101
+ c3.54-0.312,7.054-0.233,10.775-0.147c1.542,0.035,3.095,0.071,4.658,0.077c0.083,1.006,0.17,2.004,0.256,2.996
+ c0.233,2.69,0.454,5.23,0.598,7.825c0.155,2.797-0.855,4.584-3.088,5.464c-4.029,1.588-6.202,4.597-6.283,8.7
+ c-0.009,0.478,0.046,0.979,0.1,1.465c0.09,0.818,0.184,1.665-0.063,2.273c-0.349,0.86-1.669,1.875-2.335,1.94
+ c-6.123,0.602-10.972,2.985-16.212,7.969c-1.146,1.089-1.807,1.391-2.159,1.453c-4.141,0.728-5.98,4.047-7.758,7.258l-0.191,0.346
+ c-0.537,0.967-1.228,1.835-1.96,2.753c-0.529,0.664-1.075,1.35-1.555,2.074c-0.657,0.992-1.319,1.981-1.982,2.971
+ c-2.288,3.417-4.653,6.949-6.755,10.563c-2.314,3.978-4.887,7.917-7.375,11.725c-2.366,3.622-4.812,7.367-7.038,11.147
+ c-1.633,2.773-3.402,5.486-5.114,8.111c-1.158,1.775-2.318,3.554-3.453,5.373c-1.682,2.696-3.036,5.655-4.345,8.517
+ c-1.02,2.228-2.074,4.533-3.269,6.676c-0.466,0.836-0.725,1.97-0.769,3.371c-0.067,2.129-0.111,4.395,0.143,6.636
+ c0.449,3.967-0.593,7.609-3.278,11.461c-0.295,0.423-0.616,0.844-0.939,1.267c-1.004,1.315-2.042,2.674-2.399,4.22
+ c-0.877,3.793-3,7.399-6.681,11.348l-0.3,0.342c0.083-0.003,2.91,0,2.91,0s0.915-1.312,1.491-2.126
+ c1.267-1.791,2.577-3.642,3.648-5.471c0.662-1.131,1.204-2.346,1.727-3.521c0.63-1.415,1.282-2.877,2.134-4.151
+ c3.521-5.269,4.775-10.213,3.946-15.561c-0.431-2.775-0.208-5.277,0.61-6.866l1.461-2.849c2.622-5.125,5.099-9.966,8.094-14.831
+ c1.583-2.569,3.266-5.161,4.894-7.667c2.833-4.361,5.761-8.871,8.295-13.468c5.65-10.248,11.819-21.057,19.627-30.659
+ c0.523-0.643,1.009-1.339,1.479-2.013c1.55-2.221,3.015-4.319,5.796-4.826c1.019-0.186,1.673-0.859,2.365-1.572
+ c0.178-0.183,0.36-0.371,0.556-0.557c3.42-3.25,7.947-5.518,13.468-6.744c4.662-1.181,5.417-2.075,5.77-6.832
+ c0.034-0.461-0.026-1.031-0.084-1.582c-0.04-0.377-0.08-0.744-0.082-1.041c-0.012-2.155,1.476-4.003,4.082-5.072
+ c3.915-1.605,5.58-4.564,5.09-9.045c-0.233-2.134-0.378-4.084-0.445-5.96c-0.021-0.604-0.082-1.229-0.142-1.858
+ c-0.152-1.57-0.309-3.194,0.207-4.432c2.352-5.642,1.094-10.572-0.446-14.65c-1.729-4.575-0.752-8.667,2.9-12.16
+ c1.622-1.551,2.833-3.54,4.004-5.463c0.253-0.416,0.505-0.829,0.76-1.237c1.255-2.005,2.447-4.092,3.6-6.109
+ c0.538-0.941,1.075-1.882,1.621-2.818c0.972-1.669,1.891-3.214,2.79-4.726c1.649-2.774,3.207-5.395,4.917-8.474
+ c0.754-1.357,1.489-2.897,1.216-4.027c-0.904-3.741,0.91-7.216,3.005-10.415c0.703-1.074,1.382-2.164,2.061-3.254
+ c1.084-1.741,2.207-3.542,3.409-5.234c2.82-3.966,5.453-8.337,4.02-14.308c-0.299-1.245-0.162-2.305,0.396-3.064
+ c0.596-0.811,1.657-1.29,3.07-1.386c4.455-0.304,8.882-0.219,12.243-0.112c2.286,0.073,4.171,1.467,4.92,3.639
+ c0.149,0.433,0.304,0.863,0.458,1.292c0.496,1.382,0.964,2.688,1.277,4.071c0.721,3.182,2.289,4.871,5.086,5.476l0.655,0.144
+ c1.396,0.31,2.84,0.63,4.286,0.63c0.004,0,0.008,0,0.012,0c10.548-0.011,21.095-0.053,31.643-0.095
+ c7.247-0.029,14.495-0.058,21.742-0.077c1.54,0.007,3.147,0.146,4.688,0.291l0.715,0.067c1.189,0.109,2.404,0.272,3.58,0.43
+ c2.404,0.322,4.887,0.653,7.343,0.56c7.705-0.301,14.831,1.276,22.371,2.945c2.074,0.458,4.16,0.92,6.269,1.343
+ c3.449,0.69,7.841,0.01,12.052-1.867c1.797-0.801,3.62-1.555,5.383-2.283c1.886-0.78,3.837-1.586,5.764-2.454
+ c5.833-2.626,11.72-1.828,16.579,2.247c3.331,2.794,8.215,3.896,13.403,3.027c5.137-0.863,9.491-3.523,11.646-7.118
+ c1.463-2.439,3.809-3.744,6.41-3.587c8.041,0.491,16.16,1.207,24.464,1.958c4.355,0.394,8.78,0.844,13.059,1.279
+ c3.529,0.359,7.058,0.718,10.589,1.052c4.134,0.393,6.679-1.53,9.83-4.285c1.759-1.537,3.703-3.12,5.583-4.651
+ c2.286-1.861,4.649-3.786,6.756-5.687c2.217-1.999,3.634-3.857,4.486-5.929c0.68-3.04,2.488-4.184,4.994-4.964
+ c1.45-0.452,2.986-1.235,4.471-1.992c0.965-0.492,1.878-0.958,2.749-1.327c0.618-0.013,1.334,0.374,2.107,0.796l0.456,0.247
+ c2.947,1.566,4.964,1.214,6.743-1.177c0.299-0.402,0.604-0.8,0.91-1.198c0.577-0.751,1.172-1.528,1.72-2.326
+ c1.551-2.266,3.646-3.637,6.794-4.448c4.945-1.275,9.768-1.046,14.875-0.801c0.825,0.04,1.653,0.079,2.484,0.112
+ c3.33,0.127,5.776-1.186,7.482-4.027c2.196-3.66,5.555-5.593,10.267-5.908c1.346-0.09,2.688-0.344,3.985-0.589
+ c0.655-0.124,1.311-0.248,1.967-0.351c0.729-0.115,1.459-0.256,2.188-0.397c1.622-0.313,3.298-0.638,4.923-0.641
+ c5.055-0.01,10.171,0.115,15.131,0.239c1.975,0.049,3.95,0.098,5.925,0.139l0.51,0.01v-2.71L549.952,105.021z"/>
+</g>
+<g id="Main_Towns">
+
+ <text transform="matrix(0.3976 -0.9175 0.9175 0.3976 149.5456 293.9524)" fill="#FFFFFF" font-family="'GearedSlab-Regular'" font-size="10px">Little Bay De Noc</text>
+
+ <text transform="matrix(0.5812 -0.8138 0.8138 0.5812 247.6344 270.1075)" fill="#FFFFFF" font-family="'GearedSlab-Regular'" font-size="10px">Big Bay De Noc</text>
+
+ <rect x="151.771" y="114.922" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="69.177" height="30"/>
+
+ <rect x="5.351" y="271.572" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="62.717" height="30"/>
+ <rect x="77.83" y="218.82" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="62.717" height="30"/>
+
+ <rect x="101.12" y="168.935" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="62.717" height="30"/>
+
+ <rect x="274.862" y="175.686" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="49.788" height="30"/>
+
+ <rect x="289.808" y="233.042" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="96.898" height="30"/>
+ <text transform="matrix(1 0 0 1 159.7109 134.2268)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Rapid River</text>
+ <text transform="matrix(1 0 0 1 283.4249 195.9906)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Nahma</text>
+ <text transform="matrix(1 0 0 1 109.4458 188.7399)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Gladstone</text>
+ <text transform="matrix(1 0 0 1 86.7748 238.1246)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Escanaba</text>
+ <text transform="matrix(1 0 0 1 12.2453 290.8769)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Bark River</text>
+
+ <text transform="matrix(1 0.0036 -0.0036 1 297.883 252.5067)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Garden Peninsula</text>
+
+ <rect x="278.808" y="298.542" fill="#BBDAEB" stroke="#FFFFFF" stroke-width="1.3599" stroke-miterlimit="10" width="47.799" height="30"/>
+
+ <text transform="matrix(1 0.0036 -0.0036 1 286.883 318.0067)" fill="#006998" font-family="'GearedSlab-Regular'" font-size="14px">Fayette</text>
+</g>
+<g id="Hover" display="none">
+
+ <rect x="289.808" y="233.042" display="inline" fill="#FFD200" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" width="96.898" height="30"/>
+
+ <text transform="matrix(1 0.0036 -0.0036 1 297.883 252.5067)" display="inline" fill="#FFFFFF" font-family="'GearedSlab-Regular'" font-size="14px">Garden Peninsula</text>
+</g>
+</svg>
-.home-feed-post {
- padding-bottom: 25px;
-// @media #{$small-only} {
-// > * {
-// text-align: center;
-// }
-// }
+body .grid-block.home-feed-post {
+ // padding-bottom: 25px;
+ @media #{$medium-down} {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
}
input[type="submit"].blogbutton {
border-radius: 3px;
}
}
#blog-posts-over article {
- padding-top: 10px;
+ // padding-top: 10px;
margin-bottom: 15px;
display: inline-block;
width: 100%;
.entry-header {
margin-bottom: 10px;
.entry-title {
- margin-bottom: 0;
+ margin: 0;
+ display: block;
+ @media #{$large-up}{
+ margin-top: -9px;
+ }
+ a{
+ display: block;
+ line-height: 1;
+ font-size: 28px;
+ // max-height: 50px;
+ }
+
}
.meta.date {
font-size: 13px;
}
}
}
-/*#searchform div input &[type="text"] {
- width: 95%;
-}*/
+.blog-post-container{
+ .entry-header{
+ .entry-title{
+ line-height: 1;
+ font-size: 28px;
+ padding-bottom: 10px;
+ }
+ }
+}
#blog-posts-over .entry-meta {
text-align: center;
color: #757575;
margin: 25px 0;
}
#blog-side-info {
+ a{
+ font-size: 16px;
+ }
+
#searchform {
margin-bottom: 30px;
}
padding-right: 10px;
ul {
list-style-type: none;
+ li{
+ line-height: 1;
+ padding-bottom: 10px;
+ a{
+ line-height: 1;
+
+ }
+ }
}
}
+main.blog-home, main.blog-archive, main.blog-single{
+ margin-top: 130px;
+ padding-bottom: 50px;
+}
.blog-archive, .blog-home {
.featured-image-wrap{
display: none;
#copyright {
- padding: 20px 0;
+ padding: 5px 0;
margin: 0 auto;
float: none;
+ background-color: $green;
span {
- font-size: rem-calc(10);
+ font-size: rem-calc(14);
+ // font-weight: bold;
+ color: white;
}
a {
- color: $black;
+ color: $white;
}
}
#footer_address span.bullet,
#copyright span.bullet {
+ color: white;
margin: 0 5px;
@media #{$small-only} {
display: none !important;
display: block;
}
.left-off-canvas-menu {
+ .contact-us-link{
+ color: white;
+ font-size: 14px;
+ text-decoration: underline;
+ }
+ list-style: none;
+ background: $green;
+ color: white;
+ li {
+ a {
+ color: $white;
+ font-size: rem-calc(16);
+ line-height: 1.2;
+ border-color: white;
+ margin-bottom: 5px;
+ }
+ a:hover {
+ color: white;
+ }
+ .dropdown {
+ list-style: none;
+ }
+ }
+ ul {
list-style: none;
+
+ padding: 10px 0;
li {
a {
color: $white;
- font-size: rem-calc(16);
- line-height: 1.2;
- border-color: white;
- margin-bottom: 5px;
}
- a:hover {
- color: black;
- }
- .dropdown {
+ ul {
list-style: none;
- }
- }
- ul {
- list-style: none;
-
- padding: 10px 0;
- li {
- a {
- color: $white;
- }
- ul {
- list-style: none;
- li {
- a {
- width: 85%;
- display: block;
- white-space: pre-wrap;
- }
+ li {
+ a {
+ width: 85%;
+ display: block;
+ white-space: pre-wrap;
}
}
}
}
+ }
+}
+.oc-site-title{
+ font-size: 16px;
+}
+.oc-action-items{
+ .oc-action-grid{
+ li{
+ height: 30px;
+ margin-bottom: 14px;
+ overflow: hidden;
+ a{
+ display: block;
+ }
+ }
+ }
}
.offcavas-social-list {
@include inline-list;
.breadcrumbs {
margin-top: 10px;
}
+#main-content{
+ padding-bottom: 50px;
+ p{
+ font-size: 16px;
+ a{
+ color: $red;
+ &:hover{
+ text-decoration: underline;
+ }
+ }
+ }
+
+}
+.breadcrumbs>span:nth-child(2)::before { content: ""; display: none; }
+.breadcrumbs>span:last-child{ color: $red; }
+
+.page-inside{
+ #header-image{
+ @media #{$medium-up}{
+ margin-top: 105px;
+ }
+ @media #{$small-only}{
+ margin-top: 115px;
+ }
+ }
+}
#content-bulk {
#con {
margin: 0;
background-image: url("../assets/share-icon.png") !important;
width: 52px;
height: 22px;
-}
\ No newline at end of file
+}
+.front-blog-container{
+ position: relative;
+ margin: 25px auto 50px auto;
+}
+
+.home-feed-post-image{
+
+ img{
+ min-width: 165px;
+ height: auto;
+ border: 2px solid white;
+ padding: 0 !important;
+ -webkit-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ -moz-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ }
+ @media #{$large-up}{
+ padding: 0px !important;
+ }
+ @media #{$medium-only}{
+ margin: 25px 0 0 0;
+ max-width: 300px;
+ margin: 0 auto;
+ }
+ @media #{$small-only}{
+ border: none;
+ text-align: center;
+ margin-bottom: 15px;
+ }
+}
+.home-feed-post{
+ // margin-bottom: 35px;
+ h2.title-posts{
+ line-height: 1;
+ // max-height: 28px;
+ margin: 0;
+ a{
+ display: block;
+ color: $green;
+ line-height: 1;
+ font-size: 24px;
+ }
+ }
+ span.meta.date{
+ display: inline-block;
+ color: white;
+ font-size: 14px;
+ margin-bottom: 10px;
+ }
+ .post-excerpt{
+ color: black;
+ line-height: 1.1;
+ margin-bottom: 20px;
+ margin-bottom: 10px;
+ // overflow: hidden;
+ font-size: 16px;
+ }
+ .read-more{
+ display: inline-block;
+ background: $green;
+ padding: 4px 7px;
+ border-radius: 7px;
+ -webkit-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ -moz-box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ box-shadow: 3px 3px 6px -1px rgba(0, 0, 0, 0.75);
+ &:hover{
+ background: $blue;
+ }
+ a{
+ color: white;
+
+ }
+ }
+ // padding: 0;
+}
+#home-feed-posts{
+ padding-top: 20px;
+}
+
+.members-only-template{
+ #glm-member-front-header{
+ padding-left: 0;
+ padding-right: 0;
+ margin-left: 0;
+ .breadcrumbs{
+ float: left;
+ padding: 0;
+ margin: 0;
+ }
+ }
+ .members-only-buttons{
+ padding: 0;
+ }
+ .glm-button{
+ background-color: $blue;
+ margin-top: 0;
+ }
+}
+.entry-header{
+ .addthis_wrapper{
+ float: right;
+ margin-top: 5px;
+ }
+}
+.st_sharethis {
+ float: right;
+ width: 58px;
+}
+body .stButton .sharethis {
+ background-image: url("../assets/share-icon.png") !important;
+ width: 52px;
+ height: 22px;
+}
+#glm-member-login-form .button-primary,
+#glm-member-password-lost-form .lostpassword-button {
+ background-color: $blue;
+ border: 0 none;
+ border-radius: 5px;
+ color: white;
+ font-size: 14px;
+ padding: 10px 15px;
+ min-width: 90px;
+ cursor: pointer;
+}
+#glm-member-password-lost-form {
+ width: 400px;
+}
+#glm-member-password-lost-link {
+ color: $blue;
+ margin-top: 40px;
+}
+#glm-member-password-lost-form {
+ display: none;
+ button{
+ padding: 5px;
+ }
+}
+#ui-datepicker-div{
+ display: none;
+}
+#front-social{
+ li.social-icon{
+ list-style: none;
+ display: inline-block;
+ margin-right: 5px;
+ a{
+ display: block;
+ }
+ }
+}
+.action-items-container{
+ min-width: 100% !important;
+ min-height: 100px;
+ background: $green;
+ position: relative;
+ margin-bottom: 50px;
+ &::before{
+ background: url('../assets/repeating-pattern-green-up.png');
+ background-position: top center;
+ background-repeat: repeat-x;
+ content: "";
+ position: absolute;
+ top: -27px;
+ width: 100%;
+ height: 30px;
+ }
+ &::after{
+ background: url('../assets/repeating-pattern-green-down.png');
+ background-position: top center;
+ background-repeat: repeat-x;
+ content: "";
+ position: absolute;
+ bottom: -27px;
+ width: 100%;
+ height: 30px;
+ }
+}
+// svg map
+.svg-map-container{
+
+ #escanaba-map{
+ // width: 100%;
+ // max-height: 400px;
+ }
+ // max-height: 600px;
+}
footer.main {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- @media only screen and (max-width: 1024px) {
- position: relative;
- bottom: 0;
- }
+ background: $blue;
+
+ // position: absolute;
+ // bottom: 0;
+ // left: 0;
+ // right: 0;
+ // @media only screen and (max-width: 1024px) {
+ // position: relative;
+ // bottom: 0;
+ // }
}
#footer_address {
+ text-align: center;
span{
white-space: nowrap;
}
}
+.contact-us-link{
+ display: inline-block;
+ color: $green;
+ font-size: 20px;
+ border-bottom: 1px solid $green;
+ text-align: left;
+ &:hover{
+ border-bottom: 1px solid $blue;
+ }
+}
+.footer-logo{
+ display: block;
+ margin: 0 auto;
+ @media #{$medium-only}{
+ margin-bottom: 20px;
+ }
+}
+.pure-michigan-logo{
+ margin-top: 20px;
+ padding-right: 0;
+ text-align: center;
+ @media #{$small-only}{
+ margin-bottom: 20px;
+ }
+ img{
+ @media #{$medium-only}{
+ float: right;
+ }
+ }
+}
#connect {
padding-top: 20px;
background: #4c4d4f;
}
}
}
+#footer-page-anchor{
+ // @media #{$medium-up}{
+ // position: absolute;
+ // bottom: 0;
+ // left: 0;
+ // right: 0;
+ // }
+}
+footer{
+ .action-grid{
+ // max-width: 375px;
+ margin: 0 auto;
+ @media #{$small-only}{
+ max-width: 230px;
+ margin: 0 auto;
+ }
+ }
+ .action-item{
+ display: block;
+ height: 35px;
+ margin-bottom: 10px;
+ overflow-y: hidden;
+ padding: 0 !important;
+ &:nth-child(odd){
+ max-width: 170px;
+ }
+ a{
+ display: block;
+ overflow-y: hidden;
+ }
+ position: relative;
+ img{
+ position: absolute;
+ top: 0;
+ &:hover{
+ top: -44px;
+ }
+ }
+ }
+ .large-row{
+ max-width: 1200px;
+ padding-top: 15px;
+ }
+ .enews-action-item{
+
+ }
+}
\ No newline at end of file
header {
- height: auto;
- & #logo {
- img {
- margin-bottom: 15px;
+ .header-top-half{
+ position: relative;
+ padding: 12px 0;
+ @media #{$large-up}{
+ height: 60px;
+ }
+ .header-logo-container{
+ .large-logo-link{
+ @media #{$medium-down}{
+ display: block;
+ max-width: 275px;
+ margin: 0 auto 10px auto;
+ }
+ @media #{$large-up}{
+ position: absolute;
+ z-index: 99;
+ top: 20px;
+ }
+ .header-logo{
+
+ }
+ }
+ }
+
+ .header-top-half-home{
+ float: right;
+ }
+ .header-search-input{
+ height: 15px;
+ border: 2px solid $gold;
+ border-radius: 4px;
+ }
+ .search-icon{
+ height: 20px;
+ width: 20px;
+ background-color: $gold;
+ float: right;
+ margin-left: 20px;
+ padding: 0 4px;
+ border-radius: 4px;
+ &:hover{
+ cursor: pointer;
+ }
+
+ .magnifying-glass {
+ position:relative;
+ display:inline-block;
+ background: transparent;
+ border-radius: 30px;
+ height: 10px;
+ width: 10px;
+ border: 2px solid white;
+ bottom: 5px;
+
+ &:after {
+ content: "";
+ height: 2px;
+ width: 6px;
+ background: white;
+ position:absolute;
+ top: 8px;
+ left: 5px;
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+ }
+
+ }
+ }
+
+
+ .header-search{
+ float: right;
+ margin-left: 5px;
+ width: 0px;
+
+ }
+ .header-search-input{
+ border: 2px solid transparent;
+
+ }
+ }
+ .header-bottom-half{
+ background-color: $tan;
+ }
+ .large-row{
+ background-color: white;
+ position: relative;
+ max-width: none;
+ // padding-top: 20px;
+ // border: 1px dashed black;
+ @media #{$medium-up}{
+ // min-height: 75px;
+ }
+ }
+ .header-logo{
+ position: absolute;
+ background-color: transparent;
+ @media #{$medium-down}{
+ max-width: 320px;
+ float: none !important;
+ margin: 0 auto;
+ display: block;
+ a{
+ padding: 10px;
+ }
+
+ }
+ @media #{$large-up}{
+ // position: absolute;
+ // bottom: 0px;
+
+ }
+ .logo-link{
+ display: block;
+ float: left;
}
}
+ height: auto;
& .search {
input {
height: 20px;
display: inline-block;
width: rem-calc(10);
height: rem-calc(10);
- border: rem-calc(2) solid $d-blue;
+ border: rem-calc(2) solid $blue;
position: relative;
border-radius: 0.35em;
margin: 0 0 0 -25px;
right: rem-calc(-7);
bottom: rem-calc(-4);
border-width: 0;
- background: $d-blue;
+ background: $blue;
width: rem-calc(8);
height: rem-calc(2);
-webkit-transform: rotate(45deg);
display: inline;
a {
font-size: 12px;
- color: $d-blue;
+ color: $blue;
padding: 0 5px;
font-weight: bold;
}
}
}
}
- img {
- margin-left: 5px;
- }
- .social {
- margin-top: -25px;
- padding-right: 0;
- a {
- float: right;
- margin: 0 5px;
- img {
- margin: 0;
- }
- }
- }
-}
+}
\ No newline at end of file
@import "plugins/nextgen";
@import "plugins/gravityForms";
@import "plugins/events";
- @import "plugins/fullCalendar";
\ No newline at end of file
+ @import "plugins/fullCalendar";
+ @import "plugins/blocks";
+ @import "plugins/glm-member-db";
\ No newline at end of file
// 07. Clearing
// 08. Dropdown
// 09. Dropdown Buttons
-// 10. Flex Video
+// 10. Flex Vide
// 11. Forms
// 12. Icon Bar
// 13. Inline Lists
// We use these to define default font stacks
$font-family-sans-serif: "Open Sans", sans-serif;
-$font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif;
+$font-family-serif: 'El Messiri', Cambria, "Times New Roman", Times, serif;
$font-family-monospace: Consolas, "Liberation Mono", Courier, monospace;
-
+$roboto : 'Robot Slab',"Open Sans";
+$caveat : 'Caveat';
// We use these to define default font weights
$font-weight-normal: normal;
$font-weight-bold: bold;
$white : #FFFFFF;
-$ghost : #FAFAFA;
+$grey : #d1d2d4;
$snow : #F9F9F9;
$vapor : #F6F6F6;
$white-smoke : #F5F5F5;
$charcoal : #555555;
$tuatara : #444444;
$oil : #333333;
-$jet : #222222;
+$yellow : #ffd100;
$black : #000000;
-$green : #008752;
-$red : #d2222a;
-$d-blue : #131c5f;
-$l-blue : #0093d1;
+$green : #95d500;
+$red : #fc6463;
+$blue : #0065a0;
+$l-blue : #bbdaeb;
+$l-green : #8dc819;
+
+$green-blue: #45646a;
+$gold: #ec9928;
+$tan: #ccbc8c;
+$l-tan: #e2d8ba;
// We use these as default colors throughout
$primary-color: #008CBA;
$header-font-family: $body-font-family;
$header-font-weight: $font-weight-normal;
$header-font-style: normal;
-$header-font-color: $jet;
+$header-font-color: $black;
$header-line-height: 1.4;
$header-top-margin: .2rem;
$header-bottom-margin: .5rem;
$header-text-rendering: optimizeLegibility;
// We use these to control header font sizes
-$h1-font-size: rem-calc(28);
-$h2-font-size: rem-calc(18);
-$h3-font-size: rem-calc(17);
-$h4-font-size: rem-calc(16);
-$h5-font-size: rem-calc(16);
-// $h6-font-size: 1rem;
+$h1-font-size: rem-calc(36);
+$h2-font-size: rem-calc(36);
+$h3-font-size: rem-calc(36);
+$h4-font-size: rem-calc(36);
+$h5-font-size: rem-calc(28);
+$h6-font-size: rem-calc(24);
// We use these to control header size reduction on small screens
-$h1-font-reduction: rem-calc(5);
-$h2-font-reduction: rem-calc(0);
-$h3-font-reduction: rem-calc(0);
-$h4-font-reduction: rem-calc(0);
+$h1-font-reduction: rem-calc(10);
+$h2-font-reduction: rem-calc(10);
+$h3-font-reduction: rem-calc(5);
+$h4-font-reduction: rem-calc(5);
$h5-font-reduction: 0;
$h6-font-reduction: 0;
// $include-xl-html-block-grid-classes: false;
// We use this to control the maximum number of block grid elements per row
-// $block-grid-elements: 12;
-// $block-grid-default-spacing: rem-calc(20);
+$block-grid-elements: 12;
+$block-grid-default-spacing: rem-calc(20);
-// $align-block-grid-to-grid: false;
+$align-block-grid-to-grid: true;
// @if $align-block-grid-to-grid {$block-grid-default-spacing: $column-gutter;}
// Enables media queries for block-grid classes. Set to false if writing semantic HTML.
// $include-html-nav-classes: $include-html-classes;
// We use this to set the background color for the breadcrumb container.
-// $crumb-bg: scale-color($secondary-color, $lightness: 55%);
+$crumb-bg: transparent;
// We use these to set the padding around the breadcrumbs.
// $crumb-padding: rem-calc(9 14 9);
// We use these to set various text styles for breadcrumbs.
// $crumb-font-size: rem-calc(11);
-// $crumb-font-color: $primary-color;
-// $crumb-font-color-current: $oil;
+$crumb-font-color: $blue;
+$crumb-font-color-current: $green;
// $crumb-font-color-unavailable: $aluminum;
// $crumb-font-transform: uppercase;
-// $crumb-link-decor: underline;
+$crumb-link-decor: underline;
// We use these to control the slash between breadcrumbs
// $crumb-slash-color: $base;
-// $crumb-slash: "/";
+$crumb-slash: ">";
// 05. Buttons
// - - - - - - - - - - - - - - - - - - - - - - - - -
// $include-html-top-bar-classes: $include-html-classes;
// Background color for the top bar
-// $topbar-bg-color: $oil;
-// $topbar-bg: $topbar-bg-color;
+$topbar-bg-color: $tan;
+$topbar-bg: $tan;
// Height and margin
- $topbar-height: rem-calc(61);
+ $topbar-height: rem-calc(30);
// $topbar-margin-bottom: 0;
// Controlling the styles for the title in the top bar
// $topbar-title-font-size: rem-calc(17);
// Set the link colors and styles for top-level nav
-// $topbar-link-color: $white;
-// $topbar-link-color-hover: $white;
-// $topbar-link-color-active: $white;
-// $topbar-link-color-active-hover: $white;
+$topbar-link-color: $green-blue;
+$topbar-link-color-hover: $white;
+$topbar-link-color-active: $green;
+$topbar-link-color-active-hover: $green;
// $topbar-link-weight: $font-weight-normal;
- $topbar-link-font-size: rem-calc(20);
+ $topbar-link-font-size: rem-calc(16);
// $topbar-link-hover-lightness: -10%; // Darken by 10%
// $topbar-link-bg: $topbar-bg;
// $topbar-link-bg-hover: $d-blue;
// $topbar-link-bg-color-hover: $d-blue;
-// $topbar-link-bg-active: $white;
-// $topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%);
+$topbar-link-bg-active: transparent;
+$topbar-link-bg-active-hover: transparent;
// $topbar-link-font-family: $body-font-family;
// $topbar-link-text-transform: none;
// $topbar-link-padding: ($topbar-height / 3);
// $topbar-button-top: 7px;
// Style the top bar dropdown elements
-// $topbar-dropdown-bg: $white;
+$topbar-dropdown-bg: transparent;
// $topbar-dropdown-link-color: $black;
-// $topbar-dropdown-link-color-hover: $green;
-// $topbar-dropdown-link-bg: $white;
-// $topbar-dropdown-link-bg-hover: $white;
+$topbar-dropdown-link-color-hover: $green;
+$topbar-dropdown-link-bg: transparent;
+$topbar-dropdown-link-bg-hover: transparent;
+
// $topbar-dropdown-link-weight: $font-weight-normal;
// $topbar-dropdown-toggle-size: 5px;
// $topbar-dropdown-toggle-color: $white;
// $topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%);
// Sticky Class
-// $topbar-sticky-class: ".sticky";
+$topbar-sticky-class: ".sticky";
$topbar-arrows: false; //Set false to remove the triangle icon from the menu item
-// $topbar-dropdown-arrows: true; //Set false to remove the \00bb >> text from dropdown subnavigation li//
+$topbar-dropdown-arrows: false; //Set false to remove the \00bb >> text from dropdown subnavigation li//
// 36. Visibility Classes
// - - - - - - - - - - - - - - - - - - - - - - - - -
}
}
a {
- font-size: 12px;
+ // font-size: 12px;
}
form {
margin: 0 12px 0 14px;
}
}
}
-.county-news {
+.current_page_item > a {
font-weight: bold;
}
-.current_page_item a {
- font-weight: bold;
+body #sidebar ul.members-only{
+ margin-left: 0;
+ font-size: 16px !important;
+ @media #{$large-up}{
+ #menu-members-only-menu{
+ margin-left: 0;
+ }
+ }
+ @media #{$medium-down}{
+ margin-left: 0;
+ ul{
+ margin-left: 0;
+ }
+ }
}
\ No newline at end of file
-#slideshow {
- #caption {
- background: rgba(0, 0, 0, 0.75);
- color: $white;
- margin-top: -51px;
- p {
- padding: 10px 5px;
- font-size: 12px;
+.slideshow-blocks-container{
+ border-bottom: 4px solid $gold;
+ padding: 50px 0;
+ // margin-top: 120px;
+ background-color: $green-blue;
+ #slideshow {
+
+ ul{
+ border: 3px solid white;
margin: 0;
- text-align: right;
+ li{
+ list-style: none;
+ }
+ }
+ #caption {
+ background: rgba(0, 0, 0, 0.75);
+ color: $white;
+ p {
+ padding: 10px 5px;
+ font-size: 12px;
+ margin: 0;
+ text-align: right;
+ }
+ }
+ .widgettitle{
+ display: none;
}
}
-}
+}
\ No newline at end of file
}
}
//6. Main
+h1{
+ font-family: $roboto;
+ font-weight: bold;
+ color: $blue;
+}
+h2{
+ font-family: $roboto;
+ font-weight: bold;
+ color: $green;
+}
+h3{
+ font-family: $roboto;
+ font-weight: bold;
+ color: $yellow;
+}
+h4{
+ font-family: $caveat;
+ color: $yellow;
+}
+h5{
+ font-family: $roboto;
+ font-weight: bold;
+ color: $blue;
+}
+h6{
+ font-family: $roboto;
+ color: $green;
+ font-weight: bold;
+}
+//6. Main
//7. Slideshow
//8. Blog
//9. Sidebar
}
}
.tab-bar {
+ .left-small{
+ border-right: 1px solid white;
+ }
+ clear: both;
+ background: $green;
.tab-bar-section.middle {
// left: 0;
// right: 2.8125rem;
text-align: right;
}
}
-.top-bar-section {
- background: transparent;
- float: none;
- margin-left: auto;
- margin-right: auto;
- display: inline-block;
+.top-bar:not(.alt-menu){
+ background-color: $tan;
+ color: black;
+ height: auto;
+ padding: 0;
+ // position: absolute;
+ // bottom: 2px;
+ // right: 0;
+
+}
+.top-bar-alt{
+ .alt-menu{
+ > ul > li > a{
+ &::after{
+ content: '';
+ width: 0;
+ height: 0;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 10px solid white;
+ right: 0px;
+ }
+ }
+ background-color: $green-blue;
+ color: white;
+ float: right;
+ @media #{$medium-down}{
+ float: left;
+ }
+ width: 160px;
+ ul{
+ list-style: none;
+ li{
+ width: 100%;
+ text-align: left;
+ a{
+ line-height: 25px !important;
+ height: 25px;
+ background-color: $green-blue !important;
+ color: white;
+ }
+ ul.sub-menu.dropdown{
+ background: white;
+ padding: 10px;
+ li{
+ border-bottom: 1px dashed darkgrey;
+ padding: 5px 0;
+ a{
+ padding: 0;
+ background: white !important;
+ color: $green-blue !important;
+ &:hover{
+ color: $gold !important;
+ }
+ }
+ }
+
+ }
+
+ }
+ }
+ }
+}
+.top-bar-section:not(.alt-menu) {
+
+ background-color: $tan;
+ float: right;
+ color: black;
height: auto;
- line-height: 1;
+ & > ul > li{
+ padding: 15px 30px !important;
+ @media #{$medium-only}{
+ padding: 15px 25px !important;
+ }
+
+ &:hover{
+ background: $green-blue;
+ }
+ a{
+ font-size: 20px;
+ font-weight: bold;
+ font-family: 'Times New Roman', Times, serif;
+ }
+ }
ul{
+ //
+ display: block;
+ width: 100%;
+ height: auto;
li {
-
+ background-color: transparent;
+ padding: 0 1.2rem;
+ line-height: 1;
+ display: inline-block;
a {
+ color: $green-blue;
+ padding: 0 3px !important;
+ line-height: 1 !important;
+
}
&:not(.has-form):not(.active) {
background: transparent;
}
}
+
ul.dropdown {
+ // -moz-column-count: 2;
+ // -webkit-column-count: 2;
+ // column-count: 2;
+ background-color: rgba(255,255,255,.95);
+ top: 70px;
+ padding: 15px;
+ // botpxtom: 0px;
+ // column-fill: auto;
+ // min-width: 450px !important;
+ li.back{
+ display: none;
+ }
li {
+ // width: auto;
+ background-color: transparent;
+ float: none;
+ padding: 0 0 10px 0;
+ border-bottom: 1px dashed darkgrey;
a {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
+ padding: 0 !important;
+ background-color: transparent;
text-align: left;
+ font-weight: normal;
+ &:hover{
+ color: $gold;
+ }
}
&:not(.has-form):not(.active) {
& > a:not(.button) {
- font-size: rem-calc(20);
- padding: 10px 14px;
+ color: $green-blue;
+ font-size: 16px;
+ font-family: sans-serif;
+ &:hover{
+ color: $gold;
+ }
}
}
}
}
}
-// &.drop-right {
-// ul.dropdown {
-// padding-left: 250px;
-// padding-right: 21px;
-// right: -1%;
-// left: auto;
-// top: 74px;
-// background: $white;
-// border-bottom-left-radius: 10px;
-// border-bottom-right-radius: 10px;
-// min-width: 500px;
-// box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
-// -ms-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
-// -moz-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
-// -webkit-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.5);
-// li {
-// white-space: nowrap;
-// background: $white;
-// text-align: right;
-// border-bottom: 1px solid #e7e7e8;
-// padding: 5px 0;
-// &.nav-img-container {
-// img {
-// position: absolute;
-// left: 20px;
-// top: 23px;
-// border: 6px solid #fdefd4;
-// }
-// border: none;
-// }
-// a {
-// padding-left: 0;
-// text-align: left;
-// font-size: 18px;
-// &:hover {
-// color: $d-blue;
-// text-shadow: 0 0 1px $green;
-// text-shadow: 1 0 1px $green;
-// text-shadow: 0 1 1px $green;
-// text-shadow: -1 0 1px $green;
-// text-shadow: 0 -1 1px $green;
-// }
-// }
-// }
-// }
-// }
}
+
}
}
+.top-bar-section > ul >li a{
+ // text-transform: uppercase !important;
+}
+.top-bar-section > ul >li.has-dropdown{
+ position: relative;
+ // &:hover::after{
+ // content: '';
+ // height: 0;
+ // width: 0;
+ // border: 8px solid transparent;
+ // border-top-color: $green;
+ // position: absolute;
+ // bottom: 0px;
+ // left: 50%;
+ // margin-left: -8px;
+
+ // }
+}
/* -webkit-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
-moz-box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);
box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.75);*/
- box-shadow: 3px 3px 8px -1px darkgrey;
+ // box-shadow: 3px 3px 8px -1px darkgrey;
}
#searchform_container {
margin-top: 20px;
--- /dev/null
+.blocks{
+ padding: 0 10px;
+ .block{
+ display: block;
+ padding: 0 !important;
+ position: relative;
+ margin: 0 auto;
+ max-width: 460px;
+
+ // block title and post content
+ a.title-posts,a.title-posts+p{
+ display: block;
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ }
+ a.blocks-readmore{
+ display: block;
+ background: $blue;
+ max-width: 115px;
+ padding: 2px;
+ border-radius: 1px;
+ text-align: center;
+ margin: 0 auto 10px auto;
+ color: white;
+ cursor: pointer;
+ &:hover{
+ background: $green;
+ }
+ }
+ .block-title{
+ position: absolute;
+ bottom: 0;
+ color: white;
+ width: 100%;
+ text-align: center;
+ margin: 0;
+ background: -webkit-linear-gradient(transparent,black); /* Safari 5.1 to 6.0 */
+ background: -o-linear-gradient(transparent,black); /* Opera 11.1 to 12.0 */
+ background: -moz-linear-gradient(transparent,black); /* Firefox 3.6 to 15 */
+ background: linear-gradient(transparent,black); /* Standard syntax (must be last) */
+ }
+ @media #{$medium-down}{
+ // max-width: 475px;
+ float: none;
+ margin-bottom: 15px;
+ }
+ &:hover{
+ // cursor: pointer;
+ .block-overlay{
+ display: block;
+ }
+ }
+ }
+ .block-overlay{
+ .block-overlay-center{
+ background: rgba(0,0,0, 0.75);
+ position: absolute;
+ width: 80%;
+ height: auto;
+ max-height: 200px;
+ margin: 0 auto;
+ top: 15%;
+ left: 10%;
+ .block-title-center{
+ text-align: center;
+ margin: 0;
+ max-height: 38px;
+ line-height: 1;
+ font-size: 36px;
+ padding-top: 10px;
+ }
+ .block-content{
+ max-height: 100px;
+ overflow: hidden;
+ margin-bottom: 10px;
+ p{
+ color: white;
+ text-align: center;
+ line-height: 1.4;
+ padding: 5px;
+ margin-bottom: 0;
+ }
+ }
+ }
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0,0,0, 0.4);
+ display: none;
+ }
+ #block-1,#block-4{
+ max-height: 290px;
+ }
+ #block2,#block-3{
+ max-height: 230px;
+ }
+ #block-1{
+ @media #{$large-up}{
+ margin-right: 20px;
+ }
+ }
+ #block-3{
+ @media #{$large-up}{
+ margin-right: 20px;
+ }
+ }
+ #block-4{
+ @media #{$large-up}{
+ margin-top: -39px;
+ }
+ }
+ #block-3{
+ @media #{$large-up}{
+ margin-top: 20px;
+ }
+ }
+}
+.blocks-row{
+ margin-bottom: 50px;
+}
\ No newline at end of file
--- /dev/null
+#glm-member-db-front-container {
+ .glm-member-list-active-info .glm-member-title a {
+ color: $l-blue;
+ font-size: 26px;
+ letter-spacing: normal;
+ text-decoration: none;
+ vertical-align: top;
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ #glm-member-list-filters-button {
+ background-color: $red;
+ }
+ #glm-member-list-map-toggle {
+ background-color: $red;
+ }
+ #glm-member-list-filters-close {
+ background-color: $red;
+ }
+ .glm-member-list-container .glm-member-title {
+ line-height: 1;
+ margin: 5px 0;
+ text-transform: none;
+ }
+ .glm-member-list-container .glm-member-list-image-wrapper {
+ float: right;
+ max-height: 180px;
+ }
+ .glm-member-list-data {
+ padding: 20px;
+ }
+ .glm-member-list-active-info {
+ font-size: 16px;
+ }
+ .glm-member-list-address-wrapper > div {
+ line-height: 1.5;
+ }
+ .glm-member-list-active-info .glm-member-list-links > a {
+ text-decoration: underline;
+ color: $blue;
+ line-height: 1.5;
+ }
+ .glm-alpha-links > .glm-alpha-link {
+ background-color: $white;
+ border-color: $l-blue;
+ color: $l-blue;
+ &:hover {
+ background-color: $l-blue;
+ color: $white;
+ }
+ }
+ .glm-alpha-links > .glm-alpha-link-selected {
+ background-color: $l-blue;
+ color: white;
+ }
+ .glm-member-list-active-info {
+ padding: 0 0px 0 0;
+ }
+ .glm-member-db-list-header-title {
+ text-transform: none;
+ }
+ .glm-member-list-terms {
+ display: none;
+ }
+ .glm-member-search {
+ .glm-member-button-small,
+ input[type="submit"].glm-member-button {
+ font-size: 0.9em !important;
+ padding: 5px 20px !important;
+ margin: 0 auto !important;
+ line-height: 1.8em !important;
+ height: auto !important;
+ border-radius: 5px;
+ background-color: $blue;
+ transition: all 0.5s;
+ &:hover {
+ transition: all 0.5s;
+ background-color: yellow;
+ }
+ }
+ }
+ .glm-member-search::before {
+ background-color: $red;
+ }
+ .glm-member-db-takeback-mini {
+ text-decoration: none;
+ position: relative;
+ background-color: $blue;
+ transition: all 0.5s;
+ &:hover {
+ transition: all 0.5s;
+ background-color: $l-blue;
+ }
+ }
+ .glm-member-db-takeback-mini span {
+ font-size: 16px;
+ top: 14px;
+ }
+}
+#content-wrapper .glm-member-db-grid-view {
+ .glm-member-title a {
+ letter-spacing: 2px;
+ }
+ .glm-member-list-sub-links {
+ margin: 0;
+ ul {
+ display: table;
+ margin-left: 0;
+ width: 100%;
+ li {
+ text-transform: uppercase;
+ font-weight: bold;
+ border: 0;
+ width: 50%;
+ float: left;
+ display: block;
+ padding: 1px;
+ margin: 0;
+ a {
+ color: $green;
+ border-radius: 3px;
+ padding: 4px 8px;
+ display: block;
+ width: auto;
+ font-size: 12px;
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+}
+#glm-member-detail-container {
+ .glm-member-title {
+ // display: none;
+ }
+ #glm-member-detail-contact-info {
+ background-color: $blue;
+ color: $white;
+ }
+ #glm-member-detail-website-link {
+ text-decoration: none;
+ background-color: $green;
+ &:hover{
+ background-color: $l-green;
+ }
+ }
+ #glm-member-detail-data-container > .glm-member-detail-content-toggle {
+ color: $green;
+ }
+ .map-button {
+ background-color: $green;
+ &:hover {
+ background-color: $l-green;
+ }
+ }
+ #glm-member-detail-links a {
+ color: $l-blue;
+ border-color: $l-blue;
+ }
+}
+.glm-member-detail-contact-phone small {
+ font-size: 12px;
+}
+#members-only-sidebar-off-canvas {
+ background-color: #324B4F;
+ border-radius: 5px;
+ list-style: outside none none;
+ margin: 10px;
+ max-width: 230px;
+ h2 {
+ color: yellow;
+ }
+ h4 {
+ color: yellow;
+ }
+ ul li a {
+ color: $white;
+ &:hover {
+ color: yellow;
+ }
+ }
+ .menu-side .glm-button {
+ background: transparent;
+ text-decoration: underline;
+ color: white;
+ }
+}
+#members-only-content {
+ #glm-member-front-header {
+ margin-top: -10px;
+ }
+ #side-links {
+ border: 1px solid $l-blue;
+ border-radius: 3px;
+ padding: 15px 20px 30px;
+ background-color: $blue;
+ list-style: none;
+ @media #{$medium-only} {
+ padding: 25px 15px;
+ }
+ }
+ #side-links h4 {
+ color: yellow;
+ line-height: 1.2;
+ letter-spacing: normal;
+ font-size: 26px;
+ @media #{$medium-only} {
+ font-size: 24px;
+ }
+ }
+ #side-links ul {
+ margin: 0;
+ list-style: none;
+ }
+ #side-links li {
+ list-style: none;
+ line-height: 1.2;
+ margin-top: 15px;
+ }
+ #side-links li a {
+ color: white;
+ text-decoration: none;
+ font-size: 20px;
+ }
+ #side-links li a:hover {
+ color: yellow;
+ }
+ .glm-button.button {
+ background-color: $l-blue;
+ }
+ #main-content {
+ padding-top: 0;
+ }
+ #lostpasswordform {
+ max-width: 350px;
+ }
+}
+
+#featured-business {
+ #glm-member-db-front-container {
+ padding: 0;
+ }
+ .glm-featured-member-text {
+ padding: 20px;
+ }
+ .glm-featured-member-image-container {
+ max-height: 200px;
+ overflow: hidden;
+ }
+}
+#sidebar .glm-member-front-container {
+ padding: 0;
+}
+.glm-member-detail-custom-field{
+ padding: 4px;
+ &:nth-child(even){
+ background-color: rgba($l-blue,0.2);
+ }
+}
+.glm-member-detail-custom-field-name{
+ font-weight: bold;
+ padding-top: 3px;
+}
+.glm-member-detail-custom-field-data{
+ p{
+ margin: 0;
+ }
+}
\ No newline at end of file
- <div id="copyright" class="small-12 text-center row columns opensearchserver.ignore">
+ <div id="copyright" class="text-center opensearchserver.ignore">
<span>Copyright © <?php echo date('Y');?> </span>
<span class="bullet"> • </span>
- <span> Produced by <a target="_blank" href="http://www.gaslightmedia.com">Gaslight Media</a></span>
+ <span> Produced by <a target="_blank" href="https://www.gaslightmedia.com">Gaslight Media</a></span>
<span class="bullet"> • </span>
<span> All Rights Reserved</span>
</div>
\ No newline at end of file
- <footer class="main opensearchserver.ignore">
- <?php if (is_active_sidebar('sidebar-f')) :?>
- <?php dynamic_sidebar('sidebar-f');?>
- <?php endif;?>
- <div class="row">
- <div id="footer_address" class="row small-centered small-11 medium-6 columns">
- <?php if (function_exists('glm_get_clientinfo_option')) :?>
- <h2><?php echo glm_get_clientinfo_option('businessName');?></h2>
- <?php if (glm_get_clientinfo_option('address')):?>
- <span><?php echo glm_get_clientinfo_option('address');?></span>
- <span class="bullet"> • </span>
- <span><?php echo glm_get_clientinfo_option('city');?>, <?php echo glm_get_clientinfo_option('state');?>
- <?php echo glm_get_clientinfo_option('zip');?></span>
- <?php endif;?>
- <?php if (glm_get_clientinfo_option('address2')):?>
- <span class="bullet"> • </span>
- <span><?php echo glm_get_clientinfo_option('address2');?></span>
- <span class="bullet"> • </span>
- <span><?php echo glm_get_clientinfo_option('city2');?>, <?php echo glm_get_clientinfo_option('state2');?>
- <?php echo glm_get_clientinfo_option('zip2');?></span>
- <?php endif;?>
- <?php if (glm_get_clientinfo_option('phone')) :?>
- <span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('phone');?></span>
- <?php endif;?>
- <?php if (glm_get_clientinfo_option('phone2')) :?>
- <span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('phone2');?></span>
- <?php endif;?>
- <?php if (glm_get_clientinfo_option('email')) :?>
- <span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('email');?></span>
- <?php endif;?>
- <?php if (glm_get_clientinfo_option('fax')) :?>
- <span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('fax');?></span>
- <?php endif;?>
- <?php if (glm_get_clientinfo_option('extra')) :?>
- <span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('extra');?></span>
- <?php endif;?>
- <?php endif;?>
- </div>
- </div>
- </footer>
\ No newline at end of file
+<footer class="main opensearchserver.ignore">
+<div class="row large-row">
+ <div class="footer-logo-container small-12 large-3 columns">
+ <a href="<?php echo get_bloginfo('url'); ?>">
+ <img src="<?php echo get_template_directory_uri();?>/assets/meetings-michigan-logo.jpg" alt="" class="footer-logo">
+ </a>
+ </div>
+ <div id="footer_address" class="large-2 columns show-for-large-up">
+ <?php if (function_exists('glm_get_clientinfo_option')) :?>
+ <h2><?php echo glm_get_clientinfo_option('businessName');?></h2>
+ <?php if (glm_get_clientinfo_option('phone')) :?>
+ <span><?php echo glm_get_clientinfo_option('phone');?></span>
+ <?php endif;?>
+ <?php if (glm_get_clientinfo_option('phone2')) :?>
+ <span><?php echo glm_get_clientinfo_option('phone2');?></span>
+ <?php endif;?>
+ <?php if (glm_get_clientinfo_option('fax')) :?>
+ <span><?php echo glm_get_clientinfo_option('fax');?></span>
+ <a class="contact-us-link" href="<?php echo get_permalink(134)?>"><?php echo glm_get_clientinfo_option('email');?></a>
+ <?php endif;?>
+ <?php endif;?>
+ </div>
+ <div class="medium-4 large-2 columns pure-michigan-logo">
+ <a href="https://www.michigan.org/" target="_blank">
+ <img src="<?php echo get_template_directory_uri();?>/assets/pure-michigan-logo.jpg" alt="" class="footer-logo">
+ </a>
+ </div>
+ <div class="small-12 medium-8 large-5 columns">
+ <ul class="small-block-grid-1 medium-block-grid-2 large-block-grid-2 action-grid">
+ <li class="enews-action-item action-item">
+ <a href="<?php echo get_permalink(138); ?>" class="enews-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/enews.png'; ?>" alt="" class="enews-action-image">
+ </a>
+ </li>
+ <li class="become-member-action-item action-item">
+ <a href="<?php echo get_permalink(141); ?>" class="become-member-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/become-a-partner-destination-button.png'; ?>" alt="" class="become-member-action-image">
+ </a>
+ </li>
+ <li class="rfp-action-item action-item">
+ <a href="<?php echo get_permalink(49); ?>" class="rfp-action-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/rfp.png'; ?>" alt="" class="rfp-action-image">
+ </a>
+ </li>
+ <li class="member-login-action-item action-item">
+ <a href="<?php echo get_permalink(55); ?>" class="member-login-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/destination-partner-login-button.png'; ?>" alt="" class="member-action-image">
+ </a>
+ </li>
+
+
+ </ul>
+ </div>
+</div>
+</footer>
\ No newline at end of file
- <main class="page-front">
- <div class="row">
- <?php get_template_part('parts/slide-show');?>
- </div>
- <div id="content-wrapper">
- <div class="row" data-equalizer data-options="equalize_on_stack: false">
- <?php
- get_template_part('parts/glm-blocks');
- ?>
- </div>
- <div class="row">
- <?php get_template_part('parts/main-content');?>
-
- <div class="small-12 medium-6 large-4 columns small-text-center medium-text-left">
- <?php //get_sidebar(); ?>
- </div>
-
- </div>
- </div>
- </main>
\ No newline at end of file
+<main class="page-front">
+ <?php get_template_part('parts/slideshow');?>
+ <div id="content-wrapper">
+ <div class="row">
+ <?php get_template_part('parts/main-content');?>
+ </div>
+ <div class="row blocks-row" data-equalizer data-options="equalize_on_stack: false">
+ <?php get_template_part('parts/glm-blocks'); ?>
+ </div>
+ <div class="row front-blog-container">
+ <?php get_template_part('parts/blog-feed-front'); ?>
+ </div>
+ <div class="action-items-container">
+ <div class="row">
+ <div class="small-12 medium-6 columns">
+ <img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/visitor-guides.png" alt="">
+ </div>
+ <div class="small-12 medium-6 columns">E NEWS SIGNUP</div>
+ </div>
+ </div>
+ <div class="row"></div>
+ </div>
+</main>
\ No newline at end of file
-<header class="main">
- <div class="row medium-uncollapse large-collapse">
- <div id="logo-tag" class="small-12 text-center medium-12 columns">
- <?php get_custom_logo($blog_id = 0 );?>
- <?php the_custom_logo($blog_id = 0 );?>
- <?php
- if ( is_front_page() && is_home() ) : ?>
- <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
- <?php else : ?>
- <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
- <?php endif;
- $description = get_bloginfo( 'description', 'display' );
- if ( $description || is_customize_preview() ) : ?>
- <h3 class="site-description"><?php echo $description; ?></h3>
- <?php endif;
- ?>
+<header class="main not-fixed">
+ <div class="header-top-half">
+ <div class="row">
+ <div class="small-12 large-3 columns header-logo-container">
+ <a class="large-logo-link" href="<?php echo get_bloginfo('url'); ?>">
+ <img class="small-header-logo" src="<?php echo get_template_directory_uri();?>/assets/large-logo.png" alt="">
+ </a>
+ </div>
+ <div class="medium-7 columns secondary-nav-menu">
+ <nav class="large-12 columns top-bar-alt text-center show-for-medium-up opensearchserver.ignore" data-topbar role="navigation" data-options="sticky_on: large">
+ <section class="top-bar-section alt-menu">
+ <?php glm_theme_top_bar('alt-menu'); ?>
+ </section>
+ </nav>
+ </div>
+ <div class="medium-5 columns header-search-section show-for-medium-up">
+ <form class="header-search" method="GET" role="search" action="<?php echo home_url('/').'site-search/'; ?>">
+ <input class="header-search-input" type="text">
+ </form>
+
+ <div class="search-icon">
+ <span class="magnifying-glass"></span>
+ </div>
+ <a class="header-top-half-home" href="<?php echo get_bloginfo('url'); ?>">home</a>
+ </div>
</div>
</div>
+ <div class="header-bottom-half">
+ <div class="row row">
+ <nav class="large-12 columns top-bar text-center show-for-medium-up opensearchserver.ignore" data-topbar role="navigation" data-options="sticky_on: large">
+ <section class="top-bar-section">
+ <?php glm_theme_top_bar('top-bar'); ?>
+ </section>
+ </nav>
+ <nav class="tab-bar show-for-small-down">
+ <section class="left-small">
+ <a class="left-off-canvas-toggle menu-icon" href="#"><span>Menu</span></a>
+ </section>
+ </nav>
+ </div>
+ </div>
+
</header>
\ No newline at end of file
- <main class="page-inside">
- <div id="content-wrapper">
- <div class="row">
- <?php if(function_exists('bcn_display') && !is_front_page())
- {
- echo "<div class=\"breadcrumbs small-12 columns\">";
- echo '<span class="st_sharethis" st_title="'. get_the_title().'" st_url="'. get_the_permalink() .'"></span>';
- bcn_display();
- echo "</div>";
- }
- ?>
- </div>
- <div class="row">
- <?php get_template_part('parts/main-content');?>
- <!--
- <div class="small-12 medium-6 large-4 columns small-text-center medium-text-left">
- <?php //get_sidebar(); ?>
- </div>
- -->
- </div>
+<main class="page-inside">
+ <div id="header-image" class="page-header">
+ <?php
+ if(function_exists('get_member_data')){
+ $memberID = get_member_data('id');
+ if($memberID){
+ echo glm_get_header($memberID);
+ } else {
+ echo glm_get_header();
+ }
+ }
+ ?>
+
+ </div>
+ <div id="content-wrapper">
+ <div class="row">
+ <?php if (get_page_template_slug( $post->ID ) === "members-only-template.php") { ?>
+ <div class="members-only-template large-push-4 large-8 columns" data-equalizer-watch>
+ <?php if (is_user_logged_in()) { ?>
+ <!-- If user is logged in as a member, display top bar, bread crumbs, & content -->
+ <?php get_template_part('parts/glm-members-only-top-bar');
+ get_template_part('parts/main-content');
+ } else {
+ get_template_part('parts/glm-members-only-login-form');
+ } ?>
+ </div>
+ <?php } else { ?>
+ <div class="small-12 columns">
+ <?php if(function_exists('bcn_display') && !is_front_page())
+ {
+ echo "<div class=\"breadcrumbs small-12 columns\">";
+ echo '<span class="st_sharethis" st_title="'. get_the_title().'" st_url="'. get_the_permalink() .'"></span>';
+ bcn_display();
+ echo "</div>";
+ }?>
+ <?php get_template_part('parts/main-content');?>
+ </div>
+ <?php }
+ if (get_page_template_slug( $post->ID ) === "members-only-template.php") { ?>
+ <?php if (is_user_logged_in()) { ?>
+ <div id="side-content" class=" text-center small-12 large-pull-8 large-4 columns large-text-left">
+ <div id="sidebar" class="small-12" data-equalizer-watch>
+ <?php get_sidebar(); ?>
</div>
- </main>
\ No newline at end of file
+ </div>
+ <?php } ?>
+ <?php } ?>
+
+ </div>
+</main>
\ No newline at end of file
<aside class="left-off-canvas-menu hide-for-large-up opensearchserver.ignore">
- <?php glm_theme_mobile_off_canvas(); ?>
- <?php get_template_part('parts/search-form');?>
+ <?php glm_theme_mobile_off_canvas('mobile-menu'); ?>
+
+ <?php //get_template_part('parts/search-form');?>
<?php if (function_exists('glm_get_clientinfo_option')) :?>
<ul>
+ <li class="oc-site-title">Meetings Michigan</li>
<li><?php echo glm_get_clientinfo_option('businessName');?></li>
<?php if (glm_get_clientinfo_option('address')):?>
<li><?php echo glm_get_clientinfo_option('address');?></li>
<?php if (glm_get_clientinfo_option('phone2')) :?>
<span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('phone2');?></span>
<?php endif;?>
- <?php if (glm_get_clientinfo_option('email')) :?>
- <span class="bullet"> • </span><span><?php echo glm_get_clientinfo_option('email');?></span>
- <?php endif;?>
+
<?php if (glm_get_clientinfo_option('fax')) :?>
<li><?php echo glm_get_clientinfo_option('fax');?></li>
<?php endif;?>
<?php if (glm_get_clientinfo_option('extra')) :?>
<li><?php echo glm_get_clientinfo_option('extra');?></li>
<?php endif;?>
+ <?php if (glm_get_clientinfo_option('email')) :?>
+ <a class="contact-us-link" href="<?php echo get_permalink(134)?>"><?php echo glm_get_clientinfo_option('email');?></a>
+ <?php endif;?>
</ul>
<?php endif;?>
+ <div class="small-12 columns oc-action-items">
+ <ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-2 oc-action-grid">
+ <li class="enews-action-item action-item">
+ <a href="<?php echo get_permalink(138); ?>" class="enews-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/enews.png'; ?>" alt="" class="enews-action-image">
+ </a>
+ </li>
+ <li class="rfp-action-item action-item">
+ <a href="<?php echo get_permalink(49); ?>" class="rfp-action-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/rfp.png'; ?>" alt="" class="rfp-action-image">
+ </a>
+ </li>
+ <li class="become-member-action-item action-item">
+ <a href="<?php echo get_permalink(141); ?>" class="become-member-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/become-a-partner-destination-button.png'; ?>" alt="" class="become-member-action-image">
+ </a>
+ </li>
+ <li class="member-login-action-item action-item">
+ <a href="<?php echo get_permalink(55); ?>" class="member-login-action-link">
+ <img src="<?php echo get_template_directory_uri() . '/assets/destination-partner-login-button.png'; ?>" alt="" class="member-action-image">
+ </a>
+ </li>
+
+ </ul>
+ </div>
</aside>
<!--
<aside class="right-off-canvas-menu">
+++ /dev/null
- <nav class="top-bar text-center show-for-large-up opensearchserver.ignore" data-topbar role="navigation">
- <section class="top-bar-section">
- <?php glm_theme_top_bar(); ?>
- </section>
- </nav>
- <nav class="tab-bar show-for-medium-down">
- <section class="left-small">
- <a class="left-off-canvas-toggle menu-icon" href="#"><span>Menu</span></a>
- </section>
- </nav>
\ No newline at end of file
-<!--
- <div id="side-nav" class="show-for-large-up" data-equalizer-watch>
- <div class="row collapse opensearchserver.ignore">
- <?php //glm_side_menu(); ?>
- </div>
- </div>-->
+<?php if (get_page_template_slug( $post->ID ) === "members-only-template.php") { ?>
+ <?php if (is_user_logged_in()) { ?>
+ <div id="members-only-sidebar" class="show-for-small-up opensearchserver.ignore">
+ <div class="row collapse sidebar-row">
+ <h4 class="sidebar-title"> Members Only</h4>
+ <?php glm_theme_members_only('members-only-menu'); ?>
+ </div>
+ </div>
+ <?php } ?>
+<?php } ?>
\ No newline at end of file
--- /dev/null
+.sass-cache
+node_modules
\ No newline at end of file
--- /dev/null
+## Submitting issues
+
+### Test case required
+
+**All bug reports and problem issues require a jsFiddle**.
+[Please fork this JSFiddle as a baseline](http://jsfiddle.net/simeydotme/fmo50w7n/).
+
++ A test case clearly demonstrates the bug or issue.
++ It contains the bare minimum HTML, CSS, and JavaScript required to demonstrate the bug.
++ Assets are not minified (we cannot debug .min.js files).
++ A link to your production site is **not** a reduced test case.
+
+Providing a test case is the best way to get your issue addressed. Without a test case; your issue may be closed.
+You must provide a clear and simple way to reproduce the issue with the provided fiddle.
+
+## Support
+
+Although Slick is designed to be super easy to use, there's always things that can go wrong, especially when interacting with other plugins and complicated websites. If you are **having problems getting Slick to work**, or can't figure something out, **this repository**'s issues section **is not the place to ask about it**.
+
+I have set up a subreddit for Slick discussion at [reddit.com/r/slickcarousel](http://www.reddit.com/r/slickcarousel/).
+And a gitter chatroom here: [gitter.im/kenwheeler/slick](https://gitter.im/kenwheeler/slick).
+And finally you can ask the world for help, and find out if anyone else has your problem at [stackoverflow](http://stackoverflow.com/search?q=slick+carousel).
+
+Please use these forums as an area to discuss Slick and any issues you may have.
+
+## Feature Requests
+
+If you would like to request or propose a feature, please do so in the the Slick subreddit or gitter chat:
+[reddit.com/r/slickcarousel](http://www.reddit.com/r/slickcarousel/) / [gitter.im/kenwheeler/slick](https://gitter.im/kenwheeler/slick).
+
+## Pull requests
+
+**Contributions are welcome**! That said, please *be prepared to edit* your pull request at request, and provide a jsFiddle of your fork working interoperably with every "mode" that Slick supports, and with varying numbers of slides, slidesToShow & slidesToScroll. Failure to do so will result in your pull request being closed.
+
+*Please note that while Slick is open source, this is still my baby, and by submitting a pull request you are authorizing me to edit or modify it in any way shape or form. You will be listed in Github as a contributor, but I have and will continue to steer the direction of this project.*
--- /dev/null
+
+> short description of the bug / issue, provide more detail below.
+
+====================================================================
+
+
+###### `[ paste your jsfiddle link here ]`
+
+use this jsfiddle to reproduce your bug:
+http://jsfiddle.net/simeydotme/fmo50w7n/
+we will likely close your issue without it.
+
+
+====================================================================
+
+
+#### Steps to reproduce the problem
+
+1. ...
+2. ...
+
+
+====================================================================
+
+
+#### What is the expected behaviour?
+
+...
+
+
+====================================================================
+
+
+#### What is observed behaviour?
+
+...
+
+
+====================================================================
+
+
+#### More Details
+
+- Which browsers/versions does it happen on?
+- Which jQuery/Slick version are you using?
+- Did this work before?
+
+
+
+
--- /dev/null
+The MIT License (MIT)
+
+Copyright (c) 2013-2016
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null
+
+build: components slick.js slick.css
+ @component build --dev
+
+components: component.json
+ @component install --dev
+
+.PHONY: clean
--- /dev/null
+slick
+-------
+
+[1]: <https://github.com/kenwheeler/slick>
+
+_the last carousel you'll ever need_
+
+#### Demo
+
+[http://kenwheeler.github.io/slick](http://kenwheeler.github.io/slick/)
+
+#### CDN
+
+To start working with Slick right away, there's a couple of CDN choices availabile
+to serve the files as close, and fast as possible to your users:
+
+- https://cdnjs.com/libraries/slick-carousel
+- https://www.jsdelivr.com/projects/jquery.slick
+
+#####Example using jsDelivr
+
+Just add a link to the css file in your `<head>`:
+```html
+<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css"/>
+<!-- Add the slick-theme.css if you want default styling -->
+<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css"/>
+```
+
+Then, before your closing ```<body>``` tag add:
+
+```html
+<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js"></script>
+```
+
+#### Package Managers
+
+```sh
+# Bower
+bower install --save slick-carousel
+
+# NPM
+npm install slick-carousel
+```
+
+#### Contributing
+
+PLEASE review CONTRIBUTING.markdown prior to requesting a feature, filing a pull request or filing an issue.
+
+### Data Attribute Settings
+
+In slick 1.5 you can now add settings using the data-slick attribute. You still need to call $(element).slick() to initialize slick on the element.
+
+Example:
+
+```html
+<div data-slick='{"slidesToShow": 4, "slidesToScroll": 4}'>
+ <div><h3>1</h3></div>
+ <div><h3>2</h3></div>
+ <div><h3>3</h3></div>
+ <div><h3>4</h3></div>
+ <div><h3>5</h3></div>
+ <div><h3>6</h3></div>
+</div>
+```
+
+### Settings
+
+Option | Type | Default | Description
+------ | ---- | ------- | -----------
+accessibility | boolean | true | Enables tabbing and arrow key navigation
+adaptiveHeight | boolean | false | Adapts slider height to the current slide
+autoplay | boolean | false | Enables auto play of slides
+autoplaySpeed | int | 3000 | Auto play change interval
+centerMode | boolean | false | Enables centered view with partial prev/next slides. Use with odd numbered slidesToShow counts.
+centerPadding | string | '50px' | Side padding when in center mode. (px or %)
+cssEase | string | 'ease' | CSS3 easing
+customPaging | function | n/a | Custom paging templates. See source for use example.
+dots | boolean | false | Current slide indicator dots
+dotsClass | string | 'slick-dots' | Class for slide indicator dots container
+draggable | boolean | true | Enables desktop dragging
+easing | string | 'linear' | animate() fallback easing
+edgeFriction | integer | 0.15 | Resistance when swiping edges of non-infinite carousels
+fade | boolean | false | Enables fade
+arrows | boolean | true | Enable Next/Prev arrows
+appendArrows | string | $(element) | Change where the navigation arrows are attached (Selector, htmlString, Array, Element, jQuery object)
+appendDots | string | $(element) | Change where the navigation dots are attached (Selector, htmlString, Array, Element, jQuery object)
+mobileFirst | boolean | false | Responsive settings use mobile first calculation
+prevArrow | string (html \| jQuery selector) \| object (DOM node \| jQuery object) | `<button type="button" class="slick-prev">Previous</button>` | Allows you to select a node or customize the HTML for the "Previous" arrow.
+nextArrow | string (html \| jQuery selector) \| object (DOM node \| jQuery object) | `<button type="button" class="slick-next">Next</button>` | Allows you to select a node or customize the HTML for the "Next" arrow.
+infinite | boolean | true | Infinite looping
+initialSlide | integer | 0 | Slide to start on
+lazyLoad | string | 'ondemand' | Accepts 'ondemand' or 'progressive' for lazy load technique. 'ondemand' will load the image as soon as you slide to it, 'progressive' loads one image after the other when the page loads.
+pauseOnFocus | boolean | true | Pauses autoplay when slider is focussed
+pauseOnHover | boolean | true | Pauses autoplay on hover
+pauseOnDotsHover | boolean | false | Pauses autoplay when a dot is hovered
+respondTo | string | 'window' | Width that responsive object responds to. Can be 'window', 'slider' or 'min' (the smaller of the two).
+responsive | array | null | Array of objects [containing breakpoints and settings objects (see example)](#responsive-option-example). Enables settings at given `breakpoint`. Set `settings` to "unslick" instead of an object to disable slick at a given breakpoint.
+rows | int | 1 | Setting this to more than 1 initializes grid mode. Use slidesPerRow to set how many slides should be in each row.
+slide | string | '' | Slide element query
+slidesPerRow | int | 1 | With grid mode initialized via the rows option, this sets how many slides are in each grid row.
+slidesToShow | int | 1 | # of slides to show at a time
+slidesToScroll | int | 1 | # of slides to scroll at a time
+speed | int | 300 | Transition speed
+swipe | boolean | true | Enables touch swipe
+swipeToSlide | boolean | false | Swipe to slide irrespective of slidesToScroll
+touchMove | boolean | true | Enables slide moving with touch
+touchThreshold | int | 5 | To advance slides, the user must swipe a length of (1/touchThreshold) * the width of the slider.
+useCSS | boolean | true | Enable/Disable CSS Transitions
+useTransform | boolean | true | Enable/Disable CSS Transforms
+variableWidth | boolean | false | Disables automatic slide width calculation
+vertical | boolean | false | Vertical slide direction
+verticalSwiping | boolean | false | Changes swipe direction to vertical
+rtl | boolean | false | Change the slider's direction to become right-to-left
+waitForAnimate | boolean | true | Ignores requests to advance the slide while animating
+zIndex | number | 1000 | Set the zIndex values for slides, useful for IE9 and lower
+
+##### Responsive Option Example
+The responsive option, and value, is quite unique and powerful.
+You can use it like so:
+
+```javascript
+$(".slider").slick({
+
+ // normal options...
+ infinite: false,
+
+ // the magic
+ responsive: [{
+
+ breakpoint: 1024,
+ settings: {
+ slidesToShow: 3,
+ infinite: true
+ }
+
+ }, {
+
+ breakpoint: 600,
+ settings: {
+ slidesToShow: 2,
+ dots: true
+ }
+
+ }, {
+
+ breakpoint: 300,
+ settings: "unslick" // destroys slick
+
+ }]
+});
+```
+
+
+
+
+### Events
+
+In slick 1.4, callback methods were deprecated and replaced with events. Use them before the initialization of slick as shown below:
+
+```javascript
+// On swipe event
+$('.your-element').on('swipe', function(event, slick, direction){
+ console.log(direction);
+ // left
+});
+
+// On edge hit
+$('.your-element').on('edge', function(event, slick, direction){
+ console.log('edge was hit')
+});
+
+// On before slide change
+$('.your-element').on('beforeChange', function(event, slick, currentSlide, nextSlide){
+ console.log(nextSlide);
+});
+```
+
+Event | Params | Description
+------ | -------- | -----------
+afterChange | event, slick, currentSlide | After slide change callback
+beforeChange | event, slick, currentSlide, nextSlide | Before slide change callback
+breakpoint | event, slick, breakpoint | Fires after a breakpoint is hit
+destroy | event, slick | When slider is destroyed, or unslicked.
+edge | event, slick, direction | Fires when an edge is overscrolled in non-infinite mode.
+init | event, slick | When Slick initializes for the first time callback. Note that this event should be defined before initializing the slider.
+reInit | event, slick | Every time Slick (re-)initializes callback
+setPosition | event, slick | Every time Slick recalculates position
+swipe | event, slick, direction | Fires after swipe/drag
+lazyLoaded | event, slick, image, imageSource | Fires after image loads lazily
+lazyLoadError | event, slick, image, imageSource | Fires after image fails to load
+
+
+#### Methods
+
+Methods are called on slick instances through the slick method itself in version 1.4, see below:
+
+```javascript
+// Add a slide
+$('.your-element').slick('slickAdd',"<div></div>");
+
+// Get the current slide
+var currentSlide = $('.your-element').slick('slickCurrentSlide');
+```
+
+This new syntax allows you to call any internal slick method as well:
+
+```javascript
+// Manually refresh positioning of slick
+$('.your-element').slick('setPosition');
+```
+
+
+Method | Argument | Description
+------ | -------- | -----------
+`slick` | options : object | Initializes Slick
+`unslick` | | Destroys Slick
+`slickNext` | | Triggers next slide
+`slickPrev` | | Triggers previous slide
+`slickPause` | | Pause Autoplay
+`slickPlay` | | Start Autoplay (_will also set `autoplay` option to `true`_)
+`slickGoTo` | index : int, dontAnimate : bool | Goes to slide by index, skipping animation if second parameter is set to true
+`slickCurrentSlide` | | Returns the current slide index
+`slickAdd` | element : html or DOM object, index: int, addBefore: bool | Add a slide. If an index is provided, will add at that index, or before if addBefore is set. If no index is provided, add to the end or to the beginning if addBefore is set. Accepts HTML String || Object
+`slickRemove` | index: int, removeBefore: bool | Remove slide by index. If removeBefore is set true, remove slide preceding index, or the first slide if no index is specified. If removeBefore is set to false, remove the slide following index, or the last slide if no index is set.
+`slickFilter` | filter : selector or function | Filters slides using jQuery .filter syntax
+`slickUnfilter` | | Removes applied filter
+`slickGetOption` | option : string(option name) | Gets an option value.
+`slickSetOption` | change an option, `refresh` is always `boolean` and will update UI changes...
+ | `option, value, refresh` | change a [single `option`](https://github.com/kenwheeler/slick#settings) to given `value`; `refresh` is optional.
+ | `"responsive", [{ breakpoint: n, settings: {} }, ... ], refresh` | change or add [whole sets of responsive options](#responsive-option-example)
+ | `{ option: value, option: value, ... }, refresh` | change [multiple `option`s](https://github.com/kenwheeler/slick#settings) to corresponding `value`s.
+
+
+#### Example
+
+Initialize with:
+
+```javascript
+$(element).slick({
+ dots: true,
+ speed: 500
+});
+ ```
+
+Change the speed with:
+
+```javascript
+$(element).slick('slickSetOption', 'speed', 5000, true);
+```
+
+Destroy with:
+
+```javascript
+$(element).slick('unslick');
+```
+
+
+#### Sass Variables
+
+Variable | Type | Default | Description
+------ | ---- | ------- | -----------
+$slick-font-path | string | "./fonts/" | Directory path for the slick icon font
+$slick-font-family | string | "slick" | Font-family for slick icon font
+$slick-loader-path | string | "./" | Directory path for the loader image
+$slick-arrow-color | color | white | Color of the left/right arrow icons
+$slick-dot-color | color | black | Color of the navigation dots
+$slick-dot-color-active | color | $slick-dot-color | Color of the active navigation dot
+$slick-prev-character | string | '\2190' | Unicode character code for the previous arrow icon
+$slick-next-character | string | '\2192' | Unicode character code for the next arrow icon
+$slick-dot-character | string | '\2022' | Unicode character code for the navigation dot icon
+$slick-dot-size | pixels | 6px | Size of the navigation dots
+
+#### Browser support
+
+Slick works on IE8+ in addition to other modern browsers such as Chrome, Firefox, and Safari.
+
+#### Dependencies
+
+jQuery 1.7
+
+#### License
+
+Copyright (c) 2014 Ken Wheeler
+
+Licensed under the MIT license.
+
+Free as in Bacon.
--- /dev/null
+{
+ "name": "slick-carousel",
+ "main": [
+ "slick/slick.js",
+ "slick/slick.css",
+ "slick/slick.less",
+ "slick/slick.scss"
+ ],
+ "version": "1.6.0",
+ "homepage": "https://github.com/kenwheeler/slick",
+ "authors": [
+ "Ken Wheeler <ken_wheeler@me.com>"
+ ],
+ "description": "the last carousel you'll ever need",
+ "keywords": [
+ "responsive",
+ "carousel",
+ "jquery"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests",
+ "package.json",
+ "index.html"
+ ],
+ "dependencies": {
+ "jquery": ">=1.7"
+ }
+}
--- /dev/null
+{
+ "name": "slick",
+ "repo": "kenwheeler/slick",
+ "description": "the last carousel you'll ever need",
+ "version": "1.6.0",
+ "keywords": ["ui", "jquery", "carousel", "responsive", "slider"],
+ "dependencies": {
+ "component/jquery": "*"
+ },
+ "development": {},
+ "scripts": {
+ "slick/slick.js": "slick.js"
+ },
+ "styles": {
+ "slick/slick.css": "slick.css",
+ "slick/slick-theme.css": "slick-theme.css"
+ }
+}
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Slick Playground</title>
+ <meta charset="UTF-8">
+ <link rel="stylesheet" type="text/css" href="./slick/slick.css">
+ <link rel="stylesheet" type="text/css" href="./slick/slick-theme.css">
+ <style type="text/css">
+ html, body {
+ margin: 0;
+ padding: 0;
+ }
+
+ * {
+ box-sizing: border-box;
+ }
+
+ .slider {
+ width: 50%;
+ margin: 100px auto;
+ }
+
+ .slick-slide {
+ margin: 0px 20px;
+ }
+
+ .slick-slide img {
+ width: 100%;
+ }
+
+ .slick-prev:before,
+ .slick-next:before {
+ color: black;
+ }
+ </style>
+</head>
+<body>
+
+ <section class="regular slider">
+ <div>
+ <img src="http://placehold.it/350x300?text=1">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=2">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=3">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=4">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=5">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=6">
+ </div>
+ </section>
+
+ <section class="center slider">
+ <div>
+ <img src="http://placehold.it/350x300?text=1">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=2">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=3">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=4">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=5">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=6">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=7">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=8">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=9">
+ </div>
+ </section>
+
+ <section class="variable slider">
+ <div>
+ <img src="http://placehold.it/350x300?text=1">
+ </div>
+ <div>
+ <img src="http://placehold.it/200x300?text=2">
+ </div>
+ <div>
+ <img src="http://placehold.it/100x300?text=3">
+ </div>
+ <div>
+ <img src="http://placehold.it/200x300?text=4">
+ </div>
+ <div>
+ <img src="http://placehold.it/350x300?text=5">
+ </div>
+ <div>
+ <img src="http://placehold.it/300x300?text=6">
+ </div>
+ </section>
+
+ <script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>
+ <script src="./slick/slick.js" type="text/javascript" charset="utf-8"></script>
+ <script type="text/javascript">
+ $(document).on('ready', function() {
+ $(".regular").slick({
+ dots: true,
+ infinite: true,
+ slidesToShow: 3,
+ slidesToScroll: 3
+ });
+ $(".center").slick({
+ dots: true,
+ infinite: true,
+ centerMode: true,
+ slidesToShow: 3,
+ slidesToScroll: 3
+ });
+ $(".variable").slick({
+ dots: true,
+ infinite: true,
+ variableWidth: true
+ });
+ });
+ </script>
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+{
+ "name": "slick-carousel",
+ "version": "1.6.0",
+ "description": "the last carousel you'll ever need",
+ "main": "slick/slick.js",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/kenwheeler/slick.git"
+ },
+ "keywords": [
+ "carousel",
+ "slick",
+ "responsive",
+ "js",
+ "slider"
+ ],
+ "author": "Ken Wheeler <ken_wheeler@me.com>",
+ "contributors": [
+ {
+ "name": "ken wheeler",
+ "email": "ken_wheeler@me.com",
+ "url": "http://kenwheeler.github.io/"
+ },
+ {
+ "name": "simon goellner",
+ "email": "simey.me@gmail.com",
+ "url": "http://simey.me"
+ },
+ {
+ "name": "ahmad el-alfy",
+ "email": "ahmadalfy@gmail.com",
+ "url": "http://www.alfy.me"
+ },
+ {
+ "name": "leggomuhgreggo",
+ "email": "gwestneat@gmail.com"
+ },
+ {
+ "name": "ashley mcknight",
+ "email": "ash@sharpteef.net"
+ }
+ ],
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/kenwheeler/slick/issues"
+ },
+ "dependencies": {
+ "jquery": ">=1.7.2"
+ }
+}
--- /dev/null
+{
+ "name": "slick",
+ "title": "slick",
+ "description": "A jQuery responsive touch carousel",
+ "keywords": [
+ "responsive",
+ "slider",
+ "carousel",
+ "touch",
+ "mobile"
+ ],
+ "version": "1.6.0",
+ "author": {
+ "name": "Ken Wheeler",
+ "url": "http://kenwheeler.github.io"
+ },
+ "maintainers": [{
+ "name": "Ken Wheeler",
+ "email": "dubmediagroup@gmail.com",
+ "url": "http://www.dubmediagroup.com"
+ }],
+ "licenses": [{
+ "type": "MIT",
+ "url": "https://github.com/kenwheeler/slick/blob/master/LICENSE"
+ }],
+ "demo": "http://kenwheeler.github.io/slick/",
+ "bugs": "https://github.com/kenwheeler/slick/issues",
+ "homepage": "https://github.com/kenwheeler/slick/",
+ "docs": "https://github.com/kenwheeler/slick/",
+ "download": "https://github.com/kenwheeler/slick/archive/master.zip",
+ "dependencies": {
+ "jquery": ">=1.7"
+ }
+}
--- /dev/null
+css_dir = "."
+sass_dir = "."
+images_dir = "."
+fonts_dir = "fonts"
+relative_assets = true
+
+output_style = :compact
+line_comments = false
+
+preferred_syntax = :scss
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by Fontastic.me</metadata>
+<defs>
+<font id="slick" horiz-adv-x="512">
+<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
+<missing-glyph horiz-adv-x="512" />
+
+<glyph unicode="→" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
+<glyph unicode="←" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
+<glyph unicode="•" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
+<glyph unicode="a" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
+</font></defs></svg>
--- /dev/null
+@charset 'UTF-8';
+/* Slider */
+.slick-loading .slick-list
+{
+ background: #fff url('./ajax-loader.gif') center center no-repeat;
+}
+
+/* Icons */
+@font-face
+{
+ font-family: 'slick';
+ font-weight: normal;
+ font-style: normal;
+
+ src: url('./fonts/slick.eot');
+ src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
+}
+/* Arrows */
+.slick-prev,
+.slick-next
+{
+ font-size: 0;
+ line-height: 0;
+
+ position: absolute;
+ top: 50%;
+
+ display: block;
+
+ width: 20px;
+ height: 20px;
+ padding: 0;
+ -webkit-transform: translate(0, -50%);
+ -ms-transform: translate(0, -50%);
+ transform: translate(0, -50%);
+
+ cursor: pointer;
+
+ color: transparent;
+ border: none;
+ outline: none;
+ background: transparent;
+}
+.slick-prev:hover,
+.slick-prev:focus,
+.slick-next:hover,
+.slick-next:focus
+{
+ color: transparent;
+ outline: none;
+ background: transparent;
+}
+.slick-prev:hover:before,
+.slick-prev:focus:before,
+.slick-next:hover:before,
+.slick-next:focus:before
+{
+ opacity: 1;
+}
+.slick-prev.slick-disabled:before,
+.slick-next.slick-disabled:before
+{
+ opacity: .25;
+}
+
+.slick-prev:before,
+.slick-next:before
+{
+ font-family: 'slick';
+ font-size: 20px;
+ line-height: 1;
+
+ opacity: .75;
+ color: white;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.slick-prev
+{
+ left: -25px;
+}
+[dir='rtl'] .slick-prev
+{
+ right: -25px;
+ left: auto;
+}
+.slick-prev:before
+{
+ content: '←';
+}
+[dir='rtl'] .slick-prev:before
+{
+ content: '→';
+}
+
+.slick-next
+{
+ right: -25px;
+}
+[dir='rtl'] .slick-next
+{
+ right: auto;
+ left: -25px;
+}
+.slick-next:before
+{
+ content: '→';
+}
+[dir='rtl'] .slick-next:before
+{
+ content: '←';
+}
+
+/* Dots */
+.slick-dotted.slick-slider
+{
+ margin-bottom: 30px;
+}
+
+.slick-dots
+{
+ position: absolute;
+ bottom: -25px;
+
+ display: block;
+
+ width: 100%;
+ padding: 0;
+ margin: 0;
+
+ list-style: none;
+
+ text-align: center;
+}
+.slick-dots li
+{
+ position: relative;
+
+ display: inline-block;
+
+ width: 20px;
+ height: 20px;
+ margin: 0 5px;
+ padding: 0;
+
+ cursor: pointer;
+}
+.slick-dots li button
+{
+ font-size: 0;
+ line-height: 0;
+
+ display: block;
+
+ width: 20px;
+ height: 20px;
+ padding: 5px;
+
+ cursor: pointer;
+
+ color: transparent;
+ border: 0;
+ outline: none;
+ background: transparent;
+}
+.slick-dots li button:hover,
+.slick-dots li button:focus
+{
+ outline: none;
+}
+.slick-dots li button:hover:before,
+.slick-dots li button:focus:before
+{
+ opacity: 1;
+}
+.slick-dots li button:before
+{
+ font-family: 'slick';
+ font-size: 6px;
+ line-height: 20px;
+
+ position: absolute;
+ top: 0;
+ left: 0;
+
+ width: 20px;
+ height: 20px;
+
+ content: '•';
+ text-align: center;
+
+ opacity: .25;
+ color: black;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.slick-dots li.slick-active button:before
+{
+ opacity: .75;
+ color: black;
+}
--- /dev/null
+@charset "UTF-8";
+
+// Default Variables
+
+@slick-font-path: "./fonts/";
+@slick-font-family: "slick";
+@slick-loader-path: "./";
+@slick-arrow-color: white;
+@slick-dot-color: black;
+@slick-dot-color-active: @slick-dot-color;
+@slick-prev-character: "←";
+@slick-next-character: "→";
+@slick-dot-character: "•";
+@slick-dot-size: 6px;
+@slick-opacity-default: 0.75;
+@slick-opacity-on-hover: 1;
+@slick-opacity-not-active: 0.25;
+
+/* Slider */
+.slick-loading .slick-list{
+ background: #fff url('@{slick-loader-path}ajax-loader.gif') center center no-repeat;
+}
+
+/* Icons */
+@font-face{
+ font-family: 'slick';
+ font-weight: normal;
+ font-style: normal;
+
+ src: url('@{slick-font-path}slick.eot');
+ src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg');
+}
+
+/* Arrows */
+
+.slick-prev,
+.slick-next {
+ position: absolute;
+ display: block;
+ height: 20px;
+ width: 20px;
+ line-height: 0px;
+ font-size: 0px;
+ cursor: pointer;
+ background: transparent;
+ color: transparent;
+ top: 50%;
+ -webkit-transform: translate(0, -50%);
+ -ms-transform: translate(0, -50%);
+ transform: translate(0, -50%);
+ padding: 0;
+ border: none;
+ outline: none;
+ &:hover, &:focus {
+ outline: none;
+ background: transparent;
+ color: transparent;
+ &:before {
+ opacity: @slick-opacity-on-hover;
+ }
+ }
+ &.slick-disabled:before {
+ opacity: @slick-opacity-not-active;
+ }
+}
+
+.slick-prev:before, .slick-next:before {
+ font-family: @slick-font-family;
+ font-size: 20px;
+ line-height: 1;
+ color: @slick-arrow-color;
+ opacity: @slick-opacity-default;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.slick-prev {
+ left: -25px;
+ &[dir="rtl"] {
+ left: auto;
+ right: -25px;
+ }
+ &:before {
+ content: @slick-prev-character;
+ &[dir="rtl"] {
+ content: @slick-next-character;
+ }
+ }
+}
+
+.slick-next {
+ right: -25px;
+ &[dir="rtl"] {
+ left: -25px;
+ right: auto;
+ }
+ &:before {
+ content: @slick-next-character;
+ &[dir="rtl"] {
+ content: @slick-prev-character;
+ }
+ }
+}
+
+/* Dots */
+
+.slick-dotted .slick-slider {
+ margin-bottom: 30px;
+}
+
+.slick-dots {
+ position: absolute;
+ bottom: -25px;
+ list-style: none;
+ display: block;
+ text-align: center;
+ padding: 0;
+ margin: 0;
+ width: 100%;
+ li {
+ position: relative;
+ display: inline-block;
+ height: 20px;
+ width: 20px;
+ margin: 0 5px;
+ padding: 0;
+ cursor: pointer;
+ button {
+ border: 0;
+ background: transparent;
+ display: block;
+ height: 20px;
+ width: 20px;
+ outline: none;
+ line-height: 0px;
+ font-size: 0px;
+ color: transparent;
+ padding: 5px;
+ cursor: pointer;
+ &:hover, &:focus {
+ outline: none;
+ &:before {
+ opacity: @slick-opacity-on-hover;
+ }
+ }
+ &:before {
+ position: absolute;
+ top: 0;
+ left: 0;
+ content: @slick-dot-character;
+ width: 20px;
+ height: 20px;
+ font-family: @slick-font-family;
+ font-size: @slick-dot-size;
+ line-height: 20px;
+ text-align: center;
+ color: @slick-dot-color;
+ opacity: @slick-opacity-not-active;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+ }
+ &.slick-active button:before {
+ color: @slick-dot-color-active;
+ opacity: @slick-opacity-default;
+ }
+ }
+}
--- /dev/null
+@charset "UTF-8";
+
+// Default Variables
+
+// Slick icon entity codes outputs the following
+// "\2190" outputs ascii character "←"
+// "\2192" outputs ascii character "→"
+// "\2022" outputs ascii character "•"
+
+$slick-font-path: "./fonts/" !default;
+$slick-font-family: "slick" !default;
+$slick-loader-path: "./" !default;
+$slick-arrow-color: white !default;
+$slick-dot-color: black !default;
+$slick-dot-color-active: $slick-dot-color !default;
+$slick-prev-character: "\2190" !default;
+$slick-next-character: "\2192" !default;
+$slick-dot-character: "\2022" !default;
+$slick-dot-size: 6px !default;
+$slick-opacity-default: 0.75 !default;
+$slick-opacity-on-hover: 1 !default;
+$slick-opacity-not-active: 0.25 !default;
+
+@function slick-image-url($url) {
+ @if function-exists(image-url) {
+ @return image-url($url);
+ }
+ @else {
+ @return url($slick-loader-path + $url);
+ }
+}
+
+@function slick-font-url($url) {
+ @if function-exists(font-url) {
+ @return font-url($url);
+ }
+ @else {
+ @return url($slick-font-path + $url);
+ }
+}
+
+/* Slider */
+
+.slick-list {
+ .slick-loading & {
+ background: #fff slick-image-url("ajax-loader.gif") center center no-repeat;
+ }
+}
+
+/* Icons */
+@if $slick-font-family == "slick" {
+ @font-face {
+ font-family: "slick";
+ src: slick-font-url("slick.eot");
+ src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg");
+ font-weight: normal;
+ font-style: normal;
+ }
+}
+
+/* Arrows */
+
+.slick-prev,
+.slick-next {
+ position: absolute;
+ display: block;
+ height: 20px;
+ width: 20px;
+ line-height: 0px;
+ font-size: 0px;
+ cursor: pointer;
+ background: transparent;
+ color: transparent;
+ top: 50%;
+ -webkit-transform: translate(0, -50%);
+ -ms-transform: translate(0, -50%);
+ transform: translate(0, -50%);
+ padding: 0;
+ border: none;
+ outline: none;
+ &:hover, &:focus {
+ outline: none;
+ background: transparent;
+ color: transparent;
+ &:before {
+ opacity: $slick-opacity-on-hover;
+ }
+ }
+ &.slick-disabled:before {
+ opacity: $slick-opacity-not-active;
+ }
+ &:before {
+ font-family: $slick-font-family;
+ font-size: 20px;
+ line-height: 1;
+ color: $slick-arrow-color;
+ opacity: $slick-opacity-default;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+}
+
+.slick-prev {
+ left: -25px;
+ [dir="rtl"] & {
+ left: auto;
+ right: -25px;
+ }
+ &:before {
+ content: $slick-prev-character;
+ [dir="rtl"] & {
+ content: $slick-next-character;
+ }
+ }
+}
+
+.slick-next {
+ right: -25px;
+ [dir="rtl"] & {
+ left: -25px;
+ right: auto;
+ }
+ &:before {
+ content: $slick-next-character;
+ [dir="rtl"] & {
+ content: $slick-prev-character;
+ }
+ }
+}
+
+/* Dots */
+
+.slick-dotted.slick-slider {
+ margin-bottom: 30px;
+}
+
+.slick-dots {
+ position: absolute;
+ bottom: -25px;
+ list-style: none;
+ display: block;
+ text-align: center;
+ padding: 0;
+ margin: 0;
+ width: 100%;
+ li {
+ position: relative;
+ display: inline-block;
+ height: 20px;
+ width: 20px;
+ margin: 0 5px;
+ padding: 0;
+ cursor: pointer;
+ button {
+ border: 0;
+ background: transparent;
+ display: block;
+ height: 20px;
+ width: 20px;
+ outline: none;
+ line-height: 0px;
+ font-size: 0px;
+ color: transparent;
+ padding: 5px;
+ cursor: pointer;
+ &:hover, &:focus {
+ outline: none;
+ &:before {
+ opacity: $slick-opacity-on-hover;
+ }
+ }
+ &:before {
+ position: absolute;
+ top: 0;
+ left: 0;
+ content: $slick-dot-character;
+ width: 20px;
+ height: 20px;
+ font-family: $slick-font-family;
+ font-size: $slick-dot-size;
+ line-height: 20px;
+ text-align: center;
+ color: $slick-dot-color;
+ opacity: $slick-opacity-not-active;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+ }
+ &.slick-active button:before {
+ color: $slick-dot-color-active;
+ opacity: $slick-opacity-default;
+ }
+ }
+}
--- /dev/null
+/* Slider */
+.slick-slider
+{
+ position: relative;
+
+ display: block;
+ box-sizing: border-box;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ -webkit-touch-callout: none;
+ -khtml-user-select: none;
+ -ms-touch-action: pan-y;
+ touch-action: pan-y;
+ -webkit-tap-highlight-color: transparent;
+}
+
+.slick-list
+{
+ position: relative;
+
+ display: block;
+ overflow: hidden;
+
+ margin: 0;
+ padding: 0;
+}
+.slick-list:focus
+{
+ outline: none;
+}
+.slick-list.dragging
+{
+ cursor: pointer;
+ cursor: hand;
+}
+
+.slick-slider .slick-track,
+.slick-slider .slick-list
+{
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+}
+
+.slick-track
+{
+ position: relative;
+ top: 0;
+ left: 0;
+
+ display: block;
+}
+.slick-track:before,
+.slick-track:after
+{
+ display: table;
+
+ content: '';
+}
+.slick-track:after
+{
+ clear: both;
+}
+.slick-loading .slick-track
+{
+ visibility: hidden;
+}
+
+.slick-slide
+{
+ display: none;
+ float: left;
+
+ height: 100%;
+ min-height: 1px;
+}
+[dir='rtl'] .slick-slide
+{
+ float: right;
+}
+.slick-slide img
+{
+ display: block;
+}
+.slick-slide.slick-loading img
+{
+ display: none;
+}
+.slick-slide.dragging img
+{
+ pointer-events: none;
+}
+.slick-initialized .slick-slide
+{
+ display: block;
+}
+.slick-loading .slick-slide
+{
+ visibility: hidden;
+}
+.slick-vertical .slick-slide
+{
+ display: block;
+
+ height: auto;
+
+ border: 1px solid transparent;
+}
+.slick-arrow.slick-hidden {
+ display: none;
+}
--- /dev/null
+/*
+ _ _ _ _
+ ___| (_) ___| | __ (_)___
+/ __| | |/ __| |/ / | / __|
+\__ \ | | (__| < _ | \__ \
+|___/_|_|\___|_|\_(_)/ |___/
+ |__/
+
+ Version: 1.6.0
+ Author: Ken Wheeler
+ Website: http://kenwheeler.github.io
+ Docs: http://kenwheeler.github.io/slick
+ Repo: http://github.com/kenwheeler/slick
+ Issues: http://github.com/kenwheeler/slick/issues
+
+ */
+/* global window, document, define, jQuery, setInterval, clearInterval */
+(function(factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], factory);
+ } else if (typeof exports !== 'undefined') {
+ module.exports = factory(require('jquery'));
+ } else {
+ factory(jQuery);
+ }
+
+}(function($) {
+ 'use strict';
+ var Slick = window.Slick || {};
+
+ Slick = (function() {
+
+ var instanceUid = 0;
+
+ function Slick(element, settings) {
+
+ var _ = this, dataSettings;
+
+ _.defaults = {
+ accessibility: true,
+ adaptiveHeight: false,
+ appendArrows: $(element),
+ appendDots: $(element),
+ arrows: true,
+ asNavFor: null,
+ prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
+ nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
+ autoplay: false,
+ autoplaySpeed: 3000,
+ centerMode: false,
+ centerPadding: '50px',
+ cssEase: 'ease',
+ customPaging: function(slider, i) {
+ return $('<button type="button" data-role="none" role="button" tabindex="0" />').text(i + 1);
+ },
+ dots: false,
+ dotsClass: 'slick-dots',
+ draggable: true,
+ easing: 'linear',
+ edgeFriction: 0.35,
+ fade: false,
+ focusOnSelect: false,
+ infinite: true,
+ initialSlide: 0,
+ lazyLoad: 'ondemand',
+ mobileFirst: false,
+ pauseOnHover: true,
+ pauseOnFocus: true,
+ pauseOnDotsHover: false,
+ respondTo: 'window',
+ responsive: null,
+ rows: 1,
+ rtl: false,
+ slide: '',
+ slidesPerRow: 1,
+ slidesToShow: 1,
+ slidesToScroll: 1,
+ speed: 500,
+ swipe: true,
+ swipeToSlide: false,
+ touchMove: true,
+ touchThreshold: 5,
+ useCSS: true,
+ useTransform: true,
+ variableWidth: false,
+ vertical: false,
+ verticalSwiping: false,
+ waitForAnimate: true,
+ zIndex: 1000
+ };
+
+ _.initials = {
+ animating: false,
+ dragging: false,
+ autoPlayTimer: null,
+ currentDirection: 0,
+ currentLeft: null,
+ currentSlide: 0,
+ direction: 1,
+ $dots: null,
+ listWidth: null,
+ listHeight: null,
+ loadIndex: 0,
+ $nextArrow: null,
+ $prevArrow: null,
+ slideCount: null,
+ slideWidth: null,
+ $slideTrack: null,
+ $slides: null,
+ sliding: false,
+ slideOffset: 0,
+ swipeLeft: null,
+ $list: null,
+ touchObject: {},
+ transformsEnabled: false,
+ unslicked: false
+ };
+
+ $.extend(_, _.initials);
+
+ _.activeBreakpoint = null;
+ _.animType = null;
+ _.animProp = null;
+ _.breakpoints = [];
+ _.breakpointSettings = [];
+ _.cssTransitions = false;
+ _.focussed = false;
+ _.interrupted = false;
+ _.hidden = 'hidden';
+ _.paused = true;
+ _.positionProp = null;
+ _.respondTo = null;
+ _.rowCount = 1;
+ _.shouldClick = true;
+ _.$slider = $(element);
+ _.$slidesCache = null;
+ _.transformType = null;
+ _.transitionType = null;
+ _.visibilityChange = 'visibilitychange';
+ _.windowWidth = 0;
+ _.windowTimer = null;
+
+ dataSettings = $(element).data('slick') || {};
+
+ _.options = $.extend({}, _.defaults, settings, dataSettings);
+
+ _.currentSlide = _.options.initialSlide;
+
+ _.originalSettings = _.options;
+
+ if (typeof document.mozHidden !== 'undefined') {
+ _.hidden = 'mozHidden';
+ _.visibilityChange = 'mozvisibilitychange';
+ } else if (typeof document.webkitHidden !== 'undefined') {
+ _.hidden = 'webkitHidden';
+ _.visibilityChange = 'webkitvisibilitychange';
+ }
+
+ _.autoPlay = $.proxy(_.autoPlay, _);
+ _.autoPlayClear = $.proxy(_.autoPlayClear, _);
+ _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
+ _.changeSlide = $.proxy(_.changeSlide, _);
+ _.clickHandler = $.proxy(_.clickHandler, _);
+ _.selectHandler = $.proxy(_.selectHandler, _);
+ _.setPosition = $.proxy(_.setPosition, _);
+ _.swipeHandler = $.proxy(_.swipeHandler, _);
+ _.dragHandler = $.proxy(_.dragHandler, _);
+ _.keyHandler = $.proxy(_.keyHandler, _);
+
+ _.instanceUid = instanceUid++;
+
+ // A simple way to check for HTML strings
+ // Strict HTML recognition (must start with <)
+ // Extracted from jQuery v1.11 source
+ _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
+
+
+ _.registerBreakpoints();
+ _.init(true);
+
+ }
+
+ return Slick;
+
+ }());
+
+ Slick.prototype.activateADA = function() {
+ var _ = this;
+
+ _.$slideTrack.find('.slick-active').attr({
+ 'aria-hidden': 'false'
+ }).find('a, input, button, select').attr({
+ 'tabindex': '0'
+ });
+
+ };
+
+ Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
+
+ var _ = this;
+
+ if (typeof(index) === 'boolean') {
+ addBefore = index;
+ index = null;
+ } else if (index < 0 || (index >= _.slideCount)) {
+ return false;
+ }
+
+ _.unload();
+
+ if (typeof(index) === 'number') {
+ if (index === 0 && _.$slides.length === 0) {
+ $(markup).appendTo(_.$slideTrack);
+ } else if (addBefore) {
+ $(markup).insertBefore(_.$slides.eq(index));
+ } else {
+ $(markup).insertAfter(_.$slides.eq(index));
+ }
+ } else {
+ if (addBefore === true) {
+ $(markup).prependTo(_.$slideTrack);
+ } else {
+ $(markup).appendTo(_.$slideTrack);
+ }
+ }
+
+ _.$slides = _.$slideTrack.children(this.options.slide);
+
+ _.$slideTrack.children(this.options.slide).detach();
+
+ _.$slideTrack.append(_.$slides);
+
+ _.$slides.each(function(index, element) {
+ $(element).attr('data-slick-index', index);
+ });
+
+ _.$slidesCache = _.$slides;
+
+ _.reinit();
+
+ };
+
+ Slick.prototype.animateHeight = function() {
+ var _ = this;
+ if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
+ var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
+ _.$list.animate({
+ height: targetHeight
+ }, _.options.speed);
+ }
+ };
+
+ Slick.prototype.animateSlide = function(targetLeft, callback) {
+
+ var animProps = {},
+ _ = this;
+
+ _.animateHeight();
+
+ if (_.options.rtl === true && _.options.vertical === false) {
+ targetLeft = -targetLeft;
+ }
+ if (_.transformsEnabled === false) {
+ if (_.options.vertical === false) {
+ _.$slideTrack.animate({
+ left: targetLeft
+ }, _.options.speed, _.options.easing, callback);
+ } else {
+ _.$slideTrack.animate({
+ top: targetLeft
+ }, _.options.speed, _.options.easing, callback);
+ }
+
+ } else {
+
+ if (_.cssTransitions === false) {
+ if (_.options.rtl === true) {
+ _.currentLeft = -(_.currentLeft);
+ }
+ $({
+ animStart: _.currentLeft
+ }).animate({
+ animStart: targetLeft
+ }, {
+ duration: _.options.speed,
+ easing: _.options.easing,
+ step: function(now) {
+ now = Math.ceil(now);
+ if (_.options.vertical === false) {
+ animProps[_.animType] = 'translate(' +
+ now + 'px, 0px)';
+ _.$slideTrack.css(animProps);
+ } else {
+ animProps[_.animType] = 'translate(0px,' +
+ now + 'px)';
+ _.$slideTrack.css(animProps);
+ }
+ },
+ complete: function() {
+ if (callback) {
+ callback.call();
+ }
+ }
+ });
+
+ } else {
+
+ _.applyTransition();
+ targetLeft = Math.ceil(targetLeft);
+
+ if (_.options.vertical === false) {
+ animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
+ } else {
+ animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
+ }
+ _.$slideTrack.css(animProps);
+
+ if (callback) {
+ setTimeout(function() {
+
+ _.disableTransition();
+
+ callback.call();
+ }, _.options.speed);
+ }
+
+ }
+
+ }
+
+ };
+
+ Slick.prototype.getNavTarget = function() {
+
+ var _ = this,
+ asNavFor = _.options.asNavFor;
+
+ if ( asNavFor && asNavFor !== null ) {
+ asNavFor = $(asNavFor).not(_.$slider);
+ }
+
+ return asNavFor;
+
+ };
+
+ Slick.prototype.asNavFor = function(index) {
+
+ var _ = this,
+ asNavFor = _.getNavTarget();
+
+ if ( asNavFor !== null && typeof asNavFor === 'object' ) {
+ asNavFor.each(function() {
+ var target = $(this).slick('getSlick');
+ if(!target.unslicked) {
+ target.slideHandler(index, true);
+ }
+ });
+ }
+
+ };
+
+ Slick.prototype.applyTransition = function(slide) {
+
+ var _ = this,
+ transition = {};
+
+ if (_.options.fade === false) {
+ transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
+ } else {
+ transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
+ }
+
+ if (_.options.fade === false) {
+ _.$slideTrack.css(transition);
+ } else {
+ _.$slides.eq(slide).css(transition);
+ }
+
+ };
+
+ Slick.prototype.autoPlay = function() {
+
+ var _ = this;
+
+ _.autoPlayClear();
+
+ if ( _.slideCount > _.options.slidesToShow ) {
+ _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
+ }
+
+ };
+
+ Slick.prototype.autoPlayClear = function() {
+
+ var _ = this;
+
+ if (_.autoPlayTimer) {
+ clearInterval(_.autoPlayTimer);
+ }
+
+ };
+
+ Slick.prototype.autoPlayIterator = function() {
+
+ var _ = this,
+ slideTo = _.currentSlide + _.options.slidesToScroll;
+
+ if ( !_.paused && !_.interrupted && !_.focussed ) {
+
+ if ( _.options.infinite === false ) {
+
+ if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
+ _.direction = 0;
+ }
+
+ else if ( _.direction === 0 ) {
+
+ slideTo = _.currentSlide - _.options.slidesToScroll;
+
+ if ( _.currentSlide - 1 === 0 ) {
+ _.direction = 1;
+ }
+
+ }
+
+ }
+
+ _.slideHandler( slideTo );
+
+ }
+
+ };
+
+ Slick.prototype.buildArrows = function() {
+
+ var _ = this;
+
+ if (_.options.arrows === true ) {
+
+ _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
+ _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
+
+ if( _.slideCount > _.options.slidesToShow ) {
+
+ _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
+ _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
+
+ if (_.htmlExpr.test(_.options.prevArrow)) {
+ _.$prevArrow.prependTo(_.options.appendArrows);
+ }
+
+ if (_.htmlExpr.test(_.options.nextArrow)) {
+ _.$nextArrow.appendTo(_.options.appendArrows);
+ }
+
+ if (_.options.infinite !== true) {
+ _.$prevArrow
+ .addClass('slick-disabled')
+ .attr('aria-disabled', 'true');
+ }
+
+ } else {
+
+ _.$prevArrow.add( _.$nextArrow )
+
+ .addClass('slick-hidden')
+ .attr({
+ 'aria-disabled': 'true',
+ 'tabindex': '-1'
+ });
+
+ }
+
+ }
+
+ };
+
+ Slick.prototype.buildDots = function() {
+
+ var _ = this,
+ i, dot;
+
+ if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+
+ _.$slider.addClass('slick-dotted');
+
+ dot = $('<ul />').addClass(_.options.dotsClass);
+
+ for (i = 0; i <= _.getDotCount(); i += 1) {
+ dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
+ }
+
+ _.$dots = dot.appendTo(_.options.appendDots);
+
+ _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');
+
+ }
+
+ };
+
+ Slick.prototype.buildOut = function() {
+
+ var _ = this;
+
+ _.$slides =
+ _.$slider
+ .children( _.options.slide + ':not(.slick-cloned)')
+ .addClass('slick-slide');
+
+ _.slideCount = _.$slides.length;
+
+ _.$slides.each(function(index, element) {
+ $(element)
+ .attr('data-slick-index', index)
+ .data('originalStyling', $(element).attr('style') || '');
+ });
+
+ _.$slider.addClass('slick-slider');
+
+ _.$slideTrack = (_.slideCount === 0) ?
+ $('<div class="slick-track"/>').appendTo(_.$slider) :
+ _.$slides.wrapAll('<div class="slick-track"/>').parent();
+
+ _.$list = _.$slideTrack.wrap(
+ '<div aria-live="polite" class="slick-list"/>').parent();
+ _.$slideTrack.css('opacity', 0);
+
+ if (_.options.centerMode === true || _.options.swipeToSlide === true) {
+ _.options.slidesToScroll = 1;
+ }
+
+ $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
+
+ _.setupInfinite();
+
+ _.buildArrows();
+
+ _.buildDots();
+
+ _.updateDots();
+
+
+ _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
+
+ if (_.options.draggable === true) {
+ _.$list.addClass('draggable');
+ }
+
+ };
+
+ Slick.prototype.buildRows = function() {
+
+ var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
+
+ newSlides = document.createDocumentFragment();
+ originalSlides = _.$slider.children();
+
+ if(_.options.rows > 1) {
+
+ slidesPerSection = _.options.slidesPerRow * _.options.rows;
+ numOfSlides = Math.ceil(
+ originalSlides.length / slidesPerSection
+ );
+
+ for(a = 0; a < numOfSlides; a++){
+ var slide = document.createElement('div');
+ for(b = 0; b < _.options.rows; b++) {
+ var row = document.createElement('div');
+ for(c = 0; c < _.options.slidesPerRow; c++) {
+ var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
+ if (originalSlides.get(target)) {
+ row.appendChild(originalSlides.get(target));
+ }
+ }
+ slide.appendChild(row);
+ }
+ newSlides.appendChild(slide);
+ }
+
+ _.$slider.empty().append(newSlides);
+ _.$slider.children().children().children()
+ .css({
+ 'width':(100 / _.options.slidesPerRow) + '%',
+ 'display': 'inline-block'
+ });
+
+ }
+
+ };
+
+ Slick.prototype.checkResponsive = function(initial, forceUpdate) {
+
+ var _ = this,
+ breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
+ var sliderWidth = _.$slider.width();
+ var windowWidth = window.innerWidth || $(window).width();
+
+ if (_.respondTo === 'window') {
+ respondToWidth = windowWidth;
+ } else if (_.respondTo === 'slider') {
+ respondToWidth = sliderWidth;
+ } else if (_.respondTo === 'min') {
+ respondToWidth = Math.min(windowWidth, sliderWidth);
+ }
+
+ if ( _.options.responsive &&
+ _.options.responsive.length &&
+ _.options.responsive !== null) {
+
+ targetBreakpoint = null;
+
+ for (breakpoint in _.breakpoints) {
+ if (_.breakpoints.hasOwnProperty(breakpoint)) {
+ if (_.originalSettings.mobileFirst === false) {
+ if (respondToWidth < _.breakpoints[breakpoint]) {
+ targetBreakpoint = _.breakpoints[breakpoint];
+ }
+ } else {
+ if (respondToWidth > _.breakpoints[breakpoint]) {
+ targetBreakpoint = _.breakpoints[breakpoint];
+ }
+ }
+ }
+ }
+
+ if (targetBreakpoint !== null) {
+ if (_.activeBreakpoint !== null) {
+ if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
+ _.activeBreakpoint =
+ targetBreakpoint;
+ if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
+ _.unslick(targetBreakpoint);
+ } else {
+ _.options = $.extend({}, _.originalSettings,
+ _.breakpointSettings[
+ targetBreakpoint]);
+ if (initial === true) {
+ _.currentSlide = _.options.initialSlide;
+ }
+ _.refresh(initial);
+ }
+ triggerBreakpoint = targetBreakpoint;
+ }
+ } else {
+ _.activeBreakpoint = targetBreakpoint;
+ if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
+ _.unslick(targetBreakpoint);
+ } else {
+ _.options = $.extend({}, _.originalSettings,
+ _.breakpointSettings[
+ targetBreakpoint]);
+ if (initial === true) {
+ _.currentSlide = _.options.initialSlide;
+ }
+ _.refresh(initial);
+ }
+ triggerBreakpoint = targetBreakpoint;
+ }
+ } else {
+ if (_.activeBreakpoint !== null) {
+ _.activeBreakpoint = null;
+ _.options = _.originalSettings;
+ if (initial === true) {
+ _.currentSlide = _.options.initialSlide;
+ }
+ _.refresh(initial);
+ triggerBreakpoint = targetBreakpoint;
+ }
+ }
+
+ // only trigger breakpoints during an actual break. not on initialize.
+ if( !initial && triggerBreakpoint !== false ) {
+ _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
+ }
+ }
+
+ };
+
+ Slick.prototype.changeSlide = function(event, dontAnimate) {
+
+ var _ = this,
+ $target = $(event.currentTarget),
+ indexOffset, slideOffset, unevenOffset;
+
+ // If target is a link, prevent default action.
+ if($target.is('a')) {
+ event.preventDefault();
+ }
+
+ // If target is not the <li> element (ie: a child), find the <li>.
+ if(!$target.is('li')) {
+ $target = $target.closest('li');
+ }
+
+ unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
+ indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
+
+ switch (event.data.message) {
+
+ case 'previous':
+ slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
+ if (_.slideCount > _.options.slidesToShow) {
+ _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
+ }
+ break;
+
+ case 'next':
+ slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
+ if (_.slideCount > _.options.slidesToShow) {
+ _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
+ }
+ break;
+
+ case 'index':
+ var index = event.data.index === 0 ? 0 :
+ event.data.index || $target.index() * _.options.slidesToScroll;
+
+ _.slideHandler(_.checkNavigable(index), false, dontAnimate);
+ $target.children().trigger('focus');
+ break;
+
+ default:
+ return;
+ }
+
+ };
+
+ Slick.prototype.checkNavigable = function(index) {
+
+ var _ = this,
+ navigables, prevNavigable;
+
+ navigables = _.getNavigableIndexes();
+ prevNavigable = 0;
+ if (index > navigables[navigables.length - 1]) {
+ index = navigables[navigables.length - 1];
+ } else {
+ for (var n in navigables) {
+ if (index < navigables[n]) {
+ index = prevNavigable;
+ break;
+ }
+ prevNavigable = navigables[n];
+ }
+ }
+
+ return index;
+ };
+
+ Slick.prototype.cleanUpEvents = function() {
+
+ var _ = this;
+
+ if (_.options.dots && _.$dots !== null) {
+
+ $('li', _.$dots)
+ .off('click.slick', _.changeSlide)
+ .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
+ .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+ }
+
+ _.$slider.off('focus.slick blur.slick');
+
+ if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+ _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
+ _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
+ }
+
+ _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
+ _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
+ _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
+ _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
+
+ _.$list.off('click.slick', _.clickHandler);
+
+ $(document).off(_.visibilityChange, _.visibility);
+
+ _.cleanUpSlideEvents();
+
+ if (_.options.accessibility === true) {
+ _.$list.off('keydown.slick', _.keyHandler);
+ }
+
+ if (_.options.focusOnSelect === true) {
+ $(_.$slideTrack).children().off('click.slick', _.selectHandler);
+ }
+
+ $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
+
+ $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
+
+ $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
+
+ $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
+ $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);
+
+ };
+
+ Slick.prototype.cleanUpSlideEvents = function() {
+
+ var _ = this;
+
+ _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
+ _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+ };
+
+ Slick.prototype.cleanUpRows = function() {
+
+ var _ = this, originalSlides;
+
+ if(_.options.rows > 1) {
+ originalSlides = _.$slides.children().children();
+ originalSlides.removeAttr('style');
+ _.$slider.empty().append(originalSlides);
+ }
+
+ };
+
+ Slick.prototype.clickHandler = function(event) {
+
+ var _ = this;
+
+ if (_.shouldClick === false) {
+ event.stopImmediatePropagation();
+ event.stopPropagation();
+ event.preventDefault();
+ }
+
+ };
+
+ Slick.prototype.destroy = function(refresh) {
+
+ var _ = this;
+
+ _.autoPlayClear();
+
+ _.touchObject = {};
+
+ _.cleanUpEvents();
+
+ $('.slick-cloned', _.$slider).detach();
+
+ if (_.$dots) {
+ _.$dots.remove();
+ }
+
+
+ if ( _.$prevArrow && _.$prevArrow.length ) {
+
+ _.$prevArrow
+ .removeClass('slick-disabled slick-arrow slick-hidden')
+ .removeAttr('aria-hidden aria-disabled tabindex')
+ .css('display','');
+
+ if ( _.htmlExpr.test( _.options.prevArrow )) {
+ _.$prevArrow.remove();
+ }
+ }
+
+ if ( _.$nextArrow && _.$nextArrow.length ) {
+
+ _.$nextArrow
+ .removeClass('slick-disabled slick-arrow slick-hidden')
+ .removeAttr('aria-hidden aria-disabled tabindex')
+ .css('display','');
+
+ if ( _.htmlExpr.test( _.options.nextArrow )) {
+ _.$nextArrow.remove();
+ }
+
+ }
+
+
+ if (_.$slides) {
+
+ _.$slides
+ .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
+ .removeAttr('aria-hidden')
+ .removeAttr('data-slick-index')
+ .each(function(){
+ $(this).attr('style', $(this).data('originalStyling'));
+ });
+
+ _.$slideTrack.children(this.options.slide).detach();
+
+ _.$slideTrack.detach();
+
+ _.$list.detach();
+
+ _.$slider.append(_.$slides);
+ }
+
+ _.cleanUpRows();
+
+ _.$slider.removeClass('slick-slider');
+ _.$slider.removeClass('slick-initialized');
+ _.$slider.removeClass('slick-dotted');
+
+ _.unslicked = true;
+
+ if(!refresh) {
+ _.$slider.trigger('destroy', [_]);
+ }
+
+ };
+
+ Slick.prototype.disableTransition = function(slide) {
+
+ var _ = this,
+ transition = {};
+
+ transition[_.transitionType] = '';
+
+ if (_.options.fade === false) {
+ _.$slideTrack.css(transition);
+ } else {
+ _.$slides.eq(slide).css(transition);
+ }
+
+ };
+
+ Slick.prototype.fadeSlide = function(slideIndex, callback) {
+
+ var _ = this;
+
+ if (_.cssTransitions === false) {
+
+ _.$slides.eq(slideIndex).css({
+ zIndex: _.options.zIndex
+ });
+
+ _.$slides.eq(slideIndex).animate({
+ opacity: 1
+ }, _.options.speed, _.options.easing, callback);
+
+ } else {
+
+ _.applyTransition(slideIndex);
+
+ _.$slides.eq(slideIndex).css({
+ opacity: 1,
+ zIndex: _.options.zIndex
+ });
+
+ if (callback) {
+ setTimeout(function() {
+
+ _.disableTransition(slideIndex);
+
+ callback.call();
+ }, _.options.speed);
+ }
+
+ }
+
+ };
+
+ Slick.prototype.fadeSlideOut = function(slideIndex) {
+
+ var _ = this;
+
+ if (_.cssTransitions === false) {
+
+ _.$slides.eq(slideIndex).animate({
+ opacity: 0,
+ zIndex: _.options.zIndex - 2
+ }, _.options.speed, _.options.easing);
+
+ } else {
+
+ _.applyTransition(slideIndex);
+
+ _.$slides.eq(slideIndex).css({
+ opacity: 0,
+ zIndex: _.options.zIndex - 2
+ });
+
+ }
+
+ };
+
+ Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
+
+ var _ = this;
+
+ if (filter !== null) {
+
+ _.$slidesCache = _.$slides;
+
+ _.unload();
+
+ _.$slideTrack.children(this.options.slide).detach();
+
+ _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
+
+ _.reinit();
+
+ }
+
+ };
+
+ Slick.prototype.focusHandler = function() {
+
+ var _ = this;
+
+ _.$slider
+ .off('focus.slick blur.slick')
+ .on('focus.slick blur.slick',
+ '*:not(.slick-arrow)', function(event) {
+
+ event.stopImmediatePropagation();
+ var $sf = $(this);
+
+ setTimeout(function() {
+
+ if( _.options.pauseOnFocus ) {
+ _.focussed = $sf.is(':focus');
+ _.autoPlay();
+ }
+
+ }, 0);
+
+ });
+ };
+
+ Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
+
+ var _ = this;
+ return _.currentSlide;
+
+ };
+
+ Slick.prototype.getDotCount = function() {
+
+ var _ = this;
+
+ var breakPoint = 0;
+ var counter = 0;
+ var pagerQty = 0;
+
+ if (_.options.infinite === true) {
+ while (breakPoint < _.slideCount) {
+ ++pagerQty;
+ breakPoint = counter + _.options.slidesToScroll;
+ counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
+ }
+ } else if (_.options.centerMode === true) {
+ pagerQty = _.slideCount;
+ } else if(!_.options.asNavFor) {
+ pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
+ }else {
+ while (breakPoint < _.slideCount) {
+ ++pagerQty;
+ breakPoint = counter + _.options.slidesToScroll;
+ counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
+ }
+ }
+
+ return pagerQty - 1;
+
+ };
+
+ Slick.prototype.getLeft = function(slideIndex) {
+
+ var _ = this,
+ targetLeft,
+ verticalHeight,
+ verticalOffset = 0,
+ targetSlide;
+
+ _.slideOffset = 0;
+ verticalHeight = _.$slides.first().outerHeight(true);
+
+ if (_.options.infinite === true) {
+ if (_.slideCount > _.options.slidesToShow) {
+ _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
+ verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;
+ }
+ if (_.slideCount % _.options.slidesToScroll !== 0) {
+ if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
+ if (slideIndex > _.slideCount) {
+ _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
+ verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
+ } else {
+ _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
+ verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
+ }
+ }
+ }
+ } else {
+ if (slideIndex + _.options.slidesToShow > _.slideCount) {
+ _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
+ verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
+ }
+ }
+
+ if (_.slideCount <= _.options.slidesToShow) {
+ _.slideOffset = 0;
+ verticalOffset = 0;
+ }
+
+ if (_.options.centerMode === true && _.options.infinite === true) {
+ _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
+ } else if (_.options.centerMode === true) {
+ _.slideOffset = 0;
+ _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
+ }
+
+ if (_.options.vertical === false) {
+ targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
+ } else {
+ targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
+ }
+
+ if (_.options.variableWidth === true) {
+
+ if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
+ targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
+ } else {
+ targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
+ }
+
+ if (_.options.rtl === true) {
+ if (targetSlide[0]) {
+ targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
+ } else {
+ targetLeft = 0;
+ }
+ } else {
+ targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
+ }
+
+ if (_.options.centerMode === true) {
+ if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
+ targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
+ } else {
+ targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
+ }
+
+ if (_.options.rtl === true) {
+ if (targetSlide[0]) {
+ targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
+ } else {
+ targetLeft = 0;
+ }
+ } else {
+ targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
+ }
+
+ targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
+ }
+ }
+
+ return targetLeft;
+
+ };
+
+ Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
+
+ var _ = this;
+
+ return _.options[option];
+
+ };
+
+ Slick.prototype.getNavigableIndexes = function() {
+
+ var _ = this,
+ breakPoint = 0,
+ counter = 0,
+ indexes = [],
+ max;
+
+ if (_.options.infinite === false) {
+ max = _.slideCount;
+ } else {
+ breakPoint = _.options.slidesToScroll * -1;
+ counter = _.options.slidesToScroll * -1;
+ max = _.slideCount * 2;
+ }
+
+ while (breakPoint < max) {
+ indexes.push(breakPoint);
+ breakPoint = counter + _.options.slidesToScroll;
+ counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
+ }
+
+ return indexes;
+
+ };
+
+ Slick.prototype.getSlick = function() {
+
+ return this;
+
+ };
+
+ Slick.prototype.getSlideCount = function() {
+
+ var _ = this,
+ slidesTraversed, swipedSlide, centerOffset;
+
+ centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;
+
+ if (_.options.swipeToSlide === true) {
+ _.$slideTrack.find('.slick-slide').each(function(index, slide) {
+ if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
+ swipedSlide = slide;
+ return false;
+ }
+ });
+
+ slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
+
+ return slidesTraversed;
+
+ } else {
+ return _.options.slidesToScroll;
+ }
+
+ };
+
+ Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
+
+ var _ = this;
+
+ _.changeSlide({
+ data: {
+ message: 'index',
+ index: parseInt(slide)
+ }
+ }, dontAnimate);
+
+ };
+
+ Slick.prototype.init = function(creation) {
+
+ var _ = this;
+
+ if (!$(_.$slider).hasClass('slick-initialized')) {
+
+ $(_.$slider).addClass('slick-initialized');
+
+ _.buildRows();
+ _.buildOut();
+ _.setProps();
+ _.startLoad();
+ _.loadSlider();
+ _.initializeEvents();
+ _.updateArrows();
+ _.updateDots();
+ _.checkResponsive(true);
+ _.focusHandler();
+
+ }
+
+ if (creation) {
+ _.$slider.trigger('init', [_]);
+ }
+
+ if (_.options.accessibility === true) {
+ _.initADA();
+ }
+
+ if ( _.options.autoplay ) {
+
+ _.paused = false;
+ _.autoPlay();
+
+ }
+
+ };
+
+ Slick.prototype.initADA = function() {
+ var _ = this;
+ _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
+ 'aria-hidden': 'true',
+ 'tabindex': '-1'
+ }).find('a, input, button, select').attr({
+ 'tabindex': '-1'
+ });
+
+ _.$slideTrack.attr('role', 'listbox');
+
+ _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
+ $(this).attr({
+ 'role': 'option',
+ 'aria-describedby': 'slick-slide' + _.instanceUid + i + ''
+ });
+ });
+
+ if (_.$dots !== null) {
+ _.$dots.attr('role', 'tablist').find('li').each(function(i) {
+ $(this).attr({
+ 'role': 'presentation',
+ 'aria-selected': 'false',
+ 'aria-controls': 'navigation' + _.instanceUid + i + '',
+ 'id': 'slick-slide' + _.instanceUid + i + ''
+ });
+ })
+ .first().attr('aria-selected', 'true').end()
+ .find('button').attr('role', 'button').end()
+ .closest('div').attr('role', 'toolbar');
+ }
+ _.activateADA();
+
+ };
+
+ Slick.prototype.initArrowEvents = function() {
+
+ var _ = this;
+
+ if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+ _.$prevArrow
+ .off('click.slick')
+ .on('click.slick', {
+ message: 'previous'
+ }, _.changeSlide);
+ _.$nextArrow
+ .off('click.slick')
+ .on('click.slick', {
+ message: 'next'
+ }, _.changeSlide);
+ }
+
+ };
+
+ Slick.prototype.initDotEvents = function() {
+
+ var _ = this;
+
+ if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+ $('li', _.$dots).on('click.slick', {
+ message: 'index'
+ }, _.changeSlide);
+ }
+
+ if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {
+
+ $('li', _.$dots)
+ .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
+ .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+ }
+
+ };
+
+ Slick.prototype.initSlideEvents = function() {
+
+ var _ = this;
+
+ if ( _.options.pauseOnHover ) {
+
+ _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
+ _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
+
+ }
+
+ };
+
+ Slick.prototype.initializeEvents = function() {
+
+ var _ = this;
+
+ _.initArrowEvents();
+
+ _.initDotEvents();
+ _.initSlideEvents();
+
+ _.$list.on('touchstart.slick mousedown.slick', {
+ action: 'start'
+ }, _.swipeHandler);
+ _.$list.on('touchmove.slick mousemove.slick', {
+ action: 'move'
+ }, _.swipeHandler);
+ _.$list.on('touchend.slick mouseup.slick', {
+ action: 'end'
+ }, _.swipeHandler);
+ _.$list.on('touchcancel.slick mouseleave.slick', {
+ action: 'end'
+ }, _.swipeHandler);
+
+ _.$list.on('click.slick', _.clickHandler);
+
+ $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
+
+ if (_.options.accessibility === true) {
+ _.$list.on('keydown.slick', _.keyHandler);
+ }
+
+ if (_.options.focusOnSelect === true) {
+ $(_.$slideTrack).children().on('click.slick', _.selectHandler);
+ }
+
+ $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
+
+ $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
+
+ $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
+
+ $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
+ $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);
+
+ };
+
+ Slick.prototype.initUI = function() {
+
+ var _ = this;
+
+ if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+
+ _.$prevArrow.show();
+ _.$nextArrow.show();
+
+ }
+
+ if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+
+ _.$dots.show();
+
+ }
+
+ };
+
+ Slick.prototype.keyHandler = function(event) {
+
+ var _ = this;
+ //Dont slide if the cursor is inside the form fields and arrow keys are pressed
+ if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
+ if (event.keyCode === 37 && _.options.accessibility === true) {
+ _.changeSlide({
+ data: {
+ message: _.options.rtl === true ? 'next' : 'previous'
+ }
+ });
+ } else if (event.keyCode === 39 && _.options.accessibility === true) {
+ _.changeSlide({
+ data: {
+ message: _.options.rtl === true ? 'previous' : 'next'
+ }
+ });
+ }
+ }
+
+ };
+
+ Slick.prototype.lazyLoad = function() {
+
+ var _ = this,
+ loadRange, cloneRange, rangeStart, rangeEnd;
+
+ function loadImages(imagesScope) {
+
+ $('img[data-lazy]', imagesScope).each(function() {
+
+ var image = $(this),
+ imageSource = $(this).attr('data-lazy'),
+ imageToLoad = document.createElement('img');
+
+ imageToLoad.onload = function() {
+
+ image
+ .animate({ opacity: 0 }, 100, function() {
+ image
+ .attr('src', imageSource)
+ .animate({ opacity: 1 }, 200, function() {
+ image
+ .removeAttr('data-lazy')
+ .removeClass('slick-loading');
+ });
+ _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
+ });
+
+ };
+
+ imageToLoad.onerror = function() {
+
+ image
+ .removeAttr( 'data-lazy' )
+ .removeClass( 'slick-loading' )
+ .addClass( 'slick-lazyload-error' );
+
+ _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
+
+ };
+
+ imageToLoad.src = imageSource;
+
+ });
+
+ }
+
+ if (_.options.centerMode === true) {
+ if (_.options.infinite === true) {
+ rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
+ rangeEnd = rangeStart + _.options.slidesToShow + 2;
+ } else {
+ rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
+ rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
+ }
+ } else {
+ rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
+ rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
+ if (_.options.fade === true) {
+ if (rangeStart > 0) rangeStart--;
+ if (rangeEnd <= _.slideCount) rangeEnd++;
+ }
+ }
+
+ loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
+ loadImages(loadRange);
+
+ if (_.slideCount <= _.options.slidesToShow) {
+ cloneRange = _.$slider.find('.slick-slide');
+ loadImages(cloneRange);
+ } else
+ if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
+ cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
+ loadImages(cloneRange);
+ } else if (_.currentSlide === 0) {
+ cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
+ loadImages(cloneRange);
+ }
+
+ };
+
+ Slick.prototype.loadSlider = function() {
+
+ var _ = this;
+
+ _.setPosition();
+
+ _.$slideTrack.css({
+ opacity: 1
+ });
+
+ _.$slider.removeClass('slick-loading');
+
+ _.initUI();
+
+ if (_.options.lazyLoad === 'progressive') {
+ _.progressiveLazyLoad();
+ }
+
+ };
+
+ Slick.prototype.next = Slick.prototype.slickNext = function() {
+
+ var _ = this;
+
+ _.changeSlide({
+ data: {
+ message: 'next'
+ }
+ });
+
+ };
+
+ Slick.prototype.orientationChange = function() {
+
+ var _ = this;
+
+ _.checkResponsive();
+ _.setPosition();
+
+ };
+
+ Slick.prototype.pause = Slick.prototype.slickPause = function() {
+
+ var _ = this;
+
+ _.autoPlayClear();
+ _.paused = true;
+
+ };
+
+ Slick.prototype.play = Slick.prototype.slickPlay = function() {
+
+ var _ = this;
+
+ _.autoPlay();
+ _.options.autoplay = true;
+ _.paused = false;
+ _.focussed = false;
+ _.interrupted = false;
+
+ };
+
+ Slick.prototype.postSlide = function(index) {
+
+ var _ = this;
+
+ if( !_.unslicked ) {
+
+ _.$slider.trigger('afterChange', [_, index]);
+
+ _.animating = false;
+
+ _.setPosition();
+
+ _.swipeLeft = null;
+
+ if ( _.options.autoplay ) {
+ _.autoPlay();
+ }
+
+ if (_.options.accessibility === true) {
+ _.initADA();
+ }
+
+ }
+
+ };
+
+ Slick.prototype.prev = Slick.prototype.slickPrev = function() {
+
+ var _ = this;
+
+ _.changeSlide({
+ data: {
+ message: 'previous'
+ }
+ });
+
+ };
+
+ Slick.prototype.preventDefault = function(event) {
+
+ event.preventDefault();
+
+ };
+
+ Slick.prototype.progressiveLazyLoad = function( tryCount ) {
+
+ tryCount = tryCount || 1;
+
+ var _ = this,
+ $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
+ image,
+ imageSource,
+ imageToLoad;
+
+ if ( $imgsToLoad.length ) {
+
+ image = $imgsToLoad.first();
+ imageSource = image.attr('data-lazy');
+ imageToLoad = document.createElement('img');
+
+ imageToLoad.onload = function() {
+
+ image
+ .attr( 'src', imageSource )
+ .removeAttr('data-lazy')
+ .removeClass('slick-loading');
+
+ if ( _.options.adaptiveHeight === true ) {
+ _.setPosition();
+ }
+
+ _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
+ _.progressiveLazyLoad();
+
+ };
+
+ imageToLoad.onerror = function() {
+
+ if ( tryCount < 3 ) {
+
+ /**
+ * try to load the image 3 times,
+ * leave a slight delay so we don't get
+ * servers blocking the request.
+ */
+ setTimeout( function() {
+ _.progressiveLazyLoad( tryCount + 1 );
+ }, 500 );
+
+ } else {
+
+ image
+ .removeAttr( 'data-lazy' )
+ .removeClass( 'slick-loading' )
+ .addClass( 'slick-lazyload-error' );
+
+ _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
+
+ _.progressiveLazyLoad();
+
+ }
+
+ };
+
+ imageToLoad.src = imageSource;
+
+ } else {
+
+ _.$slider.trigger('allImagesLoaded', [ _ ]);
+
+ }
+
+ };
+
+ Slick.prototype.refresh = function( initializing ) {
+
+ var _ = this, currentSlide, lastVisibleIndex;
+
+ lastVisibleIndex = _.slideCount - _.options.slidesToShow;
+
+ // in non-infinite sliders, we don't want to go past the
+ // last visible index.
+ if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
+ _.currentSlide = lastVisibleIndex;
+ }
+
+ // if less slides than to show, go to start.
+ if ( _.slideCount <= _.options.slidesToShow ) {
+ _.currentSlide = 0;
+
+ }
+
+ currentSlide = _.currentSlide;
+
+ _.destroy(true);
+
+ $.extend(_, _.initials, { currentSlide: currentSlide });
+
+ _.init();
+
+ if( !initializing ) {
+
+ _.changeSlide({
+ data: {
+ message: 'index',
+ index: currentSlide
+ }
+ }, false);
+
+ }
+
+ };
+
+ Slick.prototype.registerBreakpoints = function() {
+
+ var _ = this, breakpoint, currentBreakpoint, l,
+ responsiveSettings = _.options.responsive || null;
+
+ if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
+
+ _.respondTo = _.options.respondTo || 'window';
+
+ for ( breakpoint in responsiveSettings ) {
+
+ l = _.breakpoints.length-1;
+ currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
+
+ if (responsiveSettings.hasOwnProperty(breakpoint)) {
+
+ // loop through the breakpoints and cut out any existing
+ // ones with the same breakpoint number, we don't want dupes.
+ while( l >= 0 ) {
+ if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
+ _.breakpoints.splice(l,1);
+ }
+ l--;
+ }
+
+ _.breakpoints.push(currentBreakpoint);
+ _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
+
+ }
+
+ }
+
+ _.breakpoints.sort(function(a, b) {
+ return ( _.options.mobileFirst ) ? a-b : b-a;
+ });
+
+ }
+
+ };
+
+ Slick.prototype.reinit = function() {
+
+ var _ = this;
+
+ _.$slides =
+ _.$slideTrack
+ .children(_.options.slide)
+ .addClass('slick-slide');
+
+ _.slideCount = _.$slides.length;
+
+ if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
+ _.currentSlide = _.currentSlide - _.options.slidesToScroll;
+ }
+
+ if (_.slideCount <= _.options.slidesToShow) {
+ _.currentSlide = 0;
+ }
+
+ _.registerBreakpoints();
+
+ _.setProps();
+ _.setupInfinite();
+ _.buildArrows();
+ _.updateArrows();
+ _.initArrowEvents();
+ _.buildDots();
+ _.updateDots();
+ _.initDotEvents();
+ _.cleanUpSlideEvents();
+ _.initSlideEvents();
+
+ _.checkResponsive(false, true);
+
+ if (_.options.focusOnSelect === true) {
+ $(_.$slideTrack).children().on('click.slick', _.selectHandler);
+ }
+
+ _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
+
+ _.setPosition();
+ _.focusHandler();
+
+ _.paused = !_.options.autoplay;
+ _.autoPlay();
+
+ _.$slider.trigger('reInit', [_]);
+
+ };
+
+ Slick.prototype.resize = function() {
+
+ var _ = this;
+
+ if ($(window).width() !== _.windowWidth) {
+ clearTimeout(_.windowDelay);
+ _.windowDelay = window.setTimeout(function() {
+ _.windowWidth = $(window).width();
+ _.checkResponsive();
+ if( !_.unslicked ) { _.setPosition(); }
+ }, 50);
+ }
+ };
+
+ Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
+
+ var _ = this;
+
+ if (typeof(index) === 'boolean') {
+ removeBefore = index;
+ index = removeBefore === true ? 0 : _.slideCount - 1;
+ } else {
+ index = removeBefore === true ? --index : index;
+ }
+
+ if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
+ return false;
+ }
+
+ _.unload();
+
+ if (removeAll === true) {
+ _.$slideTrack.children().remove();
+ } else {
+ _.$slideTrack.children(this.options.slide).eq(index).remove();
+ }
+
+ _.$slides = _.$slideTrack.children(this.options.slide);
+
+ _.$slideTrack.children(this.options.slide).detach();
+
+ _.$slideTrack.append(_.$slides);
+
+ _.$slidesCache = _.$slides;
+
+ _.reinit();
+
+ };
+
+ Slick.prototype.setCSS = function(position) {
+
+ var _ = this,
+ positionProps = {},
+ x, y;
+
+ if (_.options.rtl === true) {
+ position = -position;
+ }
+ x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
+ y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
+
+ positionProps[_.positionProp] = position;
+
+ if (_.transformsEnabled === false) {
+ _.$slideTrack.css(positionProps);
+ } else {
+ positionProps = {};
+ if (_.cssTransitions === false) {
+ positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
+ _.$slideTrack.css(positionProps);
+ } else {
+ positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
+ _.$slideTrack.css(positionProps);
+ }
+ }
+
+ };
+
+ Slick.prototype.setDimensions = function() {
+
+ var _ = this;
+
+ if (_.options.vertical === false) {
+ if (_.options.centerMode === true) {
+ _.$list.css({
+ padding: ('0px ' + _.options.centerPadding)
+ });
+ }
+ } else {
+ _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
+ if (_.options.centerMode === true) {
+ _.$list.css({
+ padding: (_.options.centerPadding + ' 0px')
+ });
+ }
+ }
+
+ _.listWidth = _.$list.width();
+ _.listHeight = _.$list.height();
+
+
+ if (_.options.vertical === false && _.options.variableWidth === false) {
+ _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
+ _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
+
+ } else if (_.options.variableWidth === true) {
+ _.$slideTrack.width(5000 * _.slideCount);
+ } else {
+ _.slideWidth = Math.ceil(_.listWidth);
+ _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
+ }
+
+ var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
+ if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
+
+ };
+
+ Slick.prototype.setFade = function() {
+
+ var _ = this,
+ targetLeft;
+
+ _.$slides.each(function(index, element) {
+ targetLeft = (_.slideWidth * index) * -1;
+ if (_.options.rtl === true) {
+ $(element).css({
+ position: 'relative',
+ right: targetLeft,
+ top: 0,
+ zIndex: _.options.zIndex - 2,
+ opacity: 0
+ });
+ } else {
+ $(element).css({
+ position: 'relative',
+ left: targetLeft,
+ top: 0,
+ zIndex: _.options.zIndex - 2,
+ opacity: 0
+ });
+ }
+ });
+
+ _.$slides.eq(_.currentSlide).css({
+ zIndex: _.options.zIndex - 1,
+ opacity: 1
+ });
+
+ };
+
+ Slick.prototype.setHeight = function() {
+
+ var _ = this;
+
+ if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
+ var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
+ _.$list.css('height', targetHeight);
+ }
+
+ };
+
+ Slick.prototype.setOption =
+ Slick.prototype.slickSetOption = function() {
+
+ /**
+ * accepts arguments in format of:
+ *
+ * - for changing a single option's value:
+ * .slick("setOption", option, value, refresh )
+ *
+ * - for changing a set of responsive options:
+ * .slick("setOption", 'responsive', [{}, ...], refresh )
+ *
+ * - for updating multiple values at once (not responsive)
+ * .slick("setOption", { 'option': value, ... }, refresh )
+ */
+
+ var _ = this, l, item, option, value, refresh = false, type;
+
+ if( $.type( arguments[0] ) === 'object' ) {
+
+ option = arguments[0];
+ refresh = arguments[1];
+ type = 'multiple';
+
+ } else if ( $.type( arguments[0] ) === 'string' ) {
+
+ option = arguments[0];
+ value = arguments[1];
+ refresh = arguments[2];
+
+ if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
+
+ type = 'responsive';
+
+ } else if ( typeof arguments[1] !== 'undefined' ) {
+
+ type = 'single';
+
+ }
+
+ }
+
+ if ( type === 'single' ) {
+
+ _.options[option] = value;
+
+
+ } else if ( type === 'multiple' ) {
+
+ $.each( option , function( opt, val ) {
+
+ _.options[opt] = val;
+
+ });
+
+
+ } else if ( type === 'responsive' ) {
+
+ for ( item in value ) {
+
+ if( $.type( _.options.responsive ) !== 'array' ) {
+
+ _.options.responsive = [ value[item] ];
+
+ } else {
+
+ l = _.options.responsive.length-1;
+
+ // loop through the responsive object and splice out duplicates.
+ while( l >= 0 ) {
+
+ if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
+
+ _.options.responsive.splice(l,1);
+
+ }
+
+ l--;
+
+ }
+
+ _.options.responsive.push( value[item] );
+
+ }
+
+ }
+
+ }
+
+ if ( refresh ) {
+
+ _.unload();
+ _.reinit();
+
+ }
+
+ };
+
+ Slick.prototype.setPosition = function() {
+
+ var _ = this;
+
+ _.setDimensions();
+
+ _.setHeight();
+
+ if (_.options.fade === false) {
+ _.setCSS(_.getLeft(_.currentSlide));
+ } else {
+ _.setFade();
+ }
+
+ _.$slider.trigger('setPosition', [_]);
+
+ };
+
+ Slick.prototype.setProps = function() {
+
+ var _ = this,
+ bodyStyle = document.body.style;
+
+ _.positionProp = _.options.vertical === true ? 'top' : 'left';
+
+ if (_.positionProp === 'top') {
+ _.$slider.addClass('slick-vertical');
+ } else {
+ _.$slider.removeClass('slick-vertical');
+ }
+
+ if (bodyStyle.WebkitTransition !== undefined ||
+ bodyStyle.MozTransition !== undefined ||
+ bodyStyle.msTransition !== undefined) {
+ if (_.options.useCSS === true) {
+ _.cssTransitions = true;
+ }
+ }
+
+ if ( _.options.fade ) {
+ if ( typeof _.options.zIndex === 'number' ) {
+ if( _.options.zIndex < 3 ) {
+ _.options.zIndex = 3;
+ }
+ } else {
+ _.options.zIndex = _.defaults.zIndex;
+ }
+ }
+
+ if (bodyStyle.OTransform !== undefined) {
+ _.animType = 'OTransform';
+ _.transformType = '-o-transform';
+ _.transitionType = 'OTransition';
+ if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
+ }
+ if (bodyStyle.MozTransform !== undefined) {
+ _.animType = 'MozTransform';
+ _.transformType = '-moz-transform';
+ _.transitionType = 'MozTransition';
+ if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
+ }
+ if (bodyStyle.webkitTransform !== undefined) {
+ _.animType = 'webkitTransform';
+ _.transformType = '-webkit-transform';
+ _.transitionType = 'webkitTransition';
+ if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
+ }
+ if (bodyStyle.msTransform !== undefined) {
+ _.animType = 'msTransform';
+ _.transformType = '-ms-transform';
+ _.transitionType = 'msTransition';
+ if (bodyStyle.msTransform === undefined) _.animType = false;
+ }
+ if (bodyStyle.transform !== undefined && _.animType !== false) {
+ _.animType = 'transform';
+ _.transformType = 'transform';
+ _.transitionType = 'transition';
+ }
+ _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
+ };
+
+
+ Slick.prototype.setSlideClasses = function(index) {
+
+ var _ = this,
+ centerOffset, allSlides, indexOffset, remainder;
+
+ allSlides = _.$slider
+ .find('.slick-slide')
+ .removeClass('slick-active slick-center slick-current')
+ .attr('aria-hidden', 'true');
+
+ _.$slides
+ .eq(index)
+ .addClass('slick-current');
+
+ if (_.options.centerMode === true) {
+
+ centerOffset = Math.floor(_.options.slidesToShow / 2);
+
+ if (_.options.infinite === true) {
+
+ if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
+
+ _.$slides
+ .slice(index - centerOffset, index + centerOffset + 1)
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ } else {
+
+ indexOffset = _.options.slidesToShow + index;
+ allSlides
+ .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ }
+
+ if (index === 0) {
+
+ allSlides
+ .eq(allSlides.length - 1 - _.options.slidesToShow)
+ .addClass('slick-center');
+
+ } else if (index === _.slideCount - 1) {
+
+ allSlides
+ .eq(_.options.slidesToShow)
+ .addClass('slick-center');
+
+ }
+
+ }
+
+ _.$slides
+ .eq(index)
+ .addClass('slick-center');
+
+ } else {
+
+ if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
+
+ _.$slides
+ .slice(index, index + _.options.slidesToShow)
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ } else if (allSlides.length <= _.options.slidesToShow) {
+
+ allSlides
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ } else {
+
+ remainder = _.slideCount % _.options.slidesToShow;
+ indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
+
+ if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
+
+ allSlides
+ .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ } else {
+
+ allSlides
+ .slice(indexOffset, indexOffset + _.options.slidesToShow)
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ }
+
+ }
+
+ }
+
+ if (_.options.lazyLoad === 'ondemand') {
+ _.lazyLoad();
+ }
+
+ };
+
+ Slick.prototype.setupInfinite = function() {
+
+ var _ = this,
+ i, slideIndex, infiniteCount;
+
+ if (_.options.fade === true) {
+ _.options.centerMode = false;
+ }
+
+ if (_.options.infinite === true && _.options.fade === false) {
+
+ slideIndex = null;
+
+ if (_.slideCount > _.options.slidesToShow) {
+
+ if (_.options.centerMode === true) {
+ infiniteCount = _.options.slidesToShow + 1;
+ } else {
+ infiniteCount = _.options.slidesToShow;
+ }
+
+ for (i = _.slideCount; i > (_.slideCount -
+ infiniteCount); i -= 1) {
+ slideIndex = i - 1;
+ $(_.$slides[slideIndex]).clone(true).attr('id', '')
+ .attr('data-slick-index', slideIndex - _.slideCount)
+ .prependTo(_.$slideTrack).addClass('slick-cloned');
+ }
+ for (i = 0; i < infiniteCount; i += 1) {
+ slideIndex = i;
+ $(_.$slides[slideIndex]).clone(true).attr('id', '')
+ .attr('data-slick-index', slideIndex + _.slideCount)
+ .appendTo(_.$slideTrack).addClass('slick-cloned');
+ }
+ _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
+ $(this).attr('id', '');
+ });
+
+ }
+
+ }
+
+ };
+
+ Slick.prototype.interrupt = function( toggle ) {
+
+ var _ = this;
+
+ if( !toggle ) {
+ _.autoPlay();
+ }
+ _.interrupted = toggle;
+
+ };
+
+ Slick.prototype.selectHandler = function(event) {
+
+ var _ = this;
+
+ var targetElement =
+ $(event.target).is('.slick-slide') ?
+ $(event.target) :
+ $(event.target).parents('.slick-slide');
+
+ var index = parseInt(targetElement.attr('data-slick-index'));
+
+ if (!index) index = 0;
+
+ if (_.slideCount <= _.options.slidesToShow) {
+
+ _.setSlideClasses(index);
+ _.asNavFor(index);
+ return;
+
+ }
+
+ _.slideHandler(index);
+
+ };
+
+ Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
+
+ var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
+ _ = this, navTarget;
+
+ sync = sync || false;
+
+ if (_.animating === true && _.options.waitForAnimate === true) {
+ return;
+ }
+
+ if (_.options.fade === true && _.currentSlide === index) {
+ return;
+ }
+
+ if (_.slideCount <= _.options.slidesToShow) {
+ return;
+ }
+
+ if (sync === false) {
+ _.asNavFor(index);
+ }
+
+ targetSlide = index;
+ targetLeft = _.getLeft(targetSlide);
+ slideLeft = _.getLeft(_.currentSlide);
+
+ _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
+
+ if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
+ if (_.options.fade === false) {
+ targetSlide = _.currentSlide;
+ if (dontAnimate !== true) {
+ _.animateSlide(slideLeft, function() {
+ _.postSlide(targetSlide);
+ });
+ } else {
+ _.postSlide(targetSlide);
+ }
+ }
+ return;
+ } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
+ if (_.options.fade === false) {
+ targetSlide = _.currentSlide;
+ if (dontAnimate !== true) {
+ _.animateSlide(slideLeft, function() {
+ _.postSlide(targetSlide);
+ });
+ } else {
+ _.postSlide(targetSlide);
+ }
+ }
+ return;
+ }
+
+ if ( _.options.autoplay ) {
+ clearInterval(_.autoPlayTimer);
+ }
+
+ if (targetSlide < 0) {
+ if (_.slideCount % _.options.slidesToScroll !== 0) {
+ animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
+ } else {
+ animSlide = _.slideCount + targetSlide;
+ }
+ } else if (targetSlide >= _.slideCount) {
+ if (_.slideCount % _.options.slidesToScroll !== 0) {
+ animSlide = 0;
+ } else {
+ animSlide = targetSlide - _.slideCount;
+ }
+ } else {
+ animSlide = targetSlide;
+ }
+
+ _.animating = true;
+
+ _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
+
+ oldSlide = _.currentSlide;
+ _.currentSlide = animSlide;
+
+ _.setSlideClasses(_.currentSlide);
+
+ if ( _.options.asNavFor ) {
+
+ navTarget = _.getNavTarget();
+ navTarget = navTarget.slick('getSlick');
+
+ if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
+ navTarget.setSlideClasses(_.currentSlide);
+ }
+
+ }
+
+ _.updateDots();
+ _.updateArrows();
+
+ if (_.options.fade === true) {
+ if (dontAnimate !== true) {
+
+ _.fadeSlideOut(oldSlide);
+
+ _.fadeSlide(animSlide, function() {
+ _.postSlide(animSlide);
+ });
+
+ } else {
+ _.postSlide(animSlide);
+ }
+ _.animateHeight();
+ return;
+ }
+
+ if (dontAnimate !== true) {
+ _.animateSlide(targetLeft, function() {
+ _.postSlide(animSlide);
+ });
+ } else {
+ _.postSlide(animSlide);
+ }
+
+ };
+
+ Slick.prototype.startLoad = function() {
+
+ var _ = this;
+
+ if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
+
+ _.$prevArrow.hide();
+ _.$nextArrow.hide();
+
+ }
+
+ if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
+
+ _.$dots.hide();
+
+ }
+
+ _.$slider.addClass('slick-loading');
+
+ };
+
+ Slick.prototype.swipeDirection = function() {
+
+ var xDist, yDist, r, swipeAngle, _ = this;
+
+ xDist = _.touchObject.startX - _.touchObject.curX;
+ yDist = _.touchObject.startY - _.touchObject.curY;
+ r = Math.atan2(yDist, xDist);
+
+ swipeAngle = Math.round(r * 180 / Math.PI);
+ if (swipeAngle < 0) {
+ swipeAngle = 360 - Math.abs(swipeAngle);
+ }
+
+ if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
+ return (_.options.rtl === false ? 'left' : 'right');
+ }
+ if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
+ return (_.options.rtl === false ? 'left' : 'right');
+ }
+ if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
+ return (_.options.rtl === false ? 'right' : 'left');
+ }
+ if (_.options.verticalSwiping === true) {
+ if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
+ return 'down';
+ } else {
+ return 'up';
+ }
+ }
+
+ return 'vertical';
+
+ };
+
+ Slick.prototype.swipeEnd = function(event) {
+
+ var _ = this,
+ slideCount,
+ direction;
+
+ _.dragging = false;
+ _.interrupted = false;
+ _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
+
+ if ( _.touchObject.curX === undefined ) {
+ return false;
+ }
+
+ if ( _.touchObject.edgeHit === true ) {
+ _.$slider.trigger('edge', [_, _.swipeDirection() ]);
+ }
+
+ if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
+
+ direction = _.swipeDirection();
+
+ switch ( direction ) {
+
+ case 'left':
+ case 'down':
+
+ slideCount =
+ _.options.swipeToSlide ?
+ _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
+ _.currentSlide + _.getSlideCount();
+
+ _.currentDirection = 0;
+
+ break;
+
+ case 'right':
+ case 'up':
+
+ slideCount =
+ _.options.swipeToSlide ?
+ _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
+ _.currentSlide - _.getSlideCount();
+
+ _.currentDirection = 1;
+
+ break;
+
+ default:
+
+
+ }
+
+ if( direction != 'vertical' ) {
+
+ _.slideHandler( slideCount );
+ _.touchObject = {};
+ _.$slider.trigger('swipe', [_, direction ]);
+
+ }
+
+ } else {
+
+ if ( _.touchObject.startX !== _.touchObject.curX ) {
+
+ _.slideHandler( _.currentSlide );
+ _.touchObject = {};
+
+ }
+
+ }
+
+ };
+
+ Slick.prototype.swipeHandler = function(event) {
+
+ var _ = this;
+
+ if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
+ return;
+ } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
+ return;
+ }
+
+ _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
+ event.originalEvent.touches.length : 1;
+
+ _.touchObject.minSwipe = _.listWidth / _.options
+ .touchThreshold;
+
+ if (_.options.verticalSwiping === true) {
+ _.touchObject.minSwipe = _.listHeight / _.options
+ .touchThreshold;
+ }
+
+ switch (event.data.action) {
+
+ case 'start':
+ _.swipeStart(event);
+ break;
+
+ case 'move':
+ _.swipeMove(event);
+ break;
+
+ case 'end':
+ _.swipeEnd(event);
+ break;
+
+ }
+
+ };
+
+ Slick.prototype.swipeMove = function(event) {
+
+ var _ = this,
+ edgeWasHit = false,
+ curLeft, swipeDirection, swipeLength, positionOffset, touches;
+
+ touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
+
+ if (!_.dragging || touches && touches.length !== 1) {
+ return false;
+ }
+
+ curLeft = _.getLeft(_.currentSlide);
+
+ _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
+ _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
+
+ _.touchObject.swipeLength = Math.round(Math.sqrt(
+ Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
+
+ if (_.options.verticalSwiping === true) {
+ _.touchObject.swipeLength = Math.round(Math.sqrt(
+ Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
+ }
+
+ swipeDirection = _.swipeDirection();
+
+ if (swipeDirection === 'vertical') {
+ return;
+ }
+
+ if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
+ event.preventDefault();
+ }
+
+ positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
+ if (_.options.verticalSwiping === true) {
+ positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
+ }
+
+
+ swipeLength = _.touchObject.swipeLength;
+
+ _.touchObject.edgeHit = false;
+
+ if (_.options.infinite === false) {
+ if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
+ swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
+ _.touchObject.edgeHit = true;
+ }
+ }
+
+ if (_.options.vertical === false) {
+ _.swipeLeft = curLeft + swipeLength * positionOffset;
+ } else {
+ _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
+ }
+ if (_.options.verticalSwiping === true) {
+ _.swipeLeft = curLeft + swipeLength * positionOffset;
+ }
+
+ if (_.options.fade === true || _.options.touchMove === false) {
+ return false;
+ }
+
+ if (_.animating === true) {
+ _.swipeLeft = null;
+ return false;
+ }
+
+ _.setCSS(_.swipeLeft);
+
+ };
+
+ Slick.prototype.swipeStart = function(event) {
+
+ var _ = this,
+ touches;
+
+ _.interrupted = true;
+
+ if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
+ _.touchObject = {};
+ return false;
+ }
+
+ if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
+ touches = event.originalEvent.touches[0];
+ }
+
+ _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
+ _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
+
+ _.dragging = true;
+
+ };
+
+ Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
+
+ var _ = this;
+
+ if (_.$slidesCache !== null) {
+
+ _.unload();
+
+ _.$slideTrack.children(this.options.slide).detach();
+
+ _.$slidesCache.appendTo(_.$slideTrack);
+
+ _.reinit();
+
+ }
+
+ };
+
+ Slick.prototype.unload = function() {
+
+ var _ = this;
+
+ $('.slick-cloned', _.$slider).remove();
+
+ if (_.$dots) {
+ _.$dots.remove();
+ }
+
+ if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
+ _.$prevArrow.remove();
+ }
+
+ if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
+ _.$nextArrow.remove();
+ }
+
+ _.$slides
+ .removeClass('slick-slide slick-active slick-visible slick-current')
+ .attr('aria-hidden', 'true')
+ .css('width', '');
+
+ };
+
+ Slick.prototype.unslick = function(fromBreakpoint) {
+
+ var _ = this;
+ _.$slider.trigger('unslick', [_, fromBreakpoint]);
+ _.destroy();
+
+ };
+
+ Slick.prototype.updateArrows = function() {
+
+ var _ = this,
+ centerOffset;
+
+ centerOffset = Math.floor(_.options.slidesToShow / 2);
+
+ if ( _.options.arrows === true &&
+ _.slideCount > _.options.slidesToShow &&
+ !_.options.infinite ) {
+
+ _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+ _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+ if (_.currentSlide === 0) {
+
+ _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
+ _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+ } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
+
+ _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
+ _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+ } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
+
+ _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
+ _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
+
+ }
+
+ }
+
+ };
+
+ Slick.prototype.updateDots = function() {
+
+ var _ = this;
+
+ if (_.$dots !== null) {
+
+ _.$dots
+ .find('li')
+ .removeClass('slick-active')
+ .attr('aria-hidden', 'true');
+
+ _.$dots
+ .find('li')
+ .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
+ .addClass('slick-active')
+ .attr('aria-hidden', 'false');
+
+ }
+
+ };
+
+ Slick.prototype.visibility = function() {
+
+ var _ = this;
+
+ if ( _.options.autoplay ) {
+
+ if ( document[_.hidden] ) {
+
+ _.interrupted = true;
+
+ } else {
+
+ _.interrupted = false;
+
+ }
+
+ }
+
+ };
+
+ $.fn.slick = function() {
+ var _ = this,
+ opt = arguments[0],
+ args = Array.prototype.slice.call(arguments, 1),
+ l = _.length,
+ i,
+ ret;
+ for (i = 0; i < l; i++) {
+ if (typeof opt == 'object' || typeof opt == 'undefined')
+ _[i].slick = new Slick(_[i], opt);
+ else
+ ret = _[i].slick[opt].apply(_[i].slick, args);
+ if (typeof ret != 'undefined') return ret;
+ }
+ return _;
+ };
+
+}));
--- /dev/null
+/* Slider */
+
+.slick-slider {
+ position: relative;
+ display: block;
+ box-sizing: border-box;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: pan-y;
+ touch-action: pan-y;
+ -webkit-tap-highlight-color: transparent;
+}
+.slick-list {
+ position: relative;
+ overflow: hidden;
+ display: block;
+ margin: 0;
+ padding: 0;
+
+ &:focus {
+ outline: none;
+ }
+
+ &.dragging {
+ cursor: pointer;
+ cursor: hand;
+ }
+}
+.slick-slider .slick-track,
+.slick-slider .slick-list {
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+}
+
+.slick-track {
+ position: relative;
+ left: 0;
+ top: 0;
+ display: block;
+
+ &:before,
+ &:after {
+ content: "";
+ display: table;
+ }
+
+ &:after {
+ clear: both;
+ }
+
+ .slick-loading & {
+ visibility: hidden;
+ }
+}
+.slick-slide {
+ float: left;
+ height: 100%;
+ min-height: 1px;
+ [dir="rtl"] & {
+ float: right;
+ }
+ img {
+ display: block;
+ }
+ &.slick-loading img {
+ display: none;
+ }
+
+ display: none;
+
+ &.dragging img {
+ pointer-events: none;
+ }
+
+ .slick-initialized & {
+ display: block;
+ }
+
+ .slick-loading & {
+ visibility: hidden;
+ }
+
+ .slick-vertical & {
+ display: block;
+ height: auto;
+ border: 1px solid transparent;
+ }
+}
+.slick-arrow.slick-hidden {
+ display: none;
+}
--- /dev/null
+/*
+ _ _ _ _
+ ___| (_) ___| | __ (_)___
+/ __| | |/ __| |/ / | / __|
+\__ \ | | (__| < _ | \__ \
+|___/_|_|\___|_|\_(_)/ |___/
+ |__/
+
+ Version: 1.6.0
+ Author: Ken Wheeler
+ Website: http://kenwheeler.github.io
+ Docs: http://kenwheeler.github.io/slick
+ Repo: http://github.com/kenwheeler/slick
+ Issues: http://github.com/kenwheeler/slick/issues
+
+ */
+!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(b,c){return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.focussed=!1,e.interrupted=!1,e.hidden="hidden",e.paused=!0,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,d,f),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0)}var b=0;return c}(),b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.getNavTarget=function(){var b=this,c=b.options.asNavFor;return c&&null!==c&&(c=a(c).not(b.$slider)),c},b.prototype.asNavFor=function(b){var c=this,d=c.getNavTarget();null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayClear(),a.slideCount>a.options.slidesToShow&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this,b=a.currentSlide+a.options.slidesToScroll;a.paused||a.interrupted||a.focussed||(a.options.infinite===!1&&(1===a.direction&&a.currentSlide+1===a.slideCount-1?a.direction=0:0===a.direction&&(b=a.currentSlide-a.options.slidesToScroll,a.currentSlide-1===0&&(a.direction=1))),a.slideHandler(b))},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(b.$slider.addClass("slick-dotted"),d=a("<ul />").addClass(b.options.dotsClass),c=0;c<=b.getDotCount();c+=1)d.append(a("<li />").append(b.options.customPaging.call(this,b,c)));b.$dots=d.appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('<div class="slick-track"/>').appendTo(b.$slider):b.$slides.wrapAll('<div class="slick-track"/>').parent(),b.$list=b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c<a.options.rows;c++){var j=document.createElement("div");for(d=0;d<a.options.slidesPerRow;d++){var k=b*h+(c*a.options.slidesPerRow+d);g.get(k)&&j.appendChild(g.get(k))}i.appendChild(j)}e.appendChild(i)}a.$slider.empty().append(e),a.$slider.children().children().children().css({width:100/a.options.slidesPerRow+"%",display:"inline-block"})}},b.prototype.checkResponsive=function(b,c){var e,f,g,d=this,h=!1,i=d.$slider.width(),j=window.innerWidth||a(window).width();if("window"===d.respondTo?g=j:"slider"===d.respondTo?g=i:"min"===d.respondTo&&(g=Math.min(j,i)),d.options.responsive&&d.options.responsive.length&&null!==d.options.responsive){f=null;for(e in d.breakpoints)d.breakpoints.hasOwnProperty(e)&&(d.originalSettings.mobileFirst===!1?g<d.breakpoints[e]&&(f=d.breakpoints[e]):g>d.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.currentTarget);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(a<c[e]){a=d;break}d=c[e]}return a},b.prototype.cleanUpEvents=function(){var b=this;b.options.dots&&null!==b.$dots&&a("li",b.$dots).off("click.slick",b.changeSlide).off("mouseenter.slick",a.proxy(b.interrupt,b,!0)).off("mouseleave.slick",a.proxy(b.interrupt,b,!1)),b.$slider.off("focus.slick blur.slick"),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.cleanUpSlideEvents(),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpSlideEvents=function(){var b=this;b.$list.off("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.empty().append(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.$slider.removeClass("slick-dotted"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.focusHandler=function(){var b=this;b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*:not(.slick-arrow)",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.options.pauseOnFocus&&(b.focussed=d.is(":focus"),b.autoPlay())},0)})},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else if(a.options.centerMode===!0)d=a.slideCount;else if(a.options.asNavFor)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else d=1+Math.ceil((a.slideCount-a.options.slidesToShow)/a.options.slidesToScroll);return d-1},b.prototype.getLeft=function(a){var c,d,f,b=this,e=0;return b.slideOffset=0,d=b.$slides.first().outerHeight(!0),b.options.infinite===!0?(b.slideCount>b.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots(),c.checkResponsive(!0),c.focusHandler()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA(),c.options.autoplay&&(c.paused=!1,c.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.off("click.slick").on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.interrupt,b,!0)).on("mouseleave.slick",a.proxy(b.interrupt,b,!1))},b.prototype.initSlideEvents=function(){var b=this;b.options.pauseOnHover&&(b.$list.on("mouseenter.slick",a.proxy(b.interrupt,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.interrupt,b,!1)))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.initSlideEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:b.options.rtl===!0?"next":"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:b.options.rtl===!0?"previous":"next"}}))},b.prototype.lazyLoad=function(){function g(c){a("img[data-lazy]",c).each(function(){var c=a(this),d=a(this).attr("data-lazy"),e=document.createElement("img");e.onload=function(){c.animate({opacity:0},100,function(){c.attr("src",d).animate({opacity:1},200,function(){c.removeAttr("data-lazy").removeClass("slick-loading")}),b.$slider.trigger("lazyLoaded",[b,c,d])})},e.onerror=function(){c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),b.$slider.trigger("lazyLoadError",[b,c,d])},e.src=d})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=Math.ceil(e+b.options.slidesToShow),b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.autoPlay(),a.options.autoplay=!0,a.paused=!1,a.focussed=!1,a.interrupted=!1},b.prototype.postSlide=function(a){var b=this;b.unslicked||(b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay&&b.autoPlay(),b.options.accessibility===!0&&b.initADA())},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(b){b=b||1;var e,f,g,c=this,d=a("img[data-lazy]",c.$slider);d.length?(e=d.first(),f=e.attr("data-lazy"),g=document.createElement("img"),g.onload=function(){e.attr("src",f).removeAttr("data-lazy").removeClass("slick-loading"),c.options.adaptiveHeight===!0&&c.setPosition(),c.$slider.trigger("lazyLoaded",[c,e,f]),c.progressiveLazyLoad()},g.onerror=function(){3>b?setTimeout(function(){c.progressiveLazyLoad(b+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),c.$slider.trigger("lazyLoadError",[c,e,f]),c.progressiveLazyLoad())},g.src=f):c.$slider.trigger("allImagesLoaded",[c])},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,!c.options.infinite&&c.currentSlide>e&&(c.currentSlide=e),c.slideCount<=c.options.slidesToShow&&(c.currentSlide=0),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.cleanUpSlideEvents(),b.initSlideEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.setPosition(),b.focusHandler(),b.paused=!b.options.autoplay,b.autoPlay(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(){var c,d,e,f,h,b=this,g=!1;if("object"===a.type(arguments[0])?(e=arguments[0],g=arguments[1],h="multiple"):"string"===a.type(arguments[0])&&(e=arguments[0],f=arguments[1],g=arguments[2],"responsive"===arguments[0]&&"array"===a.type(arguments[1])?h="responsive":"undefined"!=typeof arguments[1]&&(h="single")),"single"===h)b.options[e]=f;else if("multiple"===h)a.each(e,function(a,c){b.options[a]=c});else if("responsive"===h)for(d in f)if("array"!==a.type(b.options.responsive))b.options.responsive=[f[d]];else{for(c=b.options.responsive.length-1;c>=0;)b.options.responsive[c].breakpoint===f[d].breakpoint&&b.options.responsive.splice(c,1),c--;b.options.responsive.push(f[d])}g&&(b.unload(),b.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,
+d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-a<b.options.slidesToShow?d.slice(e-(b.options.slidesToShow-f),e+f).addClass("slick-active").attr("aria-hidden","false"):d.slice(e,e+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false")),"ondemand"===b.options.lazyLoad&&b.lazyLoad()},b.prototype.setupInfinite=function(){var c,d,e,b=this;if(b.options.fade===!0&&(b.options.centerMode=!1),b.options.infinite===!0&&b.options.fade===!1&&(d=null,b.slideCount>b.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.interrupt=function(a){var b=this;a||b.autoPlay(),b.interrupted=a},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,j,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.options.asNavFor&&(j=i.getNavTarget(),j=j.slick("getSlick"),j.slideCount<=j.options.slidesToShow&&j.setSlideClasses(i.currentSlide)),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"down":"up":"vertical"},b.prototype.swipeEnd=function(a){var c,d,b=this;if(b.dragging=!1,b.interrupted=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe){switch(d=b.swipeDirection()){case"left":case"down":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.currentDirection=0;break;case"right":case"up":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.currentDirection=1}"vertical"!=d&&(b.slideHandler(c),b.touchObject={},b.$slider.trigger("swipe",[b,d]))}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return b.interrupted=!0,1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;a.options.autoplay&&(document[a.hidden]?a.interrupted=!0:a.interrupted=!1)},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}});
\ No newline at end of file
--- /dev/null
+/* Slider */
+
+.slick-slider {
+ position: relative;
+ display: block;
+ box-sizing: border-box;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: pan-y;
+ touch-action: pan-y;
+ -webkit-tap-highlight-color: transparent;
+}
+.slick-list {
+ position: relative;
+ overflow: hidden;
+ display: block;
+ margin: 0;
+ padding: 0;
+
+ &:focus {
+ outline: none;
+ }
+
+ &.dragging {
+ cursor: pointer;
+ cursor: hand;
+ }
+}
+.slick-slider .slick-track,
+.slick-slider .slick-list {
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+}
+
+.slick-track {
+ position: relative;
+ left: 0;
+ top: 0;
+ display: block;
+
+ &:before,
+ &:after {
+ content: "";
+ display: table;
+ }
+
+ &:after {
+ clear: both;
+ }
+
+ .slick-loading & {
+ visibility: hidden;
+ }
+}
+.slick-slide {
+ float: left;
+ height: 100%;
+ min-height: 1px;
+ [dir="rtl"] & {
+ float: right;
+ }
+ img {
+ display: block;
+ }
+ &.slick-loading img {
+ display: none;
+ }
+
+ display: none;
+
+ &.dragging img {
+ pointer-events: none;
+ }
+
+ .slick-initialized & {
+ display: block;
+ }
+
+ .slick-loading & {
+ visibility: hidden;
+ }
+
+ .slick-vertical & {
+ display: block;
+ height: auto;
+ border: 1px solid transparent;
+ }
+}
+.slick-arrow.slick-hidden {
+ display: none;
+}
/*
-Theme Name: resortTownship
+Theme Name: Visit Escanaba
Author: Gaslight Media
Author URI: http://www.gaslightmedia.com
-Description: A theme for resortTownship
+Description: A theme for Visit Escanaba
Version: 1.0
*/