diff --git a/core/themes/classy/templates/breadcrumb.html.twig b/core/themes/classy/templates/breadcrumb.html.twig
new file mode 100644
index 0000000..879e6f5
--- /dev/null
+++ b/core/themes/classy/templates/breadcrumb.html.twig
@@ -0,0 +1,27 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a breadcrumb trail.
+ *
+ * Available variables:
+ * - breadcrumb: Breadcrumb trail items.
+ *
+ * @ingroup themeable
+ */
+#}
+{% if breadcrumb %}
+  <nav role="navigation" aria-labelledby="system-breadcrumb">
+    <h2 id="system-breadcrumb">{{ 'Breadcrumb'|t }}</h2>
+    <ol>
+    {% for item in breadcrumb %}
+      <li>
+        {% if item.url %}
+          <a href="{{ item.url }}">{{ item.text }}</a>
+        {% else %}
+          {{ item.text }}
+        {% endif %}
+      </li>
+    {% endfor %}
+    </ol>
+  </nav>
+{% endif %}
diff --git a/core/themes/classy/templates/checkboxes.html.twig b/core/themes/classy/templates/checkboxes.html.twig
new file mode 100644
index 0000000..00384d3
--- /dev/null
+++ b/core/themes/classy/templates/checkboxes.html.twig
@@ -0,0 +1,17 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a 'checkboxes' #type form element.
+ *
+ * Available variables
+ * - attributes: A list of HTML attributes for the wrapper element.
+ * - children: The rendered checkboxes.
+ *
+ * @see template_preprocess_checkboxes()
+ *
+ * @ingroup themeable
+ */
+ @todo: remove this file once http://drupal.org/node/1819284 is resolved.
+ This is identical to core/modules/system/templates/container.html.twig
+#}
+<div{{ attributes }}>{{ children }}</div>
diff --git a/core/themes/classy/templates/confirm-form.html.twig b/core/themes/classy/templates/confirm-form.html.twig
new file mode 100644
index 0000000..d714917
--- /dev/null
+++ b/core/themes/classy/templates/confirm-form.html.twig
@@ -0,0 +1,15 @@
+{#
+/**
+ * @file
+ * Default theme implementation for confirm form.
+ *
+ * By default this does not alter the appearance of a form at all,
+ * but is provided as a convenience for themers.
+ *
+ * Available variables:
+ * - form: The confirm form.
+ *
+ * @ingroup themeable
+ */
+#}
+{{ form }}
diff --git a/core/themes/classy/templates/container.html.twig b/core/themes/classy/templates/container.html.twig
new file mode 100644
index 0000000..4e9af91
--- /dev/null
+++ b/core/themes/classy/templates/container.html.twig
@@ -0,0 +1,20 @@
+{#
+/**
+ * @file
+ * Default theme implementation of a container used to wrap child elements.
+ *
+ * Used for grouped form items. Can also be used as a #theme_wrapper for any
+ * renderable element, to surround it with a <div> and HTML attributes.
+ *
+ * Available variables:
+ * - attributes: HTML attributes for the containing element.
+ * - children: The rendered child elements of the container.
+ * - has_parent: A flag to indicate that the container has one or more parent
+     containers.
+ *
+ * @see template_preprocess_container()
+ *
+ * @ingroup themeable
+ */
+#}
+<div{{ attributes }}>{{ children }}</div>
diff --git a/core/themes/classy/templates/datetime-form.html.twig b/core/themes/classy/templates/datetime-form.html.twig
new file mode 100644
index 0000000..fef4b5e
--- /dev/null
+++ b/core/themes/classy/templates/datetime-form.html.twig
@@ -0,0 +1,17 @@
+{#
+/**
+ * @file
+ * Default theme implementation of a datetime form element.
+ *
+ * Available variables:
+ * - attributes: HTML attributes for the datetime form element.
+ * - content: The datelist form element to be output.
+ *
+ * @see template_preprocess_datetime_form()
+ *
+ * @ingroup themeable
+ */
+#}
+<div{{ attributes }}>
+  {{ content }}
+</div>
diff --git a/core/themes/classy/templates/datetime-wrapper.html.twig b/core/themes/classy/templates/datetime-wrapper.html.twig
new file mode 100644
index 0000000..5ff8908
--- /dev/null
+++ b/core/themes/classy/templates/datetime-wrapper.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Default theme implementation of a datetime form wrapper.
+ *
+ * Available variables:
+ * - content: The form element to be output, usually a datelist, or datetime.
+ * - title: The title of the form element.
+ * - title_attributes: HTML attributes for the title wrapper.
+ * - description: Description text for the form element.
+ * - required: An indicator for whether the associated form element is required.
+ *
+ * @see template_preprocess_datetime_wrapper()
+ *
+ * @ingroup themeable
+ */
+#}
+
+{% if title %}
+  <h4{{ title_attributes }}>{{ title }}</h4>
+{% endif %}
+{{ content }}
+{% if description %}
+  <div>{{ description }}</div>
+{% endif %}
diff --git a/sites/default/files/.htaccess b/sites/default/files/.htaccess
new file mode 100644
index 0000000..7051eb8
--- /dev/null
+++ b/sites/default/files/.htaccess
@@ -0,0 +1,15 @@
+# Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active/.htaccess b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active/README.txt b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active/README.txt
new file mode 100644
index 0000000..0b40f96
--- /dev/null
+++ b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active/README.txt
@@ -0,0 +1 @@
+If you change the configuration system to use file storage instead of the database for the active Drupal site configuration, this directory will contain the active configuration. By default, this directory will be empty. If you are using files to store the active configuration, and you want to move it between environments, files from this directory should be placed in the staging directory on the target server. To make this configuration active, visit admin/config/development/configuration/sync on the target server. For information about deploying configuration between servers, see http://drupal.org/documentation/administer/config
\ No newline at end of file
diff --git a/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging/.htaccess b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging/README.txt b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging/README.txt
new file mode 100644
index 0000000..8582a8c
--- /dev/null
+++ b/sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging/README.txt
@@ -0,0 +1 @@
+This directory contains configuration to be imported into your Drupal site. To make this configuration active, visit admin/config/development/configuration/sync. For information about deploying configuration between servers, see http://drupal.org/documentation/administer/config
\ No newline at end of file
diff --git a/sites/default/files/css/css_4MJJSf6V8LB6qoALZhZF19-W777JCoqMyxpQiviX5U0.css b/sites/default/files/css/css_4MJJSf6V8LB6qoALZhZF19-W777JCoqMyxpQiviX5U0.css
new file mode 100644
index 0000000..8cf0c04
--- /dev/null
+++ b/sites/default/files/css/css_4MJJSf6V8LB6qoALZhZF19-W777JCoqMyxpQiviX5U0.css
@@ -0,0 +1,15 @@
+.toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab{float:right;}[dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab{float:left;}.toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item{margin:0;padding-left:1.3333em;text-indent:-9999px;}[dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item{padding-right:1.3333em;}.toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item.active{background-image:-webkit-linear-gradient(rgb(78,159,234) 0%,rgb(69,132,221) 100%);background-image:linear-gradient(rgb(78,159,234) 0%,rgb(69,132,221) 100%);}.toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab.hidden{display:none;}
+.add-or-remove-shortcuts .icon{display:inline-block;vertical-align:-2px;}
+.toolbar .menu,[dir="rtl"] .toolbar .menu{list-style:none;margin:0;padding:0;}.toolbar .toolbar-box{display:block;line-height:1em;position:relative;width:auto;}.toolbar .toolbar-box a{display:inline-block;}.toolbar .toolbar-tray-horizontal .menu .toolbar-handle,.toolbar .toolbar-tray-horizontal .menu ul,.toolbar .toolbar-tray-vertical .menu ul{display:none;}.toolbar .toolbar-tray-vertical li.open > ul{display:block;}.toolbar .toolbar-tray-vertical .toolbar-handle + a{margin-right:3em;}[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-handle + a{margin-left:3em;margin-right:0;}.toolbar .toolbar-tray .active-trail > .toolbar-box a,.toolbar .toolbar-tray a.active{color:#000;font-weight:bold;}.toolbar .level-2 > ul{background-color:#fafafa;border-bottom-color:#cccccc;border-top-color:#e5e5e5;}.toolbar .level-3 > ul{background-color:#f5f5f5;border-bottom-color:#c5c5c5;border-top-color:#dddddd;}.toolbar .level-4 > ul{background-color:#eeeeee;border-bottom-color:#bbbbbb;border-top-color:#d5d5d5;}.toolbar .level-5 > ul{background-color:#e5e5e5;border-bottom-color:#b5b5b5;border-top-color:#cccccc;}.toolbar .level-6 > ul{background-color:#eeeeee;border-bottom-color:#aaaaaa;border-top-color:#c5c5c5;}.toolbar .level-7 > ul{background-color:#fafafa;border-bottom-color:#b5b5b5;border-top-color:#cccccc;}.toolbar .level-8 > ul{background-color:#dddddd;border-bottom-color:#cccccc;border-top-color:#dddddd;}.toolbar .toolbar-handle:hover{cursor:pointer;}.toolbar .toolbar-icon.toolbar-handle{bottom:0;display:block;height:100%;padding:0;position:absolute;right:0;top:0;z-index:1;}[dir="rtl"] .toolbar .toolbar-icon.toolbar-handle{left:0;padding:0;right:auto;}
+.contextual{position:absolute;right:0;top:6px;z-index:500;}[dir="rtl"] .contextual{left:0;right:auto;}.contextual-region.focus{outline:1px dashed #d6d6d6;outline-offset:1px;}.contextual .trigger{background-attachment:scroll;background-color:#fff;border:1px solid #ccc;border-radius:13px;float:right;margin:0;overflow:hidden;padding:0 2px;position:relative;right:6px;cursor:pointer;}[dir="rtl"] .contextual .trigger{float:left;right:auto;left:6px;}.contextual.open .trigger{border:1px solid #ccc;border-bottom-color:transparent;border-radius:13px 13px 0 0;box-shadow:none;z-index:2;}.contextual-region .contextual .contextual-links{background-color:#fff;border:1px solid #ccc;border-radius:4px 0 4px 4px;clear:both;float:right;margin:0;padding:0.25em 0;position:relative;right:6px;text-align:left;top:-1px;white-space:nowrap;}[dir="rtl"] .contextual-region .contextual .contextual-links{border-radius:0 4px 4px 4px;float:left;left:6px;right:auto;text-align:right;}.contextual-region .contextual .contextual-links li{background-color:#fff;border:none;list-style:none;list-style-image:none;margin:0;padding:0;line-height:100%;}.contextual-region .contextual .contextual-links a{background-color:#fff;color:#333;display:block;font-family:sans-serif;font-size:small;line-height:0.8em;margin:0.25em 0;padding:0.4em 0.6em;}.touch .contextual-region .contextual .contextual-links a{font-size:large;}.contextual-region .contextual .contextual-links a,.contextual-region .contextual .contextual-links a:hover{text-decoration:none;}.no-touch .contextual-region .contextual .contextual-links li a:hover{color:white;background-image:-webkit-linear-gradient(rgb(78,159,234) 0%,rgb(65,126,210) 100%);background-image:linear-gradient(rgb(78,159,234) 0%,rgb(65,126,210) 100%);}
+.toolbar-bar .toolbar-icon-edit:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/pencil.svg);}.toolbar-bar .toolbar-icon-edit:active:before,.toolbar-bar .toolbar-icon-edit.active:before{background-image:url(http://localhost/drupal/core/misc/icons/ffffff/pencil.svg);}.contextual .trigger{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/pencil.svg);background-position:center center;background-repeat:no-repeat;background-size:16px 16px;height:26px !important;width:26px !important;text-indent:-9999px;}.contextual .trigger:hover{background-image:url(http://localhost/drupal/core/misc/icons/787878/pencil.svg);}.contextual .trigger:focus{background-image:url(http://localhost/drupal/core/misc/icons/5181c6/pencil.svg);outline:none;}
+.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em;}.ui-widget .ui-widget{font-size:1em;}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em;}.ui-widget-content{border:1px solid #aaaaaa;background:#ffffff url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222222;}.ui-widget-content a{color:#222222;}.ui-widget-header{border:1px solid #aaaaaa;background:#cccccc url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222222;font-weight:bold;}.ui-widget-header a{color:#222222;}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555555;}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555555;text-decoration:none;}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999999;background:#dadada url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none;}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaaaaa;background:#ffffff url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121;}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none;}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636;}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636;}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a;}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a;}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a;}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold;}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal;}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none;}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35);}.ui-icon{width:16px;height:16px;}.ui-icon,.ui-widget-content .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_222222_256x240.png);}.ui-widget-header .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_222222_256x240.png);}.ui-state-default .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_888888_256x240.png);}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_454545_256x240.png);}.ui-state-active .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_454545_256x240.png);}.ui-state-highlight .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_2e83ff_256x240.png);}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-icons_cd0a0a_256x240.png);}.ui-icon-blank{background-position:16px 16px;}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-on{background-position:-96px -144px;}.ui-icon-radio-off{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-start{background-position:-80px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px;}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px;}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px;}.ui-widget-overlay{background:#aaaaaa url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaaaaa url(http://localhost/drupal/core/assets/vendor/jquery.ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px;}
+.ui-dialog{position:absolute;z-index:1260;overflow:visible;color:#000;background:#fff;border:solid 1px #ccc;padding:0;}@media all and (max-width:48em){.ui-dialog{width:92% !important;}}.ui-dialog .ui-dialog-titlebar{font-weight:bold;background:#f3f4ee;border-style:solid;border-radius:0;border-width:0 0 1px 0;border-color:#ccc;}.ui-dialog .ui-dialog-titlebar-close{border:0;background:none;}.ui-dialog .ui-dialog-buttonpane{margin-top:0;background:#f3f4ee;padding:.3em 1em;border-width:1px 0 0 0;border-color:#ccc;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{margin:0;padding:0;}.ui-dialog .ui-dialog-buttonpane .ui-button-text-only .ui-button-text{padding:0;}.ui-dialog .ui-dialog-content .form-actions{padding:0;margin:0;}.ui-dialog .ajax-progress-throbber{left:49%;position:fixed;top:48.5%;z-index:1000;background-color:#232323;background-image:url(http://localhost/drupal/core/misc/loading-small.gif);background-position:center center;background-repeat:no-repeat;border-radius:7px;height:24px;opacity:0.9;padding:4px;width:24px;}.ui-dialog .ajax-progress-throbber .throbber,.ui-dialog .ajax-progress-throbber .message{display:none;}
+.quickedit-field.quickedit-editable,.quickedit-field .quickedit-editable{box-shadow:0 0 0 2px #74b7ff;}.quickedit-field.quickedit-highlighted,.quickedit-form.quickedit-highlighted,.quickedit-field .quickedit-highlighted{box-shadow:0 0 0 1px #74b7ff,0 0 0 2px #007fff;}.quickedit-field.quickedit-changed,.quickedit-form.quickedit-changed,.quickedit-field .quickedit-changed{box-shadow:0 0 0 1px #fec17e,0 0 0 2px #f7870a;}.quickedit-editing.quickedit-validation-error,.quickedit-form.quickedit-validation-error{box-shadow:0 0 0px 1px #ee8b74,0 0 0 2px #fa2209;}.quickedit-editing.quickedit-editor-is-popup{box-shadow:none;}.quickedit-form .form-item .error{border:1px solid #eea0a0;}.quickedit-form form{padding:0.5em;}.quickedit-form .form-item{margin:0;}.quickedit-form .form-wrapper{margin:.5em;}.quickedit-animate-invisible{opacity:0;}.quickedit-animate-default{-webkit-transition:all .4s ease;transition:all .4s ease;}.quickedit-animate-slow{-webkit-transition:all .6s ease;transition:all .6s ease;}.quickedit-animate-delay-veryfast{-webkit-transition-delay:.05s;transition-delay:.05s;}.quickedit-animate-delay-fast{-webkit-transition-delay:.2s;transition-delay:.2s;}.quickedit-animate-disable-width{-webkit-transition:width 0s;transition:width 0s;}.quickedit-animate-only-visibility{-webkit-transition:opacity .2s ease;transition:opacity .2s ease;}.quickedit-validation-errors .messages.error{box-shadow:0 0 1px 1px red,0 0 3px 3px rgba(153,153,153,.5);background-color:white;}.quickedit-form{box-shadow:0 0 30px 4px #4f4f4f;background-color:white;}.quickedit-toolbar-container{font-family:'Source Sans Pro','Lucida Grande',sans-serif;padding-bottom:7px;padding-top:7px;-webkit-transition:all 1s;transition:all 1s;}.quickedit-toolbar-container > .quickedit-toolbar-content{background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(to bottom,#fff,#e4e4e4);box-sizing:border-box;color:black;padding:0.1667em;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;}.quickedit-toolbar-container > .quickedit-toolbar-pointer{background-color:#e4e4e4;bottom:2px;box-shadow:0 0 0 1px #818181,0px 0px 0 4px rgba(150,150,150,0.5);display:block;height:16px;left:18px;position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);width:16px;z-index:1;}[dir="rtl"] .quickedit-toolbar-container > .quickedit-toolbar-pointer{left:auto;right:18px;}.quickedit-toolbar-container.quickedit-toolbar-pointer-top > .quickedit-toolbar-pointer{bottom:auto;top:2px;}.quickedit-toolbar-container > .quickedit-toolbar-lining{bottom:7px;box-shadow:0 0 0 1px #818181,0px 3px 0px 1px rgba(150,150,150,0.5);display:block;left:0;position:absolute;right:0;top:7px;z-index:0;}.quickedit-toolbar-label{font-style:italic;overflow:hidden;padding:0.333em 0.4em;text-overflow:ellipsis;white-space:nowrap;}.quickedit-toolbar-label .field:after{content:' → ';}.quickedit-toolbar{font-family:'Droid sans','Lucida Grande',sans-serif;}.quickedit-toolbar-entity{padding:0.1667em 0.2em;}.quickedit-toolbar-fullwidth{width:100%;}.quickedit-toolgroup.wysiwyg-floated{float:right;}[dir="rtl"] .quickedit-toolgroup.wysiwyg-floated{float:left;}.quickedit-toolgroup.wysiwyg-main{clear:both;width:100%;padding-left:0;}[dir="rtl"] .quickedit-toolgroup.wysiwyg-main{padding-left:0;padding-right:0;}.quickedit-button{background-color:#e4e4e4;border:1px solid #d2d2d2;color:#5a5a5a;cursor:pointer;display:inline-block;margin:0;opacity:1;padding:0.345em;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;}.quickedit-button[aria-hidden="true"]{visibility:hidden;opacity:0;}.quickedit-button + .quickedit-button{margin-left:0.2em;}[dir="rtl"] .quickedit-button + .quickedit-button{margin-left:auto;margin-right:0.25em;}.quickedit-button:hover,.quickedit-button:active{background-color:#c8c8c8;border:1px solid #a0a0a0;color:#2e2e2e;}.quickedit-toolbar-container .quickedit-button.action-cancel{background-color:transparent;border:1px solid transparent;}.quickedit-button.action-save{color:white;background-color:#50a0e9;background-image:-webkit-linear-gradient(top,#50a0e9,#4481dc);background-image:linear-gradient(to bottom,#50a0e9,#4481dc);border:1px solid transparent;}.quickedit-button.action-save:hover,.quickedit-button.action-save:active{border:1px solid #a0a0a0;}.quickedit-button.action-saving,.quickedit-button.action-saving:hover,.quickedit-button.action-saving:active{background-color:#e4e4e4;background-image:none;border-color:#d2d2d2;color:#5a5a5a;}
+.quickedit .icon{min-height:1em;min-width:2.5em;position:relative;}.quickedit .icon.icon-only{text-indent:-9999px;}.quickedit .icon.icon-end{padding-right:2.5em;}[dir="rtl"] .quickedit .icon.icon-end{padding-left:2.5em;padding-right:0;}.quickedit .icon:before{background-attachment:scroll;background-color:transparent;background-position:center center;background-repeat:no-repeat;content:'';display:block;height:100%;left:0;position:absolute;top:0;width:100%;}[dir="rtl"] .quickedit .icon:before{left:auto;right:0;}.quickedit .icon-end:before{left:auto;right:0.5em;width:18px;}[dir="rtl"] .quickedit .icon-end:before{left:0.5em;right:auto;}.quickedit button.icon{font-size:1em;}.quickedit .icon-pencil{margin-left:.5em;padding-left:1.5em;}.quickedit .icon-close:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/ex.svg);height:12px;top:10px;}.quickedit .icon-close:hover:before,.quickedit .icon-close:active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/ex.svg);}.quickedit .icon-throbber:before{background-image:url(http://localhost/drupal/core/modules/quickedit/images/icon-throbber.gif);}.quickedit .icon-pencil:before{background-image:url(http://localhost/drupal/core/misc/icons/5181c6/pencil.svg);background-position:left center;background-size:1.3em;}
+.quickedit-toolbar-container > .quickedit-toolbar-content,.quickedit-toolbar-container > .quickedit-toolbar-lining{border-radius:4px;}.quickedit-button{border-radius:3px;}.quickedit-button.action-save,.quickedit-button.action-saving{border-color:#1e5c90;background-image:-webkit-linear-gradient(top,#007bc6,#0071b8);background-image:linear-gradient(to bottom,#007bc6,#0071b8);color:#fff;text-shadow:0 1px hsla(0,0%,0%,0.5);font-weight:700;-webkit-font-smoothing:antialiased;margin-top:2px;}.quickedit-button.action-save:hover,.quickedit-button.action-save:focus,.quickedit-button.action-saving:hover,.quickedit-button.action-saving:focus{background-color:#2369a6;background-image:-webkit-linear-gradient(top,#0c97ed,#1f86c7);background-image:linear-gradient(to bottom,#0c97ed,#1f86c7);border-color:#1e5c90;color:#fff;}.quickedit-button.action-save:hover,.quickedit-button.action-save:focus,.quickedit-button.action-saving:hover,.quickedit-button.action-saving:focus{box-shadow:0 1px 2px hsla(203,10%,10%,0.25);}.quickedit-button.action-save:active,.quickedit-button.action-saving:active{background-image:-webkit-linear-gradient(top,#08639b,#0071b8);background-image:linear-gradient(to bottom,#08639b,#0071b8);border-color:#144b78;box-shadow:inset 0 1px 3px hsla(0,0%,0%,0.2);}.quickedit .icon-close:before{top:8px;}
+.toolbar{font-family:"Source Sans Pro","Lucida Grande",Verdana,sans-serif;font-size:0.8125rem;-moz-tap-highlight-color:rgba(0,0,0,0);-o-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:rgba(0,0,0,0);tap-highlight-color:rgba(0,0,0,0);-moz-touch-callout:none;-o-touch-callout:none;-webkit-touch-callout:none;touch-callout:none;}.toolbar .toolbar-item{cursor:pointer;padding:1em 1.3333em;line-height:1em;text-decoration:none;}.toolbar .toolbar-item:hover,.toolbar .toolbar-item:focus{text-decoration:underline;}.toolbar .toolbar-bar{background-color:#0f0f0f;box-shadow:-1px 0 3px 1px rgba(0,0,0,0.3333);color:#dddddd;}[dir="rtl"] .toolbar .toolbar-bar{box-shadow:1px 0 3px 1px rgba(0,0,0,0.3333);}.toolbar .toolbar-bar .toolbar-item{color:#ffffff;}.toolbar .toolbar-bar .toolbar-tab > .toolbar-item{font-weight:bold;}.toolbar .toolbar-bar .toolbar-tab > .toolbar-item:hover,.toolbar .toolbar-bar .toolbar-tab > .toolbar-item:focus{background-image:-webkit-linear-gradient(rgba(255,255,255,0.125) 20%,transparent 200%);background-image:linear-gradient(rgba(255,255,255,0.125) 20%,transparent 200%);text-decoration:none;}.toolbar .toolbar-bar .toolbar-tab > .toolbar-item.active{background-image:-webkit-linear-gradient(rgba(255,255,255,0.25) 20%,transparent 200%);background-image:linear-gradient(rgba(255,255,255,0.25) 20%,transparent 200%);}.toolbar .toolbar-tray{background-color:#ffffff;}.toolbar .toolbar-tray-horizontal > .toolbar-lining{padding-right:5em;}[dir="rtl"] .toolbar .toolbar-tray-horizontal > .toolbar-lining{padding-right:0;padding-left:5em;}.toolbar .toolbar-tray-vertical{background-color:#f5f5f5;border-right:1px solid #aaaaaa;box-shadow:-1px 0 5px 2px rgba(0,0,0,0.3333);}[dir="rtl"] .toolbar .toolbar-tray-vertical{border-left:1px solid #aaaaaa;border-right:0 none;box-shadow:1px 0 5px 2px rgba(0,0,0,0.3333);}.toolbar .toolbar-tray-horizontal{border-bottom:1px solid #aaaaaa;box-shadow:-2px 1px 3px 1px rgba(0,0,0,0.3333);}[dir="rtl"] .toolbar .toolbar-tray-horizontal{box-shadow:2px 1px 3px 1px rgba(0,0,0,0.3333);}.toolbar .toolbar-tray-horizontal .toolbar-tray{background-color:#f5f5f5;}.toolbar-tray a{color:#565656;cursor:pointer;padding:1em 1.3333em;text-decoration:none;}.toolbar-tray a:hover,.toolbar-tray a:active,.toolbar-tray a:focus,.toolbar-tray a.active{color:#000;text-decoration:underline;}.toolbar .menu{background-color:#ffffff;}.toolbar .toolbar-tray-horizontal .menu li + li{border-left:1px solid #dddddd;}[dir="rtl"] .toolbar .toolbar-tray-horizontal .menu li + li{border-left:0 none;border-right:1px solid #dddddd;}.toolbar .toolbar-tray-horizontal .menu li:last-child{border-right:1px solid #dddddd;}[dir="rtl"] .toolbar .toolbar-tray-horizontal .menu li:last-child{border-left:1px solid #dddddd;}.toolbar .toolbar-tray-vertical .menu li + li{border-top:1px solid #dddddd;}.toolbar .toolbar-tray-vertical .menu li:last-child{border-bottom:1px solid #dddddd;}.toolbar .toolbar-tray-vertical .menu .menu li{border:0 none;}.toolbar .toolbar-tray-vertical .menu ul ul{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;}.toolbar .toolbar-tray-vertical .menu li:last-child > ul{border-bottom:0;}.toolbar .toolbar-tray-vertical .menu .menu .menu .menu{margin-left:0.25em;}[dir="rtl"] .toolbar .toolbar-tray-vertical .menu .menu .menu .menu{margin-left:0;margin-right:0.25em;}.toolbar .menu .menu a{color:#434343;}.toolbar .toolbar-toggle-orientation{background-color:#f5f5f5;padding:0.6667em;}.toolbar .toolbar-tray-horizontal .toolbar-toggle-orientation{border-left:1px solid #c9c9c9;}[dir="rtl"] .toolbar .toolbar-tray-horizontal .toolbar-toggle-orientation{border-left:0 none;border-right:1px solid #c9c9c9;}.toolbar .toolbar-toggle-orientation > .toolbar-lining{float:right;padding:0.1667em;}[dir="rtl"] .toolbar .toolbar-toggle-orientation > .toolbar-lining{float:left;}.toolbar .toolbar-toggle-orientation button{cursor:pointer;display:inline-block;}
+.toolbar .toolbar-icon{padding-left:2.75em;position:relative;}[dir="rtl"] .toolbar .toolbar-icon{padding-left:1.3333em;padding-right:2.75em;}.toolbar .toolbar-icon:before{background-attachment:scroll;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:100% auto;content:'';display:block;height:100%;left:0.6667em;position:absolute;top:0;width:20px;}[dir="rtl"] .toolbar .toolbar-icon:before{left:auto;right:0.6667em;}.toolbar button.toolbar-icon{background-color:transparent;border:0;font-size:1em;}.toolbar .menu ul .toolbar-icon{padding-left:1.3333em;}[dir="rtl"] .toolbar .menu ul .toolbar-icon{padding-left:0;padding-right:1.3333em;}.toolbar .menu ul a.toolbar-icon:before{display:none;}.toolbar .toolbar-tray-vertical .menu ul a{padding-left:2.75em;}[dir="rtl"] .toolbar .toolbar-tray-vertical .menu ul a{padding-left:0;padding-right:2.75em;}.toolbar .toolbar-tray-vertical .menu ul ul a{padding-left:3.75em;}[dir="rtl"] .toolbar .toolbar-tray-vertical .menu ul ul a{padding-left:0;padding-right:3.75em;}.toolbar-bar .toolbar-icon-menu:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/hamburger.svg);}.toolbar-bar .toolbar-icon-menu:active:before,.toolbar-bar .toolbar-icon-menu.active:before{background-image:url(http://localhost/drupal/core/misc/icons/ffffff/hamburger.svg);}.toolbar-bar .toolbar-icon-help:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/questionmark-disc.svg);}.toolbar-bar .toolbar-icon-help:active:before,.toolbar-bar .toolbar-icon-help.active:before{background-image:url(http://localhost/drupal/core/misc/icons/ffffff/questionmark-disc.svg);}.toolbar-icon-system-admin-content:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/file.svg);}.toolbar-icon-system-admin-content:active:before,.toolbar-icon-system-admin-content.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/file.svg);}.toolbar-icon-system-admin-structure:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/orgchart.svg);}.toolbar-icon-system-admin-structure:active:before,.toolbar-icon-system-admin-structure.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/orgchart.svg);}.toolbar-icon-system-themes-page:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/paintbrush.svg);}.toolbar-icon-system-themes-page:active:before,.toolbar-icon-system-themes-page.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/paintbrush.svg);}.toolbar-icon-user-admin-account:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/people.svg);}.toolbar-icon-user-admin-account:active:before,.toolbar-icon-user-admin-account.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/people.svg);}.toolbar-icon-system-modules-list:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/puzzlepiece.svg);}.toolbar-icon-system-modules-list:active:before,.toolbar-icon-system-modules-list.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/puzzlepiece.svg);}.toolbar-icon-system-admin-config:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/wrench.svg);}.toolbar-icon-system-admin-config:active:before,.toolbar-icon-system-admin-config.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/wrench.svg);}.toolbar-icon-system-admin-reports:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/barchart.svg);}.toolbar-icon-system-admin-reports:active:before,.toolbar-icon-system-admin-reports.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/barchart.svg);}.toolbar-icon-help-main:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/questionmark-disc.svg);}.toolbar-icon-help-main:active:before,.toolbar-icon-help-main.active:before{background-image:url(http://localhost/drupal/core/misc/icons/000000/questionmark-disc.svg);}.toolbar .toolbar-bar .toolbar-icon:before{min-height:3em;}@media only screen and (min-width:16.5em){.toolbar .toolbar-bar .toolbar-icon{margin-left:0;margin-right:0;padding-left:0;padding-right:0;text-indent:-9999px;width:4em;}.toolbar .toolbar-bar .toolbar-icon:before{background-size:42% auto;left:0;width:100%;}[dir="rtl"] .toolbar .toolbar-bar .toolbar-icon:before{left:auto;right:0;}}@media only screen and (min-width:36em){.toolbar .toolbar-bar .toolbar-icon{background-position:left center;padding-left:2.75em;padding-right:1.3333em;text-indent:0;width:auto;}[dir="rtl"] .toolbar .toolbar-bar .toolbar-icon{background-position:right center;padding-left:1.3333em;padding-right:2.75em;}.toolbar .toolbar-bar .toolbar-icon:before{background-size:100% auto;left:0.6667em;width:20px;}[dir="rtl"] .toolbar .toolbar-bar .toolbar-icon:before{left:0;right:0.6667em;}}.toolbar-tab a{border-left:2px solid transparent;}[dir="rtl"] .toolbar-tab a{border-left:none;border-right:2px solid transparent;}.toolbar-tab a:focus{outline:none;border-color:#ddd;}.toolbar-lining button:focus{outline:none;}.toolbar-tray-horizontal a,.toolbar-box a{border-left:2px solid transparent;}[dir="rtl"] .toolbar-tray-horizontal a,[dir="rtl"] .toolbar-box a{border-left:none;border-right:2px solid transparent;}.toolbar-tray-horizontal a:focus,.toolbar-box a:focus{outline:none;border-color:#4479C0;background-color:#f5f5f5;text-decoration:none;}.toolbar-box a:hover:focus{text-decoration:underline;}.toolbar .toolbar-icon.toolbar-handle:focus{outline:none;background-color:#f5f5f5;}.toolbar .toolbar-icon.toolbar-handle{width:3em;text-indent:-9999px;}.toolbar .toolbar-icon.toolbar-handle:before{background-image:url(http://localhost/drupal/core/misc/icons/5181c6/chevron-disc-down.svg);}.toolbar .toolbar-icon.toolbar-handle.open:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/chevron-disc-up.svg);}.toolbar .menu .menu .toolbar-icon.toolbar-handle:before{background-image:url(http://localhost/drupal/core/misc/icons/5181c6/twistie-down.svg);background-size:75%;}.toolbar .menu .menu .toolbar-icon.toolbar-handle.open:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/twistie-up.svg);background-size:75%;}.toolbar .toolbar-icon-escape-admin:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/chevron-disc-left.svg);}[dir="rtl"] .toolbar .toolbar-icon-escape-admin:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/chevron-disc-right.svg);}.toolbar .toolbar-toggle-orientation button{height:16px;padding:0;text-indent:-999em;width:20px;}.toolbar .toolbar-toggle-orientation button:before{left:0;}[dir="rtl"] .toolbar .toolbar-toggle-orientation button:before{left:auto;right:0;}[dir="rtl"] .toolbar .toolbar-toggle-orientation .toolbar-icon{padding-right:0;}.toolbar .toolbar-toggle-orientation [value="vertical"]:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/push-left.svg);}.toolbar .toolbar-toggle-orientation [value="vertical"]:hover:before,.toolbar .toolbar-toggle-orientation [value="vertical"]:focus:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/push-left.svg);}[dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/push-right.svg);}[dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:hover:before,[dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:focus:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/push-right.svg);}.toolbar .toolbar-toggle-orientation [value="horizontal"]:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/push-up.svg);}.toolbar .toolbar-toggle-orientation [value="horizontal"]:hover:before{background-image:url(http://localhost/drupal/core/misc/icons/787878/push-up.svg);}
+.toolbar-bar .toolbar-icon-user:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/person.svg);}.toolbar-bar .toolbar-icon-user:active:before,.toolbar-bar .toolbar-icon-user.active:before{background-image:url(http://localhost/drupal/core/misc/icons/ffffff/person.svg);}
+.edit-shortcuts{display:block;}.toolbar .toolbar-tray-vertical .edit-shortcuts{text-align:right;padding:1em;}[dir="rtl"] .toolbar .toolbar-tray-vertical .edit-shortcuts{text-align:left;}.toolbar .toolbar-tray-horizontal .edit-shortcuts{float:right;}[dir="rtl"] .toolbar .toolbar-tray-horizontal .edit-shortcuts{float:left;}.add-or-remove-shortcuts{display:inline-block;margin-left:0.3em;}[dir="rtl"] .add-or-remove-shortcuts{margin-left:0;margin-right:0.3em;}.add-or-remove-shortcuts .text{background:#000000;background:rgba(0,0,0,0.5);border-radius:5px;padding:0 5px;color:#ffffff;display:inline-block;margin-left:0.3em;opacity:0;-ms-transform:translateY(-12px);-webkit-transform:translateY(-12px);transform:translateY(-12px);-webkit-transition:all 200ms ease-out;transition:all 200ms ease-out;-ms-backface-visibility:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden;}[dir="rtl"] .add-or-remove-shortcuts .text{margin-left:0;margin-right:0.3em;}.add-or-remove-shortcuts a:hover .text,.add-or-remove-shortcuts a:focus .text{opacity:1;-ms-transform:translateY(-2px);-webkit-transform:translateY(-2px);transform:translateY(-2px);}
+.toolbar-bar .toolbar-icon-shortcut:before{background-image:url(http://localhost/drupal/core/misc/icons/bebebe/star.svg);}.toolbar-bar .toolbar-icon-shortcut:active:before,.toolbar-bar .toolbar-icon-shortcut.active:before{background-image:url(http://localhost/drupal/core/misc/icons/ffffff/star.svg);}.add-or-remove-shortcuts .icon{background:transparent url(http://localhost/drupal/core/modules/shortcut/images/favstar.svg) no-repeat left top;width:20px;height:20px;}[dir="rtl"] .add-or-remove-shortcuts .icon{background-image:url(http://localhost/drupal/core/modules/shortcut/images/favstar-rtl.svg);}.add-shortcut a:hover .icon,.add-shortcut a:focus .icon{background-position:-20px top;}.remove-shortcut .icon{background-position:-40px top;}.remove-shortcut a:focus .icon,.remove-shortcut a:hover .icon{background-position:-60px top;}
diff --git a/sites/default/files/css/css_4MJJSf6V8LB6qoALZhZF19-W777JCoqMyxpQiviX5U0.css.gz b/sites/default/files/css/css_4MJJSf6V8LB6qoALZhZF19-W777JCoqMyxpQiviX5U0.css.gz
new file mode 100644
index 0000000..b88eb91
--- /dev/null
+++ b/sites/default/files/css/css_4MJJSf6V8LB6qoALZhZF19-W777JCoqMyxpQiviX5U0.css.gz
@@ -0,0 +1,22 @@
+     =ێrJ3ܒ|9HH-QN˒Vѯ|b$I($ݓkK,Vn,^TiQnMӤ/eb_T~<:oAzMMVxQ-mħ	(:AlZ֝v;J[{C>;ZQ2ƴ8Ӟ)	<ivtB1*8J0){QF}o]l&l~o9_&r3qg{u/^Wvԧ( 8Qu	޽}>in>a8yWeaM#RgS:J(>N'PQ~j);ᤚM(|1B#M!H:bDYZDe&ǈrq25h!}5ڄ=k󶴏(	b<WŦ5wȆhf8"­jQv[cBå#lãkdނV}QLוO4~vgIfi(ccW^}b.T?٧~VY /23bYˀeA/}X&,}XòW7^eA/5mAYòFem"yߵWyAgiD:\W}i '%]7EW%ՖM%ey%i=OR?xX>&dA\BPF#9>0V%Cnb8,4\zH	,<4wC+iiDJ*BCغ3Q%NyBZ>sO%۶IOއ\ر"C9ᚆXyB~VO'nsDz524&Q!ʣ^Th,y8Nަz|$ѮMx9GQt#iR$I䍜%KD!ΥIIW9""7	DW2pQ*OBtmA.pv℈3Is&ԣї9=]R+DVL.Ӕ iƋ`8I+GM\.v-&x_ve:Jfq!lߎemCWK)*ZOz ׏it&<'#6d؁~&,kiGh%rao3fPM9
+N#ҕzW;ŢkPw1a0<zveW\Udpy<@	5P<zOw2?T`ubJ(ɪr"(p	y ޾"Ir1]6csRjzppu.c$-ppJp>G|DQB=$A;G}4͒ýp\헺wGҡ1
+a|H=K5EsT4(	*uXH+ah0WxI`!& GsIf}4l)hw}s^C3O
+KW'\&\iHRw{"ްOGGcRĞK;w*+ۊ!PLOB
+"Z6nV"Ȩ
+4<`b}SKiY]& :.包F[̝cy^&VB78QL.?L"ay*7)Hw&Zdrz|eGi	&P9	ZbqI0sSf'w.b2x5Ύۿ{+C@T?VZf=YfvAuuu[5My@ZQL|2CeC<Z-/ޜ.P>2Uk1Rclg;_H\D7DB4m}Ϧ)>FY7N}D"D۵-]є6_`(?|mЗ_M k `(181 ͞zk6ՆyCIۊf 8H (~R 	j5Piӗ V&P5@^X+jX#L`0@- \) 4 < 6,j4796<>4AC1A-4Kz6!a5B!hTa{VXˈRՆA~A+/ S6YmL [!1d d4qq4T3bДa4d=70LD FtRW"Q) )Q01
+j7K ۝M:FiL7iIP @_	 %$?(855_HKefFǀJ!!OOf	Gd8/R=ydDԵ(#P IE/@T	#nf'?=]Rqa1bL;iL^JyaP1P9S
+@E~2GLNЀU	OV(0FC!e桂I:T#6
+^F!	0ܩ
+2qlfqU֡):9< !j 4F(}6 l,xį(قǾ(PEel)*TvHJ䗰(0l}6)
+p
+Jgy( ,˼HGIƢ'1P
+h(JylD z4nO0aE`L1`!*D^k#ݸ<CU1(70~$Ú^ e9~C4@$LC40ů
+L3xD=eSA	cKJMHqnT2	z0Ps=*K9 Th*GcsXBt @!v=\/d ˙ 0|n:&٬ПQZ7<h?*pG!@ | 
+| ĥM#Mq2\W#Yn/3vk)
+pzOς!XO$J'O\?ӝYJ@J_PolrȚhtkϕԋMtc7PӃ|rw^?\װnn\'5oc;<D,NMBo)c(AB'LZD+-ַzY"֖گv1ޣC,9mxF"itv:f7@O{ptn+w\3:iL,ktWw-dT7σ64?}˄$	!N,<~Oh,{|F/8`i=Kk]Uy赻8E,+(|^IoS]	giG3͚&c
+Vй<5EUD#o\1QXBg)Sr`WhQTzr}ܖD"#~Jĉ2B+,+RD_;O8M*aFh	"x_; s6?inGj74<h~JkjzEc Kf`I%-DSerPB<J}o-W^gXa{DNz鼰0	6v:+\*\8_CTh%SgQwTj׼xG {`9r=]ӳ$QWEq0Tkw}sIo}'NNcU!S'a+GQNKWӯZֿFNi+PSAb׿RIg+AHt\I#g<׈dGejQHe/cR].W|5UAfU-7{7pT$ed	iӹ/}v5a4;C^Ck9_3|(mwľ>3.K=^J=N$Y@}ʨeˇg#f!WG̀YAiτݑScy/WDmCbǱȃĆ$z#ߜ'rRo[,OqeEThsphF[,7Iۯ[_u`]yJb"WAoCOЎNu4iaǼSvRϦϯEzYFD9!QʳXRݹVMU-D?^jQm6=]YQ4dc\M[#ds+|jGü
+09QAFV¼X76!Ϋӻϒ_OҬ&I=5C{h|D	̔U@~f@M^*ZI;fwY|ā&H=fh9AbM 2X0I/sZ"#NQ""@Y&6oj.	&&nev-H5`ɸ9"tǴ5_D0),ĩja姱8@`2T$oA,JGbZvWZ`6t"(~99kѠut.3oR03>}w`K*CSs.֩ϖDzjҥ,*NEVTvǧg&))ѵcL[Hʆsp8쎳KwgWai>1F}_t'/	j9$g)ѐ	[4oT RRޤ%nT0fg7\/ՅQauz"IGyrjWk&."ij@mf]9Zdrfmʻ8;G]u&޻]gnR}f|vk[t|J*KuQlPL)TuKEw⴪gQSs$롼K7gǀjFmIh')Ril'[f4kW!'`sos0=O/JA[c+1hА8ЁbRs"-iD~=*P9P%6f8M\A$v;*^<*/c(;&V6	{d!:w_pP_qDc@slHȲScTM9IFnLQEupAFv{lG/''W(PlcTMQj&.;{TṾ.y}cҺfǪ5hUv )7o8ֹ_uhq	c5,ul\m\|F/m}Qh0	0;vnw}\{5ouD4Ljc8	G&G`:0\S`+-.p1GǓk/+CgX8M֒b	,x1JN|QG&cpށX]Sţf>|
+uWeGwi
+ޯ.Sr))jN#:pDd.7&d$	YFK o־%>(j_{Å0x_NGpQ_VMQ^^~4˕vFQܐg">X#8& n̶gs!'njN3kC^[lzMU,x#TK.GuDpK}1_IX0%▼Ӽ}|4$2l-4.iQCLjJ} g`MQl28/7;8%wuiC1l;8_`6~B!r+g˱xem(/l(LKsDNtdϽruz0obԙuhSueqmyb]AI$qzI=U-GrTTbC2|']1>jȱ-Wla{GKb%ypYRtv(n?⧜ }N)~ؠCMh|~gGX!W/WxsՄl GG-:EHtxQDmvբ^Jyn uqE1u
+zWϩ~KfUqZo}\Y	:n;}m	̗u$q
+?F*{6h ahKI;v5}PdMY΀^axG!ӔPɔ~U2z)GDـ^"jٸBݎTaN1peUDvOD5Լ_O/ț*Ex(iU7U=۬$\Y'r(B7G}㿛D}QM_$adൃR)BcF;D/Ƭ	PLm"b!%@HknN<QeJL{/An5[,6uY<3Uƒ|bmVV]5w>oiXߦJS sy,kȾTM̽M  
\ No newline at end of file
diff --git a/sites/default/files/css/css_J_6EUQqXnEUgMKSm03CnL89-ZLYS4h5r38ajNo99E5U.css b/sites/default/files/css/css_J_6EUQqXnEUgMKSm03CnL89-ZLYS4h5r38ajNo99E5U.css
new file mode 100644
index 0000000..32003df
--- /dev/null
+++ b/sites/default/files/css/css_J_6EUQqXnEUgMKSm03CnL89-ZLYS4h5r38ajNo99E5U.css
@@ -0,0 +1,38 @@
+body{line-height:1.5;font-size:87.5%;word-wrap:break-word;margin:0;padding:0;border:0;}a{text-decoration:none;border-bottom:1px dotted;}a:hover,a:active,a:focus,.link:hover,.link:active,.link:focus{text-decoration:none;border-bottom-style:solid;}.field-type-image a,h1 a,h2 a,[role*=banner] a,.feed-icon,.contextual-links a,.toolbar a{border-bottom:none !important;}h1,h2,h3,h4,h5,h6{margin:1.0em 0 0.5em;font-weight:inherit;}h1{font-size:1.357em;color:#000;}h2{font-size:1.143em;}h3{font-size:1.092em;}h4{font-size:1.05em;}h5{font-size:0.889em;text-transform:uppercase;letter-spacing:0.1em;}h6{font-size:0.67em;text-transform:uppercase;letter-spacing:0.1em;}p{margin:0 0 1.2em;}del{text-decoration:line-through;}blockquote{background:#f7f7f7;border-left:1px solid #bbb;font-style:italic;margin:1.5em 10px;padding:0.5em 10px;}[dir="rtl"] blockquote{border-left:none;border-right:4px solid #afafaf;}blockquote:before{color:#bbb;content:"\201C";font-size:3em;line-height:0.1em;margin-right:0.2em;vertical-align:-.4em;}[dir="rtl"] blockquote:before{content:"\201D";}blockquote:after{color:#bbb;content:"\201D";font-size:3em;line-height:0.1em;vertical-align:-.45em;}[dir="rtl"] blockquote:after{content:"\201C";}blockquote > p:first-child{display:inline;}a.feed-icon{display:inline-block;padding:15px 0 0 0;}img{max-width:100%;height:auto;border:0;}
+body,#site-slogan,.site-slogan,#page .ui-widget,.comment-form label,.node-form label,.node-form .description{font-family:Georgia,"Times New Roman",Times,serif;}#header,#footer-wrapper,.skip-link,ul.contextual-links,ul.links,ul.primary,.pager__items,div.field-type-taxonomy-term-reference,div.messages,.node__meta,p.comment-time,table,.breadcrumb,.link{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}input,textarea,select,.form-button,a.button,button{font-family:"Lucida Grande","Lucida Sans Unicode",Verdana,sans-serif;}
+html,body,#page{height:100%;}#page-wrapper{min-height:100%;}#header div.section,#featured aside.section,#messages div.section,#main,#triptych,#footer-columns,#footer{width:100%;max-width:860px;margin-left:auto;margin-right:auto;}#header div.section{position:relative;}.region-header{float:right;margin:.5em 5px .75em;}[dir="rtl"] .region-header{float:left;}.region-secondary-menu .block-menu{width:100%;margin:0 auto;}#main-wrapper{min-height:300px;}#content .section,.sidebar .section{padding:0 15px;}#footer-wrapper{padding:35px 0 30px;}#footer-wrapper .section{box-sizing:border-box;padding:0 15px;}.region-triptych-first,.region-triptych-middle,.region-triptych-last{box-sizing:border-box;padding:0 20px 0;}.region-footer-firstcolumn,.region-footer-secondcolumn,.region-footer-thirdcolumn,.region-footer-fourthcolumn{box-sizing:border-box;padding:0 10px;}@media all and (min-width:560px) and (max-width:850px){#sidebar-first,.region-triptych-first,.region-triptych-middle,.region-triptych-last,.region-footer-firstcolumn,.region-footer-secondcolumn,.region-footer-thirdcolumn,.region-footer-fourthcolumn{display:inline;float:left;position:relative;}[dir="rtl"] #sidebar-first,[dir="rtl"] .region-triptych-first,[dir="rtl"] .region-triptych-middle,[dir="rtl"] .region-triptych-last,[dir="rtl"] .region-footer-firstcolumn,[dir="rtl"] .region-footer-secondcolumn,[dir="rtl"] .region-footer-thirdcolumn,[dir="rtl"] .region-footer-fourthcolumn{float:right;}#sidebar-first,#sidebar-second{width:50%;}#sidebar-second{margin-left:50%;}[dir="rtl"] #sidebar-second{margin-right:50%;}.layout-one-sidebar #sidebar-first,.layout-one-sidebar #sidebar-second{width:100%;}.layout-one-sidebar #sidebar-second{margin-left:0;}[dir="rtl"] .layout-one-sidebar #sidebar-second{margin-right:0;}.region-triptych-first,.region-triptych-middle,.region-triptych-last{box-sizing:border-box;padding:20px 15px 30px;width:33%;}.region-triptych-middle{padding:20px 5px 30px;}.region-footer-firstcolumn,.region-footer-secondcolumn{box-sizing:border-box;padding:0 10px;width:50%;}.region-footer-thirdcolumn,.region-footer-fourthcolumn{box-sizing:border-box;padding:0 10px;width:50%;}.region-footer-thirdcolumn{clear:both;}}@media all and (min-width:851px){#header div.section,#featured aside.section,#messages div.section,#main,#triptych,#footer-columns,#footer{max-width:1290px;}#content,#sidebar-first,#sidebar-second,.region-triptych-first,.region-triptych-middle,.region-triptych-last,.region-footer-firstcolumn,.region-footer-secondcolumn,.region-footer-thirdcolumn,.region-footer-fourthcolumn{display:inline;float:left;position:relative;}[dir="rtl"] #content,[dir="rtl"] #sidebar-first,[dir="rtl"] #sidebar-second,[dir="rtl"] .region-triptych-first,[dir="rtl"] .region-triptych-middle,[dir="rtl"] .region-triptych-last,[dir="rtl"] .region-footer-firstcolumn,[dir="rtl"] .region-footer-secondcolumn,[dir="rtl"] .region-footer-thirdcolumn,[dir="rtl"] .region-footer-fourthcolumn{float:right;}.layout-two-sidebars #content{margin-left:25%;margin-right:25%;width:50%;}.layout-one-sidebar #content{width:75%;}.layout-no-sidebars #content{width:100%;}.layout-sidebar-first #content{margin-left:25%;margin-right:0;}[dir="rtl"] .layout-sidebar-first #content{margin-left:0;margin-right:25%;}.layout-sidebar-second #content{margin-right:25%;margin-left:0;}[dir="rtl"] .layout-sidebar-second #content{margin-right:0;margin-left:25%;}#sidebar-first{width:25%;margin-left:-100%;}[dir="rtl"] #sidebar-first{margin-right:-100%;}#sidebar-second{width:25%;margin-left:-25%;clear:none;}[dir="rtl"] #sidebar-second{margin-right:-25%;}.region-triptych-first,.region-triptych-middle,.region-triptych-last{width:33%;}.region-footer-firstcolumn,.region-footer-secondcolumn,.region-footer-thirdcolumn,.region-footer-fourthcolumn{box-sizing:border-box;padding:0 10px;width:25%;}}#main{margin-top:20px;margin-bottom:40px;}
+.path-admin #content img{margin-right:15px;}.path-admin #content .simpletest-image img{margin:0;}.path-admin #admin-dblog img{margin:0 5px;}.demo-block{background:#ffff66;border:1px dotted #9f9e00;color:#000;font:90% "Lucida Grande","Lucida Sans Unicode",sans-serif;margin:5px;padding:5px;text-align:center;text-shadow:none;}#featured .demo-block{font-size:0.55em;}#header .demo-block{width:500px;}div.admin-panel{background:#fbfbfb;border:1px solid #ccc;margin:10px 0;padding:0 5px 5px;}div.admin-panel h3{margin:16px 7px;}div.admin-panel dt{border-top:1px solid #ccc;padding:7px 0 0;}div.admin-panel dd{margin:0 0 10px;}div.admin-panel .description{margin:0 0 14px 7px;}
+.book-navigation .menu{border-top:1px solid #d6d6d6;}.book-navigation .book-pager{border-bottom:1px solid #d6d6d6;border-top:1px solid #d6d6d6;margin:0;}
+.breadcrumb{font-size:0.929em;margin:0 15px;}
+.caption{margin-bottom:1.2em;}.caption > *{background:#F3F3F3;padding:0.5ex;border:1px solid #CCC;}.caption > figcaption{border:1px solid #CCC;border-top:none;padding-top:0.5ex;font-size:small;text-align:center;}.caption-pre > pre,.caption-blockquote > blockquote{margin:0;}.caption-blockquote > figcaption::before{content:"— ";}.caption-blockquote > figcaption{text-align:left;}[dir="rtl"] .caption-blockquote > figcaption{text-align:right;}
+.comment h2.title{margin-bottom:1em;}.comment .field-name-field-user-picture img{margin-left:0;}[dir="rtl"] .comment .field-name-field-user-picture img{margin-right:0;}.comment{margin-bottom:20px;display:table;vertical-align:top;}.comment .attribution{display:table-cell;padding:0 30px 0 0;vertical-align:top;overflow:hidden;}[dir="rtl"] .comment .attribution{float:right;padding:0 0 0 30px;}.comment .attribution img{margin:0;border:1px solid #d3d7d9;}.comment .attribution .username{white-space:nowrap;}.comment .submitted p{margin:4px 0;font-size:1.071em;line-height:1.2;}.comment .submitted .comment-time{font-size:0.786em;color:#68696b;}.comment .submitted .comment-permalink{font-size:0.786em;}.comment .content{font-size:0.929em;line-height:1.6;}.comment .comment-arrow{background:url(http://localhost/drupal/core/themes/bartik/images/comment-arrow.gif) no-repeat 0 center transparent;border-left:1px solid;border-right:1px solid;height:40px;margin-left:-47px;margin-top:10px;position:absolute;width:20px;}[dir="rtl"] .comment .comment-arrow{background-image:url(http://localhost/drupal/core/themes/bartik/images/comment-arrow-rtl.gif);margin-left:0;margin-right:-47px;}.comment .comment-text{padding:10px 25px;border:1px solid #d3d7d9;display:table-cell;vertical-align:top;position:relative;width:100%;}.comment .indented{margin-left:40px;}[dir="rtl"] .comment .indented{margin-right:40px;margin-left:0;}.comment ul.links{padding:0 0 0.25em 0;}.comment ul.links li{padding:0 0.5em 0 0;}[dir="rtl"] .comment ul.links li{padding:0 0 0.5em;}.comment.unpublished{margin-right:5px;padding:5px 2px 5px 5px;}[dir="rtl"] .comment.unpublished{margin-left:5px;margin-right:0;padding:5px 5px 5px 2px;}.comment.unpublished .comment-text .comment-arrow{border-left:1px solid #fff4f4;border-right:1px solid #fff4f4;}.comment-footer{display:table-row;}
+.content,.node__content{margin-top:10px;}h1#page-title{font-size:2em;line-height:1;}#content h2{margin-bottom:2px;font-size:1.429em;line-height:1.4;}.node__content{font-size:1.071em;}.node--view-mode-teaser .node__content{font-size:1em;}.node--view-mode-teaser h2{margin-top:0;padding-top:0.5em;}.node--view-mode-teaser h2 a{color:#181818;}.node--view-mode-teaser{border-bottom:1px solid #d3d7d9;margin-bottom:30px;padding-bottom:15px;}.node--view-mode-teaser.node--sticky{background:#f9f9f9;background:rgba(0,0,0,0.024);border:1px solid #d3d7d9;padding:0 15px 15px;}.node--view-mode-teaser .node__content{clear:none;line-height:1.6;}.node__meta{font-size:0.857em;color:#68696b;margin-bottom:-5px;}.node__meta .field-name-field-user-picture img{float:left;margin:1px 20px 0 0;}[dir="rtl"] .node__meta .field-name-field-user-picture img{float:right;margin-left:20px;margin-right:0;}.field-type-taxonomy-term-reference{margin:0 0 1.2em;}.field-type-taxonomy-term-reference .field-label{font-weight:normal;margin:0;padding-right:5px;}[dir="rtl"] .field-type-taxonomy-term-reference .field-label{padding-left:5px;padding-right:0;}.field-type-taxonomy-term-reference .field-label,.field-type-taxonomy-term-reference ul.links{font-size:0.8em;}.node--view-mode-teaser .field-type-taxonomy-term-reference .field-label,.node--view-mode-teaser .field-type-taxonomy-term-reference ul.links{font-size:0.821em;}.field-type-taxonomy-term-reference ul.links{padding:0;margin:0;list-style:none;}.field-type-taxonomy-term-reference ul.links li{float:left;padding:0 1em 0 0;white-space:nowrap;}[dir="rtl"] .field-type-taxonomy-term-reference ul.links li{padding:0 0 0 1em;float:right;}.node__links{text-align:right;}[dir="rtl"] .node__links{text-align:left;margin-right:236px;margin-left:0;}@media all and (min-width:560px){.node .field-type-image{float:left;margin:0 1em 0 0;}[dir="rtl"] .node .field-type-image{float:right;margin:0 0 0 1em;}.node .field-type-image + .field-type-image{clear:both;}}.field-type-image img,.field-name-field-user-picture img{margin:0 0 1em;}ul.links{color:#68696b;font-size:0.821em;}.node--unpublished,.unpublished{padding:20px 15px 0;}.node--unpublished .comment-text .comment-arrow,.unpublished .comment-text .comment-arrow{border-left:1px solid #fff4f4;border-right:1px solid #fff4f4;}.node-preview-container{background:#d1e8f5;background-image:-webkit-linear-gradient(top,#d1e8f5,#d3e8f4);background-image:linear-gradient(to bottom,#d1e8f5,#d3e8f4);font-family:Arial,sans-serif;box-shadow:0 1px 3px 1px rgba(0,0,0,0.3333);position:fixed;z-index:499;width:100%;padding:10px;}.node-preview-backlink{background-color:#419ff1;background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,-webkit-linear-gradient(top,#419ff1,#1076d5);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,linear-gradient(to bottom,#419ff1,#1076d5);border:1px solid #0048c8;border-radius:.4em;box-shadow:inset 0 1px 0 rgba(255,255,255,.4);color:#fff;font-size:0.9em;line-height:normal;margin:0;padding:4px 1em 4px 0.6em;text-shadow:1px 1px 0 rgba(0,0,0,0.5);}[dir="rtl"] .node-preview-backlink{background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,-webkit-linear-gradient(top,#419ff1,#1076d5);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,linear-gradient(to bottom,#419ff1,#1076d5);padding:4px 0.6em 4px 1em;float:right;}.node-preview-backlink:focus,.node-preview-backlink:hover{background-color:#419cf1;background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,-webkit-linear-gradient(top,#59abf3,#2a90ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,linear-gradient(to bottom,#59abf3,#2a90ef);border:1px solid #0048c8;text-decoration:none;color:#fff;}[dir="rtl"] .node-preview-backlink:focus,[dir="rtl"] .node-preview-backlink:hover{background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,-webkit-linear-gradient(top,#59abf3,#2a90ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,linear-gradient(to bottom,#59abf3,#2a90ef);}.node-preview-backlink:active{background-color:#0e69be;background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,-webkit-linear-gradient(top,#0e69be,#2a93ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,linear-gradient(to bottom,#0e69be,#2a93ef);border:1px solid #0048c8;box-shadow:inset 0 1px 2px rgba(0,0,0,.25);}.node-preview-backlink:active{background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,-webkit-linear-gradient(top,#0e69be,#2a93ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,linear-gradient(to bottom,#0e69be,#2a93ef);}.node-preview-backlink::before{content:'';width:10px;display:inline-block;}
+#header .contextual .trigger,#footer-wrapper .contextual .trigger{border:none;}
+.js .dropbutton-multiple.open .dropbutton-widget{border-radius:1em;}.js .dropbutton-widget{position:relative !important;border:1px solid #e4e4e4;border-bottom-color:#b4b4b4;border-left-color:#d2d2d2;border-right-color:#d2d2d2;background-color:#fff;background-image:-webkit-linear-gradient(top,#f3f3f3,#e8e8e8);background-image:linear-gradient(to bottom,#f3f3f3,#e8e8e8);color:#3a3a3a;cursor:pointer;text-align:center;margin:0.125em 0;border-radius:1em;}.js .dropbutton-widget:hover{border-top-color:#e4e4e4;border-bottom-color:#b4b4b4;border-left-color:#d2d2d2;border-right-color:#d2d2d2;}.js .dropbutton-widget .button{border:none;margin:0;padding:0.32em 1em;width:100%;border-radius:1em;}.js .dropbutton-widget .button:hover{border-radius:1em 0 0 1em;}[dir="rtl"].js .dropbutton-widget .button:hover{border-radius:0 1em 1em 0;}.js .dropbutton-single .dropbutton-widget .dropbutton-action a{color:#3a3a3a;}.js .dropbutton-single .dropbutton-widget .dropbutton-action a:hover{background:#dedede;border-radius:1em;}.js .dropbutton-multiple .dropbutton-widget .dropbutton-action a{color:#3a3a3a;margin-right:0;}[dir="rtl"].js .dropbutton-multiple .dropbutton-widget .dropbutton-action a{margin-left:0;}.js .dropbutton-multiple .dropbutton-widget .dropbutton-action a:hover{background:#dedede;}.js .dropbutton-multiple .dropbutton-widget .dropbutton-action:first-child a:hover{border-radius:1em 0 0 1em;}[dir="rtl"].js .dropbutton-multiple .dropbutton-widget .dropbutton-action:first-child a:hover{border-radius:0 1em 1em 0;}.js .dropbutton-multiple.open .dropbutton-widget .dropbutton-action:first-child a:hover{border-radius:1em 0 0 0;}[dir="rtl"].js .dropbutton-multiple.open .dropbutton-widget .dropbutton-action:first-child a:hover{border-radius:0 1em 0 0;}.js .dropdown-widget .publish .button{border-radius:1em 0 0 1em;}[dir="rtl"].js .dropbutton-widget .publish .button{border-radius:0 1em 1em 0;}.js .dropbutton-multiple.open .dropbutton-action:first-child a,.js .dropbutton-multiple.open .dropbutton-action:first-child .button{border-radius:1em 0 0 0;}[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:first-child a,[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:first-child .button{border-radius:0 1em 0 0;}.js .dropbutton-multiple.open .dropbutton-action:last-child a,.js .dropbutton-multiple.open .dropbutton-action:last-child .button{border-radius:0 0 0 1em;}[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:last-child a,[dir="rtl"].js .dropbutton-multiple.open .dropbutton-action:last-child .button{border-radius:0 0 1em 0;}.js .dropbutton .secondary-action{border-top-color:#ccc;}.js .dropbutton-toggle button{border-radius:0 1em 1em 0;background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#e8e8e8,#d2d2d2);background-image:linear-gradient(to bottom,#e8e8e8,#d2d2d2);}[dir="rtl"].js .dropbutton-toggle button{border-radius:1em 0 0 1em;}.js .dropbutton-toggle .button:hover{background:#ccc;}.js .dropbutton a{border-bottom:none;}.js .dropbutton a:hover{border-bottom-style:none;}
+#featured{text-align:center;font-size:1.2em;font-weight:normal;line-height:1.4;padding:20px 10px 45px;margin:0;background:#f0f0f0;background:rgba(30,50,10,0.08);border-bottom:1px solid #e7e7e7;text-shadow:1px 1px #fff;}#featured h2{font-size:1.2em;line-height:1;}#featured p{margin:0;padding:0;}
+#footer-wrapper .block .content{color:#c0c0c0;color:rgba(255,255,255,0.65);font-size:0.857em;}#footer-wrapper .block .content a{color:#fcfcfc;color:rgba(255,255,255,0.8);}#footer-wrapper .block .content a:hover,#footer-wrapper .block .content a:focus{color:#fefefe;color:rgba(255,255,255,0.95);}#footer-wrapper .block{margin:20px 0;border:1px solid #444;border-color:rgba(255,255,255,0.1);padding:10px;}#footer-columns .block-menu,#footer .block{margin:0;padding:0;border:none;}#footer .block{margin:0.5em 0;}#footer .block .content{padding:0.5em 0;margin-top:0;}#footer .block > h2{position:absolute !important;clip:rect(1px,1px,1px,1px);overflow:hidden;height:1px;}#footer .block h2{margin:0;}#footer-columns h2{border-bottom:1px solid #555;border-color:rgba(255,255,255,0.15);font-size:1em;margin-bottom:0;padding-bottom:3px;text-transform:uppercase;}#footer-columns .content{margin-top:0;}#footer-columns p{margin-top:1em;}#footer-columns .content ul{list-style:none;padding-left:0;margin-left:0;}[dir="rtl"] #footer-columns .content ul{padding-right:0;}#footer-columns .content li{list-style:none;margin:0;padding:0;}#footer-columns .content li a{display:block;border-bottom:1px solid #555;border-color:rgba(255,255,255,0.15);line-height:1.2;padding:0.8em 2px 0.8em 20px;text-indent:-15px;}[dir="rtl"] #footer-columns .content li a{padding:0.8em 20px 0.8em 2px;}#footer-columns .content li a:hover,#footer-columns .content li a:focus{background-color:#1f1f21;background-color:rgba(255,255,255,0.05);text-decoration:none;}#footer{letter-spacing:0.2px;margin-top:30px;border-top:1px solid #555;border-color:rgba(255,255,255,0.15);}#footer .region{margin-top:20px;}#footer .block{clear:both;}#footer .menu,#footer .menu li{list-style:none;margin:0;padding:0;}#footer .menu li a{float:left;padding:0 12px;display:block;border-right:1px solid #555;border-color:rgba(255,255,255,0.15);}[dir="rtl"] #footer .menu li a{float:right;border-left:1px solid #555;border-color:rgba(255,255,255,0.15);border-right:none;}#footer .menu li:first-child a{padding-left:0;}[dir="rtl"] #footer .menu li:first-child a{padding-right:0;padding-left:12px;}#footer .menu li:last-child a{padding-right:0;border-right:none;}[dir="rtl"] #footer .menu li:last-child a{padding-left:0;border-left:none;}#footer-wrapper tr.odd{background-color:transparent;}#footer-wrapper tr.even{background-color:#2c2c2c;background-color:rgba(0,0,0,0.15);}
+.password-field{margin:0;}form{margin:0;padding:0;}fieldset{margin:1em 0;}details,fieldset,.filter-wrapper{border-radius:4px;}.filter-wrapper{border-top-left-radius:0;border-top-right-radius:0;}.filter-help a{font-size:0.857em;}.filter-wrapper .form-item label{margin-right:10px;}summary{background:#dbdbdb;color:#3b3b3b;text-shadow:0 1px 0 #fff;}details summary a{color:#3b3b3b;}details summary a:hover,details summary a:active,details summary a:focus{color:#000;}details .details-description{font-style:italic;}label{display:table;font-weight:bold;}label[for]{cursor:pointer;}input{margin:2px 0;padding:4px;max-width:100%;box-sizing:border-box;}input,textarea{font-size:0.929em;}textarea{line-height:1.5;}textarea.form-textarea,select.form-select{padding:4px;}input.form-text,input.form-tel,input.form-email,input.form-url,input.form-search,input.form-file,input.form-number,input.form-color,textarea.form-textarea,select.form-select{border:1px solid #ccc;color:#3b3b3b;}input.form-submit:hover,input.form-submit:focus{background:#dedede;}.password-suggestions ul li{margin-left:1.2em;}[dir="rtl"] .password-suggestions ul li{margin-right:1.2em;margin-left:0;}.form-item label{font-size:0.929em;}.form-type-radio label,.form-type-checkbox label{margin-left:4px;}.form-type-radio .description,.form-type-checkbox .description{margin-left:2px;}.form-actions{padding-top:10px;}#edit-body{margin-bottom:2em;}.node-form .form-wrapper{margin-bottom:2em;}.contact-form #edit-name{width:75%;border-radius:4px;}.contact-form #edit-mail{width:75%;border-radius:4px;}.contact-form #edit-subject{width:75%;border-radius:4px;}.contact-form #edit-message{width:76.3%;border-top-left-radius:4px;border-top-right-radius:4px;}.form-disabled input,.form-disabled select,.form-disabled textarea,.form-button-disabled,.form-button-disabled:hover,.form-button-disabled:active,.form-button-disabled:focus{background:#ededed;border-color:#bbb;color:#717171;}.image-button-disabled,.image-button-disabled:hover,.image-button-disabled:active,.image-button-disabled:focus{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);opacity:.5;}.form-disabled label{color:#717171;}.comment-form label{float:left;font-size:0.929em;width:120px;}[dir="rtl"] .comment-form label{float:right;}.comment-form input,.comment-form .form-select{margin:0;border-radius:4px;}.comment-form .form-type-textarea label{float:none;}.comment-form .form-item,.comment-form .form-radios,.comment-form .form-type-checkbox,.comment-form .form-select{margin-bottom:10px;overflow:hidden;}.comment-form .form-type-checkbox,.comment-form .form-radios{margin-left:120px;}[dir="rtl"] .comment-form .form-type-checkbox,[dir="rtl"] .comment-form .form-radios,[dir="rtl"] .comment-form .form-item .description{margin-left:0;margin-right:120px;}.comment-form .form-type-checkbox label,.comment-form .form-radios label{float:none;margin-top:0;}.comment-form input.form-file{width:auto;}.layout-no-sidebars .comment-form .form-text{width:800px;}.layout-one-sidebar .comment-form .form-text{width:500px;}.layout-two-sidebars .comment-form .form-text{width:320px;}.comment-form .form-item .description{font-size:0.786em;line-height:1.2;margin-left:120px;}#content h2.comment-form{margin-bottom:0.5em;}.comment-form .form-textarea{border-top-left-radius:4px;border-top-right-radius:4px;}.comment-form details.filter-wrapper .details-wrapper,.comment-form .text-format-wrapper .form-item{margin-top:0;margin-bottom:0;}.filter-wrapper label{width:auto;float:none;}.filter-wrapper .form-select{min-width:120px;}.comment-form details.filter-wrapper .tips{font-size:0.786em;}#comment-body-add-more-wrapper .form-type-textarea label{margin-bottom:0.4em;}#edit-actions input{margin-right:0.6em;}[dir="rtl"] #edit-actions input{margin-left:0.6em;margin-right:0;}
+#forum .name{font-size:1.083em;}#forum .description{font-size:1em;}
+#logo,.site-logo{float:left;padding-left:5px;}[dir="rtl"] #logo,[dir="rtl"] .site-logo{padding:15px 10px 15px 15px;}#name-and-slogan,.site-branding-text{float:left;margin:0;padding:5px 10px 8px;}[dir="rtl"] #name-and-slogan,[dir="rtl"] .site-branding-text{margin:0 15px 30px 0;}#site-name,.site-name{font-size:1.6em;color:#686868;line-height:1;}h1#site-name,h1.site-name{margin:0;}#site-name a,.site-name a{font-weight:normal;}#site-slogan,.site-slogan{font-size:0.929em;margin-top:7px;word-spacing:0.1em;font-style:italic;}.region-header .block{font-size:0.857em;float:left;margin:0 10px;padding:0;}.region-header .block > h2{position:absolute !important;clip:rect(1px,1px,1px,1px);overflow:hidden;height:1px;}.region-header .block .content{margin:0;padding:0;}.region-header .block ul{margin:0;padding:0;}.region-header .block li{list-style:none;list-style-image:none;padding:0;}.region-header .form-text{background:#fefefe;background:rgba(255,255,255,0.7);border-color:#ccc;border-color:rgba(255,255,255,0.3);margin-right:2px;width:120px;}[dir="rtl"] .region-header .form-text{margin-left:2px;margin-right:0;}.region-header .form-text:hover,.region-header .form-text:active,.region-header .form-text:focus{background:#fff;background:rgba(255,255,255,0.8);}.region-header .form-required:after{background-image:url(http://localhost/drupal/core/themes/bartik/images/required.svg);}.region-header .block-menu{border:1px solid;border-color:#eee;border-color:rgba(255,255,255,0.2);padding:0;width:208px;}.region-header .block-menu li a{display:block;border-bottom:1px solid;border-bottom-color:#eee;border-bottom-color:rgba(255,255,255,0.2);padding:3px 7px;}.region-header .block-menu li a:hover,.region-header .block-menu li a:active,.region-header .block-menu li a:focus{text-decoration:none;background:rgba(255,255,255,0.15);}.region-header .block-menu li:last-child a{border-bottom:0;}.region-header #block-user-login{width:auto;}.region-header #block-user-login .content{margin-top:2px;}.region-header #block-user-login .form-item{float:left;margin:0;padding:0;}.region-header #block-user-login div.item-list,.region-header #block-user-login div.description{font-size:0.916em;margin:0;}.region-header #block-user-login div.item-list{clear:both;}.region-header #block-user-login div.description{display:inline;}.region-header #block-user-login .item-list ul{padding:0;line-height:1;}.region-header #block-user-login .item-list li{list-style:none;float:left;padding:3px 0 1px;}.region-header #block-user-login .item-list li:last-child{padding-left:0.5em;}[dir="rtl"] .region-header #block-user-login .item-list li:last-child{padding-left:0;padding-right:0.5em;}.region-header #block-user-login .form-actions{margin:4px 0 0;padding:0;clear:both;}.region-header #block-user-login input.form-submit{border:1px solid;border-color:#ccc;border-color:rgba(255,255,255,0.5);background:#eee;background:rgba(255,255,255,0.7);margin:4px 0;padding:3px 8px;}.region-header #block-user-login input.form-submit:hover,.region-header #block-user-login input.form-submit:focus{background:#fff;background:rgba(255,255,255,0.9);}.region-header #block-search-form{width:208px;}.region-header #block-search-form .form-text{width:154px;}.region-header .block-locale ul li{display:inline;padding:0 0.5em;}[dir="rtl"] #logo,[dir="rtl"] .site-logo,[dir="rtl"] #name-and-slogan,[dir="rtl"] .site-branding-text,[dir="rtl"] .region-header .block,[dir="rtl"] .region-header #block-user-login .form-item,[dir="rtl"] .region-header #block-user-login .item-list li{float:right;}
+.region-help{border:1px solid #d3d7d9;padding:0 1.5em;margin-bottom:30px;}
+.block ol,.block ul{margin:0;padding:0 0 0.25em 1em;}[dir="rtl"] .block ol,[dir="rtl"] .block ul{padding:0 1em 0.25em 0;margin-right:0;}.contextual-region .contextual .contextual-links a{font-size:0.923em;text-shadow:0 0 0 !important;}.pager .pager__items{padding:0;}.pager__item{font-size:0.929em;padding:10px 15px;}.pager__item a{display:inline-block;}.pager__item.is-active a{color:#3B3B3B;border-bottom:0;}.pager__item--first,.pager__item--previous{padding:10px 10px 10px 0;}.pager__item--ellipsis{padding:10px 0;}.pager__item--last,.pager__item--next{padding:10px 0 10px 10px;}ul.menu li{margin:0;}.region-content ul,.region-content ol{margin:1em 0;padding:0 0 0.25em 15px;}[dir="rtl"] .region-content ul,[dir="rtl"] .region-content ol{padding:0 15px 0.25em 0;}.item-list ul li{margin:0;padding:0.2em 0.5em 0 0;}[dir="rtl"] .item-list ul li{padding:0.2em 0 0 0.5em;}ul.tips{padding:0 0 0 1.25em;}[dir="rtl"] ul.tips{padding:0 1.25em 0 0;}
+#messages{padding:20px 0 5px;margin:0 auto;}.featured #messages{background:#f0f0f0;background:rgba(30,50,10,0.08);}div.messages{margin:8px 15px 8px 23px;}[dir="rtl"] div.messages{margin-right:23px;margin-left:15px;}
+.node-preview-container{background:#d1e8f5;background-image:-webkit-linear-gradient(top,#d1e8f5,#d3e8f4);background-image:linear-gradient(to bottom,#d1e8f5,#d3e8f4);font-family:Arial,sans-serif;box-shadow:0 1px 3px 1px rgba(0,0,0,0.3333);position:fixed;z-index:499;width:100%;padding:10px;}.node-preview-backlink{background-color:#419ff1;background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,-webkit-linear-gradient(top,#419ff1,#1076d5);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,linear-gradient(to bottom,#419ff1,#1076d5);border:1px solid #0048c8;border-radius:.4em;box-shadow:inset 0 1px 0 rgba(255,255,255,.4);color:#fff;font-size:0.9em;line-height:normal;margin:0;padding:4px 1em 4px 0.6em;text-shadow:1px 1px 0 rgba(0,0,0,0.5);}[dir="rtl"] .node-preview-backlink{background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,-webkit-linear-gradient(top,#419ff1,#1076d5);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,linear-gradient(to bottom,#419ff1,#1076d5);padding:4px 0.6em 4px 1em;float:right;}.node-preview-backlink:focus,.node-preview-backlink:hover{background-color:#419cf1;background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,-webkit-linear-gradient(top,#59abf3,#2a90ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,linear-gradient(to bottom,#59abf3,#2a90ef);border:1px solid #0048c8;text-decoration:none;color:#fff;}[dir="rtl"] .node-preview-backlink:focus,[dir="rtl"] .node-preview-backlink:hover{background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,-webkit-linear-gradient(top,#59abf3,#2a90ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,linear-gradient(to bottom,#59abf3,#2a90ef);}.node-preview-backlink:active{background-color:#0e69be;background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,-webkit-linear-gradient(top,#0e69be,#2a93ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-left.svg) left no-repeat,linear-gradient(to bottom,#0e69be,#2a93ef);border:1px solid #0048c8;box-shadow:inset 0 1px 2px rgba(0,0,0,.25);}.node-preview-backlink:active{background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,-webkit-linear-gradient(top,#0e69be,#2a93ef);background:url(http://localhost/drupal/core/misc/icons/000000/chevron-right.svg) right no-repeat,linear-gradient(to bottom,#0e69be,#2a93ef);}.node-preview-backlink::before{content:'';width:10px;display:inline-block;}
+.pager .pager__items{padding:0;}.pager__item{font-size:0.929em;padding:10px 15px;}.pager__item a{display:inline-block;}.pager__item.is-active a{color:#3B3B3B;border-bottom:0;}.pager__item--first,.pager__item--previous{padding:10px 10px 10px 0;}.pager__item--ellipsis{padding:10px 0;}.pager__item--last,.pager__item--next{padding:10px 0 10px 10px;}
+.region-primary-menu{clear:both;}.region-primary-menu .menu{font-size:0.929em;margin:0 5px;padding:0;text-align:left;}[dir="rtl"] .region-primary-menu .menu{text-align:right;}.region-primary-menu .menu li{float:none;list-style:none;margin:0;padding:0;height:auto;width:100%;}.region-primary-menu .menu a{color:#333;background:#ccc;background:rgba(255,255,255,0.7);float:none;display:block;text-decoration:none;text-shadow:0 1px #eee;border-radius:8px;margin:4px 0;padding:0.9em 0 0.9em 10px;}[dir="rtl"] .region-primary-menu .menu a{padding:0.9em 10px 0.9em 0;}.region-primary-menu .menu a:hover,.region-primary-menu .menu a:focus{background:#f6f6f2;background:rgba(255,255,255,0.95);}.region-primary-menu .menu a:active{background:#b3b3b3;background:rgba(255,255,255,1);}.region-primary-menu .menu li a.active{border-bottom:none;}.menu-toggle,.menu-toggle-target{display:none;}.region-primary-menu .menu-toggle-target{display:inherit;position:fixed;top:0;}.region-primary-menu .menu-toggle{display:none;}body:not(:target) .region-primary-menu .menu-toggle{color:#333;background:#ccc;background:rgba(255,255,255,0.7);float:none;font-size:0.929em;display:block;text-decoration:none;text-shadow:0 1px #eee;padding:0.9em 10px 0.9em 10px;z-index:1000;}body:not(:target) .region-primary-menu .menu-toggle:after{content:"";background:url(http://localhost/drupal/core/misc/icons/ffffff/hamburger.svg) no-repeat;background-size:contain;width:22px;height:22px;display:inline-block;position:absolute;right:10px;}[dir="rtl"] body:not(:target) .region-primary-menu .menu-toggle:after{right:initial;left:10px;}body:not(:target) .region-primary-menu .menu-toggle-target-show:target ~ .menu-toggle,body:not(:target) .region-primary-menu .menu-toggle--hide{display:none;}body:not(:target) .region-primary-menu .menu-toggle-target-show:target ~ .menu-toggle--hide{display:block;}body:not(:target) .region-primary-menu .menu li{height:0;overflow:hidden;}body:not(:target) .region-primary-menu .menu-toggle-target-show:target ~ .menu li{height:auto;overflow:visible;}
+#block-search-form{padding-bottom:7px;}#block-search-form .content{margin-top:0;}#search-form input[type="search"],#block-search-form input[type="search"]{box-sizing:border-box;padding:4px;-webkit-appearance:textfield;}#search-form input[type="search"]::-webkit-search-decoration,#block-search-form input[type="search"]::-webkit-search-decoration{display:none;}#search-form input#edit-keys,#block-search-form .form-item-search-block-form input{float:left;font-size:1em;margin-right:5px;}[dir="rtl"] #search-form input#edit-keys,[dir="rtl"] #block-search-form .form-item-search-block-form input{float:right;margin-left:5px;margin-right:0;}#search-block-form input.form-submit,#search-form input.form-submit{margin-left:0;margin-right:0;height:25px;width:34px;padding:0;cursor:pointer;text-indent:-9999px;border-color:#e4e4e4 #d2d2d2 #b4b4b4;background:#f0f0f0 url(http://localhost/drupal/core/misc/icons/505050/loupe.svg) no-repeat center;overflow:hidden;}#search-block-form input.form-submit:hover,#search-block-form input.form-submit:focus,#search-form input.form-submit:hover,#search-form input.form-submit:focus{background:#dedede url(http://localhost/drupal/core/misc/icons/424242/loupe.svg) no-repeat center;}#search-form .form-item-keys label{display:block;}ol.search-results{padding-left:0;list-style-position:inside;}.search-results li{border-bottom:1px solid #d3d7d9;padding-bottom:0.4285em;margin-bottom:0.5em;}.search-results li:last-child{border-bottom:none;padding-bottom:0;margin-bottom:1em;}.search-results .search-snippet-info{padding-left:0;}
+ol.search-results{padding-left:0;list-style-position:inside;}.search-results li{border-bottom:1px solid #d3d7d9;padding-bottom:0.4285em;margin-bottom:0.5em;}.search-results li:last-child{border-bottom:none;padding-bottom:0;margin-bottom:1em;}.search-results .search-snippet-info{padding-left:0;}
+.region-secondary-menu .menu{text-align:right;font-size:0.929em;margin:0 10px;padding:0;}[dir="rtl"] .region-secondary-menu .menu{text-align:left;}.region-secondary-menu .menu li{margin:0;padding:0;display:inline;}.region-secondary-menu .menu a{display:inline-block;padding:0.8em;}.region-secondary-menu .menu a:hover,.region-secondary-menu .menu a:focus{text-decoration:underline;}
+.shortcut-wrapper{margin:2.2em 0 1.1em 0;}.shortcut-wrapper h1#page-title{float:left;margin:0;}[dir="rtl"] .shortcut-wrapper h1#page-title{float:right;}div.add-or-remove-shortcuts{padding-top:0.9em;}
+.skip-link,.skip-link.visually-hidden.focusable{left:50%;margin-left:-5.25em;margin-top:0;position:absolute !important;width:auto;z-index:50;}.skip-link,.skip-link:link,.skip-link:visited{background:#444;background:rgba(0,0,0,0.6);color:#fff;display:inline-block;font-size:0.94em;line-height:1.7;padding:1px 10px 2px 10px;text-decoration:none;border-radius:0 0 10px 10px;}.skip-link:hover,.skip-link:active,.skip-link:focus{outline:0;}
+.sidebar .section{padding-top:10px;}.sidebar .block{border-style:solid;border-width:1px;padding:15px 20px;margin:0 0 20px;}.sidebar h2{margin:0 0 0.5em;border-bottom:1px solid #d6d6d6;padding-bottom:5px;text-shadow:0 1px 0 #fff;font-size:1.071em;line-height:1.2;}.sidebar .block .content{font-size:0.914em;line-height:1.4;}.sidebar tbody{border:none;}.sidebar tr.even,.sidebar tr.odd{background:none;border-bottom:1px solid #d6d6d6;}
+table{border:0;border-spacing:0;font-size:0.857em;margin:10px 0;width:100%;}table table{font-size:1em;}#footer-wrapper table{font-size:1em;}tr{border-bottom:1px solid #ccc;padding:0.1em 0.6em;background:#efefef;background:rgba(0,0,0,0.063);}thead > tr{border-bottom:1px solid #000;}tr.odd{background:#e4e4e4;background:rgba(0,0,0,0.105);}table tr th{background:#757575;background:rgba(0,0,0,0.51);border-bottom-style:none;}table tr th,table tr th a,table tr th a:hover,table tr th a:focus{color:#fff;font-weight:bold;}table tbody tr th{vertical-align:top;}tr td,tr th{padding:4px 9px;border:1px solid #fff;text-align:left;}[dir="rtl"] tr td,[dir="rtl"] tr th{text-align:right;}#footer-wrapper tr td,#footer-wrapper tr th{border-color:#555;border-color:rgba(255,255,255,0.18);}table ul.links{margin:0;padding:0;font-size:1em;}table ul.links li{padding:0 1em 0 0;}
+div.tabs{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;margin-bottom:20px;}.tabs ul.primary li a{color:#000;background-color:#ededed;border-color:#bbb;border-style:solid solid none solid;border-width:1px;height:1.8em;line-height:1.9;display:block;font-size:0.929em;padding:0 10px 3px;margin:0;text-shadow:0 1px 0 #fff;}.tabs ul.primary li.active a{background-color:#ffffff;border:1px solid #bbb;}@media screen and (max-width:37.5em){.tabs ul.primary{border-bottom:1px solid #bbb;}.tabs ul.primary li{display:block;margin:0;}.tabs ul.primary li a{padding:5px 10px;}.tabs ul.primary li.active a{border-bottom:none;}}@media screen and (min-width:37.5em){.tabs ul.primary{border-collapse:collapse;height:auto;line-height:normal;padding:0 3px;margin:0;overflow:hidden;border:none;background:transparent url(http://localhost/drupal/core/themes/bartik/images/tabs-border.png) repeat-x left bottom;white-space:nowrap;}.tabs ul.primary li{display:block;float:left;vertical-align:bottom;margin:0 5px 0 0;}[dir="rtl"] .tabs ul.primary li{margin:0 0 0 5px;float:right;zoom:1;}.tabs ul.primary li a{float:left;border-top-left-radius:6px;border-top-right-radius:6px;}.tabs ul.primary li.active a{border-bottom:1px solid #fff;}}.tabs ul.secondary{border-bottom:none;margin:5px;padding:0.5em 0;}.tabs ul.secondary li{border-right:1px solid #ccc;display:block;float:left;margin:0;padding:0 1em;}[dir="rtl"] .tabs ul.secondary li{border-left:1px solid #ccc;border-right:none;float:right;}.tabs ul.secondary li:last-child{border-right:none;}[dir="rtl"] .tabs ul.secondary li:last-child{border-left:none;}.tabs ul.secondary li:first-child{padding-left:0;}[dir="rtl"] .tabs ul.secondary li:first-child{padding-right:0;}.tabs ul.secondary li a{display:inline;padding:0.25em 0.5em;text-decoration:none;}.tabs ul.secondary li a.active{background:#f2f2f2;border-bottom:none;border-radius:5px;}
+ul.tips{padding:0 0 0 1.25em;}[dir="rtl"] ul.tips{padding:0 1.25em 0 0;}
+#triptych-wrapper{background-color:#f0f0f0;background:rgba(30,50,10,0.08);border-top:1px solid #e7e7e7;}#triptych h2{color:#000;font-size:1.4em;margin-bottom:0.6em;text-shadow:0 1px 0 #fff;text-align:center;line-height:1;}#triptych .block{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #dfdfdf;line-height:1.3;}#triptych .block:last-child{border-bottom:none;}#triptych .block ul li,#triptych .block ol li{list-style:none;}#triptych .block ul,#triptych .block ol{padding-left:0;}#triptych #block-user-login .form-text{width:185px;}#triptych #block-user-online p{margin-bottom:0;}#triptych #block-node-syndicate h2{overflow:hidden;width:0;height:0;}#triptych-last #block-node-syndicate{text-align:right;}#triptych #block-search-form .form-type-search input{width:185px;}#triptych-middle #block-system-powered-by{text-align:center;}#triptych-last #block-system-powered-by{text-align:right;}
+.profile .field-name-field-user-picture{float:none;}div.password-suggestions{border:0;}
+ul.vertical-tabs-list{margin:-1px 0 -1px -15em;padding:0;}
+.views-display-top .secondary .action-list{padding-left:0;}[dir="rtl"] .views-display-top .secondary .action-list{padding-left:inherit;padding-right:0;}.views-displays .region-content .secondary,.views-displays .region-content .secondary{padding-bottom:0;padding-left:0;}.views-displays .secondary a{font-size:smaller;}.views-displays .secondary > li a{border-radius:5px;}.views-displays .secondary > li.open a{border-radius:5px 5px 0 0;}.views-displays .secondary .open > a:hover,.views-displays .secondary .open > a:focus{color:#0071B3;}.views-displays .secondary input.form-submit{font-size:smaller;}.views-filterable-options .filterable-option:nth-of-type(even) .form-type-checkbox{background-color:#F9F9F9;}.views-display-column .details-wrapper{margin-top:0;}.views-display-column details summary{background:none;border:none;font-family:inherit;font-size:13px;line-height:inherit;position:relative;text-indent:0;text-shadow:none;top:3px;}.views-display-columns details{position:inherit;}.views-display-columns details summary{padding:0 0 4px 2px;}[dir="rtl"] .views-display-columns details summary{padding:0 2px 4px 0;}.views-display-columns a.fieldset-title{color:#0071B3;}.views-display-columns a.fieldset-title:hover,.views-display-columns a.fieldset-title:focus{color:#018FE2;}.views-ui-display-tab-actions .dropbutton input{color:#0071B3;}.views-ui-display-tab-actions .dropbutton input:hover,.views-ui-display-tab-actions .dropbutton input:focus{color:#018FE2;}.views-ui-display-tab-actions .dropbutton input.form-submit{margin-right:0;margin-top:0;}
+.button{background-color:#fff;background-image:-webkit-linear-gradient(top,#f3f3f3,#e8e8e8);background-image:linear-gradient(to bottom,#f3f3f3,#e8e8e8);border:1px solid #e4e4e4;border-bottom-color:#b4b4b4;border-left-color:#d2d2d2;border-right-color:#d2d2d2;color:#3a3a3a;cursor:pointer;font-size:0.929em;font-weight:normal;text-align:center;padding:0.250em 1.063em;border-radius:1em;}.button:hover,.button:active,.button:focus{text-decoration:none;color:#5a5a5a;background:#dedede;}
+@media all and (min-width:461px) and (max-width:900px){.region-header{margin:.5em 5px .75em;}#logo,.site-logo{padding:5px 0 0 5px;}[dir="rtl"] #logo,[dir="rtl"] .site-logo{padding:5px 5px 0 0;}#name-and-slogan,.site-branding-text{padding:10px 10px 8px;}.region-primary-menu .menu{margin:0 5px;padding:0;text-align:center;}.region-primary-menu .menu li,body:not(:target) .region-primary-menu .menu li{float:left;margin-right:5px;padding:0;display:inline-block;width:32.75%;height:auto;overflow:visible;}[dir="rtl"] .region-primary-menu .menu li,[dir="rtl"] body:not(:target) .region-primary-menu .menu li{float:right;margin-left:5px;margin-right:0;}.region-primary-menu .menu li:nth-child(3n){margin-right:-5px;}[dir="rtl"] .region-primary-menu .menu li:nth-child(3n){margin-left:-5px;margin-right:0;}.region-primary-menu .menu a{float:none;display:block;border-radius:8px;margin-bottom:5px;padding:0.9em 5px;}body:not(:target) .region-primary-menu .menu-toggle{display:none;}}@media all and (min-width:901px){.region-header{margin:1em 5px 1.5em;}#logo,.site-logo{padding:15px 15px 15px 10px;}[dir="rtl"] #logo,[dir="rtl"] .site-logo{padding:15px 10px 15px 15px;}#name-and-slogan,.site-branding-text{padding:26px 0 0;margin:0 0 30px 15px;}[dir="rtl"] #name-and-slogan,[dir="rtl"] .site-branding-text{margin:0 15px 30px 0;}#site-name,.site-name{font-size:1.821em;}.region-primary-menu .block-menu .menu{font-size:0.929em;margin:0;padding:0 15px;}.region-primary-menu .menu li,body:not(:target) .region-primary-menu .menu li{float:left;list-style:none;padding:0 1px;margin:0 1px;width:auto;height:auto;overflow:visible;}[dir="rtl"] .region-primary-menu .menu li,[dir="rtl"] body:not(:target) .region-primary-menu .menu li{float:right;}.region-primary-menu .menu a{float:left;padding:0.7em 0.8em;margin-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;}[dir="rtl"] .region-primary-menu .menu a{float:right;padding:0.7em 0.8em;}.featured .region-primary-menu .menu li a:active,.featured .region-primary-menu .menu li a.active{background:#f0f0f0;background:rgba(240,240,240,1.0);}body:not(:target) .region-primary-menu .menu-toggle{display:none;}}@media all and (min-width:520px){#featured{font-size:1.643em;}#featured h2{font-size:1.174em;}#triptych h2{font-size:1.714em;margin-bottom:0.9em;}#triptych .block{margin-bottom:2em;padding-bottom:2em;}}@media screen and (max-width:37.5em){th.priority-low,td.priority-low,th.priority-medium,td.priority-medium{display:none;}}@media screen and (max-width:60em){th.priority-low,td.priority-low{display:none;}}@media screen and (max-width:60em){input,textarea{font-size:1.142857143em;}}
+body{color:#3b3b3b;}.comment .comment-arrow{border-color:#ffffff;}#page,#main-wrapper,.region-primary-menu .menu li a.active,.region-primary-menu .menu li .active-trail a{background:#ffffff;}.tabs ul.primary li a.active{background-color:#ffffff;}.tabs ul.primary li.active a{background-color:#ffffff;border-bottom-color:#ffffff;}#header{background-color:#1d84c3;background-image:-webkit-linear-gradient(top,#055a8e 0%,#1d84c3 100%);background-image:linear-gradient(to bottom,#055a8e 0%,#1d84c3 100%);}a,.link{color:#0071b3;}a:hover,a:focus,.link:hover,.link:focus{color:#018fe2;}a:active,.link:active{color:#23aeff;}.sidebar .block{background-color:#f6f6f2;border-color:#f9f9f9;}#page-wrapper,#footer-wrapper{background:#292929;}.region-header,.region-header a,.region-header li a.active,#name-and-slogan,.site-branding-block,#name-and-slogan a,.site-branding-block a,.region-secondary-menu .menu li a{color:#fffeff;}[dir="rtl"] .color-form #palette{margin-left:0;margin-right:20px;}[dir="rtl"] .color-form .form-item label{float:right;}[dir="rtl"] .color-form #palette .lock{right:-20px;left:0;}
diff --git a/sites/default/files/css/css_J_6EUQqXnEUgMKSm03CnL89-ZLYS4h5r38ajNo99E5U.css.gz b/sites/default/files/css/css_J_6EUQqXnEUgMKSm03CnL89-ZLYS4h5r38ajNo99E5U.css.gz
new file mode 100644
index 0000000..f328669
--- /dev/null
+++ b/sites/default/files/css/css_J_6EUQqXnEUgMKSm03CnL89-ZLYS4h5r38ajNo99E5U.css.gz
@@ -0,0 +1,27 @@
+     =kHrW030s!iRIEv  %Y,(5u$e{N ?"0$fU?(JlKdwuuuuuuuUʟOe'іOvڷQS,ΣuvXj."Y</Oۊ>'5Zr-b_,v!W
+mam/j}l"VeXԴ%Y4UYMA<j$*v	pF$f>7QaLa2b4u[U*;e8N4Ni]I<%;Ab<{%Zr]UKJH'cZe;FO?Sp
+&>mllz8^gY\5lG?N91{A#HcoNJk9׶ۺ:>m/Zji>|qy`%ٴ8wJ2;玢bcBCݣn8h	aGsҵm"XJ rʐܶo1Jnd @]6pщkʮoOEOAwfEHf:f^?д#@(68,6Eݴz[)/C=әڦƻCѣN0=Q6/vHRv";t7+*AûhIԔSFeqw`%>ih_"62[2UN<480sky;R?; v6_w[Q\ûMU	mq2,<XcCMdƬ/O?0/A9f}{h#&RbVmD~iG,<hJ߰V%lqu|Gm*d"b8!UFaRrdMψT@,_8<~GWNR6랲{oγ}ٶ2|(vRK+HiGg+~-+`dk(tБ=$I\ee<ꁧS7	v3&ܤB;+ӡdsMʌt}ҧMYeQrT6K8k3:jS(/iP.)yF# .	4UcFywUB'~?be8
+uV&4YDG:7/<g|^fM{Q(+1w=6ձnypݎEdeifC'y8^>yʞuß<ƪfc)dt52$-* UO1Dr}BrB9bHH12x%/<.,(/mDHU 1<:1RYI\?bTtx<~h\rB5u+e0sA͜%j
+{8M|ٴTh/h2P*m)D[RфF2q4}5^ N;TD)(w5h@%v'-LX֒AKcY3ی7#WP6{ )7_#AO0:ֺ"#܋T):Ձ$:"&>d6ri~PQy\evlw(IKVZp\'QNwOX dW	S6?2tn$Wf8X̓W0H\Ⱦsc0iI-4,Knhh~Za)%pu\IbHi\;K0v1:9؎{F<222ZTm<SvǮa,=Q8īzw61(gC9ɪp>{Aw},dh磹6 k{M`7u¬D1 |wȦxRNrK͎꫎5TtG.@28v/,#+ DjKFH(n$(11vH$Ś		(]`kſRy״aZ^&:2Nwc'T{U}mA5k$F;g-잏|32oi![:']i]W},6=In(;P=R)m=[Xagh#=MǺ|m:r[5훼>͚N77\7h pSR^]A03CV_C|=}h=ᒝ&_Տ-QZuxBTh2˞=c6.4յb֤f=~@@$D<brAYk,N<C,@#i%d3źxkO6ү_)&a6Ū)l'niMYXZ;42E8ڎEC11.%]AG;%Yôvo;Z\ުAGQj4Ǵ_
+]Gʅx[2g%xT?I?q2>UzQ0՝ncO#VLCAsTyt#<i]& / KπZ
+Sq^QiH.G?RA1{zh| 7ztpKh7tPnXºq	@jBz7R/eZYbSm11`Z+kxf'O~`9<:GG-A/ QS+[$tTeW()]h4ab]1%
+">L\zgӐ8^V.S5Z<<nKkAm20:"S5UBY?լm
+fׅ~V;;'JvrN~LwM˿DLp %&X7Gr$o6hoa&ެ]]	7}D(wi0˧!0$<5RfMwʕ>4Tcd5j
+#Lq3I<SǲTRvz}<1sWПЃ ϩqp,]%wOyڌûQ6OKNOtJ)7`P/1k>]7kL\|A8x>!|Q(>,[$3:E<^0"_?ceӴ_Bkftc.,![ݓ,V&Sy];mq(I\A'Ĉ]CL0H2a#6ML<7}oDi1w}.ͺq>nCUtLWiqq*@1`YsQڃG CI1x"hdpgU#]n+@	S@*O6HI vd		(r>Chfx}tKG#A@7˴$u7|ڶN7H547ZiJڻ:~T^;NN<?>&Wѓ^ONPۇ%{a7o;>$ߡ5m֭V̄tn&*R	L73Z_T4
+ ̘(  5|{Kx>2+H+y^MIJ}qN0яKI9y`Rd:7_#ÃOA(No:'-	H-޲&lzO_@T͚})YAΗIBTӄ}Mϧ޶IeL?7#H)fȹ<c飄_w[$K9bw8}MIs\@Վ`8hї	5N_9CKL7w1s$	d
+<!G>
+I_ NT˱[,,\">#,==kɏG0K	ϿEZN"súr2M HB	4+NVvOZ@#McZdB
+WXD2Gč;Cy6P5dlVNSȏИ*P 8E	LvʷdmWynO-DޑcB㙐<rk<- NlHäʝ6+&TCL	`M}EƆ[<fLxio4-)˩l%uX Ȉ9X>!lZ)g@(Œ u]@Ja'g@j#OKdfB^p}2~tdE#v(	(C;bHxLV#x( ^ɮN~'QBl'?Vt`>dpCAx,d(4ooEZ+5SgAٜ&tbwL T*Yx%뷔B`#S:w]F;;mmN[ȡtOQn-	":KG$ckQ˛8TY<~	GSy ĆeQOkSNt^9֜dnB!eCn+s>V_*oѮ=S/gv?jM<ltir3,XivN:b[-*rB$gH&[Մ7Ծ:0āK&=,#z];0s%㫇W`ѳȩEƋ=ئ`NMbQsecqBev$L)rΜ:;48DV^6bMtxZJuK(5[,Ũ6=k"0*] :εšqENߩLMĠ9z<ѯP<3u͞:b*?;[tX"Ҹ߻?o꩒tWHHuPPTqĝ<$;ywRpMG
+@-L6~C9hIKfӏy2Mm
+ +~΍W݋77-	,\cPo'UBeBi=>Y9X [~U&<'G.Hj8šyƉv笙{#M'r:^dͽ/GUSiJ#wX?/xOAA^@#;] 숎YuACnNzяX{:IRV1Y5ܪ1Yp'PJ*=֗vrt씴uu <)1I*ӟdкmtu1I<-q,1§ig_ٌۗ;a0Lsh-;9Y;dQB
+[Q)8g5+އ8)پe.nĿ,Hۻ1q?÷(l>%#^6:o4$5#Kݪ.=SjSĩ<9[SDp0}W5³%\	+'>}ȥө@XP\4l)gi+^ݢg<@:68YXtFdIOK5
+GU]7\ ܾUi\/3a(8ۺSՍZ]1J n2pD0Ld*aHeǩ4D]fX{v.})=*2C䨢3WTrկ6kk6kk6k0C^*X\VCX@^5sm_;oK/ܙsSEo -%эx4CGϚ5zɹ
+۞I*ԏ[K7s}н@x1"~F猪`	ؖw/z9?TA+Ȯ8`VJFGQ!-%O5uUe3w}!|"eS˞ծ?WtټڕufՑ]UUf)#3DTJ5VGƂn,b@tn^ )*S=OT"j-O3Z%MJ6o~ZA[|ͽ+8b~:2D
+ͭx~c*wz7vcw~MLf,SP${@hc#ߒ&q-N>ent|0A?+;3M<m|!uVU/yytSW7=:7a-J:.Y+	r1	y-+OEv)*96Arė]DɈ}zI'Mm*cY&ͱl#ŵ3xpL_I<=ÂG
+	}~ ~7M
+JatRsowڭkDJOc>.'8*z
+@!&ZOݮ;ɳ4Vy̒q  P!.̣nɎ5Rq8bx[F}v9"?`At'&mSqUsޔj4r`03%P</hN<ĊzyV6R,e3~Hn(G2בVyG pWF^+)S'MP@pO pD-=0ԗwsb:q^:<FމL!|e7PNHfB+!+UPs7G8]#OJ_l60G۠1n'I{HY2E-0eoijC |2KZgRSY
+$K_ٛ<yyi$k-Ot=ݞdPnG=j!B`2+Y@oآGKʘAs{R#ȑ܆wh98n}Y "1@GJ_-}1<X˫GK+I.<cџ;X?9sd+Y\ͺ&d/YYlɸ?-@hE :0;{#]Ү3/@[.whn\"	ag^8 iȝ-P'{MG5c@/c*o l<۳مdH񗮮ޕOt46;qY93 Ͱ_cK6>H^wUay<=)=cf>KWpt^-z^okZrI`#LaR[l E;kYXByofi>Ƃ?9cyz\6WuW]kzte|30Qp֩LRv.Vy<s:]+nH.-l-2PhhGq0zOjGgGnֽUuѡX3ALvW\L赛
+<SI(B͔ļH>6A a^r4XA(pxѓe6d:z+VX?SI%i`=Do;;됢F6ɇF8?mDj[vU>q_3Ͻ+!c}Ldec+Iq`d$s*^k.erQsG?0,;:_cDKg*NBc"3<fH_Ew,V)c՜/y=}oFcщlrthuZsxrJʮo.(ζ8V$sk;m+	/u>!$P}7+'3H4qq;
+V5*~+_(yJ8(?lbݙ:^fm'V}15bW6xV4J^Wvzu<ve^Tix<I37W5O\.H;ϘNhqE=R$B:AQx.m8k-C(_#~G:Xp^E ߙPY΄'tVp$V$	_f4q)叜Mer:NȶN-;6
+a{CE#-ϒ^{K%>֣CrÝ9	T.pV|J+2_cUxsܺL1YݒU4ky*{p{>5+rvܺ?N7`t= yel#; WtWLPWnȈUS	#n7pU6epf9H&exX Lef-ϩ6"	YJ@S/OpfCP~N^p[}Τ}w\ϵ|&[޵A  
\ No newline at end of file
diff --git a/sites/default/files/css/css_ThUn5DDTasQHIMv1MQAwyMj14lRkcVK5IsdlQeJkApY.css b/sites/default/files/css/css_ThUn5DDTasQHIMv1MQAwyMj14lRkcVK5IsdlQeJkApY.css
new file mode 100644
index 0000000..378a55f
--- /dev/null
+++ b/sites/default/files/css/css_ThUn5DDTasQHIMv1MQAwyMj14lRkcVK5IsdlQeJkApY.css
@@ -0,0 +1 @@
+body,input,textarea,select{color:#000;background:none;}body.two-sidebars,body.sidebar-first,body.sidebar-second,body{width:640px;}#sidebar-first,#sidebar-second,.navigation,#toolbar,#footer-wrapper,.tabs,.add-or-remove-shortcuts{display:none;}.one-sidebar #content,.two-sidebars #content{width:100%;}#triptych-wrapper{width:960px;margin:0;padding:0;border:none;}#triptych-first,#triptych-middle,#triptych-last{width:250px;}#comments .title,#comments form,.comment-forbidden{display:none;}
diff --git a/sites/default/files/css/css_ThUn5DDTasQHIMv1MQAwyMj14lRkcVK5IsdlQeJkApY.css.gz b/sites/default/files/css/css_ThUn5DDTasQHIMv1MQAwyMj14lRkcVK5IsdlQeJkApY.css.gz
new file mode 100644
index 0000000..f24c927
--- /dev/null
+++ b/sites/default/files/css/css_ThUn5DDTasQHIMv1MQAwyMj14lRkcVK5IsdlQeJkApY.css.gz
@@ -0,0 +1 @@
+     ]Pn +"YUب6u+ʿ$sA,3E̂Ć#8>;FkY{96bbL2P7"yyKep;/?t:uf+j*caıDs@d I	H(66eH`#< 9}i4kͮyϽk	Cdik7_KRxuݷN">Vw/7䁪ퟺ})x??b4I;ŁiBY- >~Z  
\ No newline at end of file
diff --git a/sites/default/files/css/css__K-gVZPY74ytxAjKV7a_eHsRtphnVeGBrLjLn_OaQjw.css b/sites/default/files/css/css__K-gVZPY74ytxAjKV7a_eHsRtphnVeGBrLjLn_OaQjw.css
new file mode 100644
index 0000000..6662003
--- /dev/null
+++ b/sites/default/files/css/css__K-gVZPY74ytxAjKV7a_eHsRtphnVeGBrLjLn_OaQjw.css
@@ -0,0 +1,3 @@
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}input{line-height:normal;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}
+.js input.form-autocomplete{background-image:url(http://localhost/drupal/core/misc/throbber-inactive.png);background-position:100% center;background-repeat:no-repeat;}.js[dir="rtl"] input.form-autocomplete{background-position:0% center;}.js input.form-autocomplete.ui-autocomplete-loading{background-image:url(http://localhost/drupal/core/misc/throbber-active.gif);background-position:100% center;}.js[dir="rtl"] input.form-autocomplete.ui-autocomplete-loading{background-position:0% center;}.fieldgroup{border-width:0;padding:0;}.js details:not([open]) .details-wrapper{display:none;}.form-textarea-wrapper textarea{display:block;margin:0;width:100%;box-sizing:border-box;}.resize-none{resize:none;}.resize-vertical{resize:vertical;min-height:2em;}.resize-horizontal{resize:horizontal;max-width:100%;}.resize-both{resize:both;max-width:100%;min-height:2em;}body.drag{cursor:move;}tr.region-title{font-weight:bold;}tr.region-message{color:#999;}tr.region-populated{display:none;}tr.add-new .tabledrag-changed{display:none;}.draggable a.tabledrag-handle{cursor:move;float:left;height:1.7em;margin-left:-1em;overflow:hidden;text-decoration:none;}[dir="rtl"] .draggable a.tabledrag-handle{float:right;margin-right:-1em;margin-left:0;}a.tabledrag-handle:hover{text-decoration:none;}a.tabledrag-handle .handle{background:url(http://localhost/drupal/core/misc/icons/787878/move.svg) no-repeat 6px 7px;height:14px;margin:-0.4em 0.5em 0;padding:0.42em 0.5em;width:14px;}a.tabledrag-handle:hover .handle,a.tabledrag-handle:focus .handle{background-image:url(http://localhost/drupal/core/misc/icons/000000/move.svg);}.touch .draggable td{padding:0 10px;}.touch .draggable .menu-item__link{display:inline-block;padding:10px 0;}.touch a.tabledrag-handle{height:44px;width:40px;}.touch a.tabledrag-handle .handle{background-position:40% 19px;height:21px;}.touch .draggable.drag a.tabledrag-handle .handle{background-position:50% -32px;}div.indentation{float:left;height:1.7em;margin:-0.4em 0.2em -0.4em -0.4em;padding:0.42em 0 0.42em 0.6em;width:20px;}[dir="rtl"] div.indentation{float:right;margin:-0.4em -0.4em -0.4em 0.2em;padding:0.42em 0.6em 0.42em 0;}div.tree-child{background:url(http://localhost/drupal/core/misc/tree.png) no-repeat 11px center;}div.tree-child-last{background:url(http://localhost/drupal/core/misc/tree-bottom.png) no-repeat 11px center;}[dir="rtl"] div.tree-child,[dir="rtl"] div.tree-child-last{background-position:-65px center;}div.tree-child-horizontal{background:url(http://localhost/drupal/core/misc/tree.png) no-repeat -11px center;}.tabledrag-toggle-weight-wrapper{text-align:right;}[dir="rtl"] .tabledrag-toggle-weight-wrapper{text-align:left;}table.sticky-header{background-color:#fff;margin-top:0;z-index:500;top:0;}.progress{position:relative;}.progress__track{background-color:#fff;border:1px solid;margin-top:5px;max-width:100%;min-width:100px;height:16px;}.progress__bar{background-color:#000;height:1.5em;min-width:3%;max-width:100%;}.progress__description,.progress__percentage{color:#555;overflow:hidden;font-size:.875em;margin-top:0.2em;}.progress__description{float:left;}[dir="rtl"] .progress__description{float:right;}.progress__percentage{float:right;}[dir="rtl"] .progress__percentage{float:left;}.progress--small .progress__track{height:7px;}.progress--small .progress__bar{height:7px;background-size:20px 20px;}.ajax-progress{display:inline-block;padding:1px 5px 2px 5px;}[dir="rtl"] .ajax-progress{float:right;}.ajax-progress-throbber .throbber{background:transparent url(http://localhost/drupal/core/misc/throbber-active.gif) no-repeat 0px center;display:inline;padding:1px 5px 2px;}.ajax-progress-throbber .message{display:inline;padding:1px 5px 2px;}tr .ajax-progress-throbber .throbber{margin:0 2px;}.ajax-progress-bar{width:16em;}.ajax-progress-fullscreen{left:49%;position:fixed;top:48.5%;z-index:1000;background-color:#232323;background-image:url(http://localhost/drupal/core/misc/loading-small.gif);background-position:center center;background-repeat:no-repeat;border-radius:7px;height:24px;opacity:0.9;padding:4px;width:24px;}.container-inline div,.container-inline label{display:inline;}.container-inline .details-wrapper{display:block;}.nowrap{white-space:nowrap;}.js .js-hide{display:none;}.js-show{display:none;}.js .js-show{display:block;}.hidden{display:none;}.visually-hidden{position:absolute !important;clip:rect(1px,1px,1px,1px);overflow:hidden;height:1px;width:1px;word-wrap:normal;}.visually-hidden.focusable:active,.visually-hidden.focusable:focus{position:static !important;clip:auto;overflow:visible;height:auto;width:auto;}.invisible{visibility:hidden;}.clearfix:after{content:"";display:table;clear:both;}.text-align-left{text-align:left;}.text-align-right{text-align:right;}.text-align-center{text-align:center;}.text-align-justify{text-align:justify;}.align-left{float:left;}.align-right{float:right;}.align-center{display:block;margin-left:auto;margin-right:auto;}.reset-appearance{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0 none;background:transparent;padding:0;margin:0;line-height:inherit;}.position-container{position:relative;}
+.node--unpublished{background-color:#fff4f4;}th.active img{display:inline;}td.active{background-color:#ddd;}.item-list .title{font-weight:bold;}.item-list ul{margin:0 0 0.75em 0;padding:0;}.item-list ul li{margin:0 0 0.25em 1.5em;padding:0;}[dir="rtl"] .item-list ul li{margin:0 1.5em 0.25em 0;}.form-item,.form-actions{margin-top:1em;margin-bottom:1em;}tr.odd .form-item,tr.even .form-item{margin-top:0;margin-bottom:0;white-space:nowrap;}.form-composite > .fieldset-wrapper > .description,.form-item .description{font-size:0.85em;}label.option{display:inline;font-weight:normal;}.form-composite > legend,.label{display:inline;font-size:inherit;font-weight:bold;margin:0;padding:0;}.form-checkboxes .form-item,.form-radios .form-item{margin-top:0.4em;margin-bottom:0.4em;}.form-type-radio .description,.form-type-checkbox .description{margin-left:2.4em;}.marker{color:#e00;}.form-required:after{content:'';vertical-align:super;display:inline-block;background-image:url(http://localhost/drupal/core/misc/icons/ee0000/required.svg);background-repeat:no-repeat;background-size:6px 6px;width:6px;height:6px;margin:0 0.3em;}abbr.tabledrag-changed,abbr.ajax-changed{border-bottom:none;}.form-item input.error,.form-item textarea.error,.form-item select.error{border:2px solid red;}.button,.image-button{margin-left:1em;margin-right:1em;}.button:first-child,.image-button:first-child{margin-left:0;margin-right:0;}.container-inline label:after,.container-inline .label:after{content:':';}.form-type-radios .container-inline label:after{content:'';}.form-type-radios .container-inline .form-type-radio{margin:0 1em;}.container-inline .form-actions,.container-inline.form-actions{margin-top:0;margin-bottom:0;}.more-link{display:block;text-align:right;}[dir="rtl"] .more-link{text-align:left;}.more-help-link{text-align:right;}[dir="rtl"] .more-help-link{text-align:left;}.more-help-link a{background:url(http://localhost/drupal/core/misc/help.png) 0 50% no-repeat;padding:1px 0 1px 20px;}[dir="rtl"] .more-help-link a{background-position:100% 50%;padding:1px 20px 1px 0;}.pager__items{clear:both;text-align:center;}.pager__item{background-image:none;display:inline;list-style-type:none;padding:0.5em;}.pager__item.is-active{font-weight:bold;}button.link{background:transparent;border:0;cursor:pointer;margin:0;padding:0;font-size:1em;}label button.link{font-weight:bold;}.ui-autocomplete li.ui-menu-item a.ui-state-focus,.autocomplete li.ui-menu-item a.ui-state-hover{background:#0072b9;color:#fff;margin:0;}details{border:1px solid #ccc;margin-top:1em;margin-bottom:1em;}details > .details-wrapper{padding:0.5em 1.5em;}summary{cursor:pointer;padding:0.2em 0.5em;}.collapse-processed > summary{padding-left:0.5em;padding-right:0.5em;}.collapse-processed > summary:before{background:url(http://localhost/drupal/core/misc/menu-expanded.png) 0px 100% no-repeat;content:"";float:left;height:1em;width:1em;}[dir="rtl"] .collapse-processed > summary:before{background-position:100% 100%;float:right;}.collapse-processed:not([open]) > summary:before{background-position:25% 35%;-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transform:rotate(-90deg);}[dir="rtl"] .collapse-processed:not([open]) > summary:before{background-position:75% 35%;-ms-transform:rotate(90deg);-webkit-transform:rotate(90deg);transform:rotate(90deg);}tr.drag{background-color:#fffff0;}tr.drag-previous{background-color:#ffd;}body div.tabledrag-changed-warning{margin-bottom:0.5em;}tr.selected td{background:#ffc;}td.checkbox,th.checkbox{text-align:center;}.progress__track{border-color:#b3b3b3;border-radius:10em;background-color:#f2f1eb;background-image:-webkit-linear-gradient(#e7e7df,#f0f0f0);background-image:linear-gradient(#e7e7df,#f0f0f0);box-shadow:inset 0 1px 3px hsla(0,0%,0%,0.16);}.progress__bar{border:1px #07629a solid;background:#057ec9;background-image:-webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15)),-webkit-linear-gradient(left top,#0094f0 0%,#0094f0 25%,#007ecc 25%,#007ecc 50%,#0094f0 50%,#0094f0 75%,#0094f0 100%);background-image:-webkit-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,0.15)),-webkit-linear-gradient(left top,#0094f0 0%,#0094f0 25%,#007ecc 25%,#007ecc 50%,#0094f0 50%,#0094f0 75%,#0094f0 100%);background-image:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,0.15)),linear-gradient(to right bottom,#0094f0 0%,#0094f0 25%,#007ecc 25%,#007ecc 50%,#0094f0 50%,#0094f0 75%,#0094f0 100%);background-size:40px 40px;margin-top:-1px;margin-left:-1px;padding:0 1px;height:16px;border-radius:10em;-webkit-animation:animate-stripes 3s linear infinite;-moz-animation:animate-stripes 3s linear infinite;-webkit-transition:width 0.5s ease-out;transition:width 0.5s ease-out;}@-webkit-keyframes animate-stripes{0%{background-position:0 0,0 0;}100%{background-position:0 0,-80px 0;}}@-ms-keyframes animate-stripes{0%{background-position:0 0,0 0;}100%{background-position:0 0,-80px 0;}}@keyframes animate-stripes{0%{background-position:0 0,0 0;}100%{background-position:0 0,-80px 0;}}ul.menu{list-style:none outside;margin-left:1em;padding:0;text-align:left;}[dir="rtl"] ul.menu{margin-left:0;margin-right:1em;text-align:right;}.menu .expanded{list-style-image:url(http://localhost/drupal/core/misc/menu-expanded.png);list-style-type:circle;}.menu .collapsed{list-style-image:url(http://localhost/drupal/core/misc/menu-collapsed.png);list-style-type:disc;}[dir="rtl"] .menu .collapsed{list-style-image:url(http://localhost/drupal/core/misc/menu-collapsed-rtl.png);}ul.menu li{padding-top:0.2em;margin:0;}ul.menu a.active{color:#000;}ul.inline,ul.links.inline{display:inline;padding-left:0;}ul.inline li{display:inline;list-style-type:none;padding:0 0.5em;}ul.links a.active{color:#000;}.breadcrumb{padding-bottom:0.5em;}.breadcrumb ol{margin:0;padding:0;}[dir="rtl"] .breadcrumb ol{margin-right:0;}.breadcrumb li{display:inline;list-style-type:none;margin:0;padding:0;}.breadcrumb li:before{content:' \BB ';}.breadcrumb li:first-child:before{content:none;}div.tabs{margin:1em 0;}ul.tabs{list-style:none;margin:0 0 0.5em;padding:0;}.tabs > li{display:inline-block;margin-right:0.3em;}[dir="rtl"] .tabs > li{margin-left:0.3em;margin-right:0;}.tabs a{display:block;padding:0.2em 1em;text-decoration:none;}.tabs a.active{background-color:#eee;}.tabs a:focus,.tabs a:hover{background-color:#f5f5f5;}.action-links{list-style:none;padding:0;margin:1em 0;}[dir="rtl"] .action-links{margin-right:0;}.action-links li{display:inline-block;margin:0 0.3em;}.action-links li:first-child{margin-left:0;}[dir="rtl"] .action-links li:first-child{margin-left:0.3em;margin-right:0;}.button-action{display:inline-block;line-height:160%;padding:0.2em 0.5em 0.3em;text-decoration:none;}.button-action:before{content:'+';font-weight:900;margin-left:-0.1em;padding-right:0.2em;}[dir="rtl"] .button-action:before{margin-left:0;margin-right:-0.1em;padding-left:0.2em;padding-right:0;}.messages{background:no-repeat 10px 17px;border:1px solid;border-width:1px 1px 1px 0;border-radius:2px;padding:15px 20px 15px 35px;word-wrap:break-word;overflow-wrap:break-word;}[dir="rtl"] .messages{border-width:1px 0 1px 1px;background-position:right 10px top 17px;padding-left:20px;padding-right:35px;text-align:right;}.messages + .messages{margin-top:1.538em;}.messages__list{list-style:none;padding:0;margin:0;}.messages__item + .messages__item{margin-top:0.769em;}.messages--status{border-color:#c9e1bd #c9e1bd #c9e1bd transparent;background-image:url(http://localhost/drupal/core/misc/icons/73b355/check.svg);box-shadow:-8px 0 0 #77b259;}[dir="rtl"] .messages--status{border-color:#c9e1bd transparent #c9e1bd #c9e1bd;box-shadow:8px 0 0 #77b259;margin-left:0;}.messages--status{color:#325e1c;}.messages--status{background-color:#f3faef;}.messages--warning{background-image:url(http://localhost/drupal/core/misc/icons/e29700/warning.svg);border-color:#f4daa6 #f4daa6 #f4daa6 transparent;box-shadow:-8px 0 0 #e09600;}[dir="rtl"] .messages--warning{border-color:#f4daa6 transparent #f4daa6 #f4daa6;box-shadow:8px 0 0 #e09600;}.messages--warning,.warning{color:#734c00;}.messages--warning,table tr.warning,table tr.warning:hover{background-color:#fdf8ed;}.messages--error{background-image:url(http://localhost/drupal/core/misc/icons/ea2800/error.svg);border-color:#f9c9bf #f9c9bf #f9c9bf transparent;box-shadow:-8px 0 0 #e62600;}[dir="rtl"] .messages--error{border-color:#f9c9bf transparent #f9c9bf #f9c9bf;box-shadow:8px 0 0 #e62600;}.messages--error,.error{color:#a51b00;}.messages--error,table tr.error,table tr.error:hover{background-color:#fcf4f2;}.messages--error p.error{color:#a51b00;}.field .field-label{font-weight:bold;}.field-label-inline .field-label,.field-label-inline .field-items{float:left;margin-right:0.5em;}[dir="rtl"] .field-label-inline .field-label,[dir="rtl"] .field-label-inline .field-items{float:right;margin-left:0.5em;margin-right:0;}.field-label-inline .field-label::after{content:':';}form .field-multiple-table{margin:0;}form .field-multiple-table .field-multiple-drag{width:30px;padding-right:0;}[dir="rtl"] form .field-multiple-table .field-multiple-drag{padding-left:0;}form .field-multiple-table .field-multiple-drag .tabledrag-handle{padding-right:.5em;}[dir="rtl"] form .field-multiple-table .field-multiple-drag .tabledrag-handle{padding-left:.5em;}form .field-add-more-submit{margin:.5em 0 0;}
diff --git a/sites/default/files/css/css__K-gVZPY74ytxAjKV7a_eHsRtphnVeGBrLjLn_OaQjw.css.gz b/sites/default/files/css/css__K-gVZPY74ytxAjKV7a_eHsRtphnVeGBrLjLn_OaQjw.css.gz
new file mode 100644
index 0000000..c952326
--- /dev/null
+++ b/sites/default/files/css/css__K-gVZPY74ytxAjKV7a_eHsRtphnVeGBrLjLn_OaQjw.css.gz
@@ -0,0 +1,15 @@
+     r6=_)׌+$MɖdQ٩)%#*v".v&y(@8sCTSY=]YSyE\'(}O;u^I7YECҗ9s:â<dʦǱa4#%9~fl)&aO3܏'圗}[t_5 	3R?>lѾc@˺*k"UDP{S3u3|c_9`<\۷c5_yO\JCmIGzRz970ݷ*o:`Go99iTЕ5o퇗 vǅhKzI!=t?E˚I T6=
+՚7cbU%
+0(	>/jh4JӟiA?t,)ٽr:%30;G3]ևe¦L$&U84׬%砄4ɩ5@FCGXiu;a7` !Z(9sLu`STe_+pǏrMw+@ F˷ᥥ?}F06:Xm S	g-HRX2Iv)L wj<Q9-XrT2IM6QYB@}қ9
+X`ϺRHP{\'U/l,bP=bE}[֑1L k!|v_%[?f*^"(C:*ߢg4k:ŷ$lQR<*sGJl59ŷ+zɿ7T@ܫ<*-_ Tf+4;сBx֐sۈl#D5Q؅&'rU_Ц77Mލ-nTp=h"ߝ>\ٔǭ>(3\ 4{2x;=+x ~	x\{h.2W&Oe>M=D&0MuC# )XJPKm/ kF̟%J#c +w'pjai2 iϑFQh# 6;r{	L	 f>V'?A>ymӎ-$ )@"H< P@4`́6pH`-,⍊"H#=츉u5LG!Jpl:zz"0S@ůfsdYuXcӪoq "c+Mn)eJC ^<[L"Af̎$|g]D1*!¦%Y0xtEuc~'ys$\xW>:
+n1bxǸT\IWP5r&P
+V
+dϏ_7@fOY*͐MDU_DfmBw4MJW+6kM[p؃&O*.Ù&X5ac~xxyF⊢.dGxk,+3g0uh0u+旝]j.|rO|dttWn1M>J^Қ(F-2XVξ;U{||y<E; S4@ft9
+"X(p$,X1dFhx)wc;EM	F/<s"SF_$0-4S|yd|@Q3o/Ȧm(Ba+kfw1V%w۫dX4g>>^])ϲ@tvyݟDFƕp>xO,2",}KuLb1K*YbBm*t[+-O|P;Vx	*؍yrKbX#p%݊d>h6@aUeH6|kǱJW˞@>gY ,_`O=fC/+9Y~	$ș}nYEIF,
+pOA-|xQY
+n:s|BᦠMDe񢃉&	9FaybPKF#ekt8[MdQ~~*ugYƇQP6֚(vWe?r+cخbEg<Q!  ~մ)$%+8J`y्19YBP؁bւ+,!p@Z#$;'ecBoA,+֪j-Tv-yݖu)aT&Juis,#voYaOMb)fĳPMDeGs~bici""#!0c=k6-2OjdȚY'Q^[fKNWdYfv{$o.Kux,ΌbDyKS3iEqYv  z٬T%Okݓ_\%;4ykhΒ1efpRf @#R-j4PXߑV0;;]@>^xX&,PϪ*_@AuSx!j-qPb>_defǭ_+aaJ'Yy'T3yDKպ,^R'V &UbO0~/8?$fz|GY{;Dy`&wpD4*QY\`Xu9"IY=_'nsK6Bnzh
+a}ZF)O'4Ha2RV4w>]s/WWSvkMr
+р70>No;G"qvRMyǲS_^ct5ۡJd<Rr\ƒ*t~go$sHϒł8S29ؿ~ɋsp$yd1bc_I\-OsY/DlUÞϵ/VXN {{W@<|Ɍ?oV3%T\g$srM?_h1]1pLcTx=Q 48 I*B	Qo݅r˶5p8~灾929W
+@"{g!{q 0c1qBcN)bur}^>q6OQ4>TkpC+'.~ŏΛL)m)`DQ30"%c2~<^p4*%YV.Ѻ߹"o)јF"8`ZUU"
+p!VwF*SXH-&cx;!.A:\e]M3S¹L'F)R7;U
+?xDC297o0{*jڣ.i8/&^53?abz\,cF4~bIb7yr^,6+kb'n.oT]2.G/DQLX>ݮSa [ޏ$65{lub5C[Xoi~Hs^o[hbae/%6[m=Vo3&HW3)cxf_3"L~ZFer\Ee~oBVV1~i$ɍKQEqo;M$廢އ`x˝?%"as{̀t5oyqίI1OɆ,A6l&dv_ےY//IF?Pr1"0ٳPNVL	:/+tA;Ӌ{@mj/ Vm+g7~;u7Լ;ub-WBj([ٯ}fieE`q3%-vNs<WF3GO3bw<k[L@  
\ No newline at end of file
diff --git a/sites/default/files/css/css_u3AA2-8JfM2515T0M21l-ewQSQVXt6LKkhC2oFYZXf0.css b/sites/default/files/css/css_u3AA2-8JfM2515T0M21l-ewQSQVXt6LKkhC2oFYZXf0.css
new file mode 100644
index 0000000..ed01fc3
--- /dev/null
+++ b/sites/default/files/css/css_u3AA2-8JfM2515T0M21l-ewQSQVXt6LKkhC2oFYZXf0.css
@@ -0,0 +1 @@
+.toolbar .toolbar-bar .tour-toolbar-tab.toolbar-tab{float:right;}[dir="rtl"] .toolbar .toolbar-bar .tour-toolbar-tab.toolbar-tab{float:left;}.toolbar .tour-toolbar-tab button{padding-bottom:1em;padding-top:1em;color:#fff;font-weight:bold;}.toolbar .tour-toolbar-tab button.active{background-image:-webkit-linear-gradient(rgba(255,255,255,0.25) 20%,transparent 200%);background-image:linear-gradient(rgba(255,255,255,0.25) 20%,transparent 200%);}.tour-toolbar-tab button:focus{outline:thin dotted;}.toolbar .tour-toolbar-tab.toolbar-tab.hidden{display:none;}.tour-progress{position:absolute;bottom:0;right:0;}[dir="rtl"] .tour-progress{right:auto;left:0;}.toolbar .tour-toolbar-tab.toolbar-tab.hidden{display:none;}#joyRideTipContent{display:none;}.joyride-tip-guide{position:absolute;display:none;background:#fff;width:300px;z-index:101;top:0;left:0;padding:1em 1em 1.5em 1.5em;}.joyride-content-wrapper{position:relative;padding-right:1em;}@media only screen and (max-width:767px){.joyride-tip-guide{width:85%;left:2.5%;}}.joyride-tip-guide .joyride-nub{display:block;position:absolute;left:22px;width:0;height:0;}.joyride-tip-guide .joyride-nub.top{top:-28px;bottom:auto;}.joyride-tip-guide .joyride-nub.bottom{bottom:-28px;}.joyride-tip-guide .joyride-nub.right{top:22px;bottom:auto;left:auto;right:-28px;}.joyride-tip-guide .joyride-nub.left{top:22px;left:-28px;right:auto;bottom:auto;}.joyride-tip-guide .joyride-nub.top-right{top:-28px;bottom:auto;left:auto;right:28px;}.joyride-tip-guide p{margin:0 0 1.4em;}.joyride-timer-indicator-wrap{width:50px;height:3px;position:absolute;right:17px;bottom:16px;}.joyride-timer-indicator{display:block;width:0;height:inherit;}.joyride-close-tip{position:absolute;right:0;top:0;}[dir="rtl"] .joyride-close-tip{left:0;}.joyride-modal-bg{position:fixed;height:100%;width:100%;z-index:100;display:none;top:0;left:0;cursor:pointer;}.joyride-expose-wrapper{position:absolute;z-index:102;}.joyride-expose-cover{position:absolute;z-index:10000;top:0;left:0;}
diff --git a/sites/default/files/css/css_u3AA2-8JfM2515T0M21l-ewQSQVXt6LKkhC2oFYZXf0.css.gz b/sites/default/files/css/css_u3AA2-8JfM2515T0M21l-ewQSQVXt6LKkhC2oFYZXf0.css.gz
new file mode 100644
index 0000000..00587c3
--- /dev/null
+++ b/sites/default/files/css/css_u3AA2-8JfM2515T0M21l-ewQSQVXt6LKkhC2oFYZXf0.css.gz
@@ -0,0 +1,4 @@
+     U]o0}߯@*RhҤio6īiiH${ (ZCxw bRͫ).'\S1 ;E(B9aXS @eYf%H	Ms;Ĥ0u9)*פbɟAKf&3iud'(WF(2;W7قSlגHK(ڦ8l{ӶN)dJlOi4kNAۑm7=֐@VF_-өz@pF/d0
+~rj6jC\RKWx9!ޏ΋=PhRLJ49P&QN"b5fLFD&;=?MB*Lb^Itm~`.xʖ
+\Gن?m;:W9<Z|ooа1,O7i(T6zXCyY.4\T2UW]q[}yig_^{Yo0*[ݟX&\nfz04>qwTW5P"P^%;ײjχ	kav܋V7FZOvc;,1?Y
+x>×0#  
\ No newline at end of file
diff --git a/sites/default/files/css/css_yhahdszyuk8uBhi_kZsVgpp1Xtf1VVjbrkORDR3qqs8.css b/sites/default/files/css/css_yhahdszyuk8uBhi_kZsVgpp1Xtf1VVjbrkORDR3qqs8.css
new file mode 100644
index 0000000..365fa61
--- /dev/null
+++ b/sites/default/files/css/css_yhahdszyuk8uBhi_kZsVgpp1Xtf1VVjbrkORDR3qqs8.css
@@ -0,0 +1,8 @@
+.contextual-region{position:relative;}.contextual .trigger:focus{position:relative !important;}.contextual-links{display:none;}.contextual.open .contextual-links{display:block;}
+.ui-helper-hidden{display:none;}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none;}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse;}.ui-helper-clearfix:after{clear:both;}.ui-helper-clearfix{min-height:0;}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0);}.ui-front{z-index:100;}.ui-state-disabled{cursor:default !important;}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%;}
+.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible;}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none;}.ui-button-icon-only{width:2.2em;}button.ui-button-icon-only{width:2.4em;}.ui-button-icons-only{width:3.4em;}button.ui-button-icons-only{width:3.7em;}.ui-button .ui-button-text{display:block;line-height:normal;}.ui-button-text-only .ui-button-text{padding:.4em 1em;}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em;}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em;}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em;}input.ui-button{padding:.4em 1em;}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px;}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px;}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em;}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em;}.ui-buttonset{margin-right:7px;}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em;}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0;}
+.ui-resizable{position:relative;}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none;}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0;}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0;}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%;}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%;}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px;}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px;}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px;}
+.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0;}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative;}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis;}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px;}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em;}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right;}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer;}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px;}.ui-draggable .ui-dialog-titlebar{cursor:move;}
+.quickedit-editable{z-index:98;position:relative;cursor:pointer;}.quickedit-editable:focus{outline:none;}.quickedit-editable.quickedit-highlighted{z-index:99;}.quickedit-validation-errors > .messages{margin-left:0;margin-right:0;}.quickedit-validation-errors > .messages > ul{list-style:none;margin:0;padding:0;}.quickedit-validation-errors{z-index:300;position:relative;}.quickedit-validation-errors .messages.error{position:absolute;top:6px;left:-5px;margin:0;border:none;}[dir="rtl"] .quickedit-validation-errors .messages.error{left:auto;right:-5px;}#quickedit_backstage{display:none;}.quickedit-form{position:absolute;z-index:300;max-width:35em;}.quickedit-form .placeholder{min-height:22px;}.quickedit-form .form-wrapper .form-wrapper{margin:inherit;}.quickedit-form .form-actions{display:none;}.quickedit-form input{max-width:100%;}.quickedit-toolbar-container{max-width:100%;position:absolute;max-width:320px;width:320px;z-index:100;}.quickedit-toolbar-container > .quickedit-toolbar-pointer,.quickedit-toolbar-container > .quickedit-toolbar-lining{display:none;}.quickedit-form-container{position:relative;padding:0;border:0;margin:0;vertical-align:baseline;z-index:100;}.quickedit-toolgroup.ops{float:right;}[dir="rtl"] .quickedit-toolgroup.ops{float:left;}.quickedit-toolbar-label{overflow:hidden;}#quickedit-toolbar-fence{bottom:0;left:0;right:0;top:0;position:fixed;z-index:-1;}
+.views-align-left{text-align:left;}.views-align-right{text-align:right;}.views-align-center{text-align:center;}.view .progress-disabled{float:none;}.views-view-grid .views-col{float:left;}.views-view-grid .views-row{clear:both;float:left;width:100%;}
+#toolbar-administration,#toolbar-administration *{box-sizing:border-box;}#toolbar-administration{font-size:small;line-height:1;margin:0;padding:0;vertical-align:baseline;}.toolbar li,.toolbar .menu li,.toolbar .item-list,.toolbar .item-list li,.toolbar .menu li.expanded{list-style-type:none;list-style-image:none;}.toolbar .menu li{padding-top:0;}.toolbar .toolbar-bar .toolbar-tab,.toolbar .menu li{display:block;}.toolbar .toolbar-bar .toolbar-tab.hidden{display:none;}.toolbar a{display:block;line-height:1;}.toolbar .toolbar-bar,.toolbar .toolbar-tray{position:relative;z-index:1250;}body.toolbar-fixed .toolbar-oriented,.toolbar-oriented .toolbar-bar,.toolbar-oriented .toolbar-tray{left:0;position:absolute;right:0;top:0;}.toolbar-oriented .toolbar-bar{z-index:502;}body.toolbar-fixed .toolbar-oriented .toolbar-bar{position:fixed;}body.toolbar-tray-open.toolbar-fixed.toolbar-vertical .toolbar-oriented{bottom:0;width:240px;width:15rem;}.toolbar .toolbar-bar .toolbar-tab,.toolbar .toolbar-tray-horizontal li{float:left;}[dir="rtl"] .toolbar .toolbar-bar .toolbar-tab,[dir="rtl"] .toolbar .toolbar-tray-horizontal li{float:right;}@media only screen{.toolbar .toolbar-bar .toolbar-tab,.toolbar .toolbar-tray-horizontal li{float:none;}[dir="rtl"] .toolbar .toolbar-bar .toolbar-tab,[dir="rtl"] .toolbar .toolbar-tray-horizontal li{float:none;}}@media (min-width:16.5em){.toolbar .toolbar-bar .toolbar-tab,.toolbar .toolbar-tray-horizontal li{float:left;}[dir="rtl"] .toolbar .toolbar-bar .toolbar-tab,[dir="rtl"] .toolbar .toolbar-tray-horizontal li{float:right;}}.toolbar-oriented .toolbar-bar .toolbar-tab,.toolbar-oriented .toolbar-tray-horizontal li{float:left;}[dir="rtl"] .toolbar-oriented .toolbar-bar .toolbar-tab,[dir="rtl"] .toolbar-oriented .toolbar-tray-horizontal li{float:right;}.toolbar .toolbar-tray{display:none;z-index:501;}.toolar .toolbar-tray > .toolbar-lining{position:relative;}.toolbar-oriented .toolbar-tray-vertical{left:-100%;position:absolute;width:240px;width:15rem;}[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical{left:auto;right:-100%;}.toolbar .toolbar-tray-vertical > .toolbar-lining{min-height:100%;}.toolbar .toolbar-tray-vertical > .toolbar-lining:before{width:100%;}.toolbar-oriented .toolbar-tray-vertical > .toolbar-lining:before{bottom:0;content:'';display:block;left:0;position:fixed;top:0;width:240px;width:14rem;z-index:-1;}[dir="rtl"] .toolbar .toolbar-tray-vertical > .toolbar-lining:before{left:auto;right:0;}.toolbar-oriented .toolbar-tray-horizontal .menu li ul{display:none;}body.toolbar-fixed .toolbar .toolbar-tray-horizontal{position:fixed;}.toolbar .toolbar-tray-vertical.active,body.toolbar-fixed .toolbar .toolbar-tray-vertical{height:100%;overflow-x:hidden;overflow-y:auto;position:fixed;}.toolbar .toolbar-tray.active{display:block;}.toolbar-oriented .toolbar-tray-vertical.active{left:0;}[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical.active{left:auto;right:0;}body.toolbar-tray-open.toolbar-vertical.toolbar-fixed{margin-left:240px;margin-left:15rem;}[dir="rtl"] body.toolbar-tray-open.toolbar-vertical.toolbar-fixed{margin-left:auto;margin-left:auto;margin-right:240px;margin-right:15rem;}.toolbar .toolbar-tray .toolbar-toggle-orientation{display:none;}.toolbar-oriented .toolbar-tray .toolbar-toggle-orientation{display:block;}.toolbar-oriented .toolbar-tray-horizontal .toolbar-toggle-orientation{bottom:0;position:absolute;right:0;top:auto;}[dir="rtl"] .toolbar-oriented .toolbar-tray-horizontal .toolbar-toggle-orientation{left:0;right:auto;}.toolbar-oriented .toolbar-tray-vertical .toolbar-toggle-orientation{float:right;width:100%;}[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical .toolbar-toggle-orientation{float:left;}
diff --git a/sites/default/files/css/css_yhahdszyuk8uBhi_kZsVgpp1Xtf1VVjbrkORDR3qqs8.css.gz b/sites/default/files/css/css_yhahdszyuk8uBhi_kZsVgpp1Xtf1VVjbrkORDR3qqs8.css.gz
new file mode 100644
index 0000000..1df8ee2
--- /dev/null
+++ b/sites/default/files/css/css_yhahdszyuk8uBhi_kZsVgpp1Xtf1VVjbrkORDR3qqs8.css.gz
@@ -0,0 +1,10 @@
+     Ym6?N$==Ib{E-#
+Iw[ݷ)d$葨cUU.*	|g7vCO9P2"AZRY!i|*zD01oI5}^ˎv!pA{e-3ɏ1ˏqCsTUso񰧬׻%=\OLIs妿N5+sL1;h5p=YQ!j0̱pг c1<rI񰓾k\QR(0ëxmU;K*	fr|'ʏw֡όyE!垊cRj8Z$WFiu|t>QE+|;(GzaЁ[N_$	zΌSVέc	x+LS|?G׆sWCT	1\1-=0%!S5&~uPk!gj8B@WA*HXԒ+O`*sx&*ZXʼߥ?tX !C2]ek_Mm-t_>KH"Z$		be Ğ\
+~cU*m'/'_DMhN4*S"o\C<tZ(Kz6DRWjt^IןAyKr<9ESeE?Ga25jPNot:|ikXܩ_R~AC'?&{?:yO-W]#PESTdl4UMdGվǱZiZŶY
+|PqR6ѯ"<:=mmU|;0f6 /@&i		[$lt	d[N֝IЇ8/e.B-̷3N;Jח{pN-4=*.7ϡu}^@c	ji3Ccm+suD\=b43JaKUjvyyavC0n} nP	<C(O!F^T/8>3:m=ٮfN0GcMhNxb|ᬕ3u#m9͹;@!kI+Ԫ\8lhۚLGeqDP{JVcKbEIc{mCM#ѓbT;QϤk"rG1{"}9K˦ >Ʀ).S9oƶ`8埂Y::K1x8a!FRb$Kuqj`44ɫ=_>2~5{ג
+X%o2q1raBw3't1pvV rkVz,-撥{7;bF\yp*X)S0nZQJP*jESSxP?C8~6yzL]eoxF.]帚5#%W,Z+Y/hC	UvRNlC\ӽwUVk],~&*6ɷpmbIY"
+ٗҷZKA&1@㭢vT%#pmC1_zS!!cjf<|"DYؖa<Dj;sQx-
+YKVh;# rY.Rc@PU&)5ޠ\'0GG'`}@qHa硅j:
+GG0xOW7C@_&#a_qz{MBg.
+1ݛ"#l*	@#&KC+琀o/ϮeH'nK(^1ڔh2Z֦O!2E:~u#Ҧ$;mg;ݲrN)f,/{SK4niAS]>Ӟ{<..LG`S{#7Bӎy4Gwￏspgl#n^T&Bv`M
+#\cb[~7]s^FV([*wF?*:esI_s>׬(h@Wݨ6vw!ݹ~-:"Y@7Ví佗prSJ/`&  
\ No newline at end of file
diff --git a/sites/default/files/js/js_-kNXemt4ViSbdunHQ0rxeZr6njXM-qxrWgWNVPK36yQ.js b/sites/default/files/js/js_-kNXemt4ViSbdunHQ0rxeZr6njXM-qxrWgWNVPK36yQ.js
new file mode 100644
index 0000000..9be1f8b
--- /dev/null
+++ b/sites/default/files/js/js_-kNXemt4ViSbdunHQ0rxeZr6njXM-qxrWgWNVPK36yQ.js
@@ -0,0 +1,9 @@
+/*
+ HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?: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,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
+"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
+for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
+;
diff --git a/sites/default/files/js/js_-kNXemt4ViSbdunHQ0rxeZr6njXM-qxrWgWNVPK36yQ.js.gz b/sites/default/files/js/js_-kNXemt4ViSbdunHQ0rxeZr6njXM-qxrWgWNVPK36yQ.js.gz
new file mode 100644
index 0000000..63927ef
--- /dev/null
+++ b/sites/default/files/js/js_-kNXemt4ViSbdunHQ0rxeZr6njXM-qxrWgWNVPK36yQ.js.gz
@@ -0,0 +1,6 @@
+     }U]6}ϯPLg&'@^-3ЧȒl+q$W)_սGMл?GjFg)-YP^9mVW%h^|dBYG\)VqdB8ٮAT4b)neTdqVkڶ.Pd;d1D[}wvLp"5V)!?*	ژdV&,*o}X IZһkGEd&u?cDMbzGM-nCvV)m[.JN:ud퍋dxN;%aۇX0VUCTI>:KF| "՚R (kcC]>gT2рa#8cF8 Mӹ"5m(oiɁَP<}],.'tr%]2;( drܺ@О=vo>}6*ҚZ[f3jZXp%0f_o>#]
+@QP%;y T*%L0	}nӈ8\RV20QjJ]c+vnMV4-%ζlrmG٬kG(t(r{-JmhtyZJ3|"1*{]췀vi-ރ6,~_X9p>`Zy';
+z]÷[
+w͇Ǯ䗩@π˵/hO||h|#n|mZU~׹wBwܻ;Wn9$"0$5a^2F\In_}jQ>'Q-9*[O1|" fF	1`@R	~<Qޏ~Ô_P[^1Xd[9Ϻ.z5V8`K
+.8PNiQXtTUzՠ^5W
+AAh),kWFWFXA!ZB9h0E=d'cB{;vն8Z(M]"G4ftո>?8k7(;k8wz8ӟe>	zJ0) $!x<C$\IrFXO "ji.|/$N	  
\ No newline at end of file
diff --git a/sites/default/files/js/js_8992Qe5ObAJ1kmtOiQPOSCmYDFvEGXTlaPDA4iIu0Nc.js b/sites/default/files/js/js_8992Qe5ObAJ1kmtOiQPOSCmYDFvEGXTlaPDA4iIu0Nc.js
new file mode 100644
index 0000000..3b07ed1
--- /dev/null
+++ b/sites/default/files/js/js_8992Qe5ObAJ1kmtOiQPOSCmYDFvEGXTlaPDA4iIu0Nc.js
@@ -0,0 +1,4 @@
+/*!
+  * domready (c) Dustin Diaz 2014 - License MIT
+  */
+!function(name,definition){if(typeof module!="undefined")module.exports=definition();else if(typeof define=="function"&&typeof define.amd=="object")define(definition);else this[name]=definition()}("domready",function(){var fns=[],listener,doc=document,hack=doc.documentElement.doScroll,domContentLoaded="DOMContentLoaded",loaded=(hack?/^loaded|^c/:/^loaded|^i|^c/).test(doc.readyState);if(!loaded)doc.addEventListener(domContentLoaded,listener=function(){doc.removeEventListener(domContentLoaded,listener);loaded=1;while(listener=fns.shift())listener()});return function(fn){loaded?fn():fns.push(fn)}});;
diff --git a/sites/default/files/js/js_8992Qe5ObAJ1kmtOiQPOSCmYDFvEGXTlaPDA4iIu0Nc.js.gz b/sites/default/files/js/js_8992Qe5ObAJ1kmtOiQPOSCmYDFvEGXTlaPDA4iIu0Nc.js.gz
new file mode 100644
index 0000000..d852592
--- /dev/null
+++ b/sites/default/files/js/js_8992Qe5ObAJ1kmtOiQPOSCmYDFvEGXTlaPDA4iIu0Nc.js.gz
@@ -0,0 +1,5 @@
+     R=o0QP*:mbء^:Xֻqa	]icTh*7z=;4(h^?oTfVD
+"Tcz9-UZ4%ni VְHh
+n`pӊy%\[Cf1Er%(B;ܮ:5ʕauTJcAA	1w
+
+}xY	rxպ,xڹӗMGe6I6ld1-K)r4usԷ?G&3\aWJdsB@:UebSJۢ{d`ZkH.)|/d  
\ No newline at end of file
diff --git a/sites/default/files/js/js_OIUjd2Yyow7K3ERQfyspzP1U8hwC7PtDgAbAlo8Clqc.js b/sites/default/files/js/js_OIUjd2Yyow7K3ERQfyspzP1U8hwC7PtDgAbAlo8Clqc.js
new file mode 100644
index 0000000..8ed0760
--- /dev/null
+++ b/sites/default/files/js/js_OIUjd2Yyow7K3ERQfyspzP1U8hwC7PtDgAbAlo8Clqc.js
@@ -0,0 +1,10494 @@
+/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!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){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.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:f,sort:c.sort,splice:c.splice},n.extend=n.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||n.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&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.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?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.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,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=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=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=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)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(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 pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),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){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||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 gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.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},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.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=gb.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=gb.selectors={cacheLength:50,createPseudo:ib,match:X,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(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===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]||gb.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]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(cb,db).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("(^|"+L+")"+a+"("+L+"|$)"))&&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=gb.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(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!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){while(p){l=b;while(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){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(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:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).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: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!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.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:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?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]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.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=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[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?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(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 ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(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 wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(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?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(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}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.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]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(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}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(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&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.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?n.extend(a,d):d}},e={};return d.pipe=d.then,n.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=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(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};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.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(n.isEmptyObject(f))n.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,n.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{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)
+},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.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=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.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=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,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),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==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,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.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?n(e,this).index(i)>=0:n.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||l,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[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),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!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.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=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.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=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.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,n(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=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={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,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.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++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.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=jb(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=jb(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?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(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 n.clone(this,a,b)})},html:function(a){return J(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&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(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,n.cleanData(ob(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=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.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 yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.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",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.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",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.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 zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(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+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.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}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(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=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.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=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.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=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,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||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):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):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.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,n.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}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._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--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.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 Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),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:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.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(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.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)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.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=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.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)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.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})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.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=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.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 n.removeAttr(a,b))
+},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.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||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.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")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.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(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.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):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.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(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.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||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.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){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.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 cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.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)&&n.error("Invalid XML: "+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \t]*([^\r\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\/\//,kc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lc={},mc={},nc="*/".concat("*"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.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 rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.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 sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(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}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(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}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:"GET",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nc,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":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e: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||(k.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 c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+"").replace(ec,"").replace(jc,pc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pc[3]||("http:"===pc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(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 this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\[\]$/,xc=/\r?\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ac(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join("&").replace(vc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,"\r\n")}}):{name:b.name,value:c.replace(xc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&"withCredentials"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;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 Cc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Dc[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=Cc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<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)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.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,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.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),n.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)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.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,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(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"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(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)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.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?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});
+//# sourceMappingURL=jquery.min.map;
+//     Underscore.js 1.7.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){var n=this,t=n._,r=Array.prototype,e=Object.prototype,u=Function.prototype,i=r.push,a=r.slice,o=r.concat,l=e.toString,c=e.hasOwnProperty,f=Array.isArray,s=Object.keys,p=u.bind,h=function(n){return n instanceof h?n:this instanceof h?void(this._wrapped=n):new h(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=h),exports._=h):n._=h,h.VERSION="1.7.0";var g=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}};h.iteratee=function(n,t,r){return null==n?h.identity:h.isFunction(n)?g(n,t,r):h.isObject(n)?h.matches(n):h.property(n)},h.each=h.forEach=function(n,t,r){if(null==n)return n;t=g(t,r);var e,u=n.length;if(u===+u)for(e=0;u>e;e++)t(n[e],e,n);else{var i=h.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},h.map=h.collect=function(n,t,r){if(null==n)return[];t=h.iteratee(t,r);for(var e,u=n.length!==+n.length&&h.keys(n),i=(u||n).length,a=Array(i),o=0;i>o;o++)e=u?u[o]:o,a[o]=t(n[e],e,n);return a};var v="Reduce of empty array with no initial value";h.reduce=h.foldl=h.inject=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length,o=0;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[o++]:o++]}for(;a>o;o++)u=i?i[o]:o,r=t(r,n[u],u,n);return r},h.reduceRight=h.foldr=function(n,t,r,e){null==n&&(n=[]),t=g(t,e,4);var u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;if(arguments.length<3){if(!a)throw new TypeError(v);r=n[i?i[--a]:--a]}for(;a--;)u=i?i[a]:a,r=t(r,n[u],u,n);return r},h.find=h.detect=function(n,t,r){var e;return t=h.iteratee(t,r),h.some(n,function(n,r,u){return t(n,r,u)?(e=n,!0):void 0}),e},h.filter=h.select=function(n,t,r){var e=[];return null==n?e:(t=h.iteratee(t,r),h.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e)},h.reject=function(n,t,r){return h.filter(n,h.negate(h.iteratee(t)),r)},h.every=h.all=function(n,t,r){if(null==n)return!0;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,!t(n[u],u,n))return!1;return!0},h.some=h.any=function(n,t,r){if(null==n)return!1;t=h.iteratee(t,r);var e,u,i=n.length!==+n.length&&h.keys(n),a=(i||n).length;for(e=0;a>e;e++)if(u=i?i[e]:e,t(n[u],u,n))return!0;return!1},h.contains=h.include=function(n,t){return null==n?!1:(n.length!==+n.length&&(n=h.values(n)),h.indexOf(n,t)>=0)},h.invoke=function(n,t){var r=a.call(arguments,2),e=h.isFunction(t);return h.map(n,function(n){return(e?t:n[t]).apply(n,r)})},h.pluck=function(n,t){return h.map(n,h.property(t))},h.where=function(n,t){return h.filter(n,h.matches(t))},h.findWhere=function(n,t){return h.find(n,h.matches(t))},h.max=function(n,t,r){var e,u,i=-1/0,a=-1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],e>i&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(u>a||u===-1/0&&i===-1/0)&&(i=n,a=u)});return i},h.min=function(n,t,r){var e,u,i=1/0,a=1/0;if(null==t&&null!=n){n=n.length===+n.length?n:h.values(n);for(var o=0,l=n.length;l>o;o++)e=n[o],i>e&&(i=e)}else t=h.iteratee(t,r),h.each(n,function(n,r,e){u=t(n,r,e),(a>u||1/0===u&&1/0===i)&&(i=n,a=u)});return i},h.shuffle=function(n){for(var t,r=n&&n.length===+n.length?n:h.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=h.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},h.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=h.values(n)),n[h.random(n.length-1)]):h.shuffle(n).slice(0,Math.max(0,t))},h.sortBy=function(n,t,r){return t=h.iteratee(t,r),h.pluck(h.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var m=function(n){return function(t,r,e){var u={};return r=h.iteratee(r,e),h.each(t,function(e,i){var a=r(e,i,t);n(u,e,a)}),u}};h.groupBy=m(function(n,t,r){h.has(n,r)?n[r].push(t):n[r]=[t]}),h.indexBy=m(function(n,t,r){n[r]=t}),h.countBy=m(function(n,t,r){h.has(n,r)?n[r]++:n[r]=1}),h.sortedIndex=function(n,t,r,e){r=h.iteratee(r,e,1);for(var u=r(t),i=0,a=n.length;a>i;){var o=i+a>>>1;r(n[o])<u?i=o+1:a=o}return i},h.toArray=function(n){return n?h.isArray(n)?a.call(n):n.length===+n.length?h.map(n,h.identity):h.values(n):[]},h.size=function(n){return null==n?0:n.length===+n.length?n.length:h.keys(n).length},h.partition=function(n,t,r){t=h.iteratee(t,r);var e=[],u=[];return h.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},h.first=h.head=h.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:0>t?[]:a.call(n,0,t)},h.initial=function(n,t,r){return a.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},h.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:a.call(n,Math.max(n.length-t,0))},h.rest=h.tail=h.drop=function(n,t,r){return a.call(n,null==t||r?1:t)},h.compact=function(n){return h.filter(n,h.identity)};var y=function(n,t,r,e){if(t&&h.every(n,h.isArray))return o.apply(e,n);for(var u=0,a=n.length;a>u;u++){var l=n[u];h.isArray(l)||h.isArguments(l)?t?i.apply(e,l):y(l,t,r,e):r||e.push(l)}return e};h.flatten=function(n,t){return y(n,t,!1,[])},h.without=function(n){return h.difference(n,a.call(arguments,1))},h.uniq=h.unique=function(n,t,r,e){if(null==n)return[];h.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=h.iteratee(r,e));for(var u=[],i=[],a=0,o=n.length;o>a;a++){var l=n[a];if(t)a&&i===l||u.push(l),i=l;else if(r){var c=r(l,a,n);h.indexOf(i,c)<0&&(i.push(c),u.push(l))}else h.indexOf(u,l)<0&&u.push(l)}return u},h.union=function(){return h.uniq(y(arguments,!0,!0,[]))},h.intersection=function(n){if(null==n)return[];for(var t=[],r=arguments.length,e=0,u=n.length;u>e;e++){var i=n[e];if(!h.contains(t,i)){for(var a=1;r>a&&h.contains(arguments[a],i);a++);a===r&&t.push(i)}}return t},h.difference=function(n){var t=y(a.call(arguments,1),!0,!0,[]);return h.filter(n,function(n){return!h.contains(t,n)})},h.zip=function(n){if(null==n)return[];for(var t=h.max(arguments,"length").length,r=Array(t),e=0;t>e;e++)r[e]=h.pluck(arguments,e);return r},h.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},h.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=h.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}for(;u>e;e++)if(n[e]===t)return e;return-1},h.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=n.length;for("number"==typeof r&&(e=0>r?e+r+1:Math.min(e,r+1));--e>=0;)if(n[e]===t)return e;return-1},h.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var d=function(){};h.bind=function(n,t){var r,e;if(p&&n.bind===p)return p.apply(n,a.call(arguments,1));if(!h.isFunction(n))throw new TypeError("Bind must be called on a function");return r=a.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(a.call(arguments)));d.prototype=n.prototype;var u=new d;d.prototype=null;var i=n.apply(u,r.concat(a.call(arguments)));return h.isObject(i)?i:u}},h.partial=function(n){var t=a.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===h&&(e[u]=arguments[r++]);for(;r<arguments.length;)e.push(arguments[r++]);return n.apply(this,e)}},h.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=h.bind(n[r],n);return n},h.memoize=function(n,t){var r=function(e){var u=r.cache,i=t?t.apply(this,arguments):e;return h.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},h.delay=function(n,t){var r=a.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},h.defer=function(n){return h.delay.apply(h,[n,1].concat(a.call(arguments,1)))},h.throttle=function(n,t,r){var e,u,i,a=null,o=0;r||(r={});var l=function(){o=r.leading===!1?0:h.now(),a=null,i=n.apply(e,u),a||(e=u=null)};return function(){var c=h.now();o||r.leading!==!1||(o=c);var f=t-(c-o);return e=this,u=arguments,0>=f||f>t?(clearTimeout(a),a=null,o=c,i=n.apply(e,u),a||(e=u=null)):a||r.trailing===!1||(a=setTimeout(l,f)),i}},h.debounce=function(n,t,r){var e,u,i,a,o,l=function(){var c=h.now()-a;t>c&&c>0?e=setTimeout(l,t-c):(e=null,r||(o=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,a=h.now();var c=r&&!e;return e||(e=setTimeout(l,t)),c&&(o=n.apply(i,u),i=u=null),o}},h.wrap=function(n,t){return h.partial(t,n)},h.negate=function(n){return function(){return!n.apply(this,arguments)}},h.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},h.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},h.before=function(n,t){var r;return function(){return--n>0?r=t.apply(this,arguments):t=null,r}},h.once=h.partial(h.before,2),h.keys=function(n){if(!h.isObject(n))return[];if(s)return s(n);var t=[];for(var r in n)h.has(n,r)&&t.push(r);return t},h.values=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},h.pairs=function(n){for(var t=h.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},h.invert=function(n){for(var t={},r=h.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},h.functions=h.methods=function(n){var t=[];for(var r in n)h.isFunction(n[r])&&t.push(r);return t.sort()},h.extend=function(n){if(!h.isObject(n))return n;for(var t,r,e=1,u=arguments.length;u>e;e++){t=arguments[e];for(r in t)c.call(t,r)&&(n[r]=t[r])}return n},h.pick=function(n,t,r){var e,u={};if(null==n)return u;if(h.isFunction(t)){t=g(t,r);for(e in n){var i=n[e];t(i,e,n)&&(u[e]=i)}}else{var l=o.apply([],a.call(arguments,1));n=new Object(n);for(var c=0,f=l.length;f>c;c++)e=l[c],e in n&&(u[e]=n[e])}return u},h.omit=function(n,t,r){if(h.isFunction(t))t=h.negate(t);else{var e=h.map(o.apply([],a.call(arguments,1)),String);t=function(n,t){return!h.contains(e,t)}}return h.pick(n,t,r)},h.defaults=function(n){if(!h.isObject(n))return n;for(var t=1,r=arguments.length;r>t;t++){var e=arguments[t];for(var u in e)n[u]===void 0&&(n[u]=e[u])}return n},h.clone=function(n){return h.isObject(n)?h.isArray(n)?n.slice():h.extend({},n):n},h.tap=function(n,t){return t(n),n};var b=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof h&&(n=n._wrapped),t instanceof h&&(t=t._wrapped);var u=l.call(n);if(u!==l.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]===n)return e[i]===t;var a=n.constructor,o=t.constructor;if(a!==o&&"constructor"in n&&"constructor"in t&&!(h.isFunction(a)&&a instanceof a&&h.isFunction(o)&&o instanceof o))return!1;r.push(n),e.push(t);var c,f;if("[object Array]"===u){if(c=n.length,f=c===t.length)for(;c--&&(f=b(n[c],t[c],r,e)););}else{var s,p=h.keys(n);if(c=p.length,f=h.keys(t).length===c)for(;c--&&(s=p[c],f=h.has(t,s)&&b(n[s],t[s],r,e)););}return r.pop(),e.pop(),f};h.isEqual=function(n,t){return b(n,t,[],[])},h.isEmpty=function(n){if(null==n)return!0;if(h.isArray(n)||h.isString(n)||h.isArguments(n))return 0===n.length;for(var t in n)if(h.has(n,t))return!1;return!0},h.isElement=function(n){return!(!n||1!==n.nodeType)},h.isArray=f||function(n){return"[object Array]"===l.call(n)},h.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},h.each(["Arguments","Function","String","Number","Date","RegExp"],function(n){h["is"+n]=function(t){return l.call(t)==="[object "+n+"]"}}),h.isArguments(arguments)||(h.isArguments=function(n){return h.has(n,"callee")}),"function"!=typeof/./&&(h.isFunction=function(n){return"function"==typeof n||!1}),h.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},h.isNaN=function(n){return h.isNumber(n)&&n!==+n},h.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===l.call(n)},h.isNull=function(n){return null===n},h.isUndefined=function(n){return n===void 0},h.has=function(n,t){return null!=n&&c.call(n,t)},h.noConflict=function(){return n._=t,this},h.identity=function(n){return n},h.constant=function(n){return function(){return n}},h.noop=function(){},h.property=function(n){return function(t){return t[n]}},h.matches=function(n){var t=h.pairs(n),r=t.length;return function(n){if(null==n)return!r;n=new Object(n);for(var e=0;r>e;e++){var u=t[e],i=u[0];if(u[1]!==n[i]||!(i in n))return!1}return!0}},h.times=function(n,t,r){var e=Array(Math.max(0,n));t=g(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},h.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},h.now=Date.now||function(){return(new Date).getTime()};var _={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},w=h.invert(_),j=function(n){var t=function(t){return n[t]},r="(?:"+h.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};h.escape=j(_),h.unescape=j(w),h.result=function(n,t){if(null==n)return void 0;var r=n[t];return h.isFunction(r)?n[t]():r};var x=0;h.uniqueId=function(n){var t=++x+"";return n?n+t:t},h.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var A=/(.)^/,k={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},O=/\\|'|\r|\n|\u2028|\u2029/g,F=function(n){return"\\"+k[n]};h.template=function(n,t,r){!t&&r&&(t=r),t=h.defaults({},t,h.templateSettings);var e=RegExp([(t.escape||A).source,(t.interpolate||A).source,(t.evaluate||A).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(O,F),u=o+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":a&&(i+="';\n"+a+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=new Function(t.variable||"obj","_",i)}catch(o){throw o.source=i,o}var l=function(n){return a.call(this,n,h)},c=t.variable||"obj";return l.source="function("+c+"){\n"+i+"}",l},h.chain=function(n){var t=h(n);return t._chain=!0,t};var E=function(n){return this._chain?h(n).chain():n};h.mixin=function(n){h.each(h.functions(n),function(t){var r=h[t]=n[t];h.prototype[t]=function(){var n=[this._wrapped];return i.apply(n,arguments),E.call(this,r.apply(h,n))}})},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=r[n];h.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],E.call(this,r)}}),h.each(["concat","join","slice"],function(n){var t=r[n];h.prototype[n]=function(){return E.call(this,t.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}).call(this);
+//# sourceMappingURL=underscore-min.map;
+(function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h<u;h++){t=o[h];if(a=this._events[t]){this._events[t]=s=[];if(e||r){for(l=0,f=a.length;l<f;l++){n=a[l];if(e&&e!==n.callback&&e!==n.callback._callback||r&&r!==n.context){s.push(n)}}}if(!s.length)delete this._events[t]}}return this},trigger:function(t){if(!this._events)return this;var e=o.call(arguments,1);if(!c(this,"trigger",t,e))return this;var i=this._events[t];var r=this._events.all;if(i)f(i,e);if(r)f(r,arguments);return this},stopListening:function(t,e,r){var s=this._listeningTo;if(!s)return this;var n=!e&&!r;if(!r&&typeof e==="object")r=this;if(t)(s={})[t._listenId]=t;for(var a in s){t=s[a];t.off(e,r,this);if(n||i.isEmpty(t._events))delete this._listeningTo[a]}return this}};var l=/\s+/;var c=function(t,e,i,r){if(!i)return true;if(typeof i==="object"){for(var s in i){t[e].apply(t,[s,i[s]].concat(r))}return false}if(l.test(i)){var n=i.split(l);for(var a=0,o=n.length;a<o;a++){t[e].apply(t,[n[a]].concat(r))}return false}return true};var f=function(t,e){var i,r=-1,s=t.length,n=e[0],a=e[1],o=e[2];switch(e.length){case 0:while(++r<s)(i=t[r]).callback.call(i.ctx);return;case 1:while(++r<s)(i=t[r]).callback.call(i.ctx,n);return;case 2:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a);return;case 3:while(++r<s)(i=t[r]).callback.call(i.ctx,n,a,o);return;default:while(++r<s)(i=t[r]).callback.apply(i.ctx,e);return}};var d={listenTo:"on",listenToOnce:"once"};i.each(d,function(t,e){u[e]=function(e,r,s){var n=this._listeningTo||(this._listeningTo={});var a=e._listenId||(e._listenId=i.uniqueId("l"));n[a]=e;if(!s&&typeof r==="object")s=this;e[t](r,s,this);return this}});u.bind=u.on;u.unbind=u.off;i.extend(e,u);var p=e.Model=function(t,e){var r=t||{};e||(e={});this.cid=i.uniqueId("c");this.attributes={};if(e.collection)this.collection=e.collection;if(e.parse)r=this.parse(r,e)||{};r=i.defaults({},r,i.result(this,"defaults"));this.set(r,e);this.changed={};this.initialize.apply(this,arguments)};i.extend(p.prototype,u,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(t){return i.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return i.escape(this.get(t))},has:function(t){return this.get(t)!=null},set:function(t,e,r){var s,n,a,o,h,u,l,c;if(t==null)return this;if(typeof t==="object"){n=t;r=e}else{(n={})[t]=e}r||(r={});if(!this._validate(n,r))return false;a=r.unset;h=r.silent;o=[];u=this._changing;this._changing=true;if(!u){this._previousAttributes=i.clone(this.attributes);this.changed={}}c=this.attributes,l=this._previousAttributes;if(this.idAttribute in n)this.id=n[this.idAttribute];for(s in n){e=n[s];if(!i.isEqual(c[s],e))o.push(s);if(!i.isEqual(l[s],e)){this.changed[s]=e}else{delete this.changed[s]}a?delete c[s]:c[s]=e}if(!h){if(o.length)this._pending=r;for(var f=0,d=o.length;f<d;f++){this.trigger("change:"+o[f],this,c[o[f]],r)}}if(u)return this;if(!h){while(this._pending){r=this._pending;this._pending=false;this.trigger("change",this,r)}}this._pending=false;this._changing=false;return this},unset:function(t,e){return this.set(t,void 0,i.extend({},e,{unset:true}))},clear:function(t){var e={};for(var r in this.attributes)e[r]=void 0;return this.set(e,i.extend({},t,{unset:true}))},hasChanged:function(t){if(t==null)return!i.isEmpty(this.changed);return i.has(this.changed,t)},changedAttributes:function(t){if(!t)return this.hasChanged()?i.clone(this.changed):false;var e,r=false;var s=this._changing?this._previousAttributes:this.attributes;for(var n in t){if(i.isEqual(s[n],e=t[n]))continue;(r||(r={}))[n]=e}return r},previous:function(t){if(t==null||!this._previousAttributes)return null;return this._previousAttributes[t]},previousAttributes:function(){return i.clone(this._previousAttributes)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=this;var r=t.success;t.success=function(i){if(!e.set(e.parse(i,t),t))return false;if(r)r(e,i,t);e.trigger("sync",e,i,t)};q(this,t);return this.sync("read",this,t)},save:function(t,e,r){var s,n,a,o=this.attributes;if(t==null||typeof t==="object"){s=t;r=e}else{(s={})[t]=e}r=i.extend({validate:true},r);if(s&&!r.wait){if(!this.set(s,r))return false}else{if(!this._validate(s,r))return false}if(s&&r.wait){this.attributes=i.extend({},o,s)}if(r.parse===void 0)r.parse=true;var h=this;var u=r.success;r.success=function(t){h.attributes=o;var e=h.parse(t,r);if(r.wait)e=i.extend(s||{},e);if(i.isObject(e)&&!h.set(e,r)){return false}if(u)u(h,t,r);h.trigger("sync",h,t,r)};q(this,r);n=this.isNew()?"create":r.patch?"patch":"update";if(n==="patch")r.attrs=s;a=this.sync(n,this,r);if(s&&r.wait)this.attributes=o;return a},destroy:function(t){t=t?i.clone(t):{};var e=this;var r=t.success;var s=function(){e.trigger("destroy",e,e.collection,t)};t.success=function(i){if(t.wait||e.isNew())s();if(r)r(e,i,t);if(!e.isNew())e.trigger("sync",e,i,t)};if(this.isNew()){t.success();return false}q(this,t);var n=this.sync("delete",this,t);if(!t.wait)s();return n},url:function(){var t=i.result(this,"urlRoot")||i.result(this.collection,"url")||M();if(this.isNew())return t;return t.replace(/([^\/])$/,"$1/")+encodeURIComponent(this.id)},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},i.extend(t||{},{validate:true}))},_validate:function(t,e){if(!e.validate||!this.validate)return true;t=i.extend({},this.attributes,t);var r=this.validationError=this.validate(t,e)||null;if(!r)return true;this.trigger("invalid",this,r,i.extend(e,{validationError:r}));return false}});var v=["keys","values","pairs","invert","pick","omit"];i.each(v,function(t){p.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.attributes);return i[t].apply(i,e)}});var g=e.Collection=function(t,e){e||(e={});if(e.model)this.model=e.model;if(e.comparator!==void 0)this.comparator=e.comparator;this._reset();this.initialize.apply(this,arguments);if(t)this.reset(t,i.extend({silent:true},e))};var m={add:true,remove:true,merge:true};var y={add:true,remove:false};i.extend(g.prototype,u,{model:p,initialize:function(){},toJSON:function(t){return this.map(function(e){return e.toJSON(t)})},sync:function(){return e.sync.apply(this,arguments)},add:function(t,e){return this.set(t,i.extend({merge:false},e,y))},remove:function(t,e){var r=!i.isArray(t);t=r?[t]:i.clone(t);e||(e={});var s,n,a,o;for(s=0,n=t.length;s<n;s++){o=t[s]=this.get(t[s]);if(!o)continue;delete this._byId[o.id];delete this._byId[o.cid];a=this.indexOf(o);this.models.splice(a,1);this.length--;if(!e.silent){e.index=a;o.trigger("remove",o,this,e)}this._removeReference(o,e)}return r?t[0]:t},set:function(t,e){e=i.defaults({},e,m);if(e.parse)t=this.parse(t,e);var r=!i.isArray(t);t=r?t?[t]:[]:i.clone(t);var s,n,a,o,h,u,l;var c=e.at;var f=this.model;var d=this.comparator&&c==null&&e.sort!==false;var v=i.isString(this.comparator)?this.comparator:null;var g=[],y=[],_={};var b=e.add,w=e.merge,x=e.remove;var E=!d&&b&&x?[]:false;for(s=0,n=t.length;s<n;s++){h=t[s]||{};if(h instanceof p){a=o=h}else{a=h[f.prototype.idAttribute||"id"]}if(u=this.get(a)){if(x)_[u.cid]=true;if(w){h=h===o?o.attributes:h;if(e.parse)h=u.parse(h,e);u.set(h,e);if(d&&!l&&u.hasChanged(v))l=true}t[s]=u}else if(b){o=t[s]=this._prepareModel(h,e);if(!o)continue;g.push(o);this._addReference(o,e)}o=u||o;if(E&&(o.isNew()||!_[o.id]))E.push(o);_[o.id]=true}if(x){for(s=0,n=this.length;s<n;++s){if(!_[(o=this.models[s]).cid])y.push(o)}if(y.length)this.remove(y,e)}if(g.length||E&&E.length){if(d)l=true;this.length+=g.length;if(c!=null){for(s=0,n=g.length;s<n;s++){this.models.splice(c+s,0,g[s])}}else{if(E)this.models.length=0;var k=E||g;for(s=0,n=k.length;s<n;s++){this.models.push(k[s])}}}if(l)this.sort({silent:true});if(!e.silent){for(s=0,n=g.length;s<n;s++){(o=g[s]).trigger("add",o,this,e)}if(l||E&&E.length)this.trigger("sort",this,e)}return r?t[0]:t},reset:function(t,e){e||(e={});for(var r=0,s=this.models.length;r<s;r++){this._removeReference(this.models[r],e)}e.previousModels=this.models;this._reset();t=this.add(t,i.extend({silent:true},e));if(!e.silent)this.trigger("reset",this,e);return t},push:function(t,e){return this.add(t,i.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);this.remove(e,t);return e},unshift:function(t,e){return this.add(t,i.extend({at:0},e))},shift:function(t){var e=this.at(0);this.remove(e,t);return e},slice:function(){return o.apply(this.models,arguments)},get:function(t){if(t==null)return void 0;return this._byId[t]||this._byId[t.id]||this._byId[t.cid]},at:function(t){return this.models[t]},where:function(t,e){if(i.isEmpty(t))return e?void 0:[];return this[e?"find":"filter"](function(e){for(var i in t){if(t[i]!==e.get(i))return false}return true})},findWhere:function(t){return this.where(t,true)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");t||(t={});if(i.isString(this.comparator)||this.comparator.length===1){this.models=this.sortBy(this.comparator,this)}else{this.models.sort(i.bind(this.comparator,this))}if(!t.silent)this.trigger("sort",this,t);return this},pluck:function(t){return i.invoke(this.models,"get",t)},fetch:function(t){t=t?i.clone(t):{};if(t.parse===void 0)t.parse=true;var e=t.success;var r=this;t.success=function(i){var s=t.reset?"reset":"set";r[s](i,t);if(e)e(r,i,t);r.trigger("sync",r,i,t)};q(this,t);return this.sync("read",this,t)},create:function(t,e){e=e?i.clone(e):{};if(!(t=this._prepareModel(t,e)))return false;if(!e.wait)this.add(t,e);var r=this;var s=e.success;e.success=function(t,i){if(e.wait)r.add(t,e);if(s)s(t,i,e)};t.save(null,e);return t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(t,e){if(t instanceof p)return t;e=e?i.clone(e):{};e.collection=this;var r=new this.model(t,e);if(!r.validationError)return r;this.trigger("invalid",this,r.validationError,e);return false},_addReference:function(t,e){this._byId[t.cid]=t;if(t.id!=null)this._byId[t.id]=t;if(!t.collection)t.collection=this;t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){if(this===t.collection)delete t.collection;t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,r){if((t==="add"||t==="remove")&&i!==this)return;if(t==="destroy")this.remove(e,r);if(e&&t==="change:"+e.idAttribute){delete this._byId[e.previous(e.idAttribute)];if(e.id!=null)this._byId[e.id]=e}this.trigger.apply(this,arguments)}});var _=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain","sample"];i.each(_,function(t){g.prototype[t]=function(){var e=o.call(arguments);e.unshift(this.models);return i[t].apply(i,e)}});var b=["groupBy","countBy","sortBy","indexBy"];i.each(b,function(t){g.prototype[t]=function(e,r){var s=i.isFunction(e)?e:function(t){return t.get(e)};return i[t](this.models,s,r)}});var w=e.View=function(t){this.cid=i.uniqueId("view");t||(t={});i.extend(this,i.pick(t,E));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()};var x=/^(\S+)\s*(.*)$/;var E=["model","collection","el","id","attributes","className","tagName","events"];i.extend(w.prototype,u,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();this.stopListening();return this},setElement:function(t,i){if(this.$el)this.undelegateEvents();this.$el=t instanceof e.$?t:e.$(t);this.el=this.$el[0];if(i!==false)this.delegateEvents();return this},delegateEvents:function(t){if(!(t||(t=i.result(this,"events"))))return this;this.undelegateEvents();for(var e in t){var r=t[e];if(!i.isFunction(r))r=this[t[e]];if(!r)continue;var s=e.match(x);var n=s[1],a=s[2];r=i.bind(r,this);n+=".delegateEvents"+this.cid;if(a===""){this.$el.on(n,r)}else{this.$el.on(n,a,r)}}return this},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid);return this},_ensureElement:function(){if(!this.el){var t=i.extend({},i.result(this,"attributes"));if(this.id)t.id=i.result(this,"id");if(this.className)t["class"]=i.result(this,"className");var r=e.$("<"+i.result(this,"tagName")+">").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('<iframe src="javascript:0" tabindex="-1">');this.iframe=a.hide().appendTo("body")[0].contentWindow;this.navigate(r)}if(this._hasPushState){e.$(window).on("popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!n){e.$(window).on("hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=r;var o=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);return true}else if(this._hasPushState&&this.atRoot()&&o.hash){this.fragment=this.getHash().replace(R,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)return this.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getFragment(this.getHash(this.iframe))}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){t=this.fragment=this.getFragment(t);return i.any(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};var i=this.root+(t=this.getFragment(t||""));t=t.replace(j,"");if(this.fragment===t)return;this.fragment=t;if(t===""&&i!=="/")i=i.slice(0,-1);if(this._hasPushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,i)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getFragment(this.getHash(this.iframe))){if(!e.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,t,e.replace)}}else{return this.location.assign(i)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var U=function(t,e){var r=this;var s;if(t&&i.has(t,"constructor")){s=t.constructor}else{s=function(){return r.apply(this,arguments)}}i.extend(s,r,e);var n=function(){this.constructor=s};n.prototype=r.prototype;s.prototype=new n;if(t)i.extend(s.prototype,t);s.__super__=r.prototype;return s};p.extend=g.extend=$.extend=w.extend=N.extend=U;var M=function(){throw new Error('A "url" property or function must be specified')};var q=function(t,e){var i=e.error;e.error=function(r){if(i)i(t,r,e);t.trigger("error",t,r,e)}};return e});
+//# sourceMappingURL=backbone-min.map;
+/**
+ * jQuery Once Plugin 1.2.3
+ * http://plugins.jquery.com/once/
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+
+(function (factory) {
+  "use strict";
+  if (typeof exports === 'object') {
+    factory(require('jquery'));
+  } else if (typeof define === 'function' && define.amd) {
+    define(['jquery'], factory);
+  } else {
+    factory(jQuery);
+  }
+}(function ($) {
+  "use strict";
+  var cache = {}, uuid = 0;
+
+  /**
+   * Filters elements by whether they have not yet been processed.
+   *
+   * @param id
+   *   (Optional) If this is a string, then it will be used as the CSS class
+   *   name that is applied to the elements for determining whether it has
+   *   already been processed. The elements will get a class in the form of
+   *   "id-processed".
+   *
+   *   If the id parameter is a function, it will be passed off to the fn
+   *   parameter and the id will become a unique identifier, represented as a
+   *   number.
+   *
+   *   When the id is neither a string or a function, it becomes a unique
+   *   identifier, depicted as a number. The element's class will then be
+   *   represented in the form of "jquery-once-#-processed".
+   *
+   *   Take note that the id must be valid for usage as an element's class name.
+   * @param fn
+   *   (Optional) If given, this function will be called for each element that
+   *   has not yet been processed. The function's return value follows the same
+   *   logic as $.each(). Returning true will continue to the next matched
+   *   element in the set, while returning false will entirely break the
+   *   iteration.
+   *
+   * @api public
+   */
+  $.fn.once = function (id, fn) {
+    if (typeof id !== 'string') {
+      // Generate a numeric ID if the id passed can't be used as a CSS class.
+      if (!(id in cache)) {
+        cache[id] = ++uuid;
+      }
+      // When the fn parameter is not passed, we interpret it from the id.
+      if (!fn) {
+        fn = id;
+      }
+      id = 'jquery-once-' + cache[id];
+    }
+    // Remove elements from the set that have already been processed.
+    var name = id + '-processed';
+    var elements = this.not('.' + name).addClass(name);
+
+    return $.isFunction(fn) ? elements.each(fn) : elements;
+  };
+
+  /**
+   * Filters elements that have been processed once already.
+   *
+   * @param id
+   *   A required string representing the name of the class which should be used
+   *   when filtering the elements. This only filters elements that have already
+   *   been processed by the once function. The id should be the same id that
+   *   was originally passed to the once() function.
+   * @param fn
+   *   (Optional) If given, this function will be called for each element that
+   *   has not yet been processed. The function's return value follows the same
+   *   logic as $.each(). Returning true will continue to the next matched
+   *   element in the set, while returning false will entirely break the
+   *   iteration.
+   *
+   * @api public
+   */
+  $.fn.removeOnce = function (id, fn) {
+    var name = id + '-processed';
+    var elements = this.filter('.' + name).removeClass(name);
+
+    return $.isFunction(fn) ? elements.each(fn) : elements;
+  };
+}));
+;
+/**
+ * Base framework for Drupal-specific JavaScript, behaviors, and settings.
+ */
+window.Drupal = {behaviors: {}, locale: {}};
+
+// Class indicating that JS is enabled; used for styling purpose.
+document.documentElement.className += ' js';
+
+// Allow other JavaScript libraries to use $.
+if (window.jQuery) {
+  jQuery.noConflict();
+}
+
+// JavaScript should be made compatible with libraries other than jQuery by
+// wrapping it in an anonymous closure.
+(function (domready, Drupal, drupalSettings) {
+
+  "use strict";
+
+  /**
+   * Custom error type thrown after attach/detach if one or more behaviors failed.
+   *
+   * @param list
+   *   An array of errors thrown during attach/detach.
+   * @param event
+   *   A string containing either 'attach' or 'detach'.
+   */
+  function DrupalBehaviorError(list, event) {
+    this.name = 'DrupalBehaviorError';
+    this.event = event || 'attach';
+    this.list = list;
+    // Makes the list of errors readable.
+    var messageList = [];
+    messageList.push(this.event);
+    for (var i = 0, il = this.list.length; i < il; i++) {
+      messageList.push(this.list[i].behavior + ': ' + this.list[i].error.message);
+    }
+    this.message = messageList.join(' ; ');
+  }
+
+  DrupalBehaviorError.prototype = new Error();
+
+  /**
+   * Attach all registered behaviors to a page element.
+   *
+   * Behaviors are event-triggered actions that attach to page elements, enhancing
+   * default non-JavaScript UIs. Behaviors are registered in the Drupal.behaviors
+   * object using the method 'attach' and optionally also 'detach' as follows:
+   * @code
+   *    Drupal.behaviors.behaviorName = {
+   *      attach: function (context, settings) {
+   *        ...
+   *      },
+   *      detach: function (context, settings, trigger) {
+   *        ...
+   *      }
+   *    };
+   * @endcode
+   *
+   * Drupal.attachBehaviors is added below to the jQuery.ready event and therefore
+   * runs on initial page load. Developers implementing Ajax in their solutions
+   * should also call this function after new page content has been loaded,
+   * feeding in an element to be processed, in order to attach all behaviors to
+   * the new content.
+   *
+   * Behaviors should use
+   * @code
+   *   var elements = $(context).find(selector).once('behavior-name');
+   * @endcode
+   * to ensure the behavior is attached only once to a given element. (Doing so
+   * enables the reprocessing of given elements, which may be needed on occasion
+   * despite the ability to limit behavior attachment to a particular element.)
+   *
+   * @param context
+   *   An element to attach behaviors to. If none is given, the document element
+   *   is used.
+   * @param settings
+   *   An object containing settings for the current context. If none is given,
+   *   the global drupalSettings object is used.
+   */
+  Drupal.attachBehaviors = function (context, settings) {
+    context = context || document;
+    settings = settings || drupalSettings;
+    var i, errors = [], behaviors = Drupal.behaviors;
+    // Execute all of them.
+    for (i in behaviors) {
+      if (behaviors.hasOwnProperty(i) && typeof behaviors[i].attach === 'function') {
+        // Don't stop the execution of behaviors in case of an error.
+        try {
+          behaviors[i].attach(context, settings);
+        }
+        catch (e) {
+          errors.push({behavior: i, error: e});
+        }
+      }
+    }
+    // Once all behaviors have been processed, inform the user about errors.
+    if (errors.length) {
+      throw new DrupalBehaviorError(errors, 'attach');
+    }
+  };
+
+  // Attach all behaviors.
+  domready(function () { Drupal.attachBehaviors(document, drupalSettings); });
+
+  /**
+   * Detach registered behaviors from a page element.
+   *
+   * Developers implementing AHAH/Ajax in their solutions should call this
+   * function before page content is about to be removed, feeding in an element
+   * to be processed, in order to allow special behaviors to detach from the
+   * content.
+   *
+   * Such implementations should look for the class name that was added in their
+   * corresponding Drupal.behaviors.behaviorName.attach implementation, i.e.
+   * behaviorName-processed, to ensure the behavior is detached only from
+   * previously processed elements.
+   *
+   * @param context
+   *   An element to detach behaviors from. If none is given, the document element
+   *   is used.
+   * @param settings
+   *   An object containing settings for the current context. If none given, the
+   *   global drupalSettings object is used.
+   * @param trigger
+   *   A string containing what's causing the behaviors to be detached. The
+   *   possible triggers are:
+   *   - unload: (default) The context element is being removed from the DOM.
+   *   - move: The element is about to be moved within the DOM (for example,
+   *     during a tabledrag row swap). After the move is completed,
+   *     Drupal.attachBehaviors() is called, so that the behavior can undo
+   *     whatever it did in response to the move. Many behaviors won't need to
+   *     do anything simply in response to the element being moved, but because
+   *     IFRAME elements reload their "src" when being moved within the DOM,
+   *     behaviors bound to IFRAME elements (like WYSIWYG editors) may need to
+   *     take some action.
+   *   - serialize: When an Ajax form is submitted, this is called with the
+   *     form as the context. This provides every behavior within the form an
+   *     opportunity to ensure that the field elements have correct content
+   *     in them before the form is serialized. The canonical use-case is so
+   *     that WYSIWYG editors can update the hidden textarea to which they are
+   *     bound.
+   *
+   * @see Drupal.attachBehaviors
+   */
+  Drupal.detachBehaviors = function (context, settings, trigger) {
+    context = context || document;
+    settings = settings || drupalSettings;
+    trigger = trigger || 'unload';
+    var i, errors = [], behaviors = Drupal.behaviors;
+    // Execute all of them.
+    for (i in behaviors) {
+      if (behaviors.hasOwnProperty(i) && typeof behaviors[i].detach === 'function') {
+        // Don't stop the execution of behaviors in case of an error.
+        try {
+          behaviors[i].detach(context, settings, trigger);
+        }
+        catch (e) {
+          errors.push({behavior: i, error: e});
+        }
+      }
+    }
+    // Once all behaviors have been processed, inform the user about errors.
+    if (errors.length) {
+      throw new DrupalBehaviorError(errors, 'detach:' + trigger);
+    }
+  };
+
+  /**
+   * Helper to test document width for mobile configurations.
+   * @todo Temporary solution for the mobile initiative.
+   */
+  Drupal.checkWidthBreakpoint = function (width) {
+    width = width || drupalSettings.widthBreakpoint || 640;
+    return (document.documentElement.clientWidth > width);
+  };
+
+  /**
+   * Encode special characters in a plain-text string for display as HTML.
+   *
+   * @param str
+   *   The string to be encoded.
+   * @return
+   *   The encoded string.
+   * @ingroup sanitization
+   */
+  Drupal.checkPlain = function (str) {
+    str = str.toString()
+      .replace(/&/g, '&amp;')
+      .replace(/"/g, '&quot;')
+      .replace(/</g, '&lt;')
+      .replace(/>/g, '&gt;');
+    return str;
+  };
+
+  /**
+   * Replace placeholders with sanitized values in a string.
+   *
+   * @param {String} str
+   *   A string with placeholders.
+   * @param {Object} args
+   *   An object of replacements pairs to make. Incidences of any key in this
+   *   array are replaced with the corresponding value. Based on the first
+   *   character of the key, the value is escaped and/or themed:
+   *    - !variable: inserted as is
+   *    - @variable: escape plain text to HTML (Drupal.checkPlain)
+   *    - %variable: escape text and theme as a placeholder for user-submitted
+   *      content (checkPlain + Drupal.theme('placeholder'))
+   *
+   * @return {String}
+   *   Returns the replaced string.
+   *
+   * @see Drupal.t()
+   * @ingroup sanitization
+   */
+  Drupal.formatString = function (str, args) {
+    // Transform arguments before inserting them.
+    for (var key in args) {
+      if (args.hasOwnProperty(key)) {
+        switch (key.charAt(0)) {
+          // Escaped only.
+          case '@':
+            args[key] = Drupal.checkPlain(args[key]);
+            break;
+          // Pass-through.
+          case '!':
+            break;
+          // Escaped and placeholder.
+          default:
+            args[key] = Drupal.theme('placeholder', args[key]);
+            break;
+        }
+      }
+    }
+
+    return Drupal.stringReplace(str, args, null);
+  };
+
+  /**
+   * Replace substring.
+   *
+   * The longest keys will be tried first. Once a substring has been replaced,
+   * its new value will not be searched again.
+   *
+   * @param {String} str
+   *   A string with placeholders.
+   * @param {Object} args
+   *   Key-value pairs.
+   * @param {Array|null} keys
+   *   Array of keys from the "args".  Internal use only.
+   *
+   * @return {String}
+   *   Returns the replaced string.
+   */
+  Drupal.stringReplace = function (str, args, keys) {
+    if (str.length === 0) {
+      return str;
+    }
+
+    // If the array of keys is not passed then collect the keys from the args.
+    if (!Array.isArray(keys)) {
+      keys = [];
+      for (var k in args) {
+        if (args.hasOwnProperty(k)) {
+          keys.push(k);
+        }
+      }
+
+      // Order the keys by the character length. The shortest one is the first.
+      keys.sort(function (a, b) { return a.length - b.length; });
+    }
+
+    if (keys.length === 0) {
+      return str;
+    }
+
+    // Take next longest one from the end.
+    var key = keys.pop();
+    var fragments = str.split(key);
+
+    if (keys.length) {
+      for (var i = 0; i < fragments.length; i++) {
+        // Process each fragment with a copy of remaining keys.
+        fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));
+      }
+    }
+
+    return fragments.join(args[key]);
+  };
+
+  /**
+   * Translate strings to the page language or a given language.
+   *
+   * See the documentation of the server-side t() function for further details.
+   *
+   * @param str
+   *   A string containing the English string to translate.
+   * @param args
+   *   An object of replacements pairs to make after translation. Incidences
+   *   of any key in this array are replaced with the corresponding value.
+   *   See Drupal.formatString().
+   *
+   * @param options
+   *   - 'context' (defaults to the empty context): The context the source string
+   *     belongs to.
+   *
+   * @return
+   *   The translated string.
+   */
+  Drupal.t = function (str, args, options) {
+    options = options || {};
+    options.context = options.context || '';
+
+    // Fetch the localized version of the string.
+    if (Drupal.locale.strings && Drupal.locale.strings[options.context] && Drupal.locale.strings[options.context][str]) {
+      str = Drupal.locale.strings[options.context][str];
+    }
+
+    if (args) {
+      str = Drupal.formatString(str, args);
+    }
+    return str;
+  };
+
+  /**
+   * Returns the URL to a Drupal page.
+   */
+  Drupal.url = function (path) {
+    return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;
+  };
+
+  /**
+   * Format a string containing a count of items.
+   *
+   * This function ensures that the string is pluralized correctly. Since
+   * Drupal.t() is called by this function, make sure not to pass
+   * already-localized strings to it.
+   *
+   * See the documentation of the server-side
+   * \Drupal\Core\StringTranslation\TranslationInterface::formatPlural()
+   * function for more details.
+   *
+   * @param {Number} count
+   *   The item count to display.
+   * @param {String} singular
+   *   The string for the singular case. Please make sure it is clear this is
+   *   singular, to ease translation (e.g. use "1 new comment" instead of "1
+   *   new"). Do not use @count in the singular string.
+   * @param {String} plural
+   *   The string for the plural case. Please make sure it is clear this is
+   *   plural, to ease translation. Use @count in place of the item count, as in
+   *   "@count new comments".
+   * @param {Object} args
+   *   An object of replacements pairs to make after translation. Incidences
+   *   of any key in this array are replaced with the corresponding value.
+   *   See Drupal.formatString().
+   *   Note that you do not need to include @count in this array.
+   *   This replacement is done automatically for the plural case.
+   * @param {Object} options
+   *   The options to pass to the Drupal.t() function.
+   *
+   * @return {String}
+   *   A translated string.
+   */
+  Drupal.formatPlural = function (count, singular, plural, args, options) {
+    args = args || {};
+    args['@count'] = count;
+
+    var pluralDelimiter = drupalSettings.locale.pluralDelimiter,
+      translations = Drupal.t(singular + pluralDelimiter + plural, args, options).split(pluralDelimiter),
+      index = 0;
+
+    // Determine the index of the plural form.
+    if (Drupal.locale.pluralFormula) {
+      index = count in Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula[count] : Drupal.locale.pluralFormula['default'];
+    }
+    else if (args['@count'] !== 1) {
+      index = 1;
+    }
+
+    return translations[index];
+  };
+
+  /**
+   * Encodes a Drupal path for use in a URL.
+   *
+   * For aesthetic reasons slashes are not escaped.
+   */
+  Drupal.encodePath = function (item) {
+    return window.encodeURIComponent(item).replace(/%2F/g, '/');
+  };
+
+  /**
+   * Generate the themed representation of a Drupal object.
+   *
+   * All requests for themed output must go through this function. It examines
+   * the request and routes it to the appropriate theme function. If the current
+   * theme does not provide an override function, the generic theme function is
+   * called.
+   *
+   * For example, to retrieve the HTML for text that should be emphasized and
+   * displayed as a placeholder inside a sentence, call
+   * Drupal.theme('placeholder', text).
+   *
+   * @param func
+   *   The name of the theme function to call.
+   * @param ...
+   *   Additional arguments to pass along to the theme function.
+   * @return
+   *   Any data the theme function returns. This could be a plain HTML string,
+   *   but also a complex object.
+   */
+  Drupal.theme = function (func) {
+    var args = Array.prototype.slice.apply(arguments, [1]);
+    if (func in Drupal.theme) {
+      return Drupal.theme[func].apply(this, args);
+    }
+  };
+
+  /**
+   * Formats text for emphasized display in a placeholder inside a sentence.
+   *
+   * @param str
+   *   The text to format (plain-text).
+   * @return
+   *   The formatted text (html).
+   */
+  Drupal.theme.placeholder = function (str) {
+    return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>';
+  };
+
+})(domready, Drupal, window.drupalSettings);
+;
+/*!
+ * jQuery UI Core 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/category/ui-core/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	runiqueId = /^ui-id-\d+$/;
+
+// $.ui might exist from components with no dependencies, e.g., $.ui.position
+$.ui = $.ui || {};
+
+$.extend( $.ui, {
+	version: "1.10.2",
+
+	keyCode: {
+		BACKSPACE: 8,
+		COMMA: 188,
+		DELETE: 46,
+		DOWN: 40,
+		END: 35,
+		ENTER: 13,
+		ESCAPE: 27,
+		HOME: 36,
+		LEFT: 37,
+		NUMPAD_ADD: 107,
+		NUMPAD_DECIMAL: 110,
+		NUMPAD_DIVIDE: 111,
+		NUMPAD_ENTER: 108,
+		NUMPAD_MULTIPLY: 106,
+		NUMPAD_SUBTRACT: 109,
+		PAGE_DOWN: 34,
+		PAGE_UP: 33,
+		PERIOD: 190,
+		RIGHT: 39,
+		SPACE: 32,
+		TAB: 9,
+		UP: 38
+	}
+});
+
+// plugins
+$.fn.extend({
+	focus: (function( orig ) {
+		return function( delay, fn ) {
+			return typeof delay === "number" ?
+				this.each(function() {
+					var elem = this;
+					setTimeout(function() {
+						$( elem ).focus();
+						if ( fn ) {
+							fn.call( elem );
+						}
+					}, delay );
+				}) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.focus ),
+
+	scrollParent: function() {
+		var scrollParent;
+		if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
+			scrollParent = this.parents().filter(function() {
+				return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		} else {
+			scrollParent = this.parents().filter(function() {
+				return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		}
+
+		return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
+	},
+
+	zIndex: function( zIndex ) {
+		if ( zIndex !== undefined ) {
+			return this.css( "zIndex", zIndex );
+		}
+
+		if ( this.length ) {
+			var elem = $( this[ 0 ] ), position, value;
+			while ( elem.length && elem[ 0 ] !== document ) {
+				// Ignore z-index if position is set to a value where z-index is ignored by the browser
+				// This makes behavior of this function consistent across browsers
+				// WebKit always returns auto if the element is positioned
+				position = elem.css( "position" );
+				if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+					// IE returns 0 when zIndex is not specified
+					// other browsers return a string
+					// we ignore the case of nested elements with an explicit value of 0
+					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+					value = parseInt( elem.css( "zIndex" ), 10 );
+					if ( !isNaN( value ) && value !== 0 ) {
+						return value;
+					}
+				}
+				elem = elem.parent();
+			}
+		}
+
+		return 0;
+	},
+
+	uniqueId: function() {
+		return this.each(function() {
+			if ( !this.id ) {
+				this.id = "ui-id-" + (++uuid);
+			}
+		});
+	},
+
+	removeUniqueId: function() {
+		return this.each(function() {
+			if ( runiqueId.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		});
+	}
+});
+
+// selectors
+function focusable( element, isTabIndexNotNaN ) {
+	var map, mapName, img,
+		nodeName = element.nodeName.toLowerCase();
+	if ( "area" === nodeName ) {
+		map = element.parentNode;
+		mapName = map.name;
+		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+			return false;
+		}
+		img = $( "img[usemap=#" + mapName + "]" )[0];
+		return !!img && visible( img );
+	}
+	return ( /input|select|textarea|button|object/.test( nodeName ) ?
+		!element.disabled :
+		"a" === nodeName ?
+			element.href || isTabIndexNotNaN :
+			isTabIndexNotNaN) &&
+		// the element and all of its ancestors must be visible
+		visible( element );
+}
+
+function visible( element ) {
+	return $.expr.filters.visible( element ) &&
+		!$( element ).parents().addBack().filter(function() {
+			return $.css( this, "visibility" ) === "hidden";
+		}).length;
+}
+
+$.extend( $.expr[ ":" ], {
+	data: $.expr.createPseudo ?
+		$.expr.createPseudo(function( dataName ) {
+			return function( elem ) {
+				return !!$.data( elem, dataName );
+			};
+		}) :
+		// support: jQuery <1.8
+		function( elem, i, match ) {
+			return !!$.data( elem, match[ 3 ] );
+		},
+
+	focusable: function( element ) {
+		return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+	},
+
+	tabbable: function( element ) {
+		var tabIndex = $.attr( element, "tabindex" ),
+			isTabIndexNaN = isNaN( tabIndex );
+		return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+	}
+});
+
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+	$.each( [ "Width", "Height" ], function( i, name ) {
+		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+			type = name.toLowerCase(),
+			orig = {
+				innerWidth: $.fn.innerWidth,
+				innerHeight: $.fn.innerHeight,
+				outerWidth: $.fn.outerWidth,
+				outerHeight: $.fn.outerHeight
+			};
+
+		function reduce( elem, size, border, margin ) {
+			$.each( side, function() {
+				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+				if ( border ) {
+					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+				}
+				if ( margin ) {
+					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+				}
+			});
+			return size;
+		}
+
+		$.fn[ "inner" + name ] = function( size ) {
+			if ( size === undefined ) {
+				return orig[ "inner" + name ].call( this );
+			}
+
+			return this.each(function() {
+				$( this ).css( type, reduce( this, size ) + "px" );
+			});
+		};
+
+		$.fn[ "outer" + name] = function( size, margin ) {
+			if ( typeof size !== "number" ) {
+				return orig[ "outer" + name ].call( this, size );
+			}
+
+			return this.each(function() {
+				$( this).css( type, reduce( this, size, true, margin ) + "px" );
+			});
+		};
+	});
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
+	$.fn.removeData = (function( removeData ) {
+		return function( key ) {
+			if ( arguments.length ) {
+				return removeData.call( this, $.camelCase( key ) );
+			} else {
+				return removeData.call( this );
+			}
+		};
+	})( $.fn.removeData );
+}
+
+
+
+
+
+// deprecated
+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+$.support.selectstart = "onselectstart" in document.createElement( "div" );
+$.fn.extend({
+	disableSelection: function() {
+		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+			".ui-disableSelection", function( event ) {
+				event.preventDefault();
+			});
+	},
+
+	enableSelection: function() {
+		return this.unbind( ".ui-disableSelection" );
+	}
+});
+
+$.extend( $.ui, {
+	// $.ui.plugin is deprecated.  Use the proxy pattern instead.
+	plugin: {
+		add: function( module, option, set ) {
+			var i,
+				proto = $.ui[ module ].prototype;
+			for ( i in set ) {
+				proto.plugins[ i ] = proto.plugins[ i ] || [];
+				proto.plugins[ i ].push( [ option, set[ i ] ] );
+			}
+		},
+		call: function( instance, name, args ) {
+			var i,
+				set = instance.plugins[ name ];
+			if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
+				return;
+			}
+
+			for ( i = 0; i < set.length; i++ ) {
+				if ( instance.options[ set[ i ][ 0 ] ] ) {
+					set[ i ][ 1 ].apply( instance.element, args );
+				}
+			}
+		}
+	},
+
+	// only used by resizable
+	hasScroll: function( el, a ) {
+
+		//If overflow is hidden, the element might have extra content, but the user wants to hide it
+		if ( $( el ).css( "overflow" ) === "hidden") {
+			return false;
+		}
+
+		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
+			has = false;
+
+		if ( el[ scroll ] > 0 ) {
+			return true;
+		}
+
+		// TODO: determine which cases actually cause this to happen
+		// if the element doesn't have the scroll set, see if it's possible to
+		// set the scroll
+		el[ scroll ] = 1;
+		has = ( el[ scroll ] > 0 );
+		el[ scroll ] = 0;
+		return has;
+	}
+});
+
+})( jQuery );
+;
+/*!
+ * jQuery UI Widget 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/jQuery.widget/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	slice = Array.prototype.slice,
+	_cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+	for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+		try {
+			$( elem ).triggerHandler( "remove" );
+		// http://bugs.jquery.com/ticket/8235
+		} catch( e ) {}
+	}
+	_cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+	var fullName, existingConstructor, constructor, basePrototype,
+		// proxiedPrototype allows the provided prototype to remain unmodified
+		// so that it can be used as a mixin for multiple widgets (#8876)
+		proxiedPrototype = {},
+		namespace = name.split( "." )[ 0 ];
+
+	name = name.split( "." )[ 1 ];
+	fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	// create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+		// allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+	// extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+		// copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+		// track widgets that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	});
+
+	basePrototype = new base();
+	// we need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = (function() {
+			var _super = function() {
+					return base.prototype[ prop ].apply( this, arguments );
+				},
+				_superApply = function( args ) {
+					return base.prototype[ prop ].apply( this, args );
+				};
+			return function() {
+				var __super = this._super,
+					__superApply = this._superApply,
+					returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		})();
+	});
+	constructor.prototype = $.widget.extend( basePrototype, {
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for widgets that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	});
+
+	// If this widget is being redefined then we need to find all widgets that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+		});
+		// remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+};
+
+$.widget.extend = function( target ) {
+	var input = slice.call( arguments, 1 ),
+		inputIndex = 0,
+		inputLength = input.length,
+		key,
+		value;
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string",
+			args = slice.call( arguments, 1 ),
+			returnValue = this;
+
+		// allow multiple hashes to be passed on init
+		options = !isMethodCall && args.length ?
+			$.widget.extend.apply( null, [ options ].concat(args) ) :
+			options;
+
+		if ( isMethodCall ) {
+			this.each(function() {
+				var methodValue,
+					instance = $.data( this, fullName );
+				if ( !instance ) {
+					return $.error( "cannot call methods on " + name + " prior to initialization; " +
+						"attempted to call method '" + options + "'" );
+				}
+				if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+					return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+				}
+				methodValue = instance[ options ].apply( instance, args );
+				if ( methodValue !== instance && methodValue !== undefined ) {
+					returnValue = methodValue && methodValue.jquery ?
+						returnValue.pushStack( methodValue.get() ) :
+						methodValue;
+					return false;
+				}
+			});
+		} else {
+			this.each(function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} )._init();
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			});
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+	options: {
+		disabled: false,
+
+		// callbacks
+		create: null
+	},
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = uuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			});
+			this.document = $( element.style ?
+				// element within the document
+				element.ownerDocument :
+				// element is window or document
+				element.document || element );
+			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+		}
+
+		this._create();
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+	_getCreateOptions: $.noop,
+	_getCreateEventData: $.noop,
+	_create: $.noop,
+	_init: $.noop,
+
+	destroy: function() {
+		this._destroy();
+		// we can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.unbind( this.eventNamespace )
+			// 1.9 BC for #7810
+			// TODO remove dual storage
+			.removeData( this.widgetName )
+			.removeData( this.widgetFullName )
+			// support: jquery <1.6.3
+			// http://bugs.jquery.com/ticket/9413
+			.removeData( $.camelCase( this.widgetFullName ) );
+		this.widget()
+			.unbind( this.eventNamespace )
+			.removeAttr( "aria-disabled" )
+			.removeClass(
+				this.widgetFullName + "-disabled " +
+				"ui-state-disabled" );
+
+		// clean up events and states
+		this.bindings.unbind( this.eventNamespace );
+		this.hoverable.removeClass( "ui-state-hover" );
+		this.focusable.removeClass( "ui-state-focus" );
+	},
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key,
+			parts,
+			curOption,
+			i;
+
+		if ( arguments.length === 0 ) {
+			// don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+			// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( value === undefined ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( value === undefined ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+	_setOption: function( key, value ) {
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this.widget()
+				.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
+				.attr( "aria-disabled", value );
+			this.hoverable.removeClass( "ui-state-hover" );
+			this.focusable.removeClass( "ui-state-focus" );
+		}
+
+		return this;
+	},
+
+	enable: function() {
+		return this._setOption( "disabled", false );
+	},
+	disable: function() {
+		return this._setOption( "disabled", true );
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement,
+			instance = this;
+
+		// no suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// no element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			// accept selectors, DOM elements
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+				// allow widgets to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+							$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^(\w+)\s*(.*)$/ ),
+				eventName = match[1] + instance.eventNamespace,
+				selector = match[2];
+			if ( selector ) {
+				delegateElement.delegate( selector, eventName, handlerProxy );
+			} else {
+				element.bind( eventName, handlerProxy );
+			}
+		});
+	},
+
+	_off: function( element, eventName ) {
+		eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+		element.unbind( eventName ).undelegate( eventName );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-hover" );
+			}
+		});
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-focus" );
+			}
+		});
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig,
+			callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+		// the original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+		var hasOptions,
+			effectName = !options ?
+				method :
+				options === true || typeof options === "number" ?
+					defaultEffect :
+					options.effect || defaultEffect;
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue(function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			});
+		}
+	};
+});
+
+})( jQuery );
+;
+/**
+ * @file
+ * Javascript related to contextual links.
+ */
+(function ($) {
+
+  "use strict";
+
+  Drupal.behaviors.viewsContextualLinks = {
+    attach: function (context) {
+      var id = $('body').attr('data-views-page-contextual-id');
+
+      $('[data-contextual-id="' + id + '"]')
+        .closest(':has(.view)')
+        .addClass('contextual-region');
+    }
+  };
+
+})(jQuery);
+;
+/**
+ * @file
+ * Attaches behaviors for the Contextual module.
+ */
+
+(function ($, Drupal, drupalSettings, _, Backbone, JSON, storage) {
+
+  "use strict";
+
+  var options = $.extend(drupalSettings.contextual,
+    // Merge strings on top of drupalSettings so that they are not mutable.
+    {
+      strings: {
+        open: Drupal.t('Open'),
+        close: Drupal.t('Close')
+      }
+    }
+  );
+
+  // Clear the cached contextual links whenever the current user's set of
+  // permissions changes.
+  var cachedPermissionsHash = storage.getItem('Drupal.contextual.permissionsHash');
+  var permissionsHash = drupalSettings.user.permissionsHash;
+  if (cachedPermissionsHash !== permissionsHash) {
+    if (typeof permissionsHash === 'string') {
+      _.chain(storage).keys().each(function (key) {
+        if (key.substring(0, 18) === 'Drupal.contextual.') {
+          storage.removeItem(key);
+        }
+      });
+    }
+    storage.setItem('Drupal.contextual.permissionsHash', permissionsHash);
+  }
+
+  /**
+   * Initializes a contextual link: updates its DOM, sets up model and views
+   *
+   * @param jQuery $contextual
+   *   A contextual links placeholder DOM element, containing the actual
+   *   contextual links as rendered by the server.
+   * @param string html
+   *   The server-side rendered HTML for this contextual link.
+   */
+  function initContextual($contextual, html) {
+    var $region = $contextual.closest('.contextual-region');
+    var contextual = Drupal.contextual;
+
+    $contextual
+      // Update the placeholder to contain its rendered contextual links.
+      .html(html)
+      // Use the placeholder as a wrapper with a specific class to provide
+      // positioning and behavior attachment context.
+      .addClass('contextual')
+      // Ensure a trigger element exists before the actual contextual links.
+      .prepend(Drupal.theme('contextualTrigger'));
+
+    // Set the destination parameter on each of the contextual links.
+    var destination = 'destination=' + Drupal.encodePath(drupalSettings.path.currentPath);
+    $contextual.find('.contextual-links a').each(function () {
+      var url = this.getAttribute('href');
+      var glue = (url.indexOf('?') === -1) ? '?' : '&';
+      this.setAttribute('href', url + glue + destination);
+    });
+
+    // Create a model and the appropriate views.
+    var model = new contextual.StateModel({
+      title: $region.find('h2:first').text().trim()
+    });
+    var viewOptions = $.extend({el: $contextual, model: model}, options);
+    contextual.views.push({
+      visual: new contextual.VisualView(viewOptions),
+      aural: new contextual.AuralView(viewOptions),
+      keyboard: new contextual.KeyboardView(viewOptions)
+    });
+    contextual.regionViews.push(new contextual.RegionView(
+      $.extend({el: $region, model: model}, options))
+    );
+
+    // Add the model to the collection. This must happen after the views have been
+    // associated with it, otherwise collection change event handlers can't
+    // trigger the model change event handler in its views.
+    contextual.collection.add(model);
+
+    // Let other JavaScript react to the adding of a new contextual link.
+    $(document).trigger('drupalContextualLinkAdded', {
+      $el: $contextual,
+      $region: $region,
+      model: model
+    });
+
+    // Fix visual collisions between contextual link triggers.
+    adjustIfNestedAndOverlapping($contextual);
+  }
+
+  /**
+   * Determines if a contextual link is nested & overlapping, if so: adjusts it.
+   *
+   * This only deals with two levels of nesting; deeper levels are not touched.
+   *
+   * @param jQuery $contextual
+   *   A contextual links placeholder DOM element, containing the actual
+   *   contextual links as rendered by the server.
+   */
+  function adjustIfNestedAndOverlapping($contextual) {
+    var $contextuals = $contextual
+      // @todo confirm that .closest() is not sufficient
+      .parents('.contextual-region').eq(-1)
+      .find('.contextual');
+
+    // Early-return when there's no nesting.
+    if ($contextuals.length === 1) {
+      return;
+    }
+
+    // If the two contextual links overlap, then we move the second one.
+    var firstTop = $contextuals.eq(0).offset().top;
+    var secondTop = $contextuals.eq(1).offset().top;
+    if (firstTop === secondTop) {
+      var $nestedContextual = $contextuals.eq(1);
+
+      // Retrieve height of nested contextual link.
+      var height = 0;
+      var $trigger = $nestedContextual.find('.trigger');
+      // Elements with the .visually-hidden class have no dimensions, so this
+      // class must be temporarily removed to the calculate the height.
+      $trigger.removeClass('visually-hidden');
+      height = $nestedContextual.height();
+      $trigger.addClass('visually-hidden');
+
+      // Adjust nested contextual link's position.
+      $nestedContextual.css({top: $nestedContextual.position().top + height});
+    }
+  }
+
+  /**
+   * Attaches outline behavior for regions associated with contextual links.
+   *
+   * Events
+   *   Contextual triggers an event that can be used by other scripts.
+   *   - drupalContextualLinkAdded: Triggered when a contextual link is added.
+   */
+  Drupal.behaviors.contextual = {
+    attach: function (context) {
+      var $context = $(context);
+
+      // Find all contextual links placeholders, if any.
+      var $placeholders = $context.find('[data-contextual-id]').once('contextual-render');
+      if ($placeholders.length === 0) {
+        return;
+      }
+
+      // Collect the IDs for all contextual links placeholders.
+      var ids = [];
+      $placeholders.each(function () {
+        ids.push($(this).attr('data-contextual-id'));
+      });
+
+      // Update all contextual links placeholders whose HTML is cached.
+      var uncachedIDs = _.filter(ids, function initIfCached(contextualID) {
+        var html = storage.getItem('Drupal.contextual.' + contextualID);
+        if (html !== null) {
+          // Initialize after the current executation cycle, to make the AJAX
+          // request for retrieving the uncached contextual links as soon as
+          // possible, but also to ensure that other Drupal behaviors have had the
+          // chance to set up an event listener on the Backbone collection
+          // Drupal.contextual.collection.
+          window.setTimeout(function () {
+            initContextual($context.find('[data-contextual-id="' + contextualID + '"]'), html);
+          });
+          return false;
+        }
+        return true;
+      });
+
+      // Perform an AJAX request to let the server render the contextual links for
+      // each of the placeholders.
+      if (uncachedIDs.length > 0) {
+        $.ajax({
+          url: Drupal.url('contextual/render'),
+          type: 'POST',
+          data: {'ids[]': uncachedIDs},
+          dataType: 'json',
+          success: function (results) {
+            _.each(results, function (html, contextualID) {
+              // Store the metadata.
+              storage.setItem('Drupal.contextual.' + contextualID, html);
+              // If the rendered contextual links are empty, then the current user
+              // does not have permission to access the associated links: don't
+              // render anything.
+              if (html.length > 0) {
+                // Update the placeholders to contain its rendered contextual links.
+                // Usually there will only be one placeholder, but it's possible for
+                // multiple identical placeholders exist on the page (probably
+                // because the same content appears more than once).
+                $placeholders = $context.find('[data-contextual-id="' + contextualID + '"]');
+
+                // Initialize the contextual links.
+                for (var i = 0; i < $placeholders.length; i++) {
+                  initContextual($placeholders.eq(i), html);
+                }
+              }
+            });
+          }
+        });
+      }
+    }
+  };
+
+  Drupal.contextual = {
+    // The Drupal.contextual.View instances associated with each list element of
+    // contextual links.
+    views: [],
+
+    // The Drupal.contextual.RegionView instances associated with each contextual
+    // region element.
+    regionViews: []
+  };
+
+  // A Backbone.Collection of Drupal.contextual.StateModel instances.
+  Drupal.contextual.collection = new Backbone.Collection([], {model: Drupal.contextual.StateModel});
+
+  /**
+   * A trigger is an interactive element often bound to a click handler.
+   *
+   * @return String
+   *   A string representing a DOM fragment.
+   */
+  Drupal.theme.contextualTrigger = function () {
+    return '<button class="trigger visually-hidden focusable" type="button"></button>';
+  };
+
+})(jQuery, Drupal, drupalSettings, _, Backbone, window.JSON, window.sessionStorage);
+;
+/**
+ * @file
+ * A Backbone Model for the state of a contextual link's trigger, list & region.
+ */
+
+(function (Drupal, Backbone) {
+
+  "use strict";
+
+  /**
+   * Models the state of a contextual link's trigger, list & region.
+   */
+  Drupal.contextual.StateModel = Backbone.Model.extend({
+
+    defaults: {
+      // The title of the entity to which these contextual links apply.
+      title: '',
+      // Represents if the contextual region is being hovered.
+      regionIsHovered: false,
+      // Represents if the contextual trigger or options have focus.
+      hasFocus: false,
+      // Represents if the contextual options for an entity are available to
+      // be selected (i.e. whether the list of options is visible).
+      isOpen: false,
+      // When the model is locked, the trigger remains active.
+      isLocked: false
+    },
+
+    /**
+     * Opens or closes the contextual link.
+     *
+     * If it is opened, then also give focus.
+     */
+    toggleOpen: function () {
+      var newIsOpen = !this.get('isOpen');
+      this.set('isOpen', newIsOpen);
+      if (newIsOpen) {
+        this.focus();
+      }
+      return this;
+    },
+
+    /**
+     * Closes this contextual link.
+     *
+     * Does not call blur() because we want to allow a contextual link to have
+     * focus, yet be closed for example when hovering.
+     */
+    close: function () {
+      this.set('isOpen', false);
+      return this;
+    },
+
+    /**
+     * Gives focus to this contextual link.
+     *
+     * Also closes + removes focus from every other contextual link.
+     */
+    focus: function () {
+      this.set('hasFocus', true);
+      var cid = this.cid;
+      this.collection.each(function (model) {
+        if (model.cid !== cid) {
+          model.close().blur();
+        }
+      });
+      return this;
+    },
+
+    /**
+     * Removes focus from this contextual link, unless it is open.
+     */
+    blur: function () {
+      if (!this.get('isOpen')) {
+        this.set('hasFocus', false);
+      }
+      return this;
+    }
+
+  });
+
+})(Drupal, Backbone);
+;
+/**
+ * @file
+ * A Backbone View that provides the aural view of a contextual link.
+ */
+
+(function (Drupal, Backbone) {
+
+  "use strict";
+
+  /**
+   * Renders the aural view of a contextual link (i.e. screen reader support).
+   */
+  Drupal.contextual.AuralView = Backbone.View.extend({
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      this.options = options;
+
+      this.listenTo(this.model, 'change', this.render);
+
+      // Use aria-role form so that the number of items in the list is spoken.
+      this.$el.attr('role', 'form');
+
+      // Initial render.
+      this.render();
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      var isOpen = this.model.get('isOpen');
+
+      // Set the hidden property of the links.
+      this.$el.find('.contextual-links')
+        .prop('hidden', !isOpen);
+
+      // Update the view of the trigger.
+      this.$el.find('.trigger')
+        .text(Drupal.t('@action @title configuration options', {
+          '@action': (!isOpen) ? this.options.strings.open : this.options.strings.close,
+          '@title': this.model.get('title')
+        }))
+        .attr('aria-pressed', isOpen);
+    }
+
+  });
+
+})(Drupal, Backbone);
+;
+/**
+ * @file
+ * A Backbone View that provides keyboard interaction for a contextual link.
+ */
+
+(function (Drupal, Backbone) {
+
+  "use strict";
+
+  /**
+   * Provides keyboard interaction for a contextual link.
+   */
+  Drupal.contextual.KeyboardView = Backbone.View.extend({
+    events: {
+      'focus .trigger': 'focus',
+      'focus .contextual-links a': 'focus',
+      'blur .trigger': function () { this.model.blur(); },
+      'blur .contextual-links a': function () {
+        // Set up a timeout to allow a user to tab between the trigger and the
+        // contextual links without the menu dismissing.
+        var that = this;
+        this.timer = window.setTimeout(function () {
+          that.model.close().blur();
+        }, 150);
+      }
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      // The timer is used to create a delay before dismissing the contextual
+      // links on blur. This is only necessary when keyboard users tab into
+      // contextual links without edit mode (i.e. without TabbingManager).
+      // That means that if we decide to disable tabbing of contextual links
+      // without edit mode, all this timer logic can go away.
+      this.timer = NaN;
+    },
+
+    /**
+     * Sets focus on the model; Clears the timer that dismisses the links.
+     */
+    focus: function () {
+      // Clear the timeout that might have been set by blurring a link.
+      window.clearTimeout(this.timer);
+      this.model.focus();
+    }
+
+  });
+
+})(Drupal, Backbone);
+;
+/**
+ * @file
+ * A Backbone View that renders the visual view of a contextual region element.
+ */
+
+(function (Drupal, Backbone, Modernizr) {
+
+  "use strict";
+
+  /**
+   * Renders the visual view of a contextual region element.
+   */
+  Drupal.contextual.RegionView = Backbone.View.extend({
+
+    events: function () {
+      var mapping = {
+        mouseenter: function () { this.model.set('regionIsHovered', true); },
+        mouseleave: function () {
+          this.model.close().blur().set('regionIsHovered', false);
+        }
+      };
+      // We don't want mouse hover events on touch.
+      if (Modernizr.touch) {
+        mapping = {};
+      }
+      return mapping;
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change:hasFocus', this.render);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      this.$el.toggleClass('focus', this.model.get('hasFocus'));
+
+      return this;
+    }
+
+  });
+
+})(Drupal, Backbone, Modernizr);
+;
+/**
+ * @file
+ * A Backbone View that provides the visual view of a contextual link.
+ */
+
+(function (Drupal, Backbone, Modernizr) {
+
+  "use strict";
+
+  /**
+   * Renders the visual view of a contextual link. Listens to mouse & touch.
+   */
+  Drupal.contextual.VisualView = Backbone.View.extend({
+
+    events: function () {
+      // Prevents delay and simulated mouse events.
+      var touchEndToClick = function (event) {
+        event.preventDefault();
+        event.target.click();
+      };
+      var mapping = {
+        'click .trigger': function () { this.model.toggleOpen(); },
+        'touchend .trigger': touchEndToClick,
+        'click .contextual-links a': function () { this.model.close().blur(); },
+        'touchend .contextual-links a': touchEndToClick
+      };
+      // We only want mouse hover events on non-touch.
+      if (!Modernizr.touch) {
+        mapping.mouseenter = function () { this.model.focus(); };
+      }
+      return mapping;
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change', this.render);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      var isOpen = this.model.get('isOpen');
+      // The trigger should be visible when:
+      //  - the mouse hovered over the region,
+      //  - the trigger is locked,
+      //  - and for as long as the contextual menu is open.
+      var isVisible = this.model.get('isLocked') || this.model.get('regionIsHovered') || isOpen;
+
+      this.$el
+        // The open state determines if the links are visible.
+        .toggleClass('open', isOpen)
+        // Update the visibility of the trigger.
+        .find('.trigger').toggleClass('visually-hidden', !isVisible);
+
+      // Nested contextual region handling: hide any nested contextual triggers.
+      if ('isOpen' in this.model.changed) {
+        this.$el.closest('.contextual-region')
+          .find('.contextual .trigger:not(:first)')
+          .toggle(!isOpen);
+      }
+
+      return this;
+    }
+
+  });
+
+})(Drupal, Backbone, Modernizr);
+;
+/*!
+ * jQuery Form Plugin
+ * version: 3.50.0-2014.02.05
+ * Requires jQuery v1.5 or later
+ * Copyright (c) 2013 M. Alsup
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Project repository: https://github.com/malsup/form
+ * Dual licensed under the MIT and GPL licenses.
+ * https://github.com/malsup/form#copyright-and-license
+ */
+/*global ActiveXObject */
+
+// AMD support
+(function (factory) {
+    "use strict";
+    if (typeof define === 'function' && define.amd) {
+        // using AMD; register as anon module
+        define(['jquery'], factory);
+    } else {
+        // no AMD; invoke directly
+        factory( (typeof(jQuery) != 'undefined') ? jQuery : window.Zepto );
+    }
+}
+
+(function($) {
+"use strict";
+
+/*
+    Usage Note:
+    -----------
+    Do not use both ajaxSubmit and ajaxForm on the same form.  These
+    functions are mutually exclusive.  Use ajaxSubmit if you want
+    to bind your own submit handler to the form.  For example,
+
+    $(document).ready(function() {
+        $('#myForm').on('submit', function(e) {
+            e.preventDefault(); // <-- important
+            $(this).ajaxSubmit({
+                target: '#output'
+            });
+        });
+    });
+
+    Use ajaxForm when you want the plugin to manage all the event binding
+    for you.  For example,
+
+    $(document).ready(function() {
+        $('#myForm').ajaxForm({
+            target: '#output'
+        });
+    });
+
+    You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
+    form does not have to exist when you invoke ajaxForm:
+
+    $('#myForm').ajaxForm({
+        delegation: true,
+        target: '#output'
+    });
+
+    When using ajaxForm, the ajaxSubmit function will be invoked for you
+    at the appropriate time.
+*/
+
+/**
+ * Feature detection
+ */
+var feature = {};
+feature.fileapi = $("<input type='file'/>").get(0).files !== undefined;
+feature.formdata = window.FormData !== undefined;
+
+var hasProp = !!$.fn.prop;
+
+// attr2 uses prop when it can but checks the return type for
+// an expected string.  this accounts for the case where a form 
+// contains inputs with names like "action" or "method"; in those
+// cases "prop" returns the element
+$.fn.attr2 = function() {
+    if ( ! hasProp ) {
+        return this.attr.apply(this, arguments);
+    }
+    var val = this.prop.apply(this, arguments);
+    if ( ( val && val.jquery ) || typeof val === 'string' ) {
+        return val;
+    }
+    return this.attr.apply(this, arguments);
+};
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+    /*jshint scripturl:true */
+
+    // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+    if (!this.length) {
+        log('ajaxSubmit: skipping submit process - no element selected');
+        return this;
+    }
+
+    var method, action, url, $form = this;
+
+    if (typeof options == 'function') {
+        options = { success: options };
+    }
+    else if ( options === undefined ) {
+        options = {};
+    }
+
+    method = options.type || this.attr2('method');
+    action = options.url  || this.attr2('action');
+
+    url = (typeof action === 'string') ? $.trim(action) : '';
+    url = url || window.location.href || '';
+    if (url) {
+        // clean url (don't include hash vaue)
+        url = (url.match(/^([^#]+)/)||[])[1];
+    }
+
+    options = $.extend(true, {
+        url:  url,
+        success: $.ajaxSettings.success,
+        type: method || $.ajaxSettings.type,
+        iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+    }, options);
+
+    // hook for manipulating the form data before it is extracted;
+    // convenient for use with rich editors like tinyMCE or FCKEditor
+    var veto = {};
+    this.trigger('form-pre-serialize', [this, options, veto]);
+    if (veto.veto) {
+        log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+        return this;
+    }
+
+    // provide opportunity to alter form data before it is serialized
+    if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+        log('ajaxSubmit: submit aborted via beforeSerialize callback');
+        return this;
+    }
+
+    var traditional = options.traditional;
+    if ( traditional === undefined ) {
+        traditional = $.ajaxSettings.traditional;
+    }
+
+    var elements = [];
+    var qx, a = this.formToArray(options.semantic, elements);
+    if (options.data) {
+        options.extraData = options.data;
+        qx = $.param(options.data, traditional);
+    }
+
+    // give pre-submit callback an opportunity to abort the submit
+    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+        log('ajaxSubmit: submit aborted via beforeSubmit callback');
+        return this;
+    }
+
+    // fire vetoable 'validate' event
+    this.trigger('form-submit-validate', [a, this, options, veto]);
+    if (veto.veto) {
+        log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+        return this;
+    }
+
+    var q = $.param(a, traditional);
+    if (qx) {
+        q = ( q ? (q + '&' + qx) : qx );
+    }
+    if (options.type.toUpperCase() == 'GET') {
+        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+        options.data = null;  // data is null for 'get'
+    }
+    else {
+        options.data = q; // data is the query string for 'post'
+    }
+
+    var callbacks = [];
+    if (options.resetForm) {
+        callbacks.push(function() { $form.resetForm(); });
+    }
+    if (options.clearForm) {
+        callbacks.push(function() { $form.clearForm(options.includeHidden); });
+    }
+
+    // perform a load on the target only if dataType is not provided
+    if (!options.dataType && options.target) {
+        var oldSuccess = options.success || function(){};
+        callbacks.push(function(data) {
+            var fn = options.replaceTarget ? 'replaceWith' : 'html';
+            $(options.target)[fn](data).each(oldSuccess, arguments);
+        });
+    }
+    else if (options.success) {
+        callbacks.push(options.success);
+    }
+
+    options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+        var context = options.context || this ;    // jQuery 1.4+ supports scope context
+        for (var i=0, max=callbacks.length; i < max; i++) {
+            callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+        }
+    };
+
+    if (options.error) {
+        var oldError = options.error;
+        options.error = function(xhr, status, error) {
+            var context = options.context || this;
+            oldError.apply(context, [xhr, status, error, $form]);
+        };
+    }
+
+     if (options.complete) {
+        var oldComplete = options.complete;
+        options.complete = function(xhr, status) {
+            var context = options.context || this;
+            oldComplete.apply(context, [xhr, status, $form]);
+        };
+    }
+
+    // are there files to upload?
+
+    // [value] (issue #113), also see comment:
+    // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
+    var fileInputs = $('input[type=file]:enabled', this).filter(function() { return $(this).val() !== ''; });
+
+    var hasFileInputs = fileInputs.length > 0;
+    var mp = 'multipart/form-data';
+    var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+    var fileAPI = feature.fileapi && feature.formdata;
+    log("fileAPI :" + fileAPI);
+    var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
+
+    var jqxhr;
+
+    // options.iframe allows user to force iframe mode
+    // 06-NOV-09: now defaulting to iframe mode if file input is detected
+    if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
+        // hack to fix Safari hang (thanks to Tim Molendijk for this)
+        // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+        if (options.closeKeepAlive) {
+            $.get(options.closeKeepAlive, function() {
+                jqxhr = fileUploadIframe(a);
+            });
+        }
+        else {
+            jqxhr = fileUploadIframe(a);
+        }
+    }
+    else if ((hasFileInputs || multipart) && fileAPI) {
+        jqxhr = fileUploadXhr(a);
+    }
+    else {
+        jqxhr = $.ajax(options);
+    }
+
+    $form.removeData('jqxhr').data('jqxhr', jqxhr);
+
+    // clear element array
+    for (var k=0; k < elements.length; k++) {
+        elements[k] = null;
+    }
+
+    // fire 'notify' event
+    this.trigger('form-submit-notify', [this, options]);
+    return this;
+
+    // utility fn for deep serialization
+    function deepSerialize(extraData){
+        var serialized = $.param(extraData, options.traditional).split('&');
+        var len = serialized.length;
+        var result = [];
+        var i, part;
+        for (i=0; i < len; i++) {
+            // #252; undo param space replacement
+            serialized[i] = serialized[i].replace(/\+/g,' ');
+            part = serialized[i].split('=');
+            // #278; use array instead of object storage, favoring array serializations
+            result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);
+        }
+        return result;
+    }
+
+     // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz)
+    function fileUploadXhr(a) {
+        var formdata = new FormData();
+
+        for (var i=0; i < a.length; i++) {
+            formdata.append(a[i].name, a[i].value);
+        }
+
+        if (options.extraData) {
+            var serializedData = deepSerialize(options.extraData);
+            for (i=0; i < serializedData.length; i++) {
+                if (serializedData[i]) {
+                    formdata.append(serializedData[i][0], serializedData[i][1]);
+                }
+            }
+        }
+
+        options.data = null;
+
+        var s = $.extend(true, {}, $.ajaxSettings, options, {
+            contentType: false,
+            processData: false,
+            cache: false,
+            type: method || 'POST'
+        });
+
+        if (options.uploadProgress) {
+            // workaround because jqXHR does not expose upload property
+            s.xhr = function() {
+                var xhr = $.ajaxSettings.xhr();
+                if (xhr.upload) {
+                    xhr.upload.addEventListener('progress', function(event) {
+                        var percent = 0;
+                        var position = event.loaded || event.position; /*event.position is deprecated*/
+                        var total = event.total;
+                        if (event.lengthComputable) {
+                            percent = Math.ceil(position / total * 100);
+                        }
+                        options.uploadProgress(event, position, total, percent);
+                    }, false);
+                }
+                return xhr;
+            };
+        }
+
+        s.data = null;
+        var beforeSend = s.beforeSend;
+        s.beforeSend = function(xhr, o) {
+            //Send FormData() provided by user
+            if (options.formData) {
+                o.data = options.formData;
+            }
+            else {
+                o.data = formdata;
+            }
+            if(beforeSend) {
+                beforeSend.call(this, xhr, o);
+            }
+        };
+        return $.ajax(s);
+    }
+
+    // private function for handling file uploads (hat tip to YAHOO!)
+    function fileUploadIframe(a) {
+        var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle;
+        var deferred = $.Deferred();
+
+        // #341
+        deferred.abort = function(status) {
+            xhr.abort(status);
+        };
+
+        if (a) {
+            // ensure that every serialized input is still enabled
+            for (i=0; i < elements.length; i++) {
+                el = $(elements[i]);
+                if ( hasProp ) {
+                    el.prop('disabled', false);
+                }
+                else {
+                    el.removeAttr('disabled');
+                }
+            }
+        }
+
+        s = $.extend(true, {}, $.ajaxSettings, options);
+        s.context = s.context || s;
+        id = 'jqFormIO' + (new Date().getTime());
+        if (s.iframeTarget) {
+            $io = $(s.iframeTarget);
+            n = $io.attr2('name');
+            if (!n) {
+                $io.attr2('name', id);
+            }
+            else {
+                id = n;
+            }
+        }
+        else {
+            $io = $('<iframe name="' + id + '" src="'+ s.iframeSrc +'" />');
+            $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+        }
+        io = $io[0];
+
+
+        xhr = { // mock object
+            aborted: 0,
+            responseText: null,
+            responseXML: null,
+            status: 0,
+            statusText: 'n/a',
+            getAllResponseHeaders: function() {},
+            getResponseHeader: function() {},
+            setRequestHeader: function() {},
+            abort: function(status) {
+                var e = (status === 'timeout' ? 'timeout' : 'aborted');
+                log('aborting upload... ' + e);
+                this.aborted = 1;
+
+                try { // #214, #257
+                    if (io.contentWindow.document.execCommand) {
+                        io.contentWindow.document.execCommand('Stop');
+                    }
+                }
+                catch(ignore) {}
+
+                $io.attr('src', s.iframeSrc); // abort op in progress
+                xhr.error = e;
+                if (s.error) {
+                    s.error.call(s.context, xhr, e, status);
+                }
+                if (g) {
+                    $.event.trigger("ajaxError", [xhr, s, e]);
+                }
+                if (s.complete) {
+                    s.complete.call(s.context, xhr, e);
+                }
+            }
+        };
+
+        g = s.global;
+        // trigger ajax global events so that activity/block indicators work like normal
+        if (g && 0 === $.active++) {
+            $.event.trigger("ajaxStart");
+        }
+        if (g) {
+            $.event.trigger("ajaxSend", [xhr, s]);
+        }
+
+        if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+            if (s.global) {
+                $.active--;
+            }
+            deferred.reject();
+            return deferred;
+        }
+        if (xhr.aborted) {
+            deferred.reject();
+            return deferred;
+        }
+
+        // add submitting element to data if we know it
+        sub = form.clk;
+        if (sub) {
+            n = sub.name;
+            if (n && !sub.disabled) {
+                s.extraData = s.extraData || {};
+                s.extraData[n] = sub.value;
+                if (sub.type == "image") {
+                    s.extraData[n+'.x'] = form.clk_x;
+                    s.extraData[n+'.y'] = form.clk_y;
+                }
+            }
+        }
+
+        var CLIENT_TIMEOUT_ABORT = 1;
+        var SERVER_ABORT = 2;
+                
+        function getDoc(frame) {
+            /* it looks like contentWindow or contentDocument do not
+             * carry the protocol property in ie8, when running under ssl
+             * frame.document is the only valid response document, since
+             * the protocol is know but not on the other two objects. strange?
+             * "Same origin policy" http://en.wikipedia.org/wiki/Same_origin_policy
+             */
+            
+            var doc = null;
+            
+            // IE8 cascading access check
+            try {
+                if (frame.contentWindow) {
+                    doc = frame.contentWindow.document;
+                }
+            } catch(err) {
+                // IE8 access denied under ssl & missing protocol
+                log('cannot get iframe.contentWindow document: ' + err);
+            }
+
+            if (doc) { // successful getting content
+                return doc;
+            }
+
+            try { // simply checking may throw in ie8 under ssl or mismatched protocol
+                doc = frame.contentDocument ? frame.contentDocument : frame.document;
+            } catch(err) {
+                // last attempt
+                log('cannot get iframe.contentDocument: ' + err);
+                doc = frame.document;
+            }
+            return doc;
+        }
+
+        // Rails CSRF hack (thanks to Yvan Barthelemy)
+        var csrf_token = $('meta[name=csrf-token]').attr('content');
+        var csrf_param = $('meta[name=csrf-param]').attr('content');
+        if (csrf_param && csrf_token) {
+            s.extraData = s.extraData || {};
+            s.extraData[csrf_param] = csrf_token;
+        }
+
+        // take a breath so that pending repaints get some cpu time before the upload starts
+        function doSubmit() {
+            // make sure form attrs are set
+            var t = $form.attr2('target'),
+                a = $form.attr2('action'),
+                mp = 'multipart/form-data',
+                et = $form.attr('enctype') || $form.attr('encoding') || mp;
+
+            // update form attrs in IE friendly way
+            form.setAttribute('target',id);
+            if (!method || /post/i.test(method) ) {
+                form.setAttribute('method', 'POST');
+            }
+            if (a != s.url) {
+                form.setAttribute('action', s.url);
+            }
+
+            // ie borks in some cases when setting encoding
+            if (! s.skipEncodingOverride && (!method || /post/i.test(method))) {
+                $form.attr({
+                    encoding: 'multipart/form-data',
+                    enctype:  'multipart/form-data'
+                });
+            }
+
+            // support timout
+            if (s.timeout) {
+                timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
+            }
+
+            // look for server aborts
+            function checkState() {
+                try {
+                    var state = getDoc(io).readyState;
+                    log('state = ' + state);
+                    if (state && state.toLowerCase() == 'uninitialized') {
+                        setTimeout(checkState,50);
+                    }
+                }
+                catch(e) {
+                    log('Server abort: ' , e, ' (', e.name, ')');
+                    cb(SERVER_ABORT);
+                    if (timeoutHandle) {
+                        clearTimeout(timeoutHandle);
+                    }
+                    timeoutHandle = undefined;
+                }
+            }
+
+            // add "extra" data to form if provided in options
+            var extraInputs = [];
+            try {
+                if (s.extraData) {
+                    for (var n in s.extraData) {
+                        if (s.extraData.hasOwnProperty(n)) {
+                           // if using the $.param format that allows for multiple values with the same name
+                           if($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty('name') && s.extraData[n].hasOwnProperty('value')) {
+                               extraInputs.push(
+                               $('<input type="hidden" name="'+s.extraData[n].name+'">').val(s.extraData[n].value)
+                                   .appendTo(form)[0]);
+                           } else {
+                               extraInputs.push(
+                               $('<input type="hidden" name="'+n+'">').val(s.extraData[n])
+                                   .appendTo(form)[0]);
+                           }
+                        }
+                    }
+                }
+
+                if (!s.iframeTarget) {
+                    // add iframe to doc and submit the form
+                    $io.appendTo('body');
+                }
+                if (io.attachEvent) {
+                    io.attachEvent('onload', cb);
+                }
+                else {
+                    io.addEventListener('load', cb, false);
+                }
+                setTimeout(checkState,15);
+
+                try {
+                    form.submit();
+                } catch(err) {
+                    // just in case form has element with name/id of 'submit'
+                    var submitFn = document.createElement('form').submit;
+                    submitFn.apply(form);
+                }
+            }
+            finally {
+                // reset attrs and remove "extra" input elements
+                form.setAttribute('action',a);
+                form.setAttribute('enctype', et); // #380
+                if(t) {
+                    form.setAttribute('target', t);
+                } else {
+                    $form.removeAttr('target');
+                }
+                $(extraInputs).remove();
+            }
+        }
+
+        if (s.forceSync) {
+            doSubmit();
+        }
+        else {
+            setTimeout(doSubmit, 10); // this lets dom updates render
+        }
+
+        var data, doc, domCheckCount = 50, callbackProcessed;
+
+        function cb(e) {
+            if (xhr.aborted || callbackProcessed) {
+                return;
+            }
+            
+            doc = getDoc(io);
+            if(!doc) {
+                log('cannot access response document');
+                e = SERVER_ABORT;
+            }
+            if (e === CLIENT_TIMEOUT_ABORT && xhr) {
+                xhr.abort('timeout');
+                deferred.reject(xhr, 'timeout');
+                return;
+            }
+            else if (e == SERVER_ABORT && xhr) {
+                xhr.abort('server abort');
+                deferred.reject(xhr, 'error', 'server abort');
+                return;
+            }
+
+            if (!doc || doc.location.href == s.iframeSrc) {
+                // response not received yet
+                if (!timedOut) {
+                    return;
+                }
+            }
+            if (io.detachEvent) {
+                io.detachEvent('onload', cb);
+            }
+            else {
+                io.removeEventListener('load', cb, false);
+            }
+
+            var status = 'success', errMsg;
+            try {
+                if (timedOut) {
+                    throw 'timeout';
+                }
+
+                var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+                log('isXml='+isXml);
+                if (!isXml && window.opera && (doc.body === null || !doc.body.innerHTML)) {
+                    if (--domCheckCount) {
+                        // in some browsers (Opera) the iframe DOM is not always traversable when
+                        // the onload callback fires, so we loop a bit to accommodate
+                        log('requeing onLoad callback, DOM not available');
+                        setTimeout(cb, 250);
+                        return;
+                    }
+                    // let this fall through because server response could be an empty document
+                    //log('Could not access iframe DOM after mutiple tries.');
+                    //throw 'DOMException: not available';
+                }
+
+                //log('response detected');
+                var docRoot = doc.body ? doc.body : doc.documentElement;
+                xhr.responseText = docRoot ? docRoot.innerHTML : null;
+                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+                if (isXml) {
+                    s.dataType = 'xml';
+                }
+                xhr.getResponseHeader = function(header){
+                    var headers = {'content-type': s.dataType};
+                    return headers[header.toLowerCase()];
+                };
+                // support for XHR 'status' & 'statusText' emulation :
+                if (docRoot) {
+                    xhr.status = Number( docRoot.getAttribute('status') ) || xhr.status;
+                    xhr.statusText = docRoot.getAttribute('statusText') || xhr.statusText;
+                }
+
+                var dt = (s.dataType || '').toLowerCase();
+                var scr = /(json|script|text)/.test(dt);
+                if (scr || s.textarea) {
+                    // see if user embedded response in textarea
+                    var ta = doc.getElementsByTagName('textarea')[0];
+                    if (ta) {
+                        xhr.responseText = ta.value;
+                        // support for XHR 'status' & 'statusText' emulation :
+                        xhr.status = Number( ta.getAttribute('status') ) || xhr.status;
+                        xhr.statusText = ta.getAttribute('statusText') || xhr.statusText;
+                    }
+                    else if (scr) {
+                        // account for browsers injecting pre around json response
+                        var pre = doc.getElementsByTagName('pre')[0];
+                        var b = doc.getElementsByTagName('body')[0];
+                        if (pre) {
+                            xhr.responseText = pre.textContent ? pre.textContent : pre.innerText;
+                        }
+                        else if (b) {
+                            xhr.responseText = b.textContent ? b.textContent : b.innerText;
+                        }
+                    }
+                }
+                else if (dt == 'xml' && !xhr.responseXML && xhr.responseText) {
+                    xhr.responseXML = toXml(xhr.responseText);
+                }
+
+                try {
+                    data = httpData(xhr, dt, s);
+                }
+                catch (err) {
+                    status = 'parsererror';
+                    xhr.error = errMsg = (err || status);
+                }
+            }
+            catch (err) {
+                log('error caught: ',err);
+                status = 'error';
+                xhr.error = errMsg = (err || status);
+            }
+
+            if (xhr.aborted) {
+                log('upload aborted');
+                status = null;
+            }
+
+            if (xhr.status) { // we've set xhr.status
+                status = (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) ? 'success' : 'error';
+            }
+
+            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+            if (status === 'success') {
+                if (s.success) {
+                    s.success.call(s.context, data, 'success', xhr);
+                }
+                deferred.resolve(xhr.responseText, 'success', xhr);
+                if (g) {
+                    $.event.trigger("ajaxSuccess", [xhr, s]);
+                }
+            }
+            else if (status) {
+                if (errMsg === undefined) {
+                    errMsg = xhr.statusText;
+                }
+                if (s.error) {
+                    s.error.call(s.context, xhr, status, errMsg);
+                }
+                deferred.reject(xhr, 'error', errMsg);
+                if (g) {
+                    $.event.trigger("ajaxError", [xhr, s, errMsg]);
+                }
+            }
+
+            if (g) {
+                $.event.trigger("ajaxComplete", [xhr, s]);
+            }
+
+            if (g && ! --$.active) {
+                $.event.trigger("ajaxStop");
+            }
+
+            if (s.complete) {
+                s.complete.call(s.context, xhr, status);
+            }
+
+            callbackProcessed = true;
+            if (s.timeout) {
+                clearTimeout(timeoutHandle);
+            }
+
+            // clean up
+            setTimeout(function() {
+                if (!s.iframeTarget) {
+                    $io.remove();
+                }
+                else { //adding else to clean up existing iframe response.
+                    $io.attr('src', s.iframeSrc);
+                }
+                xhr.responseXML = null;
+            }, 100);
+        }
+
+        var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+            if (window.ActiveXObject) {
+                doc = new ActiveXObject('Microsoft.XMLDOM');
+                doc.async = 'false';
+                doc.loadXML(s);
+            }
+            else {
+                doc = (new DOMParser()).parseFromString(s, 'text/xml');
+            }
+            return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+        };
+        var parseJSON = $.parseJSON || function(s) {
+            /*jslint evil:true */
+            return window['eval']('(' + s + ')');
+        };
+
+        var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+
+            var ct = xhr.getResponseHeader('content-type') || '',
+                xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+                data = xml ? xhr.responseXML : xhr.responseText;
+
+            if (xml && data.documentElement.nodeName === 'parsererror') {
+                if ($.error) {
+                    $.error('parsererror');
+                }
+            }
+            if (s && s.dataFilter) {
+                data = s.dataFilter(data, type);
+            }
+            if (typeof data === 'string') {
+                if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+                    data = parseJSON(data);
+                } else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+                    $.globalEval(data);
+                }
+            }
+            return data;
+        };
+
+        return deferred;
+    }
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ *    is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ *    used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+    options = options || {};
+    options.delegation = options.delegation && $.isFunction($.fn.on);
+
+    // in jQuery 1.3+ we can fix mistakes with the ready state
+    if (!options.delegation && this.length === 0) {
+        var o = { s: this.selector, c: this.context };
+        if (!$.isReady && o.s) {
+            log('DOM not ready, queuing ajaxForm');
+            $(function() {
+                $(o.s,o.c).ajaxForm(options);
+            });
+            return this;
+        }
+        // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+        log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+        return this;
+    }
+
+    if ( options.delegation ) {
+        $(document)
+            .off('submit.form-plugin', this.selector, doAjaxSubmit)
+            .off('click.form-plugin', this.selector, captureSubmittingElement)
+            .on('submit.form-plugin', this.selector, options, doAjaxSubmit)
+            .on('click.form-plugin', this.selector, options, captureSubmittingElement);
+        return this;
+    }
+
+    return this.ajaxFormUnbind()
+        .bind('submit.form-plugin', options, doAjaxSubmit)
+        .bind('click.form-plugin', options, captureSubmittingElement);
+};
+
+// private event handlers
+function doAjaxSubmit(e) {
+    /*jshint validthis:true */
+    var options = e.data;
+    if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+        e.preventDefault();
+        $(e.target).ajaxSubmit(options); // #365
+    }
+}
+
+function captureSubmittingElement(e) {
+    /*jshint validthis:true */
+    var target = e.target;
+    var $el = $(target);
+    if (!($el.is("[type=submit],[type=image]"))) {
+        // is this a child element of the submit el?  (ex: a span within a button)
+        var t = $el.closest('[type=submit]');
+        if (t.length === 0) {
+            return;
+        }
+        target = t[0];
+    }
+    var form = this;
+    form.clk = target;
+    if (target.type == 'image') {
+        if (e.offsetX !== undefined) {
+            form.clk_x = e.offsetX;
+            form.clk_y = e.offsetY;
+        } else if (typeof $.fn.offset == 'function') {
+            var offset = $el.offset();
+            form.clk_x = e.pageX - offset.left;
+            form.clk_y = e.pageY - offset.top;
+        } else {
+            form.clk_x = e.pageX - target.offsetLeft;
+            form.clk_y = e.pageY - target.offsetTop;
+        }
+    }
+    // clear form vars
+    setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+}
+
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+    return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property.  An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic, elements) {
+    var a = [];
+    if (this.length === 0) {
+        return a;
+    }
+
+    var form = this[0];
+    var formId = this.attr('id');
+    var els = semantic ? form.getElementsByTagName('*') : form.elements;
+    var els2;
+
+    if (els && !/MSIE [678]/.test(navigator.userAgent)) { // #390
+        els = $(els).get();  // convert to standard array
+    }
+
+    // #386; account for inputs outside the form which use the 'form' attribute
+    if ( formId ) {
+        els2 = $(':input[form=' + formId + ']').get();
+        if ( els2.length ) {
+            els = (els || []).concat(els2);
+        }
+    }
+
+    if (!els || !els.length) {
+        return a;
+    }
+
+    var i,j,n,v,el,max,jmax;
+    for(i=0, max=els.length; i < max; i++) {
+        el = els[i];
+        n = el.name;
+        if (!n || el.disabled) {
+            continue;
+        }
+
+        if (semantic && form.clk && el.type == "image") {
+            // handle image inputs on the fly when semantic == true
+            if(form.clk == el) {
+                a.push({name: n, value: $(el).val(), type: el.type });
+                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+            }
+            continue;
+        }
+
+        v = $.fieldValue(el, true);
+        if (v && v.constructor == Array) {
+            if (elements) {
+                elements.push(el);
+            }
+            for(j=0, jmax=v.length; j < jmax; j++) {
+                a.push({name: n, value: v[j]});
+            }
+        }
+        else if (feature.fileapi && el.type == 'file') {
+            if (elements) {
+                elements.push(el);
+            }
+            var files = el.files;
+            if (files.length) {
+                for (j=0; j < files.length; j++) {
+                    a.push({name: n, value: files[j], type: el.type});
+                }
+            }
+            else {
+                // #180
+                a.push({ name: n, value: '', type: el.type });
+            }
+        }
+        else if (v !== null && typeof v != 'undefined') {
+            if (elements) {
+                elements.push(el);
+            }
+            a.push({name: n, value: v, type: el.type, required: el.required});
+        }
+    }
+
+    if (!semantic && form.clk) {
+        // input type=='image' are not found in elements array! handle it here
+        var $input = $(form.clk), input = $input[0];
+        n = input.name;
+        if (n && !input.disabled && input.type == 'image') {
+            a.push({name: n, value: $input.val()});
+            a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+        }
+    }
+    return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+    //hand off to jQuery.param for proper encoding
+    return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+    var a = [];
+    this.each(function() {
+        var n = this.name;
+        if (!n) {
+            return;
+        }
+        var v = $.fieldValue(this, successful);
+        if (v && v.constructor == Array) {
+            for (var i=0,max=v.length; i < max; i++) {
+                a.push({name: n, value: v[i]});
+            }
+        }
+        else if (v !== null && typeof v != 'undefined') {
+            a.push({name: this.name, value: v});
+        }
+    });
+    //hand off to jQuery.param for proper encoding
+    return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+ *
+ *  <form><fieldset>
+ *      <input name="A" type="text" />
+ *      <input name="A" type="text" />
+ *      <input name="B" type="checkbox" value="B1" />
+ *      <input name="B" type="checkbox" value="B2"/>
+ *      <input name="C" type="radio" value="C1" />
+ *      <input name="C" type="radio" value="C2" />
+ *  </fieldset></form>
+ *
+ *  var v = $('input[type=text]').fieldValue();
+ *  // if no values are entered into the text inputs
+ *  v == ['','']
+ *  // if values entered into the text inputs are 'foo' and 'bar'
+ *  v == ['foo','bar']
+ *
+ *  var v = $('input[type=checkbox]').fieldValue();
+ *  // if neither checkbox is checked
+ *  v === undefined
+ *  // if both checkboxes are checked
+ *  v == ['B1', 'B2']
+ *
+ *  var v = $('input[type=radio]').fieldValue();
+ *  // if neither radio is checked
+ *  v === undefined
+ *  // if first radio is checked
+ *  v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array.  If no valid value can be determined the
+ *    array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+    for (var val=[], i=0, max=this.length; i < max; i++) {
+        var el = this[i];
+        var v = $.fieldValue(el, successful);
+        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+            continue;
+        }
+        if (v.constructor == Array) {
+            $.merge(val, v);
+        }
+        else {
+            val.push(v);
+        }
+    }
+    return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+    if (successful === undefined) {
+        successful = true;
+    }
+
+    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+        (t == 'checkbox' || t == 'radio') && !el.checked ||
+        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+        tag == 'select' && el.selectedIndex == -1)) {
+            return null;
+    }
+
+    if (tag == 'select') {
+        var index = el.selectedIndex;
+        if (index < 0) {
+            return null;
+        }
+        var a = [], ops = el.options;
+        var one = (t == 'select-one');
+        var max = (one ? index+1 : ops.length);
+        for(var i=(one ? index : 0); i < max; i++) {
+            var op = ops[i];
+            if (op.selected) {
+                var v = op.value;
+                if (!v) { // extra pain for IE...
+                    v = (op.attributes && op.attributes.value && !(op.attributes.value.specified)) ? op.text : op.value;
+                }
+                if (one) {
+                    return v;
+                }
+                a.push(v);
+            }
+        }
+        return a;
+    }
+    return $(el).val();
+};
+
+/**
+ * Clears the form data.  Takes the following actions on the form's input fields:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ */
+$.fn.clearForm = function(includeHidden) {
+    return this.each(function() {
+        $('input,select,textarea', this).clearFields(includeHidden);
+    });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
+    var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i; // 'hidden' is not in this list
+    return this.each(function() {
+        var t = this.type, tag = this.tagName.toLowerCase();
+        if (re.test(t) || tag == 'textarea') {
+            this.value = '';
+        }
+        else if (t == 'checkbox' || t == 'radio') {
+            this.checked = false;
+        }
+        else if (tag == 'select') {
+            this.selectedIndex = -1;
+        }
+		else if (t == "file") {
+			if (/MSIE/.test(navigator.userAgent)) {
+				$(this).replaceWith($(this).clone(true));
+			} else {
+				$(this).val('');
+			}
+		}
+        else if (includeHidden) {
+            // includeHidden can be the value true, or it can be a selector string
+            // indicating a special test; for example:
+            //  $('#myForm').clearForm('.special:hidden')
+            // the above would clean hidden inputs that have the class of 'special'
+            if ( (includeHidden === true && /hidden/.test(t)) ||
+                 (typeof includeHidden == 'string' && $(this).is(includeHidden)) ) {
+                this.value = '';
+            }
+        }
+    });
+};
+
+/**
+ * Resets the form data.  Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+    return this.each(function() {
+        // guard against an input with the name of 'reset'
+        // note that IE reports the reset function as an 'object'
+        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+            this.reset();
+        }
+    });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+    if (b === undefined) {
+        b = true;
+    }
+    return this.each(function() {
+        this.disabled = !b;
+    });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+    if (select === undefined) {
+        select = true;
+    }
+    return this.each(function() {
+        var t = this.type;
+        if (t == 'checkbox' || t == 'radio') {
+            this.checked = select;
+        }
+        else if (this.tagName.toLowerCase() == 'option') {
+            var $sel = $(this).parent('select');
+            if (select && $sel[0] && $sel[0].type == 'select-one') {
+                // deselect all other options
+                $sel.find('option').selected(false);
+            }
+            this.selected = select;
+        }
+    });
+};
+
+// expose debug var
+$.fn.ajaxSubmit.debug = false;
+
+// helper fn for console logging
+function log() {
+    if (!$.fn.ajaxSubmit.debug) {
+        return;
+    }
+    var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+    if (window.console && window.console.log) {
+        window.console.log(msg);
+    }
+    else if (window.opera && window.opera.postError) {
+        window.opera.postError(msg);
+    }
+}
+
+}));
+
+;
+/*!
+ * jQuery UI Position 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/position/
+ */
+(function( $, undefined ) {
+
+$.ui = $.ui || {};
+
+var cachedScrollbarWidth,
+	max = Math.max,
+	abs = Math.abs,
+	round = Math.round,
+	rhorizontal = /left|center|right/,
+	rvertical = /top|center|bottom/,
+	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
+	rposition = /^\w+/,
+	rpercent = /%$/,
+	_position = $.fn.position;
+
+function getOffsets( offsets, width, height ) {
+	return [
+		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
+		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
+	];
+}
+
+function parseCss( element, property ) {
+	return parseInt( $.css( element, property ), 10 ) || 0;
+}
+
+function getDimensions( elem ) {
+	var raw = elem[0];
+	if ( raw.nodeType === 9 ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: 0, left: 0 }
+		};
+	}
+	if ( $.isWindow( raw ) ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
+		};
+	}
+	if ( raw.preventDefault ) {
+		return {
+			width: 0,
+			height: 0,
+			offset: { top: raw.pageY, left: raw.pageX }
+		};
+	}
+	return {
+		width: elem.outerWidth(),
+		height: elem.outerHeight(),
+		offset: elem.offset()
+	};
+}
+
+$.position = {
+	scrollbarWidth: function() {
+		if ( cachedScrollbarWidth !== undefined ) {
+			return cachedScrollbarWidth;
+		}
+		var w1, w2,
+			div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
+			innerDiv = div.children()[0];
+
+		$( "body" ).append( div );
+		w1 = innerDiv.offsetWidth;
+		div.css( "overflow", "scroll" );
+
+		w2 = innerDiv.offsetWidth;
+
+		if ( w1 === w2 ) {
+			w2 = div[0].clientWidth;
+		}
+
+		div.remove();
+
+		return (cachedScrollbarWidth = w1 - w2);
+	},
+	getScrollInfo: function( within ) {
+		var overflowX = within.isWindow ? "" : within.element.css( "overflow-x" ),
+			overflowY = within.isWindow ? "" : within.element.css( "overflow-y" ),
+			hasOverflowX = overflowX === "scroll" ||
+				( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
+			hasOverflowY = overflowY === "scroll" ||
+				( overflowY === "auto" && within.height < within.element[0].scrollHeight );
+		return {
+			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
+			height: hasOverflowX ? $.position.scrollbarWidth() : 0
+		};
+	},
+	getWithinInfo: function( element ) {
+		var withinElement = $( element || window ),
+			isWindow = $.isWindow( withinElement[0] );
+		return {
+			element: withinElement,
+			isWindow: isWindow,
+			offset: withinElement.offset() || { left: 0, top: 0 },
+			scrollLeft: withinElement.scrollLeft(),
+			scrollTop: withinElement.scrollTop(),
+			width: isWindow ? withinElement.width() : withinElement.outerWidth(),
+			height: isWindow ? withinElement.height() : withinElement.outerHeight()
+		};
+	}
+};
+
+$.fn.position = function( options ) {
+	if ( !options || !options.of ) {
+		return _position.apply( this, arguments );
+	}
+
+	// make a copy, we don't want to modify arguments
+	options = $.extend( {}, options );
+
+	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
+		target = $( options.of ),
+		within = $.position.getWithinInfo( options.within ),
+		scrollInfo = $.position.getScrollInfo( within ),
+		collision = ( options.collision || "flip" ).split( " " ),
+		offsets = {};
+
+	dimensions = getDimensions( target );
+	if ( target[0].preventDefault ) {
+		// force left top to allow flipping
+		options.at = "left top";
+	}
+	targetWidth = dimensions.width;
+	targetHeight = dimensions.height;
+	targetOffset = dimensions.offset;
+	// clone to reuse original targetOffset later
+	basePosition = $.extend( {}, targetOffset );
+
+	// force my and at to have valid horizontal and vertical positions
+	// if a value is missing or invalid, it will be converted to center
+	$.each( [ "my", "at" ], function() {
+		var pos = ( options[ this ] || "" ).split( " " ),
+			horizontalOffset,
+			verticalOffset;
+
+		if ( pos.length === 1) {
+			pos = rhorizontal.test( pos[ 0 ] ) ?
+				pos.concat( [ "center" ] ) :
+				rvertical.test( pos[ 0 ] ) ?
+					[ "center" ].concat( pos ) :
+					[ "center", "center" ];
+		}
+		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
+		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
+
+		// calculate offsets
+		horizontalOffset = roffset.exec( pos[ 0 ] );
+		verticalOffset = roffset.exec( pos[ 1 ] );
+		offsets[ this ] = [
+			horizontalOffset ? horizontalOffset[ 0 ] : 0,
+			verticalOffset ? verticalOffset[ 0 ] : 0
+		];
+
+		// reduce to just the positions without the offsets
+		options[ this ] = [
+			rposition.exec( pos[ 0 ] )[ 0 ],
+			rposition.exec( pos[ 1 ] )[ 0 ]
+		];
+	});
+
+	// normalize collision option
+	if ( collision.length === 1 ) {
+		collision[ 1 ] = collision[ 0 ];
+	}
+
+	if ( options.at[ 0 ] === "right" ) {
+		basePosition.left += targetWidth;
+	} else if ( options.at[ 0 ] === "center" ) {
+		basePosition.left += targetWidth / 2;
+	}
+
+	if ( options.at[ 1 ] === "bottom" ) {
+		basePosition.top += targetHeight;
+	} else if ( options.at[ 1 ] === "center" ) {
+		basePosition.top += targetHeight / 2;
+	}
+
+	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
+	basePosition.left += atOffset[ 0 ];
+	basePosition.top += atOffset[ 1 ];
+
+	return this.each(function() {
+		var collisionPosition, using,
+			elem = $( this ),
+			elemWidth = elem.outerWidth(),
+			elemHeight = elem.outerHeight(),
+			marginLeft = parseCss( this, "marginLeft" ),
+			marginTop = parseCss( this, "marginTop" ),
+			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
+			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
+			position = $.extend( {}, basePosition ),
+			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
+
+		if ( options.my[ 0 ] === "right" ) {
+			position.left -= elemWidth;
+		} else if ( options.my[ 0 ] === "center" ) {
+			position.left -= elemWidth / 2;
+		}
+
+		if ( options.my[ 1 ] === "bottom" ) {
+			position.top -= elemHeight;
+		} else if ( options.my[ 1 ] === "center" ) {
+			position.top -= elemHeight / 2;
+		}
+
+		position.left += myOffset[ 0 ];
+		position.top += myOffset[ 1 ];
+
+		// if the browser doesn't support fractions, then round for consistent results
+		if ( !$.support.offsetFractions ) {
+			position.left = round( position.left );
+			position.top = round( position.top );
+		}
+
+		collisionPosition = {
+			marginLeft: marginLeft,
+			marginTop: marginTop
+		};
+
+		$.each( [ "left", "top" ], function( i, dir ) {
+			if ( $.ui.position[ collision[ i ] ] ) {
+				$.ui.position[ collision[ i ] ][ dir ]( position, {
+					targetWidth: targetWidth,
+					targetHeight: targetHeight,
+					elemWidth: elemWidth,
+					elemHeight: elemHeight,
+					collisionPosition: collisionPosition,
+					collisionWidth: collisionWidth,
+					collisionHeight: collisionHeight,
+					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
+					my: options.my,
+					at: options.at,
+					within: within,
+					elem : elem
+				});
+			}
+		});
+
+		if ( options.using ) {
+			// adds feedback as second argument to using callback, if present
+			using = function( props ) {
+				var left = targetOffset.left - position.left,
+					right = left + targetWidth - elemWidth,
+					top = targetOffset.top - position.top,
+					bottom = top + targetHeight - elemHeight,
+					feedback = {
+						target: {
+							element: target,
+							left: targetOffset.left,
+							top: targetOffset.top,
+							width: targetWidth,
+							height: targetHeight
+						},
+						element: {
+							element: elem,
+							left: position.left,
+							top: position.top,
+							width: elemWidth,
+							height: elemHeight
+						},
+						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
+						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
+					};
+				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
+					feedback.horizontal = "center";
+				}
+				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
+					feedback.vertical = "middle";
+				}
+				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
+					feedback.important = "horizontal";
+				} else {
+					feedback.important = "vertical";
+				}
+				options.using.call( this, props, feedback );
+			};
+		}
+
+		elem.offset( $.extend( position, { using: using } ) );
+	});
+};
+
+$.ui.position = {
+	fit: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
+				outerWidth = within.width,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = withinOffset - collisionPosLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
+				newOverRight;
+
+			// element is wider than within
+			if ( data.collisionWidth > outerWidth ) {
+				// element is initially over the left side of within
+				if ( overLeft > 0 && overRight <= 0 ) {
+					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
+					position.left += overLeft - newOverRight;
+				// element is initially over right side of within
+				} else if ( overRight > 0 && overLeft <= 0 ) {
+					position.left = withinOffset;
+				// element is initially over both left and right sides of within
+				} else {
+					if ( overLeft > overRight ) {
+						position.left = withinOffset + outerWidth - data.collisionWidth;
+					} else {
+						position.left = withinOffset;
+					}
+				}
+			// too far left -> align with left edge
+			} else if ( overLeft > 0 ) {
+				position.left += overLeft;
+			// too far right -> align with right edge
+			} else if ( overRight > 0 ) {
+				position.left -= overRight;
+			// adjust based on position and margin
+			} else {
+				position.left = max( position.left - collisionPosLeft, position.left );
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
+				outerHeight = data.within.height,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = withinOffset - collisionPosTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
+				newOverBottom;
+
+			// element is taller than within
+			if ( data.collisionHeight > outerHeight ) {
+				// element is initially over the top of within
+				if ( overTop > 0 && overBottom <= 0 ) {
+					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
+					position.top += overTop - newOverBottom;
+				// element is initially over bottom of within
+				} else if ( overBottom > 0 && overTop <= 0 ) {
+					position.top = withinOffset;
+				// element is initially over both top and bottom of within
+				} else {
+					if ( overTop > overBottom ) {
+						position.top = withinOffset + outerHeight - data.collisionHeight;
+					} else {
+						position.top = withinOffset;
+					}
+				}
+			// too far up -> align with top
+			} else if ( overTop > 0 ) {
+				position.top += overTop;
+			// too far down -> align with bottom edge
+			} else if ( overBottom > 0 ) {
+				position.top -= overBottom;
+			// adjust based on position and margin
+			} else {
+				position.top = max( position.top - collisionPosTop, position.top );
+			}
+		}
+	},
+	flip: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.left + within.scrollLeft,
+				outerWidth = within.width,
+				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = collisionPosLeft - offsetLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
+				myOffset = data.my[ 0 ] === "left" ?
+					-data.elemWidth :
+					data.my[ 0 ] === "right" ?
+						data.elemWidth :
+						0,
+				atOffset = data.at[ 0 ] === "left" ?
+					data.targetWidth :
+					data.at[ 0 ] === "right" ?
+						-data.targetWidth :
+						0,
+				offset = -2 * data.offset[ 0 ],
+				newOverRight,
+				newOverLeft;
+
+			if ( overLeft < 0 ) {
+				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
+				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overRight > 0 ) {
+				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
+				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.top + within.scrollTop,
+				outerHeight = within.height,
+				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = collisionPosTop - offsetTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
+				top = data.my[ 1 ] === "top",
+				myOffset = top ?
+					-data.elemHeight :
+					data.my[ 1 ] === "bottom" ?
+						data.elemHeight :
+						0,
+				atOffset = data.at[ 1 ] === "top" ?
+					data.targetHeight :
+					data.at[ 1 ] === "bottom" ?
+						-data.targetHeight :
+						0,
+				offset = -2 * data.offset[ 1 ],
+				newOverTop,
+				newOverBottom;
+			if ( overTop < 0 ) {
+				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
+				if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+			else if ( overBottom > 0 ) {
+				newOverTop = position.top -  data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
+				if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+		}
+	},
+	flipfit: {
+		left: function() {
+			$.ui.position.flip.left.apply( this, arguments );
+			$.ui.position.fit.left.apply( this, arguments );
+		},
+		top: function() {
+			$.ui.position.flip.top.apply( this, arguments );
+			$.ui.position.fit.top.apply( this, arguments );
+		}
+	}
+};
+
+// fraction support test
+(function () {
+	var testElement, testElementParent, testElementStyle, offsetLeft, i,
+		body = document.getElementsByTagName( "body" )[ 0 ],
+		div = document.createElement( "div" );
+
+	//Create a "fake body" for testing based on method used in jQuery.support
+	testElement = document.createElement( body ? "div" : "body" );
+	testElementStyle = {
+		visibility: "hidden",
+		width: 0,
+		height: 0,
+		border: 0,
+		margin: 0,
+		background: "none"
+	};
+	if ( body ) {
+		$.extend( testElementStyle, {
+			position: "absolute",
+			left: "-1000px",
+			top: "-1000px"
+		});
+	}
+	for ( i in testElementStyle ) {
+		testElement.style[ i ] = testElementStyle[ i ];
+	}
+	testElement.appendChild( div );
+	testElementParent = body || document.documentElement;
+	testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+	div.style.cssText = "position: absolute; left: 10.7432222px;";
+
+	offsetLeft = $( div ).offset().left;
+	$.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
+
+	testElement.innerHTML = "";
+	testElementParent.removeChild( testElement );
+})();
+
+}( jQuery ) );
+;
+/**
+ * Limits the invocations of a function in a given time frame.
+ *
+ * Adapted from underscore.js with the addition Drupal namespace.
+ *
+ * The debounce function wrapper should be used sparingly. One clear use case
+ * is limiting the invocation of a callback attached to the window resize event.
+ *
+ * Before using the debounce function wrapper, consider first whether the
+ * callback could be attached to an event that fires less frequently or if the
+ * function can be written in such a way that it is only invoked under specific
+ * conditions.
+ *
+ * @param {Function} callback
+ *   The function to be invoked.
+ *
+ * @param {Number} wait
+ *   The time period within which the callback function should only be
+ *   invoked once. For example if the wait period is 250ms, then the callback
+ *   will only be called at most 4 times per second.
+ */
+Drupal.debounce = function (func, wait, immediate) {
+
+  "use strict";
+
+  var timeout, result;
+  return function () {
+    var context = this;
+    var args = arguments;
+    var later = function () {
+      timeout = null;
+      if (!immediate) {
+        result = func.apply(context, args);
+      }
+    };
+    var callNow = immediate && !timeout;
+    clearTimeout(timeout);
+    timeout = setTimeout(later, wait);
+    if (callNow) {
+      result = func.apply(context, args);
+    }
+    return result;
+  };
+};
+;
+/**
+ * Manages elements that can offset the size of the viewport.
+ *
+ * Measures and reports viewport offset dimensions from elements like the
+ * toolbar that can potentially displace the positioning of other elements.
+ */
+(function ($, Drupal, debounce) {
+
+  "use strict";
+
+  var offsets = {
+    top: 0,
+    right: 0,
+    bottom: 0,
+    left: 0
+  };
+
+  /**
+   * Registers a resize handler on the window.
+   */
+  Drupal.behaviors.drupalDisplace = {
+    attach: function () {
+      // Mark this behavior as processed on the first pass.
+      if (this.displaceProcessed) {
+        return;
+      }
+      this.displaceProcessed = true;
+
+      $(window).on('resize.drupalDisplace', debounce(displace, 200));
+    }
+  };
+
+  /**
+   * Informs listeners of the current offset dimensions.
+   *
+   * @param {boolean} broadcast
+   *   (optional) When true or undefined, causes the recalculated offsets values to be
+   *   broadcast to listeners.
+   *
+   * @return {object}
+   *   An object whose keys are the for sides an element -- top, right, bottom
+   *   and left. The value of each key is the viewport displacement distance for
+   *   that edge.
+   */
+  function displace(broadcast) {
+    offsets = Drupal.displace.offsets = calculateOffsets();
+    if (typeof broadcast === 'undefined' || broadcast) {
+      $(document).trigger('drupalViewportOffsetChange', offsets);
+    }
+    return offsets;
+  }
+
+  /**
+   * Determines the viewport offsets.
+   *
+   * @return {object}
+   *   An object whose keys are the for sides an element -- top, right, bottom
+   *   and left. The value of each key is the viewport displacement distance for
+   *   that edge.
+   */
+  function calculateOffsets() {
+    return {
+      top: calculateOffset('top'),
+      right: calculateOffset('right'),
+      bottom: calculateOffset('bottom'),
+      left: calculateOffset('left')
+    };
+  }
+
+  /**
+   * Gets a specific edge's offset.
+   *
+   * Any element with the attribute data-offset-{edge} e.g. data-offset-top will
+   * be considered in the viewport offset calculations. If the attribute has a
+   * numeric value, that value will be used. If no value is provided, one will
+   * be calculated using the element's dimensions and placement.
+   *
+   * @param {string} edge
+   *   The name of the edge to calculate. Can be 'top', 'right',
+   *   'bottom' or 'left'.
+   *
+   * @return {number}
+   *   The viewport displacement distance for the requested edge.
+   */
+  function calculateOffset(edge) {
+    var edgeOffset = 0;
+    var displacingElements = document.querySelectorAll('[data-offset-' + edge + ']');
+    for (var i = 0, n = displacingElements.length; i < n; i++) {
+      var el = displacingElements[i];
+      // If the element is not visible, do consider its dimensions.
+      if (el.style.display === 'none') {
+        continue;
+      }
+      // If the offset data attribute contains a displacing value, use it.
+      var displacement = parseInt(el.getAttribute('data-offset-' + edge), 10);
+      // If the element's offset data attribute exits
+      // but is not a valid number then get the displacement
+      // dimensions directly from the element.
+      if (isNaN(displacement)) {
+        displacement = getRawOffset(el, edge);
+      }
+      // If the displacement value is larger than the current value for this
+      // edge, use the displacement value.
+      edgeOffset = Math.max(edgeOffset, displacement);
+    }
+
+    return edgeOffset;
+  }
+
+  /**
+   * Calculates displacement for element based on its dimensions and placement.
+   *
+   * @param {jQuery} $el
+   *   The jQuery element whose dimensions and placement will be measured.
+   *
+   * @param {string} edge
+   *   The name of the edge of the viewport that the element is associated
+   *   with.
+   *
+   * @return {number}
+   *   The viewport displacement distance for the requested edge.
+   */
+  function getRawOffset(el, edge) {
+    var $el = $(el);
+    var documentElement = document.documentElement;
+    var displacement = 0;
+    var horizontal = (edge === 'left' || edge === 'right');
+    // Get the offset of the element itself.
+    var placement = $el.offset()[horizontal ? 'left' : 'top'];
+    // Subtract scroll distance from placement to get the distance
+    // to the edge of the viewport.
+    placement -= window['scroll' + (horizontal ? 'X' : 'Y')] || document.documentElement['scroll' + (horizontal) ? 'Left' : 'Top'] || 0;
+    // Find the displacement value according to the edge.
+    switch (edge) {
+      // Left and top elements displace as a sum of their own offset value
+      // plus their size.
+      case 'top':
+        // Total displacement is the sum of the elements placement and size.
+        displacement = placement + $el.outerHeight();
+        break;
+
+      case 'left':
+        // Total displacement is the sum of the elements placement and size.
+        displacement = placement + $el.outerWidth();
+        break;
+
+      // Right and bottom elements displace according to their left and
+      // top offset. Their size isn't important.
+      case 'bottom':
+        displacement = documentElement.clientHeight - placement;
+        break;
+
+      case 'right':
+        displacement = documentElement.clientWidth - placement;
+        break;
+
+      default:
+        displacement = 0;
+    }
+    return displacement;
+  }
+
+  /**
+   * Assign the displace function to a property of the Drupal global object.
+   */
+  Drupal.displace = displace;
+  $.extend(Drupal.displace, {
+    /**
+     * Expose offsets to other scripts to avoid having to recalculate offsets
+     */
+    offsets: offsets,
+    /**
+     * Expose method to compute a single edge offsets.
+     */
+    calculateOffset: calculateOffset
+  });
+
+})(jQuery, Drupal, Drupal.debounce);
+;
+/*! jquery.cookie v1.4.1 | MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(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))}});;
+(function ($, Drupal, debounce) {
+
+  "use strict";
+
+  /**
+   * Retrieves the summary for the first element.
+   */
+  $.fn.drupalGetSummary = function () {
+    var callback = this.data('summaryCallback');
+    return (this[0] && callback) ? $.trim(callback(this[0])) : '';
+  };
+
+  /**
+   * Sets the summary for all matched elements.
+   *
+   * @param callback
+   *   Either a function that will be called each time the summary is
+   *   retrieved or a string (which is returned each time).
+   */
+  $.fn.drupalSetSummary = function (callback) {
+    var self = this;
+
+    // To facilitate things, the callback should always be a function. If it's
+    // not, we wrap it into an anonymous function which just returns the value.
+    if (typeof callback !== 'function') {
+      var val = callback;
+      callback = function () { return val; };
+    }
+
+    return this
+      .data('summaryCallback', callback)
+      // To prevent duplicate events, the handlers are first removed and then
+      // (re-)added.
+      .off('formUpdated.summary')
+      .on('formUpdated.summary', function () {
+        self.trigger('summaryUpdated');
+      })
+      // The actual summaryUpdated handler doesn't fire when the callback is
+      // changed, so we have to do this manually.
+      .trigger('summaryUpdated');
+  };
+
+  /**
+   * Prevents consecutive form submissions of identical form values.
+   *
+   * Repetitive form submissions that would submit the identical form values are
+   * prevented, unless the form values are different to the previously submitted
+   * values.
+   *
+   * This is a simplified re-implementation of a user-agent behavior that should
+   * be natively supported by major web browsers, but at this time, only Firefox
+   * has a built-in protection.
+   *
+   * A form value-based approach ensures that the constraint is triggered for
+   * consecutive, identical form submissions only. Compared to that, a form
+   * button-based approach would (1) rely on [visible] buttons to exist where
+   * technically not required and (2) require more complex state management if
+   * there are multiple buttons in a form.
+   *
+   * This implementation is based on form-level submit events only and relies on
+   * jQuery's serialize() method to determine submitted form values. As such, the
+   * following limitations exist:
+   *
+   * - Event handlers on form buttons that preventDefault() do not receive a
+   *   double-submit protection. That is deemed to be fine, since such button
+   *   events typically trigger reversible client-side or server-side operations
+   *   that are local to the context of a form only.
+   * - Changed values in advanced form controls, such as file inputs, are not part
+   *   of the form values being compared between consecutive form submits (due to
+   *   limitations of jQuery.serialize()). That is deemed to be acceptable,
+   *   because if the user forgot to attach a file, then the size of HTTP payload
+   *   will most likely be small enough to be fully passed to the server endpoint
+   *   within (milli)seconds. If a user mistakenly attached a wrong file and is
+   *   technically versed enough to cancel the form submission (and HTTP payload)
+   *   in order to attach a different file, then that edge-case is not supported
+   *   here.
+   *
+   * Lastly, all forms submitted via HTTP GET are idempotent by definition of HTTP
+   * standards, so excluded in this implementation.
+   */
+  Drupal.behaviors.formSingleSubmit = {
+    attach: function () {
+      function onFormSubmit(e) {
+        var $form = $(e.currentTarget);
+        var formValues = $form.serialize();
+        var previousValues = $form.attr('data-drupal-form-submit-last');
+        if (previousValues === formValues) {
+          e.preventDefault();
+        }
+        else {
+          $form.attr('data-drupal-form-submit-last', formValues);
+        }
+      }
+
+      $('body').once('form-single-submit')
+        .on('submit.singleSubmit', 'form:not([method~="GET"])', onFormSubmit);
+    }
+  };
+
+  /**
+   * Sends a 'formUpdated' event each time a form element is modified.
+   */
+  function triggerFormUpdated(element) {
+    $(element).trigger('formUpdated');
+  }
+
+  /**
+   * Collects the IDs of all form fields in the given form.
+   *
+   * @param {HTMLFormElement} form
+   * @return {Array}
+   */
+  function fieldsList(form) {
+    var $fieldList = $(form).find('[name]').map(function (index, element) {
+      // We use id to avoid name duplicates on radio fields and filter out
+      // elements with a name but no id.
+      return element.getAttribute('id');
+    });
+    // Return a true array.
+    return $.makeArray($fieldList);
+  }
+
+  /**
+   * Triggers the 'formUpdated' event on form elements when they are modified.
+   */
+  Drupal.behaviors.formUpdated = {
+    attach: function (context) {
+      var $context = $(context);
+      var contextIsForm = $context.is('form');
+      var $forms = (contextIsForm ? $context : $context.find('form')).once('form-updated');
+      var formFields;
+
+      if ($forms.length) {
+        // Initialize form behaviors, use $.makeArray to be able to use native
+        // forEach array method and have the callback parameters in the right order.
+        $.makeArray($forms).forEach(function (form) {
+          var events = 'change.formUpdated keypress.formUpdated';
+          var eventHandler = debounce(function (event) { triggerFormUpdated(event.target); }, 300);
+          formFields = fieldsList(form).join(',');
+
+          form.setAttribute('data-drupal-form-fields', formFields);
+          $(form).on(events, eventHandler);
+        });
+      }
+      // On ajax requests context is the form element.
+      if (contextIsForm) {
+        formFields = fieldsList(context).join(',');
+        // @todo replace with form.getAttribute() when #1979468 is in.
+        var currentFields = $(context).attr('data-drupal-form-fields');
+        // if there has been a change in the fields or their order, trigger
+        // formUpdated.
+        if (formFields !== currentFields) {
+          triggerFormUpdated(context);
+        }
+      }
+
+    },
+    detach: function (context, settings, trigger) {
+      var $context = $(context);
+      var contextIsForm = $context.is('form');
+      if (trigger === 'unload') {
+        var $forms = (contextIsForm ? $context : $context.find('form')).removeOnce('form-updated');
+        if ($forms.length) {
+          $.makeArray($forms).forEach(function (form) {
+            form.removeAttribute('data-drupal-form-fields');
+            $(form).off('.formUpdated');
+          });
+        }
+      }
+    }
+  };
+
+  /**
+   * Prepopulate form fields with information from the visitor browser.
+   */
+  Drupal.behaviors.fillUserInfoFromBrowser = {
+    attach: function (context, settings) {
+      var userInfo = ['name', 'mail', 'homepage'];
+      var $forms = $('[data-user-info-from-browser]').once('user-info-from-browser');
+      if ($forms.length) {
+        userInfo.map(function (info) {
+          var $element = $forms.find('[name=' + info + ']');
+          var browserData = localStorage.getItem('Drupal.visitor.' + info);
+          var emptyOrDefault = ($element.val() === '' || ($element.attr('data-drupal-default-value') === $element.val()));
+          if ($element.length && emptyOrDefault && browserData) {
+            $element.val(browserData);
+          }
+        });
+      }
+      $forms.on('submit', function () {
+        userInfo.map(function (info) {
+          var $element = $forms.find('[name=' + info + ']');
+          if ($element.length) {
+            localStorage.setItem('Drupal.visitor.' + info, $element.val());
+          }
+        });
+      });
+    }
+  };
+
+})(jQuery, Drupal, Drupal.debounce);
+;
+(function ($) {
+
+  "use strict";
+
+  /**
+   * A progressbar object. Initialized with the given id. Must be inserted into
+   * the DOM afterwards through progressBar.element.
+   *
+   * method is the function which will perform the HTTP request to get the
+   * progress bar state. Either "GET" or "POST".
+   *
+   * e.g. pb = new Drupal.ProgressBar('myProgressBar');
+   *      some_element.appendChild(pb.element);
+   */
+  Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) {
+    this.id = id;
+    this.method = method || 'GET';
+    this.updateCallback = updateCallback;
+    this.errorCallback = errorCallback;
+
+    // The WAI-ARIA setting aria-live="polite" will announce changes after users
+    // have completed their current activity and not interrupt the screen reader.
+    this.element = $('<div class="progress" aria-live="polite"></div>').attr('id', id);
+    this.element.html('<div class="progress__label">&nbsp;</div>' +
+      '<div class="progress__track"><div class="progress__bar"></div></div>' +
+      '<div class="progress__percentage"></div>' +
+      '<div class="progress__description">&nbsp;</div>');
+  };
+
+  $.extend(Drupal.ProgressBar.prototype, {
+    /**
+     * Set the percentage and status message for the progressbar.
+     */
+    setProgress: function (percentage, message, label) {
+      if (percentage >= 0 && percentage <= 100) {
+        $(this.element).find('div.progress__bar').css('width', percentage + '%');
+        $(this.element).find('div.progress__percentage').html(percentage + '%');
+      }
+      $('div.progress__description', this.element).html(message);
+      $('div.progress__label', this.element).html(label);
+      if (this.updateCallback) {
+        this.updateCallback(percentage, message, this);
+      }
+    },
+
+    /**
+     * Start monitoring progress via Ajax.
+     */
+    startMonitoring: function (uri, delay) {
+      this.delay = delay;
+      this.uri = uri;
+      this.sendPing();
+    },
+
+    /**
+     * Stop monitoring progress via Ajax.
+     */
+    stopMonitoring: function () {
+      clearTimeout(this.timer);
+      // This allows monitoring to be stopped from within the callback.
+      this.uri = null;
+    },
+
+    /**
+     * Request progress data from server.
+     */
+    sendPing: function () {
+      if (this.timer) {
+        clearTimeout(this.timer);
+      }
+      if (this.uri) {
+        var pb = this;
+        // When doing a post request, you need non-null data. Otherwise a
+        // HTTP 411 or HTTP 406 (with Apache mod_security) error may result.
+        $.ajax({
+          type: this.method,
+          url: this.uri,
+          data: '',
+          dataType: 'json',
+          success: function (progress) {
+            // Display errors.
+            if (progress.status === 0) {
+              pb.displayError(progress.data);
+              return;
+            }
+            // Update display.
+            pb.setProgress(progress.percentage, progress.message, progress.label);
+            // Schedule next timer.
+            pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay);
+          },
+          error: function (xmlhttp) {
+            var e = new Drupal.AjaxError(xmlhttp, pb.uri);
+            pb.displayError('<pre>' + e.message + '</pre>');
+          }
+        });
+      }
+    },
+
+    /**
+     * Display errors on the page.
+     */
+    displayError: function (string) {
+      var error = $('<div class="messages messages--error"></div>').html(string);
+      $(this.element).before(error).hide();
+
+      if (this.errorCallback) {
+        this.errorCallback(this);
+      }
+    }
+  });
+
+})(jQuery);
+;
+(function ($, window, Drupal, drupalSettings) {
+
+  "use strict";
+
+  /**
+   * Provides Ajax page updating via jQuery $.ajax (Asynchronous JavaScript and XML).
+   *
+   * Ajax is a method of making a request via JavaScript while viewing an HTML
+   * page. The request returns an array of commands encoded in JSON, which is
+   * then executed to make any changes that are necessary to the page.
+   *
+   * Drupal uses this file to enhance form elements with #ajax['url'] and
+   * #ajax['wrapper'] properties. If set, this file will automatically be included
+   * to provide Ajax capabilities.
+   */
+
+  Drupal.ajax = Drupal.ajax || {};
+
+  /**
+   * Attaches the Ajax behavior to each Ajax form element.
+   */
+  Drupal.behaviors.AJAX = {
+    attach: function (context, settings) {
+
+      function loadAjaxBehavior(base) {
+        var element_settings = settings.ajax[base];
+        if (typeof element_settings.selector === 'undefined') {
+          element_settings.selector = '#' + base;
+        }
+        $(element_settings.selector).once('drupal-ajax', function () {
+          element_settings.element = this;
+          Drupal.ajax[element_settings.selector] = new Drupal.ajax(base, this, element_settings);
+        });
+      }
+
+      // Load all Ajax behaviors specified in the settings.
+      for (var base in settings.ajax) {
+        if (settings.ajax.hasOwnProperty(base)) {
+          loadAjaxBehavior(base);
+        }
+      }
+
+      // Bind Ajax behaviors to all items showing the class.
+      $('.use-ajax').once('ajax', function () {
+        var element_settings = {};
+        // Clicked links look better with the throbber than the progress bar.
+        element_settings.progress = {'type': 'throbber'};
+
+        // For anchor tags, these will go to the target of the anchor rather
+        // than the usual location.
+        if ($(this).attr('href')) {
+          element_settings.url = $(this).attr('href');
+          element_settings.event = 'click';
+        }
+        element_settings.accepts = $(this).data('accepts');
+        element_settings.dialog = $(this).data('dialog-options');
+        var baseUseAjax = $(this).attr('id');
+        Drupal.ajax[baseUseAjax] = new Drupal.ajax(baseUseAjax, this, element_settings);
+      });
+
+      // This class means to submit the form to the action using Ajax.
+      $('.use-ajax-submit').once('ajax', function () {
+        var element_settings = {};
+
+        // Ajax submits specified in this manner automatically submit to the
+        // normal form action.
+        element_settings.url = $(this.form).attr('action');
+        // Form submit button clicks need to tell the form what was clicked so
+        // it gets passed in the POST request.
+        element_settings.setClick = true;
+        // Form buttons use the 'click' event rather than mousedown.
+        element_settings.event = 'click';
+        // Clicked form buttons look better with the throbber than the progress bar.
+        element_settings.progress = {'type': 'throbber'};
+
+        var baseUseAjaxSubmit = $(this).attr('id');
+        Drupal.ajax[baseUseAjaxSubmit] = new Drupal.ajax(baseUseAjaxSubmit, this, element_settings);
+      });
+    }
+  };
+
+  /**
+   * Extends Error to provide handling for Errors in AJAX
+   */
+  Drupal.AjaxError = function (xmlhttp, uri) {
+
+    var statusCode, statusText, pathText, responseText, readyStateText;
+    if (xmlhttp.status) {
+      statusCode = "\n" + Drupal.t("An AJAX HTTP error occurred.") + "\n" + Drupal.t("HTTP Result Code: !status", {'!status': xmlhttp.status});
+    }
+    else {
+      statusCode = "\n" + Drupal.t("An AJAX HTTP request terminated abnormally.");
+    }
+    statusCode += "\n" + Drupal.t("Debugging information follows.");
+    pathText = "\n" + Drupal.t("Path: !uri", {'!uri': uri});
+    statusText = '';
+    // In some cases, when statusCode === 0, xmlhttp.statusText may not be defined.
+    // Unfortunately, testing for it with typeof, etc, doesn't seem to catch that
+    // and the test causes an exception. So we need to catch the exception here.
+    try {
+      statusText = "\n" + Drupal.t("StatusText: !statusText", {'!statusText': $.trim(xmlhttp.statusText)});
+    }
+    catch (e) {}
+
+    responseText = '';
+    // Again, we don't have a way to know for sure whether accessing
+    // xmlhttp.responseText is going to throw an exception. So we'll catch it.
+    try {
+      responseText = "\n" + Drupal.t("ResponseText: !responseText", {'!responseText': $.trim(xmlhttp.responseText)});
+    }
+    catch (e) {}
+
+    // Make the responseText more readable by stripping HTML tags and newlines.
+    responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, "");
+    responseText = responseText.replace(/[\n]+\s+/g, "\n");
+
+    // We don't need readyState except for status == 0.
+    readyStateText = xmlhttp.status === 0 ? ("\n" + Drupal.t("ReadyState: !readyState", {'!readyState': xmlhttp.readyState})) : "";
+
+    this.message = statusCode + pathText + statusText + responseText + readyStateText;
+    this.name = 'AjaxError';
+  };
+
+  Drupal.AjaxError.prototype = new Error();
+  Drupal.AjaxError.prototype.constructor = Drupal.AjaxError;
+
+  /**
+   * Ajax object.
+   *
+   * All Ajax objects on a page are accessible through the global Drupal.ajax
+   * object and are keyed by the submit button's ID. You can access them from
+   * your module's JavaScript file to override properties or functions.
+   *
+   * For example, if your Ajax enabled button has the ID 'edit-submit', you can
+   * redefine the function that is called to insert the new content like this
+   * (inside a Drupal.behaviors attach block):
+   * @code
+   *    Drupal.behaviors.myCustomAJAXStuff = {
+   *      attach: function (context, settings) {
+   *        Drupal.ajax['edit-submit'].commands.insert = function (ajax, response, status) {
+   *          new_content = $(response.data);
+   *          $('#my-wrapper').append(new_content);
+   *          alert('New content was appended to #my-wrapper');
+   *        }
+   *      }
+   *    };
+   * @endcode
+   */
+  Drupal.ajax = function (base, element, element_settings) {
+    var defaults = {
+      event: 'mousedown',
+      keypress: true,
+      selector: '#' + base,
+      effect: 'none',
+      speed: 'none',
+      method: 'replaceWith',
+      progress: {
+        type: 'throbber',
+        message: Drupal.t('Please wait...')
+      },
+      submit: {
+        'js': true
+      }
+    };
+
+    $.extend(this, defaults, element_settings);
+
+    this.commands = new Drupal.AjaxCommands();
+
+    // @todo Remove this after refactoring the PHP code to:
+    //   - Call this 'selector'.
+    //   - Include the '#' for ID-based selectors.
+    //   - Support non-ID-based selectors.
+    if (this.wrapper) {
+      this.wrapper = '#' + this.wrapper;
+    }
+
+    this.element = element;
+    this.element_settings = element_settings;
+
+    // If there isn't a form, jQuery.ajax() will be used instead, allowing us to
+    // bind Ajax to links as well.
+    if (this.element.form) {
+      this.$form = $(this.element.form);
+    }
+
+    // If no Ajax callback URL was given, use the link href or form action.
+    if (!this.url) {
+      if ($(element).is('a')) {
+        this.url = $(element).attr('href');
+      }
+      else if (element.form) {
+        this.url = this.$form.attr('action');
+
+        // @todo If there's a file input on this form, then jQuery will submit the
+        //   AJAX response with a hidden Iframe rather than the XHR object. If the
+        //   response to the submission is an HTTP redirect, then the Iframe will
+        //   follow it, but the server won't content negotiate it correctly,
+        //   because there won't be an ajax_iframe_upload POST variable. Until we
+        //   figure out a work around to this problem, we prevent AJAX-enabling
+        //   elements that submit to the same URL as the form when there's a file
+        //   input. For example, this means the Delete button on the edit form of
+        //   an Article node doesn't open its confirmation form in a dialog.
+        if (this.$form.find(':file').length) {
+          return;
+        }
+      }
+    }
+
+    // Replacing 'nojs' with 'ajax' in the URL allows for an easy method to let
+    // the server detect when it needs to degrade gracefully.
+    // There are four scenarios to check for:
+    // 1. /nojs/
+    // 2. /nojs$ - The end of a URL string.
+    // 3. /nojs? - Followed by a query (e.g. path/nojs?destination=foobar).
+    // 4. /nojs# - Followed by a fragment (e.g.: path/nojs#myfragment).
+    this.url = this.url.replace(/\/nojs(\/|$|\?|#)/g, '/ajax$1');
+
+    // Set the options for the ajaxSubmit function.
+    // The 'this' variable will not persist inside of the options object.
+    var ajax = this;
+    ajax.options = {
+      url: ajax.url,
+      data: ajax.submit,
+      beforeSerialize: function (element_settings, options) {
+        return ajax.beforeSerialize(element_settings, options);
+      },
+      beforeSubmit: function (form_values, element_settings, options) {
+        ajax.ajaxing = true;
+        return ajax.beforeSubmit(form_values, element_settings, options);
+      },
+      beforeSend: function (xmlhttprequest, options) {
+        ajax.ajaxing = true;
+        return ajax.beforeSend(xmlhttprequest, options);
+      },
+      success: function (response, status) {
+        // Sanity check for browser support (object expected).
+        // When using iFrame uploads, responses must be returned as a string.
+        if (typeof response === 'string') {
+          response = $.parseJSON(response);
+        }
+        return ajax.success(response, status);
+      },
+      complete: function (response, status) {
+        ajax.ajaxing = false;
+        if (status === 'error' || status === 'parsererror') {
+          return ajax.error(response, ajax.url);
+        }
+      },
+      dataType: 'json',
+      accepts: {
+        json: element_settings.accepts || 'application/vnd.drupal-ajax'
+      },
+      type: 'POST'
+    };
+
+    if (element_settings.dialog) {
+      ajax.options.data.dialogOptions = element_settings.dialog;
+    }
+
+    // Bind the ajaxSubmit function to the element event.
+    $(ajax.element).on(element_settings.event, function (event) {
+      return ajax.eventResponse(this, event);
+    });
+
+    // If necessary, enable keyboard submission so that Ajax behaviors
+    // can be triggered through keyboard input as well as e.g. a mousedown
+    // action.
+    if (element_settings.keypress) {
+      $(ajax.element).on('keypress', function (event) {
+        return ajax.keypressResponse(this, event);
+      });
+    }
+
+    // If necessary, prevent the browser default action of an additional event.
+    // For example, prevent the browser default action of a click, even if the
+    // AJAX behavior binds to mousedown.
+    if (element_settings.prevent) {
+      $(ajax.element).on(element_settings.prevent, false);
+    }
+  };
+
+  /**
+   * Handle a key press.
+   *
+   * The Ajax object will, if instructed, bind to a key press response. This
+   * will test to see if the key press is valid to trigger this event and
+   * if it is, trigger it for us and prevent other keypresses from triggering.
+   * In this case we're handling RETURN and SPACEBAR keypresses (event codes 13
+   * and 32. RETURN is often used to submit a form when in a textfield, and
+   * SPACE is often used to activate an element without submitting.
+   */
+  Drupal.ajax.prototype.keypressResponse = function (element, event) {
+    // Create a synonym for this to reduce code confusion.
+    var ajax = this;
+
+    // Detect enter key and space bar and allow the standard response for them,
+    // except for form elements of type 'text', 'tel', 'number' and 'textarea',
+    // where the spacebar activation causes inappropriate activation if
+    // #ajax['keypress'] is TRUE. On a text-type widget a space should always be a
+    // space.
+    if (event.which === 13 || (event.which === 32 && element.type !== 'text' &&
+      element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number')) {
+      event.preventDefault();
+      event.stopPropagation();
+      $(ajax.element_settings.element).trigger(ajax.element_settings.event);
+    }
+  };
+
+  /**
+   * Handle an event that triggers an Ajax response.
+   *
+   * When an event that triggers an Ajax response happens, this method will
+   * perform the actual Ajax call. It is bound to the event using
+   * bind() in the constructor, and it uses the options specified on the
+   * ajax object.
+   */
+  Drupal.ajax.prototype.eventResponse = function (element, event) {
+    event.preventDefault();
+    event.stopPropagation();
+
+    // Create a synonym for this to reduce code confusion.
+    var ajax = this;
+
+    // Do not perform another ajax command if one is already in progress.
+    if (ajax.ajaxing) {
+      return;
+    }
+
+    try {
+      if (ajax.$form) {
+        // If setClick is set, we must set this to ensure that the button's
+        // value is passed.
+        if (ajax.setClick) {
+          // Mark the clicked button. 'form.clk' is a special variable for
+          // ajaxSubmit that tells the system which element got clicked to
+          // trigger the submit. Without it there would be no 'op' or
+          // equivalent.
+          element.form.clk = element;
+        }
+
+        ajax.$form.ajaxSubmit(ajax.options);
+      }
+      else {
+        ajax.beforeSerialize(ajax.element, ajax.options);
+        $.ajax(ajax.options);
+      }
+    }
+    catch (e) {
+      // Unset the ajax.ajaxing flag here because it won't be unset during
+      // the complete response.
+      ajax.ajaxing = false;
+      window.alert("An error occurred while attempting to process " + ajax.options.url + ": " + e.message);
+    }
+  };
+
+  /**
+   * Handler for the form serialization.
+   *
+   * Runs before the beforeSend() handler (see below), and unlike that one, runs
+   * before field data is collected.
+   */
+  Drupal.ajax.prototype.beforeSerialize = function (element, options) {
+    // Allow detaching behaviors to update field values before collecting them.
+    // This is only needed when field values are added to the POST data, so only
+    // when there is a form such that this.$form.ajaxSubmit() is used instead of
+    // $.ajax(). When there is no form and $.ajax() is used, beforeSerialize()
+    // isn't called, but don't rely on that: explicitly check this.$form.
+    if (this.$form) {
+      var settings = this.settings || drupalSettings;
+      Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize');
+    }
+
+    // Prevent duplicate HTML ids in the returned markup.
+    // @see drupal_html_id()
+    var ids = document.querySelectorAll('[id]');
+    var ajaxHtmlIds = [];
+    for (var i = 0, il = ids.length; i < il; i++) {
+      ajaxHtmlIds.push(ids[i].id);
+    }
+    // Join IDs to minimize request size.
+    options.data.ajax_html_ids = ajaxHtmlIds.join(' ');
+
+    // Allow Drupal to return new JavaScript and CSS files to load without
+    // returning the ones already loaded.
+    // @see \Drupal\Core\Theme\AjaxBasePageNegotiator
+    // @see drupal_get_css()
+    // @see drupal_get_js()
+    var pageState = drupalSettings.ajaxPageState;
+    options.data['ajax_page_state[theme]'] = pageState.theme;
+    options.data['ajax_page_state[theme_token]'] = pageState.theme_token;
+    for (var cssFile in pageState.css) {
+      if (pageState.css.hasOwnProperty(cssFile)) {
+        options.data['ajax_page_state[css][' + cssFile + ']'] = 1;
+      }
+    }
+    for (var jsFile in pageState.js) {
+      if (pageState.js.hasOwnProperty(jsFile)) {
+        options.data['ajax_page_state[js][' + jsFile + ']'] = 1;
+      }
+    }
+  };
+
+  /**
+   * Modify form values prior to form submission.
+   */
+  Drupal.ajax.prototype.beforeSubmit = function (form_values, element, options) {
+    // This function is left empty to make it simple to override for modules
+    // that wish to add functionality here.
+  };
+
+  /**
+   * Prepare the Ajax request before it is sent.
+   */
+  Drupal.ajax.prototype.beforeSend = function (xmlhttprequest, options) {
+    // For forms without file inputs, the jQuery Form plugin serializes the form
+    // values, and then calls jQuery's $.ajax() function, which invokes this
+    // handler. In this circumstance, options.extraData is never used. For forms
+    // with file inputs, the jQuery Form plugin uses the browser's normal form
+    // submission mechanism, but captures the response in a hidden IFRAME. In this
+    // circumstance, it calls this handler first, and then appends hidden fields
+    // to the form to submit the values in options.extraData. There is no simple
+    // way to know which submission mechanism will be used, so we add to extraData
+    // regardless, and allow it to be ignored in the former case.
+    if (this.$form) {
+      options.extraData = options.extraData || {};
+
+      // Let the server know when the IFRAME submission mechanism is used. The
+      // server can use this information to wrap the JSON response in a TEXTAREA,
+      // as per http://jquery.malsup.com/form/#file-upload.
+      options.extraData.ajax_iframe_upload = '1';
+
+      // The triggering element is about to be disabled (see below), but if it
+      // contains a value (e.g., a checkbox, textfield, select, etc.), ensure that
+      // value is included in the submission. As per above, submissions that use
+      // $.ajax() are already serialized prior to the element being disabled, so
+      // this is only needed for IFRAME submissions.
+      var v = $.fieldValue(this.element);
+      if (v !== null) {
+        options.extraData[this.element.name] = v;
+      }
+    }
+
+    // Disable the element that received the change to prevent user interface
+    // interaction while the Ajax request is in progress. ajax.ajaxing prevents
+    // the element from triggering a new request, but does not prevent the user
+    // from changing its value.
+    $(this.element).addClass('progress-disabled').prop('disabled', true);
+
+    // Insert progressbar or throbber.
+    if (this.progress.type === 'bar') {
+      var progressBar = new Drupal.ProgressBar('ajax-progress-' + this.element.id, $.noop, this.progress.method, $.noop);
+      if (this.progress.message) {
+        progressBar.setProgress(-1, this.progress.message);
+      }
+      if (this.progress.url) {
+        progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500);
+      }
+      this.progress.element = $(progressBar.element).addClass('ajax-progress ajax-progress-bar');
+      this.progress.object = progressBar;
+      $(this.element).after(this.progress.element);
+    }
+    else if (this.progress.type === 'throbber') {
+      this.progress.element = $('<div class="ajax-progress ajax-progress-throbber"><div class="throbber">&nbsp;</div></div>');
+      if (this.progress.message) {
+        this.progress.element.find('.throbber').after('<div class="message">' + this.progress.message + '</div>');
+      }
+      $(this.element).after(this.progress.element);
+    }
+    else if (this.progress.type === 'fullscreen') {
+      this.progress.element = $('<div class="ajax-progress ajax-progress-fullscreen">&nbsp;</div>');
+      $('body').after(this.progress.element);
+    }
+  };
+
+  /**
+   * Handler for the form redirection completion.
+   */
+  Drupal.ajax.prototype.success = function (response, status) {
+    // Remove the progress element.
+    if (this.progress.element) {
+      $(this.progress.element).remove();
+    }
+    if (this.progress.object) {
+      this.progress.object.stopMonitoring();
+    }
+    $(this.element).removeClass('progress-disabled').prop('disabled', false);
+
+    for (var i in response) {
+      if (response.hasOwnProperty(i) && response[i].command && this.commands[response[i].command]) {
+        this.commands[response[i].command](this, response[i], status);
+      }
+    }
+
+    // Reattach behaviors, if they were detached in beforeSerialize(). The
+    // attachBehaviors() called on the new content from processing the response
+    // commands is not sufficient, because behaviors from the entire form need
+    // to be reattached.
+    if (this.$form) {
+      var settings = this.settings || drupalSettings;
+      Drupal.attachBehaviors(this.$form.get(0), settings);
+    }
+
+    // Remove any response-specific settings so they don't get used on the next
+    // call by mistake.
+    this.settings = null;
+  };
+
+  /**
+   * Build an effect object which tells us how to apply the effect when adding new HTML.
+   */
+  Drupal.ajax.prototype.getEffect = function (response) {
+    var type = response.effect || this.effect;
+    var speed = response.speed || this.speed;
+
+    var effect = {};
+    if (type === 'none') {
+      effect.showEffect = 'show';
+      effect.hideEffect = 'hide';
+      effect.showSpeed = '';
+    }
+    else if (type === 'fade') {
+      effect.showEffect = 'fadeIn';
+      effect.hideEffect = 'fadeOut';
+      effect.showSpeed = speed;
+    }
+    else {
+      effect.showEffect = type + 'Toggle';
+      effect.hideEffect = type + 'Toggle';
+      effect.showSpeed = speed;
+    }
+
+    return effect;
+  };
+
+  /**
+   * Handler for the form redirection error.
+   */
+  Drupal.ajax.prototype.error = function (response, uri) {
+    // Remove the progress element.
+    if (this.progress.element) {
+      $(this.progress.element).remove();
+    }
+    if (this.progress.object) {
+      this.progress.object.stopMonitoring();
+    }
+    // Undo hide.
+    $(this.wrapper).show();
+    // Re-enable the element.
+    $(this.element).removeClass('progress-disabled').prop('disabled', false);
+    // Reattach behaviors, if they were detached in beforeSerialize().
+    if (this.$form) {
+      var settings = response.settings || this.settings || drupalSettings;
+      Drupal.attachBehaviors(this.$form.get(0), settings);
+    }
+    throw new Drupal.AjaxError(response, uri);
+  };
+
+  /**
+   * Provide a series of commands that the server can request the client perform.
+   */
+  Drupal.AjaxCommands = function () {};
+  Drupal.AjaxCommands.prototype = {
+    /**
+     * Command to insert new content into the DOM.
+     */
+    insert: function (ajax, response, status) {
+      // Get information from the response. If it is not there, default to
+      // our presets.
+      var wrapper = response.selector ? $(response.selector) : $(ajax.wrapper);
+      var method = response.method || ajax.method;
+      var effect = ajax.getEffect(response);
+      var settings;
+
+      // We don't know what response.data contains: it might be a string of text
+      // without HTML, so don't rely on jQuery correctly interpreting
+      // $(response.data) as new HTML rather than a CSS selector. Also, if
+      // response.data contains top-level text nodes, they get lost with either
+      // $(response.data) or $('<div></div>').replaceWith(response.data).
+      var new_content_wrapped = $('<div></div>').html(response.data);
+      var new_content = new_content_wrapped.contents();
+
+      // For legacy reasons, the effects processing code assumes that new_content
+      // consists of a single top-level element. Also, it has not been
+      // sufficiently tested whether attachBehaviors() can be successfully called
+      // with a context object that includes top-level text nodes. However, to
+      // give developers full control of the HTML appearing in the page, and to
+      // enable Ajax content to be inserted in places where DIV elements are not
+      // allowed (e.g., within TABLE, TR, and SPAN parents), we check if the new
+      // content satisfies the requirement of a single top-level element, and
+      // only use the container DIV created above when it doesn't. For more
+      // information, please see http://drupal.org/node/736066.
+      if (new_content.length !== 1 || new_content.get(0).nodeType !== 1) {
+        new_content = new_content_wrapped;
+      }
+
+      // If removing content from the wrapper, detach behaviors first.
+      switch (method) {
+        case 'html':
+        case 'replaceWith':
+        case 'replaceAll':
+        case 'empty':
+        case 'remove':
+          settings = response.settings || ajax.settings || drupalSettings;
+          Drupal.detachBehaviors(wrapper.get(0), settings);
+      }
+
+      // Add the new content to the page.
+      wrapper[method](new_content);
+
+      // Immediately hide the new content if we're using any effects.
+      if (effect.showEffect !== 'show') {
+        new_content.hide();
+      }
+
+      // Determine which effect to use and what content will receive the
+      // effect, then show the new content.
+      if (new_content.find('.ajax-new-content').length > 0) {
+        new_content.find('.ajax-new-content').hide();
+        new_content.show();
+        new_content.find('.ajax-new-content')[effect.showEffect](effect.showSpeed);
+      }
+      else if (effect.showEffect !== 'show') {
+        new_content[effect.showEffect](effect.showSpeed);
+      }
+
+      // Attach all JavaScript behaviors to the new content, if it was successfully
+      // added to the page, this if statement allows #ajax['wrapper'] to be
+      // optional.
+      if (new_content.parents('html').length > 0) {
+        // Apply any settings from the returned JSON if available.
+        settings = response.settings || ajax.settings || drupalSettings;
+        Drupal.attachBehaviors(new_content.get(0), settings);
+      }
+    },
+
+    /**
+     * Command to remove a chunk from the page.
+     */
+    remove: function (ajax, response, status) {
+      var settings = response.settings || ajax.settings || drupalSettings;
+      $(response.selector).each(function () {
+        Drupal.detachBehaviors(this, settings);
+      })
+        .remove();
+    },
+
+    /**
+     * Command to mark a chunk changed.
+     */
+    changed: function (ajax, response, status) {
+      if (!$(response.selector).hasClass('ajax-changed')) {
+        $(response.selector).addClass('ajax-changed');
+        if (response.asterisk) {
+          $(response.selector).find(response.asterisk).append(' <abbr class="ajax-changed" title="' + Drupal.t('Changed') + '">*</abbr> ');
+        }
+      }
+    },
+
+    /**
+     * Command to provide an alert.
+     */
+    alert: function (ajax, response, status) {
+      window.alert(response.text, response.title);
+    },
+
+    /**
+     * Command to set the window.location, redirecting the browser.
+     */
+    redirect: function (ajax, response, status) {
+      window.location = response.url;
+    },
+
+    /**
+     * Command to provide the jQuery css() function.
+     */
+    css: function (ajax, response, status) {
+      $(response.selector).css(response.argument);
+    },
+
+    /**
+     * Command to set the settings that will be used for other commands in this response.
+     */
+    settings: function (ajax, response, status) {
+      if (response.merge) {
+        $.extend(true, drupalSettings, response.settings);
+      }
+      else {
+        ajax.settings = response.settings;
+      }
+    },
+
+    /**
+     * Command to attach data using jQuery's data API.
+     */
+    data: function (ajax, response, status) {
+      $(response.selector).data(response.name, response.value);
+    },
+
+    /**
+     * Command to apply a jQuery method.
+     */
+    invoke: function (ajax, response, status) {
+      var $element = $(response.selector);
+      $element[response.method].apply($element, response.args);
+    },
+
+    /**
+     * Command to restripe a table.
+     */
+    restripe: function (ajax, response, status) {
+      // :even and :odd are reversed because jQuery counts from 0 and
+      // we count from 1, so we're out of sync.
+      // Match immediate children of the parent element to allow nesting.
+      $(response.selector).find('> tbody > tr:visible, > tr:visible')
+        .removeClass('odd even')
+        .filter(':even').addClass('odd').end()
+        .filter(':odd').addClass('even');
+    },
+
+    /**
+     * Command to update a form's build ID.
+     */
+    update_build_id: function (ajax, response, status) {
+      $('input[name="form_build_id"][value="' + response.old + '"]').val(response.new);
+    },
+
+    /**
+     * Command to add css.
+     *
+     * Uses the proprietary addImport method if available as browsers which
+     * support that method ignore @import statements in dynamically added
+     * stylesheets.
+     */
+    add_css: function (ajax, response, status) {
+      // Add the styles in the normal way.
+      $('head').prepend(response.data);
+      // Add imports in the styles using the addImport method if available.
+      var match, importMatch = /^@import url\("(.*)"\);$/igm;
+      if (document.styleSheets[0].addImport && importMatch.test(response.data)) {
+        importMatch.lastIndex = 0;
+        do {
+          match = importMatch.exec(response.data);
+          document.styleSheets[0].addImport(match[1]);
+        } while (match);
+      }
+    }
+  };
+
+})(jQuery, this, Drupal, drupalSettings);
+;
+/*!
+ * jQuery UI Button 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/button/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var lastActive, startXPos, startYPos, clickDragged,
+	baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
+	stateClasses = "ui-state-hover ui-state-active ",
+	typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
+	formResetHandler = function() {
+		var buttons = $( this ).find( ":ui-button" );
+		setTimeout(function() {
+			buttons.button( "refresh" );
+		}, 1 );
+	},
+	radioGroup = function( radio ) {
+		var name = radio.name,
+			form = radio.form,
+			radios = $( [] );
+		if ( name ) {
+			name = name.replace( /'/g, "\\'" );
+			if ( form ) {
+				radios = $( form ).find( "[name='" + name + "']" );
+			} else {
+				radios = $( "[name='" + name + "']", radio.ownerDocument )
+					.filter(function() {
+						return !this.form;
+					});
+			}
+		}
+		return radios;
+	};
+
+$.widget( "ui.button", {
+	version: "1.10.2",
+	defaultElement: "<button>",
+	options: {
+		disabled: null,
+		text: true,
+		label: null,
+		icons: {
+			primary: null,
+			secondary: null
+		}
+	},
+	_create: function() {
+		this.element.closest( "form" )
+			.unbind( "reset" + this.eventNamespace )
+			.bind( "reset" + this.eventNamespace, formResetHandler );
+
+		if ( typeof this.options.disabled !== "boolean" ) {
+			this.options.disabled = !!this.element.prop( "disabled" );
+		} else {
+			this.element.prop( "disabled", this.options.disabled );
+		}
+
+		this._determineButtonType();
+		this.hasTitle = !!this.buttonElement.attr( "title" );
+
+		var that = this,
+			options = this.options,
+			toggleButton = this.type === "checkbox" || this.type === "radio",
+			activeClass = !toggleButton ? "ui-state-active" : "",
+			focusClass = "ui-state-focus";
+
+		if ( options.label === null ) {
+			options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
+		}
+
+		this._hoverable( this.buttonElement );
+
+		this.buttonElement
+			.addClass( baseClasses )
+			.attr( "role", "button" )
+			.bind( "mouseenter" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				if ( this === lastActive ) {
+					$( this ).addClass( "ui-state-active" );
+				}
+			})
+			.bind( "mouseleave" + this.eventNamespace, function() {
+				if ( options.disabled ) {
+					return;
+				}
+				$( this ).removeClass( activeClass );
+			})
+			.bind( "click" + this.eventNamespace, function( event ) {
+				if ( options.disabled ) {
+					event.preventDefault();
+					event.stopImmediatePropagation();
+				}
+			});
+
+		this.element
+			.bind( "focus" + this.eventNamespace, function() {
+				// no need to check disabled, focus won't be triggered anyway
+				that.buttonElement.addClass( focusClass );
+			})
+			.bind( "blur" + this.eventNamespace, function() {
+				that.buttonElement.removeClass( focusClass );
+			});
+
+		if ( toggleButton ) {
+			this.element.bind( "change" + this.eventNamespace, function() {
+				if ( clickDragged ) {
+					return;
+				}
+				that.refresh();
+			});
+			// if mouse moves between mousedown and mouseup (drag) set clickDragged flag
+			// prevents issue where button state changes but checkbox/radio checked state
+			// does not in Firefox (see ticket #6970)
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					clickDragged = false;
+					startXPos = event.pageX;
+					startYPos = event.pageY;
+				})
+				.bind( "mouseup" + this.eventNamespace, function( event ) {
+					if ( options.disabled ) {
+						return;
+					}
+					if ( startXPos !== event.pageX || startYPos !== event.pageY ) {
+						clickDragged = true;
+					}
+			});
+		}
+
+		if ( this.type === "checkbox" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+			});
+		} else if ( this.type === "radio" ) {
+			this.buttonElement.bind( "click" + this.eventNamespace, function() {
+				if ( options.disabled || clickDragged ) {
+					return false;
+				}
+				$( this ).addClass( "ui-state-active" );
+				that.buttonElement.attr( "aria-pressed", "true" );
+
+				var radio = that.element[ 0 ];
+				radioGroup( radio )
+					.not( radio )
+					.map(function() {
+						return $( this ).button( "widget" )[ 0 ];
+					})
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			});
+		} else {
+			this.buttonElement
+				.bind( "mousedown" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).addClass( "ui-state-active" );
+					lastActive = this;
+					that.document.one( "mouseup", function() {
+						lastActive = null;
+					});
+				})
+				.bind( "mouseup" + this.eventNamespace, function() {
+					if ( options.disabled ) {
+						return false;
+					}
+					$( this ).removeClass( "ui-state-active" );
+				})
+				.bind( "keydown" + this.eventNamespace, function(event) {
+					if ( options.disabled ) {
+						return false;
+					}
+					if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {
+						$( this ).addClass( "ui-state-active" );
+					}
+				})
+				// see #8559, we bind to blur here in case the button element loses
+				// focus between keydown and keyup, it would be left in an "active" state
+				.bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
+					$( this ).removeClass( "ui-state-active" );
+				});
+
+			if ( this.buttonElement.is("a") ) {
+				this.buttonElement.keyup(function(event) {
+					if ( event.keyCode === $.ui.keyCode.SPACE ) {
+						// TODO pass through original event correctly (just as 2nd argument doesn't work)
+						$( this ).click();
+					}
+				});
+			}
+		}
+
+		// TODO: pull out $.Widget's handling for the disabled option into
+		// $.Widget.prototype._setOptionDisabled so it's easy to proxy and can
+		// be overridden by individual plugins
+		this._setOption( "disabled", options.disabled );
+		this._resetButton();
+	},
+
+	_determineButtonType: function() {
+		var ancestor, labelSelector, checked;
+
+		if ( this.element.is("[type=checkbox]") ) {
+			this.type = "checkbox";
+		} else if ( this.element.is("[type=radio]") ) {
+			this.type = "radio";
+		} else if ( this.element.is("input") ) {
+			this.type = "input";
+		} else {
+			this.type = "button";
+		}
+
+		if ( this.type === "checkbox" || this.type === "radio" ) {
+			// we don't search against the document in case the element
+			// is disconnected from the DOM
+			ancestor = this.element.parents().last();
+			labelSelector = "label[for='" + this.element.attr("id") + "']";
+			this.buttonElement = ancestor.find( labelSelector );
+			if ( !this.buttonElement.length ) {
+				ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
+				this.buttonElement = ancestor.filter( labelSelector );
+				if ( !this.buttonElement.length ) {
+					this.buttonElement = ancestor.find( labelSelector );
+				}
+			}
+			this.element.addClass( "ui-helper-hidden-accessible" );
+
+			checked = this.element.is( ":checked" );
+			if ( checked ) {
+				this.buttonElement.addClass( "ui-state-active" );
+			}
+			this.buttonElement.prop( "aria-pressed", checked );
+		} else {
+			this.buttonElement = this.element;
+		}
+	},
+
+	widget: function() {
+		return this.buttonElement;
+	},
+
+	_destroy: function() {
+		this.element
+			.removeClass( "ui-helper-hidden-accessible" );
+		this.buttonElement
+			.removeClass( baseClasses + " " + stateClasses + " " + typeClasses )
+			.removeAttr( "role" )
+			.removeAttr( "aria-pressed" )
+			.html( this.buttonElement.find(".ui-button-text").html() );
+
+		if ( !this.hasTitle ) {
+			this.buttonElement.removeAttr( "title" );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "disabled" ) {
+			if ( value ) {
+				this.element.prop( "disabled", true );
+			} else {
+				this.element.prop( "disabled", false );
+			}
+			return;
+		}
+		this._resetButton();
+	},
+
+	refresh: function() {
+		//See #8237 & #8828
+		var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );
+
+		if ( isDisabled !== this.options.disabled ) {
+			this._setOption( "disabled", isDisabled );
+		}
+		if ( this.type === "radio" ) {
+			radioGroup( this.element[0] ).each(function() {
+				if ( $( this ).is( ":checked" ) ) {
+					$( this ).button( "widget" )
+						.addClass( "ui-state-active" )
+						.attr( "aria-pressed", "true" );
+				} else {
+					$( this ).button( "widget" )
+						.removeClass( "ui-state-active" )
+						.attr( "aria-pressed", "false" );
+				}
+			});
+		} else if ( this.type === "checkbox" ) {
+			if ( this.element.is( ":checked" ) ) {
+				this.buttonElement
+					.addClass( "ui-state-active" )
+					.attr( "aria-pressed", "true" );
+			} else {
+				this.buttonElement
+					.removeClass( "ui-state-active" )
+					.attr( "aria-pressed", "false" );
+			}
+		}
+	},
+
+	_resetButton: function() {
+		if ( this.type === "input" ) {
+			if ( this.options.label ) {
+				this.element.val( this.options.label );
+			}
+			return;
+		}
+		var buttonElement = this.buttonElement.removeClass( typeClasses ),
+			buttonText = $( "<span></span>", this.document[0] )
+				.addClass( "ui-button-text" )
+				.html( this.options.label )
+				.appendTo( buttonElement.empty() )
+				.text(),
+			icons = this.options.icons,
+			multipleIcons = icons.primary && icons.secondary,
+			buttonClasses = [];
+
+		if ( icons.primary || icons.secondary ) {
+			if ( this.options.text ) {
+				buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
+			}
+
+			if ( icons.primary ) {
+				buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
+			}
+
+			if ( icons.secondary ) {
+				buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
+			}
+
+			if ( !this.options.text ) {
+				buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
+
+				if ( !this.hasTitle ) {
+					buttonElement.attr( "title", $.trim( buttonText ) );
+				}
+			}
+		} else {
+			buttonClasses.push( "ui-button-text-only" );
+		}
+		buttonElement.addClass( buttonClasses.join( " " ) );
+	}
+});
+
+$.widget( "ui.buttonset", {
+	version: "1.10.2",
+	options: {
+		items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
+	},
+
+	_create: function() {
+		this.element.addClass( "ui-buttonset" );
+	},
+
+	_init: function() {
+		this.refresh();
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "disabled" ) {
+			this.buttons.button( "option", key, value );
+		}
+
+		this._super( key, value );
+	},
+
+	refresh: function() {
+		var rtl = this.element.css( "direction" ) === "rtl";
+
+		this.buttons = this.element.find( this.options.items )
+			.filter( ":ui-button" )
+				.button( "refresh" )
+			.end()
+			.not( ":ui-button" )
+				.button()
+			.end()
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-all ui-corner-left ui-corner-right" )
+				.filter( ":first" )
+					.addClass( rtl ? "ui-corner-right" : "ui-corner-left" )
+				.end()
+				.filter( ":last" )
+					.addClass( rtl ? "ui-corner-left" : "ui-corner-right" )
+				.end()
+			.end();
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-buttonset" );
+		this.buttons
+			.map(function() {
+				return $( this ).button( "widget" )[ 0 ];
+			})
+				.removeClass( "ui-corner-left ui-corner-right" )
+			.end()
+			.button( "destroy" );
+	}
+});
+
+}( jQuery ) );
+;
+/*!
+ * jQuery UI Mouse 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/mouse/
+ *
+ * Depends:
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var mouseHandled = false;
+$( document ).mouseup( function() {
+	mouseHandled = false;
+});
+
+$.widget("ui.mouse", {
+	version: "1.10.2",
+	options: {
+		cancel: "input,textarea,button,select,option",
+		distance: 1,
+		delay: 0
+	},
+	_mouseInit: function() {
+		var that = this;
+
+		this.element
+			.bind("mousedown."+this.widgetName, function(event) {
+				return that._mouseDown(event);
+			})
+			.bind("click."+this.widgetName, function(event) {
+				if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
+					$.removeData(event.target, that.widgetName + ".preventClickEvent");
+					event.stopImmediatePropagation();
+					return false;
+				}
+			});
+
+		this.started = false;
+	},
+
+	// TODO: make sure destroying one instance of mouse doesn't mess with
+	// other instances of mouse
+	_mouseDestroy: function() {
+		this.element.unbind("."+this.widgetName);
+		if ( this._mouseMoveDelegate ) {
+			$(document)
+				.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+				.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+		}
+	},
+
+	_mouseDown: function(event) {
+		// don't let more than one widget handle mouseStart
+		if( mouseHandled ) { return; }
+
+		// we may have missed mouseup (out of window)
+		(this._mouseStarted && this._mouseUp(event));
+
+		this._mouseDownEvent = event;
+
+		var that = this,
+			btnIsLeft = (event.which === 1),
+			// event.target.nodeName works around a bug in IE 8 with
+			// disabled inputs (#7620)
+			elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
+		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
+			return true;
+		}
+
+		this.mouseDelayMet = !this.options.delay;
+		if (!this.mouseDelayMet) {
+			this._mouseDelayTimer = setTimeout(function() {
+				that.mouseDelayMet = true;
+			}, this.options.delay);
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted = (this._mouseStart(event) !== false);
+			if (!this._mouseStarted) {
+				event.preventDefault();
+				return true;
+			}
+		}
+
+		// Click event may never have fired (Gecko & Opera)
+		if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
+			$.removeData(event.target, this.widgetName + ".preventClickEvent");
+		}
+
+		// these delegates are required to keep context
+		this._mouseMoveDelegate = function(event) {
+			return that._mouseMove(event);
+		};
+		this._mouseUpDelegate = function(event) {
+			return that._mouseUp(event);
+		};
+		$(document)
+			.bind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.bind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		event.preventDefault();
+
+		mouseHandled = true;
+		return true;
+	},
+
+	_mouseMove: function(event) {
+		// IE mouseup check - mouseup happened when mouse was out of window
+		if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
+			return this._mouseUp(event);
+		}
+
+		if (this._mouseStarted) {
+			this._mouseDrag(event);
+			return event.preventDefault();
+		}
+
+		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+			this._mouseStarted =
+				(this._mouseStart(this._mouseDownEvent, event) !== false);
+			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
+		}
+
+		return !this._mouseStarted;
+	},
+
+	_mouseUp: function(event) {
+		$(document)
+			.unbind("mousemove."+this.widgetName, this._mouseMoveDelegate)
+			.unbind("mouseup."+this.widgetName, this._mouseUpDelegate);
+
+		if (this._mouseStarted) {
+			this._mouseStarted = false;
+
+			if (event.target === this._mouseDownEvent.target) {
+				$.data(event.target, this.widgetName + ".preventClickEvent", true);
+			}
+
+			this._mouseStop(event);
+		}
+
+		return false;
+	},
+
+	_mouseDistanceMet: function(event) {
+		return (Math.max(
+				Math.abs(this._mouseDownEvent.pageX - event.pageX),
+				Math.abs(this._mouseDownEvent.pageY - event.pageY)
+			) >= this.options.distance
+		);
+	},
+
+	_mouseDelayMet: function(/* event */) {
+		return this.mouseDelayMet;
+	},
+
+	// These are placeholder methods, to be overriden by extending plugin
+	_mouseStart: function(/* event */) {},
+	_mouseDrag: function(/* event */) {},
+	_mouseStop: function(/* event */) {},
+	_mouseCapture: function(/* event */) { return true; }
+});
+
+})(jQuery);
+;
+/*!
+ * jQuery UI Draggable 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/draggable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+$.widget("ui.draggable", $.ui.mouse, {
+	version: "1.10.2",
+	widgetEventPrefix: "drag",
+	options: {
+		addClasses: true,
+		appendTo: "parent",
+		axis: false,
+		connectToSortable: false,
+		containment: false,
+		cursor: "auto",
+		cursorAt: false,
+		grid: false,
+		handle: false,
+		helper: "original",
+		iframeFix: false,
+		opacity: false,
+		refreshPositions: false,
+		revert: false,
+		revertDuration: 500,
+		scope: "default",
+		scroll: true,
+		scrollSensitivity: 20,
+		scrollSpeed: 20,
+		snap: false,
+		snapMode: "both",
+		snapTolerance: 20,
+		stack: false,
+		zIndex: false,
+
+		// callbacks
+		drag: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		if (this.options.helper === "original" && !(/^(?:r|a|f)/).test(this.element.css("position"))) {
+			this.element[0].style.position = "relative";
+		}
+		if (this.options.addClasses){
+			this.element.addClass("ui-draggable");
+		}
+		if (this.options.disabled){
+			this.element.addClass("ui-draggable-disabled");
+		}
+
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+		this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
+		this._mouseDestroy();
+	},
+
+	_mouseCapture: function(event) {
+
+		var o = this.options;
+
+		// among others, prevent a drag on a resizable-handle
+		if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
+			return false;
+		}
+
+		//Quit if we're not on a valid handle
+		this.handle = this._getHandle(event);
+		if (!this.handle) {
+			return false;
+		}
+
+		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
+			$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>")
+			.css({
+				width: this.offsetWidth+"px", height: this.offsetHeight+"px",
+				position: "absolute", opacity: "0.001", zIndex: 1000
+			})
+			.css($(this).offset())
+			.appendTo("body");
+		});
+
+		return true;
+
+	},
+
+	_mouseStart: function(event) {
+
+		var o = this.options;
+
+		//Create and append the visible helper
+		this.helper = this._createHelper(event);
+
+		this.helper.addClass("ui-draggable-dragging");
+
+		//Cache the helper size
+		this._cacheHelperProportions();
+
+		//If ddmanager is used for droppables, set the global draggable
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.current = this;
+		}
+
+		/*
+		 * - Position generation -
+		 * This block generates everything position related - it's the core of draggables.
+		 */
+
+		//Cache the margins of the original element
+		this._cacheMargins();
+
+		//Store the helper's css position
+		this.cssPosition = this.helper.css("position");
+		this.scrollParent = this.helper.scrollParent();
+
+		//The element's absolute position on the page minus margins
+		this.offset = this.positionAbs = this.element.offset();
+		this.offset = {
+			top: this.offset.top - this.margins.top,
+			left: this.offset.left - this.margins.left
+		};
+
+		$.extend(this.offset, {
+			click: { //Where the click happened, relative to the element
+				left: event.pageX - this.offset.left,
+				top: event.pageY - this.offset.top
+			},
+			parent: this._getParentOffset(),
+			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
+		});
+
+		//Generate the original position
+		this.originalPosition = this.position = this._generatePosition(event);
+		this.originalPageX = event.pageX;
+		this.originalPageY = event.pageY;
+
+		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
+		(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
+
+		//Set a containment if given in the options
+		if(o.containment) {
+			this._setContainment();
+		}
+
+		//Trigger event + callbacks
+		if(this._trigger("start", event) === false) {
+			this._clear();
+			return false;
+		}
+
+		//Recache the helper size
+		this._cacheHelperProportions();
+
+		//Prepare the droppable offsets
+		if ($.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(this, event);
+		}
+
+
+		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
+		if ( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStart(this, event);
+		}
+
+		return true;
+	},
+
+	_mouseDrag: function(event, noPropagation) {
+
+		//Compute the helpers position
+		this.position = this._generatePosition(event);
+		this.positionAbs = this._convertPositionTo("absolute");
+
+		//Call plugins and callbacks and use the resulting position if something is returned
+		if (!noPropagation) {
+			var ui = this._uiHash();
+			if(this._trigger("drag", event, ui) === false) {
+				this._mouseUp({});
+				return false;
+			}
+			this.position = ui.position;
+		}
+
+		if(!this.options.axis || this.options.axis !== "y") {
+			this.helper[0].style.left = this.position.left+"px";
+		}
+		if(!this.options.axis || this.options.axis !== "x") {
+			this.helper[0].style.top = this.position.top+"px";
+		}
+		if($.ui.ddmanager) {
+			$.ui.ddmanager.drag(this, event);
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		//If we are using droppables, inform the manager about the drop
+		var element,
+			that = this,
+			elementInDom = false,
+			dropped = false;
+		if ($.ui.ddmanager && !this.options.dropBehaviour) {
+			dropped = $.ui.ddmanager.drop(this, event);
+		}
+
+		//if a drop comes from outside (a sortable)
+		if(this.dropped) {
+			dropped = this.dropped;
+			this.dropped = false;
+		}
+
+		//if the original element is no longer in the DOM don't bother to continue (see #8269)
+		element = this.element[0];
+		while ( element && (element = element.parentNode) ) {
+			if (element === document ) {
+				elementInDom = true;
+			}
+		}
+		if ( !elementInDom && this.options.helper === "original" ) {
+			return false;
+		}
+
+		if((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
+			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
+				if(that._trigger("stop", event) !== false) {
+					that._clear();
+				}
+			});
+		} else {
+			if(this._trigger("stop", event) !== false) {
+				this._clear();
+			}
+		}
+
+		return false;
+	},
+
+	_mouseUp: function(event) {
+		//Remove frame helpers
+		$("div.ui-draggable-iframeFix").each(function() {
+			this.parentNode.removeChild(this);
+		});
+
+		//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
+		if( $.ui.ddmanager ) {
+			$.ui.ddmanager.dragStop(this, event);
+		}
+
+		return $.ui.mouse.prototype._mouseUp.call(this, event);
+	},
+
+	cancel: function() {
+
+		if(this.helper.is(".ui-draggable-dragging")) {
+			this._mouseUp({});
+		} else {
+			this._clear();
+		}
+
+		return this;
+
+	},
+
+	_getHandle: function(event) {
+		return this.options.handle ?
+			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
+			true;
+	},
+
+	_createHelper: function(event) {
+
+		var o = this.options,
+			helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element);
+
+		if(!helper.parents("body").length) {
+			helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
+		}
+
+		if(helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
+			helper.css("position", "absolute");
+		}
+
+		return helper;
+
+	},
+
+	_adjustOffsetFromHelper: function(obj) {
+		if (typeof obj === "string") {
+			obj = obj.split(" ");
+		}
+		if ($.isArray(obj)) {
+			obj = {left: +obj[0], top: +obj[1] || 0};
+		}
+		if ("left" in obj) {
+			this.offset.click.left = obj.left + this.margins.left;
+		}
+		if ("right" in obj) {
+			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
+		}
+		if ("top" in obj) {
+			this.offset.click.top = obj.top + this.margins.top;
+		}
+		if ("bottom" in obj) {
+			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
+		}
+	},
+
+	_getParentOffset: function() {
+
+		//Get the offsetParent and cache its position
+		this.offsetParent = this.helper.offsetParent();
+		var po = this.offsetParent.offset();
+
+		// This is a special case where we need to modify a offset calculated on start, since the following happened:
+		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
+		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
+		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
+		if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
+			po.left += this.scrollParent.scrollLeft();
+			po.top += this.scrollParent.scrollTop();
+		}
+
+		//This needs to be actually done for all browsers, since pageX/pageY includes this information
+		//Ugly IE fix
+		if((this.offsetParent[0] === document.body) ||
+			(this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) {
+			po = { top: 0, left: 0 };
+		}
+
+		return {
+			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
+			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
+		};
+
+	},
+
+	_getRelativeOffset: function() {
+
+		if(this.cssPosition === "relative") {
+			var p = this.element.position();
+			return {
+				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
+				left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
+			};
+		} else {
+			return { top: 0, left: 0 };
+		}
+
+	},
+
+	_cacheMargins: function() {
+		this.margins = {
+			left: (parseInt(this.element.css("marginLeft"),10) || 0),
+			top: (parseInt(this.element.css("marginTop"),10) || 0),
+			right: (parseInt(this.element.css("marginRight"),10) || 0),
+			bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
+		};
+	},
+
+	_cacheHelperProportions: function() {
+		this.helperProportions = {
+			width: this.helper.outerWidth(),
+			height: this.helper.outerHeight()
+		};
+	},
+
+	_setContainment: function() {
+
+		var over, c, ce,
+			o = this.options;
+
+		if(o.containment === "parent") {
+			o.containment = this.helper[0].parentNode;
+		}
+		if(o.containment === "document" || o.containment === "window") {
+			this.containment = [
+				o.containment === "document" ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
+				o.containment === "document" ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
+				(o.containment === "document" ? 0 : $(window).scrollLeft()) + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left,
+				(o.containment === "document" ? 0 : $(window).scrollTop()) + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
+			];
+		}
+
+		if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor !== Array) {
+			c = $(o.containment);
+			ce = c[0];
+
+			if(!ce) {
+				return;
+			}
+
+			over = ($(ce).css("overflow") !== "hidden");
+
+			this.containment = [
+				(parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
+				(parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
+				(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderRightWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
+				(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderBottomWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top  - this.margins.bottom
+			];
+			this.relative_container = c;
+
+		} else if(o.containment.constructor === Array) {
+			this.containment = o.containment;
+		}
+
+	},
+
+	_convertPositionTo: function(d, pos) {
+
+		if(!pos) {
+			pos = this.position;
+		}
+
+		var mod = d === "absolute" ? 1 : -1,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
+
+		return {
+			top: (
+				pos.top	+																// The absolute mouse position
+				this.offset.relative.top * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top * mod -										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
+			),
+			left: (
+				pos.left +																// The absolute mouse position
+				this.offset.relative.left * mod +										// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left * mod	-										// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
+			)
+		};
+
+	},
+
+	_generatePosition: function(event) {
+
+		var containment, co, top, left,
+			o = this.options,
+			scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,
+			scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName),
+			pageX = event.pageX,
+			pageY = event.pageY;
+
+		/*
+		 * - Position constraining -
+		 * Constrain the position to a mix of grid, containment.
+		 */
+
+		if(this.originalPosition) { //If we are not dragging yet, we won't check for options
+			if(this.containment) {
+			if (this.relative_container){
+				co = this.relative_container.offset();
+				containment = [ this.containment[0] + co.left,
+					this.containment[1] + co.top,
+					this.containment[2] + co.left,
+					this.containment[3] + co.top ];
+			}
+			else {
+				containment = this.containment;
+			}
+
+				if(event.pageX - this.offset.click.left < containment[0]) {
+					pageX = containment[0] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top < containment[1]) {
+					pageY = containment[1] + this.offset.click.top;
+				}
+				if(event.pageX - this.offset.click.left > containment[2]) {
+					pageX = containment[2] + this.offset.click.left;
+				}
+				if(event.pageY - this.offset.click.top > containment[3]) {
+					pageY = containment[3] + this.offset.click.top;
+				}
+			}
+
+			if(o.grid) {
+				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
+				top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
+				pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
+
+				left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
+				pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
+			}
+
+		}
+
+		return {
+			top: (
+				pageY -																	// The absolute mouse position
+				this.offset.click.top	-												// Click offset (relative to the element)
+				this.offset.relative.top -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.top +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
+			),
+			left: (
+				pageX -																	// The absolute mouse position
+				this.offset.click.left -												// Click offset (relative to the element)
+				this.offset.relative.left -												// Only for relative positioned nodes: Relative offset from element to offset parent
+				this.offset.parent.left +												// The offsetParent's offset without borders (offset + border)
+				( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
+			)
+		};
+
+	},
+
+	_clear: function() {
+		this.helper.removeClass("ui-draggable-dragging");
+		if(this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
+			this.helper.remove();
+		}
+		this.helper = null;
+		this.cancelHelperRemoval = false;
+	},
+
+	// From now on bulk stuff - mainly helpers
+
+	_trigger: function(type, event, ui) {
+		ui = ui || this._uiHash();
+		$.ui.plugin.call(this, type, [event, ui]);
+		//The absolute position has to be recalculated after plugins
+		if(type === "drag") {
+			this.positionAbs = this._convertPositionTo("absolute");
+		}
+		return $.Widget.prototype._trigger.call(this, type, event, ui);
+	},
+
+	plugins: {},
+
+	_uiHash: function() {
+		return {
+			helper: this.helper,
+			position: this.position,
+			originalPosition: this.originalPosition,
+			offset: this.positionAbs
+		};
+	}
+
+});
+
+$.ui.plugin.add("draggable", "connectToSortable", {
+	start: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), o = inst.options,
+			uiSortable = $.extend({}, ui, { item: inst.element });
+		inst.sortables = [];
+		$(o.connectToSortable).each(function() {
+			var sortable = $.data(this, "ui-sortable");
+			if (sortable && !sortable.options.disabled) {
+				inst.sortables.push({
+					instance: sortable,
+					shouldRevert: sortable.options.revert
+				});
+				sortable.refreshPositions();	// Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
+				sortable._trigger("activate", event, uiSortable);
+			}
+		});
+
+	},
+	stop: function(event, ui) {
+
+		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
+		var inst = $(this).data("ui-draggable"),
+			uiSortable = $.extend({}, ui, { item: inst.element });
+
+		$.each(inst.sortables, function() {
+			if(this.instance.isOver) {
+
+				this.instance.isOver = 0;
+
+				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
+				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
+
+				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: "valid/invalid"
+				if(this.shouldRevert) {
+					this.instance.options.revert = this.shouldRevert;
+				}
+
+				//Trigger the stop of the sortable
+				this.instance._mouseStop(event);
+
+				this.instance.options.helper = this.instance.options._helper;
+
+				//If the helper has been the original item, restore properties in the sortable
+				if(inst.options.helper === "original") {
+					this.instance.currentItem.css({ top: "auto", left: "auto" });
+				}
+
+			} else {
+				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
+				this.instance._trigger("deactivate", event, uiSortable);
+			}
+
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var inst = $(this).data("ui-draggable"), that = this;
+
+		$.each(inst.sortables, function() {
+
+			var innermostIntersecting = false,
+				thisSortable = this;
+
+			//Copy over some variables to allow calling the sortable's native _intersectsWith
+			this.instance.positionAbs = inst.positionAbs;
+			this.instance.helperProportions = inst.helperProportions;
+			this.instance.offset.click = inst.offset.click;
+
+			if(this.instance._intersectsWith(this.instance.containerCache)) {
+				innermostIntersecting = true;
+				$.each(inst.sortables, function () {
+					this.instance.positionAbs = inst.positionAbs;
+					this.instance.helperProportions = inst.helperProportions;
+					this.instance.offset.click = inst.offset.click;
+					if (this !== thisSortable &&
+						this.instance._intersectsWith(this.instance.containerCache) &&
+						$.contains(thisSortable.instance.element[0], this.instance.element[0])
+					) {
+						innermostIntersecting = false;
+					}
+					return innermostIntersecting;
+				});
+			}
+
+
+			if(innermostIntersecting) {
+				//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
+				if(!this.instance.isOver) {
+
+					this.instance.isOver = 1;
+					//Now we fake the start of dragging for the sortable instance,
+					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem
+					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
+					this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", true);
+					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
+					this.instance.options.helper = function() { return ui.helper[0]; };
+
+					event.target = this.instance.currentItem[0];
+					this.instance._mouseCapture(event, true);
+					this.instance._mouseStart(event, true, true);
+
+					//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
+					this.instance.offset.click.top = inst.offset.click.top;
+					this.instance.offset.click.left = inst.offset.click.left;
+					this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
+					this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
+
+					inst._trigger("toSortable", event);
+					inst.dropped = this.instance.element; //draggable revert needs that
+					//hack so receive/update callbacks work (mostly)
+					inst.currentItem = inst.element;
+					this.instance.fromOutside = inst;
+
+				}
+
+				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
+				if(this.instance.currentItem) {
+					this.instance._mouseDrag(event);
+				}
+
+			} else {
+
+				//If it doesn't intersect with the sortable, and it intersected before,
+				//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
+				if(this.instance.isOver) {
+
+					this.instance.isOver = 0;
+					this.instance.cancelHelperRemoval = true;
+
+					//Prevent reverting on this forced stop
+					this.instance.options.revert = false;
+
+					// The out event needs to be triggered independently
+					this.instance._trigger("out", event, this.instance._uiHash(this.instance));
+
+					this.instance._mouseStop(event, true);
+					this.instance.options.helper = this.instance.options._helper;
+
+					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
+					this.instance.currentItem.remove();
+					if(this.instance.placeholder) {
+						this.instance.placeholder.remove();
+					}
+
+					inst._trigger("fromSortable", event);
+					inst.dropped = false; //draggable revert needs that
+				}
+
+			}
+
+		});
+
+	}
+});
+
+$.ui.plugin.add("draggable", "cursor", {
+	start: function() {
+		var t = $("body"), o = $(this).data("ui-draggable").options;
+		if (t.css("cursor")) {
+			o._cursor = t.css("cursor");
+		}
+		t.css("cursor", o.cursor);
+	},
+	stop: function() {
+		var o = $(this).data("ui-draggable").options;
+		if (o._cursor) {
+			$("body").css("cursor", o._cursor);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "opacity", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("opacity")) {
+			o._opacity = t.css("opacity");
+		}
+		t.css("opacity", o.opacity);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._opacity) {
+			$(ui.helper).css("opacity", o._opacity);
+		}
+	}
+});
+
+$.ui.plugin.add("draggable", "scroll", {
+	start: function() {
+		var i = $(this).data("ui-draggable");
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+			i.overflowOffset = i.scrollParent.offset();
+		}
+	},
+	drag: function( event ) {
+
+		var i = $(this).data("ui-draggable"), o = i.options, scrolled = false;
+
+		if(i.scrollParent[0] !== document && i.scrollParent[0].tagName !== "HTML") {
+
+			if(!o.axis || o.axis !== "x") {
+				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
+				} else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
+					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
+				} else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
+					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
+				}
+			}
+
+		} else {
+
+			if(!o.axis || o.axis !== "x") {
+				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
+				} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
+				}
+			}
+
+			if(!o.axis || o.axis !== "y") {
+				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
+				} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
+					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
+				}
+			}
+
+		}
+
+		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
+			$.ui.ddmanager.prepareOffsets(i, event);
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "snap", {
+	start: function() {
+
+		var i = $(this).data("ui-draggable"),
+			o = i.options;
+
+		i.snapElements = [];
+
+		$(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
+			var $t = $(this),
+				$o = $t.offset();
+			if(this !== i.element[0]) {
+				i.snapElements.push({
+					item: this,
+					width: $t.outerWidth(), height: $t.outerHeight(),
+					top: $o.top, left: $o.left
+				});
+			}
+		});
+
+	},
+	drag: function(event, ui) {
+
+		var ts, bs, ls, rs, l, r, t, b, i, first,
+			inst = $(this).data("ui-draggable"),
+			o = inst.options,
+			d = o.snapTolerance,
+			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
+			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
+
+		for (i = inst.snapElements.length - 1; i >= 0; i--){
+
+			l = inst.snapElements[i].left;
+			r = l + inst.snapElements[i].width;
+			t = inst.snapElements[i].top;
+			b = t + inst.snapElements[i].height;
+
+			//Yes, I know, this is insane ;)
+			if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
+				if(inst.snapElements[i].snapping) {
+					(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+				}
+				inst.snapElements[i].snapping = false;
+				continue;
+			}
+
+			if(o.snapMode !== "inner") {
+				ts = Math.abs(t - y2) <= d;
+				bs = Math.abs(b - y1) <= d;
+				ls = Math.abs(l - x2) <= d;
+				rs = Math.abs(r - x1) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
+				}
+			}
+
+			first = (ts || bs || ls || rs);
+
+			if(o.snapMode !== "outer") {
+				ts = Math.abs(t - y1) <= d;
+				bs = Math.abs(b - y2) <= d;
+				ls = Math.abs(l - x1) <= d;
+				rs = Math.abs(r - x2) <= d;
+				if(ts) {
+					ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
+				}
+				if(bs) {
+					ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
+				}
+				if(ls) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
+				}
+				if(rs) {
+					ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
+				}
+			}
+
+			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
+				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
+			}
+			inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
+
+		}
+
+	}
+});
+
+$.ui.plugin.add("draggable", "stack", {
+	start: function() {
+		var min,
+			o = this.data("ui-draggable").options,
+			group = $.makeArray($(o.stack)).sort(function(a,b) {
+				return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
+			});
+
+		if (!group.length) { return; }
+
+		min = parseInt($(group[0]).css("zIndex"), 10) || 0;
+		$(group).each(function(i) {
+			$(this).css("zIndex", min + i);
+		});
+		this.css("zIndex", (min + group.length));
+	}
+});
+
+$.ui.plugin.add("draggable", "zIndex", {
+	start: function(event, ui) {
+		var t = $(ui.helper), o = $(this).data("ui-draggable").options;
+		if(t.css("zIndex")) {
+			o._zIndex = t.css("zIndex");
+		}
+		t.css("zIndex", o.zIndex);
+	},
+	stop: function(event, ui) {
+		var o = $(this).data("ui-draggable").options;
+		if(o._zIndex) {
+			$(ui.helper).css("zIndex", o._zIndex);
+		}
+	}
+});
+
+})(jQuery);
+;
+/*!
+ * jQuery UI Resizable 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/resizable/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+function num(v) {
+	return parseInt(v, 10) || 0;
+}
+
+function isNumber(value) {
+	return !isNaN(parseInt(value, 10));
+}
+
+$.widget("ui.resizable", $.ui.mouse, {
+	version: "1.10.2",
+	widgetEventPrefix: "resize",
+	options: {
+		alsoResize: false,
+		animate: false,
+		animateDuration: "slow",
+		animateEasing: "swing",
+		aspectRatio: false,
+		autoHide: false,
+		containment: false,
+		ghost: false,
+		grid: false,
+		handles: "e,s,se",
+		helper: false,
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 10,
+		minWidth: 10,
+		// See #7960
+		zIndex: 90,
+
+		// callbacks
+		resize: null,
+		start: null,
+		stop: null
+	},
+	_create: function() {
+
+		var n, i, handle, axis, hname,
+			that = this,
+			o = this.options;
+		this.element.addClass("ui-resizable");
+
+		$.extend(this, {
+			_aspectRatio: !!(o.aspectRatio),
+			aspectRatio: o.aspectRatio,
+			originalElement: this.element,
+			_proportionallyResizeElements: [],
+			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
+		});
+
+		//Wrap the element if it cannot hold child nodes
+		if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
+
+			//Create a wrapper element and set the wrapper to the new current internal element
+			this.element.wrap(
+				$("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
+					position: this.element.css("position"),
+					width: this.element.outerWidth(),
+					height: this.element.outerHeight(),
+					top: this.element.css("top"),
+					left: this.element.css("left")
+				})
+			);
+
+			//Overwrite the original this.element
+			this.element = this.element.parent().data(
+				"ui-resizable", this.element.data("ui-resizable")
+			);
+
+			this.elementIsWrapper = true;
+
+			//Move margins to the wrapper
+			this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
+			this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
+
+			//Prevent Safari textarea resize
+			this.originalResizeStyle = this.originalElement.css("resize");
+			this.originalElement.css("resize", "none");
+
+			//Push the actual element to our proportionallyResize internal array
+			this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" }));
+
+			// avoid IE jump (hard set the margin)
+			this.originalElement.css({ margin: this.originalElement.css("margin") });
+
+			// fix handlers offset
+			this._proportionallyResize();
+
+		}
+
+		this.handles = o.handles || (!$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" });
+		if(this.handles.constructor === String) {
+
+			if ( this.handles === "all") {
+				this.handles = "n,e,s,w,se,sw,ne,nw";
+			}
+
+			n = this.handles.split(",");
+			this.handles = {};
+
+			for(i = 0; i < n.length; i++) {
+
+				handle = $.trim(n[i]);
+				hname = "ui-resizable-"+handle;
+				axis = $("<div class='ui-resizable-handle " + hname + "'></div>");
+
+				// Apply zIndex to all handles - see #7960
+				axis.css({ zIndex: o.zIndex });
+
+				//TODO : What's going on here?
+				if ("se" === handle) {
+					axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
+				}
+
+				//Insert into internal handles object and append to element
+				this.handles[handle] = ".ui-resizable-"+handle;
+				this.element.append(axis);
+			}
+
+		}
+
+		this._renderAxis = function(target) {
+
+			var i, axis, padPos, padWrapper;
+
+			target = target || this.element;
+
+			for(i in this.handles) {
+
+				if(this.handles[i].constructor === String) {
+					this.handles[i] = $(this.handles[i], this.element).show();
+				}
+
+				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
+				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
+
+					axis = $(this.handles[i], this.element);
+
+					//Checking the correct pad and border
+					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
+
+					//The padding type i have to apply...
+					padPos = [ "padding",
+						/ne|nw|n/.test(i) ? "Top" :
+						/se|sw|s/.test(i) ? "Bottom" :
+						/^e$/.test(i) ? "Right" : "Left" ].join("");
+
+					target.css(padPos, padWrapper);
+
+					this._proportionallyResize();
+
+				}
+
+				//TODO: What's that good for? There's not anything to be executed left
+				if(!$(this.handles[i]).length) {
+					continue;
+				}
+			}
+		};
+
+		//TODO: make renderAxis a prototype function
+		this._renderAxis(this.element);
+
+		this._handles = $(".ui-resizable-handle", this.element)
+			.disableSelection();
+
+		//Matching axis name
+		this._handles.mouseover(function() {
+			if (!that.resizing) {
+				if (this.className) {
+					axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
+				}
+				//Axis, default = se
+				that.axis = axis && axis[1] ? axis[1] : "se";
+			}
+		});
+
+		//If we want to auto hide the elements
+		if (o.autoHide) {
+			this._handles.hide();
+			$(this.element)
+				.addClass("ui-resizable-autohide")
+				.mouseenter(function() {
+					if (o.disabled) {
+						return;
+					}
+					$(this).removeClass("ui-resizable-autohide");
+					that._handles.show();
+				})
+				.mouseleave(function(){
+					if (o.disabled) {
+						return;
+					}
+					if (!that.resizing) {
+						$(this).addClass("ui-resizable-autohide");
+						that._handles.hide();
+					}
+				});
+		}
+
+		//Initialize the mouse interaction
+		this._mouseInit();
+
+	},
+
+	_destroy: function() {
+
+		this._mouseDestroy();
+
+		var wrapper,
+			_destroy = function(exp) {
+				$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
+					.removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove();
+			};
+
+		//TODO: Unwrap at same DOM position
+		if (this.elementIsWrapper) {
+			_destroy(this.element);
+			wrapper = this.element;
+			this.originalElement.css({
+				position: wrapper.css("position"),
+				width: wrapper.outerWidth(),
+				height: wrapper.outerHeight(),
+				top: wrapper.css("top"),
+				left: wrapper.css("left")
+			}).insertAfter( wrapper );
+			wrapper.remove();
+		}
+
+		this.originalElement.css("resize", this.originalResizeStyle);
+		_destroy(this.originalElement);
+
+		return this;
+	},
+
+	_mouseCapture: function(event) {
+		var i, handle,
+			capture = false;
+
+		for (i in this.handles) {
+			handle = $(this.handles[i])[0];
+			if (handle === event.target || $.contains(handle, event.target)) {
+				capture = true;
+			}
+		}
+
+		return !this.options.disabled && capture;
+	},
+
+	_mouseStart: function(event) {
+
+		var curleft, curtop, cursor,
+			o = this.options,
+			iniPos = this.element.position(),
+			el = this.element;
+
+		this.resizing = true;
+
+		// bugfix for http://dev.jquery.com/ticket/1749
+		if ( (/absolute/).test( el.css("position") ) ) {
+			el.css({ position: "absolute", top: el.css("top"), left: el.css("left") });
+		} else if (el.is(".ui-draggable")) {
+			el.css({ position: "absolute", top: iniPos.top, left: iniPos.left });
+		}
+
+		this._renderProxy();
+
+		curleft = num(this.helper.css("left"));
+		curtop = num(this.helper.css("top"));
+
+		if (o.containment) {
+			curleft += $(o.containment).scrollLeft() || 0;
+			curtop += $(o.containment).scrollTop() || 0;
+		}
+
+		//Store needed variables
+		this.offset = this.helper.offset();
+		this.position = { left: curleft, top: curtop };
+		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
+		this.originalPosition = { left: curleft, top: curtop };
+		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
+		this.originalMousePosition = { left: event.pageX, top: event.pageY };
+
+		//Aspect Ratio
+		this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
+
+		cursor = $(".ui-resizable-" + this.axis).css("cursor");
+		$("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor);
+
+		el.addClass("ui-resizable-resizing");
+		this._propagate("start", event);
+		return true;
+	},
+
+	_mouseDrag: function(event) {
+
+		//Increase performance, avoid regex
+		var data,
+			el = this.helper, props = {},
+			smp = this.originalMousePosition,
+			a = this.axis,
+			prevTop = this.position.top,
+			prevLeft = this.position.left,
+			prevWidth = this.size.width,
+			prevHeight = this.size.height,
+			dx = (event.pageX-smp.left)||0,
+			dy = (event.pageY-smp.top)||0,
+			trigger = this._change[a];
+
+		if (!trigger) {
+			return false;
+		}
+
+		// Calculate the attrs that will be change
+		data = trigger.apply(this, [event, dx, dy]);
+
+		// Put this in the mouseDrag handler since the user can start pressing shift while resizing
+		this._updateVirtualBoundaries(event.shiftKey);
+		if (this._aspectRatio || event.shiftKey) {
+			data = this._updateRatio(data, event);
+		}
+
+		data = this._respectSize(data, event);
+
+		this._updateCache(data);
+
+		// plugins callbacks need to be called first
+		this._propagate("resize", event);
+
+		if (this.position.top !== prevTop) {
+			props.top = this.position.top + "px";
+		}
+		if (this.position.left !== prevLeft) {
+			props.left = this.position.left + "px";
+		}
+		if (this.size.width !== prevWidth) {
+			props.width = this.size.width + "px";
+		}
+		if (this.size.height !== prevHeight) {
+			props.height = this.size.height + "px";
+		}
+		el.css(props);
+
+		if (!this._helper && this._proportionallyResizeElements.length) {
+			this._proportionallyResize();
+		}
+
+		// Call the user callback if the element was resized
+		if ( ! $.isEmptyObject(props) ) {
+			this._trigger("resize", event, this.ui());
+		}
+
+		return false;
+	},
+
+	_mouseStop: function(event) {
+
+		this.resizing = false;
+		var pr, ista, soffseth, soffsetw, s, left, top,
+			o = this.options, that = this;
+
+		if(this._helper) {
+
+			pr = this._proportionallyResizeElements;
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName);
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height;
+			soffsetw = ista ? 0 : that.sizeDiff.width;
+
+			s = { width: (that.helper.width()  - soffsetw), height: (that.helper.height() - soffseth) };
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null;
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+			if (!o.animate) {
+				this.element.css($.extend(s, { top: top, left: left }));
+			}
+
+			that.helper.height(that.size.height);
+			that.helper.width(that.size.width);
+
+			if (this._helper && !o.animate) {
+				this._proportionallyResize();
+			}
+		}
+
+		$("body").css("cursor", "auto");
+
+		this.element.removeClass("ui-resizable-resizing");
+
+		this._propagate("stop", event);
+
+		if (this._helper) {
+			this.helper.remove();
+		}
+
+		return false;
+
+	},
+
+	_updateVirtualBoundaries: function(forceAspectRatio) {
+		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
+			o = this.options;
+
+		b = {
+			minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
+			maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
+			minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
+			maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
+		};
+
+		if(this._aspectRatio || forceAspectRatio) {
+			// We want to create an enclosing box whose aspect ration is the requested one
+			// First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
+			pMinWidth = b.minHeight * this.aspectRatio;
+			pMinHeight = b.minWidth / this.aspectRatio;
+			pMaxWidth = b.maxHeight * this.aspectRatio;
+			pMaxHeight = b.maxWidth / this.aspectRatio;
+
+			if(pMinWidth > b.minWidth) {
+				b.minWidth = pMinWidth;
+			}
+			if(pMinHeight > b.minHeight) {
+				b.minHeight = pMinHeight;
+			}
+			if(pMaxWidth < b.maxWidth) {
+				b.maxWidth = pMaxWidth;
+			}
+			if(pMaxHeight < b.maxHeight) {
+				b.maxHeight = pMaxHeight;
+			}
+		}
+		this._vBoundaries = b;
+	},
+
+	_updateCache: function(data) {
+		this.offset = this.helper.offset();
+		if (isNumber(data.left)) {
+			this.position.left = data.left;
+		}
+		if (isNumber(data.top)) {
+			this.position.top = data.top;
+		}
+		if (isNumber(data.height)) {
+			this.size.height = data.height;
+		}
+		if (isNumber(data.width)) {
+			this.size.width = data.width;
+		}
+	},
+
+	_updateRatio: function( data ) {
+
+		var cpos = this.position,
+			csize = this.size,
+			a = this.axis;
+
+		if (isNumber(data.height)) {
+			data.width = (data.height * this.aspectRatio);
+		} else if (isNumber(data.width)) {
+			data.height = (data.width / this.aspectRatio);
+		}
+
+		if (a === "sw") {
+			data.left = cpos.left + (csize.width - data.width);
+			data.top = null;
+		}
+		if (a === "nw") {
+			data.top = cpos.top + (csize.height - data.height);
+			data.left = cpos.left + (csize.width - data.width);
+		}
+
+		return data;
+	},
+
+	_respectSize: function( data ) {
+
+		var o = this._vBoundaries,
+			a = this.axis,
+			ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
+			isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height),
+			dw = this.originalPosition.left + this.originalSize.width,
+			dh = this.position.top + this.size.height,
+			cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
+		if (isminw) {
+			data.width = o.minWidth;
+		}
+		if (isminh) {
+			data.height = o.minHeight;
+		}
+		if (ismaxw) {
+			data.width = o.maxWidth;
+		}
+		if (ismaxh) {
+			data.height = o.maxHeight;
+		}
+
+		if (isminw && cw) {
+			data.left = dw - o.minWidth;
+		}
+		if (ismaxw && cw) {
+			data.left = dw - o.maxWidth;
+		}
+		if (isminh && ch) {
+			data.top = dh - o.minHeight;
+		}
+		if (ismaxh && ch) {
+			data.top = dh - o.maxHeight;
+		}
+
+		// fixing jump error on top/left - bug #2330
+		if (!data.width && !data.height && !data.left && data.top) {
+			data.top = null;
+		} else if (!data.width && !data.height && !data.top && data.left) {
+			data.left = null;
+		}
+
+		return data;
+	},
+
+	_proportionallyResize: function() {
+
+		if (!this._proportionallyResizeElements.length) {
+			return;
+		}
+
+		var i, j, borders, paddings, prel,
+			element = this.helper || this.element;
+
+		for ( i=0; i < this._proportionallyResizeElements.length; i++) {
+
+			prel = this._proportionallyResizeElements[i];
+
+			if (!this.borderDif) {
+				this.borderDif = [];
+				borders = [prel.css("borderTopWidth"), prel.css("borderRightWidth"), prel.css("borderBottomWidth"), prel.css("borderLeftWidth")];
+				paddings = [prel.css("paddingTop"), prel.css("paddingRight"), prel.css("paddingBottom"), prel.css("paddingLeft")];
+
+				for ( j = 0; j < borders.length; j++ ) {
+					this.borderDif[ j ] = ( parseInt( borders[ j ], 10 ) || 0 ) + ( parseInt( paddings[ j ], 10 ) || 0 );
+				}
+			}
+
+			prel.css({
+				height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
+				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
+			});
+
+		}
+
+	},
+
+	_renderProxy: function() {
+
+		var el = this.element, o = this.options;
+		this.elementOffset = el.offset();
+
+		if(this._helper) {
+
+			this.helper = this.helper || $("<div style='overflow:hidden;'></div>");
+
+			this.helper.addClass(this._helper).css({
+				width: this.element.outerWidth() - 1,
+				height: this.element.outerHeight() - 1,
+				position: "absolute",
+				left: this.elementOffset.left +"px",
+				top: this.elementOffset.top +"px",
+				zIndex: ++o.zIndex //TODO: Don't modify option
+			});
+
+			this.helper
+				.appendTo("body")
+				.disableSelection();
+
+		} else {
+			this.helper = this.element;
+		}
+
+	},
+
+	_change: {
+		e: function(event, dx) {
+			return { width: this.originalSize.width + dx };
+		},
+		w: function(event, dx) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { left: sp.left + dx, width: cs.width - dx };
+		},
+		n: function(event, dx, dy) {
+			var cs = this.originalSize, sp = this.originalPosition;
+			return { top: sp.top + dy, height: cs.height - dy };
+		},
+		s: function(event, dx, dy) {
+			return { height: this.originalSize.height + dy };
+		},
+		se: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		sw: function(event, dx, dy) {
+			return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		},
+		ne: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
+		},
+		nw: function(event, dx, dy) {
+			return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
+		}
+	},
+
+	_propagate: function(n, event) {
+		$.ui.plugin.call(this, n, [event, this.ui()]);
+		(n !== "resize" && this._trigger(n, event, this.ui()));
+	},
+
+	plugins: {},
+
+	ui: function() {
+		return {
+			originalElement: this.originalElement,
+			element: this.element,
+			helper: this.helper,
+			position: this.position,
+			size: this.size,
+			originalSize: this.originalSize,
+			originalPosition: this.originalPosition
+		};
+	}
+
+});
+
+/*
+ * Resizable Extensions
+ */
+
+$.ui.plugin.add("resizable", "animate", {
+
+	stop: function( event ) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			pr = that._proportionallyResizeElements,
+			ista = pr.length && (/textarea/i).test(pr[0].nodeName),
+			soffseth = ista && $.ui.hasScroll(pr[0], "left") /* TODO - jump height */ ? 0 : that.sizeDiff.height,
+			soffsetw = ista ? 0 : that.sizeDiff.width,
+			style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },
+			left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null,
+			top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null;
+
+		that.element.animate(
+			$.extend(style, top && left ? { top: top, left: left } : {}), {
+				duration: o.animateDuration,
+				easing: o.animateEasing,
+				step: function() {
+
+					var data = {
+						width: parseInt(that.element.css("width"), 10),
+						height: parseInt(that.element.css("height"), 10),
+						top: parseInt(that.element.css("top"), 10),
+						left: parseInt(that.element.css("left"), 10)
+					};
+
+					if (pr && pr.length) {
+						$(pr[0]).css({ width: data.width, height: data.height });
+					}
+
+					// propagating resize, and updating values for each animation step
+					that._updateCache(data);
+					that._propagate("resize", event);
+
+				}
+			}
+		);
+	}
+
+});
+
+$.ui.plugin.add("resizable", "containment", {
+
+	start: function() {
+		var element, p, co, ch, cw, width, height,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			el = that.element,
+			oc = o.containment,
+			ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
+
+		if (!ce) {
+			return;
+		}
+
+		that.containerElement = $(ce);
+
+		if (/document/.test(oc) || oc === document) {
+			that.containerOffset = { left: 0, top: 0 };
+			that.containerPosition = { left: 0, top: 0 };
+
+			that.parentData = {
+				element: $(document), left: 0, top: 0,
+				width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
+			};
+		}
+
+		// i'm a node, so compute top, left, right, bottom
+		else {
+			element = $(ce);
+			p = [];
+			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
+
+			that.containerOffset = element.offset();
+			that.containerPosition = element.position();
+			that.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
+
+			co = that.containerOffset;
+			ch = that.containerSize.height;
+			cw = that.containerSize.width;
+			width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw );
+			height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
+
+			that.parentData = {
+				element: ce, left: co.left, top: co.top, width: width, height: height
+			};
+		}
+	},
+
+	resize: function( event ) {
+		var woset, hoset, isParent, isOffsetRelative,
+			that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset, cp = that.position,
+			pRatio = that._aspectRatio || event.shiftKey,
+			cop = { top:0, left:0 }, ce = that.containerElement;
+
+		if (ce[0] !== document && (/static/).test(ce.css("position"))) {
+			cop = co;
+		}
+
+		if (cp.left < (that._helper ? co.left : 0)) {
+			that.size.width = that.size.width + (that._helper ? (that.position.left - co.left) : (that.position.left - cop.left));
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+			that.position.left = o.helper ? co.left : 0;
+		}
+
+		if (cp.top < (that._helper ? co.top : 0)) {
+			that.size.height = that.size.height + (that._helper ? (that.position.top - co.top) : that.position.top);
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+			that.position.top = that._helper ? co.top : 0;
+		}
+
+		that.offset.left = that.parentData.left+that.position.left;
+		that.offset.top = that.parentData.top+that.position.top;
+
+		woset = Math.abs( (that._helper ? that.offset.left - cop.left : (that.offset.left - cop.left)) + that.sizeDiff.width );
+		hoset = Math.abs( (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) + that.sizeDiff.height );
+
+		isParent = that.containerElement.get(0) === that.element.parent().get(0);
+		isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position"));
+
+		if(isParent && isOffsetRelative) {
+			woset -= that.parentData.left;
+		}
+
+		if (woset + that.size.width >= that.parentData.width) {
+			that.size.width = that.parentData.width - woset;
+			if (pRatio) {
+				that.size.height = that.size.width / that.aspectRatio;
+			}
+		}
+
+		if (hoset + that.size.height >= that.parentData.height) {
+			that.size.height = that.parentData.height - hoset;
+			if (pRatio) {
+				that.size.width = that.size.height * that.aspectRatio;
+			}
+		}
+	},
+
+	stop: function(){
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			co = that.containerOffset,
+			cop = that.containerPosition,
+			ce = that.containerElement,
+			helper = $(that.helper),
+			ho = helper.offset(),
+			w = helper.outerWidth() - that.sizeDiff.width,
+			h = helper.outerHeight() - that.sizeDiff.height;
+
+		if (that._helper && !o.animate && (/relative/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+		if (that._helper && !o.animate && (/static/).test(ce.css("position"))) {
+			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
+		}
+
+	}
+});
+
+$.ui.plugin.add("resizable", "alsoResize", {
+
+	start: function () {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			_store = function (exp) {
+				$(exp).each(function() {
+					var el = $(this);
+					el.data("ui-resizable-alsoresize", {
+						width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
+						left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10)
+					});
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.parentNode) {
+			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
+			else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
+		}else{
+			_store(o.alsoResize);
+		}
+	},
+
+	resize: function (event, ui) {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			os = that.originalSize,
+			op = that.originalPosition,
+			delta = {
+				height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0,
+				top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0
+			},
+
+			_alsoResize = function (exp, c) {
+				$(exp).each(function() {
+					var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {},
+						css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
+
+					$.each(css, function (i, prop) {
+						var sum = (start[prop]||0) + (delta[prop]||0);
+						if (sum && sum >= 0) {
+							style[prop] = sum || null;
+						}
+					});
+
+					el.css(style);
+				});
+			};
+
+		if (typeof(o.alsoResize) === "object" && !o.alsoResize.nodeType) {
+			$.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
+		}else{
+			_alsoResize(o.alsoResize);
+		}
+	},
+
+	stop: function () {
+		$(this).removeData("resizable-alsoresize");
+	}
+});
+
+$.ui.plugin.add("resizable", "ghost", {
+
+	start: function() {
+
+		var that = $(this).data("ui-resizable"), o = that.options, cs = that.size;
+
+		that.ghost = that.originalElement.clone();
+		that.ghost
+			.css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
+			.addClass("ui-resizable-ghost")
+			.addClass(typeof o.ghost === "string" ? o.ghost : "");
+
+		that.ghost.appendTo(that.helper);
+
+	},
+
+	resize: function(){
+		var that = $(this).data("ui-resizable");
+		if (that.ghost) {
+			that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width });
+		}
+	},
+
+	stop: function() {
+		var that = $(this).data("ui-resizable");
+		if (that.ghost && that.helper) {
+			that.helper.get(0).removeChild(that.ghost.get(0));
+		}
+	}
+
+});
+
+$.ui.plugin.add("resizable", "grid", {
+
+	resize: function() {
+		var that = $(this).data("ui-resizable"),
+			o = that.options,
+			cs = that.size,
+			os = that.originalSize,
+			op = that.originalPosition,
+			a = that.axis,
+			grid = typeof o.grid === "number" ? [o.grid, o.grid] : o.grid,
+			gridX = (grid[0]||1),
+			gridY = (grid[1]||1),
+			ox = Math.round((cs.width - os.width) / gridX) * gridX,
+			oy = Math.round((cs.height - os.height) / gridY) * gridY,
+			newWidth = os.width + ox,
+			newHeight = os.height + oy,
+			isMaxWidth = o.maxWidth && (o.maxWidth < newWidth),
+			isMaxHeight = o.maxHeight && (o.maxHeight < newHeight),
+			isMinWidth = o.minWidth && (o.minWidth > newWidth),
+			isMinHeight = o.minHeight && (o.minHeight > newHeight);
+
+		o.grid = grid;
+
+		if (isMinWidth) {
+			newWidth = newWidth + gridX;
+		}
+		if (isMinHeight) {
+			newHeight = newHeight + gridY;
+		}
+		if (isMaxWidth) {
+			newWidth = newWidth - gridX;
+		}
+		if (isMaxHeight) {
+			newHeight = newHeight - gridY;
+		}
+
+		if (/^(se|s|e)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+		} else if (/^(ne)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+		} else if (/^(sw)$/.test(a)) {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.left = op.left - ox;
+		} else {
+			that.size.width = newWidth;
+			that.size.height = newHeight;
+			that.position.top = op.top - oy;
+			that.position.left = op.left - ox;
+		}
+	}
+
+});
+
+})(jQuery);
+;
+/*!
+ * jQuery UI Dialog 1.10.2
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/dialog/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ *  jquery.ui.button.js
+ *	jquery.ui.draggable.js
+ *	jquery.ui.mouse.js
+ *	jquery.ui.position.js
+ *	jquery.ui.resizable.js
+ */
+(function( $, undefined ) {
+
+var sizeRelatedOptions = {
+		buttons: true,
+		height: true,
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true,
+		width: true
+	},
+	resizableRelatedOptions = {
+		maxHeight: true,
+		maxWidth: true,
+		minHeight: true,
+		minWidth: true
+	};
+
+$.widget( "ui.dialog", {
+	version: "1.10.2",
+	options: {
+		appendTo: "body",
+		autoOpen: true,
+		buttons: [],
+		closeOnEscape: true,
+		closeText: "close",
+		dialogClass: "",
+		draggable: true,
+		hide: null,
+		height: "auto",
+		maxHeight: null,
+		maxWidth: null,
+		minHeight: 150,
+		minWidth: 150,
+		modal: false,
+		position: {
+			my: "center",
+			at: "center",
+			of: window,
+			collision: "fit",
+			// Ensure the titlebar is always visible
+			using: function( pos ) {
+				var topOffset = $( this ).css( pos ).offset().top;
+				if ( topOffset < 0 ) {
+					$( this ).css( "top", pos.top - topOffset );
+				}
+			}
+		},
+		resizable: true,
+		show: null,
+		title: null,
+		width: 300,
+
+		// callbacks
+		beforeClose: null,
+		close: null,
+		drag: null,
+		dragStart: null,
+		dragStop: null,
+		focus: null,
+		open: null,
+		resize: null,
+		resizeStart: null,
+		resizeStop: null
+	},
+
+	_create: function() {
+		this.originalCss = {
+			display: this.element[0].style.display,
+			width: this.element[0].style.width,
+			minHeight: this.element[0].style.minHeight,
+			maxHeight: this.element[0].style.maxHeight,
+			height: this.element[0].style.height
+		};
+		this.originalPosition = {
+			parent: this.element.parent(),
+			index: this.element.parent().children().index( this.element )
+		};
+		this.originalTitle = this.element.attr("title");
+		this.options.title = this.options.title || this.originalTitle;
+
+		this._createWrapper();
+
+		this.element
+			.show()
+			.removeAttr("title")
+			.addClass("ui-dialog-content ui-widget-content")
+			.appendTo( this.uiDialog );
+
+		this._createTitlebar();
+		this._createButtonPane();
+
+		if ( this.options.draggable && $.fn.draggable ) {
+			this._makeDraggable();
+		}
+		if ( this.options.resizable && $.fn.resizable ) {
+			this._makeResizable();
+		}
+
+		this._isOpen = false;
+	},
+
+	_init: function() {
+		if ( this.options.autoOpen ) {
+			this.open();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+		if ( element && (element.jquery || element.nodeType) ) {
+			return $( element );
+		}
+		return this.document.find( element || "body" ).eq( 0 );
+	},
+
+	_destroy: function() {
+		var next,
+			originalPosition = this.originalPosition;
+
+		this._destroyOverlay();
+
+		this.element
+			.removeUniqueId()
+			.removeClass("ui-dialog-content ui-widget-content")
+			.css( this.originalCss )
+			// Without detaching first, the following becomes really slow
+			.detach();
+
+		this.uiDialog.stop( true, true ).remove();
+
+		if ( this.originalTitle ) {
+			this.element.attr( "title", this.originalTitle );
+		}
+
+		next = originalPosition.parent.children().eq( originalPosition.index );
+		// Don't try to place the dialog next to itself (#8613)
+		if ( next.length && next[0] !== this.element[0] ) {
+			next.before( this.element );
+		} else {
+			originalPosition.parent.append( this.element );
+		}
+	},
+
+	widget: function() {
+		return this.uiDialog;
+	},
+
+	disable: $.noop,
+	enable: $.noop,
+
+	close: function( event ) {
+		var that = this;
+
+		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
+			return;
+		}
+
+		this._isOpen = false;
+		this._destroyOverlay();
+
+		if ( !this.opener.filter(":focusable").focus().length ) {
+			// Hiding a focused element doesn't trigger blur in WebKit
+			// so in case we have nothing to focus on, explicitly blur the active element
+			// https://bugs.webkit.org/show_bug.cgi?id=47182
+			$( this.document[0].activeElement ).blur();
+		}
+
+		this._hide( this.uiDialog, this.options.hide, function() {
+			that._trigger( "close", event );
+		});
+	},
+
+	isOpen: function() {
+		return this._isOpen;
+	},
+
+	moveToTop: function() {
+		this._moveToTop();
+	},
+
+	_moveToTop: function( event, silent ) {
+		var moved = !!this.uiDialog.nextAll(":visible").insertBefore( this.uiDialog ).length;
+		if ( moved && !silent ) {
+			this._trigger( "focus", event );
+		}
+		return moved;
+	},
+
+	open: function() {
+		var that = this;
+		if ( this._isOpen ) {
+			if ( this._moveToTop() ) {
+				this._focusTabbable();
+			}
+			return;
+		}
+
+		this._isOpen = true;
+		this.opener = $( this.document[0].activeElement );
+
+		this._size();
+		this._position();
+		this._createOverlay();
+		this._moveToTop( null, true );
+		this._show( this.uiDialog, this.options.show, function() {
+			that._focusTabbable();
+			that._trigger("focus");
+		});
+
+		this._trigger("open");
+	},
+
+	_focusTabbable: function() {
+		// Set focus to the first match:
+		// 1. First element inside the dialog matching [autofocus]
+		// 2. Tabbable element inside the content element
+		// 3. Tabbable element inside the buttonpane
+		// 4. The close button
+		// 5. The dialog itself
+		var hasFocus = this.element.find("[autofocus]");
+		if ( !hasFocus.length ) {
+			hasFocus = this.element.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogButtonPane.find(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialogTitlebarClose.filter(":tabbable");
+		}
+		if ( !hasFocus.length ) {
+			hasFocus = this.uiDialog;
+		}
+		hasFocus.eq( 0 ).focus();
+	},
+
+	_keepFocus: function( event ) {
+		function checkFocus() {
+			var activeElement = this.document[0].activeElement,
+				isActive = this.uiDialog[0] === activeElement ||
+					$.contains( this.uiDialog[0], activeElement );
+			if ( !isActive ) {
+				this._focusTabbable();
+			}
+		}
+		event.preventDefault();
+		checkFocus.call( this );
+		// support: IE
+		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
+		// so we check again later
+		this._delay( checkFocus );
+	},
+
+	_createWrapper: function() {
+		this.uiDialog = $("<div>")
+			.addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " +
+				this.options.dialogClass )
+			.hide()
+			.attr({
+				// Setting tabIndex makes the div focusable
+				tabIndex: -1,
+				role: "dialog"
+			})
+			.appendTo( this._appendTo() );
+
+		this._on( this.uiDialog, {
+			keydown: function( event ) {
+				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
+						event.keyCode === $.ui.keyCode.ESCAPE ) {
+					event.preventDefault();
+					this.close( event );
+					return;
+				}
+
+				// prevent tabbing out of dialogs
+				if ( event.keyCode !== $.ui.keyCode.TAB ) {
+					return;
+				}
+				var tabbables = this.uiDialog.find(":tabbable"),
+					first = tabbables.filter(":first"),
+					last  = tabbables.filter(":last");
+
+				if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {
+					first.focus( 1 );
+					event.preventDefault();
+				} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
+					last.focus( 1 );
+					event.preventDefault();
+				}
+			},
+			mousedown: function( event ) {
+				if ( this._moveToTop( event ) ) {
+					this._focusTabbable();
+				}
+			}
+		});
+
+		// We assume that any existing aria-describedby attribute means
+		// that the dialog content is marked up properly
+		// otherwise we brute force the content as the description
+		if ( !this.element.find("[aria-describedby]").length ) {
+			this.uiDialog.attr({
+				"aria-describedby": this.element.uniqueId().attr("id")
+			});
+		}
+	},
+
+	_createTitlebar: function() {
+		var uiDialogTitle;
+
+		this.uiDialogTitlebar = $("<div>")
+			.addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
+			.prependTo( this.uiDialog );
+		this._on( this.uiDialogTitlebar, {
+			mousedown: function( event ) {
+				// Don't prevent click on close button (#8838)
+				// Focusing a dialog that is partially scrolled out of view
+				// causes the browser to scroll it into view, preventing the click event
+				if ( !$( event.target ).closest(".ui-dialog-titlebar-close") ) {
+					// Dialog isn't getting focus when dragging (#8063)
+					this.uiDialog.focus();
+				}
+			}
+		});
+
+		this.uiDialogTitlebarClose = $("<button></button>")
+			.button({
+				label: this.options.closeText,
+				icons: {
+					primary: "ui-icon-closethick"
+				},
+				text: false
+			})
+			.addClass("ui-dialog-titlebar-close")
+			.appendTo( this.uiDialogTitlebar );
+		this._on( this.uiDialogTitlebarClose, {
+			click: function( event ) {
+				event.preventDefault();
+				this.close( event );
+			}
+		});
+
+		uiDialogTitle = $("<span>")
+			.uniqueId()
+			.addClass("ui-dialog-title")
+			.prependTo( this.uiDialogTitlebar );
+		this._title( uiDialogTitle );
+
+		this.uiDialog.attr({
+			"aria-labelledby": uiDialogTitle.attr("id")
+		});
+	},
+
+	_title: function( title ) {
+		if ( !this.options.title ) {
+			title.html("&#160;");
+		}
+		title.text( this.options.title );
+	},
+
+	_createButtonPane: function() {
+		this.uiDialogButtonPane = $("<div>")
+			.addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
+
+		this.uiButtonSet = $("<div>")
+			.addClass("ui-dialog-buttonset")
+			.appendTo( this.uiDialogButtonPane );
+
+		this._createButtons();
+	},
+
+	_createButtons: function() {
+		var that = this,
+			buttons = this.options.buttons;
+
+		// if we already have a button pane, remove it
+		this.uiDialogButtonPane.remove();
+		this.uiButtonSet.empty();
+
+		if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {
+			this.uiDialog.removeClass("ui-dialog-buttons");
+			return;
+		}
+
+		$.each( buttons, function( name, props ) {
+			var click, buttonOptions;
+			props = $.isFunction( props ) ?
+				{ click: props, text: name } :
+				props;
+			// Default to a non-submitting button
+			props = $.extend( { type: "button" }, props );
+			// Change the context for the click callback to be the main element
+			click = props.click;
+			props.click = function() {
+				click.apply( that.element[0], arguments );
+			};
+			buttonOptions = {
+				icons: props.icons,
+				text: props.showText
+			};
+			delete props.icons;
+			delete props.showText;
+			$( "<button></button>", props )
+				.button( buttonOptions )
+				.appendTo( that.uiButtonSet );
+		});
+		this.uiDialog.addClass("ui-dialog-buttons");
+		this.uiDialogButtonPane.appendTo( this.uiDialog );
+	},
+
+	_makeDraggable: function() {
+		var that = this,
+			options = this.options;
+
+		function filteredUi( ui ) {
+			return {
+				position: ui.position,
+				offset: ui.offset
+			};
+		}
+
+		this.uiDialog.draggable({
+			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
+			handle: ".ui-dialog-titlebar",
+			containment: "document",
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-dragging");
+				that._blockFrames();
+				that._trigger( "dragStart", event, filteredUi( ui ) );
+			},
+			drag: function( event, ui ) {
+				that._trigger( "drag", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.position = [
+					ui.position.left - that.document.scrollLeft(),
+					ui.position.top - that.document.scrollTop()
+				];
+				$( this ).removeClass("ui-dialog-dragging");
+				that._unblockFrames();
+				that._trigger( "dragStop", event, filteredUi( ui ) );
+			}
+		});
+	},
+
+	_makeResizable: function() {
+		var that = this,
+			options = this.options,
+			handles = options.resizable,
+			// .ui-resizable has position: relative defined in the stylesheet
+			// but dialogs have to use absolute or fixed positioning
+			position = this.uiDialog.css("position"),
+			resizeHandles = typeof handles === "string" ?
+				handles	:
+				"n,e,s,w,se,sw,ne,nw";
+
+		function filteredUi( ui ) {
+			return {
+				originalPosition: ui.originalPosition,
+				originalSize: ui.originalSize,
+				position: ui.position,
+				size: ui.size
+			};
+		}
+
+		this.uiDialog.resizable({
+			cancel: ".ui-dialog-content",
+			containment: "document",
+			alsoResize: this.element,
+			maxWidth: options.maxWidth,
+			maxHeight: options.maxHeight,
+			minWidth: options.minWidth,
+			minHeight: this._minHeight(),
+			handles: resizeHandles,
+			start: function( event, ui ) {
+				$( this ).addClass("ui-dialog-resizing");
+				that._blockFrames();
+				that._trigger( "resizeStart", event, filteredUi( ui ) );
+			},
+			resize: function( event, ui ) {
+				that._trigger( "resize", event, filteredUi( ui ) );
+			},
+			stop: function( event, ui ) {
+				options.height = $( this ).height();
+				options.width = $( this ).width();
+				$( this ).removeClass("ui-dialog-resizing");
+				that._unblockFrames();
+				that._trigger( "resizeStop", event, filteredUi( ui ) );
+			}
+		})
+		.css( "position", position );
+	},
+
+	_minHeight: function() {
+		var options = this.options;
+
+		return options.height === "auto" ?
+			options.minHeight :
+			Math.min( options.minHeight, options.height );
+	},
+
+	_position: function() {
+		// Need to show the dialog to get the actual offset in the position plugin
+		var isVisible = this.uiDialog.is(":visible");
+		if ( !isVisible ) {
+			this.uiDialog.show();
+		}
+		this.uiDialog.position( this.options.position );
+		if ( !isVisible ) {
+			this.uiDialog.hide();
+		}
+	},
+
+	_setOptions: function( options ) {
+		var that = this,
+			resize = false,
+			resizableOptions = {};
+
+		$.each( options, function( key, value ) {
+			that._setOption( key, value );
+
+			if ( key in sizeRelatedOptions ) {
+				resize = true;
+			}
+			if ( key in resizableRelatedOptions ) {
+				resizableOptions[ key ] = value;
+			}
+		});
+
+		if ( resize ) {
+			this._size();
+			this._position();
+		}
+		if ( this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", resizableOptions );
+		}
+	},
+
+	_setOption: function( key, value ) {
+		/*jshint maxcomplexity:15*/
+		var isDraggable, isResizable,
+			uiDialog = this.uiDialog;
+
+		if ( key === "dialogClass" ) {
+			uiDialog
+				.removeClass( this.options.dialogClass )
+				.addClass( value );
+		}
+
+		if ( key === "disabled" ) {
+			return;
+		}
+
+		this._super( key, value );
+
+		if ( key === "appendTo" ) {
+			this.uiDialog.appendTo( this._appendTo() );
+		}
+
+		if ( key === "buttons" ) {
+			this._createButtons();
+		}
+
+		if ( key === "closeText" ) {
+			this.uiDialogTitlebarClose.button({
+				// Ensure that we always pass a string
+				label: "" + value
+			});
+		}
+
+		if ( key === "draggable" ) {
+			isDraggable = uiDialog.is(":data(ui-draggable)");
+			if ( isDraggable && !value ) {
+				uiDialog.draggable("destroy");
+			}
+
+			if ( !isDraggable && value ) {
+				this._makeDraggable();
+			}
+		}
+
+		if ( key === "position" ) {
+			this._position();
+		}
+
+		if ( key === "resizable" ) {
+			// currently resizable, becoming non-resizable
+			isResizable = uiDialog.is(":data(ui-resizable)");
+			if ( isResizable && !value ) {
+				uiDialog.resizable("destroy");
+			}
+
+			// currently resizable, changing handles
+			if ( isResizable && typeof value === "string" ) {
+				uiDialog.resizable( "option", "handles", value );
+			}
+
+			// currently non-resizable, becoming resizable
+			if ( !isResizable && value !== false ) {
+				this._makeResizable();
+			}
+		}
+
+		if ( key === "title" ) {
+			this._title( this.uiDialogTitlebar.find(".ui-dialog-title") );
+		}
+	},
+
+	_size: function() {
+		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
+		// divs will both have width and height set, so we need to reset them
+		var nonContentHeight, minContentHeight, maxContentHeight,
+			options = this.options;
+
+		// Reset content sizing
+		this.element.show().css({
+			width: "auto",
+			minHeight: 0,
+			maxHeight: "none",
+			height: 0
+		});
+
+		if ( options.minWidth > options.width ) {
+			options.width = options.minWidth;
+		}
+
+		// reset wrapper sizing
+		// determine the height of all the non-content elements
+		nonContentHeight = this.uiDialog.css({
+				height: "auto",
+				width: options.width
+			})
+			.outerHeight();
+		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
+		maxContentHeight = typeof options.maxHeight === "number" ?
+			Math.max( 0, options.maxHeight - nonContentHeight ) :
+			"none";
+
+		if ( options.height === "auto" ) {
+			this.element.css({
+				minHeight: minContentHeight,
+				maxHeight: maxContentHeight,
+				height: "auto"
+			});
+		} else {
+			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
+		}
+
+		if (this.uiDialog.is(":data(ui-resizable)") ) {
+			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
+		}
+	},
+
+	_blockFrames: function() {
+		this.iframeBlocks = this.document.find( "iframe" ).map(function() {
+			var iframe = $( this );
+
+			return $( "<div>" )
+				.css({
+					position: "absolute",
+					width: iframe.outerWidth(),
+					height: iframe.outerHeight()
+				})
+				.appendTo( iframe.parent() )
+				.offset( iframe.offset() )[0];
+		});
+	},
+
+	_unblockFrames: function() {
+		if ( this.iframeBlocks ) {
+			this.iframeBlocks.remove();
+			delete this.iframeBlocks;
+		}
+	},
+
+	_allowInteraction: function( event ) {
+		if ( $( event.target ).closest(".ui-dialog").length ) {
+			return true;
+		}
+
+		// TODO: Remove hack when datepicker implements
+		// the .ui-front logic (#8989)
+		return !!$( event.target ).closest(".ui-datepicker").length;
+	},
+
+	_createOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		var that = this,
+			widgetFullName = this.widgetFullName;
+		if ( !$.ui.dialog.overlayInstances ) {
+			// Prevent use of anchors and inputs.
+			// We use a delay in case the overlay is created from an
+			// event that we're going to be cancelling. (#2804)
+			this._delay(function() {
+				// Handle .dialog().dialog("close") (#4065)
+				if ( $.ui.dialog.overlayInstances ) {
+					this.document.bind( "focusin.dialog", function( event ) {
+						if ( !that._allowInteraction( event ) ) {
+							event.preventDefault();
+							$(".ui-dialog:visible:last .ui-dialog-content")
+								.data( widgetFullName )._focusTabbable();
+						}
+					});
+				}
+			});
+		}
+
+		this.overlay = $("<div>")
+			.addClass("ui-widget-overlay ui-front")
+			.appendTo( this._appendTo() );
+		this._on( this.overlay, {
+			mousedown: "_keepFocus"
+		});
+		$.ui.dialog.overlayInstances++;
+	},
+
+	_destroyOverlay: function() {
+		if ( !this.options.modal ) {
+			return;
+		}
+
+		if ( this.overlay ) {
+			$.ui.dialog.overlayInstances--;
+
+			if ( !$.ui.dialog.overlayInstances ) {
+				this.document.unbind( "focusin.dialog" );
+			}
+			this.overlay.remove();
+			this.overlay = null;
+		}
+	}
+});
+
+$.ui.dialog.overlayInstances = 0;
+
+// DEPRECATED
+if ( $.uiBackCompat !== false ) {
+	// position option with array notation
+	// just override with old implementation
+	$.widget( "ui.dialog", $.ui.dialog, {
+		_position: function() {
+			var position = this.options.position,
+				myAt = [],
+				offset = [ 0, 0 ],
+				isVisible;
+
+			if ( position ) {
+				if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) {
+					myAt = position.split ? position.split(" ") : [ position[0], position[1] ];
+					if ( myAt.length === 1 ) {
+						myAt[1] = myAt[0];
+					}
+
+					$.each( [ "left", "top" ], function( i, offsetPosition ) {
+						if ( +myAt[ i ] === myAt[ i ] ) {
+							offset[ i ] = myAt[ i ];
+							myAt[ i ] = offsetPosition;
+						}
+					});
+
+					position = {
+						my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " +
+							myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]),
+						at: myAt.join(" ")
+					};
+				}
+
+				position = $.extend( {}, $.ui.dialog.prototype.options.position, position );
+			} else {
+				position = $.ui.dialog.prototype.options.position;
+			}
+
+			// need to show the dialog to get the actual offset in the position plugin
+			isVisible = this.uiDialog.is(":visible");
+			if ( !isVisible ) {
+				this.uiDialog.show();
+			}
+			this.uiDialog.position( position );
+			if ( !isVisible ) {
+				this.uiDialog.hide();
+			}
+		}
+	});
+}
+
+}( jQuery ) );
+;
+/**
+ * @file
+ *
+ * Dialog API inspired by HTML5 dialog element:
+ * http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#the-dialog-element
+ */
+(function ($, Drupal, drupalSettings) {
+
+  "use strict";
+
+  drupalSettings.dialog = {
+    autoOpen: true,
+    dialogClass: '',
+    // Drupal-specific extensions: see dialog.jquery-ui.js.
+    buttonClass: 'button',
+    buttonPrimaryClass: 'button--primary',
+    // When using this API directly (when generating dialogs on the client side),
+    // you may want to override this method and do
+    // @code
+    // jQuery(event.target).remove()
+    // @endcode
+    // as well, to remove the dialog on closing.
+    close: function (event) {
+      Drupal.detachBehaviors(event.target, null, 'unload');
+    }
+  };
+
+  Drupal.dialog = function (element, options) {
+
+    function openDialog(settings) {
+      settings = $.extend({}, drupalSettings.dialog, options, settings);
+      // Trigger a global event to allow scripts to bind events to the dialog.
+      $(window).trigger('dialog:beforecreate', [dialog, $element, settings]);
+      $element.dialog(settings);
+      dialog.open = true;
+      $(window).trigger('dialog:aftercreate', [dialog, $element, settings]);
+    }
+
+    function closeDialog(value) {
+      $(window).trigger('dialog:beforeclose', [dialog, $element]);
+      $element.dialog('close');
+      dialog.returnValue = value;
+      dialog.open = false;
+      $(window).trigger('dialog:afterclose', [dialog, $element]);
+    }
+
+    var undef;
+    var $element = $(element);
+    var dialog = {
+      open: false,
+      returnValue: undef,
+      show: function () {
+        openDialog({modal: false});
+      },
+      showModal: function () {
+        openDialog({modal: true});
+      },
+      close: closeDialog
+    };
+
+    return dialog;
+  };
+
+})(jQuery, Drupal, drupalSettings);
+;
+(function ($, Drupal, drupalSettings, debounce, displace) {
+
+  "use strict";
+
+  // autoResize option will turn off resizable and draggable.
+  drupalSettings.dialog = $.extend({autoResize: true, maxHeight: '95%'}, drupalSettings.dialog);
+
+  /**
+   * Resets the current options for positioning.
+   *
+   * This is used as a window resize and scroll callback to reposition the
+   * jQuery UI dialog. Although not a built-in jQuery UI option, this can
+   * be disabled by setting autoResize: false in the options array when creating
+   * a new Drupal.dialog().
+   */
+  function resetSize(event) {
+    var positionOptions = ['width', 'height', 'minWidth', 'minHeight', 'maxHeight', 'maxWidth', 'position'];
+    var adjustedOptions = {};
+    var windowHeight = $(window).height();
+    var option, optionValue, adjustedValue;
+    for (var n = 0; n < positionOptions.length; n++) {
+      option = positionOptions[n];
+      optionValue = event.data.settings[option];
+      if (optionValue) {
+        // jQuery UI does not support percentages on heights, convert to pixels.
+        if (typeof optionValue === 'string' && /%$/.test(optionValue) && /height/i.test(option)) {
+          // Take offsets in account.
+          windowHeight -= displace.offsets.top + displace.offsets.bottom;
+          adjustedValue = parseInt(0.01 * parseInt(optionValue, 10) * windowHeight, 10);
+          // Don't force the dialog to be bigger vertically than needed.
+          if (option === 'height' && event.data.$element.parent().outerHeight() < adjustedValue) {
+            adjustedValue = 'auto';
+          }
+          adjustedOptions[option] = adjustedValue;
+        }
+      }
+    }
+    // Offset the dialog center to be at the center of Drupal.displace.offsets.
+    adjustedOptions = resetPosition(adjustedOptions);
+    event.data.$element
+      .dialog('option', adjustedOptions)
+      .trigger('dialogContentResize');
+  }
+
+  /**
+   * Position the dialog's center at the center of displace.offsets boundaries.
+   */
+  function resetPosition(options) {
+    var offsets = displace.offsets;
+    var left = offsets.left - offsets.right;
+    var top = offsets.top - offsets.bottom;
+
+    var leftString = (left > 0 ? '+' : '-') + Math.abs(Math.round(left / 2)) + 'px';
+    var topString = (top > 0 ? '+' : '-') + Math.abs(Math.round(top / 2)) + 'px';
+    options.position = {
+      my: 'center' + (left !== 0 ? leftString : '') + ' center' + (top !== 0 ? topString : '')
+    };
+    return options;
+  }
+
+  $(window).on({
+    'dialog:aftercreate': function (event, dialog, $element, settings) {
+      var autoResize = debounce(resetSize, 20);
+      var eventData = {settings: settings, $element: $element};
+      if (settings.autoResize === true || settings.autoResize === 'true') {
+        $element
+          .dialog('option', {resizable: false, draggable: false})
+          .dialog('widget').css('position', 'fixed');
+        $(window)
+          .on('resize.dialogResize scroll.dialogResize', eventData, autoResize)
+          .trigger('resize.dialogResize');
+        $(document).on('drupalViewportOffsetChange', eventData, autoResize);
+      }
+    },
+    'dialog:beforeclose': function (event, dialog, $element) {
+      $(window).off('.dialogResize');
+    }
+  });
+
+})(jQuery, Drupal, drupalSettings, Drupal.debounce, Drupal.displace);
+;
+/**
+ * @file
+ * Adds default classes to buttons for styling purposes.
+ */
+(function ($) {
+
+  "use strict";
+
+  $.widget('ui.dialog', $.ui.dialog, {
+    options: {
+      buttonClass: 'button',
+      buttonPrimaryClass: 'button--primary'
+    },
+    _createButtons: function () {
+      var opts = this.options;
+      var primaryIndex;
+      var $buttons;
+      var index, il;
+      for (index = 0, il = opts.buttons.length; index < il; index += 1) {
+        if (opts.buttons[index].primary && opts.buttons[index].primary === true) {
+          primaryIndex = index;
+          delete opts.buttons[index].primary;
+          break;
+        }
+      }
+      this._super();
+      $buttons = this.uiButtonSet.children().addClass(opts.buttonClass);
+      if (typeof primaryIndex !== 'undefined') {
+        $buttons.eq(index).addClass(opts.buttonPrimaryClass);
+      }
+    }
+  });
+
+})(jQuery);
+;
+/**
+ * @file
+ * Attaches behaviors for Drupal's active link marking.
+ */
+
+(function (Drupal, drupalSettings) {
+
+  "use strict";
+
+  /**
+   * Append active class.
+   *
+   * The link is only active if its path corresponds to the current path, the
+   * language of the linked path is equal to the current language, and if the
+   * query parameters of the link equal those of the current request, since the
+   * same request with different query parameters may yield a different page
+   * (e.g. pagers, exposed View filters).
+   *
+   * Does not discriminate based on element type, so allows you to set the active
+   * class on any element: a, li…
+   */
+  Drupal.behaviors.activeLinks = {
+    attach: function (context) {
+      // Start by finding all potentially active links.
+      var path = drupalSettings.path;
+      var queryString = JSON.stringify(path.currentQuery);
+      var querySelector = path.currentQuery ? "[data-drupal-link-query='" + queryString + "']" : ':not([data-drupal-link-query])';
+      var originalSelectors = ['[data-drupal-link-system-path="' + path.currentPath + '"]'];
+      var selectors;
+
+      // If this is the front page, we have to check for the <front> path as well.
+      if (path.isFront) {
+        originalSelectors.push('[data-drupal-link-system-path="<front>"]');
+      }
+
+      // Add language filtering.
+      selectors = [].concat(
+        // Links without any hreflang attributes (most of them).
+        originalSelectors.map(function (selector) { return selector + ':not([hreflang])'; }),
+        // Links with hreflang equals to the current language.
+        originalSelectors.map(function (selector) { return selector + '[hreflang="' + path.currentLanguage + '"]'; })
+      );
+
+      // Add query string selector for pagers, exposed filters.
+      selectors = selectors.map(function (current) { return current + querySelector; });
+
+      // Query the DOM.
+      var activeLinks = context.querySelectorAll(selectors.join(','));
+      for (var i = 0, il = activeLinks.length; i < il; i += 1) {
+        activeLinks[i].classList.add('active');
+      }
+    },
+    detach: function (context, settings, trigger) {
+      if (trigger === 'unload') {
+        var activeLinks = context.querySelectorAll('[data-drupal-link-system-path].active');
+        for (var i = 0, il = activeLinks.length; i < il; i += 1) {
+          activeLinks[i].classList.remove('active');
+        }
+      }
+    }
+  };
+
+})(Drupal, drupalSettings);
+;
+/**
+ * Adds an HTML element and method to trigger audio UAs to read system messages.
+ *
+ * Use Drupal.announce() to indicate to screen reader users that an element on
+ * the page has changed state. For instance, if clicking a link loads 10 more
+ * items into a list, one might announce the change like this.
+ * $('#search-list')
+ *   .on('itemInsert', function (event, data) {
+ *     // Insert the new items.
+ *     $(data.container.el).append(data.items.el);
+ *     // Announce the change to the page contents.
+ *     Drupal.announce(Drupal.t('@count items added to @container',
+ *       {'@count': data.items.length, '@container': data.container.title}
+ *     ));
+ *   });
+ */
+(function (Drupal, debounce) {
+
+  "use strict";
+
+  var liveElement;
+  var announcements = [];
+
+  /**
+   * Builds a div element with the aria-live attribute and attaches it
+   * to the DOM.
+   */
+  Drupal.behaviors.drupalAnnounce = {
+    attach: function (context) {
+      // Create only one aria-live element.
+      if (!liveElement) {
+        liveElement = document.createElement('div');
+        liveElement.id = 'drupal-live-announce';
+        liveElement.className = 'visually-hidden';
+        liveElement.setAttribute('aria-live', 'polite');
+        liveElement.setAttribute('aria-busy', 'false');
+        document.body.appendChild(liveElement);
+      }
+    }
+  };
+
+  /**
+   * Concatenates announcements to a single string; appends to the live region.
+   */
+  function announce() {
+    var text = [];
+    var priority = 'polite';
+    var announcement;
+
+    // Create an array of announcement strings to be joined and appended to the
+    // aria live region.
+    for (var i = 0, il = announcements.length; i < il; i++) {
+      announcement = announcements.pop();
+      text.unshift(announcement.text);
+      // If any of the announcements has a priority of assertive then the group
+      // of joined announcements will have this priority.
+      if (announcement.priority === 'assertive') {
+        priority = 'assertive';
+      }
+    }
+
+    if (text.length) {
+      // Clear the liveElement so that repeated strings will be read.
+      liveElement.innerHTML = '';
+      // Set the busy state to true until the node changes are complete.
+      liveElement.setAttribute('aria-busy', 'true');
+      // Set the priority to assertive, or default to polite.
+      liveElement.setAttribute('aria-live', priority);
+      // Print the text to the live region. Text should be run through
+      // Drupal.t() before being passed to Drupal.announce().
+      liveElement.innerHTML = text.join('\n');
+      // The live text area is updated. Allow the AT to announce the text.
+      liveElement.setAttribute('aria-busy', 'false');
+    }
+  }
+
+  /**
+   * Triggers audio UAs to read the supplied text.
+   *
+   * The aria-live region will only read the text that currently populates its
+   * text node. Replacing text quickly in rapid calls to announce results in
+   * only the text from the most recent call to Drupal.announce() being read.
+   * By wrapping the call to announce in a debounce function, we allow for
+   * time for multiple calls to Drupal.announce() to queue up their messages.
+   * These messages are then joined and append to the aria-live region as one
+   * text node.
+   *
+   * @param String text
+   *   A string to be read by the UA.
+   * @param String priority
+   *   A string to indicate the priority of the message. Can be either
+   *   'polite' or 'assertive'. Polite is the default.
+   *
+   * @see http://www.w3.org/WAI/PF/aria-practices/#liveprops
+   */
+  Drupal.announce = function (text, priority) {
+    // Save the text and priority into a closure variable. Multiple simultaneous
+    // announcements will be concatenated and read in sequence.
+    announcements.push({
+      text: text,
+      priority: priority
+    });
+    // Immediately invoke the function that debounce returns. 200 ms is right at
+    // the cusp where humans notice a pause, so we will wait
+    // at most this much time before the set of queued announcements is read.
+    return (debounce(announce, 200)());
+  };
+}(Drupal, Drupal.debounce));
+;
+window.matchMedia||(window.matchMedia=function(){"use strict";var e=window.styleMedia||window.media;if(!e){var t=document.createElement("style"),i=document.getElementsByTagName("script")[0],n=null;t.type="text/css";t.id="matchmediajs-test";i.parentNode.insertBefore(t,i);n="getComputedStyle"in window&&window.getComputedStyle(t,null)||t.currentStyle;e={matchMedium:function(e){var i="@media "+e+"{ #matchmediajs-test { width: 1px; } }";if(t.styleSheet){t.styleSheet.cssText=i}else{t.textContent=i}return n.width==="1px"}}}return function(t){return{matches:e.matchMedium(t||"all"),media:t||"all"}}}());
+;
+(function(){if(window.matchMedia&&window.matchMedia("all").addListener){return false}var e=window.matchMedia,i=e("only all").matches,n=false,t=0,a=[],r=function(i){clearTimeout(t);t=setTimeout(function(){for(var i=0,n=a.length;i<n;i++){var t=a[i].mql,r=a[i].listeners||[],o=e(t.media).matches;if(o!==t.matches){t.matches=o;for(var s=0,l=r.length;s<l;s++){r[s].call(window,t)}}}},30)};window.matchMedia=function(t){var o=e(t),s=[],l=0;o.addListener=function(e){if(!i){return}if(!n){n=true;window.addEventListener("resize",r,true)}if(l===0){l=a.push({mql:o,listeners:s})}s.push(e)};o.removeListener=function(e){for(var i=0,n=s.length;i<n;i++){if(s[i]===e){s.splice(i,1)}}};return o}})();
+;
+/**
+ * Builds a nested accordion widget.
+ *
+ * Invoke on an HTML list element with the jQuery plugin pattern.
+ * - For example, $('.menu').drupalToolbarMenu();
+ */
+
+(function ($, Drupal, drupalSettings) {
+
+  "use strict";
+
+  /**
+   * Store the open menu tray.
+   */
+  var activeItem = Drupal.url(drupalSettings.path.currentPath);
+
+  $.fn.drupalToolbarMenu = function () {
+
+    var ui = {
+      'handleOpen': Drupal.t('Extend'),
+      'handleClose': Drupal.t('Collapse')
+    };
+
+    /**
+     * Handle clicks from the disclosure button on an item with sub-items.
+     *
+     * @param {Object} event
+     *   A jQuery Event object.
+     */
+    function toggleClickHandler(event) {
+      var $toggle = $(event.target);
+      var $item = $toggle.closest('li');
+      // Toggle the list item.
+      toggleList($item);
+      // Close open sibling menus.
+      var $openItems = $item.siblings().filter('.open');
+      toggleList($openItems, false);
+    }
+
+    /**
+     * Handle clicks from a menu item link.
+     *
+     * @param {Object} event
+     *   A jQuery Event object.
+     */
+    function linkClickHandler(event) {
+      // If the toolbar is positioned fixed (and therefore hiding content
+      // underneath), then users expect clicks in the administration menu tray
+      // to take them to that destination but for the menu tray to be closed
+      // after clicking: otherwise the toolbar itself is obstructing the view
+      // of the destination they chose.
+      if (!Drupal.toolbar.models.toolbarModel.get('isFixed')) {
+        Drupal.toolbar.models.toolbarModel.set('activeTab', null);
+      }
+      // Stopping propagation to make sure that once a toolbar-box is clicked
+      // (the whitespace part), the page is not redirected anymore.
+      event.stopPropagation();
+    }
+
+    /**
+     * Toggle the open/close state of a list is a menu.
+     *
+     * @param {jQuery} $item
+     *   The li item to be toggled.
+     *
+     * @param {Boolean} switcher
+     *   A flag that forces toggleClass to add or a remove a class, rather than
+     *   simply toggling its presence.
+     */
+    function toggleList($item, switcher) {
+      var $toggle = $item.children('.toolbar-box').children('.toolbar-handle');
+      switcher = (typeof switcher !== 'undefined') ? switcher : !$item.hasClass('open');
+      // Toggle the item open state.
+      $item.toggleClass('open', switcher);
+      // Twist the toggle.
+      $toggle.toggleClass('open', switcher);
+      // Adjust the toggle text.
+      $toggle
+        .find('.action')
+        // Expand Structure, Collapse Structure
+        .text((switcher) ? ui.handleClose : ui.handleOpen);
+    }
+
+    /**
+     * Add markup to the menu elements.
+     *
+     * Items with sub-elements have a list toggle attached to them. Menu item
+     * links and the corresponding list toggle are wrapped with in a div
+     * classed with .toolbar-box. The .toolbar-box div provides a positioning
+     * context for the item list toggle.
+     *
+     * @param {jQuery} $menu
+     *   The root of the menu to be initialized.
+     */
+    function initItems($menu) {
+      var options = {
+        'class': 'toolbar-icon toolbar-handle',
+        'action': ui.handleOpen,
+        'text': ''
+      };
+      // Initialize items and their links.
+      $menu.find('li > a').wrap('<div class="toolbar-box">');
+      // Add a handle to each list item if it has a menu.
+      $menu.find('li').each(function (index, element) {
+        var $item = $(element);
+        if ($item.children('ul.menu').length) {
+          var $box = $item.children('.toolbar-box');
+          options.text = Drupal.t('@label', {'@label': $box.find('a').text()});
+          $item.children('.toolbar-box')
+            .append(Drupal.theme('toolbarMenuItemToggle', options));
+        }
+      });
+    }
+
+    /**
+     * Adds a level class to each list based on its depth in the menu.
+     *
+     * This function is called recursively on each sub level of lists elements
+     * until the depth of the menu is exhausted.
+     *
+     * @param {jQuery} $lists
+     *   A jQuery object of ul elements.
+     *
+     * @param {Integer} level
+     *   The current level number to be assigned to the list elements.
+     */
+    function markListLevels($lists, level) {
+      level = (!level) ? 1 : level;
+      var $lis = $lists.children('li').addClass('level-' + level);
+      $lists = $lis.children('ul');
+      if ($lists.length) {
+        markListLevels($lists, level + 1);
+      }
+    }
+
+    /**
+     * On page load, open the active menu item.
+     *
+     * Marks the trail of the active link in the menu back to the root of the
+     * menu with .active-trail.
+     *
+     * @param {jQuery} $menu
+     *   The root of the menu.
+     */
+    function openActiveItem($menu) {
+      var pathItem = $menu.find('a[href="' + location.pathname + '"]');
+      if (pathItem.length && !activeItem) {
+        activeItem = location.pathname;
+      }
+      if (activeItem) {
+        var $activeItem = $menu.find('a[href="' + activeItem + '"]').addClass('active');
+        var $activeTrail = $activeItem.parentsUntil('.root', 'li').addClass('active-trail');
+        toggleList($activeTrail, true);
+      }
+    }
+
+    // Bind event handlers.
+    $(document)
+      .on('click.toolbar', '.toolbar-box', toggleClickHandler)
+      .on('click.toolbar', '.toolbar-box a', linkClickHandler);
+
+    // Return the jQuery object.
+    return this.each(function (selector) {
+      var $menu = $(this).once('toolbar-menu');
+      if ($menu.length) {
+        $menu.addClass('root');
+        initItems($menu);
+        markListLevels($menu);
+        // Restore previous and active states.
+        openActiveItem($menu);
+      }
+    });
+  };
+
+  /**
+   * A toggle is an interactive element often bound to a click handler.
+   *
+   * @return {String}
+   *   A string representing a DOM fragment.
+   */
+  Drupal.theme.toolbarMenuItemToggle = function (options) {
+    return '<button class="' + options['class'] + '"><span class="action">' + options.action + '</span><span class="label">' + options.text + '</span></button>';
+  };
+
+}(jQuery, Drupal, drupalSettings));
+;
+/**
+ * @file toolbar.js
+ *
+ * Defines the behavior of the Drupal administration toolbar.
+ */
+(function ($, Drupal, drupalSettings) {
+
+  "use strict";
+
+  // Merge run-time settings with the defaults.
+  var options = $.extend(
+    {
+      breakpoints: {
+        'toolbar.narrow': '',
+        'toolbar.standard': '',
+        'toolbar.wide': ''
+      }
+    },
+    drupalSettings.toolbar,
+    // Merge strings on top of drupalSettings so that they are not mutable.
+    {
+      strings: {
+        horizontal: Drupal.t('Horizontal orientation'),
+        vertical: Drupal.t('Vertical orientation')
+      }
+    }
+  );
+
+  /**
+   * Registers tabs with the toolbar.
+   *
+   * The Drupal toolbar allows modules to register top-level tabs. These may
+   * point directly to a resource or toggle the visibility of a tray.
+   *
+   * Modules register tabs with hook_toolbar().
+   */
+  Drupal.behaviors.toolbar = {
+
+    attach: function (context) {
+      // Verify that the user agent understands media queries. Complex admin
+      // toolbar layouts require media query support.
+      if (!window.matchMedia('only screen').matches) {
+        return;
+      }
+      // Process the administrative toolbar.
+      $(context).find('#toolbar-administration').once('toolbar', function () {
+
+        // Establish the toolbar models and views.
+        var model = Drupal.toolbar.models.toolbarModel = new Drupal.toolbar.ToolbarModel({
+          locked: JSON.parse(localStorage.getItem('Drupal.toolbar.trayVerticalLocked')) || false,
+          activeTab: document.getElementById(JSON.parse(localStorage.getItem('Drupal.toolbar.activeTabID')))
+        });
+        Drupal.toolbar.views.toolbarVisualView = new Drupal.toolbar.ToolbarVisualView({
+          el: this,
+          model: model,
+          strings: options.strings
+        });
+        Drupal.toolbar.views.toolbarAuralView = new Drupal.toolbar.ToolbarAuralView({
+          el: this,
+          model: model,
+          strings: options.strings
+        });
+        Drupal.toolbar.views.bodyVisualView = new Drupal.toolbar.BodyVisualView({
+          el: this,
+          model: model
+        });
+
+        // Render collapsible menus.
+        var menuModel = Drupal.toolbar.models.menuModel = new Drupal.toolbar.MenuModel();
+        Drupal.toolbar.views.menuVisualView = new Drupal.toolbar.MenuVisualView({
+          el: $(this).find('.toolbar-menu-administration').get(0),
+          model: menuModel,
+          strings: options.strings
+        });
+
+        // Handle the resolution of Drupal.toolbar.setSubtrees.
+        // This is handled with a deferred so that the function may be invoked
+        // asynchronously.
+        Drupal.toolbar.setSubtrees.done(function (subtrees) {
+          menuModel.set('subtrees', subtrees);
+          localStorage.setItem('Drupal.toolbar.subtrees', JSON.stringify(subtrees));
+          // Indicate on the toolbarModel that subtrees are now loaded.
+          model.set('areSubtreesLoaded', true);
+        });
+
+        // Attach a listener to the configured media query breakpoints.
+        for (var label in options.breakpoints) {
+          if (options.breakpoints.hasOwnProperty(label)) {
+            var mq = options.breakpoints[label];
+            var mql = Drupal.toolbar.mql[label] = window.matchMedia(mq);
+            // Curry the model and the label of the media query breakpoint to
+            // the mediaQueryChangeHandler function.
+            mql.addListener(Drupal.toolbar.mediaQueryChangeHandler.bind(null, model, label));
+            // Fire the mediaQueryChangeHandler for each configured breakpoint
+            // so that they process once.
+            Drupal.toolbar.mediaQueryChangeHandler.call(null, model, label, mql);
+          }
+        }
+
+        // Trigger an initial attempt to load menu subitems. This first attempt
+        // is made after the media query handlers have had an opportunity to
+        // process. The toolbar starts in the vertical orientation by default,
+        // unless the viewport is wide enough to accommodate a horizontal
+        // orientation. Thus we give the Toolbar a chance to determine if it
+        // should be set to horizontal orientation before attempting to load
+        // menu subtrees.
+        Drupal.toolbar.views.toolbarVisualView.loadSubtrees();
+
+        $(document)
+          // Update the model when the viewport offset changes.
+          .on('drupalViewportOffsetChange.toolbar', function (event, offsets) {
+            model.set('offsets', offsets);
+          });
+
+        // Broadcast model changes to other modules.
+        model
+          .on('change:orientation', function (model, orientation) {
+            $(document).trigger('drupalToolbarOrientationChange', orientation);
+          })
+          .on('change:activeTab', function (model, tab) {
+            $(document).trigger('drupalToolbarTabChange', tab);
+          })
+          .on('change:activeTray', function (model, tray) {
+            $(document).trigger('drupalToolbarTrayChange', tray);
+          });
+
+        // If the toolbar's orientation is horizontal and no active tab is
+        // defined then show the tray of the first toolbar tab by default (but
+        // not the first 'Home' toolbar tab).
+        if (Drupal.toolbar.models.toolbarModel.get('orientation') === 'horizontal' && Drupal.toolbar.models.toolbarModel.get('activeTab') === null) {
+          Drupal.toolbar.models.toolbarModel.set({
+            'activeTab': $('.toolbar-bar .toolbar-tab:not(.home-toolbar-tab) a').get(0)
+          });
+        }
+      });
+    }
+  };
+
+  /**
+   * Toolbar methods of Backbone objects.
+   */
+  Drupal.toolbar = {
+
+    // A hash of View instances.
+    views: {},
+
+    // A hash of Model instances.
+    models: {},
+
+    // A hash of MediaQueryList objects tracked by the toolbar.
+    mql: {},
+
+    /**
+     * Accepts a list of subtree menu elements.
+     *
+     * A deferred object that is resolved by an inlined JavaScript callback.
+     *
+     * JSONP callback.
+     * @see toolbar_subtrees_jsonp().
+     */
+    setSubtrees: new $.Deferred(),
+
+    /**
+     * Respond to configured narrow media query changes.
+     */
+    mediaQueryChangeHandler: function (model, label, mql) {
+      switch (label) {
+        case 'toolbar.narrow':
+          model.set({
+            'isOriented': mql.matches,
+            'isTrayToggleVisible': false
+          });
+          // If the toolbar doesn't have an explicit orientation yet, or if the
+          // narrow media query doesn't match then set the orientation to
+          // vertical.
+          if (!mql.matches || !model.get('orientation')) {
+            model.set({'orientation': 'vertical'}, {validate: true});
+          }
+          break;
+        case 'toolbar.standard':
+          model.set({
+            'isFixed': mql.matches
+          });
+          break;
+        case 'toolbar.wide':
+          model.set({
+            'orientation': ((mql.matches) ? 'horizontal' : 'vertical')
+          }, {validate: true});
+          // The tray orientation toggle visibility does not need to be
+          // validated.
+          model.set({
+            'isTrayToggleVisible': mql.matches
+          });
+          break;
+        default:
+          break;
+      }
+    }
+  };
+
+  /**
+   * A toggle is an interactive element often bound to a click handler.
+   *
+   * @return {String}
+   *   A string representing a DOM fragment.
+   */
+  Drupal.theme.toolbarOrientationToggle = function () {
+    return '<div class="toolbar-toggle-orientation"><div class="toolbar-lining">' +
+      '<button class="toolbar-icon" type="button"></button>' +
+      '</div></div>';
+  };
+
+}(jQuery, Drupal, drupalSettings));
+;
+/**
+ * @file
+ * A Backbone Model for collapsible menus.
+ */
+
+(function (Backbone, Drupal) {
+
+  "use strict";
+
+  /**
+   * Backbone Model for collapsible menus.
+   */
+  Drupal.toolbar.MenuModel = Backbone.Model.extend({
+    defaults: {
+      subtrees: {}
+    }
+  });
+
+}(Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone Model for the toolbar.
+ */
+
+(function (Backbone, Drupal) {
+
+  "use strict";
+
+  /**
+   * Backbone model for the toolbar.
+   */
+  Drupal.toolbar.ToolbarModel = Backbone.Model.extend({
+    defaults: {
+      // The active toolbar tab. All other tabs should be inactive under
+      // normal circumstances. It will remain active across page loads. The
+      // active item is stored as an ID selector e.g. '#toolbar-item--1'.
+      activeTab: null,
+      // Represents whether a tray is open or not. Stored as an ID selector e.g.
+      // '#toolbar-item--1-tray'.
+      activeTray: null,
+      // Indicates whether the toolbar is displayed in an oriented fashion,
+      // either horizontal or vertical.
+      isOriented: false,
+      // Indicates whether the toolbar is positioned absolute (false) or fixed
+      // (true).
+      isFixed: false,
+      // Menu subtrees are loaded through an AJAX request only when the Toolbar
+      // is set to a vertical orientation.
+      areSubtreesLoaded: false,
+      // If the viewport overflow becomes constrained, isFixed must be true so
+      // that elements in the trays aren't lost off-screen and impossible to
+      // get to.
+      isViewportOverflowConstrained: false,
+      // The orientation of the active tray.
+      orientation: 'vertical',
+      // A tray is locked if a user toggled it to vertical. Otherwise a tray
+      // will switch between vertical and horizontal orientation based on the
+      // configured breakpoints. The locked state will be maintained across page
+      // loads.
+      locked: false,
+      // Indicates whether the tray orientation toggle is visible.
+      isTrayToggleVisible: false,
+      // The height of the toolbar.
+      height: null,
+      // The current viewport offsets determined by Drupal.displace(). The
+      // offsets suggest how a module might position is components relative to
+      // the viewport.
+      offsets: {
+        top: 0,
+        right: 0,
+        bottom: 0,
+        left: 0
+      }
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    validate: function (attributes, options) {
+      // Prevent the orientation being set to horizontal if it is locked, unless
+      // override has not been passed as an option.
+      if (attributes.orientation === 'horizontal' && this.get('locked') && !options.override) {
+        return Drupal.t('The toolbar cannot be set to a horizontal orientation when it is locked.');
+      }
+    }
+  });
+
+}(Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone view for the body element.
+ */
+
+(function ($, Drupal, Backbone) {
+
+  "use strict";
+
+  /**
+   * Adjusts the body element with the toolbar position and dimension changes.
+   */
+  Drupal.toolbar.BodyVisualView = Backbone.View.extend({
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change:orientation change:offsets change:activeTray change:isOriented change:isFixed change:isViewportOverflowConstrained', this.render);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      var $body = $('body');
+      var orientation = this.model.get('orientation');
+      var isOriented = this.model.get('isOriented');
+      var isViewportOverflowConstrained = this.model.get('isViewportOverflowConstrained');
+
+      $body
+        // We are using JavaScript to control media-query handling for two
+        // reasons: (1) Using JavaScript let's us leverage the breakpoint
+        // configurations and (2) the CSS is really complex if we try to hide
+        // some styling from browsers that don't understand CSS media queries.
+        // If we drive the CSS from classes added through JavaScript,
+        // then the CSS becomes simpler and more robust.
+        .toggleClass('toolbar-vertical', (orientation === 'vertical'))
+        .toggleClass('toolbar-horizontal', (isOriented && orientation === 'horizontal'))
+        // When the toolbar is fixed, it will not scroll with page scrolling.
+        .toggleClass('toolbar-fixed', (isViewportOverflowConstrained || this.model.get('isFixed')))
+        // Toggle the toolbar-tray-open class on the body element. The class is
+        // applied when a toolbar tray is active. Padding might be applied to
+        // the body element to prevent the tray from overlapping content.
+        .toggleClass('toolbar-tray-open', !!this.model.get('activeTray'))
+        // Apply padding to the top of the body to offset the placement of the
+        // toolbar bar element.
+        .css('padding-top', this.model.get('offsets').top);
+    }
+  });
+
+}(jQuery, Drupal, Backbone));
+;
+/**
+ * @file
+ * A Backbone view for the collapsible menus.
+ */
+
+(function ($, Backbone, Drupal) {
+
+  "use strict";
+
+  /**
+   * Backbone View for collapsible menus.
+   */
+  Drupal.toolbar.MenuVisualView = Backbone.View.extend({
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change:subtrees', this.render);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      var subtrees = this.model.get('subtrees');
+      // Add subtrees.
+      for (var id in subtrees) {
+        if (subtrees.hasOwnProperty(id)) {
+          this.$el
+            .find('#toolbar-link-' + id)
+            .once('toolbar-subtrees')
+            .after(subtrees[id]);
+        }
+      }
+      // Render the main menu as a nested, collapsible accordion.
+      if ('drupalToolbarMenu' in $.fn) {
+        this.$el
+          .children('.menu')
+          .drupalToolbarMenu();
+      }
+    }
+  });
+
+}(jQuery, Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone view for the aural feedback of the toolbar.
+ */
+
+(function (Backbone, Drupal) {
+
+  "use strict";
+
+  /**
+   * Backbone view for the aural feedback of the toolbar.
+   */
+  Drupal.toolbar.ToolbarAuralView = Backbone.View.extend({
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      this.strings = options.strings;
+
+      this.listenTo(this.model, 'change:orientation', this.onOrientationChange);
+      this.listenTo(this.model, 'change:activeTray', this.onActiveTrayChange);
+    },
+
+    /**
+     * Announces an orientation change.
+     *
+     * @param Drupal.Toolbar.ToolbarModel model
+     * @param String orientation
+     *   The new value of the orientation attribute in the model.
+     */
+    onOrientationChange: function (model, orientation) {
+      Drupal.announce(Drupal.t('Tray orientation changed to @orientation.', {
+        '@orientation': orientation
+      }));
+    },
+
+    /**
+     * Announces a changed active tray.
+     *
+     * @param Drupal.Toolbar.ToolbarModel model
+     * @param Element orientation
+     *   The new value of the tray attribute in the model.
+     */
+    onActiveTrayChange: function (model, tray) {
+      var relevantTray = (tray === null) ? model.previous('activeTray') : tray;
+      var action = (tray === null) ? Drupal.t('closed') : Drupal.t('opened');
+      var trayNameElement = relevantTray.querySelector('.toolbar-tray-name');
+      var text;
+      if (trayNameElement !== null) {
+        text = Drupal.t('Tray "@tray" @action.', {
+          '@tray': trayNameElement.textContent, '@action': action
+        });
+      }
+      else {
+        text = Drupal.t('Tray @action.', {'@action': action});
+      }
+      Drupal.announce(text);
+    }
+  });
+
+}(Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone view for the toolbar element. Listens to mouse & touch.
+ */
+
+(function ($, Drupal, drupalSettings, Backbone) {
+
+  "use strict";
+
+  /**
+   * Backbone view for the toolbar element. Listens to mouse & touch.
+   */
+  Drupal.toolbar.ToolbarVisualView = Backbone.View.extend({
+
+    events: function () {
+      // Prevents delay and simulated mouse events.
+      var touchEndToClick = function (event) {
+        event.preventDefault();
+        event.target.click();
+      };
+
+      return {
+        'click .toolbar-bar .toolbar-tab': 'onTabClick',
+        'click .toolbar-toggle-orientation button': 'onOrientationToggleClick',
+        'touchend .toolbar-bar .toolbar-tab': touchEndToClick,
+        'touchend .toolbar-toggle-orientation button': touchEndToClick
+      };
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      this.strings = options.strings;
+
+      this.listenTo(this.model, 'change:activeTab change:orientation change:isOriented change:isTrayToggleVisible', this.render);
+      this.listenTo(this.model, 'change:mqMatches', this.onMediaQueryChange);
+      this.listenTo(this.model, 'change:offsets', this.adjustPlacement);
+
+      // Add the tray orientation toggles.
+      this.$el
+        .find('.toolbar-tray .toolbar-lining')
+        .append(Drupal.theme('toolbarOrientationToggle'));
+
+      // Trigger an activeTab change so that listening scripts can respond on
+      // page load. This will call render.
+      this.model.trigger('change:activeTab');
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      this.updateTabs();
+      this.updateTrayOrientation();
+      this.updateBarAttributes();
+      // Load the subtrees if the orientation of the toolbar is changed to
+      // vertical. This condition responds to the case that the toolbar switches
+      // from horizontal to vertical orientation. The toolbar starts in a
+      // vertical orientation by default and then switches to horizontal during
+      // initialization if the media query conditions are met. Simply checking
+      // that the orientation is vertical here would result in the subtrees
+      // always being loaded, even when the toolbar initialization ultimately
+      // results in a horizontal orientation.
+      //
+      // @see Drupal.behaviors.toolbar.attach() where admin menu subtrees
+      // loading is invoked during initialization after media query conditions
+      // have been processed.
+      if (this.model.changed.orientation === 'vertical' || this.model.changed.activeTab) {
+        this.loadSubtrees();
+      }
+      // Trigger a recalculation of viewport displacing elements. Use setTimeout
+      // to ensure this recalculation happens after changes to visual elements
+      // have processed.
+      window.setTimeout(function () {
+        Drupal.displace(true);
+      }, 0);
+      return this;
+    },
+
+    /**
+     * Responds to a toolbar tab click.
+     *
+     * @param jQuery.Event event
+     */
+    onTabClick: function (event) {
+      // If this tab has a tray associated with it, it is considered an
+      // activatable tab.
+      if (event.target.hasAttribute('data-toolbar-tray')) {
+        var activeTab = this.model.get('activeTab');
+        var clickedTab = event.target;
+
+        // Set the event target as the active item if it is not already.
+        this.model.set('activeTab', (!activeTab || clickedTab !== activeTab) ? clickedTab : null);
+
+        event.preventDefault();
+        event.stopPropagation();
+      }
+    },
+
+    /**
+     * Toggles the orientation of a toolbar tray.
+     *
+     * @param jQuery.Event event
+     */
+    onOrientationToggleClick: function (event) {
+      var orientation = this.model.get('orientation');
+      // Determine the toggle-to orientation.
+      var antiOrientation = (orientation === 'vertical') ? 'horizontal' : 'vertical';
+      var locked = (antiOrientation === 'vertical') ? true : false;
+      // Remember the locked state.
+      if (locked) {
+        localStorage.setItem('Drupal.toolbar.trayVerticalLocked', 'true');
+      }
+      else {
+        localStorage.removeItem('Drupal.toolbar.trayVerticalLocked');
+      }
+      // Update the model.
+      this.model.set({
+        locked: locked,
+        orientation: antiOrientation
+      }, {
+        validate: true,
+        override: true
+      });
+
+      event.preventDefault();
+      event.stopPropagation();
+    },
+
+    /**
+     * Updates the display of the tabs: toggles a tab and the associated tray.
+     */
+    updateTabs: function () {
+      var $tab = $(this.model.get('activeTab'));
+      // Deactivate the previous tab.
+      $(this.model.previous('activeTab'))
+        .removeClass('active')
+        .prop('aria-pressed', false);
+      // Deactivate the previous tray.
+      $(this.model.previous('activeTray'))
+        .removeClass('active');
+
+      // Activate the selected tab.
+      if ($tab.length > 0) {
+        $tab
+          .addClass('active')
+          // Mark the tab as pressed.
+          .prop('aria-pressed', true);
+        var name = $tab.attr('data-toolbar-tray');
+        // Store the active tab name or remove the setting.
+        var id = $tab.get(0).id;
+        if (id) {
+          localStorage.setItem('Drupal.toolbar.activeTabID', JSON.stringify(id));
+        }
+        // Activate the associated tray.
+        var $tray = this.$el.find('[data-toolbar-tray="' + name + '"].toolbar-tray');
+        if ($tray.length) {
+          $tray.addClass('active');
+          this.model.set('activeTray', $tray.get(0));
+        }
+        else {
+          // There is no active tray.
+          this.model.set('activeTray', null);
+        }
+      }
+      else {
+        // There is no active tray.
+        this.model.set('activeTray', null);
+        localStorage.removeItem('Drupal.toolbar.activeTabID');
+      }
+    },
+
+    /**
+     * Update the attributes of the toolbar bar element.
+     */
+    updateBarAttributes: function () {
+      var isOriented = this.model.get('isOriented');
+      if (isOriented) {
+        this.$el.find('.toolbar-bar').attr('data-offset-top', '');
+      }
+      else {
+        this.$el.find('.toolbar-bar').removeAttr('data-offset-top');
+      }
+      // Toggle between a basic vertical view and a more sophisticated
+      // horizontal and vertical display of the toolbar bar and trays.
+      this.$el.toggleClass('toolbar-oriented', isOriented);
+    },
+
+    /**
+     * Updates the orientation of the active tray if necessary.
+     */
+    updateTrayOrientation: function () {
+      var orientation = this.model.get('orientation');
+      // The antiOrientation is used to render the view of action buttons like
+      // the tray orientation toggle.
+      var antiOrientation = (orientation === 'vertical') ? 'horizontal' : 'vertical';
+      // Update the orientation of the trays.
+      var $trays = this.$el.find('.toolbar-tray')
+        .removeClass('toolbar-tray-horizontal toolbar-tray-vertical')
+        .addClass('toolbar-tray-' + orientation);
+
+      // Update the tray orientation toggle button.
+      var iconClass = 'toolbar-icon-toggle-' + orientation;
+      var iconAntiClass = 'toolbar-icon-toggle-' + antiOrientation;
+      var $orientationToggle = this.$el.find('.toolbar-toggle-orientation')
+        .toggle(this.model.get('isTrayToggleVisible'));
+      $orientationToggle.find('button')
+        .val(antiOrientation)
+        .attr('title', this.strings[antiOrientation])
+        .text(this.strings[antiOrientation])
+        .removeClass(iconClass)
+        .addClass(iconAntiClass);
+
+      // Update data offset attributes for the trays.
+      var dir = document.documentElement.dir;
+      var edge = (dir === 'rtl') ? 'right' : 'left';
+      // Remove data-offset attributes from the trays so they can be refreshed.
+      $trays.removeAttr('data-offset-left data-offset-right data-offset-top');
+      // If an active vertical tray exists, mark it as an offset element.
+      $trays.filter('.toolbar-tray-vertical.active').attr('data-offset-' + edge, '');
+      // If an active horizontal tray exists, mark it as an offset element.
+      $trays.filter('.toolbar-tray-horizontal.active').attr('data-offset-top', '');
+    },
+
+    /**
+     * Sets the tops of the trays so that they align with the bottom of the bar.
+     */
+    adjustPlacement: function () {
+      var $trays = this.$el.find('.toolbar-tray');
+      if (!this.model.get('isOriented')) {
+        $trays.css('padding-top', 0);
+        $trays.removeClass('toolbar-tray-horizontal').addClass('toolbar-tray-vertical');
+      }
+      else {
+        // The toolbar container is invisible. Its placement is used to
+        // determine the container for the trays.
+        $trays.css('padding-top', this.$el.find('.toolbar-bar').outerHeight());
+      }
+    },
+
+    /**
+     * Calls the endpoint URI that will return rendered subtrees with JSONP.
+     *
+     * The rendered admin menu subtrees HTML is cached on the client in
+     * localStorage until the cache of the admin menu subtrees on the server-
+     * side is invalidated. The subtreesHash is stored in localStorage as well
+     * and compared to the subtreesHash in drupalSettings to determine when the
+     * admin menu subtrees cache has been invalidated.
+     */
+    loadSubtrees: function () {
+      var $activeTab = $(this.model.get('activeTab'));
+      var orientation = this.model.get('orientation');
+      // Only load and render the admin menu subtrees if:
+      //   (1) They have not been loaded yet.
+      //   (2) The active tab is the administration menu tab, indicated by the
+      //       presence of the data-drupal-subtrees attribute.
+      //   (3) The orientation of the tray is vertical.
+      if (!this.model.get('areSubtreesLoaded') && typeof $activeTab.data('drupal-subtrees') !== 'undefined' && orientation === 'vertical') {
+        var subtreesHash = drupalSettings.toolbar.subtreesHash;
+        var langcode = drupalSettings.toolbar.langcode;
+        var endpoint = Drupal.url('toolbar/subtrees/' + subtreesHash + '/' + langcode);
+        var cachedSubtreesHash = localStorage.getItem('Drupal.toolbar.subtreesHash');
+        var cachedSubtrees = JSON.parse(localStorage.getItem('Drupal.toolbar.subtrees'));
+        var isVertical = this.model.get('orientation') === 'vertical';
+        // If we have the subtrees in localStorage and the subtree hash has not
+        // changed, then use the cached data.
+        if (isVertical && subtreesHash === cachedSubtreesHash && cachedSubtrees) {
+          Drupal.toolbar.setSubtrees.resolve(cachedSubtrees);
+        }
+        // Only make the call to get the subtrees if the orientation of the
+        // toolbar is vertical.
+        else if (isVertical) {
+          // Remove the cached menu information.
+          localStorage.removeItem('Drupal.toolbar.subtreesHash');
+          localStorage.removeItem('Drupal.toolbar.subtrees');
+          // The response from the server will call the resolve method of the
+          // Drupal.toolbar.setSubtrees Promise.
+          $.ajax(endpoint);
+          // Cache the hash for the subtrees locally.
+          localStorage.setItem('Drupal.toolbar.subtreesHash', subtreesHash);
+        }
+      }
+    }
+  });
+
+}(jQuery, Drupal, drupalSettings, Backbone));
+;
+/* jQuery Foundation Joyride Plugin 2.1 | Copyright 2012, ZURB | www.opensource.org/licenses/mit-license.php */
+(function(e,t,n){"use strict";var r={version:"2.0.3",tipLocation:"bottom",nubPosition:"auto",scroll:!0,scrollSpeed:300,timer:0,autoStart:!1,startTimerOnClick:!0,startOffset:0,nextButton:!0,tipAnimation:"fade",pauseAfter:[],tipAnimationFadeSpeed:300,cookieMonster:!1,cookieName:"joyride",cookieDomain:!1,cookiePath:!1,localStorage:!1,localStorageKey:"joyride",tipContainer:"body",modal:!1,expose:!1,postExposeCallback:e.noop,preRideCallback:e.noop,postRideCallback:e.noop,preStepCallback:e.noop,postStepCallback:e.noop,template:{link:'<a href="#close" class="joyride-close-tip">X</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" role="dialog"></div>',button:'<a href="#" class="joyride-next-tip"></a>',modal:'<div class="joyride-modal-bg"></div>',expose:'<div class="joyride-expose-wrapper"></div>',exposeCover:'<div class="joyride-expose-cover"></div>'}},i=i||!1,s={},o={init:function(n){return this.each(function(){e.isEmptyObject(s)?(s=e.extend(!0,r,n),s.document=t.document,s.$document=e(s.document),s.$window=e(t),s.$content_el=e(this),s.$body=e(s.tipContainer),s.body_offset=e(s.tipContainer).position(),s.$tip_content=e("> li",s.$content_el),s.paused=!1,s.attempts=0,s.tipLocationPatterns={top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},o.jquery_check(),e.isFunction(e.cookie)||(s.cookieMonster=!1),(!s.cookieMonster||!e.cookie(s.cookieName))&&(!s.localStorage||!o.support_localstorage()||!localStorage.getItem(s.localStorageKey))&&(s.$tip_content.each(function(t){o.create({$li:e(this),index:t})}),s.autoStart&&(!s.startTimerOnClick&&s.timer>0?(o.show("init"),o.startTimer()):o.show("init"))),s.$document.on("click.joyride",".joyride-next-tip, .joyride-modal-bg",function(e){e.preventDefault(),s.$li.next().length<1?o.end():s.timer>0?(clearTimeout(s.automate),o.hide(),o.show(),o.startTimer()):(o.hide(),o.show())}),s.$document.on("click.joyride",".joyride-close-tip",function(e){e.preventDefault(),o.end()}),s.$window.bind("resize.joyride",function(t){if(s.$li){if(s.exposed&&s.exposed.length>0){var n=e(s.exposed);n.each(function(){var t=e(this);o.un_expose(t),o.expose(t)})}o.is_phone()?o.pos_phone():o.pos_default()}})):o.restart()})},resume:function(){o.set_li(),o.show()},nextTip:function(){s.$li.next().length<1?o.end():s.timer>0?(clearTimeout(s.automate),o.hide(),o.show(),o.startTimer()):(o.hide(),o.show())},tip_template:function(t){var n,r,i;return t.tip_class=t.tip_class||"",n=e(s.template.tip).addClass(t.tip_class),r=e.trim(e(t.li).html())+o.button_text(t.button_text)+s.template.link+o.timer_instance(t.index),i=e(s.template.wrapper),t.li.attr("data-aria-labelledby")&&i.attr("aria-labelledby",t.li.attr("data-aria-labelledby")),t.li.attr("data-aria-describedby")&&i.attr("aria-describedby",t.li.attr("data-aria-describedby")),n.append(i),n.first().attr("data-index",t.index),e(".joyride-content-wrapper",n).append(r),n[0]},timer_instance:function(t){var n;return t===0&&s.startTimerOnClick&&s.timer>0||s.timer===0?n="":n=o.outerHTML(e(s.template.timer)[0]),n},button_text:function(t){return s.nextButton?(t=e.trim(t)||"Next",t=o.outerHTML(e(s.template.button).append(t)[0])):t="",t},create:function(t){var n=t.$li.attr("data-button")||t.$li.attr("data-text"),r=t.$li.attr("class"),i=e(o.tip_template({tip_class:r,index:t.index,button_text:n,li:t.$li}));e(s.tipContainer).append(i)},show:function(t){var r={},i,u=[],a=0,f,l=null;if(s.$li===n||e.inArray(s.$li.index(),s.pauseAfter)===-1){s.paused?s.paused=!1:o.set_li(t),s.attempts=0;if(s.$li.length&&s.$target.length>0){t&&(s.preRideCallback(s.$li.index(),s.$next_tip),s.modal&&o.show_modal()),s.preStepCallback(s.$li.index(),s.$next_tip),u=(s.$li.data("options")||":").split(";"),a=u.length;for(i=a-1;i>=0;i--)f=u[i].split(":"),f.length===2&&(r[e.trim(f[0])]=e.trim(f[1]));s.tipSettings=e.extend({},s,r),s.tipSettings.tipLocationPattern=s.tipLocationPatterns[s.tipSettings.tipLocation],s.modal&&s.expose&&o.expose(),!/body/i.test(s.$target.selector)&&s.scroll&&o.scroll_to(),o.is_phone()?o.pos_phone(!0):o.pos_default(!0),l=e(".joyride-timer-indicator",s.$next_tip),/pop/i.test(s.tipAnimation)?(l.outerWidth(0),s.timer>0?(s.$next_tip.show(),l.animate({width:e(".joyride-timer-indicator-wrap",s.$next_tip).outerWidth()},s.timer)):s.$next_tip.show()):/fade/i.test(s.tipAnimation)&&(l.outerWidth(0),s.timer>0?(s.$next_tip.fadeIn(s.tipAnimationFadeSpeed),s.$next_tip.show(),l.animate({width:e(".joyride-timer-indicator-wrap",s.$next_tip).outerWidth()},s.timer)):s.$next_tip.fadeIn(s.tipAnimationFadeSpeed)),s.$current_tip=s.$next_tip,e(".joyride-next-tip",s.$current_tip).focus(),o.tabbable(s.$current_tip)}else s.$li&&s.$target.length<1?o.show():o.end()}else s.paused=!0},is_phone:function(){return i?i.mq("only screen and (max-width: 767px)"):s.$window.width()<767?!0:!1},support_localstorage:function(){return i?i.localstorage:!!t.localStorage},hide:function(){s.modal&&s.expose&&o.un_expose(),s.modal||e(".joyride-modal-bg").hide(),s.$current_tip.hide(),s.postStepCallback(s.$li.index(),s.$current_tip)},set_li:function(e){e?(s.$li=s.$tip_content.eq(s.startOffset),o.set_next_tip(),s.$current_tip=s.$next_tip):(s.$li=s.$li.next(),o.set_next_tip()),o.set_target()},set_next_tip:function(){s.$next_tip=e(".joyride-tip-guide[data-index="+s.$li.index()+"]")},set_target:function(){var t=s.$li.attr("data-class"),n=s.$li.attr("data-id"),r=function(){return n?e(s.document.getElementById(n)):t?e("."+t).filter(":visible").first():e("body")};s.$target=r()},scroll_to:function(){var t,n;t=s.$window.height()/2,n=Math.ceil(s.$target.offset().top-t+s.$next_tip.outerHeight()),e("html, body").stop().animate({scrollTop:n},s.scrollSpeed)},paused:function(){return e.inArray(s.$li.index()+1,s.pauseAfter)===-1?!0:!1},destroy:function(){e.isEmptyObject(s)||s.$document.off(".joyride"),e(t).off(".joyride"),e(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),e(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(s.automate),s={}},restart:function(){s.autoStart?(o.hide(),s.$li=n,o.show("init")):(!s.startTimerOnClick&&s.timer>0?(o.show("init"),o.startTimer()):o.show("init"),s.autoStart=!0)},pos_default:function(t){var n=Math.ceil(s.$window.height()/2),r=s.$next_tip.offset(),i=e(".joyride-nub",s.$next_tip),u=Math.ceil(i.outerWidth()/2),a=Math.ceil(i.outerHeight()/2),f=t||!1;f&&(s.$next_tip.css("visibility","hidden"),s.$next_tip.show());if(!/body/i.test(s.$target.selector)){var l=s.tipSettings.tipAdjustmentY?parseInt(s.tipSettings.tipAdjustmentY):0,c=s.tipSettings.tipAdjustmentX?parseInt(s.tipSettings.tipAdjustmentX):0;o.bottom()?(s.$next_tip.css({top:s.$target.offset().top+a+s.$target.outerHeight()+l,left:s.$target.offset().left+c}),/right/i.test(s.tipSettings.nubPosition)&&s.$next_tip.css("left",s.$target.offset().left-s.$next_tip.outerWidth()+s.$target.outerWidth()),o.nub_position(i,s.tipSettings.nubPosition,"top")):o.top()?(s.$next_tip.css({top:s.$target.offset().top-s.$next_tip.outerHeight()-a+l,left:s.$target.offset().left+c}),o.nub_position(i,s.tipSettings.nubPosition,"bottom")):o.right()?(s.$next_tip.css({top:s.$target.offset().top+l,left:s.$target.outerWidth()+s.$target.offset().left+u+c}),o.nub_position(i,s.tipSettings.nubPosition,"left")):o.left()&&(s.$next_tip.css({top:s.$target.offset().top+l,left:s.$target.offset().left-s.$next_tip.outerWidth()-u+c}),o.nub_position(i,s.tipSettings.nubPosition,"right")),!o.visible(o.corners(s.$next_tip))&&s.attempts<s.tipSettings.tipLocationPattern.length&&(i.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),s.tipSettings.tipLocation=s.tipSettings.tipLocationPattern[s.attempts],s.attempts++,o.pos_default(!0))}else s.$li.length&&o.pos_modal(i);f&&(s.$next_tip.hide(),s.$next_tip.css("visibility","visible"))},pos_phone:function(t){var n=s.$next_tip.outerHeight(),r=s.$next_tip.offset(),i=s.$target.outerHeight(),u=e(".joyride-nub",s.$next_tip),a=Math.ceil(u.outerHeight()/2),f=t||!1;u.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),f&&(s.$next_tip.css("visibility","hidden"),s.$next_tip.show()),/body/i.test(s.$target.selector)?s.$li.length&&o.pos_modal(u):o.top()?(s.$next_tip.offset({top:s.$target.offset().top-n-a}),u.addClass("bottom")):(s.$next_tip.offset({top:s.$target.offset().top+i+a}),u.addClass("top")),f&&(s.$next_tip.hide(),s.$next_tip.css("visibility","visible"))},pos_modal:function(e){o.center(),e.hide(),o.show_modal()},show_modal:function(){e(".joyride-modal-bg").length<1&&e("body").append(s.template.modal).show(),/pop/i.test(s.tipAnimation)?e(".joyride-modal-bg").show():e(".joyride-modal-bg").fadeIn(s.tipAnimationFadeSpeed)},expose:function(){var n,r,i,u,a="expose-"+Math.floor(Math.random()*1e4);if(arguments.length>0&&arguments[0]instanceof e)i=arguments[0];else{if(!s.$target||!!/body/i.test(s.$target.selector))return!1;i=s.$target}if(i.length<1)return t.console&&console.error("element not valid",i),!1;n=e(s.template.expose),s.$body.append(n),n.css({top:i.offset().top,left:i.offset().left,width:i.outerWidth(!0),height:i.outerHeight(!0)}),r=e(s.template.exposeCover),u={zIndex:i.css("z-index"),position:i.css("position")},i.css("z-index",n.css("z-index")*1+1),u.position=="static"&&i.css("position","relative"),i.data("expose-css",u),r.css({top:i.offset().top,left:i.offset().left,width:i.outerWidth(!0),height:i.outerHeight(!0)}),s.$body.append(r),n.addClass(a),r.addClass(a),s.tipSettings.exposeClass&&(n.addClass(s.tipSettings.exposeClass),r.addClass(s.tipSettings.exposeClass)),i.data("expose",a),s.postExposeCallback(s.$li.index(),s.$next_tip,i),o.add_exposed(i)},un_expose:function(){var n,r,i,u,a=!1;if(arguments.length>0&&arguments[0]instanceof e)r=arguments[0];else{if(!s.$target||!!/body/i.test(s.$target.selector))return!1;r=s.$target}if(r.length<1)return t.console&&console.error("element not valid",r),!1;n=r.data("expose"),i=e("."+n),arguments.length>1&&(a=arguments[1]),a===!0?e(".joyride-expose-wrapper,.joyride-expose-cover").remove():i.remove(),u=r.data("expose-css"),u.zIndex=="auto"?r.css("z-index",""):r.css("z-index",u.zIndex),u.position!=r.css("position")&&(u.position=="static"?r.css("position",""):r.css("position",u.position)),r.removeData("expose"),r.removeData("expose-z-index"),o.remove_exposed(r)},add_exposed:function(t){s.exposed=s.exposed||[],t instanceof e?s.exposed.push(t[0]):typeof t=="string"&&s.exposed.push(t)},remove_exposed:function(t){var n;t instanceof e?n=t[0]:typeof t=="string"&&(n=t),s.exposed=s.exposed||[];for(var r=0;r<s.exposed.length;r++)if(s.exposed[r]==n){s.exposed.splice(r,1);return}},center:function(){var e=s.$window;return s.$next_tip.css({top:(e.height()-s.$next_tip.outerHeight())/2+e.scrollTop(),left:(e.width()-s.$next_tip.outerWidth())/2+e.scrollLeft()}),!0},bottom:function(){return/bottom/i.test(s.tipSettings.tipLocation)},top:function(){return/top/i.test(s.tipSettings.tipLocation)},right:function(){return/right/i.test(s.tipSettings.tipLocation)},left:function(){return/left/i.test(s.tipSettings.tipLocation)},corners:function(e){var t=s.$window,n=t.height()/2,r=Math.ceil(s.$target.offset().top-n+s.$next_tip.outerHeight()),i=t.width()+t.scrollLeft(),o=t.height()+r,u=t.height()+t.scrollTop(),a=t.scrollTop();return r<a&&(r<0?a=0:a=r),o>u&&(u=o),[e.offset().top<a,i<e.offset().left+e.outerWidth(),u<e.offset().top+e.outerHeight(),t.scrollLeft()>e.offset().left]},visible:function(e){var t=e.length;while(t--)if(e[t])return!1;return!0},nub_position:function(e,t,n){t==="auto"?e.addClass(n):e.addClass(t)},startTimer:function(){s.$li.length?s.automate=setTimeout(function(){o.hide(),o.show(),o.startTimer()},s.timer):clearTimeout(s.automate)},end:function(){s.cookieMonster&&e.cookie(s.cookieName,"ridden",{expires:365,domain:s.cookieDomain,path:s.cookiePath}),s.localStorage&&localStorage.setItem(s.localStorageKey,!0),s.timer>0&&clearTimeout(s.automate),s.modal&&s.expose&&o.un_expose(),s.$current_tip&&s.$current_tip.hide(),s.$li&&(s.postStepCallback(s.$li.index(),s.$current_tip),s.postRideCallback(s.$li.index(),s.$current_tip)),e(".joyride-modal-bg").hide()},jquery_check:function(){return e.isFunction(e.fn.on)?!0:(e.fn.on=function(e,t,n){return this.delegate(t,e,n)},e.fn.off=function(e,t,n){return this.undelegate(t,e,n)},!1)},outerHTML:function(e){return e.outerHTML||(new XMLSerializer).serializeToString(e)},version:function(){return s.version},tabbable:function(t){e(t).on("keydown",function(n){if(!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===27){n.preventDefault(),o.end();return}if(n.keyCode!==9)return;var r=e(t).find(":tabbable"),i=r.filter(":first"),s=r.filter(":last");n.target===s[0]&&!n.shiftKey?(i.focus(1),n.preventDefault()):n.target===i[0]&&n.shiftKey&&(s.focus(1),n.preventDefault())})}};e.fn.joyride=function(t){if(o[t])return o[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return o.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.joyride")}})(jQuery,this);
+;
+/**
+ * @file
+ * Attaches behaviors for the Tour module's toolbar tab.
+ */
+
+(function ($, Backbone, Drupal, document) {
+
+  "use strict";
+
+  var queryString = decodeURI(window.location.search);
+
+  /**
+   * Attaches the tour's toolbar tab behavior.
+   *
+   * It uses the query string for:
+   * - tour: When ?tour=1 is present, the tour will start automatically
+   *         after the page has loaded.
+   * - tips: Pass ?tips=class in the url to filter the available tips to
+   *         the subset which match the given class.
+   *
+   * Example:
+   *   http://example.com/foo?tour=1&tips=bar
+   */
+  Drupal.behaviors.tour = {
+    attach: function (context) {
+      $('body').once('tour', function (index, element) {
+        var model = new Drupal.tour.models.StateModel();
+        new Drupal.tour.views.ToggleTourView({
+          el: $(context).find('#toolbar-tab-tour'),
+          model: model
+        });
+
+        model
+          // Allow other scripts to respond to tour events.
+          .on('change:isActive', function (model, isActive) {
+            $(document).trigger((isActive) ? 'drupalTourStarted' : 'drupalTourStopped');
+          })
+          // Initialization: check whether a tour is available on the current page.
+          .set('tour', $(context).find('ol#tour'));
+
+        // Start the tour immediately if toggled via query string.
+        if (/tour=?/i.test(queryString)) {
+          model.set('isActive', true);
+        }
+
+      });
+    }
+  };
+
+  Drupal.tour = Drupal.tour || {models: {}, views: {}};
+
+  /**
+   * Backbone Model for tours.
+   */
+  Drupal.tour.models.StateModel = Backbone.Model.extend({
+    defaults: {
+      // Indicates whether the Drupal root window has a tour.
+      tour: [],
+      // Indicates whether the tour is currently running.
+      isActive: false,
+      // Indicates which tour is the active one (necessary to cleanly stop).
+      activeTour: []
+    }
+  });
+
+  /**
+   * Handles edit mode toggle interactions.
+   */
+  Drupal.tour.views.ToggleTourView = Backbone.View.extend({
+
+    events: {'click': 'onClick'},
+
+    /**
+     * Implements Backbone Views' initialize().
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change:tour change:isActive', this.render);
+      this.listenTo(this.model, 'change:isActive', this.toggleTour);
+    },
+
+    /**
+     * Implements Backbone Views' render().
+     */
+    render: function () {
+      // Render the visibility.
+      this.$el.toggleClass('hidden', this._getTour().length === 0);
+      // Render the state.
+      var isActive = this.model.get('isActive');
+      this.$el.find('button')
+        .toggleClass('active', isActive)
+        .prop('aria-pressed', isActive);
+      return this;
+    },
+
+    /**
+     * Model change handler; starts or stops the tour.
+     */
+    toggleTour: function () {
+      if (this.model.get('isActive')) {
+        var $tour = this._getTour();
+        this._removeIrrelevantTourItems($tour, this._getDocument());
+        var that = this;
+        if ($tour.find('li').length) {
+          $tour.joyride({
+            autoStart: true,
+            postRideCallback: function () { that.model.set('isActive', false); },
+            template: { // HTML segments for tip layout
+              link: '<a href=\"#close\" class=\"joyride-close-tip\">&times;</a>',
+              button: '<a href=\"#\" class=\"button button--primary joyride-next-tip\"></a>'
+            }
+          });
+          this.model.set({isActive: true, activeTour: $tour});
+        }
+      }
+      else {
+        this.model.get('activeTour').joyride('destroy');
+        this.model.set({isActive: false, activeTour: []});
+      }
+    },
+
+    /**
+     * Toolbar tab click event handler; toggles isActive.
+     */
+    onClick: function (event) {
+      this.model.set('isActive', !this.model.get('isActive'));
+      event.preventDefault();
+      event.stopPropagation();
+    },
+
+    /**
+     * Gets the tour.
+     *
+     * @return jQuery
+     *   A jQuery element pointing to a <ol> containing tour items.
+     */
+    _getTour: function () {
+      return this.model.get('tour');
+    },
+
+    /**
+     * Gets the relevant document as a jQuery element.
+     *
+     * @return jQuery
+     *   A jQuery element pointing to the document within which a tour would be
+     *   started given the current state.
+     */
+    _getDocument: function () {
+      return $(document);
+    },
+
+    /**
+     * Removes tour items for elements that don't have matching page elements or
+     * are explicitly filtered out via the 'tips' query string.
+     *
+     * Example:
+     *   http://example.com/foo?tips=bar
+     *
+     *   The above will filter out tips that do not have a matching page element or
+     *   don't have the "bar" class.
+     *
+     * @param jQuery $tour
+     *   A jQuery element pointing to a <ol> containing tour items.
+     * @param jQuery $document
+     *   A jQuery element pointing to the document within which the elements
+     *   should be sought.
+     *
+     * @see _getDocument()
+     */
+    _removeIrrelevantTourItems: function ($tour, $document) {
+      var removals = false;
+      var tips = /tips=([^&]+)/.exec(queryString);
+      $tour
+        .find('li')
+        .each(function () {
+          var $this = $(this);
+          var itemId = $this.attr('data-id');
+          var itemClass = $this.attr('data-class');
+          // If the query parameter 'tips' is set, remove all tips that don't
+          // have the matching class.
+          if (tips && !$(this).hasClass(tips[1])) {
+            removals = true;
+            $this.remove();
+            return;
+          }
+          // Remove tip from the DOM if there is no corresponding page element.
+          if ((!itemId && !itemClass) ||
+            (itemId && $document.find('#' + itemId).length) ||
+            (itemClass && $document.find('.' + itemClass).length)) {
+            return;
+          }
+          removals = true;
+          $this.remove();
+        });
+
+      // If there were removals, we'll have to do some clean-up.
+      if (removals) {
+        var total = $tour.find('li').length;
+        if (!total) {
+          this.model.set({tour: []});
+        }
+
+        $tour
+          .find('li')
+          // Rebuild the progress data.
+          .each(function (index) {
+            var progress = Drupal.t('!tour_item of !total', {'!tour_item': index + 1, '!total': total});
+            $(this).find('.tour-progress').text(progress);
+          })
+          // Update the last item to have "End tour" as the button.
+          .last()
+          .attr('data-text', Drupal.t('End tour'));
+      }
+    }
+
+  });
+
+})(jQuery, Backbone, Drupal, document);
+;
+/**
+ * @file
+ * Manages page tabbing modifications made by modules.
+ */
+
+(function ($, Drupal) {
+
+  "use strict";
+
+  /**
+   * Provides an API for managing page tabbing order modifications.
+   */
+  function TabbingManager() {
+    // Tabbing sets are stored as a stack. The active set is at the top of the
+    // stack. We use a JavaScript array as if it were a stack; we consider the
+    // first element to be the bottom and the last element to be the top. This
+    // allows us to use JavaScript's built-in Array.push() and Array.pop()
+    // methods.
+    this.stack = [];
+  }
+
+  /**
+   * Add public methods to the TabbingManager class.
+   */
+  $.extend(TabbingManager.prototype, {
+    /**
+     * Constrain tabbing to the specified set of elements only.
+     *
+     * Makes elements outside of the specified set of elements unreachable via the
+     * tab key.
+     *
+     * @param jQuery elements
+     *   The set of elements to which tabbing should be constrained. Can also be
+     *   a jQuery-compatible selector string.
+     *
+     * @return TabbingContext
+     */
+    constrain: function (elements) {
+      // Deactivate all tabbingContexts to prepare for the new constraint. A
+      // tabbingContext instance will only be reactivated if the stack is unwound
+      // to it in the _unwindStack() method.
+      for (var i = 0, il = this.stack.length; i < il; i++) {
+        this.stack[i].deactivate();
+      }
+
+      // The "active tabbing set" are the elements tabbing should be constrained
+      // to.
+      var $elements = $(elements).find(':tabbable').addBack(':tabbable');
+
+      var tabbingContext = new TabbingContext({
+        // The level is the current height of the stack before this new
+        // tabbingContext is pushed on top of the stack.
+        level: this.stack.length,
+        $tabbableElements: $elements
+      });
+
+      this.stack.push(tabbingContext);
+
+      // Activates the tabbingContext; this will manipulate the DOM to constrain
+      // tabbing.
+      tabbingContext.activate();
+
+      // Allow modules to respond to the constrain event.
+      $(document).trigger('drupalTabbingConstrained', tabbingContext);
+
+      return tabbingContext;
+    },
+
+    /**
+     * Restores a former tabbingContext when an active tabbingContext is released.
+     *
+     * The TabbingManager stack of tabbingContext instances will be unwound from
+     * the top-most released tabbingContext down to the first non-released
+     * tabbingContext instance. This non-released instance is then activated.
+     */
+    release: function () {
+      // Unwind as far as possible: find the topmost non-released tabbingContext.
+      var toActivate = this.stack.length - 1;
+      while (toActivate >= 0 && this.stack[toActivate].released) {
+        toActivate--;
+      }
+
+      // Delete all tabbingContexts after the to be activated one. They have
+      // already been deactivated, so their effect on the DOM has been reversed.
+      this.stack.splice(toActivate + 1);
+
+      // Get topmost tabbingContext, if one exists, and activate it.
+      if (toActivate >= 0) {
+        this.stack[toActivate].activate();
+      }
+    },
+
+    /**
+     * Makes all elements outside the of the tabbingContext's set untabbable.
+     *
+     * Elements made untabbable have their original tabindex and autofocus values
+     * stored so that they might be restored later when this tabbingContext
+     * is deactivated.
+     *
+     * @param TabbingContext tabbingContext
+     *   The TabbingContext instance that has been activated.
+     */
+    activate: function (tabbingContext) {
+      var $set = tabbingContext.$tabbableElements;
+      var level = tabbingContext.level;
+      // Determine which elements are reachable via tabbing by default.
+      var $disabledSet = $(':tabbable')
+        // Exclude elements of the active tabbing set.
+        .not($set);
+      // Set the disabled set on the tabbingContext.
+      tabbingContext.$disabledElements = $disabledSet;
+      // Record the tabindex for each element, so we can restore it later.
+      for (var i = 0, il = $disabledSet.length; i < il; i++) {
+        this.recordTabindex($disabledSet.eq(i), level);
+      }
+      // Make all tabbable elements outside of the active tabbing set unreachable.
+      $disabledSet
+        .prop('tabindex', -1)
+        .prop('autofocus', false);
+
+      // Set focus on an element in the tabbingContext's set of tabbable elements.
+      // First, check if there is an element with an autofocus attribute. Select
+      // the last one from the DOM order.
+      var $hasFocus = $set.filter('[autofocus]').eq(-1);
+      // If no element in the tabbable set has an autofocus attribute, select the
+      // first element in the set.
+      if ($hasFocus.length === 0) {
+        $hasFocus = $set.eq(0);
+      }
+      $hasFocus.trigger('focus');
+    },
+
+    /**
+     * Restores that tabbable state of a tabbingContext's disabled elements.
+     *
+     * Elements that were made untabbable have their original tabindex and autofocus
+     * values restored.
+     *
+     * @param TabbingContext tabbingContext
+     *   The TabbingContext instance that has been deactivated.
+     */
+    deactivate: function (tabbingContext) {
+      var $set = tabbingContext.$disabledElements;
+      var level = tabbingContext.level;
+      for (var i = 0, il = $set.length; i < il; i++) {
+        this.restoreTabindex($set.eq(i), level);
+      }
+    },
+
+    /**
+     * Records the tabindex and autofocus values of an untabbable element.
+     *
+     * @param jQuery $set
+     *   The set of elements that have been disabled.
+     * @param Number level
+     *   The stack level for which the tabindex attribute should be recorded.
+     */
+    recordTabindex: function ($el, level) {
+      var tabInfo = $el.data('drupalOriginalTabIndices') || {};
+      tabInfo[level] = {
+        tabindex: $el[0].getAttribute('tabindex'),
+        autofocus: $el[0].hasAttribute('autofocus')
+      };
+      $el.data('drupalOriginalTabIndices', tabInfo);
+    },
+
+    /**
+     * Restores the tabindex and autofocus values of a reactivated element.
+     *
+     * @param jQuery $el
+     *   The element that is being reactivated.
+     * @param Number level
+     *   The stack level for which the tabindex attribute should be restored.
+     */
+    restoreTabindex: function ($el, level) {
+      var tabInfo = $el.data('drupalOriginalTabIndices');
+      if (tabInfo && tabInfo[level]) {
+        var data = tabInfo[level];
+        if (data.tabindex) {
+          $el[0].setAttribute('tabindex', data.tabindex);
+        }
+        // If the element did not have a tabindex at this stack level then
+        // remove it.
+        else {
+          $el[0].removeAttribute('tabindex');
+        }
+        if (data.autofocus) {
+          $el[0].setAttribute('autofocus', 'autofocus');
+        }
+
+        // Clean up $.data.
+        if (level === 0) {
+          // Remove all data.
+          $el.removeData('drupalOriginalTabIndices');
+        }
+        else {
+          // Remove the data for this stack level and higher.
+          var levelToDelete = level;
+          while (tabInfo.hasOwnProperty(levelToDelete)) {
+            delete tabInfo[levelToDelete];
+            levelToDelete++;
+          }
+          $el.data('drupalOriginalTabIndices', tabInfo);
+        }
+      }
+    }
+  });
+
+  /**
+   * Stores a set of tabbable elements.
+   *
+   * This constraint can be removed with the release() method.
+   *
+   * @param Object options
+   *   A set of initiating values that include:
+   *   - Number level: The level in the TabbingManager's stack of this
+   *   tabbingContext.
+   *   - jQuery $tabbableElements: The DOM elements that should be reachable via
+   *   the tab key when this tabbingContext is active.
+   *   - jQuery $disabledElements: The DOM elements that should not be reachable
+   *   via the tab key when this tabbingContext is active.
+   *   - Boolean released: A released tabbingContext can never be activated again.
+   *   It will be cleaned up when the TabbingManager unwinds its stack.
+   *   - Boolean active: When true, the tabbable elements of this tabbingContext
+   *   will be reachable via the tab key and the disabled elements will not. Only
+   *   one tabbingContext can be active at a time.
+   */
+  function TabbingContext(options) {
+    $.extend(this, {
+      level: null,
+      $tabbableElements: $(),
+      $disabledElements: $(),
+      released: false,
+      active: false
+    }, options);
+  }
+
+  /**
+   * Add public methods to the TabbingContext class.
+   */
+  $.extend(TabbingContext.prototype, {
+    /**
+     * Releases this TabbingContext.
+     *
+     * Once a TabbingContext object is released, it can never be activated again.
+     */
+    release: function () {
+      if (!this.released) {
+        this.deactivate();
+        this.released = true;
+        Drupal.tabbingManager.release(this);
+        // Allow modules to respond to the tabbingContext release event.
+        $(document).trigger('drupalTabbingContextReleased', this);
+      }
+    },
+
+    /**
+     * Activates this TabbingContext.
+     */
+    activate: function () {
+      // A released TabbingContext object can never be activated again.
+      if (!this.active && !this.released) {
+        this.active = true;
+        Drupal.tabbingManager.activate(this);
+        // Allow modules to respond to the constrain event.
+        $(document).trigger('drupalTabbingContextActivated', this);
+      }
+    },
+
+    /**
+     * Deactivates this TabbingContext.
+     */
+    deactivate: function () {
+      if (this.active) {
+        this.active = false;
+        Drupal.tabbingManager.deactivate(this);
+        // Allow modules to respond to the constrain event.
+        $(document).trigger('drupalTabbingContextDeactivated', this);
+      }
+    }
+  });
+
+  // Mark this behavior as processed on the first pass and return if it is
+  // already processed.
+  if (Drupal.tabbingManager) {
+    return;
+  }
+  Drupal.tabbingManager = new TabbingManager();
+
+}(jQuery, Drupal));
+;
+/**
+ * @file
+ * Attaches behaviors for the Contextual module's edit toolbar tab.
+ */
+
+(function ($, Drupal, Backbone) {
+
+  "use strict";
+
+  var strings = {
+    tabbingReleased: Drupal.t('Tabbing is no longer constrained by the Contextual module.'),
+    tabbingConstrained: Drupal.t('Tabbing is constrained to a set of @contextualsCount and the edit mode toggle.'),
+    pressEsc: Drupal.t('Press the esc key to exit.')
+  };
+
+  /**
+   * Initializes a contextual link: updates its DOM, sets up model and views
+   *
+   * @param DOM links
+   *   A contextual links DOM element as rendered by the server.
+   */
+  function initContextualToolbar(context) {
+    if (!Drupal.contextual || !Drupal.contextual.collection) {
+      return;
+    }
+
+    var contextualToolbar = Drupal.contextualToolbar;
+    var model = contextualToolbar.model = new contextualToolbar.StateModel({
+      // Checks whether localStorage indicates we should start in edit mode
+      // rather than view mode.
+      // @see Drupal.contextualToolbar.VisualView.persist()
+      isViewing: localStorage.getItem('Drupal.contextualToolbar.isViewing') !== 'false'
+    }, {
+      contextualCollection: Drupal.contextual.collection
+    });
+
+    var viewOptions = {
+      el: $('.toolbar .toolbar-bar .contextual-toolbar-tab'),
+      model: model,
+      strings: strings
+    };
+    new contextualToolbar.VisualView(viewOptions);
+    new contextualToolbar.AuralView(viewOptions);
+  }
+
+  /**
+   * Attaches contextual's edit toolbar tab behavior.
+   */
+  Drupal.behaviors.contextualToolbar = {
+    attach: function (context) {
+      if ($('body').once('contextualToolbar-init').length) {
+        initContextualToolbar(context);
+      }
+    }
+  };
+
+  Drupal.contextualToolbar = {
+    // The Drupal.contextualToolbar.Model instance.
+    model: null
+  };
+
+})(jQuery, Drupal, Backbone);
+;
+/**
+ * @file
+ * A Backbone Model for the state of Contextual module's edit toolbar tab.
+ */
+
+(function (Drupal, Backbone) {
+
+  "use strict";
+
+  /**
+   * Models the state of the edit mode toggle.
+   */
+  Drupal.contextualToolbar.StateModel = Backbone.Model.extend({
+
+    defaults: {
+      // Indicates whether the toggle is currently in "view" or "edit" mode.
+      isViewing: true,
+      // Indicates whether the toggle should be visible or hidden. Automatically
+      // calculated, depends on contextualCount.
+      isVisible: false,
+      // Tracks how many contextual links exist on the page.
+      contextualCount: 0,
+      // A TabbingContext object as returned by Drupal.TabbingManager: the set
+      // of tabbable elements when edit mode is enabled.
+      tabbingContext: null
+    },
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Object attrs
+     * @param Object options
+     *   An object with the following option:
+     *     - Backbone.collection contextualCollection: the collection of
+     *       Drupal.contextual.StateModel models that represent the contextual
+     *       links on the page.
+     */
+    initialize: function (attrs, options) {
+      // Respond to new/removed contextual links.
+      this.listenTo(options.contextualCollection, {
+        'reset remove add': this.countCountextualLinks,
+        'add': this.lockNewContextualLinks
+      });
+
+      this.listenTo(this, {
+        // Automatically determine visibility.
+        'change:contextualCount': this.updateVisibility,
+        // Whenever edit mode is toggled, lock all contextual links.
+        'change:isViewing': function (model, isViewing) {
+          options.contextualCollection.each(function (contextualModel) {
+            contextualModel.set('isLocked', !isViewing);
+          });
+        }
+      });
+    },
+
+    /**
+     * Tracks the number of contextual link models in the collection.
+     *
+     * @param Drupal.contextual.StateModel contextualModel
+     *   The contextual links model that was added or removed.
+     * @param Backbone.Collection contextualCollection
+     *    The collection of contextual link models.
+     */
+    countCountextualLinks: function (contextualModel, contextualCollection) {
+      this.set('contextualCount', contextualCollection.length);
+    },
+
+    /**
+     * Lock newly added contextual links if edit mode is enabled.
+     *
+     * @param Drupal.contextual.StateModel contextualModel
+     *   The contextual links model that was added.
+     * @param Backbone.Collection contextualCollection
+     *    The collection of contextual link models.
+     */
+    lockNewContextualLinks: function (contextualModel, contextualCollection) {
+      if (!this.get('isViewing')) {
+        contextualModel.set('isLocked', true);
+      }
+    },
+
+    /**
+     * Automatically updates visibility of the view/edit mode toggle.
+     */
+    updateVisibility: function () {
+      this.set('isVisible', this.get('contextualCount') > 0);
+    }
+
+  });
+
+})(Drupal, Backbone);
+;
+/**
+ * @file
+ * A Backbone View that provides the aural view of the edit mode toggle.
+ */
+
+(function ($, Drupal, Backbone, _) {
+
+  "use strict";
+
+  /**
+   * Renders the aural view of the edit mode toggle (i.e.screen reader support).
+   */
+  Drupal.contextualToolbar.AuralView = Backbone.View.extend({
+
+    // Tracks whether the tabbing constraint announcement has been read once yet.
+    announcedOnce: false,
+
+    /*
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      this.options = options;
+
+      this.listenTo(this.model, 'change', this.render);
+      this.listenTo(this.model, 'change:isViewing', this.manageTabbing);
+
+      $(document).on('keyup', _.bind(this.onKeypress, this));
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      // Render the state.
+      this.$el.find('button').attr('aria-pressed', !this.model.get('isViewing'));
+
+      return this;
+    },
+
+    /**
+     * Limits tabbing to the contextual links and edit mode toolbar tab.
+     *
+     * @param Drupal.contextualToolbar.StateModel model
+     *   A Drupal.contextualToolbar.StateModel model.
+     * @param bool isViewing
+     *   The value of the isViewing attribute in the model.
+     */
+    manageTabbing: function () {
+      var tabbingContext = this.model.get('tabbingContext');
+      // Always release an existing tabbing context.
+      if (tabbingContext) {
+        tabbingContext.release();
+        Drupal.announce(this.options.strings.tabbingReleased);
+      }
+      // Create a new tabbing context when edit mode is enabled.
+      if (!this.model.get('isViewing')) {
+        tabbingContext = Drupal.tabbingManager.constrain($('.contextual-toolbar-tab, .contextual'));
+        this.model.set('tabbingContext', tabbingContext);
+        this.announceTabbingConstraint();
+        this.announcedOnce = true;
+      }
+    },
+
+    /**
+     * Announces the current tabbing constraint.
+     */
+    announceTabbingConstraint: function () {
+      var strings = this.options.strings;
+      Drupal.announce(Drupal.formatString(strings.tabbingConstrained, {
+        '@contextualsCount': Drupal.formatPlural(Drupal.contextual.collection.length, '@count contextual link', '@count contextual links')
+      }));
+      Drupal.announce(strings.pressEsc);
+    },
+
+    /**
+     * Responds to esc and tab key press events.
+     *
+     * @param jQuery.Event event
+     */
+    onKeypress: function (event) {
+      // The first tab key press is tracked so that an annoucement about tabbing
+      // constraints can be raised if edit mode is enabled when the page is
+      // loaded.
+      if (!this.announcedOnce && event.keyCode === 9 && !this.model.get('isViewing')) {
+        this.announceTabbingConstraint();
+        // Set announce to true so that this conditional block won't run again.
+        this.announcedOnce = true;
+      }
+      // Respond to the ESC key. Exit out of edit mode.
+      if (event.keyCode === 27) {
+        this.model.set('isViewing', true);
+      }
+    }
+
+  });
+
+})(jQuery, Drupal, Backbone, _);
+;
+/**
+ * @file
+ * A Backbone View that provides the visual view of the edit mode toggle.
+ */
+
+(function (Drupal, Backbone) {
+
+  "use strict";
+
+  /**
+   * Renders the visual view of the edit mode toggle. Listens to mouse & touch.
+   *
+   * Handles edit mode toggle interactions.
+   */
+  Drupal.contextualToolbar.VisualView = Backbone.View.extend({
+
+    events: function () {
+      // Prevents delay and simulated mouse events.
+      var touchEndToClick = function (event) {
+        event.preventDefault();
+        event.target.click();
+      };
+
+      return {
+        'click': function () {
+          this.model.set('isViewing', !this.model.get('isViewing'));
+        },
+        'touchend': touchEndToClick
+      };
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change', this.render);
+      this.listenTo(this.model, 'change:isViewing', this.persist);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      // Render the visibility.
+      this.$el.toggleClass('hidden', !this.model.get('isVisible'));
+      // Render the state.
+      this.$el.find('button').toggleClass('active', !this.model.get('isViewing'));
+
+      return this;
+    },
+
+    /**
+     * Model change handler; persists the isViewing value to localStorage.
+     *
+     * isViewing === true is the default, so only stores in localStorage when
+     * it's not the default value (i.e. false).
+     *
+     * @param Drupal.contextualToolbar.StateModel model
+     *   A Drupal.contextualToolbar.StateModel model.
+     * @param bool isViewing
+     *   The value of the isViewing attribute in the model.
+     */
+    persist: function (model, isViewing) {
+      if (!isViewing) {
+        localStorage.setItem('Drupal.contextualToolbar.isViewing', 'false');
+      }
+      else {
+        localStorage.removeItem('Drupal.contextualToolbar.isViewing');
+      }
+    }
+
+  });
+
+})(Drupal, Backbone);
+;
+/**
+ * @file
+ *
+ * Replaces the home link in toolbar with a back to site link.
+ */
+(function ($, Drupal, drupalSettings) {
+
+  "use strict";
+
+  var pathInfo = drupalSettings.path;
+  var escapeAdminPath = sessionStorage.getItem('escapeAdminPath');
+  var windowLocation = window.location;
+
+  // Saves the last non-administrative page in the browser to be able to link back
+  // to it when browsing administrative pages. If there is a destination parameter
+  // there is not need to save the current path because the page is loaded within
+  // an existing "workflow".
+  if (!pathInfo.currentPathIsAdmin && !/destination=/.test(windowLocation.search)) {
+    sessionStorage.setItem('escapeAdminPath', windowLocation);
+  }
+
+  /**
+   * Replaces the "Home" link with "Back to site" link.
+   *
+   * Back to site link points to the last non-administrative page the user visited
+   * within the same browser tab.
+   */
+  Drupal.behaviors.escapeAdmin = {
+    attach: function () {
+      var $toolbarEscape = $('[data-toolbar-escape-admin]').once('escapeAdmin');
+      if ($toolbarEscape.length && pathInfo.currentPathIsAdmin) {
+        if (escapeAdminPath !== null) {
+          $toolbarEscape.attr('href', escapeAdminPath);
+        }
+        else {
+          $toolbarEscape.text(Drupal.t('Home'));
+        }
+        $toolbarEscape.closest('.toolbar-tab').removeClass('hidden');
+      }
+    }
+  };
+
+})(jQuery, Drupal, drupalSettings);
+;
diff --git a/sites/default/files/js/js_OIUjd2Yyow7K3ERQfyspzP1U8hwC7PtDgAbAlo8Clqc.js.gz b/sites/default/files/js/js_OIUjd2Yyow7K3ERQfyspzP1U8hwC7PtDgAbAlo8Clqc.js.gz
new file mode 100644
index 0000000..48e9e9e
--- /dev/null
+++ b/sites/default/files/js/js_OIUjd2Yyow7K3ERQfyspzP1U8hwC7PtDgAbAlo8Clqc.js.gz
@@ -0,0 +1,506 @@
+     kV/
+N>Ȁ	Qs;=IID4/ٟW+ I9;gbZ^ZW[v;_vp1Ͽԟ)q)Ezu;|锫uzpd\6(h2/'r>trY4:_lzCj,JlGm1	lh3[7E~zZ0PX*_MSb3']3|]-ZKO0b#=\ߓ?fVcUk8uX8_r16~.Y<F$HgMz*fժ\
+΂iċbљ,b_qҿX_ly7ڻib']zz/ɯtZīΆ44':}=rUnJ,^z+\Ǵj;ڔdy? fśj}m:wF|bi>|Av>?J٣?iȻA7yFW^!:_Ms.q&Fqf 2pQvGqfIu{e׮e,I3萆-C&d
+F.gWwrQh5e[IZo5Ϩ<95,c(mg9LzW9zz}`h~1>8Ka]moF
+.I&С?zKGOcӦ}P?)8Sͤy<!`6tsB浞eztޝ rg<e:(anG`4)zOӂڛ
+NNnhECgDSa\VAi(M1WXZctx^DQ/i(ꍰy_i>k^"Sh 4ҥZOԵl3:*_γQ^<%,Q\ȳ,qxp\VetPُCW49#7&B۟f:3j)\:Gv*,:f^ftDs:ohٌ( <rƿeE9У>Γ=Gf~x9	#ٳctU=Wh:v$v鷽YPjN;/l^)>t3સ1mdx;W)a:Ktl?8a%}k,wft̊8Ff*=mAu>_dD}|i2sNq@TD`λxg`O-4N g~}]ypMdN5KhmD4,t'n.nL˭D-%iIurXp_r]@9@۝*@z\R̡s]Э"p*LӔ(L޺DXFx]f2"Z*Gtr>JFF=읜'SMd*CŲpCc DwhfۃtY2)0RZڨt3',=u&	u0NOq$5S^%\hu h&ҁbƗӣ ){DWa!'+!*hķ89	+hP=j3#tJ UԺ@EȆBŹbjӰ;	m'EB m$O	N%xj2|-Znaj	7ҳh1LB|ò%DiI-BA_nVA0֖,m.ne1jv4ֽ$0	Uhn#'S{f6kgq_W<q/c*ui.~u{ΆĐ*˟VPAyztŴO<~Jp~sM,_Ls!C7GHFl
+HHm>{f*Kb˶rB_/w-W||l8
+b<bMe7'swo<;)bq$׈>4_\|xxvqX]\,..& ~a/uvTdBNlK n@p2..Av /ADM_{K#mWA .|vnS\\И_tÙ/.0MG0vA% u3Ai&}DjQS_7T~so"SGh izqpk⟪Ѫߣr?ϟ&޷?O{&jyW+>U /yCR(~ُO_V?А|В%;*v!:	G}wMZ=r<DAYU3}npe@	
+PtuTsw=Ud %,ۜQvSNП=ЩG=3SCLO1bnBa0-dv)ѽ"/*7=/n/.lS[7[ia%	j+ΆiuGC1g'y=Ϣ)ҙ ôJtOyF"Gɪ~2VO^m%=:?CK\C^Y}V.B0[G>kѦDM2KMR=[b-1zFz?suR$3\d:^ښЍ/}Mk8;"_=Un7LG_ȈB$cA#s6ƑÎT/;FGD,<WeIșE}N.kFOⰿ|^Fь9l׬SK4/x.4佫oOOqg77!:|1>F~'[(6MI>nܻ&_3kNWh!xjs'
+ꢂL`l	+M1	=\0aLq%κZ8s&~^VRvr&''Qٟu{5+ޤPϋ`mH[A9ͮ\"$laQ>D@
+ռ"қ<QNv?)t.D8YTqAdCsb<Ew.c-=~Yϊ&sAmЕ(Ӊ7/r"kW(#ԡBA|a	fRqq;ZFG `;mŷb<~> i[{cy:N(qnHΪp6E2Q:,2]BF_rrn"pQVdpXj.	'):_j?t: NU~W]j0MD|'")	d)<!` AAz!-@XA35m(lZ	/s,˪7p^[`47/oB+^n!{KoO酋t~#HIF,?&95
+`YTN6?#y]4^,eF?GQvR9aP.lqR_Luz +81%;>*L-6m]!Ta'`LUwz2O6=DHM*XzC$kvUD[D$4a^8Yw?gIGcP#
+eu#DGP>1zo߿wD4׸uzPݯfʔ33d\9Vc%?m^S;T?H&Ln!io{9(6KNnV߭V,DG"SdȬXSB^Nqts;Hs)+L+~\,qWYKh-ȏ:}%b2ߺ^Uތ%;OSr)Rl%w~GAw/Buw hV#Mv)+%;jw*oj5KX3w~PNM*+xbZU'6P*:ewX<=Lkˈ-Z`xӢOqhIVkƝ	+Cuy}~ɩO]ٹɇW__ޖM%ו8uh&!˧k%s}s[A
+.}gS2+PH׸5\xo q-6YXG&_<.UɽgຎgLCx41A9
+GI4?M[oSO /|ehQaN*ĊϺ"<:8OꍉHx 0%Fy|~U9|:T;0)센{HYPJ'WWThLgɗc>oڠC;2Fvۘpgi?@?Tf> AӸr<LʠL]%Ҭku~fB+#6*RRbCXПhn[8.-/*C.󄈈i,ߡxVBr"V1Mpe˂!cא3mr[#pmrdk@ αвؾ0[)nvMBFRxm4j\O6ftV2;-1U 6.Dy>UrKƕQ/gRS]7I\ԫ:t&BoX!IgGŤǽ	0L^qkXr(~ǭrװlLt(LxqJ]|	o6<Xu|*zg B!:皁 ?wDI9L$4)&喰a!|&[ `T7qZd"/Yw!+,ݗlQ7dRuD)ۼj.~[/캱^۰l+O	nX:Y,duI1$?arWm(Hn*	,<JVwz6Wܮ콺}~ӫoOnY+$@RSaŀ|PAK0SuUQ(\1ɠ, _icE,63>閾zjt@ rCa'*v%4lt;u(u}@s@?ں{:̴:~( &<J'HqȨ	O0Q`'Dxc]CflqwVBԨY/^.ns_؎"Hwз1/TT`ـEa\J[׀FV<}RTV)nYӁ]ռʆTqBؼn{aRE({/v}QG#{7'"0nl0bQmtuv;8		F;(ii,}%be#ˋo2qc$ósL'Gnw>!WNnw|9O4%n;r s֛>z+6WIڣn.is6ͨ؛}L;Ou{OU%D{&]WD"bKӛK!kA<1/f6}ӬtE,eFDk*-Fohۮ]174ɚ=¡}dF{>:o5hR8͝a
+tɬ|O45eA䌘1}7cj5o?!HE}pqJ5IԶ4 135t#YLH.gN_0#6smQ9%џ21v?f5]kh>	4pg6$EJcq-2 XUMӱf?  )Ra:CDd`mC&)1xV4af:+:/w=JVDze5 #bO9;'Ý~bzϟ7! q	j)2te.ᖪJ	>` oXwcLL-	cU$Y52Hj<kFe" q.g.Pnsq*De37f%0w?}F`d7l#CP|GG,:UNӋlv20frUӊI)]M#md?ѝ1Pj_csM' /GlTU5xV0}&KC']:;u1_5a5k
+Y,`S6;mr49-~զI=>ࣂh:UQv/<gG"LZr0Gި=LF\zkLwn2(3O]?Q}iKX'' 77n6f"GIpgoWٸ(j·X~obs]#yS]\gSG*!d`vx]@rR^	ꡭLv9L!%SUjz=кjΒ+#'eN ;F6<qb=X-L5CDXnqB7	T̵k<"t87p-֯Ns,{1^舺JnwI~9}zX)@<;TT#alx'}EɯYEdVob5WHOQ Gmv5yC+cH
+s9R'Dڪ<=۞X9z5{7tԾF;}*#a4anhTՆÃ^f2&e]3Q98xt# rX׍g_j,o-Щ1*p'FLI; zȑ#7B 3jx35NIApyu+%8.ĂY)UQ.rC3$V8Г,`ߪ沄޷xfm"h>Ɍ9w)\_&]&Rxf4Q@-$n=4yD#PmL*^Cxca*
+p調_-ߩ_D][~vY5.e5͙K8zx潿ΣビO#''tf-JX%+ʞ1EtcHVY^НBb>.$X [Tʂx~+]Us~BP}ڇBڕ*KD~Н<*x:jJ8.Hc\Ni̢[uQU:Xyn^\I4"d'#YV'$N PC8>`,hb5ghiW}C-}Fq>ytId֕ԁ b3Ynt8Y>@5luaJM;cCJ:t$JU4꾣_Uhy[38B&CAq#HpurO`3&Zw1@~_Cᜈ|Lp#Avk7ğ1(<H^cd4D LLE!7!dҩW;̘9Vc>	l9M/w#a&F+$׿,7Qc\X(ĄH*=L4ta"6T9@bi=˴U:R<$zSbSXKf.YhR^i	J	$K|dUt.(R3BXy4\+Ɖ+]ֽNe2kdG;/=/[BomV/Ĺ(
+0QylIw{`R+5!H(VvuӞW^چp!LA8"!BypPE;b:nftӣt%U˭80*T_D7Cb_5Ʃ`] ||bRL\<4O"E0wtX0gBaҡSA*òfjdctk; $ʊðر6tQ<a3n8brnz'G"0.WFPw=;:+c1?:q;a8"JNCI iQK88C@щZAw醟ʢ`fbdbаfЎOhY<cjbYB-ھ1D]=`jѣL׭סk8H%a+F!l#?!/`4M:Y[6kr*6=с pRKHYJ1tQ8 ([IV*Yji-yO9/#*맞f;>xP3O3utݬŻY!M?Gdxk(H(^?ƿJWGQG;ÿ́3S7Qll@#+HLe U!:Q\GC(%vB(E1o,ALl nC^paFkCmvǷ!V˜w3~,[=dP" FU!̊mF1qc@aWtGrQwyONwD,vs<BnNDI5a²}쩿npc6QQl2M`0Sg}hvp5k9BŦA4~޲`%X^z`VRQ5虺%àja,l&<f
++"	c@ҝ7JxX#mXV{)BU.ZꃱCv5*GvĊߑnJ9JsD!ʼvh"YpYk7)s3/׹ݟvrE(ij.µXnə2t!jƒu~JdL!b,D(	)K2`OU&VaPVzn45UԂ}qD:T{ynHkBpC	'X| KXl<n\Kf3 IT䐨4n=ԑ+QʳX2Oe#}i"W!Vo,DaFsܲKy)<ZG:*`w00qCUKZz
+X`6<Tj&s*]|ʁ~xo\3+|`WxڅG~WXJ"k"_-!̍
+BAnCI1πгTc95T4fUaY%7Ob<r2XWl!WIiYzz}:IoӀfzk<gg,}\y08!'<Y#v~	޸X6zaqp.fǥm7f~]>a_gofǣ.1GTL9DN9Tw-oS._.k"VH!v'PX
+:_Fɰ'W[&Z7=QCCފa%k`*j4A/z_Jv3}&lnxNLˊNxܳdG%tXB5rAP&8x)HV!/f"ig#؞LNN)-^>p g񌉕PԢ /}m,XCErtotLADMITjl`kbӜ;*Xy!zoH<  PzaEØ:jN"^Ө1W~=rAdp_%fUvbTq0m%rE)&\ȕ >M9No4-و&nw0-@v0ܰ{qꀐEz5 yhF-?ݼaRu38^c{gɤGajxFЖgNAXs6h`2.V%'T[!!_IY?afdG-8kxt!zkw,˚NA*}'l@4b7!s^ACq8i>~y>(LXyoT"hnfy6k	8ag0	zvreٰ&tP=<~U{YbFћ*c<n7kH5ޏΙ.Vn>tH̹Gt*kWv9'}0+\r	HsՙxEZ~˩E6:LCE&WyU~ʊMBtV9쩆QNSxݫZqst;9qyHG(~|tFžVe%;"*j:U@VކpXN&MTaixO_P~SߕaCg%ڥő1i׷o p2حxK7onBthG_/oYsT,ǿш ;;P6MƧbB_`Y:= EnzЀ7g,`w2j(u(cZtKG5gJzohDbB,֟"k"qDIԮ`F0aʬ&K?@$QY`;HxF{znm^'Pt{soz]aN6ԫc-qblH`V#CPqS5Q(vH*	OyO'8b}l\5I{ӆQWC?`IH8f^sd\E4ukRM'k*ƜAXF!I6N[m6o)2Ji-{*۳*i18UC5
+[sDFuUyUSw9#$Pes^Hr8sYÅʝBI	a`ƒ##nbNc3y(Zδ*F}AV0wF*;PW[Q_?. i|_Hl+ܽE$hj/V5])5Kݬ|82/x䉃G@ۣ{{{29!^8-(Ʒ^tGVp}<uk{[zZݾPT
+fkp+T8.)̿'I2rO9c:^0♈}'_@"`eJ bZ?S:,Ə"gl/dB	lEc%M#WW):cF
+{kOThv5ac/o՜_L>TV"j53|p^ed򹱘I='tQיΉhfFnݕ{13EqS]I^f57C\v|@"wAXr#T(JהbPdm Wc(3\J0
+H.'zž-˫\bhQ	6hU!!ipLi!*#+ԭKE
+5/!@XB6U%}#FfGHS,5fGɳQEM$|X`z`+jlkb3툷ӭC:C$
+qvG-,h wFF<[(bT9s_@ wBM\gl''cDs(u87TM֢ę$F︖X=1:>3|
+?dy7~pE6=g@THr˧_MyM?'`>taa	 2GP%J,8"Y㺁oVٔ yϛ]Ĝ
+@?j@
+ǁ?jJ/	t%Wi/[Vy2!tx/蔉>|uj~âH(ԏnU<_#Nz '/Wm'quOve䫝2ߢuFWWRP$)hrη+p"'KgSMv^4onf.m(,GQ, a={fsfFy +iUa}3BXND!d]8GsHGqX+9$Sz&E^D
+o-Zo6bZ/pMB'ytT2dJnNXCT\ /	u9ˍ2}"ALCƔTGOEq)$Kf0;0tD$ΐNfOw2>X*8ǿ(x'8V$]Sw0lUxDxҜ(B<Y*װL
+ӂFqT?jI%X=Ba]HN$GSU]CVgҐd,Rn
+hL-UE*+PkmQ2]pgTco*gyc4"ƞ$οl9_ypǟ \q:P|A[C"䚎 kzUzMDNTphhgKY~/[?CP㫎b+幜c`<xH:#![C63n
+؜ZP_2sm
+sZ	T'd᪦iKhOȁKHo6![,}u`SVxُ*S;WO;GFK툥v'C:4.`M&/w%>9>sgwՂy?5AUF2lJhI}u䭋IF2.EG6]\Z~#CKYteq
+ěy5'O`"RpDDœ	Cx9҂.qY*@UGHXd	4=_B 'Zgn,n.V;^	1u-nRNG\PAsl"Mɸ৿RQeS zSEN`vN4XSNC/x/>BKq\xڿ8_@	XMMly+6C}BDIy>c+)bߪ;>UK7gP^U9Q6ƄxCq`BI,g~Ā:un݊Rﳸ[-*;xl{~Z=rpah>yt99UvKŗ O*`mmW81j`:0$kNƮ|~}hj92.b>T4p+)j)!n(=5TTu1G
+
+Grs<l3)30ômzqf!Va36InfZwJ&sbϑ1aҴ<7PkʲQCCT;Hh¦c[!$8Oo⛦ܰ
+\;[}R
+ʈH/nĈ"bד®xo6nհ8wfjhS,,P\ olEuEk69>y' xȑ7
+p|
+0UײMqd{o44)\(D4~f $	mm>?4Qvz:nw0wxR >f?.͖e,?l	?lсZVyYgkS*)ͧ"|t+t(xdS!zRQgX?ƪMX;dWa@9CʡrYt"S}xYLZS.Ҷ-<qΜ	n ΏU!E%09&ema~2
+ jkT[8/iՁ_칀o˵v+TD}	&0Z~	̒&OSxr)c>ᘦǪ75.$J}H  :t56SVhϲ̨'ќs[%#wC8R#TP移) : (к u	%&1UQk7{G͎}9uqχ9ݓk'E 76",aMGzg!ƺ=7%J@7Ԟ,bZ^UsUŤ&V7r!^!bk.5FKaZ1&O6yE½]66 :Z
+TSɼrlLn2%13J^k!	GȲĘ	!,b![<X'Ĵ>^g;@C_X
+Q{Bw\iiI~XRw0MF@|bWIЭy>ׯ	J᧊'T1}ՙg[ZRC?vy@gD0C|s\zbjuLI*bU?l]գtmXaݫɂĝY2xKO\%ʨ
+RB54cF	F6pp|8_伛sħkhDݎk/lIȐ9nebgbL]L&!"n&Č#Θi1Q\~44ͺztZeN?{cD(3Shᤢ־53!Y(!ؘMlE	Z9	Ar&V0]T'៬i|J''ҭ	k=VB\W#ކ`CMlyfjT|-̡4݉]bӜrU;iF55@ʊ*_#X0^!pծ͋1ou"[2hK4鴈ܘr;C=UB|{֛N8zItK6؄rowqJ%..]gHy*y@C5LjO>~#v~?Nq1Lo%-T?.[tl<O_S(@$8!!p9iUC+z9bɩYy6F[:ZJ_=jc`-<$ߴ&WIYnCg\cƌtr2xXAqDC7*MY;WdSăf&bW5S!0C|04Pvp4Z?k$H"x6ڭD}VPئ+!XCbr}6bEа-r/r|1Dֲ7H{#Cƃ`cSZA*"fzɺ(_/Af/Mf)J/w@3M<B@f:WeJ߼s4
+ceYIxp MFDAbci%SA%IUϢum.S?s!2E53߰[-M;samTex2MS̨
+7ݡUd<0|f=Ei@C!Tl.Q&'3ilL#:Ŗ*n$5S%BQZS>^K,(Psѓ;<Ν< #CZNz^y}x zCosuÕq9q&]_$!Iŝ鎽wNW뽇5Bg4XMk9qh]7ÚX`U5Q@ҽԈmf<, srk#.q	6tc,WNT_<r``Лl%Ӊ̭Y|"5&7!(*=Y׈Ba*&COy:g3I{@
+C}=YGhhpz߲j˺W{
+p\@Ībe=	(J]L8OhTPO7KUY/P`-qy"[ưea`uF2m>O8.AÚ6_Rx܋Èኾ_((ЕߚM6ufWtwCfU;C ]_i
+0HBBp_!J38uT@B1Qս6>5D6f)5n#U0idbU.JuqҁnΓLL^`Ac!;\#á!l*<{fײu+Cs7GB'/1Q4+3W'Uwn(;NEg~W0JVC֢9BO!Vr|$ƺ(}dk<gc:Z{tv֣ yJ`"Hoexע)y;?|ߒwek $s鎏s~(:,Z4I;;#}ՂұAJn@kEcDmlFд}oaomn=Qq|}_>G]"*Z.YY1{,
+^ŗIbNT&)c!$gݩcƚԝ|IwIa2
+ܷ9q5G[>ʴ+ϩVY!'M+^A޷I ~/@#
+|2s_Μ`!rnviiS5JgoԞt}l"̑.=xNDn.3':xƫy=PLt*0M\JXS)W& Crʉ7(gDq@ڈ]MS,7#0]ksٓґrrnDWd]-wX*v$<SȜeV-	apySQ8ެ8qvUs ޣ='nbq/av凨o=*7&JS._Ua,A㲃00<$b;nXӔ![Ghc	[̈#A {;e،Yҕ$7Tf턖CBawa0\q`;outc7uة` H*\cHV3͹QPԤuH~_ugQD:o0mΧiandՑxtb?2y9! G{ss	&v8PS8W	@Дr.3O?6MrCW	R%hLẜq'4k`z?ɇWd]32 \V!zƈͿe_6Oʕ+²DnDP14KSuLGGzcU|,>s DLo1-k^yq ~1@)Ck$N~K
+*[ $ngzςX8}!CPS8272#	ԗ/!Dxv7[d,{(D;N}P]3?!@D0Mnm42d7t
+c
+_OF<DX<>pgwDZq^TTfe`b]yb<A=}'
+)UKl$HI0]{6LOKE+{}#H\ES*h@G%hkRHt<?|զMr.Oħ'JN1{,']&X	dhvi}س WMLɆa9FYG>r{mjg]8˸FuG>WzZhjپ<ΖϮ.dX!n)O2`YqTxE'Lp=B$wA*[O8{|em>([eI=FSK6blk5MDm]k"^Vq3&QT3cVM1cUBٌ㠜Qwt[)dʕǯŋXi:ncFYE5rpkHc_T)8X	Ӫ<hx0aOɴVL%.azHaV+@6}	1zH7ncR/U_x*o׳U'i^,oSi:,gق7-oׯ9~5{0^m0k>	?Λ<Z+ϙ"-~56pQe&(xPـ;)eKqZr,8Ne#fMS8BA	DEdU򵺳Fl94уG4:I &uiOGZdvʗ^}<Y?c5òOǫ9~
+6ЀX)k*/6^7XNj;;UAo]Kݝ<xMLu 2u6WQ4fy*92ш/Ar[Ѯ%y4KJܜљ^Z3)!Źɹ{BmS'N&s(1#޺a6>>]o(snq.|8Eəv Ы1aōJ񭡤&?~/8pḈ_֜Tܗ72kc+F"qU#=B-voY'ptRa cO3ۡVFpz5+@LW
+B6WIM xlc{&"ޑƬpumCbx.)֭.r:7D%.#tCNXejZ:IHӏRu'~hy 'Aw&߇[.ur'(S&ӑLX87|%Pe$Q;YYӱrwBz pM]2@UBVb[1jېnOt&oJ|Eg]̵x
+I,>ϛE<ER%odɗJﾲ
+Ia/G72Q.)qPxtn{qܖjC&0~&[}<5W9tIWE-/pm7%aoHXwS?YӴ_{хs%U'IooڜsS57{1jL\5dJF 3Dj\2͝s
+yOXv4*iWϣӇCZc%HPtT%D	v^J_Q{645ô a8gqۀ/U;
+,IiGش! 
+X;='F!HH2}#']ӴlucOOYROۓHg`fzncJ|kr"_]M޴1fIBS0pwғ7M1gQSʨL$C1*b.}x2F)8kq`{4a[=fNtX@jI>(+;PÐY QXA ֜;eg[R@p.HI?5:X][UuKO8;!|A|Xg4	!?]c6Qm$07μbF^θC;[$xlgT<l5G2BA'GFVh@ЁGdN|4cg?a_.{f]n3+K.cJҕŹȍ0=IظQ4-Sևɉ3k˹5a,aF0B!ZJϟr 8\0,דߒx<g ..ۼDFk.{w|y9،UxK!Iu9:Y8G.y]O/9黎wnn}$cvpX)-xݫdt=U/qln]kb#黆xfu4M	-{Xؔ9ݐ6CX"x:vo_GAh@@NLHsG3#OW5bW -<5)xy:(*dOtc"ipO|_Lsh5KGԊq
+0Թ\~z<shw)>WR_?ɽ6w>:ך;Broۗ:Ծa0IOƬr)dV?tσ_&%7v7Jq HHtT!0Sq]N4q\λVy=cZVǧYyRdIHFfibq蒖\kݟ.Y ?;@P7hV`^+yZ-6*[0̽쀋:lHdoSL$TX[^q_ttI$cI(eFWCu7̷:~:W!AV"ְ-k%)j@x\~Vɗ[֓i}UhyW	480卪ŏSxG=G
+V8us8PmwcpX@l/s'$Uc@aЛ.H:=1f*A>NE=^dDx(zg}7X%Rt@cw)J9i2zgb.]}[
+a{뮪5=~m6ճ%?hn8lԉo
+qӵdY=<*|^~"rz1k񙦃@ad'̯5},}<Ч2Iǋ+*Y}(uE
+qR,UGCA9эHGS8JO얝;J-+
+!u{%!ҺLt]ߕMb),p>s%Ŭ%)feuQ;^r0^yƱkaDr!Mo	é#bZ/XJrYn4AtQZ`x
+;B:K6uf}0 y|N,B9idoG:zίvת#w@GY聿Lj^=l啕K<0vYCYVՊgl3tWJl> CeDZMԓzv 'e_X0ht2t_:tC"mkPX-kDXIt==E09*_W<~ꍨZM056v|j~S?SGzCyzR誊vٵBTa	+&#2/ܑ|DXACU 4~!CĖ@!>_Ķ;2to¡YHQm助⋫347ɟΈu֛!0J/ԝM'x(I"3UZcp$ʑCdMes4'	}ûmEG6Ɇdi_.@	J'a~C =5/Fc|\Ti	tMőS3"a!oziઇlߑ"V:6._Jb]k17C9(~b@?؏HN|{cb!gz1dˇ@PksNzckc5S͍MeX̅ YD-&6RѵiԵ3pٷ)ox4gOhB,T&#<%
+c؆oLk\Xxwt.HiHov%=2=r-*ǭSgFCf7ZUoaZ^bX*?RgOi\_/Ɉ}:{Ceh˯|ۚ!.dԎBnӫIM9UZaC)tÌ$g@Kw#W~3w#.ǝoA-aoWzk`ho*o*o$='#a6H[[aE*Ti!qA+RjԖ[ԆIa>P,k(Ͳ{Բ!BVYRf|X
+\ٌ}7pmpᨑdZ10y5:dhγ#1\\*WJMUr~mYُkq[ųq!8w#k8N^4ft0Qzڿ\.BLO M&]6dj%?.a\*r;`#Q}z[UfrE*,v~AQ-D"^OAB6 Gm;/G*`F1hl$[csjGj#'d8nԅV#X%x!!-{Ķ	kwћw`igd%%V;ʁdOaUX:Ojkn8BCIڃAvwu\g*j_O(Tx 
+,Ͻ$6WpGBE̵}k>}Ttk		+Xی9lOs@1Cdi
+fjwCskR֫cHŪzi|UXeW/>$)"YT*]mueo5BP̛B4iT(=͑}lEC-xq\	{/q[¤jãF9i}/0PAD8iJL6Ҟ.(/Cַ|ZƵr>b+dU͌W=Wo\
+!1`OC_(Lŏ:{C Ο9!:O7K5"sQxdEPǅLgOFvP	qT/얀˦t`UPR')XvrhiE.a:WP$tcK`cpFXBFs'bReғsD\{Y)a mE3ɗ,!X%{@7QO-:=dO81ǧi|Z*OK'i!O\k_ر$y\ҵùJH#Ke1t
+MԲ)t1${z;.6%L.WHsnuÊgjR2QG:řJ1j|gC쌱v/"~#C$FŐm*
+HqNAc:ǁZyCs yAM#2 SPh?D(	#7A:K,PߥDǓ,csv8|
+I߬\_ж~SV(t.XsM3U<_9hB	=yrZ?t;'+۴i<AyЋ~b3xOߊu<H.e%;YoU6w	ƀB;:nbA	X}fOqw_PCv!O)'|Q0x(	>$ŸNbNmT
+q	9K(1r9aI滑>@>,L߮v`1߉ϗTQ9G-l(K/^MN<cgx hcBGT%;rmWa{͂f0^p&g325{sU2)C&dޤwvNL0dfjtFqah0|w
+bUIE'>7ۺ3ge@ְwYR!0d@|8"XᣍE	e3: Cuk`&(SYG4V&kzIʿͳ1*
+zFR Ǒ1]*f7;\a,TkMxXb
+oPyzhntFX6> KUSMӾI/đ4^innw;j{s]ZuxȦs]U7)aJoگ	s|SFox?@~Ed7lǒ{DS;v+lɮAﰌLxse͘ИN0'CM -mrl؛r"SQzGjהKFlUެA4L},꒝ hO2͓%[5@ISٔXv[b,}2;!n2ėX,|<vMr]͓r22wti͓HE}a-b2U9gPb
+cHir~89]>ň8q
+~|ɟXf N̓ YАnB⼑óxz-CėkUYT|;6QTN%}
+{\J_W%߁$~ży`A"dm-)W
+$<T1RtkDvY8P_{tSeO`5|Hݷ0_sk"a棈_YejeۺA >ʓPv\/愈Ԕw>Rs'¼san2pǥ/I6##bc\	5W@&oۦ!ЈߧP}|,ݎ{Bj(WZhtd}=YcǇ"1?uCT/Okb7\`#74Y7T%`YW8F9K4fݜeﮇ6qNˢw`ئ^Cdj+@cbXVznk;!<瓞){/[ ^0z<⟻]9x)fRLx9ͷSD%;fVAhʼ"T/Zh_IN,HD檤+&D5㯰JW<=
++t O$CDL<fL@t/Y_~Q9ּr;&x||qnB2̅.V$e"Cr ]e\|runOW댽torai7U@t8*Qn~)
+;325?㑦{1Y/jhExsJ'VG9!Pw6#hq@D>ĥ'=>~ߩ"0x>9eN^VDHt"b4liUhǮ#HwQsO{DqSL`e>J*[//mE{ALbwY<:ͰsrD㽌g]2[ԑtҕQf}|r!R6M?3[NsEy|%S+1fثa4+Zid&XX#".)UCS3$>W{WZJ!<9/2~aBAaJ6?.@Em҇pRɌ`P"ez_&0h_=ꋳ/!em!OHt-=^Fe/$5gAzCj SqB2P8qe/б\$t˔CNDV~0Ѳ!B[b\G6HKn:g4Brr?Χ*=y'0td z`q˞E~z&cSϫ-9*ɀ7sD9sVNNoV.݄3jWtH1*KE\53bRGЦpP5\o {²ޔ2')RlXȼ\&07E05*kKPȧQWoS ]=WA %?U-oVym`, 4cDQREN]̷"HSI"'.X&ɧD"¥F%6T13}Xc8hTY4nl	z	ZZ_nADnjȍwn7j;WF!c& L}şI̪lܽF˕^p)N֯3Q0j_m0(=g
+i͜zzQiDEw5ht7֟=utUq/	2ZP"=W,B)4L{LA?h5Pl EkXU821c02HIK?$SX%@ZCm4y!6"!Mx/h%*yW\&ccts V5^z2zDKg{HkeމC+:96׆),EH\6T/»E6/~m8g	pʼ:q+ŷ5=5QT+av6<ȦXAbUC#S%[u v-#YE=15
+bZ(L%EGE%?U?V3&'/vY*vQ;26fOX/=c/_g[gloD=B+vDAܔG(z2gv|NеdalVFxPL-aۡn^hWH_$	̅bg,Ʉ?*B87
+c4"z^&MصI*mz*ә"Oaާ,*R
+ORX8XðRwXhקAP2ǲ160'8RDqsvqqtׯX^uqUO={WjjQЏsB);ad*$2O%bq3pCD}Mxk=p;8VEiz/nyu'(T^mP,kTI#VcDP+a`Z)UqOځL^dHpڱvjZ+amQ_Ik[ER.Dj0"ˁ
+tS=FޑTˈfy+|y%_ (
+!V|+j<h yH-.za/=݋v=1tePԿK>5f$AXvV$.-} >XC_!>/B_VPIBO:-Oz;CVPI=3ܜ:bVp#!WM<aSW:UnVtzմ"BZuD?H$M%,nukQnZ #`Ni	$8dMe<{dn
+U
+c>XL%JY{ļSLӉl$f.
+g[^Y6F1e		sLߋ:U [`3K!D$I$}$rYVtںW4Ev}69h٣=:6S&hHT\J8"Iҝo \]s1wDbܣLJ`YXf9f\]SKbg5Bd4!8M&&hsl"*#jʥP{jth2~oLGf\hq5dJ0Wqa16\V(_'KVӈ9%'cGΞrr bO<)rsQut4Xs5PYӛ4	@eSD9tYHG٘"`
+GnH7M^(:H8u80RNf=E7LZ Ǜ);k]KGSV3˧HVuqHԵpJE:,g0;sIWcBn;9HhBnC5rђ<TD>(Na2J|c1/74Q>R?WJ!YeCJfVpXgȬѸFڂ@!P|&J8&{JI/O bC P>\RxҘ(Pc5m	J
+7@hDiZMsYd\q$힏%n Y&BX!Nm9ޏgn@W1^6͉z=a~0PRI"ifi4H@2u&K3d{$sOUu	ڨ*2ؕߝyIF)ahB;{7P6YB10$&*}=nT2i8|δ#p2/Jk>󓼍cg%Y/0,GL*)Nk!ީNn@sZ&irI&.MaCP^']@.?#@-&6)GHSIolw8{'<_hFqR0[_"_tM'tNt3i]0m"6\/%ݨE\Lp"sh{w#	2_bk#|F%^@ߥ2u:j?. y;g[nMK׫L/'οl-'czv/utƓyh7ZS&B[?Q˭%u}Lck&<lrxXy7-prt>3a7R9ِ
+\jjyY+߸1.CbF5 ,[Y\~&*^^xn;pF =Q`XӶz&w|+	x%|h75D
+=)Zu/lx]H&;,;Y@ĳ?Ӏ*Eg'ojΊo
+E}PQ[IU]rX11v].^ڳMXj|T#6֡ת֗͵@=.pIdc:{*zEJ:n1l"MUz&NB*LYgRWn)oIӹZ8qҳQF_/TvqRh(*8M
+ݚ[ڃR "@-Pw20%nw.-t8n̸鶷헃3`L&~QEV[оe)lޒ ]dAq޵x,.iPshyKټ-o;RVIPOE=M:]}ZZgUfjh뵢Zŋv@.
+-S\2i/M5H2_z9_h|Xk.rhExqJs29jVODZ<	#Q@0<lAR
+]p)ރuMC5`ј0S،q$ؾ<>^PoSMb苏a0r'fY<3b&FPv_n<	Hx&\'`IK$bfJM?>Ż@7Nz-5\@C&Y7H] wo0t{ݻ,_*9/pUH᧻BPH<`!f89?=#BK0:C9.{blKss/.#&oܷF-/@r`ǅqT./Ac	dw,@(X#4^X~wL=N&ZQ3?=E::+MlSպ
+`pEo$lBttEz[`Tf[~#X@t󈓬bFcSGfMiu$;ɭ.bc*L%zkaetF* @B:VrZva
+Dh};9[QvЄfB^7q敢ԂK4b1*UW6m͹o*2hS3V-b\!%xۛ:pQ]l~K~wuȪOߖ&CgkdtdAʴhg=" l'YZ3)H6
+?*E] Th:<g䢁?Ikq#1͠ ߈v7mRylm}rVg]})WG^(|1*j)#Bd	s2LnM|);0㕛}4*zy}3cNǆ3)X -Ƽ=nsnF6Q]{TeIяyP)5U knSq!&_4myNGH!Ʉ]=.wKW`_nG
+*аMRj][:hK壬q4M	6'bN/507^2+
+&Ѳ E<FqeoiPx[ݟZ085?:K|tR'|TAYKl-ЪtEb$h,EXtG)a:!X.ta,C[pɂ7#ǰt뇹X4eȢXZ5F-
+SM/}˰qHźo[yDa%-~?9W7YE+umXi!Wxr1PUϹ7cmT@2MwA{:W
+Qb.o1  pIӣ[!nm\5Y_zQ8{"=۬M?Fy1":%,:(ŋv+ZX>[IL.IIӥ)F<-B,3m]o(ĨUoh~>$l-xª+7ՑhE\[5^De~*z݃AbFBdcITӸauEgĩ(6&9Q$OWxp]}Un(jZstg z<ou :D<47"1pZ+ǦYMwLn3QE_>beVG1YdBKmd΃ՃJ!9U (U,Wnn9Je؁BnǈvbTY_CaK7q"|lFv$C}Z5`%t^M}HrP5-PDad$tsNJN#Kz1apt $ 6+4%.9)UrWxIF}r	1
+ʋWzx5r+ZE$*
+
+yh<w
+Gur5;MjY;	QjXAۇ9(lU*fvr 2f*T6MPeS>"IvtES%<KӧY#KXuYٛa[V6@$ҩf57 Gk-!V|\g`/b?n~
+:鴽	c@ОB='L"AuVZlB@:ʈaɶu0Pe<M4BP	XC,GEEc`_/[Nk15#e\fF`"c Z<qI`Z,YGʟ6Ie9Y8t/(Fk JqLwTß|,sQwӈ\	@fo1?m"lh`D TRSť7+G!203ήLB8cH:t-x!LXwx-!ޞnv,WT[(T?oٙϊk[ԋcLb E!>V@*M7],)0@7+!zm	 : %unC(m5g \7]Nzڎ6劈ҍVJ48p^
+63wsY(@(]MsxS!'YG*#Ci>C@}sawtrtmțţ0քҶl"%EAx!vâFkC;f'lù~n[ظ|@	O*>ݲΣ3}h! gQKX(1vCM6̎hx=Ѐӎ#WeҒYZ78B*[5q+Y^Xk-akq~A'qch~P	8^#vc^0tEla>5_K!9􅝽,SĊvjC[.Gj@)xo!(b}}p.܀cjX9,]Gu~[ZT?jC**?lv[q-ټ=fqzXv]"v؜mab[ӱӨX ˩qlu͙3r4][V@Z8!{6,7؋:_0XTXx"㬻pQ*&EwY5Jᅨmt2/,vQޤF Rcȉ;!%T-G8ή]e_|sݶ;noR͂o(^im-;$A:q0&02gS1,]oȔafBz-<Db@ŧt{a8x÷1.`Gkޟ#-6e|_L6"6Nx=h{t:Y,kZ,3Ɨqzv_N+@}A xFܚۇgLWzbX줼盦{j_tk'Ҋ
+!ǴiX6mn<vaY/8t|0*MťV-ߖ^J/od6U0|vA{[57|"*HkZTX".7V#B͆	xӡe- E!0c[.a$nbj,\VxAVsIwk FUp>Q]ՓZK*7MI#4hEڷ$JicQkb"8TMaD`*|ϲbtنGVѶ0?krK3v]|eG&Efe8;w51zZ48hCϜ\J1KvcIV0Zth[r@ZC.@F+B<l٬Ro2v3d+w.jG|G Ha4۩+v ATt4̉&v\UIu~G[7?lqAvN/t_e*;V+݉y&t>0mL8~Zjm6Qͩj],􆻰n|)#G[q[	G BS6Uy`O8v]1HV?]ÀKW LbWo޼J'MپN1obrDV<R!ැiW6sn[yMR8Dv)&IeWģ͇~.(3 f9vQ\\;Ia҈HzOSHx."#qt&;o&\	zfn(]2hBXQVjuն;URٟ1U[NEg	
+QY_&9]Y.es>ۥVؕ-.mDRIe֒I%I+5 iL.fuyT_T#MxH'ޥ\~W7_N0ץޔ<b0U)F2^R7Azq0nѨ$A+]vB}(3ljǽ29XOFs`3Ֆ
+wjF;H\]nz`V6]#]\pk<#nVR1Ͼ*r&W&=ғxm4}џ"?h6S'	PnZGٰN>EpǮY[Y5׌3nl,kDue^[
+)HKYr1ߦ5Fs\;sӖC#Fsl sWIPw%xzG/J0tKw.dfa<%EIPWYu&SdH(!ۨ8kepl$us~,WL_ǰ.]Q*.dLxXl.ʵQajoUK을Ř1-,ƏJ$A1&txBMҲB%R+Rq w;p`.HKu*Q\㘔!fmKԤgN؈Jbiw;Й$ȅrA[;OKC6+rw7b,Yl%Hmj$)hi%qE]?GЖVs/1""<=jW80'bwY+XQЊpU2JPsB8;vzw%}S~2
+lԀv#5ۜ\C	]cKOw'|EsRN:LvٟbIoK-4 j#i=`?#''ycǷRPNR2 td
+9w{}nj}")Z?G  f'`9w;v8a0:rFڧuŤ~fqba/'Z(T,eEru֓Cb{zYVpUluOr"`nҍ](*a#wu/
+V\k~YE	PrRED9ڏ(lq=~}d~v=	d\U@woUuwf[{7ڹR{&杰Rع
+ƚמ4pAKJ*"e_UvUڙZ]շv_5u5h
+R1텵r`3hnm8c4~>|{+E>!,Hƃ tzOKɭuWIv"z_]jʏ8xw+A{n:;{8KY9x7<h8Չ?rl;Ԧ_'a
+bN3Wj&MZa<eAm:
+i{3xk4rq:"Ui50T>HPT)_~4ktvhՏZB?Lr4yθ@SIM[rJ/B	6Oh^a(Yr~7EX,&	c	}Tc%Hx?غ^Hd>h{OAS!ZjTz:ITTHD h5<iV5Dg^i)5SdY"A`VHRīa~rQqH\aG&m6XoNX!z9[+c2{p##zT|J0Oq%vd%d?h717 a])ICW	;Zt`i$d'~|>GnhT0۶V0~r.9&\@uK-dy"f!TJ|Ao0>/8#\qF^ƪmHM|t6ڧլVNH`ՄIq~OkF^rq"dG6(9°7-eU&*GC!Z3-NN6XFYZ3!t֟8	-A@8`ji!z2	W@+T-[3疏L4ţ98<(s{>,[c0< gi=ISeX.k(zfQdl"ΎأśnxK8G2艛Tv#}3rv;:QF"t:AOY<p-{%Wy^vWwSY)&-wE<u4hyіSGbK!MN]}EYudΐe0{V
+Џw
+bWllx	(@r SD\^LRg w9"AᜩATVqvgl@IlΝFA)7<ldGTDAƑs#4`耜,*$Ĩ
+qg\q/eRT8B:lx
+4rz)\]s3b<ȳʭ!CZ*l=z$B;~';^jU8P.UmO6լ\HSâTOΣFE7ȎTOa$aPKnZ~ZU%7/IŸ́s=pDOMKX1]_	r@yR試V!8hF>j@>R+)0${&] 4(cok㓷FhUW,*iэT9NLӍb% 6MCmΪ2r+
+U:a ;;inԵOL-8nXSqAW	7lsT#
+\D12Xn묵B%6nL]@9M'Rg@吁y`M~p]_~o~G|=e#=8+2bL#w¹x$kBd{t+?_W@+hP\G=F0\s%2~a7426]Ï{E`p@InEo=U0'ĎCaxc+o?/3ocY.u9"47NL}6h]ʋGzFsTʧ _HDMLBP.c*b7?Ay;U~SI0w`E(CF~Mͩ%Ʀ;2_8&A^> )IRWnp oh]XMt5Nq	ݞ58R+R
+;zN{sWY	QQ\hIZԸ5?x^EQTwMhV"tTU}|(-4iRZɷmFd)xmټhAe>cbR@-K8vA0o3>C6(*Jr#V/iU[}r]h (Ae8'=j{55
+ڕGӨ3B%P,
+ LE}zxy8gج"uxϝ'vxϩ5%1FrMO8:	+ڣʭ\0[VtP[KŅX(L'e8UJYtNTDOy LǠ;k構Pyk)!خY:'4QOMY'k̑hF~|H,y^=~[*^|M(J(.](G}[9ݳͷDI;y흼$mUF=e N`2<Mp||T[^e>Ś5S3+0[[hUɦ0#&7kn.ChFFW`gf{%}V6K7
+DtyHN=F,zh˨3.'帽Io|@ C0\:QKkKDSICN6@'Csϳ(}rWΪdE0H;/5M+a&NO/BzEt:WߦExыzM[|Livѿ{{?\T@=:H;aI\4|JpoJAK;vS⡍7꣬dYaFHN0]4іM2<"2#d(p0MT&ULD{++tRăFA]\V]"z-Vb>M"EZ	fK"PUUzu-Σ۸QtxA7hGޖuo@t"R@BY]\A@ѮaGq7Vc`e3zcɑ~AXja--V%Rl1ӰQTTd,]"qhBZX
+Q*Q9k@eź}O᪗ⴽW[@>!w8 2'CeJ`PUF>'<Cl`9CDxkVzlw| rÚoAlOGsa6#fMdov_m׳:MFw	F&6 dym:VYzbfeA+MA)5oL 0L?Ixfu-I;kkѢ9w-UkaǪ˥ <&2#Tbs~7{c2;yՖCT6l.||Nɖ"S1u? nV7+A~*W:_=WOuNGČJ]Đm #[RWVHUL[(.z*,hmc'̈9*m2c7T3٩5tg76JhhqP. 0X(MtމSwu%s5F_cE7e6Q`Ce6dܥ+`Pk0:mw}즁́?(HԭYtAyc:>.`?yčCcdP`W]6=#bx DAuna]|H^q2VnbdNe!k)[_͂5v-̈`MVQ_yg8l4[(	kxZ9^Jq+cQud#:Fё2v(v4.`pԔ6xLFBN0*!ɹ>wnߐ0g8Hs]F-^!:@RFX>=磡 1`6ZTQ*F"<[)}>6nb86\*,$uq"M_
+FVh=WJ3jt%Sr}h, BK)AMupNNzu2cje4G#ۇpJ x.۷^3:ʾԉ8=F^ObQ{Kn+KZ/Q1)}%`{v_[f PI	D4*~o*n;}փKk!I|;%z6erz뎄)bRz-Rq6:.y7-B򭿾N^'vT<.6'ꡳ-k_awf9<܆k 1j~ޢ}#}ht鹘*qZ[aTjTOw_>}RٓH[N=մĺ7mi3{ͳd
+ek-Zm1g#B1YS[[77ˏFX\fnB5^<ZKj=$678ߜqr $EO^n6P7}6GTxSra3	Hάܩ3PnTZoܦxPtg㐸9nVPOL-4ǸR=Y q;{+]=BddFUE:9)f-	Ngf!YJM'jƸ^8YtqKkӵn8_,u:_0@MKo'@H'8o+\9j~SvMs62ynŇi>_lU)DLt7<0DI/A)6>'5:7rp4\޼#L래'E\;
+*XFM!4-JlI0|sp>XPFЖ&|Ngڠ\ԑ-r;$/莡1OÑ0tŘB#QN
+Nx|YsOQO>zlq"̢j=$Ԓ7b<1@]moGcd#l-Mˋ6YjPZE2ֿ4Ak9 VhTlxn'Xjij=Ӝ:%_)t0hӠ0>q8[XR OaYA`=+>@El@uffᩨa+3mTCf
+޺HIiA"~5(*օ/FځU3+[2ܰ._#$s7j'Fkfc:EZL<U3J(A%	Ss Dтc[3IGoᏻr`\Gdƥ}Y!jzC٢YVPur}_{lLYc5\e/8P:>PQovQ{nil#զw_98:Z0gr܂*a|qٳqy͘)VG"5,h5OY	͆锸
+ZA^8:MlkNL[[F^g>cV{A{A㧢K19fdVKG<+.uԡOTrw3Cqʠ*?]M' Z&k}I 	Vpުyf8R.Ķ1ר]j\}[G~1h KZ_gIG5gJ+iX{+V9 +,ҹƝMWD	@JA]hme3>"&+]o(;gꪓE0kql֤Zړ t]*AKs4p%;;Qպ4CqkJ$娂消
+Vq 5"pf}W1_4啚n1C.E@w9JbCVir]l)k=;Ti' kE>>.+[1iO-*kHic
+=K$mM|̷1=HP4sbd!<c"iOk!R*=ݑV$}=`gAՍŠ\gP<	0l0A+|ZbjBGR_s+v:cG+V9ek-b#ˆż|85xezVbDW-s:nwZ?-Maz^3}d:*Ժ_KmW+0JONOnQv߀xE^\RYʿ!鹊jLS	{ݱ:G02֢m/o%,"Hӕǔ X"+Rdg\:P_٦VkjYq0dUxb?]O/y)55%Y)eQPC06hv&JJaN]n8}Ҭ-PND@t[
+MTFz\)߷==p{y
+ӳ]+MiM-d8?E4pނғμʢC#/!!B>m%ǱR>Fy'"Ce%4IＨUefro R,#AWI
+f1]<LZO"kψ@J<ϓi?}c[c]W?U=R"ڼ|
+Y"]N@`:ǫYɖQ^f{ m~ si ΋<C)vv1.mSf,
+9k#H:/>:s×&(AC4,>bp<?6QV_ᖵ3KIrlBz5
+DTgi,΋?_?mr0·6WDAhYʲ1tm*&вm+mz;$xI)jαkI6甥Dt8eg¶V.aװ]( C)"[&#fH4RZX?LP/ +h'LHBe^ٴ[toPt3L@6HVΪ{yN*?Lf!R vIoewIr%b|JR)Ƅ&,PBEK=)[QL5})x_*h4ilUY$M1lKzzeYڞS^VNZӗg]WEޡ)=M?.3]74h/x&cN$	E&R}r
+Y
+YLҪOi3u
+cVkN?6W!"tJwL4R~k _mM#8Go#iDkrtrUU]yq+sݻc(_n'oŇ}O7Y!dm2L9<;"#Yfغ?;ȍV",QaxVOUֆԝ0.;y!M>}Ntґ LRFavT?liO
+S=F+e4o&r_1+_J͑k<tNA[n04v?
+5v~Hceo!c6a;,nl#Vm .]LoVb-ģ6dlb\6ȹ݄7Ub
+{vRțzEiq?q޵x$}jp`	!k\L5.ܥQߦۘK94@Y".vT)h$OKfqQmzqP\Y35#hۂm_+<߁<q06(zQ牛. :h90KWmF15].%SgdW)yeyżWs(8xL ״.^c;RYݼF/W߁M)',zF8F"Ɉ[gcr}fM޽3i\bfcc	Bt˙j%/2Pq|vds֬k!Z&t#PRJ}[[Y-E;P[HVF$'uZ&l1VDy	3S=[2]xbhgXdUfA6TnNnBX7ڒ_.AFk\X<7i9BjQxj&Rk4q6Y]"\V,;asPЧL=Ri[Eѯ:VV}A2 𸘋R-{]ed+F}0[~{>}X"ZC]O0ĴB.>p{{,zl%:CvƯ* ,yև@b_}"ҵ
+UcϷ+HJrMSuAڸbA/,pLϟXusWp]<!FBEmo&'D@O[sg({HKFuP/xQZ0i`:XZ-[UEjoygab98Wv[X#VsعtCNi;j!6z\2a;+JƩvZ?z^ݮ(TgiKx},Jb{GӱZ9 l)K(`(а[ 0UEdf K=gi ǹ/z-t^FlZ-JXk2,9MhlCDR)8Vq |.S=DH}4PG41xGVﮯ}nbJ,t_ѝ=>^@N{m`kܽsA-ڥMhEDb>g998hgXh+IsE*cDB(\j7[8ıR}̦頑rYn7<-[J-v7lrBP̪9;JlL>
+dKĭXj׮˟(+!5ș\	qR/vh(6pŊNk6hUeIY"Q:)5L\QP-uqCo79U1Ƨb]09noݿ+Cq!>^>Mk ŋM#stR$eUl/Zϔy]r~*aɢ`,@k6r&wVl1pT٬Ffe-]ĴrVoէZ%3qcFVJa\=Dy:hlz
+T$6<o\
+hS}Q+BU\<ru9?<tbψ@oIBó/tG-&g)`LW83~3w=[wl#¦rt[!qNcغL|;5,H,短tBz>)'Sq kws,;K8EDI"I1W,5#ϹTZT:"RȯcgJ(ğOLP೯?W<KZ|I'/O/~c=iͳWTۗ/\g߼_z'_<^gx{=y<?O?~O_>{+sKWSy/1H~xo1싇xxů?l9۫ӞKgr]'-|@gZlsBYVt	*@J}&NmBaI}}fWޮ͛:'zgBuxugxM37^c5jaePepI,A:!ъ Ѫ_e zǞ<Ps
+!9SU/!V*St lFdK9nfC?Q~]v6f:vݤ8q]<NXd^QC> 缋btԫyo;
+߹#wZik3hP=WN lKިKc?&kR:MCfNܘQ᠂{R:k\4cZI9غ%0<J=X݄^y 4ݼX+Be" GV[mW:_鶙f7vcR]N*^鸈Fne) |}aE,=1o=|dRY(.ز8 %>2s̘^ޛPYzZt10cRYúqkv8|Dr:VR3W=@n:9??SշN[79 =?3WQ>>Tc(?gFQ%
+&Sᾂ@AפanrOp]-Wɹ3Dr]QWaJK!!Bi24^h@b_+&~yk/7'ǤȖP,8F宧D	PcXxr>[LvZ~qM\tď[B\q<~%粆4Ko9UH  Н[@?GG/+rd?̥:-f'Ӯ;b6b'bSZ4&Nju}j;4a-NK\|QDbBʄAE _;="RD˺PGwty;x2!}ŭ&`paᲁj$Ak I$zηàs&\>vttiD`ˎN|u!f32j_\4hKRUP>IB!Щ"ƅݽq$r\9tBҖi#rN{K3ɅGL݊ݴO򀐾`;],9=EB89gPŢ^Xc>bT8Iڦƾ'jnz[%ktuQ{j2;*`.5DN"dn	y#EjSkysZuZ;qk @+j|N-ͼ6F?v$E`B+1(9l	O7*5Lm~{ۇ?҇800~]E.axx'5p!oH5 ު(Te9!lFI+`0-LepCϳ
+UM{8rPͳfGS93_O7LukTM:MŝD0M$U^LUhi1>4Ο:1y˿۩~S_<":\ ;f~18+QVȡ)D<qH+2]Ӷ9#xզ~GLug. )c菡R)(^:Id,Lmsjp7/`=e/I[UъTwr=8^+F.f" 'Nڗfzo }*s|ԒXmۅ̢y .ӠTQ%NmؾdU~@ BM[Ϥh_u9B..
+!Xߪ?}UpMRlbwpFwtKUĭ+gRmǝNV/T(r!\ kST,t8u.?Q7L漂ZI/pa&̘fD\:p(ἥ5޵qUs
+9Pp***K0cw_gGAQg	{>ii8@[cE>TVJ8Ɉ E<bʵX9cMX}=(9NhdR{ C\9!ydV Q-nxzdN*3_>},kEllQ
+Zp@^(<xa٤UFѥAZ@q)ߜo
+C̃mح8sHh!=EU4T5P5oxm`^(RKDŷn+toIJIOBF|+Bh@(Ҙ nR#k8,I4'SYXorK!nوF;h&}bPŭF^R2E>6%Z0;hv3p/uPDK[H84R:Y"!D@kHJEn(pη^(UF$nD\hD.22 T4#_f-wyBǾٻ
+A;A Teyffϡ~\兲djbyc9~+b=Z%'7Dpg #rSƟ{:
+
+oGԻ{?5U{?p/-FX~n[dnXrv
+VZ>V	1EjzuE4W@\XvloE@C (eږtJRt:x.Ӣ:e:Mnbq#\%Cq* E[.{98'Y%n[{2qm%nM9|3ev4+cg	q"T3+PC|`ߔg䉰ԉƅ&hKȟM{mHf%YtKӼmi.jqML36icre0A^+}nU`[.fUjr6|iQ	nN[.$pQC.{{;}tUU$~}S_!m]ѭ~ѭ:OӠ;Ouyϖ7_z	j'(\ZT7~![o,DsAqesz7CI;cT'tUO_8q)Ɠ4jgVOyUqV4#4L,-с(7XJ٤zNU#{`dľgպ^VʫX1{̉S7]Ikm>q=H;[b54*8rAnk5h!f߰4n(ѩ_tu%weZ½+/ͨ]v9wW֪'vVEEUx1耟XdB(jN
+xyg=wZr˔9Su6VC͡kshU|)KF{28r_V¦޽HH0,b(-s!6483oS!fE+b}lZm9|rZpTR60En"}H}T)gWWr0N&lAnj]jl|Uj"eoG-z-:&̪ gpKQG"w*:Swqp%Ǔ|#XєզJzic7%*-AXID`}WVx>̳;F%g,zLYɲǭBÉ˘ALbU<XPyhyÄ$#dQجy/l(@S_8eڛxΊ4ּt.^%I&.13b8Ǒ+BF.J@5w(.ݶֺZQkOȒq2511f$4"wpQa=7_Ù(*vvѫP5X8m "8~ap+X3ĖOV_o`> 9h<},A
+hL|a\#=N:>׸A]0]SRql]y<L @W*gx/jtUזǉlx.NwF7̓C&꧴X¾T6|gMMDR*Om+aUwB7VUX"Z*WGj.`VTfbO*~o@&
+)
+ٙ7H8:2]%Y!5$6BQ7PF2	ˏ9r_36bA{(iI7T+on1Vg&n:؀?̔4 Dd],,~&,rHUJI-REFaCc(*Bx(˥ʹ~¾A؈7fh$@DA	 5'TsfD\`"Q`SOÿLNs"u'uX6SӶ<SƎpQҎ跭ӄxMN	ImE@%kc4A
+7.rM0:]
+8%5
+Y17ZP.3|&I|P_A^mJh2T6ڮdjzu4ciať!y;M,{Wr䀼e6k;eg^ZtKZ"i}oݻ:ZY/ϖ?Jd`.Yϊ&Iw_Wo"衮la$rg.OZ羕/%1b:E[T~Kk&AI.x{bʹc`<7i;;;C/ue'&Aitb'wrWqq%~j
+4S55.^}ͩw3L)ӹƽ[WJ::R#̗Zuye8s`Gÿxu0|~?Aز(W.B0r1Yق+*dQPC<Dn'ynʕ\]ue	@am.ĝMmq^Ҋٮ8;sX[V!bEVYOBMYt]D(h/7?=:܁]*S_}}f\Z[0 Wx::>mnIWbSc@P	&
+	׫@$jJeGI;.dHYA}yu<R哻D[H>rpT!+θתSw#zUC.iQY쵂XM!ZJ1\|ã3H:S9wQ#^^_"RÖNZO	/nAy;UJ!}>[zAx,ѮtCG]Xë!~E%f5e(v}m94x;ka&}Ȑ-q~F-%hڵ"MA:ԫ73h^\M/߅'@_GAӮ67Z=!;7aO$BW/ +%Q0B{ZbQ&nMD!-$b(5qudZ=~E?v~')ۙؖ)all97ۘVH#J/+a",{T3C4=2-ZLDNTߣǴ	2@-`nJrYܨ߱/쬔#1+bdHn*BNHk(~԰gh~<8*{F70sZR` c6
+E.v^Zy?|{:"Lq^pOT/wIl!WcdbRJ>ۚƭ;j(Do#k<Ĕ߻l]UTđstNsE?76DJrź}K%7KR	3.X%.nX X@3dpzkmr lnS=pHRZP-g*,n}0
+ȍكљZlt`wnosǵ8ss%bvVe^1~hvoe_s֣UZ@vR`_BkcO]k83oOL{ߡ9T]lo3Q;fa9x?	}`nNO}ׯz}.Hۭnn:yF	As`4ʧIN/k߸yN|OieKCvF4Cǭq[(~}5v8wJZ;X#y`NqF%&~MN^g˸n嶜td8X$6|HixOlMv/06lZw5W؊  %k9p_yFUMsmV+[[hz+`|_u4{3ү$`ńna< J7ݪjSWY}aPC[j08f5*+t,nYȢչE)l/Hj߾qm8рṶ2JZ8'k^9jp:ƌgjYp$q5)t0ԫd_8DQ%Xc &rMV˒<֌eiKr4G_(%(Xy`IN\3#@P{^k,"+3x>J1'Y$(S<LDfrz:0>s
+zY#|XO{f&X1Eχ5Vqɯ<vV ÂvLs1ׄy$biLq <(L)cUa1ܐRo]%@r
+=qQklN9"za_%}2ߢapt`Hb |(x{fo<0F|^*<]N=r@avINI$<hAC`e0la9zʖ=h2 OOz{]ƣ[B~f{YӮ#u:dvm`3XӉ_qxJ/P0t%hreQ.FGs:<>m5,@%4=gcHf<rTe/?m{fl1Z},mmqǍf)-1x5'|׎wl1	x%p
+i639;D(
+R5*c!$X$y{BiYGPXS2A0wƬH5Rd^(˕|4IʉMV]G!+^Lg^y+Jƍ|'dX\Օ%ǯa@_@%L`ӑ3LW.aDc lO)$ k՞t]GqQqO$bZ }Q+_rwWko%|qZ0Ǣxy?G]	,$#"@'i5LhϘm<]s@&UDozE;I2팬n-H968sg]P
+"{ZsaurRU31tT#V:	:!qoK7;pX;\I,H]
+f:Wd|nB}CI;p p>!%d%ԯYrM
+NиG:`祳sG,e xJ:IJFpќ7깪`t=oٓF7N^⛶"2!"wj` ǌ knI
+^SDsr4.6 ÎڥZ_ֽL^kcF.D/D:`TkV\zfjz饽wls%G騈DMւԭLZm`,/v@.|r΃XRFI݌1Å$JPD;BY)d4|6pM<=vR-CN.f({b%]$u?B\-QHW'I	iс(9YAȂ$KzzHrlB=W
+3|&8\%h40<ȜB;)Tk-zWS9ɚ"}osL1K	!oM
+{xV,x-SDu]|Ňۊ>J/^vm9wgU\%x]lѨk̋z9YqxňO$Bwz/*;/9jUZC
+V*eRX2ӝb~JGȜH=j/+E Ce2(SVS)ۑ\
+4 u?1Ƴ1g)pǅƙQŊEiawDoNǴ9v	8h
+,u";$`~cnw7_~'oaGR"vOڨ6)|B9K	h75-GYFlً4?gm&yHr'B.i;0[U>bHxoo?ajiͫ/rDC̊&U1'-Q"?|y:Nˎ195MgZoe_N%z9&w"I	<niiZ y|#s<g:Xl;t&係<,[Bh16p=(/D54 	5!Y7Yw߀ͧr0#:r
+CnesL>{RO%',:Ae0T,uDR,9200	d93]!&ۂvqrV,OuF$rXQAkPZK'N<ʟcT7ՑM 0_"|bb5"Sϲ@tMc
+`yC>2-Ǵh^KET|@tKYz++iYJ-f*LqŎ'9LXл@xMi
+y[(8 ,HJ>tŻ¶Pe+VgUwGRW>9s""VdOM,܉SLeO`D֒?c%FrX[eQ!!R'D[]ϛ+Z~Y2Apq4Eĉ%cVKSRƓ{ͫO)IzGN
+ J79k&OB=w^JțG67GO9CBU.b 1s|gȽH;C=ȺJTfCqn>e5'Aglɛ1[Nl=޸3}܁Be=whS9L\OY_1CT,]!ͻ<ʚ]# ۢtD&¢SK}Q'G&:I}*~zOt P{yW}#:  {ۭ:,:|N!2>6Rc%KVM_>VTeڱGI.wqZ!a	ج\P{ ͮ^z ވ4xHRbg5%SK@rV+ x̫-kx2v؉\?L9XL:`_dJXϩӴ@yu&Jִp9׺O+\:ee~|{Osz$a΋|YzN5#_T=q,nqXcRrAZIu&ԞI/gGo."L1e-zN'tǗsY9@o7d,GsC1%`dlNA;ͧoDhWHs6sq旚A؎H丼(Rq_[7!c8cgS!aa0IkYm!}4Ku^I ,vD@sc{ffƔpQuUiCIxSs"[WrI]ky4\%RXն-yxc:IIc .ku!:.ChFӪ$h$iG
+7[,wz47@J=(ńk
+BZ%}\J(=_9m)&&Q?W7QQXU\k	28SSeGbMxuB֝bby3iL
+GӒrHph"mX.2
+('Do0a7U3I~df!4mǠ9M3Eo6yC`)55YSP޴Zؽu.CǢ loQ3 CKݝݿww-9!ivw8k7sn'Cԙ,g|87IŞL?ϱ>g4(|(J,ѫ%)pcjzPHv	A~2YnA-}tRCoI3g!E<T%Nr<C(rϗ4{0
+?q$|>ݓz!I	Wa#xlr4?x9}[)\[WE t
+(w].
+MT)3Ng$"#EFE~XzWT:by|.'
+ME%az\]n4[3VxذՒH-Sn,g`j>v"=5 [A\q\巤a·.w5 h_mme%,ih
+lt{M6&T'r1[.ViW.%	t)`JGEbCG[QU46%[d&jRzo}qj*t~瑑+ڸI[8ўNH8%ٺ9!˖ v8tHFǅq&.3s72gm/О)y'_X Щg%ttd&/;}vT80+5(牉=S>mGj}z&PsOBQhJdэ0p-,S[uv{F=\2݂r8;|p6DJLv9eGITᑄSaeKG34Aq|G4af[[a^bEy/ wpP+[Qx@rpjZ	&G Md b0?~βA}/Ɂ@ڴi+bFvY0,JYbÛoىHDns@	pN^Np P6No\&ݸxȅso_o&lmWuR~{Yd>deCuI")|)8 CG$gH~ʇs&?#>fH@
+!A2U֒n]˕tUQ]Zs]DxI$ 	B//eI\+|X@XL]NsNRe*,L;O6G"&bq7 : Orqc<#;EǃXha^_ĚlrG1`^{$類01=7L((zϪ! 
+5UI>kd,X$bP_Oz9=EؗO<>y] 9+4b΢.k``w=F/U^;Ȑ^NŔ9Gζuu}rn0\|+bЮp`YK\.z32&rz궢b|bf(x	co  }V.JҤX}L !ݒL%ں~~{GӠ"j?>ZdLg7E~2gKuj*GAU85ILdmDdWS`Ė8#GFQ7At*͡Ho~;>E7g, S^E#Ɯ D)߼kKw˨F߀#zﳟ&`L܅GnL+};D gU 耚j>k9;GzZWl=n5sdA1Rok8X].<00u;@>]wiT
+	??o&о1uav,9;/yRis~HMdzݱMGlF!u}4LnƯ}*qEh;f6ɸ	>0l;sޗdxQ5s[ hw~!6
+$=c]RK&MQʰsLCrP&&+UNOc&I<e0S+q@Gz>8E|@%-g*V(u,Ovw?Xf[x)Vjz/?k^q_|~w_E/?/w݄YXGIpwHBLtǙǢk %"ɇ$.܋rEtwox] [xW~E46d/`0mF՘uc`$'*Ph=̇!?LQ6=.KVp=`n62$-0^3&F-kgC" Um׭sk{6_-镭]|Y6`)m	kЏ3gwwً$:zݮy2._qQU{OrVOtRmosX57_-?bwg<bxy,	pQ1fCtAThH1-a/b6\Ss"
+wmW)St糹)IkF|{ޥV>ѐkH\򍀦xsAsGR	)	~Hy[<\I^9a9=4c݋t(>^`dxFWyh>`1B`2 uEJN(&VOʉCXI"V擻_GOIy(dy .tm}:fɻ69+>kj,{H$4x[e?6"28.0#SM1Cp稏wG >`[c.?LY<ᱜfb"#cgX.J*\R<q/RK(`eπP	ޅ	c&v]$ c&\FCP,=6UjS%t(WHRknǱ8YfB.+Rw`86['	߉gtTsQ^wϽUFns1PU.}o
+{i'B50,[^b3w`>ۭ	Sqŝ%Ĭ&#)h^*g۟%L@܊	r[?jA*1_ÕeEIV͛JQﶌlwgUIvCht4-]]5G 
+12A$0)M`xߴ*yZa>6]t
+qJL(Oz~A)PY6W̓uST</ߢ¿Y[G~ӧ[ǹ$(Di/V $L	(+)>r1PȐ2<l$G@| _vQ,U̜$'U)xRar(C;^uVPNƠ\wz1*ZUVI8hFMJu3x
+薛Q%}2P$>1㧨w+197oUVˆք沢-jXe;HCJijxhVJ~%&H1#(t^G&oC3H/u5YʗBwݙߓda
+Z2<²yz0xD彗bظx	iw`R4r1NnSLM&wǸ:"yhV_YQQVf:7PUL}{ot/_0vOZ
+S,d(@տx`/`mēɌOlvCy>,뾀3m#@#+O@^m"^.&\"s-g_MNFPY~xz_L8,BNAi[?fy;^&N=5nԴFn{J/+[Eze$B6cп
+!V}phIĝyn-"դGKb4FNW<~EBCӛf!B&^YUCv]hxնP:-;'cH2ơ81oP_U.BMD-㑒LzyL2&u3%~W1-%)W48H؂3Y^c<?-:+xnVa}G?|GO|7OGz?=w_6\exXzB4xuRUo*8x(+<._gfE5&>4/G|9DkZדӽjGFQd(3
+xP0 C=yP(W01XV:/4 ZMeGtxQ)g2kA350Q>F97t
+䮴 <KcJ4p;vYKNbcXO3ݥ[2Ghcs>o\MĤKN0@oAە[@t\!o7"&PXQۗ#c.k)ߋnwp~I@bk6&R7ۄ|:{lGa&~yOo:WW54g9$lĺL1VVЗ@(WC7zc;wжL/g̑$y-#%mRkH͇m\97D[Pmaix]SE1l|&9Zͪ&XͺE8kn|$)Fb#0%>ݹlr,ղ 0$Y^2чxD	_-zқJVbdZ.>QKdK-x^W&	F>
+unGhu͂ѬFM7j׮ݭ&¡4r&Q2&2FǽL2ucd8#-8dCO2eHjԕSS8%JB4AϤ÷n+JS]ISj]%2=bZ-4f'R7.Ĵoъ
+Nݪec])7A	|~slzrEn<tԙ[˱
+;ДgybL8޴# w&^rj$A0kU{<	P.b',ED;FEb 7-ٮk@rñ:ٌFś]Ou]R-zYp{hW*9ily%njfWD2C(&{UyZ4o_vז³#=Zeu)2&vA7/6U&j[09`3C'vqeKT}\'4d-bS">Ct1ڔS82yӱdrO%_v	'F*};C[W}	ð`[kPv|gPj_mb5μǰyad;9\^M&egoE8xU`x&8_36pQMNท6-rzXs6d)\D̛nrMd9zp jxte ^IE4o9K/ҔpU鐾(Э5Z6?dҙ	4Ex*?QP4w91/FEeHʋԠB@Xc!T%fݣY>t>]nQY: G@|Br^) %']=1??)&"Rx܃&bx;$I"HȂbM@ϷtXNa#0Z+QB6QdzdB)Oԭ*WB.䓋s7X׫z5%
+]h)RE&s\.$yu~^
+ORFj>`5hwa)T8wXevۙQj2X:gC6#%1{Zb<V3[`D%@EmEJAGFŌ-\k*^ELN-ܣ?u%OAւ{F^BK/c^dt(AGA!EqHk~F%v+W};"Z}j[ Pz~U99ʡ/˯F7Tč]o@g%Yvw{~,=w"NB5JSbטb3µO_zd9{oehy!S~XL6F #fE *0Z%3{^s2?3ھ'VYJjM,6|VWH9s9>5tsF9EV|#9'(0Xr.l~]A+T«Q	X훳ZX6Fx8j]%a'Ѡ2~-F%Es~-.:4#?brhD*gfi'0zW돏h?3[VK~mҀnbWUI8G%St01rݝ=RU9(XwB!wF6(9I>ٶ&BFQح3]˄ŃqсFHf0gI8pܖ/Jm@k@K;sD<76tmפޱ;ǘXq0[B
+c8u6lcjTOdkwNZ;X(t:8&P#Rmą}֦yYz;NڻFRzZU5mNsk"Bz*6(0`l՚TSՂevrb~oR["E6}RU],HI7m=)rt%
+I^!"z"q?}򌨿^ϋ:Aq݈aF)8JQ(WSR<V}5lW75OOo缮'x[	v`Gn,y;0)n%j(@{u\f'v-ImzR;$exi)u&^5Xi*z$hHc;Ia\V}[
+:Ic\k55A	n};+g5Ǉn5zDǧq.}fbm#X+%Cc/h*T,j&_.sN'B&AdScILK0ui>~O)Y%AbnbI9&#0{ ɷb"fTUNLᱳfѓ
+a c">;lϿ@#k(i.Ffy-Xa6bhХ3[p49u9OxcG%^.Z579|	"?(T/9%M;p|d0,"]m%#/brc%/B|BͨeΫhZN}7Q1)0l.Z2vdA&!F,oNE59E	IF
+nt80A#DGU4]X(-;=gPG&#a3(O?N#{5hx6SK@Z{<]̫rszpeBvxS A!Rh5RbpY,uV''$t)(&e\w;ҽ11~e&7]oD.䪡M:!H')0sP;=k#MSYgWnRqT>[oF߷77t90f-L#$s-3b6𡆎Ύ#ؙ1.fz&Y"_9fiaٿ~{ʖ*HF\Ӈ#a6OsuQp'G~w`ltVNƎh4+AzO鉁(G򢚆nj]Nʔ*SAEg<!M_QVBowKK0$ET̬vO\:9?lT=eBRF9	mI!5[9b$+[g0߯keз9.;Xh6grR2<7p4<G1eȱ8$3T"}35{$&gҟhp)M%V.S&ʉ+ȧ<N*]SBg?9݉!GLC;'N3vC#W	q4sZg?0h  hψES>/O0@`@JD6.W\TlTˎG4ZDW/gw>eV6l{P<jU7?kDpNIkr1bi;Ϻ*T@wM&'/?/j-O14)>Bg|wˇ@9wg1,0_qN4_u?ـRN_	PQEDCd,wY0qE}#sqsT̺4|&խ<"0G}dGK&2B࿉ͭ'Lodp|_\n0=+PP4B<|ȧG|Yrju^O]̙0Eq񚾻ap|o_p)9gM-^G}F`(.VDeJ%K:`{%:o)Y;"C1 2Hd~1Y9x<>xk8tmU2ʜ.w%\[5_:20JڭKj	 ,etЯ>#n«RGvq+-1*䞂=f$ޒq/&h^D99j#©1oQ%(@/{ۡ[ ہP;R sDO
+&^8_a".Yܚu|XlY.rN廩Mrf+{rbt%nBpB΀e=~
+>傻!'`'c-p,o9)|<
+uo[t;G˟IWDgsYz>tpHUsZJ|s!S x9A^zv]=-E2Kyx֟WPh1RJR=KfeQ~FHĀZ+Wt עTgˡRwDy+jh5q\$ik@a:ʵx&w]r}E1վtw+|oxp>ӰFJᛋ9Ew1)N(bUs,q%|޵ ˀJVH`嬊j]iæ%ɮJF.s>3R0Oyho#|T.#{6&}.1qlm^q(V/..SdϷ1_K<C,ă:Ltʫ7cGvgH`},57Za1VE|>ڟII)c=X:G1{vE,CO<z
+9#84EY%KpIr6-(.F)5{:LzCHFƩ8R&uwA,^':\:ȇ;b~ZLޮ>jv5s1zg@^=-wFN6 Udqlݕܻ[`r4ic@ᕺ7,u/Me64&J$*RY7$im\-VaIAWbn?M73_Ē6z
+MC[=0K"Ezx1դlAYo	Vx웻;ևiΦd']j-[j*UUƔ&pxKSTAwH絗0gŨK?7 RjoPCdo7Q\'k,*|*Q:^\%[n-R.,KA9oh%ɗP(WE Og{+UJQ䘆cRY9vdMKZB1pܺuA(π#pqrBh,f#.;/o7(= l՗iK~g>\A
+V4S7Rٮ Lջ7&=ޡ</'ρ\9{?8U)RE1r>yQowK2kNv5P9HueZU^þ^`A|Q	q%"C`
+\'@/VooM+lA޺	R޺uKIgZ[Uoɖt?KӲP8D$Tv;%nW*l5<|WVI;W(c<vF/Z>p5ca^Q'lSK;{rX1F张N'XO$s(p8F)6h&S@xނ3O{2q,dQ.[YX-*XW{ ch"H|oc9,ELx$Jfo l1NsAsg5?LI'7ئ%G틥=wY`H80U`Gj@#"7.1OKxͶ=5^Baj2"1If_4N$lwE.0&qҭ{1xÌȺG8#T:ƔaSoHԚ82 -M+\׏Ƕk}Z-WjLj/;)B?iżn4a(ΪA@DdM
+hw3qKGl}[[f;^"yCQq/.6gŧ'MbS|JBw{.o'A7mbcsB=GdaC텛1|]S5zɐ8}M)x_{.8Mvbt+6F!g$t;FUڼP݄D@]
+[R`7RűeW\Ejg'_>*8@/	.Y9c$ۄ<<""$ǷrQb4Мuz<6nI81ƭ
+8̘,<Qb-ߏH9Vo%PTcQʹqHj8_7:uuxhQ;1]^lra1GhXow䕩FGbz{b3_tJ]]']!#`R0Ɏg@8@:kc6g{nܽA]qx!{lR9N	uҔ_8'KbБIp%ۣCGv-|O~G & qFL3
+5]5y8}, 	Ƿj'5:-l`۩WK?ӧߙ5Оl`W~ 	7NGFǟj2ȋ]wi%qWg] g7ܣ_o`<'BԄ{	Uzcm&0E XxH~_@h8|Y*BIÚ	.vɨAȒI<pg@1`q:m}CMYkjMJJYy% ;8+X(\2Bxi@裻ـ!;RZp9.h/
+R!a%3,3D	A=uzw<(7~9:ǅgH1=rMϿ{Oc`42HƂ%0>9?h㓣 4LoӚzC /G Jj s/ӿ4p(9}eWҿ(qk֘/u&Vf'E_M=nc[!CO{Ȼ :-fmb@I:Q
+elx#_o6v9|OInv^˓Kr)~5CE4IY!MWu_ZenÕw^w|0y¦~7QċjM=y<P_
+93|-dOEw1̶&F$`)(M0
+G3Cn0ehSMfIԱ
+*|]*<}:q;sB٠$۲q˞Ƒйsp~>tIrFOӽ	FYY>Γnܺb0_"/: ) ZUtZ#:JctALB+ЭK=ܩaz7r'P=6l3 LĮx݀=f_2hwmݨ9.h1r}@^+Fvl8pҕw0^$T\e{s.(C%Ϯ׉:BZ:<[Wzc@r)]qpOzL8|5,Q$
+0(Ay`:楄iz׃mgwƸ YbA1D3ܿ	It6{\[^`LA(@)`>]>I!pofZp]N}$b%/Ɍ:|nVvffl\f)&&yG7]0]1*M,Sw~9HUboD܋6ltˬ3=dK /
+hrX>рׂ<< [vVn5WWFn( V1|n$mCecZ[ӌur%}g(ͅ4V7WI4kbi߭Iɰb=s-os(T&	I(j3+gЇ*9/a	~9K	@Yb/wOl!Wp'~~;#5Vx/٣O;=FRMОE]Bto2D\Kb㠦NbLb:Mc!y B_4U0~ы+w2r&s$g/c Up1.#KJ3sm5O[=ro/1/-gWc;QmKەVrj`bmKzh~!y.f/vՄӖez.M(sɆ
+{B_Gq^Ǔ XO"履f1r
+f*hܝa`)_ʠTbmV햏LwQεyg&Щa|zϤF?sylNB鎟voB[؃(>$3hKP{{2Бb'*볨Tf/I)Av^	duchh6צFJ+sxփD{J*Ҝ<9R8	`[Y܇\0ycQln洸x`q7̸M^c0ȠTw_\ ),F!q:DҪQt"." qA/HcK6=ߠ&I ne"^;g	܄8;&C_9򁦦FV&;Ƶr`!v["l]Q^T?#Y>)O(sQ1>-6KNuxî/ζ|}GfG+"i8ċG/S'ɹ5L%$j!1vC=YHEK	7_( FJZp
+0YK'_]qZK!$[P|2[%
+n]u&q5▉icg-{8Cml}՘ba)vkڈkPv<[0r!nk竁;í4iԁ,c6Kд9IOh1TbB3#4?6t4mNa*O!@5$cF,O70ޢ-q٭t[	(e R@V[K3ߺ}èh%Lm4֯M}p{饐Y
+L/n6(R4+֯&A}չn1o.a5hE7	㏬ƟKz*5F/ӄkfu inG%|#.:m(lL9F%`CW`T	B!#ӣX$w#$閲IUE7BkS}B1QHG8:$I,iZodߎM*c)Ctwy
+9mK7yMXehT.ox5G?7uM7Ehjn<#ޠ:,A8gtEAT'ҙǊ#Ƶ͋|Qh2;jey9A3kDi*	G9]&>Qظefo=~ОVC4oJrq	3]j>.o~GoN@M)jԮ|Ƈʫ];^ d7RH\FnOJ2ϝbT.FҦ;0=@''8 &Z/7lXNbykBkHM	]{0/o.onL^L9oH[64ve/*~zw/)x\Ē%Ws}кꩋ35ry)!5jKL.v؅o84yQty\gG9&/&fd'HY>,6$M{143
+s\0jer9̞N:&iQ$磵3㉹L?bAj*L0K2)!9vpMd1Y%}ȧĊ &S5o>p._'£P>r97]G$j sau#^5ͪuԿk+7Ff|u#*-)Xw(OIOMXbt*ؐ_Frأkps04ra 	Lj[gt.ÑS|2z4xaϋq	9gY.-:+qΘ6<~ RK.X|槈taῐI0HAzk&~b0z)QJ?\Ap;<H\jxM|a`\CO)%$aъĆ}[HyRr^pu"|zo
+BJ?Y^`Q/ω@!Uu^>(>1?nhzsZog
+TDR"Pu)8ߖռ.1^: $avB"(Csi4L۴Eyk\sS\^h]_=7	˱-sWH^tnNbÃq<1<e5	c6XVIqw|^8G;Wb7`hѽ8?oK/l"wa-<>9
+/1q¹@s^BܵLXHj 2nW]tw}C-)4|7:V+^?eك3U&4r>ZGwoa`>#ލ*P)jQ%Us;chQv֜f3O/vxC.\m[m@bx:Q>TdoU"Y̐8Nn68Un
+'B!E6f?&P`ptyD PxݑJdSyjp9e/MFkWfc3` arl_y q]V2vBOJ>mxmHDF?a5Z+fj\;
+%0Blv&6:%\>AW(7WE.?z]9H`8z_1%	P/wcI2f98`⾂$êߺ@c,ޕڷ2]\2x*Լol.2D/zVX4Zy~(qvI,QҕfAˆۄ	nƚAж$N$+7_zpXz+LnH{CdB\ϙ!1DxjlXAƾSi3XU6D-`#2z(U+F!aX!mQskЌOx`q58Æ 4A(=ab^8ПitG- 0>D{KD~ݷa"L==S{5fGΉ?T#'ry./zfe-k/(E]۳_V^,J8Vߛ|T{</7AxV<Ɗ5e)(cadsɖF[(D^۔.zܰ5ɢ
+~'0*G~]I>!A师tR?/7Dlc/R?o֌4+/`H;+i1r!um[ǞҧhgKRM#5qXKhV5pLDxi,LM	H}wnCB?:"a̧||vrh:!/{yORA~W=ۿ;2KNp_(Gi`9 =_yf-d\l26M{gu5/0dr<{/et|H٨nO{9;uI;zۿ>`-[P؁ob~RcwI-vx#>F߉9:+Ҿv9,kF{޸7ۿn8r9G>tP/Oztvn~ i*\nW0vC5t秄3T_3mMoKgW|]3ܽ~;x~|@'_qu)~3+_(>NN$<xQ`Y܋~K2;\&/pz-:olX?d@q6p@|pߧWx	_{sߛvt0w;0~  :OtJ5cݽ=j4]6mok
+&r۴_@Aip$y̜5<9v;j^H6ݫ*%z]|TfCRNΞ{"Ǩ&RӼ/vjSA9e^̈z738} c=8ɲIcoeag<CZ1]&+MV\w 3ppvІ+20
+VCY#ΖnPP ;)jjzy^#@h4c͊ +M(|K<Vw;xɴYJUXp0E&Q6W~ʊ25(טǘ9bcXuQӬ2,t
+2xԖ>ɕ$JG%,yXݩ5mOhAYو[AVWxx8UUrYR&%*itV$ⅧiQP5Ր#]WŬXp2B6J]grJp)/T&C<9)" khVU\J_N3ev.oB5mxm$T=͋ӲLs\ 11z/cUS>F@6`koDT )f9YlSd2Ţ|U)A؏e"9p
+DfN ޣPLv|ot0)nѦ١h\N' W+MOLlF(V>Bn_8K62a<aɲE'!!:D;/l)o㴄G9TV&ph'znѶA2KOn\Krp	'd\aBle;T+%C>*Z%ݖLڜQXٸ5Y2Gr
+M6j9gN$cCO@97n,xBH'OZm
+Ɗj@ߢT@S>)õU4`;t\,.
+LDư(1f^dv4[ 9qA2j>iT9)ɣڢ}3ʍIH4wD2ϑ,L7흼	-o(π%YXD }6d5:g&t6rU[LPl!A6ݞ-/!;Bёf
+VO2H(Bh(@Q	}׋%erx[<N ܇s678hXA^`5Q;59v)dC*]l-8WVM1E$qf;'?N%yEiƱ?np#{ºJ)DQ+af"2oM`Q~abc֤|#؞_='h7*ba3T`am6m8!?\AN_稏XfKۍ_-G"ǒ]1_|b =ThI['u7O.	1U1ޠQ%XCL?0ph"̿2SR̸Uo	}>>gFBA-?lU1s,;hN)sG-«1e0	Ҿ
+7,*F	4Jf]y}sbgNIC̾Akؗ| xcSP#?y.zl$jT+
+IwYWcTǵ8fWu'<>?%˘Uҝ	#w)b(cYdSfl)b6QI(>ZxD.Z2ݻbm,\-Gk0cse4Wo<|p58Af;xl3@M
+Bj}$:;<;Mڠ=6o;Uةڧ+eڔԎ/ a&y_m.9nXTcT ҒN/>~Ɂ)"$m,p8lGzD.#=₫YtMI"g'IN@P;fP=#irU}q>:2?_UOYGjN?l
+zp%WGmR$;azj^`-3Y.VtJr'a3DγV=5U+[hAg.<jKYH A|:/0{f(Q+`+̶pJ[2#GglI|>4laL7q=Dm@dxQ#cC؀L\pҡJHw&Z*O@k|^p#V<njJk6(ͮA.L9icU*x1x$CvdO(f5g(Cm,g> //PEs,iGa3B*jI6+;	{2?2	%γ/^v evnhh+=4?|&2yDٱNVmJHohEL DY][]T	atxo7x2ߚ9̪I(:tL|l~;1/ѠdxD=x[.XǀRꊿhcs1IMx4F';IYw0D|$?.&?׳}mʕoio:_?!y'yium2.،±jlhu#*/Pۏi.k8uEjubVhPM{:PXvse޿>дL#o;=*p)yD]}'7웳D 9kx%!AI eZt[^؁;+v{PacMLE^T9:5XnOrI~i;RA~^m~&DePZåxFuîf7u5K5@ywbֶs7a3L#
+(+G6'^$\k75"#3/Zzr`񜬣5ӾjyDX *FaƸc?,dȆ˞"qQ֢3VHDew){YH3TޡhYL6;C4A@ XvR q9ph%$h]4(ƴ1~(4z|fE7
+Ge'#䛍cN"&ed̹e82<*7\S$D]N
+8070,KhFCsX6n-ݰw瓳b3q!\Pxs7VmPټKuj$<O@!3ge.Y&a;Bڢ O@73|95嘴1.JizNp mXFg%kzhəi dxSֻ__NGN?=[Up,	&ga 8a>6P(| H)IЄ:?Q^G/AFfLx)I9q/fZ jD[5Ӄ7%HbB_3u=zvwԹ3-iEʂCkwlrQ0?ghxCF,hnox&v |t>ۤ0sOP)an*m/qJ/cgcńbL\Q(V)k$ڛeOb)	oUqҵ<D!8l(|K`I$pkܰEfXa!8I>AHP6ԟK4L
+Y^?>>>-ấO
+[7M`r@#36k${bbc35rg[W`R0जaNCHF@"FArՠ.ޓ.:xQ3z@ہ8"ZPiujb(9F|fl^t\@D24Qo>uGݴ)TԆMk;Hv\є$a72c]gαt]Vm_>_{U-Q=ˆPHgc8s?xw1R}XP;sN3s?Gq]y%f?[j[+FĚXK11&ǐ\V}ZmY]I#8fՅǩ@E.(]D.Z]3/0	Btp5ב+u)[t؏H[gnY:.y68$HD4:EXH^ (?tQ`ghU	oO:>ƏuLFuXc5"xCFC"Խ6wyH
+F7ӗsbǌd&0^ۇ8^	Q;P	=C6'iu~7v)i(|D=`#6,\?3/=(I,&hba$zEq/8(ŉa[M"/ȧMѭB(|ox2e}Ὰ?߰,\~xxdd 
+i^Ns\N"hWٛiuQ!$GV :x<O+dم'AEn,sV%_]B
+!q")<$l3 H	`ajKO^:Guw{Y=ۧ tmZcZ˾WOۣ\0>*vt
+3C䋝zӖmC7M9ӑԜlp6/%o.3f8]".+F"$Um4)V?l5g1䶒)vq1Cx`ⒽBݐ:{pR-)6wIC.5#	F65B@aZ9^
+*#X~$ S|c%Ѥ=n1.[<GͧW%_Yjjƒj*mx>~w1o{>KgҐ_>Xs -b<9Qᙘo YhU6r9}zefg4tiF5~r~RоF|cu0{
+`/Tp;`1X9XDrш"N)>8i~X*-Uܞ$IRb<.d<[SqL0uJ)A{wM
+ap蜱&}3N4ΓOjœbq<vj|៓=1l4FUGg8]{6CۜmhMm,g6ſ\A
+UmUIyddTlYUaNoVv|=K|k?Hup16a ڣ`E1Dˠd>yGf`-xJ'b2	PbHU,ꡬ!알#硨RHPOeKA /HCtE;⬴Em.DwH[E{d>ZIƠ+l
+DB?۶4A:h˚u>s@b.iq9)g</0gZVJRbB`w?*i3?-/3vQNG+O/U7@a5^ ωӠ5[D)Y[fV
+k+O4"HGdi,Be/hT  %"ANB\"b`Phǰ''e 
+2PQ`?xlxN-<i|Y,"UZGעPU	1):AIhĖhtZG#C^rq=5Q
+	;̶qZpW
+Cxx9΀M%\WK{P[8$EQDpژ3O'0IܒSzܞT~#aOȐ~~Gtgkh5k3`ͽ0˲]0cC
+A@j4rx'xq*5ƖZdF/<lF|]2cy,Z3WC` THiwH?xbDba~]`:ˆtY~a"vIR7lZ84gÖO!r	V{fO1+'_ڳąwD'؍qVm2&]]Y4T]]hO s/뒮l)MhRowBX,,>HYrc}]{N(,dxhR➅wDuT~@j<uhDLqۅ_G_`\	pN*$Y7{TP--WQ",hj`cK,2CQ0KS0T/׹:H4B6VcZbe+V*6+t0n;&R8S5أ -]ky.mh[rvtu)-\FFNj`e Cǜ]!&WX37$-EvqahCa`D-	.\/ߪ%^Rh'FWR PR3f$P@IJd8BIJ}0 B!.(?zg<s2ls?Zbړ=,+7q/(%O*uAtW|C.QBmE2MZ N{B3ח%0%:	"׆LڲvXA*`M-(ÜJ
+	bщK8`<Z|*E*4]\it_gT|w'Tu(#w1s:.R#gsCG/hHBhhrYf^w
+c[h2v?'2.#bҲ&@k~EV؈xLmq+z5g~JK36_}jnǉAz_BGug%kJH,sYj넔1i H3.qMQWq78"sYGfp,QJ@OVCaJwNd{I=u']E#a(7fX3+k(<qc
+0dј{B'.y!rPh+ъ,u	AG4xŹxuQ>E*O dı~Zej9C(cxP+M;qcD&سMZŢA\WtְrF?N5ywLSoW^FE\u)a%5+|$.|'bc$ɩ34	Hnf=ڮCs4,oe8syiNEP!{\ g@Z-K,d[$J9c"p_yƽ
+8g2"WӸDYznI6@<e<tIsP_SbT-XjU  􇒎[AR?vu 
+l3$Ҩ8=*1C&̸7(bG]~c#P6۪>.Յ }@e]ட5![飉:9˙;|ʱ%_X?l`Sãt"rBUԳ$=k`g-ˣr
+fTe/9^05d8Vˬ8B"g<1xAJ8SPT*L
+V79r>+pů3@?ShKkhօzyHW	:DSu(sRڭ_-74	?E&-M	@z:w
+CMnc}:׍@_8__?}i/G[B|WP/VkR!_&^9N1ʳcպUP9f'BT7D%XKL)6H?9J-~f)yh6,Q\rz0k\=:J=}7|(WC/+pX74%b^Ffhìk2^^^yY3i0gtbY̷?y$˅^iMJCd#kA*̺g|2BԀ%n o]jS0M7RH7!;c̪30R@6WAWSX{S)$]MR5A{ƻtqLThSσ0a!t`3:./Gb^"ë-	6l@3?c*aۂJYwxFd>F4.k8!J;R|@
+,Ad1@0W%lI>>
+=6R|{ip`̘J
+tXW˪9}c\4>NΕJ(Kl<$~ Gwa`&Iq-Oy.,i$k_%§R'$9 w!$'B	@-*R`` ZYMGMl oT ݞ{]|/=`@!VFAϹ_[v=A1;ŰXY-Z&X;a=pZU3	#g)qK%G\v1Z	,o.q͆qt.1!_WU*S;87aD	{`L{6SW)X'cZ5K6l^JQ@~NN R=;Xᨮ@OqME7ujMT݉IW̴jx BsifT`ζm!<Iz1jKʩ#)CG]2ՉAqstԸ+kُԴkeO6&e`BӦ<דHJ/Bi_tz} :J.I9*IZ/ywi0\nRy#cKM'X!BnHa5]-0ȤhJ[x6/51 7ӸfY	TEqx\V&rv|硭/=JCV0G:{'ݧ^N~>hun:fˠCeF_.k`2V<?vy<y\,PKT4Lx_Vb VWm	/))K5hDlO
+`!˦^'=mKo#9oyn=0
+x0H2Bmx򒩿9*QNb:#Kss4Sx ~^_jPu#}˕"l>CY9H|B1I,ɻ#.YG3H^/W%p}j?mxw6@qRJD$2	q꜒ylFqo"	@P/J-XE` GI@OlN^]avRW5*)yj:3MЏDcM0&:=`Lv[IFلdb:1i95	eX1̡{ABTL|g^WS-NVƗtȨѫfe,>IGq;LVl#ö	΃:D̍2}p&n9	˾b}W]fl{Du)&W_F:cɢ2AeUIDZ̭>7ܖDF!ޢ#/A@Olz#~áGU.OJm		UVn|| 74"188jJyX`(RD/nn69ɚ0u7~ÇnZ{}L[f8f\y$BXu:yHjttBIi3ٵZ^C[֒i#u?7$qDsd(c
+Gs6,vaPڳdɖ7爎"P`)yvBYTR&#j(!3q-1k?"@&	*oI&}Xm8㰕NֆxX^́*rMa2cF[3/bD8XҙGRйDfhg`y^zڎNDJxMN0N('d㣣f$NKErOkބY]s!R˰-\aQZk:V.Ϻc8\4)ɪQ`|<*IF'J6ta@:r&IB&lQW<PlIlQ.&Ak#NvP*Y=-8țB=Tt	ܼA8!MlVcP46\&=kOoL+/_L\a>?]ZZ0x g(e1CgC$X7F2>Pࠉ8HZyoB̓L=:3P*q"-,
+m:EZϪ!:X&7}lݻ%#ѐF ךx/r!`{՘Cˢo>l>;!G;~叻b9ڕhcRYN@6oVqÉ7{_g Ro1)6 y3qpUlrB({P~[Y::-]Qw4ε^WfװKԜC
+stHw_k i,}-.ֻ#xQE88nP9E@҄ֆF5
+K&זddx ?"ě8HIQ^TxϜ0Xȉ}OrV䬟*J^$Kgr4@=ȶK_{~ܚ|9'1ZÝO-!
+VYLU:q;,Wz.C-1\1k#G3XOϘ̃Ĝ۟ހ&X7qw3eV8x{n.XNLSjg
+rA0,I+u,O&`(ꗄUzڱmzHރo	(7G#kpO2-%xd`X|拟UI)[0qdRgYnIKKz_T0i1 9-*rbџeȰ	j$SnbtPQ*yH3.WG9Ղk[ɾuH$\69[d門x^=Wl<տϫ)̏LP1ؑRS&qx}"b 2Fhv3ڕr;F.]tu'Y{a4Ȭ8e}j~Kx4[vÕcO@p+ ݑ+i!6n!Xb#,<Qrw1_GoأaY-(i[u2t-9-wҹusя&URFPsuר9%r$"sꢃbqU{Ƌzݾ̍L]Vfꃖ!1]WcUաgyE%~x|*p C┎,!)ǖ>}Z]<YuUk7:55y{ס'rFZzTHgz<粣WMJD{XA$#x½%4?awLMf_Us8pv:mQT`)T{n	2[|	5o^5Wkijf`lD\?,MbBhTQt(t\Ҭ #KG|T3^EɝsS}<Y'z
+5љy",6'p=	ox&-<p1> $N	#,.`ē/zcOr۠sk$ԃ0+zYtK]pT"lXQ :B-a;]`E_[>NwK,`\d&~4?-~_";oi9̈#cF/Ae_h]8 ȣ瞃$Q`oSx=oOW#RԪkf )CG5(u[n҈L%}? jQa{xI@
+ .:g+'?%2s2=ͺbZTiI;E^ ]} 5uc;N8WMRel?}$\o\?8^jxv`xN
+P5sNǕ]
+Qd|'cQk?,lj:q
+A%Kd(PX_%.'d7#?0"CD˺;S*4ު֡1H>|J1L]
+(҅s7v(5U.&V7=DQֆ^6Cw?a2m<6!F,Y]Jm'qlLnILIL*sm9ƨvܹ Ť0܄dODq+%Kx1~QM!IJFDTa!ɁSGj[I	6`L\&i-j^IC	wVSJ]sT^wL-񘎪zOJP_N'}ҧɵ	gKpX@ S9{$KH!#=OHS1*UTF͋t~KP>|.ϊɬoq-G4.CٓCxZ&Gdzz6Ǿob˄i2^̫˕$r[+0E#Vo7pjCR)‎cg*;շۡ~fv 鯁3^JگNm	)>[`8
+:]ӌh{j,!~A}
+~yKy4/7=gUKb Tt&VIhtHP2Ӣ2'1ܺ^ay;Ý,%|aJ'd
+]]k⣶V֓')cjɒVz9[k-:+ؼ>"2s8k,cKb,%+o+3/+uWꆕr_h&ESV M\axl"#*ɢMRzMԨ;ܡ  P&7_w/ QY:5*@c69IS xɘ#oeB@#6*Fc	̟o׌ͶA)/ڔ՗k Kai-kqs y`D 6HX'BVj\.:
+8|rXFx;,r" Y>KJ:E)lHvB^LSNEյބF6㥆)nc8WRYLbuDK$ؘ[L:I7fV:Dx6Qn>Pm ڰ)ShOjn3RXd'1p9͸g=[8n>Ϡ=15XpEbd]2ώEW=&0B{IXv+lEg*4|ŢzkV#M=4y$Vb]6T{.,&9eXr}W;p9ޥ@N/<о#(67X:JC+e,iA cI65C\xNsr-~0} kxSRQ
+/b\M)tc*UacC`jUcpL*&ϝyS	q<C*Lj:-@S k 8s;{ɃHabA~88p>^$ 0&Am1R:+8qdomoL兜qgG'XͽZ-H$2GYDtiP)(id?z(R#
+8wKouqp#9'lGA֡`;,0],=Om&hnE~btD*)(R,<,bAF偼?4bT]lP-ۆMiޝUl؏uBs9۩<K DLx$pQ' kod#fE:Uf6Rr!@.c^>͞7{ttyZо}|MLMQ4 ]-}~O?2O~cA: F>!~?6O|hF=p3ϓ N WطoNI;8K!'Ls/h/l'hwݾͳqGq͗q"y~j	HzdDxRo˔!}/KYo]f80,}􇩰?B\d}
+,$D}ڥ r`UG<%9)M4=g]O:yL~3ѶF_v\6|G[ef<m70F+r=&(``2&sl1s(ԴxרF5![kfT"8{:c#Y	)F|[Ey6+huTY_Y5ІH+ka4ｬ^Ts
+~x7KKJs ?Qd@
+ qoqf5GҔYU[<\sO|Bӎ8wl^M&~8^[#Ui>3O^P-e/	P$Mv|4o-
+x0P%ce^3?Ky}v0svO}ЙtfQ$ 1	5j=2K&?QUrkFɉ=#[v᳒5´^06ʋS˧s0T7o]s9O@WVTLb8HjB)<,Ma!'8s5̔\;|>W^^5th@de.E%bv1Yغ]tEdpJ쓓D0aWMx?gBW''u	K6;w R"N"?rQٿ pggJs;^_՞1ipyɪ5O|-·B9BBwDºCp-ԵtݝW#HcAO?>|
+\*ϰC/KO'q>XX.Ld?po[g+L~V-Hя'~,j$?tHdmJ.*~N7zH@;ԁY+$<qz%O[Dvs8n`ʞnu9,4ܬ6@^z_.AWIru!_&J?n%owIS>fK,"d*2)XR3D.o5I)k9I"8=*]dJ$D	5pH&Yf4e@S(ڨ=<=eM2*SiS6,{KF/@c.W_{SkCdWz]axWC?~kͣh7GAv,ʑ`Qx;ʂtp1,ƨKr;:(˔s.0TCg/90	u8߁FI{3?7}׿YM 5%(	1l6Z$*#]1Z.tD
+Œ)w*$jiټE_}kg"W%%1)'~
+,Z!0/)m" DrN+c] t<Lזׯu$0L36Ab8oUqoC40hkPpvhL^;,K7e]4/+j2YeټU0ޣͬ,2^E
+)uvz}
+c*$7>uY܀!!dŠ~bk{ΏQ!HR!:qk!OVrQkǆBUҫzi0rI,>WK:jtk?z})RfjJXwb5sbf//X /8"	/T^#ո[
+WS;p# j)Z\JL[JX0~@$(a4M|[:DޝaY7+Qߘ*rǁ1XSOsxnzIwaQHBŃl$zl+`jIa6VdY#r&wu=kS"]HIyH椏;:0-H+O"}˪|l:ILG݈jCjC&,?9m6Sa@CÁ\>NR%!Þn߾2/ݽOB up4zKZA$x:^*dW9ieǈAvH=RUTxNLu@Z#nKC䢲"~,<<EA_DIk5f9Z{RofVNwRN-Ñ_Y@Ї[fY_{W#ᄲfS#b1~ֳIuPs|_Р,wڄ_t0\_G\Y@4čΊ8p8s)RzPR1t(VNYe]]'l@-5aL2ޭCuV(7c!r].QjҀVEaDU3w#QNXϊQ	/Eأ4{^L8$2b)vIildi;D;#>	m^Z=p1<K]nɜCDSt4JFG]Rğ2~IC3<:wI!C3l=/)')kkyR+$/ƪ
+0˱AC|[hM9t(a?P
+tGb`4*JUp?jӭnH@Oh-5%2iv(9z@IbͲz.OrLx
+?M
+؜p'6ćo#UL7}uQA(٫_i|;ddW2Y/bV,9=iw;-mp U0ihj'ڬ)L0wՙ*623סri_>_%bJ]g~@6jʹ*HEp;hwo2\a֑m-7|08v5]DkGo: 9]9256pXBymyGYnNkX!Į30PE6i|g@{HWk%{pDj[E Z
+:%l֧Q]V(u	zL!2GL}Ȉj<[wķh#8@?F{{GHzPKH(GDщB~lD"fS1^PQL蒑&C2y,j`x"4c4vO:I&zS˜cHOc憢d+[1LzZ9/.)sb&/͊Yzi7Y\Ͼq+9t+Ft]^<ng#+Az<@MJL8.j1w/ۅb̒
+լޟ,k~P916qXkL{bK\0Szj㭪`fBR~F {FVmU<.$!x:A՘]nГ|k'R±	zq^HlGlk%Cȯ?<k0~X[GGΏ9'4Z{'Y^gNU*3d[6?Bob]0tIcȦ5?m0M݊-c9VEs|Jح2*}6/h%紬h{QH*3v-"a<Eo;cӬ5~jHfqxX6ai:kV=v=.,l!qڭ,3;X40[a`ګe®wîMw-d+fuY|?_gX>w\_==*@ڃm)yGn;Y1C4t%FLs-Ars_pH[ʣ)71!o^/\6[m{Px{4QzMٛƙCäUyݴ#m΍D~}.;E9?g;vw_*4i\{b潹[Eנ/^2;#"(GH^sK5r,e_ƭ)|>țyOwRǭR^>*+*4n.I.^:$΢M3LwD)8hq;~ӤV4bjͪ/yD8 =8;hXHt QelȡI'&V*p"0E	/l&^j/.s""%2FsNqxecv;b?+JxyTUf1;hN#ǢSzf4&C]	{Sp(ÀL:b ?Xu),t gz{)cX*RoM~5k;7y::^~M9?j<^.h}y"K Flnru*poB2]
+fbwexE8u-a|l)%T|h9?JRZEk Ҹ({96zS(](fDauIUA];k)}KNQwkz=ܥ^,IdW/'J>cFP\=F ;Gu/r(<M
+}>[vTI)*|	WIV%`Qh/~W=s(
+ԝu8/UI7L"xi!I5qua/
+>pGjr]-UDݫb>!r֍猍\qg[dRŮ@Y@tstۑ>0G+os~H3#4Fc
+j-9`^eQg'WjJhxa[1%c+s٦7inxWqS[aucISqup>%^<YcVxD[&ؠEI.ixh|M1zḓ*'	boHҌL~Aʾ5>$[Qd̙D E5 J/sn^%Zc|\^khe|IFɢdڋoiBdXWޔ07al=Qɺ^FX[]PJëLUB+J| Ņ OjVo-#V{R4(6ReWb{!@v0tTS @.267]8z4 ϥyb
+LmfIbj\L̶^ lۯhWLt/OJH\Des1' xrI;0<ilAwHWBRd}JKZweQ.Vuu&I+bnu
++H2j]k뛂°	ҵ%JsB2LD<Fp)L+le:-f$u6ͭu+|ʮkF'CHa]muVc¨K(C|vxFDQYO(q($>LY_etbˢ&O%WY;F}Ե5FŪJP['	?D=$FoVSg82k!qlh-P:}6ﬢi7h!;@˾}"@j{,LMR޳K^5Y!hp((@s%vcb~-lb{R`+!I21<cUY~Pwx|53y#SNr 0|SBDd)UDwB	'5qpu̾H[ɛ[Mؙ=Z%wƿ
+0|Z 
+pDI˓pJl.}9+.pڳxi?RY?ЍŇ ^:,xдvW\\5+.E~]hݲ	p~\nyeƳf^^3ppyykR&O^>^%Pjװu`@ybmiꜚN4Q:Wu\Ĺ*fEfW댵
+:h$pX	ٞ`n4*n.0ŀd%OLN_0ȭ KƖM\)bն+΋˚~|%^ږS"vq^3M	IV~@h>xCs&6o|=CM,B+޻9?q׭.\L=G-.q|NPM
+"Gj@Ά/b_/(bgRÉQǶ>ܓ+gm$5@Jy&4!;REo.lB?h@{vN퍖ZKOM0
+r^wɺvI1YI.1wwlzS˰=%6\ќNj5z8C	/YjjsXy'r}D\fZ6@*=FVʭ_P8{3.4){0W|s(S%_bD^]jq7т{>Z}ͻ\=3z[!9x##RZL9#~)! )>*/5~䬣&={	p/³<]}|wAy}߃Bk&VUr`]d#&^Q_T?
+g?Ўo$ݵެ׷4i_pWN0nf|'yo;:k??{?\7.{%'1?{Wk<zoF淼NBz^N8TU;hAKlvAg>qb)k8حsZq_Ck,qS D3ZXA WXgݧ73z\+3`_5Z.J x!gj 6+?~&3s͗83?N罷O |koiR?,Ϗym>Ym1U 0}v|hfvY!Scx9QVEDx-,(80ߕ3HUɢabPjsw߉FCO,q%T+HTLu_N*\_Fl2%aOu~M"sUc$}Uoc"_J=p4B"Lk@5^=18*ݱq-*LDbq/	sS9E~e\1Wѧ,$8K7^<?Qgm^_lx_ho0碚/O˾)}b.F171EGMJTa`[vfo.2!iriKPFrz)l_ULJҠe9-|.eӂZ3@nwԂfL'9 ֖l{	:idg9cA>s 5s9_߄sf&m4Rff7_L#MSSkp;|vģعrGD^'s1Fk/^94<L½YgieU+il OZ2r|FUxu)+٤pQ0wk;e=A'A1Fz<e|Fi~Pv*VE6k|MJEQkt5>5cNQFiQfOXڬ?PBףsLGc}@tg:i1 H*bqRIڥl*[67-dB7= 	4^,MnuHO37C:v}LG	{˞Nj+EQJV\wçp~"[g&cB{3[ĝ9%l|&n-?a[2?;'>pNMqΪ:~VdKn8mn!{2\#!L`{8~qͦy}r	Dtg+)rfwkv>呓[=gE/%>z0%܀h0gBJ'ޅk雉2vƀu:;6q%)|mosW/71{V>c:H=]_06G-1Vݚƅ@#Lh R~O7QL#sw6ͣځtpzXF
+zWNP8@hpH^t	5oF; g9EiUQn{1'
+%'tfoӀ3gBIE^H(7rL1"\` 4(<u\ſUkR8,󂎿ʡA>kKAߘ'6!+k5_ʠwwUжmp1M^`>=>xr@Ï<* n'rB6e %}?4_R!yZt"V"gVVBP;~i	7u ;jl!Ll*)oB`ctq YVt,ML(
+M
+@>ft0~;o;lݕMBXB7o2G##(}ڽ77.b<!ב<,(twGebjrn	$y0b<HcL.J!~Fr￬X*Q#!oeY#-)i
+T~EW$
+z1B+Y_ꪏ^`@v=Gvbn%NhYp#@AfpbIgx:oP"8\=p
+	bg[]<i01&JmC/4EJ'jC/l	-%/3Z&ocRaDae/O}Uݸx+:Rqxݿ5g#jQj{-b㡅|I 57re;:Z;_)!ˑ	%l^S/H82涊4moGP%kWShgA˛ɱ*sQ\,=ogAL|;-ʵ M=h,863msuE5"?d>h''"=\J$5{.1BBQ2>i3R'*da$K$IpJN4+mwRL3ӿ2;7x'QӽW!pP%ot9WB]-ܦ拢!to7j}zW(hŜR$ϋ<bߊUKZ	rY"	N
+(x'&y`YjwAݹp̒*и:7md;\2UASTێI~Yvج5B\"X@ez9N1I@/]ϖM&<)D1\5n Y	qqVRt>rܖsTd}C&He})XQ]^.FYam$GՎMը[0hRcN?|2u[nsZf%Zf:>k	':iPmpr@]@H_0%}UlFpF^3xUZIW2[;O<"E<VR60e||JB	~˲ƃ>zK˓s-Qn@efJuIBLqviDTŇlg}!k᳹_р)\Ia:BQг~Ad3dʗlbmr>ۖt$R̹.Tu^ꖲwJ.!UZ)fyEʸ-#7p!x1%Q[@Ndo,>/'vdvjC
+Vbm*Ww4J-_w6e<r2dK|j򚙛2E?)j!Z%B͞'PORt@Hǚ:kj̛-QmP/hxz/ҝ(
+kzL5Rקk:}C	^k|~
+9͊hRqx\Ұ1:C8/~[Z@ܢQu>[
+ہCbu(.I="R ݺ:swW^=%f5?bu_;ov[u[6NA&?xaa] ѡ~em@epU J (zz<mJg}k]ܵ5(EjYj7OWZ9BPEj Qaªw nˊ)YA`wS*UCTH\Xb, {r-{@sJN'Jz#[fU7韮.a\w$I}./]}k^u$sk/mL0*$CT72-IE
+JГC+MѰH;Z9nh;X76o"־EzʭZIB._Q!)[rLqRW/SpwӬENNK1
+`_`Hu؅౾ezxVYϴ˖eclX1qB϶<^fFƮMm{	CrX# ck<.մ1bHljë_4@My1{ݣ_Rg>=2]KrX4'J].6 $k$`̴rjFGE72LlvQ *43.v8)Fsri|Q?'vz6ꯑ pzs3}"ByVmNP7#ymVlJp3=0500v8X>\l7se\6<4ĭ EXEcŗaΪ@ۏayUaЩ٣0Vh&*6ҮyAOcD="-|5ht>jli$Lb@D(ƥ-6yVb?h}cGV`.T9ynz|+@kUTdF[Wϔ&DpT{i?39Ǘ^=/siU_3,;8	.փ^wXz|~Jq, ھſ`0kfVfqWfz/:+cGqMUZNCjɗ<:]zSV$NiBؖxYLHJ-]
+!I%B&.M!G?'jJ9H3&u4˘2ۨ"0ʧB~->p]_Hʵ:RVMh( 3ZX:WkArX{X՞ǭkUU_@2N[e+$e#fMjR淼<=b.ՃES8=+q}F q]qeV,CMH{=^\clI"pHz51ԫFYizq:`Yc0m[9̡}Hiul=}#t1W>jҟ$CChocp.Z=ӨHKhl.3#'9^Uq}gDt]9"1CXAׂ" G_8H P^txvbqrѲ{+uZkŝl.f$"41x[;Cv#@pu'p@p.ax^j?trhno᦯J{~̍b+E=-ypGinm48k|5߾h$NGh8ѽlG< 0+6 謿=!A5.^7,>5cwjLy5'+x͟KP?v[L?L]yZiY,]TiYPA#:GmSC.R}3=h)ezN*hӷ8:%0izVRAl/ofmn5h`$6<2pAř˅]^L30+caxˌCdpơ*l~hCfcdtAKXލm2w
+ӟ}L7xGFg7Ys&kK}^k3fB`	"lCJdL<BVXo&tg1qt:EN*Vwkn6ͶL&ĵa婃?߸95 8jm7<֚Ǉ}E+MzF(y<xwчSdIgQ3ex;oCx+7tV5pޖ'ߔb3ԚV^gx!{pW>qzI&o#ʨk| hgdY\'e]%r
+X(Ȋ(E1=@O.FqÏUöuφi6>R-&XT=տ4jrplAc_"6@\!Yd`Hmz,q11*wU[
+1zU4$%^&*4٠۷^ >`>fGuՖJDpWnrcd,z=/13~z(iq"lpURi
+}-90{Kvb\zy!~>zUtN|Vˉ`aY0T\>ړ6.5q
+^B3[&3KK]Tj!-oQ+5_AB}l5Pd}!6Li>2c@i9E3&c1} 3h
+9^K^ƨ0!%|
+!(.Q:g7!TTknBj[zwjXQ߯VX͡9_"3UCoWe+3/rc)ݏ>ٹ~u8,t~'p@>QU*Q?#?y~>>;3^rM^6n6Oun0;ܼ |)FƣnǇv;KX';\SBʑѣq[{$OKf<}fݟGȥ.5=R]n%]n.U_*}ѿ\EZD:ɋ*rN0V$p+./Aջ>55:_kLX6Urݨ㭙LmQk%"FS~GG{S=	")/zWMQTMnɑ}7qY0oӚ+%&hB-#gUBWQ=gE/w0Mx8D#KEzR̾Pn/5Y]8%T|b2}y". #1x/qu!ɤ%>)\g{;{41'EoUg"ulO8z.+SLd5sFw8EƲR>#+p"w5s Bd 꽻eMSnv{@?V|Lzv\ yg7?9"LEm@heVtWhm.jZ$]k˺.|P8I,y*bdUW!RE%hquXdAªtj+5K7W2abe^ɋb^	h!vIXNtOD5ܐ,copƕ[H<1!v-6*P{Qcʗo?˧E[4dLMIs<O%C>B%D>Ey21rb`lBGЛ?V6*p3ɔYI8F#[U*{)5,_'U%o$Iφv*'3Jk|~ո-y%\UE6.9g8(?$]]PHcgCI95[6DV_?ofcՇ'.L)0Hrgw9řjH,{5..!KO?t>򯻟unyOB̱Ђb$Rm>$mFm=EӊbӰ`CɑklLhA`*}LOOzz	BjYuf89 	#p[ߕ((Ϩp]㪨qrQ]*\Hsp3(8дrItdVٻpp/"D#?  r5zxQ)S
+
+^9>v	^+ajbW2fb{1ϛ%{	\yheb˄]s^lQ+D%?$7S#R@!Fm[jЩ̯	AљUk\JspY2?>Eoy0wpΣyV}E[Q`F+_ӕGkԲ_ҝF4Y\?RB`ITKzFiZs0v٫$xG0S&8	|Of9bRЂ|_#r[up3%nktB:~]hz<+KCO>tm	;ob-ҤSޏ0߷+58-DHlqA#C{5p	jY(Rz[RlO)rj5E%h^<~}u}hȟHy:,.n(rQ&d),Cع!k]2R[ܹ_ǜ}4,Usx%07:'rRUfy$Q\P&9\&\ׂfN^%AXbH7\X
+e|>{047帺]ȝ/ksI] g+t k(3/i`ŃyiMq,s&AFtEqEN~oc|y?''7+@qM|,gSO"E\NfJ?@l}7N_gF-ALE4[XROAx]0q&b||IAPYdE>3Ԗ7@*9gdM%7!E\R iQ3Oۘ(QD`NܶIN%r)b(Mr*]7i9]]Ί5ʍǅF"(Vr+F1
+f_:	po0%Q_	=,EGCs<raŸ܌YߖŅ00>Dd -`ryixTo;KP/$a\'[,0WA}rNfc,_?#M7vKW%acR%Ʒ0A)vL	WћSI]Lr,KZ8ں4!Ҭsji1>U0{,_ck⭫p]M͞Bd2ϋ^
+/ȿqU)N&gI'#KbݳIw_o=$4v_/9BS	-_'?*]RCI	_7W\5XSMuī6,0Omɋ2*}Y<)J4AjJJH
+(ڝQ[gc"H>-p[H{w~iQ c=a$_E.hgSIL	\O+u0BDA?uf{>uY8{C܈/Cpȡ*/mf!F˜w;ӡY{ȸ?a_*.F(>}մjk+	%^5TdG
+`x%CQLY&cF kʭ|#1cY,qmcT{ƦQka$ z,)'H~wU:l:b7"6pE~	=:d/ijŕQ%;4A<|;P^⬫|zbw0gbn W>dӚpy`¦34ۘwQQ	Hr~W+R`0dDcyH}2ڕğdSVjvZ`L:#4Nl")9Ydnto>`ԁ*ܜM2b/WttP xb 4scj:8,Dj9UV*Zw=NlW5it&^KHrre;$|N5Fkbǖ Y+o#_G#דXkbIAtC-<񮥖-fW8E4^ᠬ5*b~O4?HRa$RP%8|I2AnIaRSdN.kk@վEcK}|}s6!olz-TÄPWo;oXSWyNn\aq1zRESmN,3Cj4XFMa"ZK;ܼqY3Ҳ{6eY
+G}϶ݍp)|PFY#l `Vg"l*2[;+%7dKyNf^99:ea3Ք~:9vz8I n>pIE=3\<c2
+; ꊚ'ɜ8#Z;ƌöDWJn%ߎXvlbŞT+@ҽλ+rfKl܍r-sr^Om=->:1G5l1%}֭p-yAz{\tfIߎ-=<
+<"kQg$(IS(%jl""coSbpm]	d>c֖)al%DEeSPb-^QM0``']XrQSqn&|'VjU2u" 岯kݏYx[~b%ЄEвpP5%x#SO$ah,Bh3ΫqwLzl5T1Fܩkꔹ&7yo_Ls'+ v7οK/ي!?6qBVa8U	~ձ8uF(4me^lTooz_zkS*,VHU4$.Y@ܰ0XZCTmQV薈k!=|V`:*(>P){3T㱉
+ٳrplbKWYr,}/}c|J&[|һP =)jǳzdqzi+cIQjUTIttVklX<#+eJ*a2i+̚tK9X;!/wD7tFdc&S@mS7ZgE_	{mf9~)~tA(Wqk̓{~eoEhѫEE+c0(M{{8-܌=?]52e}4[[F>eN& 4`BmOklf@GϞ?zp壇}Au>q\htP^X(1szp9.Qj2X]j1.o&Lbvj 	H=cDksi{}yFd*A<l;"cuZz6)1YXdLpF=D,n Uh̮cP-!VL".,JW	=2-"`genFAA**Qo]gQP#30)72P&
+\	8_tnffȅ@3U-uy)K+T-*<v+jB~%P3h[7QibZ>&T>y\zFGQqRN4Κ?{^rx|}_jb$bx)ϊQ}Qo[\om뢚>b:?&O`P <Zֻ3Η|28*-]$da-9Bt2_	˂x^.Dp^	kՅ.	~5Pؖe
+	X[[bcGr# @\(gr*Ԥ"ƘT ^V^ɋ|Jm$>?Fո|zB\@
+Q^Nڕ˚).HS(<f-,[i tR.|lyC0p\&{F5r2_jsypZb#bx/;0yv:k	Sed4D~HgF.SqP-
+pfPvǭN)R|6luO8#;Cz-NzmsSfPqjQ$zrd)
+IwlD?G1$Liu2H6wʭؕDT sx}yD@3]4pR[|7ywq\ABøsn;x#דɉH1FvHWrxeFmCK}	'.c&o3A[xcHFZ?Qy'\m%pFfm#C#O02{QN[@<B'h!#Zd?8P2Tg
+adΒ[BPv!9F_^a{à&Rܼ,
+1L79쒜{Uj)9 r;7~Sߴ/Kac=<!=R|Xtso0Q~PEQ-YCP&bG1DqfQZpZuˁ )O$w@#'p]fλ{o_~13) 
+ua&Q
+pf1g7ƽH;Ý]wp,0	g(l?{ziϻ=fJW,W\R>t@4sY̾
+g.zs@v>WE,%m|$Al:E%u)cRA`E}J,QE< #G~
+g=wkfclcU>/-9ߡ9Ҽ4j<vY^.?]+Kws|Uo+09nVe@.%(Au_;{Fa U+zWPLƄ\Lyn؛#Jz/aHux$@'s EW}k2M+=wϖVڎB!o.VZ]Df^ 3!΅OA`9zk<	9twd~uB2&lH ap0>=	 zmcg5]s4&'@r:KOO0?Dn#Z,vc	l9{ؐqBNu"nCb͞[5Emvڜ-/*otʖq後BrD/s`6	sZJ_a[{ ۵7]h!eH%~`h%	9c`[VMeb"}KoB;]
+-^Uݘ;]#DoK~졋B㮦opˎUIG/+?In
+A7\8{n&8w}RktC^-R\*r4_c4;c'T~x~8u	o:(~CuMBؾC8@hY[
+FkB÷رS?^䤠6P~Y1Ej``bx:W(7F]ʅj*rT. Ж5IQ^92=N+6)#Ep'O7~kX{E
+P$%@.R_fhyG8z99ǎy&$1l$R>i5/0d޺<al^),hQ͉j9DVgcܢf]Ԡ7NXQk^e,i/:t:c}Sn{d
+T	gE%#$eG#Kj׼#J)oV g7-u`:q %Q8ɾE
+y_H(}g!ou;T#sHs9NDplhx)EhnÁmpn\3.83ߏ"_Bںe23]>sZ?2и|>h&l,DA(6fzMfjplM_b4ZR %Q>]<`jfP7XwZZv#,ڊe}toS&
+!͈ʧd_?DiSqYe?ޯY3^Z(Dŏ@kO,CS
+x-Gs4zX#!,8)#[CWpfVm  ЃDݝUVk U:EvNbd.$4)߈76~R|tQnr10&ܻEuّ%PI	ṖŤ5W}~bbi	w$q+FHpB39K^fƧ}uM#E._W
+!%hi,L~O2F+{_t_
+_Ґ?f	LVMD[w"b!QC5ɕ)FV[1r6fI뇦oxf5wv,+(~ki4d][tBdb}[KJ8YӖ&jypmpv(5{5	'Q9>*+F-&ھyqƧM^4CF
+>KY2JR3&"a`rehcN(ؒ'HAKRZ7f0Ej>Vm)n9*"[|9=[QZ;'D(rԈKbZ<<"fBIQ$7bFpDOb|Ο-(a
+	V,tŲ(՗sO&["ՊΪDn>0Z؇Zkfټr_cr2U]ⱚ~Ʋv8{B뺝`^iȰ9Яk)1@u1UCC*vudlRhFD^l>b: /xн=0x=jx6u	d-Ԝp|!`eE
+MF#pD|^(66'Uv]>X.i{4p{N7N̲<H4O
+?$%^[- [P.3a_9
+x.$
+g}ɢ>U0Zo
+gY,GCf8	}%W0#1Xz=rW		&vs2EgnbinT۟Q4Ҙ=})Jʒ d_e#7]PχQTb/{.ӢZ֎h>ā('6<%GģwUȤ2SCJ|ϋq	}}}[᩺e!<n
+aavwG,r| YhU|lyOI{F@4t_yN_	'VYLPyEbsz~%:@^9)ҕI!%zK}Qv~.80R`(_n߉x=ha9:Ժi7/Sd""ىw{0= = .gA;ȧth4ڝu}{sȵ2M]ʴ87gc  @ZV$~=<vSݧw
+qҕ ;*-l b[ԧoeX'P1]7닩Fb6u/W'7?tl sų97* 1+6t%C8%[ 9p}z!of]KFoj4}a@[ͧ4*QU/nF|A77؀G5Hajvfb|C oVx5#Ma ՔLŖIyl5w?-s)chno
+3Yf+})ΪcmfZm,l~ۼ]~5ߤ9oz4N踲?pK_Q,E_Kˏe-ao0LaU&jl!PzNҴC]*4	7	H$f3YըSyC|^&ѱC՝/>!98
+I<q9-.IwHzSO:Fz8EћZf+x6
+&s<^8X]{חDULouu1n,n0<F`$Ncmé/(`LsqD>Ō `B& @HoxH^^_l6CU&ʻl$DR6#GaϪ}~qgcC?O>ve
+\KUxGT-ǩjhaD'ϸ|3DŌƒlHDOQW>[ ھoo4ˆo[4]#Aī=B
+f9BХ.s<p)YlL?]Bu
+$#[\%LeMP"˘=`8c+e[讼&X-d&}X0x^7еܥsPV&y\gu2Gߗ@@|
+bׄ<ik;F!ýNSbtԎJa7	iu`Ϛ:hZ#	SzOxq/VNT(D#gD'M| %k<+7Ix.γe&i(آqP|],P4T7c4pPkK#0vj1uDspb}/Q[ wsZ~'4ϳ!/Z"&dvUE̳bFn*ш]yF@(h	C-ŧK$YLe3_5=A~w$S S%܈ڳʓQ/w?ߗ4kA1FZb+Ok#DnЈ<
+H#2.m%"vrrl,@ ?*&-![N҂SV^QWNzsvYtki.1PZ5m7ڭ 6ϋYԡ!u^?٧I4t4Dp*^0<hCcXڅ6	smEuREؾԫOw[ձxD:4ƑS]KDb	r&|
+2K&C	-XlE~G_Q|)ڟ9*uAl="4j<fT筁ܲ=6<;U3ێWkCly^9,ҀUCP:*hbu@x)476C~q<k~-OGy!Eru.+02ohNK٤ߕТVʜr\p]6LR,mDht*-67jWQ&q>sU,d6#/Wp]VsICٽ5X9G kyNfX!gzh[|$=7[h*~C>툖3 h{N]_[M)GuGFnO6x{&2s"
+7Dڡڽ8iK1??OZ͆rxkKy.X1p/CBMA_ Z7
+D<q/^3:=T@	 th)]wm(I
+r'b^Ŝcs$c{esM}:|QxI'K(eqPRa*V|+l;:O)a~/s'(rP csM9t7w޴bҔGQ8%k*ZcV!`k	tHal,@;4GD-%H
+/M2) .x~Ջ^.S: edU]h/	 (HчB)*.+EC0ϫ'z/M)(\Є( -yiyP>
+}۳S~~KT1*ob:d~
++M&N,Tj8$(c{>Ks4ꕴv#9Kg-@PY4SKn0ٵ BDF7OC9o F:9m2֫a~LkE	tm0t\{})rK}]i?[x~hH%8˚j<8El5t\q7拑2?_L90vF`.(^UrGèBܠz:P{»yMv:M:I~ݷqWoU/[?*s*Bmgan*Fh!}ޟ]~wakWg%Rdc³lrѫ~WztD`EwMīD(/s·)ӎ]]Bk.9!q,ԬOW@ԓc3G3o-:k=kD6LU\;.uU𰼞-͢*s+<P[&A~zz+SIH!^˫S$I
+CvEzI\[ngnʳۆ͝1I@͏7yg-d]h3{zDc4:?\WTqG.rR
+6q8/ֵ}=uMm\)F݁; tuWD՘D5/t]cd\] W\
+WVyn/@0=e܍	6E.@,r~qI#xX	'}D^ _Я8`kZ)!g' Yu226)H9_E^ RYDEa2K@EyeՂӌ$gk2a| JQU4'O(G+[!ʴqd%L WVEqMIȒƶQ3Qjn%9DXMbx~hId!ABC勡681}Cӝ4D93URm匚 ,pv^AVօ=-u+O7@<@)bۺp&8qȹ7[YmU®p.gJ[#k*&_h"ڲwWϳ@$nkM~q=,׎m
+z
+0n&_&0/X.ֽVR+	g0
+½JvuMOIR!#D Q	"K@vH;[{fy|^|1lwz1yCC @}nc"jpy\'߷r^yTFK$>|#\`$o<~&Ӥ^m&pWdJ7ǉ睒Ot/khJNHv.bFi+xY̋U@X1"{i:B_%P1T_~&p-p1[ib(1\aom١8Xe0Wvi44."b( w̗5,6kުhgi3=]g̮\Ӿ/z=Ü۲v 0v}7fCDfa9H8()e9 <W74QڱNīra	bdlZclzCǰgMhLRs\!#._9__1/jrK^8/2IAEy]5Wc=Ysǔo< z+~xxDزHѴgB1ilťځ O8ܯm_auܰQWTu{91uNtrL!´x	SEٝv錉ҔɈʰ-²7En킣~gsdLv9{V'SV%ֲwLY4 FRarp=Me(QpQNa#dѳC#\v&+Se:EZ{`o"4t&_YNO#灄';,ۊw.-\(qp"l	{e)Ib[ԲYR$STWj/4xzA7"ײu 'ŋ!%WDp+vl(# Ȧ!R<9D(.:WKuT=r.Jrya'?%xiFAu7+JXb@6=Pp%Ҹh<҇3(n3wR	$C)A;@^Nl'hJRDYs|ox}YUV@_va/^.,<~d -~7N>5[k8Pژ..Kydpltu75LDa)HЃ\x?+r9ߤ&Ush{J?<KÏ](B[桳m-4@+-rjad⪮:4fPU`t)q|5$҂|Zfskgt1x9aҀ-61v`/Xi]]yޑF ]E6Sjt8+ 12BM&/'uu
+eb"jmį'KF-
+UW;1wTd-rq@bA,J?@_79}p8$
+]Dm;ЬC]i,ҕyZxd{'A|):cmNAMWPv^
+@^5n0|g8c.1R ~FgHQsf?:FWc̣J҉{^l
+}O%[/
+/|W;A6tccx>sOENm"2PGOWF#B0ˏ"
+xF%קݸ?qw%GT4(]id!-4!U	X Y`'VW7ӯ1\'gyP֖Ըjun:B|KxHYu{I	J䑫0pgAu]xM`ze]t܍3UkюRN=4[S8Y?{śX?C0USЖ4ߝ5APV"|ӻ𾩁+sD"+҉4!/L(}3Oc}0qs"ncܣڀL;<Z@"4QaA;nq+e¸bj%t0wUy $_LťUɜB/*dwd{~~^;kHJճ^q@	g{X@Fr"xc ,T8׾aDГr0e'aӽS׊0`}A;D>D֗hʶ֣^ſr_yڥmtUW㹦W=j6#*rn~Ւ0:`:ib+Tk#SھXx\OnHM.+6$䄔^i-2_!EgΔLP}3
+W]^T)kLaidmKЋ6[\=䉜#oΚ$F44R1Jǡ1]q;Yk=;MVNDźv`~䴠$Ign#q{
+nR֠:7QT6`"NLqY^[-5#`uG..(Ğ1h^kwg%a9EۆE	 JTň{ϑ`K#warЗ$nr~}-qSK(e9r7r_892Rz< x6%Cp >EunZi1,)KZ
+!T`J0^T0z	c\[ls&#36,6M5/#eLU*fr<*dq;ypІ2Ei[M{H{
+uKX&7&fU% h
+fsĜ.&6=Cf9`'TQEoq<a'Cn^~˞L7f`sqAm
+YWwAC۬ۼAf	ߪ*/rA]@:YZzAͽ3KvpazM;I$;a/#~׊~~㵷jS*1 .Sɧͳ[\MVDP	e׼jgh|PWKuHzq7N_#$DWM St{"rwy6ظM@O0ʚ@an+If#׼T;T.w޻6cwVX~I~
+|'Ĩ)qPX"4_D,S!-mcd{ẏ;Wh޶&=bo&yO`C]fbj/of('sW?ZOt]h?mܥ4%{ƺH@vD?[k0,l:ĉexE^gwJ>zs ]=ẲYS]B+rd71+ߝf X픤.,n\2GI3oPտy>/Xl~ύIŏy.ߣUeivi`}1Pޙ!Bn;9x^;<903`,c ^_uNu2lymW]}iTL7~`c.QU1
+Gifv,n]{&X=DW]m̝!XP55RkJWr<)ޅN&CBsD}|ɮ8sz9[>m[:t7_tO Q#,<'T:ru2q/&gx[#{K	|7B^J±QSׅEɯ;t=ocBȰ~Uz]hTq`-f	K^b3on|Mcllg+8(p4~Q[.?$1ܤBg6%δꦝ&we8+$\g?_4{KJ&r^GR_װ·ZeuUQ|9Tt Cмs2CQ'	k*c VOhH.@&Z{Жkui>	S;&kԗL(12G	WNAH]4K$G7(kiw6,eJBzj8ag8 BOg=
+&PsLY",hP>Yi#mA!=jcv1
+5#/WTsѸ,
+wh!1ktBǌóIqǆi<ד6_kOYhkE{D.$y/ m ȻX:p\c^+Si3Vw0삷bO/5^O!,a<{lL]TqQ4IHDܵtae+kVƾ|.88f^eP^[qSG,x	߯&yuyWGJWWWLãe1@9/
+2H3UZo_[bthA*.$gK\~/A^U<G<_Lstbzzwj8%++T%!%_A?ŅtnAz 3{߃yUX0|>O	o*}>ίM=Џ-)6/Xjw~= i>)2
+t>b_v}Azzj,Ts "x!joOeO`~LC̮ea$a4qyaS]1lVeM{(ؿl(ea`m\el^ekt~\2Ѧp6xg7ݠoF|R4/..WYpZk /i`3|g<矲2匕'ai(8ǈ*wzv4YI(b5|fjb.a&w i"x"t wpv_LAz{G'LƷ0Ah?z
+ˮe\Ç%lm5PE/F~'V '<PM59̓e1յfpu<|hz09iz<qh`4r/X<$6,&%eDS'xjz?_Y<rq ňhlgoyj`sn9y ⟹.tq6Y<-pOG򩠃,eQЎRj.HB6Q9&ì5_fC{sܤiB60s!\]ײ]vhfHJ't<0cZ*Kn5 &/F0Xb	=9&|yg[5>0u#GӄWqЃ'rSlT/ (_]Eq"w;7ƶM %37֤}W)ۤጶ iF]ooOrVBͫoG~/&5+Bo&?t?	utLWoa?Hy+ w}CS7qcZ}ƋLEµGUb8uwqcnF6H3`62`P]zR9:ܑctHçj1sb#yğyȵ#wqE}E@$޴ {$3)òÇLӯ]בԳLޒ
+u q~`<i.j48fzG,;||\<f;g5LW03yfc؇Ǵ2,\j^wNmow~yq?BvQYr4DHޯ*bz.*')2\r_V.K'+҃b:z4A4-`A5m2G7l;,N Kj9LrqT`<9޴NO1e}!+6m!n'dl|ȣR˚ɵS44Kw}:yM~4{^MvK=i";rsX7sdMQH"R\6H8
+V
+um!m]nUOx_>qDDs\A0w$&9(ۯQXHD>8d2`$?7j%1Bx<
+F*[Oy4[Fv:#tQ@ZAp(\%`ܧ7DRda>G9x){UWӭ:-ds|v7 S~!IM6.8"$*H%|pbK|4RLŪuH:{桃U6`ka
+lMb=>D4kilBU\3i` v|,Orb7:!RӣtTߠcIY9&t ;0/,YcQ7(4`\yhMXSaN;+qC{vH{;ú]:D5]0eMQ>Ҷ3A7(-%u;V8GYe=r^ 7cڱ*Y?K*t6P&*0|J/|$=ˤ֏-n8ŸE[-:~HwJNz\$/{/?zJﺚNoCd>Ѽ0fCYAq8"MV5YX^[SaC׫bhAX)=͈ eFؑXAֆt` &eU#_?Ck+QÇۣwϮΒ|\c)hcwNp@53 DG9\uc(7:# -?>,)<ΤkY\E*{*eEM2Ą,+2di%i8ջNoe<ef-ZOྔ2U24aERFiGQ&_q1z?*A&t&Wf-QYiO.{:<;:Qp[;̨[}k@OCtiEu!xrT¹!::px?BI:.|NiCOX*yd[lрks 3-: &vxus>ZMf*~+$FH~ۛ{iV9;k;<}&3'q}p0owYiQ|TblRf<ⓜ{ޱvKTNWS١).xdK~KR[TЋTK_tF@겣*z
+VMCX@<>ޥHʼn)ZJ[%[nSP*X2-@U,{~MI6;f3 5Y5NA7di$yowW8Qu603뉻:/0@]v>T+Ocj+ڸ mg!̉W:ic7M4 H] q1RTy3t%{SDУ+kz?M[)eDjNYG	O-&NfzVNP?YOأhYym-QgQ4Qv{fOMřFI5.=f"8RS?@BKX~	s'0E<]=~;){"]?HuzS5q1!xv\
+"t9ayq3r*[wt<5*VVx3liw^E	3S!֪BVi 2P/V #C¿*2@VX'h@u
+ǎH YT9#KR?m6caw.L~1RWPj]ћj]Kza%T# qprN@2K9@#-CqRθ:#s+ "˜-zʟR]SwS6iN$/OP$Y$n&xYBèEPklr$Qǃk
+#bɘ qQB=??O.L(>j8;+/>eoVGr~ţxH]6:^#zG2ڱ&GOetI`1SS]"|H}]ܺfQ0)ߊ>?Ff01C<)tTɂwH`jӼI疘+z;!.1x;$%d/NL 0Y>$.ֺ&7hOç!{ WOܦaAiAA9
+M piZKT-3`|\\v6SങPH8dYk ՙP7{{anŤ^jr74٤EnzҜp!P+__ѱKAO`&uofqn&j%
+!+S.E,^.KP:#ԪȡQYɭ7jk }hBsV#\Ruo0|ZztQpN9Q: U^"'#LMx30ҜI+X&2nn?taBo`%ȆJ{d.PǝmsЉ,
+ y hA?3\w%܁뾻=SIgBXZT5<k{}ѬlѲvY+U`]G1n̼xX#β{a#aG#jCInMo.W5,( /rd]$ w%Ӈ9i9<9Q:MuZ:][\ }.A囀ق{oঠu쎊ۃ|D[8})kK(݄$CpUqȵ8]x1z[N/_S@K>S3EPS!H
+,yR-*?DF8UJw	U_a~(r:g;ELpTBp]srװ!2gI֩22Ζ*H&D4ܔ+F)"JHZ?i@EyD[HQv_VL.	ݔ)Bt
+$HD#˺f؉q݁Q1e`K\ޡ2y.;6i1P^_a!XeM
+U 	Ǽ6<S*_Y,US)Ä9/5daDHc_+p m3ף̀z"1_̦Mv;vS{~x0ٗQc",fՐ)8u0"qTT{݌&\}+AsxeR|epnEmбʇrkϽva5pZI{VMΖ9M R
+եsJ.r/-VŌU"^?p1{jqF.t],,r]צ
+`Sc_S,Qfbb8MNAԗo<mtP%UGiD	0'".apIگeAD:2LDhcs֜mƖ.#ϫ0t4᱇Sl_i-rDe{O%!N?%NGlUj#^~_ jw ԃ]\bbI8hA*}/-T'%Fd1&;T$ i*5읎Հs[LkE
+yD\^euvwo$xRWM=Ԇ<@Wa&(C}or}
+̫Tv)\kV|3o/Z4-_
+Q|a 3":9.\̽~D5d"ek]H |Vv\NwCRc%:~y~˦
+"	y?*:<gHv\:7M-⠂:il u##տ$LRAdᄢ	_[\()oW+/k2HY5\k8{HcW}&ìe: /~߃VA46{bLejjYb2|ukyd0<^C|d]6;g&_Dtvs4?4+T F{u0Vi{ TbAzev5g^uvk4HsG;j48cAPnV,vl%>7G^{^5fuסegT~KZvF༵\gho	3.n#pkiDD&G
+>vVJ'o*ksst/Ym	O (|
+Lt3̩Ԡ]E$	::\ЁhYPxd29L+#S}@`	LD[ȫ{xEP2=Wanh(6e8e~O)$?;+VdME39nwJICkrlgZO
+vssO9ﺮrLLOhv~HL~!ķԪH9KA@fhY)X*øux-l2t!ךĢhnk]l/{jJ,ij9Sz>=aY|[`~Vzܙ*W49"ʢhkꃀLOzaugQ~Qe<K0)'5g6Lyٱu{_2slj޹d?iA1+us"Js+j܉G7o#|B4weaģh,mL^+L94TqY$WiBEEO3FeRT|ӬTO]q$'W>P&@$Yiz%5Hp<$iv޺/w8J	VV]XJdZT0L(4AQpކ*6CV<QkzG+>dFAIF/# њo&%wVWU7J%HЭS*4ٙ|zl'j[cR.>SiA}<4C6u/\Lf46ki}qˤFó魖~@z̍^/hav<΀F^g[:}'*%%xBͱd[sW;lpuaݒ2pL:CSNhvM;1n=^u(iMը%Q6Tlj$F-pg{އi$6j]EfY>[դ?uEm~pv,=jFHLz6d}<psʍ|ilĝc"w?w%7ihV;Z< kz6.T%g%%`}wU[Z^GA{Y?~Fw}f [2H#kUmecRyOKaEq!wHsn; 	]fBZ9:6lQLxnvRU!,5Rki6ګzU$x̰1WwG?8եVm՗jj}X %B}_i|=> Lc19]ċ"ٿ7BE	+^lnV^,j(bvLѩa"ﷷGgե(UG` Hox9nc~у̺-g{k79-z`Y7oTJPRNpXrsofZ;5
+;AK^>,_	s*ڵRQh|Ȫ,$nqzױ_/Xa^֬]۾ aܒzlXǻBZpNd\7;LlU<MvºSYxc>s857{=Sz8ܤȤ8̻p>݂n8Sk~pSW6v]V%9Tydn{
+UnS\<"lGڤPܶ=9yRfN4).QT'@\)!Am3Ȭbjo,C#;\sj	i1-&əw{֫"Ă's=Gr>ک#$_WI,7\b(oK1>EaOLoWJj>zCe8u"|nɶp]p1k51<ΉqH?|Շ}+B->R4?{̎L'ۊ<[=%6-ttQGx!*<x
+tܽȡR׻99>yGK2ć87ϻ1w.ޠ֛;(hW(bE 6?tP1Cl]mx- a0IŀC\!!~&nIڳ11sZ}y:)E6t5FcV&_YӐWץId/TyiMjMq󻢄u)Vom3cDHʨ)uNyV@a$_\@,N3[QqBO_ ^"߇fho!4U^sg8.GߤD*tMLjHrP\ciro-o`OO'*Q؞'XCt1qSj)I9JGl*}S另]R2Vl[8C26{D [ ɾ=@h	 E0M47z^
+O]wًg[vQAx?ȁ;|<N>~ӑOH0nD@.Z6Ag'5n=ko[n3Vk2	Yuȴ~5n@SU)rȵ=d-<4uU"J>tmqa:!	̥]?&b,O3wk;Ql2*&ήMJ<1 ?lXؖgɵ:;8~Y66nq#hTN! ma&"Qj\8pX}4M_/	:pU5EO'lw L#(!OZANP˾-.
+!G=Vrrm/[xY{j(W2IyB5
+}yUv䣍)-?ֽ_:][ѤeR0w"JIrHnIߩ=wL!4c9ڈ]cjq?XfM3B\$r:)oש-?]B!J⣭d;@2&~7hvZCg6Dk8NGFn ;)%0T:> D:2ihaB3&}pFd+ftsn4Υ-+k:9`3eC'X<|(d'.;Ot4yl{\P8q"z]n;XisjH^|IŵIkWwC.6,uK"]`-]<1$sOx">Wiڇe3?}*#q(10s]S\\Fs4ExS|%:я (8"M+s۶-{cFIcy%ĥ`aŽxʽ;
+]n</'u77"Ū
+ѝ?GL7ю"i+dGsD+6a +
+1Y4Xtj;[R;EK/,sg-.=/
+GRY97AlMo֬랦=Y$ *,47elqQ`s&ZmD_}a`5DweuQf8$
+STzuu mbVS&bs{:_XA>4Z.9;5S\gpX 7mપ<[VWuruH8/gqp5hLp	6w_;н똶̀΋~6E[1ίX.,X5KDc'
+XS2[_Eʝ<L[aaX
+o iE2>hۖXuQűER\]{=	zLc3!!E$3& 
\ No newline at end of file
diff --git a/sites/default/files/js/js_mEOPZBlcB3-w5s3bFLKFQac1Mgnfrix1Y1QO3iELMgQ.js b/sites/default/files/js/js_mEOPZBlcB3-w5s3bFLKFQac1Mgnfrix1Y1QO3iELMgQ.js
new file mode 100644
index 0000000..0fa5510
--- /dev/null
+++ b/sites/default/files/js/js_mEOPZBlcB3-w5s3bFLKFQac1Mgnfrix1Y1QO3iELMgQ.js
@@ -0,0 +1,3 @@
+/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js*/
+if("document" in self&&!("classList" in document.createElement("_")&&"classList" in document.createElementNS("http://www.w3.org/2000/svg","svg"))){(function(j){"use strict";if(!("Element" in j)){return}var a="classList",f="prototype",m=j.Element[f],b=Object,k=String[f].trim||function(){return this.replace(/^\s+|\s+$/g,"")},c=Array[f].indexOf||function(q){var p=0,o=this.length;for(;p<o;p++){if(p in this&&this[p]===q){return p}}return -1},n=function(o,p){this.name=o;this.code=DOMException[o];this.message=p},g=function(p,o){if(o===""){throw new n("SYNTAX_ERR","An invalid or illegal string was specified")}if(/\s/.test(o)){throw new n("INVALID_CHARACTER_ERR","String contains an invalid character")}return c.call(p,o)},d=function(s){var r=k.call(s.getAttribute("class")),q=r?r.split(/\s+/):[],p=0,o=q.length;for(;p<o;p++){this.push(q[p])}this._updateClassName=function(){s.setAttribute("class",this.toString())}},e=d[f]=[],i=function(){return new d(this)};n[f]=Error[f];e.item=function(o){return this[o]||null};e.contains=function(o){o+="";return g(this,o)!==-1};e.add=function(){var s=arguments,r=0,p=s.length,q,o=false;do{q=s[r]+"";if(g(this,q)===-1){this.push(q);o=true}}while(++r<p);if(o){this._updateClassName()}};e.remove=function(){var t=arguments,s=0,p=t.length,r,o=false;do{r=t[s]+"";var q=g(this,r);if(q!==-1){this.splice(q,1);o=true}}while(++s<p);if(o){this._updateClassName()}};e.toggle=function(p,q){p+="";var o=this.contains(p),r=o?q!==true&&"remove":q!==false&&"add";if(r){this[r](p)}return !o};e.toString=function(){return this.join(" ")};if(b.defineProperty){var l={get:i,enumerable:true,configurable:true};try{b.defineProperty(m,a,l)}catch(h){if(h.number===-2146823252){l.enumerable=false;b.defineProperty(m,a,l)}}}else{if(b[f].__defineGetter__){m.__defineGetter__(a,i)}}}(self))};
+;
diff --git a/sites/default/files/js/js_mEOPZBlcB3-w5s3bFLKFQac1Mgnfrix1Y1QO3iELMgQ.js.gz b/sites/default/files/js/js_mEOPZBlcB3-w5s3bFLKFQac1Mgnfrix1Y1QO3iELMgQ.js.gz
new file mode 100644
index 0000000..34b1ac3
--- /dev/null
+++ b/sites/default/files/js/js_mEOPZBlcB3-w5s3bFLKFQac1Mgnfrix1Y1QO3iELMgQ.js.gz
@@ -0,0 +1,5 @@
+     Uao6_!֜0D%:#]2$ŰZ:t)"$'N "޽{wG%߬jM9}$52)Jwqn.Lrk?MR-[@Qva ,&(|0w6qf;8࿢pl/p$lX299::Jmп	!ۨh	UGk[uFd.L,Pk7ZSwQQN;!:]]2G?kK܌qQ?an%ll@KAN!)iflfeҐUPnD~R=-}Fb2ﹾa5$t׍;Zjk^SiT_2nn
+%0ESճPB@6ADg,ίPr)@@H	%}2pX(("&l;.Rg޿[1}<C%	2U;.jǐيa+#Gg\>)Az>6.b/[ccц&Z
+Nr:Cɚ׫WRv5X(ߋVgbll~N	Gtc+1d ^w#]Z{scE
+pP5Ɠ׭}bXtt)(!cp|2n~-5(fjWpi!նavnna?#rCG~"%IqFL]Y		tjhh\Cn*u=zv>=WF=w@C_RGթ?x8㺗G/]"MPYֳrOVamzmF|!dZ	 -
+Q_Fi0nT-ЩP/%zVlwԙsJeeh_8`|7˯'O~>![=K-<`K	/X,ȶzq*cx8vAz?^`  
\ No newline at end of file
diff --git a/sites/default/files/js/js_wJbt5ARIR71oMld_oFPa1OBqnCKtpw5NWqeojynqHn8.js b/sites/default/files/js/js_wJbt5ARIR71oMld_oFPa1OBqnCKtpw5NWqeojynqHn8.js
new file mode 100644
index 0000000..dc0137b
--- /dev/null
+++ b/sites/default/files/js/js_wJbt5ARIR71oMld_oFPa1OBqnCKtpw5NWqeojynqHn8.js
@@ -0,0 +1,3900 @@
+/**
+ * @file
+ * Attaches behavior for the Quick Edit module.
+ *
+ * Everything happens asynchronously, to allow for:
+ *   - dynamically rendered contextual links
+ *   - asynchronously retrieved (and cached) per-field in-place editing metadata
+ *   - asynchronous setup of in-place editable field and "Quick edit" link
+ *
+ * To achieve this, there are several queues:
+ *   - fieldsMetadataQueue: fields whose metadata still needs to be fetched.
+ *   - fieldsAvailableQueue: queue of fields whose metadata is known, and for
+ *     which it has been confirmed that the user has permission to edit them.
+ *     However, FieldModels will only be created for them once there's a
+ *     contextual link for their entity: when it's possible to initiate editing.
+ *   - contextualLinksQueue: queue of contextual links on entities for which it
+ *     is not yet known whether the user has permission to edit at >=1 of them.
+ */
+
+(function ($, _, Backbone, Drupal, drupalSettings, JSON, storage) {
+
+  "use strict";
+
+  var options = $.extend(drupalSettings.quickedit,
+    // Merge strings on top of drupalSettings so that they are not mutable.
+    {
+      strings: {
+        quickEdit: Drupal.t('Quick edit')
+      }
+    }
+  );
+
+  /**
+   * Tracks fields without metadata. Contains objects with the following keys:
+   *   - DOM el
+   *   - String fieldID
+   *   - String entityID
+   */
+  var fieldsMetadataQueue = [];
+
+  /**
+   * Tracks fields ready for use. Contains objects with the following keys:
+   *   - DOM el
+   *   - String fieldID
+   *   - String entityID
+   */
+  var fieldsAvailableQueue = [];
+
+  /**
+   * Tracks contextual links on entities. Contains objects with the following
+   * keys:
+   *   - String entityID
+   *   - DOM el
+   *   - DOM region
+   */
+  var contextualLinksQueue = [];
+
+  /**
+   * Tracks how many instances exist for each unique entity. Contains key-value
+   * pairs:
+   * - String entityID
+   * - Number count
+   */
+  var entityInstancesTracker = {};
+
+  Drupal.behaviors.quickedit = {
+    attach: function (context) {
+      // Initialize the Quick Edit app once per page load.
+      $('body').once('quickedit-init', initQuickEdit);
+
+      // Find all in-place editable fields, if any.
+      var $fields = $(context).find('[data-quickedit-field-id]').once('quickedit');
+      if ($fields.length === 0) {
+        return;
+      }
+
+      // Process each entity element: identical entities that appear multiple
+      // times will get a numeric identifier, starting at 0.
+      $(context).find('[data-quickedit-entity-id]').once('quickedit').each(function (index, entityElement) {
+        processEntity(entityElement);
+      });
+
+      // Process each field element: queue to be used or to fetch metadata.
+      // When a field is being rerendered after editing, it will be processed
+      // immediately. New fields will be unable to be processed immediately, but
+      // will instead be queued to have their metadata fetched, which occurs below
+      // in fetchMissingMetaData().
+      $fields.each(function (index, fieldElement) {
+        processField(fieldElement);
+      });
+
+      // Entities and fields on the page have been detected, try to set up the
+      // contextual links for those entities that already have the necessary meta-
+      // data in the client-side cache.
+      contextualLinksQueue = _.filter(contextualLinksQueue, function (contextualLink) {
+        return !initializeEntityContextualLink(contextualLink);
+      });
+
+      // Fetch metadata for any fields that are queued to retrieve it.
+      fetchMissingMetadata(function (fieldElementsWithFreshMetadata) {
+        // Metadata has been fetched, reprocess fields whose metadata was missing.
+        _.each(fieldElementsWithFreshMetadata, processField);
+
+        // Metadata has been fetched, try to set up more contextual links now.
+        contextualLinksQueue = _.filter(contextualLinksQueue, function (contextualLink) {
+          return !initializeEntityContextualLink(contextualLink);
+        });
+      });
+    },
+    detach: function (context, settings, trigger) {
+      if (trigger === 'unload') {
+        deleteContainedModelsAndQueues($(context));
+      }
+    }
+  };
+
+  Drupal.quickedit = {
+    // A Drupal.quickedit.AppView instance.
+    app: null,
+
+    collections: {
+      // All in-place editable entities (Drupal.quickedit.EntityModel) on the
+      // page.
+      entities: null,
+      // All in-place editable fields (Drupal.quickedit.FieldModel) on the page.
+      fields: null
+    },
+
+    // In-place editors will register themselves in this object.
+    editors: {},
+
+    // Per-field metadata that indicates whether in-place editing is allowed,
+    // which in-place editor should be used, etc.
+    metadata: {
+      has: function (fieldID) {
+        return storage.getItem(this._prefixFieldID(fieldID)) !== null;
+      },
+      add: function (fieldID, metadata) {
+        storage.setItem(this._prefixFieldID(fieldID), JSON.stringify(metadata));
+      },
+      get: function (fieldID, key) {
+        var metadata = JSON.parse(storage.getItem(this._prefixFieldID(fieldID)));
+        return (typeof key === 'undefined') ? metadata : metadata[key];
+      },
+      _prefixFieldID: function (fieldID) {
+        return 'Drupal.quickedit.metadata.' + fieldID;
+      },
+      _unprefixFieldID: function (fieldID) {
+        // Strip "Drupal.quickedit.metadata.", which is 26 characters long.
+        return fieldID.substring(26);
+      },
+      intersection: function (fieldIDs) {
+        var prefixedFieldIDs = _.map(fieldIDs, this._prefixFieldID);
+        var intersection = _.intersection(prefixedFieldIDs, _.keys(sessionStorage));
+        return _.map(intersection, this._unprefixFieldID);
+      }
+    }
+  };
+
+  // Clear the Quick Edit metadata cache whenever the current user's set of
+  // permissions changes.
+  var permissionsHashKey = Drupal.quickedit.metadata._prefixFieldID('permissionsHash');
+  var permissionsHashValue = storage.getItem(permissionsHashKey);
+  var permissionsHash = drupalSettings.user.permissionsHash;
+  if (permissionsHashValue !== permissionsHash) {
+    if (typeof permissionsHash === 'string') {
+      _.chain(storage).keys().each(function (key) {
+        if (key.substring(0, 26) === 'Drupal.quickedit.metadata.') {
+          storage.removeItem(key);
+        }
+      });
+    }
+    storage.setItem(permissionsHashKey, permissionsHash);
+  }
+
+  /**
+   * Detect contextual links on entities annotated by Quick Edit; queue these to
+   * be processed.
+   */
+  $(document).on('drupalContextualLinkAdded', function (event, data) {
+    if (data.$region.is('[data-quickedit-entity-id]')) {
+      // If the contextual link is cached on the client side, an entity instance
+      // will not yet have been assigned. So assign one.
+      if (!data.$region.is('[data-quickedit-entity-instance-id]')) {
+        data.$region.once('quickedit');
+        processEntity(data.$region.get(0));
+      }
+      var contextualLink = {
+        entityID: data.$region.attr('data-quickedit-entity-id'),
+        entityInstanceID: data.$region.attr('data-quickedit-entity-instance-id'),
+        el: data.$el[0],
+        region: data.$region[0]
+      };
+      // Set up contextual links for this, otherwise queue it to be set up later.
+      if (!initializeEntityContextualLink(contextualLink)) {
+        contextualLinksQueue.push(contextualLink);
+      }
+    }
+  });
+
+  /**
+   * Extracts the entity ID from a field ID.
+   *
+   * @param String fieldID
+   *   A field ID: a string of the format
+   *   `<entity type>/<id>/<field name>/<language>/<view mode>`.
+   * @return String
+   *   An entity ID: a string of the format `<entity type>/<id>`.
+   */
+  function extractEntityID(fieldID) {
+    return fieldID.split('/').slice(0, 2).join('/');
+  }
+
+  /**
+   * Initialize the Quick Edit app.
+   *
+   * @param DOM bodyElement
+   *   This document's body element.
+   */
+  function initQuickEdit(bodyElement) {
+    Drupal.quickedit.collections.entities = new Drupal.quickedit.EntityCollection();
+    Drupal.quickedit.collections.fields = new Drupal.quickedit.FieldCollection();
+
+    // Instantiate AppModel (application state) and AppView, which is the
+    // controller of the whole in-place editing experience.
+    Drupal.quickedit.app = new Drupal.quickedit.AppView({
+      el: bodyElement,
+      model: new Drupal.quickedit.AppModel(),
+      entitiesCollection: Drupal.quickedit.collections.entities,
+      fieldsCollection: Drupal.quickedit.collections.fields
+    });
+  }
+
+  /**
+   * Assigns the entity an instance ID.
+   *
+   * @param DOM entityElement.
+   *   A Drupal Entity API entity's DOM element with a data-quickedit-entity-id
+   *   attribute.
+   */
+  function processEntity(entityElement) {
+    var entityID = entityElement.getAttribute('data-quickedit-entity-id');
+    if (!entityInstancesTracker.hasOwnProperty(entityID)) {
+      entityInstancesTracker[entityID] = 0;
+    }
+    else {
+      entityInstancesTracker[entityID]++;
+    }
+
+    // Set the calculated entity instance ID for this element.
+    var entityInstanceID = entityInstancesTracker[entityID];
+    entityElement.setAttribute('data-quickedit-entity-instance-id', entityInstanceID);
+  }
+
+  /**
+   * Fetch the field's metadata; queue or initialize it (if EntityModel exists).
+   *
+   * @param DOM fieldElement
+   *   A Drupal Field API field's DOM element with a data-quickedit-field-id
+   *   attribute.
+   */
+  function processField(fieldElement) {
+    var metadata = Drupal.quickedit.metadata;
+    var fieldID = fieldElement.getAttribute('data-quickedit-field-id');
+    var entityID = extractEntityID(fieldID);
+    // Figure out the instance ID by looking at the ancestor
+    // [data-quickedit-entity-id] element's data-quickedit-entity-instance-id
+    // attribute.
+    var entityElementSelector = '[data-quickedit-entity-id="' + entityID + '"]';
+    var entityElement = $(fieldElement).closest(entityElementSelector);
+    // In the case of a full entity view page, the entity title is rendered
+    // outside of "the entity DOM node": it's rendered as the page title. So in
+    // this case, we must find the entity in the mandatory "content" region.
+    if (entityElement.length === 0) {
+      entityElement = $('.region-content').find(entityElementSelector);
+    }
+    var entityInstanceID = entityElement
+      .get(0)
+      .getAttribute('data-quickedit-entity-instance-id');
+
+    // Early-return if metadata for this field is missing.
+    if (!metadata.has(fieldID)) {
+      fieldsMetadataQueue.push({
+        el: fieldElement,
+        fieldID: fieldID,
+        entityID: entityID,
+        entityInstanceID: entityInstanceID
+      });
+      return;
+    }
+    // Early-return if the user is not allowed to in-place edit this field.
+    if (metadata.get(fieldID, 'access') !== true) {
+      return;
+    }
+
+    // If an EntityModel for this field already exists (and hence also a "Quick
+    // edit" contextual link), then initialize it immediately.
+    if (Drupal.quickedit.collections.entities.findWhere({entityID: entityID, entityInstanceID: entityInstanceID})) {
+      initializeField(fieldElement, fieldID, entityID, entityInstanceID);
+    }
+    // Otherwise: queue the field. It is now available to be set up when its
+    // corresponding entity becomes in-place editable.
+    else {
+      fieldsAvailableQueue.push({el: fieldElement, fieldID: fieldID, entityID: entityID, entityInstanceID: entityInstanceID});
+    }
+  }
+
+  /**
+   * Initialize a field; create FieldModel.
+   *
+   * @param DOM fieldElement
+   *   The field's DOM element.
+   * @param String fieldID
+   *   The field's ID.
+   * @param String entityID
+   *   The field's entity's ID.
+   * @param String entityInstanceID
+   *   The field's entity's instance ID.
+   */
+  function initializeField(fieldElement, fieldID, entityID, entityInstanceID) {
+    var entity = Drupal.quickedit.collections.entities.findWhere({
+      entityID: entityID,
+      entityInstanceID: entityInstanceID
+    });
+
+    $(fieldElement).addClass('quickedit-field');
+
+    // The FieldModel stores the state of an in-place editable entity field.
+    var field = new Drupal.quickedit.FieldModel({
+      el: fieldElement,
+      fieldID: fieldID,
+      id: fieldID + '[' + entity.get('entityInstanceID') + ']',
+      entity: entity,
+      metadata: Drupal.quickedit.metadata.get(fieldID),
+      acceptStateChange: _.bind(Drupal.quickedit.app.acceptEditorStateChange, Drupal.quickedit.app)
+    });
+
+    // Track all fields on the page.
+    Drupal.quickedit.collections.fields.add(field);
+  }
+
+  /**
+   * Fetches metadata for fields whose metadata is missing.
+   *
+   * Fields whose metadata is missing are tracked at fieldsMetadataQueue.
+   *
+   * @param Function callback
+   *   A callback function that receives field elements whose metadata will just
+   *   have been fetched.
+   */
+  function fetchMissingMetadata(callback) {
+    if (fieldsMetadataQueue.length) {
+      var fieldIDs = _.pluck(fieldsMetadataQueue, 'fieldID');
+      var fieldElementsWithoutMetadata = _.pluck(fieldsMetadataQueue, 'el');
+      var entityIDs = _.uniq(_.pluck(fieldsMetadataQueue, 'entityID'), true);
+      // Ensure we only request entityIDs for which we don't have metadata yet.
+      entityIDs = _.difference(entityIDs, Drupal.quickedit.metadata.intersection(entityIDs));
+      fieldsMetadataQueue = [];
+
+      $.ajax({
+        url: Drupal.url('quickedit/metadata'),
+        type: 'POST',
+        data: {
+          'fields[]': fieldIDs,
+          'entities[]': entityIDs
+        },
+        dataType: 'json',
+        success: function (results) {
+          // Store the metadata.
+          _.each(results, function (fieldMetadata, fieldID) {
+            Drupal.quickedit.metadata.add(fieldID, fieldMetadata);
+          });
+
+          callback(fieldElementsWithoutMetadata);
+        }
+      });
+    }
+  }
+
+  /**
+   * Loads missing in-place editor's attachments (JavaScript and CSS files).
+   *
+   * Missing in-place editors are those whose fields are actively being used on
+   * the page but don't have
+   *
+   * @param Function callback
+   *   Callback function to be called when the missing in-place editors (if any)
+   *   have been inserted into the DOM. i.e. they may still be loading.
+   */
+  function loadMissingEditors(callback) {
+    var loadedEditors = _.keys(Drupal.quickedit.editors);
+    var missingEditors = [];
+    Drupal.quickedit.collections.fields.each(function (fieldModel) {
+      var metadata = Drupal.quickedit.metadata.get(fieldModel.get('fieldID'));
+      if (metadata.access && _.indexOf(loadedEditors, metadata.editor) === -1) {
+        missingEditors.push(metadata.editor);
+        // Set a stub, to prevent subsequent calls to loadMissingEditors() from
+        // loading the same in-place editor again. Loading an in-place editor
+        // requires talking to a server, to download its JavaScript, then
+        // executing its JavaScript, and only then its Drupal.quickedit.editors
+        // entry will be set.
+        Drupal.quickedit.editors[metadata.editor] = false;
+      }
+    });
+    missingEditors = _.uniq(missingEditors);
+    if (missingEditors.length === 0) {
+      callback();
+      return;
+    }
+
+    // @todo Simplify this once https://drupal.org/node/1533366 lands.
+    // @see https://drupal.org/node/2029999.
+    var id = 'quickedit-load-editors';
+    // Create a temporary element to be able to use Drupal.ajax.
+    var $el = $('<div id="' + id + '" class="hidden"></div>').appendTo('body');
+    // Create a Drupal.ajax instance to load the form.
+    var loadEditorsAjax = new Drupal.ajax(id, $el, {
+      url: Drupal.url('quickedit/attachments'),
+      event: 'quickedit-internal.quickedit',
+      submit: {'editors[]': missingEditors},
+      // No progress indicator.
+      progress: {type: null}
+    });
+    // Implement a scoped insert AJAX command: calls the callback after all AJAX
+    // command functions have been executed (hence the deferred calling).
+    var realInsert = Drupal.AjaxCommands.prototype.insert;
+    loadEditorsAjax.commands.insert = function (ajax, response, status) {
+      _.defer(callback);
+      realInsert(ajax, response, status);
+      $el.off('quickedit-internal.quickedit');
+      $el.remove();
+    };
+    // Trigger the AJAX request, which will should return AJAX commands to insert
+    // any missing attachments.
+    $el.trigger('quickedit-internal.quickedit');
+  }
+
+  /**
+   * Attempts to set up a "Quick edit" link and corresponding EntityModel.
+   *
+   * @param Object contextualLink
+   *   An object with the following properties:
+   *     - String entityID: a Quick Edit entity identifier, e.g. "node/1" or
+   *       "block_content/5".
+   *     - String entityInstanceID: a Quick Edit entity instance identifier,
+   *       e.g. 0, 1 or n (depending on whether it's the first, second, or n+1st
+   *       instance of this entity).
+   *     - DOM el: element pointing to the contextual links placeholder for this
+   *       entity.
+   *     - DOM region: element pointing to the contextual region for this entity.
+   * @return Boolean
+   *   Returns true when a contextual the given contextual link metadata can be
+   *   removed from the queue (either because the contextual link has been set up
+   *   or because it is certain that in-place editing is not allowed for any of
+   *   its fields).
+   *   Returns false otherwise.
+   */
+  function initializeEntityContextualLink(contextualLink) {
+    var metadata = Drupal.quickedit.metadata;
+    // Check if the user has permission to edit at least one of them.
+    function hasFieldWithPermission(fieldIDs) {
+      for (var i = 0; i < fieldIDs.length; i++) {
+        var fieldID = fieldIDs[i];
+        if (metadata.get(fieldID, 'access') === true) {
+          return true;
+        }
+      }
+      return false;
+    }
+
+    // Checks if the metadata for all given field IDs exists.
+    function allMetadataExists(fieldIDs) {
+      return fieldIDs.length === metadata.intersection(fieldIDs).length;
+    }
+
+    // Find all fields for this entity instance and collect their field IDs.
+    var fields = _.where(fieldsAvailableQueue, {
+      entityID: contextualLink.entityID,
+      entityInstanceID: contextualLink.entityInstanceID
+    });
+    var fieldIDs = _.pluck(fields, 'fieldID');
+
+    // No fields found yet.
+    if (fieldIDs.length === 0) {
+      return false;
+    }
+    // The entity for the given contextual link contains at least one field that
+    // the current user may edit in-place; instantiate EntityModel,
+    // EntityDecorationView and ContextualLinkView.
+    else if (hasFieldWithPermission(fieldIDs)) {
+      var entityModel = new Drupal.quickedit.EntityModel({
+        el: contextualLink.region,
+        entityID: contextualLink.entityID,
+        entityInstanceID: contextualLink.entityInstanceID,
+        id: contextualLink.entityID + '[' + contextualLink.entityInstanceID + ']',
+        label: Drupal.quickedit.metadata.get(contextualLink.entityID, 'label')
+      });
+      Drupal.quickedit.collections.entities.add(entityModel);
+      // Create an EntityDecorationView associated with the root DOM node of the
+      // entity.
+      var entityDecorationView = new Drupal.quickedit.EntityDecorationView({
+        el: contextualLink.region,
+        model: entityModel
+      });
+      entityModel.set('entityDecorationView', entityDecorationView);
+
+      // Initialize all queued fields within this entity (creates FieldModels).
+      _.each(fields, function (field) {
+        initializeField(field.el, field.fieldID, contextualLink.entityID, contextualLink.entityInstanceID);
+      });
+      fieldsAvailableQueue = _.difference(fieldsAvailableQueue, fields);
+
+      // Initialization should only be called once. Use Underscore's once method
+      // to get a one-time use version of the function.
+      var initContextualLink = _.once(function () {
+        var $links = $(contextualLink.el).find('.contextual-links');
+        var contextualLinkView = new Drupal.quickedit.ContextualLinkView($.extend({
+          el: $('<li class="quickedit"><a href="" role="button" aria-pressed="false"></a></li>').prependTo($links),
+          model: entityModel,
+          appModel: Drupal.quickedit.app.model
+        }, options));
+        entityModel.set('contextualLinkView', contextualLinkView);
+      });
+
+      // Set up ContextualLinkView after loading any missing in-place editors.
+      loadMissingEditors(initContextualLink);
+
+      return true;
+    }
+    // There was not at least one field that the current user may edit in-place,
+    // even though the metadata for all fields within this entity is available.
+    else if (allMetadataExists(fieldIDs)) {
+      return true;
+    }
+
+    return false;
+  }
+
+  /**
+   * Delete models and queue items that are contained within a given context.
+   *
+   * Deletes any contained EntityModels (plus their associated FieldModels and
+   * ContextualLinkView) and FieldModels, as well as the corresponding queues.
+   *
+   * After EntityModels, FieldModels must also be deleted, because it is possible
+   * in Drupal for a field DOM element to exist outside of the entity DOM element,
+   * e.g. when viewing the full node, the title of the node is not rendered within
+   * the node (the entity) but as the page title.
+   *
+   * Note: this will not delete an entity that is actively being in-place edited.
+   *
+   * @param jQuery $context
+   *   The context within which to delete.
+   */
+  function deleteContainedModelsAndQueues($context) {
+    $context.find('[data-quickedit-entity-id]').addBack('[data-quickedit-entity-id]').each(function (index, entityElement) {
+      // Delete entity model.
+      var entityModel = Drupal.quickedit.collections.entities.findWhere({el: entityElement});
+      if (entityModel) {
+        var contextualLinkView = entityModel.get('contextualLinkView');
+        contextualLinkView.undelegateEvents();
+        contextualLinkView.remove();
+        // Remove the EntityDecorationView.
+        entityModel.get('entityDecorationView').remove();
+        // Destroy the EntityModel; this will also destroy its FieldModels.
+        entityModel.destroy();
+      }
+
+      // Filter queue.
+      function hasOtherRegion(contextualLink) {
+        return contextualLink.region !== entityElement;
+      }
+
+      contextualLinksQueue = _.filter(contextualLinksQueue, hasOtherRegion);
+    });
+
+    $context.find('[data-quickedit-field-id]').addBack('[data-quickedit-field-id]').each(function (index, fieldElement) {
+      // Delete field models.
+      Drupal.quickedit.collections.fields.chain()
+        .filter(function (fieldModel) { return fieldModel.get('el') === fieldElement; })
+        .invoke('destroy');
+
+      // Filter queues.
+      function hasOtherFieldElement(field) {
+        return field.el !== fieldElement;
+      }
+
+      fieldsMetadataQueue = _.filter(fieldsMetadataQueue, hasOtherFieldElement);
+      fieldsAvailableQueue = _.filter(fieldsAvailableQueue, hasOtherFieldElement);
+    });
+  }
+
+})(jQuery, _, Backbone, Drupal, drupalSettings, window.JSON, window.sessionStorage);
+;
+/**
+ * @file
+ * Provides utility functions for Quick Edit.
+ */
+
+(function ($, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.util = Drupal.quickedit.util || {};
+
+  Drupal.quickedit.util.constants = {};
+  Drupal.quickedit.util.constants.transitionEnd = "transitionEnd.quickedit webkitTransitionEnd.quickedit transitionend.quickedit msTransitionEnd.quickedit oTransitionEnd.quickedit";
+
+  /**
+   * Converts a field id into a formatted url path.
+   *
+   * @param String id
+   *   The id of an editable field. For example, 'node/1/body/und/full'.
+   * @param String urlFormat
+   *   The Controller route for field processing. For example,
+   *   '/quickedit/form/!entity_type/!id/!field_name/!langcode/!view_mode'.
+   */
+  Drupal.quickedit.util.buildUrl = function (id, urlFormat) {
+    var parts = id.split('/');
+    return Drupal.formatString(decodeURIComponent(urlFormat), {
+      '!entity_type': parts[0],
+      '!id': parts[1],
+      '!field_name': parts[2],
+      '!langcode': parts[3],
+      '!view_mode': parts[4]
+    });
+  };
+
+  /**
+   * Shows a network error modal dialog.
+   *
+   * @param String title
+   *   The title to use in the modal dialog.
+   * @param String message
+   *   The message to use in the modal dialog.
+   */
+  Drupal.quickedit.util.networkErrorModal = function (title, message) {
+    var $message = $('<div>' + message + '</div>');
+    var networkErrorModal = Drupal.dialog($message.get(0), {
+      title: title,
+      dialogClass: 'quickedit-network-error',
+      buttons: [
+        {
+          text: Drupal.t('OK'),
+          click: function () {
+            networkErrorModal.close();
+          },
+          primary: true
+        }
+      ],
+      create: function () {
+        $(this).parent().find('.ui-dialog-titlebar-close').remove();
+      },
+      close: function (event) {
+        // Automatically destroy the DOM element that was used for the dialog.
+        $(event.target).remove();
+      }
+    });
+    networkErrorModal.showModal();
+  };
+
+  Drupal.quickedit.util.form = {
+
+    /**
+     * Loads a form, calls a callback to insert.
+     *
+     * Leverages Drupal.ajax' ability to have scoped (per-instance) command
+     * implementations to be able to call a callback.
+     *
+     * @param Object options
+     *   An object with the following keys:
+     *    - jQuery $el: (required) DOM element necessary for Drupal.ajax to
+     *      perform AJAX commands.
+     *    - String fieldID: (required) the field ID that uniquely identifies the
+     *      field for which this form will be loaded.
+     *    - Boolean nocssjs: (required) boolean indicating whether no CSS and JS
+     *      should be returned (necessary when the form is invisible to the user).
+     *    - Boolean reset: (required) boolean indicating whether the data stored
+     *      for this field's entity in TempStore should be used or reset.
+     * @param Function callback
+     *   A callback function that will receive the form to be inserted, as well as
+     *   the ajax object, necessary if the callback wants to perform other AJAX
+     *   commands.
+     */
+    load: function (options, callback) {
+      var $el = options.$el;
+      var fieldID = options.fieldID;
+
+      // Create a Drupal.ajax instance to load the form.
+      var formLoaderAjax = new Drupal.ajax(fieldID, $el, {
+        url: Drupal.quickedit.util.buildUrl(fieldID, Drupal.url('quickedit/form/!entity_type/!id/!field_name/!langcode/!view_mode')),
+        event: 'quickedit-internal.quickedit',
+        submit: {
+          nocssjs: options.nocssjs,
+          reset: options.reset
+        },
+        progress: {type: null}, // No progress indicator.
+        error: function (xhr, url) {
+          $el.off('quickedit-internal.quickedit');
+
+          // Show a modal to inform the user of the network error.
+          var fieldLabel = Drupal.quickedit.metadata.get(fieldID, 'label');
+          var message = Drupal.t('Could not load the form for <q>@field-label</q>, either due to a website problem or a network connection problem.<br>Please try again.', {'@field-label': fieldLabel});
+          Drupal.quickedit.util.networkErrorModal(Drupal.t('Sorry!'), message);
+
+          // Change the state back to "candidate", to allow the user to start
+          // in-place editing of the field again.
+          var fieldModel = Drupal.quickedit.app.model.get('activeField');
+          fieldModel.set('state', 'candidate');
+        }
+      });
+      // Implement a scoped quickeditFieldForm AJAX command: calls the callback.
+      formLoaderAjax.commands.quickeditFieldForm = function (ajax, response, status) {
+        callback(response.data, ajax);
+        $el.off('quickedit-internal.quickedit');
+        formLoaderAjax = null;
+      };
+      // This will ensure our scoped quickeditFieldForm AJAX command gets called.
+      $el.trigger('quickedit-internal.quickedit');
+    },
+
+    /**
+     * Creates a Drupal.ajax instance that is used to save a form.
+     *
+     * @param Object options
+     *   An object with the following keys:
+     *    - nocssjs: (required) boolean indicating whether no CSS and JS should be
+     *      returned (necessary when the form is invisible to the user).
+     *    - other_view_modes: (required) array containing view mode IDs (of other
+     *      instances of this field on the page).
+     * @return Drupal.ajax
+     *   A Drupal.ajax instance.
+     */
+    ajaxifySaving: function (options, $submit) {
+      // Re-wire the form to handle submit.
+      var settings = {
+        url: $submit.closest('form').attr('action'),
+        setClick: true,
+        event: 'click.quickedit',
+        progress: {type: null},
+        submit: {
+          nocssjs: options.nocssjs,
+          other_view_modes: options.other_view_modes
+        },
+        // Reimplement the success handler to ensure Drupal.attachBehaviors() does
+        // not get called on the form.
+        success: function (response, status) {
+          for (var i in response) {
+            if (response.hasOwnProperty(i) && response[i].command && this.commands[response[i].command]) {
+              this.commands[response[i].command](this, response[i], status);
+            }
+          }
+        }
+      };
+
+      return new Drupal.ajax($submit.attr('id'), $submit[0], settings);
+    },
+
+    /**
+     * Cleans up the Drupal.ajax instance that is used to save the form.
+     *
+     * @param Drupal.ajax ajax
+     *   A Drupal.ajax instance that was returned by
+     *   Drupal.quickedit.form.ajaxifySaving().
+     */
+    unajaxifySaving: function (ajax) {
+      $(ajax.element).off('click.quickedit');
+    }
+
+  };
+
+})(jQuery, Drupal);
+;
+/**
+ * @file
+ * A Backbone Model subclass that enforces validation when calling set().
+ */
+
+(function (Backbone) {
+
+  "use strict";
+
+  Drupal.quickedit.BaseModel = Backbone.Model.extend({
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      this.__initialized = true;
+      return Backbone.Model.prototype.initialize.call(this, options);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    set: function (key, val, options) {
+      if (this.__initialized) {
+        // Deal with both the "key", value and {key:value}-style arguments.
+        if (typeof key === 'object') {
+          key.validate = true;
+        }
+        else {
+          if (!options) {
+            options = {};
+          }
+          options.validate = true;
+        }
+      }
+      return Backbone.Model.prototype.set.call(this, key, val, options);
+    }
+
+  });
+
+}(Backbone));
+;
+/**
+ * @file
+ * A Backbone Model for the state of the in-place editing application.
+ *
+ * @see Drupal.quickedit.AppView
+ */
+
+(function (Backbone, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.AppModel = Backbone.Model.extend({
+
+    defaults: {
+      // The currently state = 'highlighted' Drupal.quickedit.FieldModel, if
+      // any.
+      // @see Drupal.quickedit.FieldModel.states
+      highlightedField: null,
+      // The currently state = 'active' Drupal.quickedit.FieldModel, if any.
+      // @see Drupal.quickedit.FieldModel.states
+      activeField: null,
+      // Reference to a Drupal.dialog instance if a state change requires
+      // confirmation.
+      activeModal: null
+    }
+
+  });
+
+}(Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone Model for the state of an in-place editable entity in the DOM.
+ */
+
+(function (_, $, Backbone, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.EntityModel = Drupal.quickedit.BaseModel.extend({
+
+    defaults: {
+      // The DOM element that represents this entity. It may seem bizarre to
+      // have a DOM element in a Backbone Model, but we need to be able to map
+      // entities in the DOM to EntityModels in memory.
+      el: null,
+      // An entity ID, of the form "<entity type>/<entity ID>", e.g. "node/1".
+      entityID: null,
+      // An entity instance ID. The first intance of a specific entity (i.e. with
+      // a given entity ID) is assigned 0, the second 1, and so on.
+      entityInstanceID: null,
+      // The unique ID of this entity instance on the page, of the form "<entity
+      // type>/<entity ID>[entity instance ID]", e.g. "node/1[0]".
+      id: null,
+      // The label of the entity.
+      label: null,
+      // A Drupal.quickedit.FieldCollection for all fields of this entity.
+      fields: null,
+
+      // The attributes below are stateful. The ones above will never change
+      // during the life of a EntityModel instance.
+
+      // Indicates whether this instance of this entity is currently being
+      // edited in-place.
+      isActive: false,
+      // Whether one or more fields have already been stored in TempStore.
+      inTempStore: false,
+      // Whether one or more fields have already been stored in TempStore *or*
+      // the field that's currently being edited is in the 'changed' or a later
+      // state. In other words, this boolean indicates whether a "Save" button is
+      // necessary or not.
+      isDirty: false,
+      // Whether the request to the server has been made to commit this entity.
+      // Used to prevent multiple such requests.
+      isCommitting: false,
+      // The current processing state of an entity.
+      state: 'closed',
+      // The IDs of the fields whose new values have been stored in TempStore. We
+      // must store this on the EntityModel as well (even though it already is on
+      // the FieldModel) because when a field is rerendered, its FieldModel is
+      // destroyed and this allows us to transition it back to the proper state.
+      fieldsInTempStore: [],
+      // A flag the tells the application that this EntityModel must be reloaded
+      // in order to restore the original values to its fields in the client.
+      reload: false
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function () {
+      this.set('fields', new Drupal.quickedit.FieldCollection());
+
+      // Respond to entity state changes.
+      this.listenTo(this, 'change:state', this.stateChange);
+
+      // The state of the entity is largely dependent on the state of its
+      // fields.
+      this.listenTo(this.get('fields'), 'change:state', this.fieldStateChange);
+
+      // Call Drupal.quickedit.BaseModel's initialize() method.
+      Drupal.quickedit.BaseModel.prototype.initialize.call(this);
+    },
+
+    /**
+     * Updates FieldModels' states when an EntityModel change occurs.
+     *
+     * @param Drupal.quickedit.EntityModel entityModel
+     * @param String state
+     *   The state of the associated entity. One of Drupal.quickedit.EntityModel.states.
+     * @param Object options
+     */
+    stateChange: function (entityModel, state, options) {
+      var to = state;
+      switch (to) {
+        case 'closed':
+          this.set({
+            'isActive': false,
+            'inTempStore': false,
+            'isDirty': false
+          });
+          break;
+
+        case 'launching':
+          break;
+
+        case 'opening':
+          // Set the fields to candidate state.
+          entityModel.get('fields').each(function (fieldModel) {
+            fieldModel.set('state', 'candidate', options);
+          });
+          break;
+
+        case 'opened':
+          // The entity is now ready for editing!
+          this.set('isActive', true);
+          break;
+
+        case 'committing':
+          // The user indicated they want to save the entity.
+          var fields = this.get('fields');
+          // For fields that are in an active state, transition them to candidate.
+          fields.chain()
+            .filter(function (fieldModel) {
+              return _.intersection([fieldModel.get('state')], ['active']).length;
+            })
+            .each(function (fieldModel) {
+              fieldModel.set('state', 'candidate');
+            });
+          // For fields that are in a changed state, field values must first be
+          // stored in TempStore.
+          fields.chain()
+            .filter(function (fieldModel) {
+              return _.intersection([fieldModel.get('state')], Drupal.quickedit.app.changedFieldStates).length;
+            })
+            .each(function (fieldModel) {
+              fieldModel.set('state', 'saving');
+            });
+          break;
+
+        case 'deactivating':
+          var changedFields = this.get('fields')
+            .filter(function (fieldModel) {
+              return _.intersection([fieldModel.get('state')], ['changed', 'invalid']).length;
+            });
+          // If the entity contains unconfirmed or unsaved changes, return the
+          // entity to an opened state and ask the user if they would like to save
+          // the changes or discard the changes.
+          //   1. One of the fields is in a changed state. The changed field might
+          //   just be a change in the client or it might have been saved to
+          //   tempstore.
+          //   2. The saved flag is empty and the confirmed flag is empty. If the
+          //   entity has been saved to the server, the fields changed in the
+          //   client are irrelevant. If the changes are confirmed, then proceed
+          //   to set the fields to candidate state.
+          if ((changedFields.length || this.get('fieldsInTempStore').length) && (!options.saved && !options.confirmed)) {
+            // Cancel deactivation until the user confirms save or discard.
+            this.set('state', 'opened', {confirming: true});
+            // An action in reaction to state change must be deferred.
+            _.defer(function () {
+              Drupal.quickedit.app.confirmEntityDeactivation(entityModel);
+            });
+          }
+          else {
+            var invalidFields = this.get('fields')
+              .filter(function (fieldModel) {
+                return _.intersection([fieldModel.get('state')], ['invalid']).length;
+              });
+            // Indicate if this EntityModel needs to be reloaded in order to
+            // restore the original values of its fields.
+            entityModel.set('reload', (this.get('fieldsInTempStore').length || invalidFields.length));
+            // Set all fields to the 'candidate' state. A changed field may have to
+            // go through confirmation first.
+            entityModel.get('fields').each(function (fieldModel) {
+              // If the field is already in the candidate state, trigger a change
+              // event so that the entityModel can move to the next state in
+              // deactivation.
+              if (_.intersection([fieldModel.get('state')], ['candidate', 'highlighted']).length) {
+                fieldModel.trigger('change:state', fieldModel, fieldModel.get('state'), options);
+              }
+              else {
+                fieldModel.set('state', 'candidate', options);
+              }
+            });
+          }
+          break;
+
+        case 'closing':
+          // Set all fields to the 'inactive' state.
+          options.reason = 'stop';
+          this.get('fields').each(function (fieldModel) {
+            fieldModel.set({
+              'inTempStore': false,
+              'state': 'inactive'
+            }, options);
+          });
+          break;
+      }
+    },
+
+    /**
+     * Updates a Field and Entity model's "inTempStore" when appropriate.
+     *
+     * Helper function.
+     *
+     * @param Drupal.quickedit.EntityModel entityModel
+     *   The model of the entity for which a field's state attribute has changed.
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   The model of the field whose state attribute has changed.
+     *
+     * @see fieldStateChange()
+     */
+    _updateInTempStoreAttributes: function (entityModel, fieldModel) {
+      var current = fieldModel.get('state');
+      var previous = fieldModel.previous('state');
+      var fieldsInTempStore = entityModel.get('fieldsInTempStore');
+      // If the fieldModel changed to the 'saved' state: remember that this
+      // field was saved to TempStore.
+      if (current === 'saved') {
+        // Mark the entity as saved in TempStore, so that we can pass the
+        // proper "reset TempStore" boolean value when communicating with the
+        // server.
+        entityModel.set('inTempStore', true);
+        // Mark the field as saved in TempStore, so that visual indicators
+        // signifying just that may be rendered.
+        fieldModel.set('inTempStore', true);
+        // Remember that this field is in TempStore, restore when rerendered.
+        fieldsInTempStore.push(fieldModel.get('fieldID'));
+        fieldsInTempStore = _.uniq(fieldsInTempStore);
+        entityModel.set('fieldsInTempStore', fieldsInTempStore);
+      }
+      // If the fieldModel changed to the 'candidate' state from the
+      // 'inactive' state, then this is a field for this entity that got
+      // rerendered. Restore its previous 'inTempStore' attribute value.
+      else if (current === 'candidate' && previous === 'inactive') {
+        fieldModel.set('inTempStore', _.intersection([fieldModel.get('fieldID')], fieldsInTempStore).length > 0);
+      }
+    },
+
+    /**
+     * Reacts to state changes in this entity's fields.
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   The model of the field whose state attribute changed.
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.FieldModel.states.
+     */
+    fieldStateChange: function (fieldModel, state) {
+      var entityModel = this;
+      var fieldState = state;
+      // Switch on the entityModel state.
+      // The EntityModel responds to FieldModel state changes as a function of its
+      // state. For example, a field switching back to 'candidate' state when its
+      // entity is in the 'opened' state has no effect on the entity. But that
+      // same switch back to 'candidate' state of a field when the entity is in
+      // the 'committing' state might allow the entity to proceed with the commit
+      // flow.
+      switch (this.get('state')) {
+        case 'closed':
+        case 'launching':
+          // It should be impossible to reach these: fields can't change state
+          // while the entity is closed or still launching.
+          break;
+
+        case 'opening':
+          // We must change the entity to the 'opened' state, but it must first be
+          // confirmed that all of its fieldModels have transitioned to the
+          // 'candidate' state.
+          // We do this here, because this is called every time a fieldModel
+          // changes state, hence each time this is called, we get closer to the
+          // goal of having all fieldModels in the 'candidate' state.
+          // A state change in reaction to another state change must be deferred.
+          _.defer(function () {
+            entityModel.set('state', 'opened', {
+              'accept-field-states': Drupal.quickedit.app.readyFieldStates
+            });
+          });
+          break;
+
+        case 'opened':
+          // Set the isDirty attribute when appropriate so that it is known when
+          // to display the "Save" button in the entity toolbar.
+          // Note that once a field has been changed, there's no way to discard
+          // that change, hence it will have to be saved into TempStore, or the
+          // in-place editing of this field will have to be stopped completely.
+          // In other words: once any field enters the 'changed' field, then for
+          // the remainder of the in-place editing session, the entity is by
+          // definition dirty.
+          if (fieldState === 'changed') {
+            entityModel.set('isDirty', true);
+          }
+          else {
+            this._updateInTempStoreAttributes(entityModel, fieldModel);
+          }
+          break;
+
+        case 'committing':
+          // If the field save returned a validation error, set the state of the
+          // entity back to 'opened'.
+          if (fieldState === 'invalid') {
+            // A state change in reaction to another state change must be deferred.
+            _.defer(function () {
+              entityModel.set('state', 'opened', {reason: 'invalid'});
+            });
+          }
+          else {
+            this._updateInTempStoreAttributes(entityModel, fieldModel);
+          }
+
+          // Attempt to save the entity. If the entity's fields are not yet all in
+          // a ready state, the save will not be processed.
+          var options = {
+            'accept-field-states': Drupal.quickedit.app.readyFieldStates
+          };
+          if (entityModel.set('isCommitting', true, options)) {
+            entityModel.save({
+              success: function () {
+                entityModel.set({
+                  'state': 'deactivating',
+                  'isCommitting': false
+                }, {'saved': true});
+              },
+              error: function () {
+                // Reset the "isCommitting" mutex.
+                entityModel.set('isCommitting', false);
+                // Change the state back to "opened", to allow the user to hit the
+                // "Save" button again.
+                entityModel.set('state', 'opened', {reason: 'networkerror'});
+                // Show a modal to inform the user of the network error.
+                var message = Drupal.t('Your changes to <q>@entity-title</q> could not be saved, either due to a website problem or a network connection problem.<br>Please try again.', {'@entity-title': entityModel.get('label')});
+                Drupal.quickedit.util.networkErrorModal(Drupal.t('Sorry!'), message);
+              }
+            });
+          }
+          break;
+
+        case 'deactivating':
+          // When setting the entity to 'closing', require that all fieldModels
+          // are in either the 'candidate' or 'highlighted' state.
+          // A state change in reaction to another state change must be deferred.
+          _.defer(function () {
+            entityModel.set('state', 'closing', {
+              'accept-field-states': Drupal.quickedit.app.readyFieldStates
+            });
+          });
+          break;
+
+        case 'closing':
+          // When setting the entity to 'closed', require that all fieldModels are
+          // in the 'inactive' state.
+          // A state change in reaction to another state change must be deferred.
+          _.defer(function () {
+            entityModel.set('state', 'closed', {
+              'accept-field-states': ['inactive']
+            });
+          });
+          break;
+      }
+    },
+
+    /**
+     * Fires an AJAX request to the REST save URL for an entity.
+     *
+     * @param options
+     *   An object of options that contains:
+     *     - success: (optional) A function to invoke if the entity is success-
+     *     fully saved.
+     */
+    save: function (options) {
+      var entityModel = this;
+
+      // @todo Simplify this once https://drupal.org/node/1533366 lands.
+      // @see https://drupal.org/node/2029999.
+      var id = 'quickedit-save-entity';
+      // Create a temporary element to be able to use Drupal.ajax.
+      var $el = $('#quickedit-entity-toolbar').find('.action-save'); // This is the span element inside the button.
+      // Create a Drupal.ajax instance to save the entity.
+      var entitySaverAjax = new Drupal.ajax(id, $el, {
+        url: Drupal.url('quickedit/entity/' + entityModel.get('entityID')),
+        event: 'quickedit-save.quickedit',
+        progress: {type: 'none'},
+        error: function () {
+          $el.off('quickedit-save.quickedit');
+          // Let the Drupal.quickedit.EntityModel Backbone model's error()=
+          // method handle errors.
+          options.error.call(entityModel);
+        }
+      });
+      // Entity saved successfully.
+      entitySaverAjax.commands.quickeditEntitySaved = function (ajax, response, status) {
+        // Clean up.
+        $(ajax.element).off('quickedit-save.quickedit');
+        // All fields have been moved from TempStore to permanent storage, update
+        // the "inTempStore" attribute on FieldModels, on the EntityModel and
+        // clear EntityModel's "fieldInTempStore" attribute.
+        entityModel.get('fields').each(function (fieldModel) {
+          fieldModel.set('inTempStore', false);
+        });
+        entityModel.set('inTempStore', false);
+        entityModel.set('fieldsInTempStore', []);
+
+        // Invoke the optional success callback.
+        if (options.success) {
+          options.success.call(entityModel);
+        }
+      };
+      // Trigger the AJAX request, which will will return the
+      // quickeditEntitySaved AJAX command to which we then react.
+      $el.trigger('quickedit-save.quickedit');
+    },
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Object attrs
+     *   The attributes changes in the save or set call.
+     * @param Object options
+     *   An object with the following option:
+     *     - String reason (optional): a string that conveys a particular reason
+     *       to allow for an exceptional state change.
+     *     - Array accept-field-states (optional) An array of strings that
+     *     represent field states that the entities must be in to validate. For
+     *     example, if accept-field-states is ['candidate', 'highlighted'], then
+     *     all the fields of the entity must be in either of these two states
+     *     for the save or set call to validate and proceed.
+     */
+    validate: function (attrs, options) {
+      var acceptedFieldStates = options['accept-field-states'] || [];
+
+      // Validate state change.
+      var currentState = this.get('state');
+      var nextState = attrs.state;
+      if (currentState !== nextState) {
+        // Ensure it's a valid state.
+        if (_.indexOf(this.constructor.states, nextState) === -1) {
+          return '"' + nextState + '" is an invalid state';
+        }
+
+        // Ensure it's a state change that is allowed.
+        // Check if the acceptStateChange function accepts it.
+        if (!this._acceptStateChange(currentState, nextState, options)) {
+          return 'state change not accepted';
+        }
+        // If that function accepts it, then ensure all fields are also in an
+        // acceptable state.
+        else if (!this._fieldsHaveAcceptableStates(acceptedFieldStates)) {
+          return 'state change not accepted because fields are not in acceptable state';
+        }
+      }
+
+      // Validate setting isCommitting = true.
+      var currentIsCommitting = this.get('isCommitting');
+      var nextIsCommitting = attrs.isCommitting;
+      if (currentIsCommitting === false && nextIsCommitting === true) {
+        if (!this._fieldsHaveAcceptableStates(acceptedFieldStates)) {
+          return 'isCommitting change not accepted because fields are not in acceptable state';
+        }
+      }
+      else if (currentIsCommitting === true && nextIsCommitting === true) {
+        return "isCommiting is a mutex, hence only changes are allowed";
+      }
+    },
+
+    // Like @see AppView.acceptEditorStateChange()
+    _acceptStateChange: function (from, to, context) {
+      var accept = true;
+
+      // In general, enforce the states sequence. Disallow going back from a
+      // "later" state to an "earlier" state, except in explicitly allowed
+      // cases.
+      if (!this.constructor.followsStateSequence(from, to)) {
+        accept = false;
+
+        // Allow: closing -> closed.
+        // Necessary to stop editing an entity.
+        if (from === 'closing' && to === 'closed') {
+          accept = true;
+        }
+        // Allow: committing -> opened.
+        // Necessary to be able to correct an invalid field, or to hit the "Save"
+        // button again after a server/network error.
+        else if (from === 'committing' && to === 'opened' && context.reason && (context.reason === 'invalid' || context.reason === 'networkerror')) {
+          accept = true;
+        }
+        // Allow: deactivating -> opened.
+        // Necessary to be able to confirm changes with the user.
+        else if (from === 'deactivating' && to === 'opened' && context.confirming) {
+          accept = true;
+        }
+        // Allow: opened -> deactivating.
+        // Necessary to be able to stop editing.
+        else if (from === 'opened' && to === 'deactivating' && context.confirmed) {
+          accept = true;
+        }
+      }
+
+      return accept;
+    },
+
+    /**
+     * @param Array acceptedFieldStates
+     *   @see validate()
+     * @return Boolean
+     */
+    _fieldsHaveAcceptableStates: function (acceptedFieldStates) {
+      var accept = true;
+
+      // If no acceptable field states are provided, assume all field states are
+      // acceptable. We want to let validation pass as a default and only
+      // check validity on calls to set that explicitly request it.
+      if (acceptedFieldStates.length > 0) {
+        var fieldStates = this.get('fields').pluck('state') || [];
+        // If not all fields are in one of the accepted field states, then we
+        // still can't allow this state change.
+        if (_.difference(fieldStates, acceptedFieldStates).length) {
+          accept = false;
+        }
+      }
+
+      return accept;
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    destroy: function (options) {
+      Drupal.quickedit.BaseModel.prototype.destroy.call(this, options);
+
+      this.stopListening();
+
+      // Destroy all fields of this entity.
+      this.get('fields').each(function (fieldModel) {
+        fieldModel.destroy();
+      });
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    sync: function () {
+      // We don't use REST updates to sync.
+      return;
+    }
+
+  }, {
+
+    /**
+     * A list (sequence) of all possible states an entity can be in during
+     * in-place editing.
+     */
+    states: [
+      // Initial state, like field's 'inactive' OR the user has just finished
+      // in-place editing this entity.
+      // - Trigger: none (initial) or EntityModel (finished).
+      // - Expected behavior: (when not initial state): tear down
+      //   EntityToolbarView, in-place editors and related views.
+      'closed',
+      // User has activated in-place editing of this entity.
+      // - Trigger: user.
+      // - Expected behavior: the EntityToolbarView is gets set up, in-place
+      //   editors (EditorViews) and related views for this entity's fields are
+      //   set up. Upon completion of those, the state is changed to 'opening'.
+      'launching',
+      // Launching has finished.
+      // - Trigger: application.
+      // - Guarantees: in-place editors ready for use, all entity and field views
+      //   have been set up, all fields are in the 'inactive' state.
+      // - Expected behavior: all fields are changed to the 'candidate' state and
+      //   once this is completed, the entity state will be changed to 'opened'.
+      'opening',
+      // Opening has finished.
+      // - Trigger: EntityModel.
+      // - Guarantees: see 'opening', all fields are in the 'candidate' state.
+      // - Expected behavior: the user is able to actually use in-place editing.
+      'opened',
+      // User has clicked the 'Save' button (and has thus changed at least one
+      // field).
+      // - Trigger: user.
+      // - Guarantees: see 'opened', plus: either a changed field is in TempStore,
+      //   or the user has just modified a field without activating (switching to)
+      //   another field.
+      // - Expected behavior: 1) if any of the fields are not yet in TempStore,
+      //   save them to TempStore, 2) if then any of the fields has the 'invalid'
+      //   state, then change the entity state back to 'opened', otherwise: save
+      //   the entity by committing it from TempStore into permanent storage.
+      'committing',
+      // User has clicked the 'Close' button, or has clicked the 'Save' button and
+      // that was successfully completed.
+      // - Trigger: user or EntityModel.
+      // - Guarantees: when having clicked 'Close' hardly any: fields may be in a
+      //   variety of states; when having clicked 'Save': all fields are in the
+      //   'candidate' state.
+      // - Expected behavior: transition all fields to the 'candidate' state,
+      //   possibly requiring confirmation in the case of having clicked 'Close'.
+      'deactivating',
+      // Deactivation has been completed.
+      // - Trigger: EntityModel.
+      // - Guarantees: all fields are in the 'candidate' state.
+      // - Expected behavior: change all fields to the 'inactive' state.
+      'closing'
+    ],
+
+    /**
+     * Indicates whether the 'from' state comes before the 'to' state.
+     *
+     * @param String from
+     *   One of Drupal.quickedit.EntityModel.states.
+     * @param String to
+     *   One of Drupal.quickedit.EntityModel.states.
+     * @return Boolean
+     */
+    followsStateSequence: function (from, to) {
+      return _.indexOf(this.states, from) < _.indexOf(this.states, to);
+    }
+
+  });
+
+  Drupal.quickedit.EntityCollection = Backbone.Collection.extend({
+    model: Drupal.quickedit.EntityModel
+  });
+
+}(_, jQuery, Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone Model for the state of an in-place editable field in the DOM.
+ */
+
+(function (_, Backbone, Drupal) {
+
+  "use strict";
+
+  /**
+   * State of an in-place editable field in the DOM.
+   */
+  Drupal.quickedit.FieldModel = Drupal.quickedit.BaseModel.extend({
+
+    defaults: {
+      // The DOM element that represents this field. It may seem bizarre to have
+      // a DOM element in a Backbone Model, but we need to be able to map fields
+      // in the DOM to FieldModels in memory.
+      el: null,
+      // A field ID, of the form
+      // "<entity type>/<id>/<field name>/<language>/<view mode>", e.g.
+      // "node/1/field_tags/und/full".
+      fieldID: null,
+      // The unique ID of this field within its entity instance on the page, of
+      // the form "<entity type>/<id>/<field name>/<language>/<view mode>[entity instance ID]",
+      // e.g. "node/1/field_tags/und/full[0]".
+      id: null,
+      // A Drupal.quickedit.EntityModel. Its "fields" attribute, which is a
+      // FieldCollection, is automatically updated to include this FieldModel.
+      entity: null,
+      // This field's metadata as returned by the QuickEditController::metadata().
+      metadata: null,
+      // Callback function for validating changes between states. Receives the
+      // previous state, new state, context, and a callback
+      acceptStateChange: null,
+      // A logical field ID, of the form
+      // "<entity type>/<id>/<field name>/<language>", i.e. the fieldID without
+      // the view mode, to be able to identify other instances of the same field
+      // on the page but rendered in a different view mode. e.g. "node/1/field_tags/und".
+      logicalFieldID: null,
+
+      // The attributes below are stateful. The ones above will never change
+      // during the life of a FieldModel instance.
+
+      // In-place editing state of this field. Defaults to the initial state.
+      // Possible values: @see Drupal.quickedit.FieldModel.states.
+      state: 'inactive',
+      // The field is currently in the 'changed' state or one of the following
+      // states in which the field is still changed.
+      isChanged: false,
+      // Is tracked by the EntityModel, is mirrored here solely for decorative
+      // purposes: so that FieldDecorationView.renderChanged() can react to it.
+      inTempStore: false,
+      // The full HTML representation of this field (with the element that has
+      // the data-quickedit-field-id as the outer element). Used to propagate
+      // changes from this field to other instances of the same field storage.
+      html: null,
+      // An object containing the full HTML representations (values) of other view
+      // modes (keys) of this field, for other instances of this field displayed
+      // in a different view mode.
+      htmlForOtherViewModes: null
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      // Store the original full HTML representation of this field.
+      this.set('html', options.el.outerHTML);
+
+      // Enlist field automatically in the associated entity's field collection.
+      this.get('entity').get('fields').add(this);
+
+      // Automatically generate the logical field ID.
+      this.set('logicalFieldID', this.get('fieldID').split('/').slice(0, 4).join('/'));
+
+      // Call Drupal.quickedit.BaseModel's initialize() method.
+      Drupal.quickedit.BaseModel.prototype.initialize.call(this, options);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    destroy: function (options) {
+      if (this.get('state') !== 'inactive') {
+        throw new Error("FieldModel cannot be destroyed if it is not inactive state.");
+      }
+      Drupal.quickedit.BaseModel.prototype.destroy.call(this, options);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    sync: function () {
+      // We don't use REST updates to sync.
+      return;
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    validate: function (attrs, options) {
+      var current = this.get('state');
+      var next = attrs.state;
+      if (current !== next) {
+        // Ensure it's a valid state.
+        if (_.indexOf(this.constructor.states, next) === -1) {
+          return '"' + next + '" is an invalid state';
+        }
+        // Check if the acceptStateChange callback accepts it.
+        if (!this.get('acceptStateChange')(current, next, options, this)) {
+          return 'state change not accepted';
+        }
+      }
+    },
+
+    /**
+     * Extracts the entity ID from this field's ID.
+     *
+     * @return String
+     *   An entity ID: a string of the format `<entity type>/<id>`.
+     */
+    getEntityID: function () {
+      return this.get('fieldID').split('/').slice(0, 2).join('/');
+    },
+
+    /**
+     * Extracts the view mode ID from this field's ID.
+     *
+     * @return String
+     *   A view mode ID.
+     */
+    getViewMode: function () {
+      return this.get('fieldID').split('/').pop();
+    },
+
+    /**
+     * Find other instances of this field with different view modes.
+     *
+     * @return Array
+     *   An array containing view mode IDs.
+     */
+    findOtherViewModes: function () {
+      var currentField = this;
+      var otherViewModes = [];
+      Drupal.quickedit.collections.fields
+        // Find all instances of fields that display the same logical field (same
+        // entity, same field, just a different instance and maybe a different
+        // view mode).
+        .where({logicalFieldID: currentField.get('logicalFieldID')})
+        .forEach(function (field) {
+          // Ignore the current field.
+          if (field === currentField) {
+            return;
+          }
+          // Also ignore other fields with the same view mode.
+          else if (field.get('fieldID') === currentField.get('fieldID')) {
+            return;
+          }
+          else {
+            otherViewModes.push(field.getViewMode());
+          }
+        });
+      return otherViewModes;
+    }
+
+  }, {
+
+    /**
+     * A list (sequence) of all possible states a field can be in during in-place
+     * editing.
+     */
+    states: [
+      // The field associated with this FieldModel is linked to an EntityModel;
+      // the user can choose to start in-place editing that entity (and
+      // consequently this field). No in-place editor (EditorView) is associated
+      // with this field, because this field is not being in-place edited.
+      // This is both the initial (not yet in-place editing) and the end state (
+      // finished in-place editing).
+      'inactive',
+      // The user is in-place editing this entity, and this field is a candidate
+      // for in-place editing. In-place editor should not
+      // - Trigger: user.
+      // - Guarantees: entity is ready, in-place editor (EditorView) is associated
+      //   with the field.
+      // - Expected behavior: visual indicators around the field indicate it is
+      //   available for in-place editing, no in-place editor presented yet.
+      'candidate',
+      // User is highlighting this field.
+      // - Trigger: user.
+      // - Guarantees: see 'candidate'.
+      // - Expected behavior: visual indicators to convey highlighting, in-place
+      //   editing toolbar shows field's label.
+      'highlighted',
+      // User has activated the in-place editing of this field; in-place editor is
+      // activating.
+      // - Trigger: user.
+      // - Guarantees: see 'candidate'.
+      // - Expected behavior: loading indicator, in-place editor is loading remote
+      //   data (e.g. retrieve form from back-end). Upon retrieval of remote data,
+      //   the in-place editor transitions the field's state to 'active'.
+      'activating',
+      // In-place editor has finished loading remote data; ready for use.
+      // - Trigger: in-place editor.
+      // - Guarantees: see 'candidate'.
+      // - Expected behavior: in-place editor for the field is ready for use.
+      'active',
+      // User has modified values in the in-place editor.
+      // - Trigger: user.
+      // - Guarantees: see 'candidate', plus in-place editor is ready for use.
+      // - Expected behavior: visual indicator of change.
+      'changed',
+      // User is saving changed field data in in-place editor to TempStore. The
+      // save mechanism of the in-place editor is called.
+      // - Trigger: user.
+      // - Guarantees: see 'candidate' and 'active'.
+      // - Expected behavior: saving indicator, in-place editor is saving field
+      //   data into TempStore. Upon successful saving (without validation
+      //   errors), the in-place editor transitions the field's state to 'saved',
+      //   but to 'invalid' upon failed saving (with validation errors).
+      'saving',
+      // In-place editor has successfully saved the changed field.
+      // - Trigger: in-place editor.
+      // - Guarantees: see 'candidate' and 'active'.
+      // - Expected behavior: transition back to 'candidate' state because the
+      //   deed is done. Then: 1) transition to 'inactive' to allow the field to
+      //   be rerendered, 2) destroy the FieldModel (which also destroys attached
+      //   views like the EditorView), 3) replace the existing field HTML with the
+      //   existing HTML and 4) attach behaviors again so that the field becomes
+      //   available again for in-place editing.
+      'saved',
+      // In-place editor has failed to saved the changed field: there were
+      // validation errors.
+      // - Trigger: in-place editor.
+      // - Guarantees: see 'candidate' and 'active'.
+      // - Expected behavior: remain in 'invalid' state, let the user make more
+      //   changes so that he can save it again, without validation errors.
+      'invalid'
+    ],
+
+    /**
+     * Indicates whether the 'from' state comes before the 'to' state.
+     *
+     * @param String from
+     *   One of Drupal.quickedit.FieldModel.states.
+     * @param String to
+     *   One of Drupal.quickedit.FieldModel.states.
+     * @return Boolean
+     */
+    followsStateSequence: function (from, to) {
+      return _.indexOf(this.states, from) < _.indexOf(this.states, to);
+    }
+
+  });
+
+  Drupal.quickedit.FieldCollection = Backbone.Collection.extend({
+    model: Drupal.quickedit.FieldModel
+  });
+
+}(_, Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone Model for the state of an in-place editor.
+ *
+ * @see Drupal.quickedit.EditorView
+ */
+
+(function (Backbone, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.EditorModel = Backbone.Model.extend({
+
+    defaults: {
+      // Not the full HTML representation of this field, but the "actual"
+      // original value of the field, stored by the used in-place editor, and
+      // in a representation that can be chosen by the in-place editor.
+      originalValue: null,
+      // Analogous to originalValue, but the current value.
+      currentValue: null,
+      // Stores any validation errors to be rendered.
+      validationErrors: null
+    }
+
+  });
+
+}(Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone View that controls the overall "in-place editing application".
+ *
+ * @see Drupal.quickedit.AppModel
+ */
+
+(function ($, _, Backbone, Drupal) {
+
+  "use strict";
+
+  // Indicates whether the page should be reloaded after in-place editing has
+  // shut down. A page reload is necessary to re-instate the original HTML of the
+  // edited fields if in-place editing has been canceled and one or more of the
+  // entity's fields were saved to TempStore: one of them may have been changed to
+  // the empty value and hence may have been rerendered as the empty string, which
+  // makes it impossible for Quick Edit to know where to restore the original
+  // HTML.
+  var reload = false;
+
+  Drupal.quickedit.AppView = Backbone.View.extend({
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Object options
+     *   An object with the following keys:
+     *   - Drupal.quickedit.AppModel model: the application state model
+     *   - Drupal.quickedit.EntityCollection entitiesCollection: all on-page entities
+     *   - Drupal.quickedit.FieldCollection fieldsCollection: all on-page fields
+     */
+    initialize: function (options) {
+      // AppView's configuration for handling states.
+      // @see Drupal.quickedit.FieldModel.states
+      this.activeFieldStates = ['activating', 'active'];
+      this.singleFieldStates = ['highlighted', 'activating', 'active'];
+      this.changedFieldStates = ['changed', 'saving', 'saved', 'invalid'];
+      this.readyFieldStates = ['candidate', 'highlighted'];
+
+      this.listenTo(options.entitiesCollection, {
+        // Track app state.
+        'change:state': this.appStateChange,
+        'change:isActive': this.enforceSingleActiveEntity
+      });
+
+      // Track app state.
+      this.listenTo(options.fieldsCollection, 'change:state', this.editorStateChange);
+      // Respond to field model HTML representation change events.
+      this.listenTo(options.fieldsCollection, 'change:html', this.renderUpdatedField);
+      this.listenTo(options.fieldsCollection, 'change:html', this.propagateUpdatedField);
+      // Respond to addition.
+      this.listenTo(options.fieldsCollection, 'add', this.rerenderedFieldToCandidate);
+      // Respond to destruction.
+      this.listenTo(options.fieldsCollection, 'destroy', this.teardownEditor);
+    },
+
+    /**
+     * Handles setup/teardown and state changes when the active entity changes.
+     *
+     * @param Drupal.quickedit.EntityModel entityModel
+     *   An instance of the EntityModel class.
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.EntityModel.states.
+     */
+    appStateChange: function (entityModel, state) {
+      var app = this;
+      var entityToolbarView;
+      switch (state) {
+        case 'launching':
+          reload = false;
+          // First, create an entity toolbar view.
+          entityToolbarView = new Drupal.quickedit.EntityToolbarView({
+            model: entityModel,
+            appModel: this.model
+          });
+          entityModel.toolbarView = entityToolbarView;
+          // Second, set up in-place editors.
+          // They must be notified of state changes, hence this must happen while
+          // the associated fields are still in the 'inactive' state.
+          entityModel.get('fields').each(function (fieldModel) {
+            app.setupEditor(fieldModel);
+          });
+          // Third, transition the entity to the 'opening' state, which will
+          // transition all fields from 'inactive' to 'candidate'.
+          _.defer(function () {
+            entityModel.set('state', 'opening');
+          });
+          break;
+        case 'closed':
+          entityToolbarView = entityModel.toolbarView;
+          // First, tear down the in-place editors.
+          entityModel.get('fields').each(function (fieldModel) {
+            app.teardownEditor(fieldModel);
+          });
+          // Second, tear down the entity toolbar view.
+          if (entityToolbarView) {
+            entityToolbarView.remove();
+            delete entityModel.toolbarView;
+          }
+          // A page reload may be necessary to re-instate the original HTML of the
+          // edited fields.
+          if (reload) {
+            reload = false;
+            location.reload();
+          }
+          break;
+      }
+    },
+
+    /**
+     * Accepts or reject editor (Editor) state changes.
+     *
+     * This is what ensures that the app is in control of what happens.
+     *
+     * @param String from
+     *   The previous state.
+     * @param String to
+     *   The new state.
+     * @param null|Object context
+     *   The context that is trying to trigger the state change.
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   The fieldModel to which this change applies.
+     */
+    acceptEditorStateChange: function (from, to, context, fieldModel) {
+      var accept = true;
+
+      // If the app is in view mode, then reject all state changes except for
+      // those to 'inactive'.
+      if (context && (context.reason === 'stop' || context.reason === 'rerender')) {
+        if (from === 'candidate' && to === 'inactive') {
+          accept = true;
+        }
+      }
+      // Handling of edit mode state changes is more granular.
+      else {
+        // In general, enforce the states sequence. Disallow going back from a
+        // "later" state to an "earlier" state, except in explicitly allowed
+        // cases.
+        if (!Drupal.quickedit.FieldModel.followsStateSequence(from, to)) {
+          accept = false;
+          // Allow: activating/active -> candidate.
+          // Necessary to stop editing a field.
+          if (_.indexOf(this.activeFieldStates, from) !== -1 && to === 'candidate') {
+            accept = true;
+          }
+          // Allow: changed/invalid -> candidate.
+          // Necessary to stop editing a field when it is changed or invalid.
+          else if ((from === 'changed' || from === 'invalid') && to === 'candidate') {
+            accept = true;
+          }
+          // Allow: highlighted -> candidate.
+          // Necessary to stop highlighting a field.
+          else if (from === 'highlighted' && to === 'candidate') {
+            accept = true;
+          }
+          // Allow: saved -> candidate.
+          // Necessary when successfully saved a field.
+          else if (from === 'saved' && to === 'candidate') {
+            accept = true;
+          }
+          // Allow: invalid -> saving.
+          // Necessary to be able to save a corrected, invalid field.
+          else if (from === 'invalid' && to === 'saving') {
+            accept = true;
+          }
+          // Allow: invalid -> activating.
+          // Necessary to be able to correct a field that turned out to be invalid
+          // after the user already had moved on to the next field (which we
+          // explicitly allow to have a fluent UX).
+          else if (from === 'invalid' && to === 'activating') {
+            accept = true;
+          }
+        }
+
+        // If it's not against the general principle, then here are more
+        // disallowed cases to check.
+        if (accept) {
+          var activeField, activeFieldState;
+          // Ensure only one field (editor) at a time is active … but allow a user
+          // to hop from one field to the next, even if we still have to start
+          // saving the field that is currently active: assume it will be valid,
+          // to allow for a fluent UX. (If it turns out to be invalid, this block
+          // of code also handles that.)
+          if ((this.readyFieldStates.indexOf(from) !== -1 || from === 'invalid') && this.activeFieldStates.indexOf(to) !== -1) {
+            activeField = this.model.get('activeField');
+            if (activeField && activeField !== fieldModel) {
+              activeFieldState = activeField.get('state');
+              // Allow the state change. If the state of the active field is:
+              // - 'activating' or 'active': change it to 'candidate'
+              // - 'changed' or 'invalid': change it to 'saving'
+              // - 'saving'or 'saved': don't do anything.
+              if (this.activeFieldStates.indexOf(activeFieldState) !== -1) {
+                activeField.set('state', 'candidate');
+              }
+              else if (activeFieldState === 'changed' || activeFieldState === 'invalid') {
+                activeField.set('state', 'saving');
+              }
+
+              // If the field that's being activated is in fact already in the
+              // invalid state (which can only happen because above we allowed the
+              // user to move on to another field to allow for a fluent UX; we
+              // assumed it would be saved successfully), then we shouldn't allow
+              // the field to enter the 'activating' state, instead, we simply
+              // change the active editor. All guarantees and assumptions for this
+              // field still hold!
+              if (from === 'invalid') {
+                this.model.set('activeField', fieldModel);
+                accept = false;
+              }
+              // Do not reject: the field is either in the 'candidate' or
+              // 'highlighted' state and we allow it to enter the 'activating'
+              // state!
+            }
+          }
+          // Reject going from activating/active to candidate because of a
+          // mouseleave.
+          else if (_.indexOf(this.activeFieldStates, from) !== -1 && to === 'candidate') {
+            if (context && context.reason === 'mouseleave') {
+              accept = false;
+            }
+          }
+          // When attempting to stop editing a changed/invalid property, ask for
+          // confirmation.
+          else if ((from === 'changed' || from === 'invalid') && to === 'candidate') {
+            if (context && context.reason === 'mouseleave') {
+              accept = false;
+            }
+            else {
+              // Check whether the transition has been confirmed?
+              if (context && context.confirmed) {
+                accept = true;
+              }
+            }
+          }
+        }
+      }
+
+      return accept;
+    },
+
+    /**
+     * Sets up the in-place editor for the given field.
+     *
+     * Must happen before the fieldModel's state is changed to 'candidate'.
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   The field for which an in-place editor must be set up.
+     */
+    setupEditor: function (fieldModel) {
+      // Get the corresponding entity toolbar.
+      var entityModel = fieldModel.get('entity');
+      var entityToolbarView = entityModel.toolbarView;
+      // Get the field toolbar DOM root from the entity toolbar.
+      var fieldToolbarRoot = entityToolbarView.getToolbarRoot();
+      // Create in-place editor.
+      var editorName = fieldModel.get('metadata').editor;
+      var editorModel = new Drupal.quickedit.EditorModel();
+      var editorView = new Drupal.quickedit.editors[editorName]({
+        el: $(fieldModel.get('el')),
+        model: editorModel,
+        fieldModel: fieldModel
+      });
+
+      // Create in-place editor's toolbar for this field — stored inside the
+      // entity toolbar, the entity toolbar will position itself appropriately
+      // above (or below) the edited element.
+      var toolbarView = new Drupal.quickedit.FieldToolbarView({
+        el: fieldToolbarRoot,
+        model: fieldModel,
+        $editedElement: $(editorView.getEditedElement()),
+        editorView: editorView,
+        entityModel: entityModel
+      });
+
+      // Create decoration for edited element: padding if necessary, sets classes
+      // on the element to style it according to the current state.
+      var decorationView = new Drupal.quickedit.FieldDecorationView({
+        el: $(editorView.getEditedElement()),
+        model: fieldModel,
+        editorView: editorView
+      });
+
+      // Track these three views in FieldModel so that we can tear them down
+      // correctly.
+      fieldModel.editorView = editorView;
+      fieldModel.toolbarView = toolbarView;
+      fieldModel.decorationView = decorationView;
+    },
+
+    /**
+     * Tears down the in-place editor for the given field.
+     *
+     * Must happen after the fieldModel's state is changed to 'inactive'.
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   The field for which an in-place editor must be torn down.
+     */
+    teardownEditor: function (fieldModel) {
+      // Early-return if this field was not yet decorated.
+      if (typeof fieldModel.editorView === 'undefined') {
+        return;
+      }
+
+      // Unbind event handlers; remove toolbar element; delete toolbar view.
+      fieldModel.toolbarView.remove();
+      delete fieldModel.toolbarView;
+
+      // Unbind event handlers; delete decoration view. Don't remove the element
+      // because that would remove the field itself.
+      fieldModel.decorationView.remove();
+      delete fieldModel.decorationView;
+
+      // Unbind event handlers; delete editor view. Don't remove the element
+      // because that would remove the field itself.
+      fieldModel.editorView.remove();
+      delete fieldModel.editorView;
+    },
+
+    /**
+     * Asks the user to confirm whether he wants to stop editing via a modal.
+     *
+     * @see acceptEditorStateChange()
+     */
+    confirmEntityDeactivation: function (entityModel) {
+      var that = this;
+      var discardDialog;
+
+      function closeDiscardDialog(action) {
+        discardDialog.close(action);
+        // The active modal has been removed.
+        that.model.set('activeModal', null);
+
+        // If the targetState is saving, the field must be saved, then the
+        // entity must be saved.
+        if (action === 'save') {
+          entityModel.set('state', 'committing', {confirmed: true});
+        }
+        else {
+          entityModel.set('state', 'deactivating', {confirmed: true});
+          // Editing has been canceled and the changes will not be saved. Mark
+          // the page for reload if the entityModel declares that it requires
+          // a reload.
+          if (entityModel.get('reload')) {
+            reload = true;
+            entityModel.set('reload', false);
+          }
+        }
+      }
+
+      // Only instantiate if there isn't a modal instance visible yet.
+      if (!this.model.get('activeModal')) {
+        var $unsavedChanges = $('<div>' + Drupal.t('You have unsaved changes') + '</div>');
+        discardDialog = Drupal.dialog($unsavedChanges.get(0), {
+          title: Drupal.t('Discard changes?'),
+          dialogClass: 'quickedit-discard-modal',
+          resizable: false,
+          buttons: [
+            {
+              text: Drupal.t('Save'),
+              click: function () {
+                closeDiscardDialog('save');
+              },
+              primary: true
+            },
+            {
+              text: Drupal.t('Discard changes'),
+              click: function () {
+                closeDiscardDialog('discard');
+              }
+            }
+          ],
+          // Prevent this modal from being closed without the user making a choice
+          // as per http://stackoverflow.com/a/5438771.
+          closeOnEscape: false,
+          create: function () {
+            $(this).parent().find('.ui-dialog-titlebar-close').remove();
+          },
+          beforeClose: false,
+          close: function (event) {
+            // Automatically destroy the DOM element that was used for the dialog.
+            $(event.target).remove();
+          }
+        });
+        this.model.set('activeModal', discardDialog);
+
+        discardDialog.showModal();
+      }
+    },
+
+    /**
+     * Reacts to field state changes; tracks global state.
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.FieldModel.states.
+     */
+    editorStateChange: function (fieldModel, state) {
+      var from = fieldModel.previous('state');
+      var to = state;
+
+      // Keep track of the highlighted field in the global state.
+      if (_.indexOf(this.singleFieldStates, to) !== -1 && this.model.get('highlightedField') !== fieldModel) {
+        this.model.set('highlightedField', fieldModel);
+      }
+      else if (this.model.get('highlightedField') === fieldModel && to === 'candidate') {
+        this.model.set('highlightedField', null);
+      }
+
+      // Keep track of the active field in the global state.
+      if (_.indexOf(this.activeFieldStates, to) !== -1 && this.model.get('activeField') !== fieldModel) {
+        this.model.set('activeField', fieldModel);
+      }
+      else if (this.model.get('activeField') === fieldModel && to === 'candidate') {
+        // Discarded if it transitions from a changed state to 'candidate'.
+        if (from === 'changed' || from === 'invalid') {
+          fieldModel.editorView.revert();
+        }
+        this.model.set('activeField', null);
+      }
+    },
+
+    /**
+     * Render an updated field (a field whose 'html' attribute changed).
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   The FieldModel whose 'html' attribute changed.
+     * @param String html
+     *   The updated 'html' attribute.
+     * @param Object options
+     *   An object with the following keys:
+     *   - Boolean propagation: whether this change to the 'html' attribute
+     *     occurred because of the propagation of changes to another instance of
+     *     this field.
+     */
+    renderUpdatedField: function (fieldModel, html, options) {
+      // Get data necessary to rerender property before it is unavailable.
+      var $fieldWrapper = $(fieldModel.get('el'));
+      var $context = $fieldWrapper.parent();
+
+      var renderField = function () {
+        // Destroy the field model; this will cause all attached views to be
+        // destroyed too, and removal from all collections in which it exists.
+        fieldModel.destroy();
+
+        // Replace the old content with the new content.
+        $fieldWrapper.replaceWith(html);
+
+        // Attach behaviors again to the modified piece of HTML; this will
+        // create a new field model and call rerenderedFieldToCandidate() with
+        // it.
+        Drupal.attachBehaviors($context.get(0));
+      };
+
+      // When propagating the changes of another instance of this field, this
+      // field is not being actively edited and hence no state changes are
+      // necessary. So: only update the state of this field when the rerendering
+      // of this field happens not because of propagation, but because it is
+      // being edited itself.
+      if (!options.propagation) {
+        // Deferred because renderUpdatedField is reacting to a field model change
+        // event, and we want to make sure that event fully propagates before
+        // making another change to the same model.
+        _.defer(function () {
+          // First set the state to 'candidate', to allow all attached views to
+          // clean up all their "active state"-related changes.
+          fieldModel.set('state', 'candidate');
+
+          // Similarly, the above .set() call's change event must fully propagate
+          // before calling it again.
+          _.defer(function () {
+            // Set the field's state to 'inactive', to enable the updating of its
+            // DOM value.
+            fieldModel.set('state', 'inactive', {reason: 'rerender'});
+
+            renderField();
+          });
+        });
+      }
+      else {
+        renderField();
+      }
+    },
+
+    /**
+     * Propagates the changes to an updated field to all instances of that field.
+     *
+     * @param Drupal.quickedit.FieldModel updatedField
+     *   The FieldModel whose 'html' attribute changed.
+     * @param String html
+     *   The updated 'html' attribute.
+     * @param Object options
+     *   An object with the following keys:
+     *   - Boolean propagation: whether this change to the 'html' attribute
+     *     occurred because of the propagation of changes to another instance of
+     *     this field.
+     *
+     * @see Drupal.quickedit.AppView.renderUpdatedField()
+     */
+    propagateUpdatedField: function (updatedField, html, options) {
+      // Don't propagate field updates that themselves were caused by propagation.
+      if (options.propagation) {
+        return;
+      }
+
+      var htmlForOtherViewModes = updatedField.get('htmlForOtherViewModes');
+      Drupal.quickedit.collections.fields
+        // Find all instances of fields that display the same logical field (same
+        // entity, same field, just a different instance and maybe a different
+        // view mode).
+        .where({logicalFieldID: updatedField.get('logicalFieldID')})
+        .forEach(function (field) {
+          // Ignore the field that was already updated.
+          if (field === updatedField) {
+            return;
+          }
+          // If this other instance of the field has the same view mode, we can
+          // update it easily.
+          else if (field.getViewMode() === updatedField.getViewMode()) {
+            field.set('html', updatedField.get('html'));
+          }
+          // If this other instance of the field has a different view mode, and
+          // that is one of the view modes for which a re-rendered version is
+          // available (and that should be the case unless this field was only
+          // added to the page after editing of the updated field began), then use
+          // that view mode's re-rendered version.
+          else {
+            if (field.getViewMode() in htmlForOtherViewModes) {
+              field.set('html', htmlForOtherViewModes[field.getViewMode()], {propagation: true});
+            }
+          }
+        });
+    },
+
+    /**
+     * If the new in-place editable field is for the entity that's currently
+     * being edited, then transition it to the 'candidate' state.
+     *
+     * This happens when a field was modified, saved and hence rerendered.
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     *   A field that was just added to the collection of fields.
+     */
+    rerenderedFieldToCandidate: function (fieldModel) {
+      var activeEntity = Drupal.quickedit.collections.entities.findWhere({isActive: true});
+
+      // Early-return if there is no active entity.
+      if (!activeEntity) {
+        return;
+      }
+
+      // If the field's entity is the active entity, make it a candidate.
+      if (fieldModel.get('entity') === activeEntity) {
+        this.setupEditor(fieldModel);
+        fieldModel.set('state', 'candidate');
+      }
+    },
+
+    /**
+     * EntityModel Collection change handler, called on change:isActive, enforces
+     * a single active entity.
+     *
+     * @param Drupal.quickedit.EntityModel
+     *   The entityModel instance whose active state has changed.
+     */
+    enforceSingleActiveEntity: function (changedEntityModel) {
+      // When an entity is deactivated, we don't need to enforce anything.
+      if (changedEntityModel.get('isActive') === false) {
+        return;
+      }
+
+      // This entity was activated; deactivate all other entities.
+      changedEntityModel.collection.chain()
+        .filter(function (entityModel) {
+          return entityModel.get('isActive') === true && entityModel !== changedEntityModel;
+        })
+        .each(function (entityModel) {
+          entityModel.set('state', 'deactivating');
+        });
+    }
+
+  });
+
+}(jQuery, _, Backbone, Drupal));
+;
+/**
+ * @file
+ * A Backbone View that decorates the in-place edited element.
+ */
+
+(function ($, Backbone, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.FieldDecorationView = Backbone.View.extend({
+
+    _widthAttributeIsEmpty: null,
+
+    events: {
+      'mouseenter.quickedit': 'onMouseEnter',
+      'mouseleave.quickedit': 'onMouseLeave',
+      'click': 'onClick',
+      'tabIn.quickedit': 'onMouseEnter',
+      'tabOut.quickedit': 'onMouseLeave'
+    },
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Object options
+     *   An object with the following keys:
+     *   - Drupal.quickedit.EditorView editorView: the editor object view.
+     */
+    initialize: function (options) {
+      this.editorView = options.editorView;
+
+      this.listenTo(this.model, 'change:state', this.stateChange);
+      this.listenTo(this.model, 'change:isChanged change:inTempStore', this.renderChanged);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    remove: function () {
+      // The el property is the field, which should not be removed. Remove the
+      // pointer to it, then call Backbone.View.prototype.remove().
+      this.setElement();
+      Backbone.View.prototype.remove.call(this);
+    },
+
+    /**
+     * Determines the actions to take given a change of state.
+     *
+     * @param Drupal.quickedit.FieldModel model
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.FieldModel.states.
+     */
+    stateChange: function (model, state) {
+      var from = model.previous('state');
+      var to = state;
+      switch (to) {
+        case 'inactive':
+          this.undecorate();
+          break;
+        case 'candidate':
+          this.decorate();
+          if (from !== 'inactive') {
+            this.stopHighlight();
+            if (from !== 'highlighted') {
+              this.model.set('isChanged', false);
+              this.stopEdit();
+            }
+          }
+          this._unpad();
+          break;
+        case 'highlighted':
+          this.startHighlight();
+          break;
+        case 'activating':
+          // NOTE: this state is not used by every editor! It's only used by those
+          // that need to interact with the server.
+          this.prepareEdit();
+          break;
+        case 'active':
+          if (from !== 'activating') {
+            this.prepareEdit();
+          }
+          if (this.editorView.getQuickEditUISettings().padding) {
+            this._pad();
+          }
+          break;
+        case 'changed':
+          this.model.set('isChanged', true);
+          break;
+        case 'saving':
+          break;
+        case 'saved':
+          break;
+        case 'invalid':
+          break;
+      }
+    },
+
+    /**
+     * Adds a class to the edited element that indicates whether the field has
+     * been changed by the user (i.e. locally) or the field has already been
+     * changed and stored before by the user (i.e. remotely, stored in TempStore).
+     */
+    renderChanged: function () {
+      this.$el.toggleClass('quickedit-changed', this.model.get('isChanged') || this.model.get('inTempStore'));
+    },
+
+    /**
+     * Starts hover; transitions to 'highlight' state.
+     *
+     * @param jQuery event
+     */
+    onMouseEnter: function (event) {
+      var that = this;
+      that.model.set('state', 'highlighted');
+      event.stopPropagation();
+    },
+
+    /**
+     * Stops hover; transitions to 'candidate' state.
+     *
+     * @param jQuery event
+     */
+    onMouseLeave: function (event) {
+      var that = this;
+      that.model.set('state', 'candidate', {reason: 'mouseleave'});
+      event.stopPropagation();
+    },
+
+    /**
+     * Transition to 'activating' stage.
+     *
+     * @param jQuery event
+     */
+    onClick: function (event) {
+      this.model.set('state', 'activating');
+      event.preventDefault();
+      event.stopPropagation();
+    },
+
+    /**
+     * Adds classes used to indicate an elements editable state.
+     */
+    decorate: function () {
+      this.$el.addClass('quickedit-candidate quickedit-editable');
+    },
+
+    /**
+     * Removes classes used to indicate an elements editable state.
+     */
+    undecorate: function () {
+      this.$el.removeClass('quickedit-candidate quickedit-editable quickedit-highlighted quickedit-editing');
+    },
+
+    /**
+     * Adds that class that indicates that an element is highlighted.
+     */
+    startHighlight: function () {
+      // Animations.
+      var that = this;
+      // Use a timeout to grab the next available animation frame.
+      that.$el.addClass('quickedit-highlighted');
+    },
+
+    /**
+     * Removes the class that indicates that an element is highlighted.
+     */
+    stopHighlight: function () {
+      this.$el.removeClass('quickedit-highlighted');
+    },
+
+    /**
+     * Removes the class that indicates that an element as editable.
+     */
+    prepareEdit: function () {
+      this.$el.addClass('quickedit-editing');
+
+      // Allow the field to be styled differently while editing in a pop-up
+      // in-place editor.
+      if (this.editorView.getQuickEditUISettings().popup) {
+        this.$el.addClass('quickedit-editor-is-popup');
+      }
+    },
+
+    /**
+     * Removes the class that indicates that an element is being edited.
+     *
+     * Reapplies the class that indicates that a candidate editable element is
+     * again available to be edited.
+     */
+    stopEdit: function () {
+      this.$el.removeClass('quickedit-highlighted quickedit-editing');
+
+      // Done editing in a pop-up in-place editor; remove the class.
+      if (this.editorView.getQuickEditUISettings().popup) {
+        this.$el.removeClass('quickedit-editor-is-popup');
+      }
+
+      // Make the other editors show up again.
+      $('.quickedit-candidate').addClass('quickedit-editable');
+    },
+
+    /**
+     * Adds padding around the editable element in order to make it pop visually.
+     */
+    _pad: function () {
+      // Early return if the element has already been padded.
+      if (this.$el.data('quickedit-padded')) {
+        return;
+      }
+      var self = this;
+
+      // Add 5px padding for readability. This means we'll freeze the current
+      // width and *then* add 5px padding, hence ensuring the padding is added "on
+      // the outside".
+      // 1) Freeze the width (if it's not already set); don't use animations.
+      if (this.$el[0].style.width === "") {
+        this._widthAttributeIsEmpty = true;
+        this.$el
+          .addClass('quickedit-animate-disable-width')
+          .css('width', this.$el.width());
+      }
+
+      // 2) Add padding; use animations.
+      var posProp = this._getPositionProperties(this.$el);
+      setTimeout(function () {
+        // Re-enable width animations (padding changes affect width too!).
+        self.$el.removeClass('quickedit-animate-disable-width');
+
+        // Pad the editable.
+        self.$el
+          .css({
+            'position': 'relative',
+            'top': posProp.top - 5 + 'px',
+            'left': posProp.left - 5 + 'px',
+            'padding-top': posProp['padding-top'] + 5 + 'px',
+            'padding-left': posProp['padding-left'] + 5 + 'px',
+            'padding-right': posProp['padding-right'] + 5 + 'px',
+            'padding-bottom': posProp['padding-bottom'] + 5 + 'px',
+            'margin-bottom': posProp['margin-bottom'] - 10 + 'px'
+          })
+          .data('quickedit-padded', true);
+      }, 0);
+    },
+
+    /**
+     * Removes the padding around the element being edited when editing ceases.
+     */
+    _unpad: function () {
+      // Early return if the element has not been padded.
+      if (!this.$el.data('quickedit-padded')) {
+        return;
+      }
+      var self = this;
+
+      // 1) Set the empty width again.
+      if (this._widthAttributeIsEmpty) {
+        this.$el
+          .addClass('quickedit-animate-disable-width')
+          .css('width', '');
+      }
+
+      // 2) Remove padding; use animations (these will run simultaneously with)
+      // the fading out of the toolbar as its gets removed).
+      var posProp = this._getPositionProperties(this.$el);
+      setTimeout(function () {
+        // Re-enable width animations (padding changes affect width too!).
+        self.$el.removeClass('quickedit-animate-disable-width');
+
+        // Unpad the editable.
+        self.$el
+          .css({
+            'position': 'relative',
+            'top': posProp.top + 5 + 'px',
+            'left': posProp.left + 5 + 'px',
+            'padding-top': posProp['padding-top'] - 5 + 'px',
+            'padding-left': posProp['padding-left'] - 5 + 'px',
+            'padding-right': posProp['padding-right'] - 5 + 'px',
+            'padding-bottom': posProp['padding-bottom'] - 5 + 'px',
+            'margin-bottom': posProp['margin-bottom'] + 10 + 'px'
+          });
+      }, 0);
+      // Remove the marker that indicates that this field has padding. This is
+      // done outside the timed out function above so that we don't get numerous
+      // queued functions that will remove padding before the data marker has
+      // been removed.
+      this.$el.removeData('quickedit-padded');
+    },
+
+    /**
+     * Gets the top and left properties of an element.
+     *
+     * Convert extraneous values and information into numbers ready for
+     * subtraction.
+     *
+     * @param DOM $e
+     */
+    _getPositionProperties: function ($e) {
+      var p,
+        r = {},
+        props = [
+          'top', 'left', 'bottom', 'right',
+          'padding-top', 'padding-left', 'padding-right', 'padding-bottom',
+          'margin-bottom'
+        ];
+
+      var propCount = props.length;
+      for (var i = 0; i < propCount; i++) {
+        p = props[i];
+        r[p] = parseInt(this._replaceBlankPosition($e.css(p)), 10);
+      }
+      return r;
+    },
+
+    /**
+     * Replaces blank or 'auto' CSS "position: <value>" values with "0px".
+     *
+     * @param String pos
+     *   (optional) The value for a CSS position declaration.
+     */
+    _replaceBlankPosition: function (pos) {
+      if (pos === 'auto' || !pos) {
+        pos = '0px';
+      }
+      return pos;
+    }
+
+  });
+
+})(jQuery, Backbone, Drupal);
+;
+/**
+ * @file
+ * A Backbone view that decorates the in-place editable entity.
+ */
+
+(function (Drupal, $, Backbone) {
+
+  "use strict";
+
+  Drupal.quickedit.EntityDecorationView = Backbone.View.extend({
+
+    /**
+     * {@inheritdoc}
+     *
+     * Associated with the DOM root node of an editable entity.
+     */
+    initialize: function () {
+      this.listenTo(this.model, 'change', this.render);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      this.$el.toggleClass('quickedit-entity-active', this.model.get('isActive'));
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    remove: function () {
+      this.setElement(null);
+      Backbone.View.prototype.remove.call(this);
+    }
+
+  });
+
+}(Drupal, jQuery, Backbone));
+;
+/**
+ * @file
+ * A Backbone View that provides an entity level toolbar.
+ */
+
+(function ($, _, Backbone, Drupal, debounce) {
+
+  "use strict";
+
+  Drupal.quickedit.EntityToolbarView = Backbone.View.extend({
+
+    _fieldToolbarRoot: null,
+
+    events: function () {
+      var map = {
+        'click button.action-save': 'onClickSave',
+        'click button.action-cancel': 'onClickCancel',
+        'mouseenter': 'onMouseenter'
+      };
+      return map;
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      var that = this;
+      this.appModel = options.appModel;
+      this.$entity = $(this.model.get('el'));
+
+      // Rerender whenever the entity state changes.
+      this.listenTo(this.model, 'change:isActive change:isDirty change:state', this.render);
+      // Also rerender whenever a different field is highlighted or activated.
+      this.listenTo(this.appModel, 'change:highlightedField change:activeField', this.render);
+      // Rerender when a field of the entity changes state.
+      this.listenTo(this.model.get('fields'), 'change:state', this.fieldStateChange);
+
+      // Reposition the entity toolbar as the viewport and the position within the
+      // viewport changes.
+      $(window).on('resize.quickedit scroll.quickedit', debounce($.proxy(this.windowChangeHandler, this), 150));
+
+      // Adjust the fence placement within which the entity toolbar may be
+      // positioned.
+      $(document).on('drupalViewportOffsetChange.quickedit', function (event, offsets) {
+        if (that.$fence) {
+          that.$fence.css(offsets);
+        }
+      });
+
+      // Set the entity toolbar DOM element as the el for this view.
+      var $toolbar = this.buildToolbarEl();
+      this.setElement($toolbar);
+      this._fieldToolbarRoot = $toolbar.find('.quickedit-toolbar-field').get(0);
+
+      // Initial render.
+      this.render();
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      if (this.model.get('isActive')) {
+        // If the toolbar container doesn't exist, create it.
+        var $body = $('body');
+        if ($body.children('#quickedit-entity-toolbar').length === 0) {
+          $body.append(this.$el);
+        }
+        // The fence will define a area on the screen that the entity toolbar
+        // will be position within.
+        if ($body.children('#quickedit-toolbar-fence').length === 0) {
+          this.$fence = $(Drupal.theme('quickeditEntityToolbarFence'))
+            .css(Drupal.displace())
+            .appendTo($body);
+        }
+        // Adds the entity title to the toolbar.
+        this.label();
+
+        // Show the save and cancel buttons.
+        this.show('ops');
+        // If render is being called and the toolbar is already visible, just
+        // reposition it.
+        this.position();
+      }
+
+      // The save button text and state varies with the state of the entity model.
+      var $button = this.$el.find('.quickedit-button.action-save');
+      var isDirty = this.model.get('isDirty');
+      // Adjust the save button according to the state of the model.
+      switch (this.model.get('state')) {
+        // Quick editing is active, but no field is being edited.
+        case 'opened':
+          // The saving throbber is not managed by AJAX system. The
+          // EntityToolbarView manages this visual element.
+          $button
+            .removeClass('action-saving icon-throbber icon-end')
+            .text(Drupal.t('Save'))
+            .removeAttr('disabled')
+            .attr('aria-hidden', !isDirty);
+          break;
+        // The changes to the fields of the entity are being committed.
+        case 'committing':
+          $button
+            .addClass('action-saving icon-throbber icon-end')
+            .text(Drupal.t('Saving'))
+            .attr('disabled', 'disabled');
+          break;
+        default:
+          $button.attr('aria-hidden', true);
+          break;
+      }
+
+      return this;
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    remove: function () {
+      // Remove additional DOM elements controlled by this View.
+      this.$fence.remove();
+
+      // Stop listening to additional events.
+      $(window).off('resize.quickedit scroll.quickedit');
+      $(document).off('drupalViewportOffsetChange.quickedit');
+
+      Backbone.View.prototype.remove.call(this);
+    },
+
+    /**
+     * Repositions the entity toolbar on window scroll and resize.
+     *
+     * @param jQuery.Eevent event
+     */
+    windowChangeHandler: function (event) {
+      this.position();
+    },
+
+    /**
+     * Determines the actions to take given a change of state.
+     *
+     * @param Drupal.quickedit.FieldModel model
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.FieldModel.states.
+     */
+    fieldStateChange: function (model, state) {
+      switch (state) {
+        case 'active':
+          this.render();
+          break;
+        case 'invalid':
+          this.render();
+          break;
+      }
+    },
+
+    /**
+     * Uses the jQuery.ui.position() method to position the entity toolbar.
+     *
+     * @param jQuery|DOM element
+     *   (optional) The element against which the entity toolbar is positioned.
+     */
+    position: function (element) {
+      clearTimeout(this.timer);
+
+      var that = this;
+      // Vary the edge of the positioning according to the direction of language
+      // in the document.
+      var edge = (document.documentElement.dir === 'rtl') ? 'right' : 'left';
+      // A time unit to wait until the entity toolbar is repositioned.
+      var delay = 0;
+      // Determines what check in the series of checks below should be evaluated
+      var check = 0;
+      // When positioned against an active field that has padding, we should
+      // ignore that padding when positioning the toolbar, to not unnecessarily
+      // move the toolbar horizontally, which feels annoying.
+      var horizontalPadding = 0;
+      var of, activeField, highlightedField;
+      // There are several elements in the page that the entity toolbar might be
+      // positioned against. They are considered below in a priority order.
+      do {
+        switch (check) {
+          case 0:
+            // Position against a specific element.
+            of = element;
+            break;
+          case 1:
+            // Position against a form container.
+            activeField = Drupal.quickedit.app.model.get('activeField');
+            of = activeField && activeField.editorView && activeField.editorView.$formContainer && activeField.editorView.$formContainer.find('.quickedit-form');
+            break;
+          case 2:
+            // Position against an active field.
+            of = activeField && activeField.editorView && activeField.editorView.getEditedElement();
+            if (activeField && activeField.editorView && activeField.editorView.getQuickEditUISettings().padding) {
+              horizontalPadding = 5;
+            }
+            break;
+          case 3:
+            // Position against a highlighted field.
+            highlightedField = Drupal.quickedit.app.model.get('highlightedField');
+            of = highlightedField && highlightedField.editorView && highlightedField.editorView.getEditedElement();
+            delay = 250;
+            break;
+          default:
+            var fieldModels = this.model.get('fields').models;
+            var topMostPosition = 1000000;
+            var topMostField = null;
+            // Position against the topmost field.
+            for (var i = 0; i < fieldModels.length; i++) {
+              var pos = fieldModels[i].get('el').getBoundingClientRect().top;
+              if (pos < topMostPosition) {
+                topMostPosition = pos;
+                topMostField = fieldModels[i];
+              }
+            }
+            of = topMostField.get('el');
+            delay = 50;
+            break;
+        }
+        // Prepare to check the next possible element to position against.
+        check++;
+      } while (!of);
+
+      /**
+       * Refines the positioning algorithm of jquery.ui.position().
+       *
+       * Invoked as the 'using' callback of jquery.ui.position() in
+       * positionToolbar().
+       *
+       * @param Object suggested
+       *   A hash of top and left values for the position that should be set. It
+       *   can be forwarded to .css() or .animate().
+       * @param Object info
+       *   The position and dimensions of both the 'my' element and the 'of'
+       *   elements, as well as calculations to their relative position. This
+       *   object contains the following properties:
+       *     - Object element: A hash that contains information about the HTML
+       *     element that will be positioned. Also known as the 'my' element.
+       *     - Object target: A hash that contains information about the HTML
+       *     element that the 'my' element will be positioned against. Also known
+       *     as the 'of' element.
+       */
+      function refinePosition(view, suggested, info) {
+        // Determine if the pointer should be on the top or bottom.
+        var isBelow = suggested.top > info.target.top;
+        info.element.element.toggleClass('quickedit-toolbar-pointer-top', isBelow);
+        // Don't position the toolbar past the first or last editable field if
+        // the entity is the target.
+        if (view.$entity[0] === info.target.element[0]) {
+          // Get the first or last field according to whether the toolbar is above
+          // or below the entity.
+          var $field = view.$entity.find('.quickedit-editable').eq((isBelow) ? -1 : 0);
+          if ($field.length > 0) {
+            suggested.top = (isBelow) ? ($field.offset().top + $field.outerHeight(true)) : $field.offset().top - info.element.element.outerHeight(true);
+          }
+        }
+        // Don't let the toolbar go outside the fence.
+        var fenceTop = view.$fence.offset().top;
+        var fenceHeight = view.$fence.height();
+        var toolbarHeight = info.element.element.outerHeight(true);
+        if (suggested.top < fenceTop) {
+          suggested.top = fenceTop;
+        }
+        else if ((suggested.top + toolbarHeight) > (fenceTop + fenceHeight)) {
+          suggested.top = fenceTop + fenceHeight - toolbarHeight;
+        }
+        // Position the toolbar.
+        info.element.element.css({
+          left: Math.floor(suggested.left),
+          top: Math.floor(suggested.top)
+        });
+      }
+
+      /**
+       * Calls the jquery.ui.position() method on the $el of this view.
+       */
+      function positionToolbar() {
+        that.$el
+          .position({
+            my: edge + ' bottom',
+            // Move the toolbar 1px towards the start edge of the 'of' element,
+            // plus any horizontal padding that may have been added to the element
+            // that is being added, to prevent unwanted horizontal movement.
+            at: edge + '+' + (1 + horizontalPadding) + ' top',
+            of: of,
+            collision: 'flipfit',
+            using: refinePosition.bind(null, that),
+            within: that.$fence
+          })
+          // Resize the toolbar to match the dimensions of the field, up to a
+          // maximum width that is equal to 90% of the field's width.
+          .css({
+            'max-width': (document.documentElement.clientWidth < 450) ? document.documentElement.clientWidth : 450,
+            // Set a minimum width of 240px for the entity toolbar, or the width
+            // of the client if it is less than 240px, so that the toolbar
+            // never folds up into a squashed and jumbled mess.
+            'min-width': (document.documentElement.clientWidth < 240) ? document.documentElement.clientWidth : 240,
+            'width': '100%'
+          });
+      }
+
+      // Uses the jQuery.ui.position() method. Use a timeout to move the toolbar
+      // only after the user has focused on an editable for 250ms. This prevents
+      // the toolbar from jumping around the screen.
+      this.timer = setTimeout(function () {
+        // Render the position in the next execution cycle, so that animations on
+        // the field have time to process. This is not strictly speaking, a
+        // guarantee that all animations will be finished, but it's a simple way
+        // to get better positioning without too much additional code.
+        _.defer(positionToolbar);
+      }, delay);
+    },
+
+    /**
+     * Set the model state to 'saving' when the save button is clicked.
+     *
+     * @param jQuery event
+     */
+    onClickSave: function (event) {
+      event.stopPropagation();
+      event.preventDefault();
+      // Save the model.
+      this.model.set('state', 'committing');
+    },
+
+    /**
+     * Sets the model state to candidate when the cancel button is clicked.
+     *
+     * @param jQuery event
+     */
+    onClickCancel: function (event) {
+      event.preventDefault();
+      this.model.set('state', 'deactivating');
+    },
+
+    /**
+     * Clears the timeout that will eventually reposition the entity toolbar.
+     *
+     * Without this, it may reposition itself, away from the user's cursor!
+     *
+     * @param jQuery event
+     */
+    onMouseenter: function (event) {
+      clearTimeout(this.timer);
+    },
+
+    /**
+     * Builds the entity toolbar HTML; attaches to DOM; sets starting position.
+     */
+    buildToolbarEl: function () {
+      var $toolbar = $(Drupal.theme('quickeditEntityToolbar', {
+        id: 'quickedit-entity-toolbar'
+      }));
+
+      $toolbar
+        .find('.quickedit-toolbar-entity')
+        // Append the "ops" toolgroup into the toolbar.
+        .prepend(Drupal.theme('quickeditToolgroup', {
+          classes: ['ops'],
+          buttons: [
+            {
+              label: Drupal.t('Save'),
+              type: 'submit',
+              classes: 'action-save quickedit-button icon',
+              attributes: {
+                'aria-hidden': true
+              }
+            },
+            {
+              label: Drupal.t('Close'),
+              classes: 'action-cancel quickedit-button icon icon-close icon-only'
+            }
+          ]
+        }));
+
+      // Give the toolbar a sensible starting position so that it doesn't animate
+      // on to the screen from a far off corner.
+      $toolbar
+        .css({
+          left: this.$entity.offset().left,
+          top: this.$entity.offset().top
+        });
+
+      return $toolbar;
+    },
+
+    /**
+     * Returns the DOM element that fields will attach their toolbars to.
+     *
+     * @return jQuery
+     *   The DOM element that fields will attach their toolbars to.
+     */
+    getToolbarRoot: function () {
+      return this._fieldToolbarRoot;
+    },
+
+    /**
+     * Generates a state-dependent label for the entity toolbar.
+     */
+    label: function () {
+      // The entity label.
+      var label = '';
+      var entityLabel = this.model.get('label');
+
+      // Label of an active field, if it exists.
+      var activeField = Drupal.quickedit.app.model.get('activeField');
+      var activeFieldLabel = activeField && activeField.get('metadata').label;
+      // Label of a highlighted field, if it exists.
+      var highlightedField = Drupal.quickedit.app.model.get('highlightedField');
+      var highlightedFieldLabel = highlightedField && highlightedField.get('metadata').label;
+      // The label is constructed in a priority order.
+      if (activeFieldLabel) {
+        label = Drupal.theme('quickeditEntityToolbarLabel', {
+          entityLabel: entityLabel,
+          fieldLabel: activeFieldLabel
+        });
+      }
+      else if (highlightedFieldLabel) {
+        label = Drupal.theme('quickeditEntityToolbarLabel', {
+          entityLabel: entityLabel,
+          fieldLabel: highlightedFieldLabel
+        });
+      }
+      else {
+        label = entityLabel;
+      }
+
+      this.$el
+        .find('.quickedit-toolbar-label')
+        .html(label);
+    },
+
+    /**
+     * Adds classes to a toolgroup.
+     *
+     * @param String toolgroup
+     *   A toolgroup name.
+     * @param String classes
+     *   A string of space-delimited class names that will be applied to the
+     *   wrapping element of the toolbar group.
+     */
+    addClass: function (toolgroup, classes) {
+      this._find(toolgroup).addClass(classes);
+    },
+
+    /**
+     * Removes classes from a toolgroup.
+     *
+     * @param String toolgroup
+     *   A toolgroup name.
+     * @param String classes
+     *   A string of space-delimited class names that will be removed from the
+     *   wrapping element of the toolbar group.
+     */
+    removeClass: function (toolgroup, classes) {
+      this._find(toolgroup).removeClass(classes);
+    },
+
+    /**
+     * Finds a toolgroup.
+     *
+     * @param String toolgroup
+     *   A toolgroup name.
+     * @return jQuery
+     *   The toolgroup DOM element.
+     */
+    _find: function (toolgroup) {
+      return this.$el.find('.quickedit-toolbar .quickedit-toolgroup.' + toolgroup);
+    },
+
+    /**
+     * Shows a toolgroup.
+     *
+     * @param String toolgroup
+     *   A toolgroup name.
+     */
+    show: function (toolgroup) {
+      this.$el.removeClass('quickedit-animate-invisible');
+    }
+
+  });
+
+})(jQuery, _, Backbone, Drupal, Drupal.debounce);
+;
+/**
+ * @file
+ * A Backbone View that provides a dynamic contextual link.
+ */
+
+(function ($, Backbone, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.ContextualLinkView = Backbone.View.extend({
+
+    events: function () {
+      // Prevents delay and simulated mouse events.
+      function touchEndToClick(event) {
+        event.preventDefault();
+        event.target.click();
+      }
+
+      return {
+        'click a': function (event) {
+          event.preventDefault();
+          this.model.set('state', 'launching');
+        },
+        'touchEnd a': touchEndToClick
+      };
+    },
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param Object options
+     *   An object with the following keys:
+     *   - Drupal.quickedit.EntityModel model: the associated entity's model
+     *   - Drupal.quickedit.AppModel appModel: the application state model
+     *   - strings: the strings for the "Quick edit" link
+     */
+    initialize: function (options) {
+      // Insert the text of the quick edit toggle.
+      this.$el.find('a').text(options.strings.quickEdit);
+      // Initial render.
+      this.render();
+      // Re-render whenever this entity's isActive attribute changes.
+      this.listenTo(this.model, 'change:isActive', this.render);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function (entityModel, isActive) {
+      this.$el.find('a').attr('aria-pressed', isActive);
+
+      // Hides the contextual links if an in-place editor is active.
+      this.$el.closest('.contextual').toggle(!isActive);
+
+      return this;
+    }
+
+  });
+
+})(jQuery, Backbone, Drupal);
+;
+/**
+ * @file
+ * A Backbone View that provides an interactive toolbar (1 per in-place editor).
+ */
+
+(function ($, _, Backbone, Drupal) {
+
+  "use strict";
+
+  Drupal.quickedit.FieldToolbarView = Backbone.View.extend({
+
+    // The edited element, as indicated by EditorView.getEditedElement().
+    $editedElement: null,
+
+    // A reference to the in-place editor.
+    editorView: null,
+
+    _id: null,
+
+    /**
+     * {@inheritdoc}
+     */
+    initialize: function (options) {
+      this.$editedElement = options.$editedElement;
+      this.editorView = options.editorView;
+      this.$root = this.$el;
+
+      // Generate a DOM-compatible ID for the form container DOM element.
+      this._id = 'quickedit-toolbar-for-' + this.model.id.replace(/[\/\[\]]/g, '_');
+
+      this.listenTo(this.model, 'change:state', this.stateChange);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    render: function () {
+      // Render toolbar and set it as the view's element.
+      this.setElement($(Drupal.theme('quickeditFieldToolbar', {
+        id: this._id
+      })));
+
+      // Attach to the field toolbar $root element in the entity toolbar.
+      this.$el.prependTo(this.$root);
+
+      return this;
+    },
+
+    /**
+     * Determines the actions to take given a change of state.
+     *
+     * @param Drupal.quickedit.FieldModel model
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.FieldModel.states.
+     */
+    stateChange: function (model, state) {
+      var from = model.previous('state');
+      var to = state;
+      switch (to) {
+        case 'inactive':
+          break;
+        case 'candidate':
+          // Remove the view's existing element if we went to the 'activating'
+          // state or later, because it will be recreated. Not doing this would
+          // result in memory leaks.
+          if (from !== 'inactive' && from !== 'highlighted') {
+            this.$el.remove();
+            this.setElement();
+          }
+          break;
+        case 'highlighted':
+          break;
+        case 'activating':
+          this.render();
+
+          if (this.editorView.getQuickEditUISettings().fullWidthToolbar) {
+            this.$el.addClass('quickedit-toolbar-fullwidth');
+          }
+
+          if (this.editorView.getQuickEditUISettings().unifiedToolbar) {
+            this.insertWYSIWYGToolGroups();
+          }
+          break;
+        case 'active':
+          break;
+        case 'changed':
+          break;
+        case 'saving':
+          break;
+        case 'saved':
+          break;
+        case 'invalid':
+          break;
+      }
+    },
+
+    /**
+     * Insert WYSIWYG markup into the associated toolbar.
+     */
+    insertWYSIWYGToolGroups: function () {
+      this.$el
+        .append(Drupal.theme('quickeditToolgroup', {
+          id: this.getFloatedWysiwygToolgroupId(),
+          classes: ['wysiwyg-floated', 'quickedit-animate-slow', 'quickedit-animate-invisible', 'quickedit-animate-delay-veryfast'],
+          buttons: []
+        }))
+        .append(Drupal.theme('quickeditToolgroup', {
+          id: this.getMainWysiwygToolgroupId(),
+          classes: ['wysiwyg-main', 'quickedit-animate-slow', 'quickedit-animate-invisible', 'quickedit-animate-delay-veryfast'],
+          buttons: []
+        }));
+
+      // Animate the toolgroups into visibility.
+      this.show('wysiwyg-floated');
+      this.show('wysiwyg-main');
+    },
+
+    /**
+     * Retrieves the ID for this toolbar's container.
+     *
+     * Only used to make sane hovering behavior possible.
+     *
+     * @return String
+     *   A string that can be used as the ID for this toolbar's container.
+     */
+    getId: function () {
+      return 'quickedit-toolbar-for-' + this._id;
+    },
+
+    /**
+     * Retrieves the ID for this toolbar's floating WYSIWYG toolgroup.
+     *
+     * Used to provide an abstraction for any WYSIWYG editor to plug in.
+     *
+     * @return String
+     *   A string that can be used as the ID.
+     */
+    getFloatedWysiwygToolgroupId: function () {
+      return 'quickedit-wysiwyg-floated-toolgroup-for-' + this._id;
+    },
+
+    /**
+     * Retrieves the ID for this toolbar's main WYSIWYG toolgroup.
+     *
+     * Used to provide an abstraction for any WYSIWYG editor to plug in.
+     *
+     * @return String
+     *   A string that can be used as the ID.
+     */
+    getMainWysiwygToolgroupId: function () {
+      return 'quickedit-wysiwyg-main-toolgroup-for-' + this._id;
+    },
+
+    /**
+     * Finds a toolgroup.
+     *
+     * @param String toolgroup
+     *   A toolgroup name.
+     * @return jQuery
+     */
+    _find: function (toolgroup) {
+      return this.$el.find('.quickedit-toolgroup.' + toolgroup);
+    },
+
+    /**
+     * Shows a toolgroup.
+     *
+     * @param String toolgroup
+     *   A toolgroup name.
+     */
+    show: function (toolgroup) {
+      var $group = this._find(toolgroup);
+      // Attach a transitionEnd event handler to the toolbar group so that update
+      // events can be triggered after the animations have ended.
+      $group.on(Drupal.quickedit.util.constants.transitionEnd, function (event) {
+        $group.off(Drupal.quickedit.util.constants.transitionEnd);
+      });
+      // The call to remove the class and start the animation must be started in
+      // the next animation frame or the event handler attached above won't be
+      // triggered.
+      window.setTimeout(function () {
+        $group.removeClass('quickedit-animate-invisible');
+      }, 0);
+    }
+
+  });
+
+})(jQuery, _, Backbone, Drupal);
+;
+/**
+ * @file
+ * An abstract Backbone View that controls an in-place editor.
+ */
+
+(function ($, Backbone, Drupal) {
+
+  "use strict";
+
+  /**
+   * A base implementation that outlines the structure for in-place editors.
+   *
+   * Specific in-place editor implementations should subclass (extend) this View
+   * and override whichever method they deem necessary to override.
+   *
+   * Look at Drupal.quickedit.editors.form and
+   * Drupal.quickedit.editors.plain_text for examples.
+   *
+   * @see Drupal.quickedit.EditorModel
+   */
+  Drupal.quickedit.EditorView = Backbone.View.extend({
+
+    /**
+     * {@inheritdoc}
+     *
+     * Typically you would want to override this method to set the originalValue
+     * attribute in the FieldModel to such a value that your in-place editor can
+     * revert to the original value when necessary.
+     *
+     * If you override this method, you should call this method (the parent
+     * class' initialize()) first, like this:
+     *   Drupal.quickedit.EditorView.prototype.initialize.call(this, options);
+     *
+     * For an example, @see Drupal.quickedit.editors.plain_text.
+     *
+     * @param Object options
+     *   An object with the following keys:
+     *   - Drupal.quickedit.EditorModel model: the in-place editor state model
+     *   - Drupal.quickedit.FieldModel fieldModel: the field model
+     */
+    initialize: function (options) {
+      this.fieldModel = options.fieldModel;
+      this.listenTo(this.fieldModel, 'change:state', this.stateChange);
+    },
+
+    /**
+     * {@inheritdoc}
+     */
+    remove: function () {
+      // The el property is the field, which should not be removed. Remove the
+      // pointer to it, then call Backbone.View.prototype.remove().
+      this.setElement();
+      Backbone.View.prototype.remove.call(this);
+    },
+
+    /**
+     * Returns the edited element.
+     *
+     * For some single cardinality fields, it may be necessary or useful to
+     * not in-place edit (and hence decorate) the DOM element with the
+     * data-quickedit-field-id attribute (which is the field's wrapper), but a
+     * specific element within the field's wrapper.
+     * e.g. using a WYSIWYG editor on a body field should happen on the DOM
+     * element containing the text itself, not on the field wrapper.
+     *
+     * For example, @see Drupal.quickedit.editors.plain_text.
+     *
+     * @return jQuery
+     *   A jQuery-wrapped DOM element.
+     */
+    getEditedElement: function () {
+      return this.$el;
+    },
+
+    /**
+     * Returns 3 Quick Edit UI settings that depend on the in-place editor:
+     *  - Boolean padding: indicates whether padding should be applied to the
+     *    edited element, to guarantee legibility of text.
+     *  - Boolean unifiedToolbar: provides the in-place editor with the ability
+     *    to insert its own toolbar UI into Quick Edit's tightly integrated
+     *    toolbar.
+     *  - Boolean fullWidthToolbar: indicates whether Quick Edit's tightly
+     *    integrated toolbar should consume the full width of the element,
+     *    rather than being just long enough to accommodate a label.
+     */
+    getQuickEditUISettings: function () {
+      return {padding: false, unifiedToolbar: false, fullWidthToolbar: false, popup: false};
+    },
+
+    /**
+     * Determines the actions to take given a change of state.
+     *
+     * @param Drupal.quickedit.FieldModel fieldModel
+     * @param String state
+     *   The state of the associated field. One of Drupal.quickedit.FieldModel.states.
+     */
+    stateChange: function (fieldModel, state) {
+      var from = fieldModel.previous('state');
+      var to = state;
+      switch (to) {
+        case 'inactive':
+          // An in-place editor view will not yet exist in this state, hence
+          // this will never be reached. Listed for sake of completeness.
+          break;
+        case 'candidate':
+          // Nothing to do for the typical in-place editor: it should not be
+          // visible yet.
+
+          // Except when we come from the 'invalid' state, then we clean up.
+          if (from === 'invalid') {
+            this.removeValidationErrors();
+          }
+          break;
+        case 'highlighted':
+          // Nothing to do for the typical in-place editor: it should not be
+          // visible yet.
+          break;
+        case 'activating':
+          // The user has indicated he wants to do in-place editing: if
+          // something needs to be loaded (CSS/JavaScript/server data/…), then
+          // do so at this stage, and once the in-place editor is ready,
+          // set the 'active' state.
+          // A "loading" indicator will be shown in the UI for as long as the
+          // field remains in this state.
+          var loadDependencies = function (callback) {
+            // Do the loading here.
+            callback();
+          };
+          loadDependencies(function () {
+            fieldModel.set('state', 'active');
+          });
+          break;
+        case 'active':
+          // The user can now actually use the in-place editor.
+          break;
+        case 'changed':
+          // Nothing to do for the typical in-place editor. The UI will show an
+          // indicator that the field has changed.
+          break;
+        case 'saving':
+          // When the user has indicated he wants to save his changes to this
+          // field, this state will be entered.
+          // If the previous saving attempt resulted in validation errors, the
+          // previous state will be 'invalid'. Clean up those validation errors
+          // while the user is saving.
+          if (from === 'invalid') {
+            this.removeValidationErrors();
+          }
+          this.save();
+          break;
+        case 'saved':
+          // Nothing to do for the typical in-place editor. Immediately after
+          // being saved, a field will go to the 'candidate' state, where it
+          // should no longer be visible (after all, the field will then again
+          // just be a *candidate* to be in-place edited).
+          break;
+        case 'invalid':
+          // The modified field value was attempted to be saved, but there were
+          // validation errors.
+          this.showValidationErrors();
+          break;
+      }
+    },
+
+    /**
+     * Reverts the modified value back to the original value (before editing
+     * started).
+     */
+    revert: function () {
+      // A no-op by default; each editor should implement reverting itself.
+
+      // Note that if the in-place editor does not cause the FieldModel's
+      // element to be modified, then nothing needs to happen.
+    },
+
+    /**
+     * Saves the modified value in the in-place editor for this field.
+     */
+    save: function () {
+      var fieldModel = this.fieldModel;
+      var editorModel = this.model;
+      var backstageId = 'quickedit_backstage-' + this.fieldModel.id.replace(/[\/\[\]\_\s]/g, '-');
+
+      function fillAndSubmitForm(value) {
+        var $form = $('#' + backstageId).find('form');
+        // Fill in the value in any <input> that isn't hidden or a submit
+        // button.
+        $form.find(':input[type!="hidden"][type!="submit"]:not(select)')
+          // Don't mess with the node summary.
+          .not('[name$="\\[summary\\]"]').val(value);
+        // Submit the form.
+        $form.find('.quickedit-form-submit').trigger('click.quickedit');
+      }
+
+      var formOptions = {
+        fieldID: this.fieldModel.get('fieldID'),
+        $el: this.$el,
+        nocssjs: true,
+        other_view_modes: fieldModel.findOtherViewModes(),
+        // Reset an existing entry for this entity in the TempStore (if any) when
+        // saving the field. Logically speaking, this should happen in a separate
+        // request because this is an entity-level operation, not a field-level
+        // operation. But that would require an additional request, that might not
+        // even be necessary: it is only when a user saves a first changed field
+        // for an entity that this needs to happen: precisely now!
+        reset: !this.fieldModel.get('entity').get('inTempStore')
+      };
+
+      var self = this;
+      Drupal.quickedit.util.form.load(formOptions, function (form, ajax) {
+        // Create a backstage area for storing forms that are hidden from view
+        // (hence "backstage" — since the editing doesn't happen in the form, it
+        // happens "directly" in the content, the form is only used for saving).
+        var $backstage = $(Drupal.theme('quickeditBackstage', {id: backstageId})).appendTo('body');
+        // Hidden forms are stuffed into the backstage container for this field.
+        var $form = $(form).appendTo($backstage);
+        // Disable the browser's HTML5 validation; we only care about server-
+        // side validation. (Not disabling this will actually cause problems
+        // because browsers don't like to set HTML5 validation errors on hidden
+        // forms.)
+        $form.prop('novalidate', true);
+        var $submit = $form.find('.quickedit-form-submit');
+        self.formSaveAjax = Drupal.quickedit.util.form.ajaxifySaving(formOptions, $submit);
+
+        function removeHiddenForm() {
+          Drupal.quickedit.util.form.unajaxifySaving(self.formSaveAjax);
+          delete self.formSaveAjax;
+          $backstage.remove();
+        }
+
+        // Successfully saved.
+        self.formSaveAjax.commands.quickeditFieldFormSaved = function (ajax, response, status) {
+          removeHiddenForm();
+          // First, transition the state to 'saved'.
+          fieldModel.set('state', 'saved');
+          // Second, set the 'htmlForOtherViewModes' attribute, so that when this
+          // field is rerendered, the change can be propagated to other instances of
+          // this field, which may be displayed in different view modes.
+          fieldModel.set('htmlForOtherViewModes', response.other_view_modes);
+          // Finally, set the 'html' attribute on the field model. This will cause
+          // the field to be rerendered.
+          fieldModel.set('html', response.data);
+        };
+
+        // Unsuccessfully saved; validation errors.
+        self.formSaveAjax.commands.quickeditFieldFormValidationErrors = function (ajax, response, status) {
+          removeHiddenForm();
+          editorModel.set('validationErrors', response.data);
+          fieldModel.set('state', 'invalid');
+        };
+
+        // The quickeditFieldForm AJAX command is only called upon loading the
+        // form for the first time, and when there are validation errors in the
+        // form; Form API then marks which form items have errors. This is
+        // useful for the form-based in-place editor, but pointless for any
+        // other: the form itself won't be visible at all anyway! So, we just
+        // ignore it.
+        self.formSaveAjax.commands.quickeditFieldForm = function () {};
+
+        fillAndSubmitForm(editorModel.get('currentValue'));
+      });
+    },
+
+    /**
+     * Shows validation error messages.
+     *
+     * Should be called when the state is changed to 'invalid'.
+     */
+    showValidationErrors: function () {
+      var $errors = $('<div class="quickedit-validation-errors"></div>')
+        .append(this.model.get('validationErrors'));
+      this.getEditedElement()
+        .addClass('quickedit-validation-error')
+        .after($errors);
+    },
+
+    /**
+     * Cleans up validation error messages.
+     *
+     * Should be called when the state is changed to 'candidate' or 'saving'. In
+     * the case of the latter: the user has modified the value in the in-place
+     * editor again to attempt to save again. In the case of the latter: the
+     * invalid value was discarded.
+     */
+    removeValidationErrors: function () {
+      this.getEditedElement()
+        .removeClass('quickedit-validation-error')
+        .next('.quickedit-validation-errors')
+        .remove();
+    }
+
+  });
+
+}(jQuery, Backbone, Drupal));
+;
+/**
+ * @file
+ * Provides overridable theme functions for all of Quick Edit's client-side HTML.
+ */
+
+(function ($, Drupal) {
+
+  "use strict";
+
+  /**
+   * Theme function for a "backstage" for the Quick Edit module.
+   *
+   * @param Object settings
+   *   An object with the following keys:
+   *   - String id: the id to apply to the backstage.
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditBackstage = function (settings) {
+    var html = '';
+    html += '<div id="' + settings.id + '" />';
+    return html;
+  };
+
+  /**
+   * Theme function for a toolbar container of the Quick Edit module.
+   *
+   * @param Object settings
+   *   An object with the following keys:
+   *   - String id: the id to apply to the toolbar container.
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditEntityToolbar = function (settings) {
+    var html = '';
+    html += '<div id="' + settings.id + '" class="quickedit quickedit-toolbar-container clearfix">';
+    html += '<i class="quickedit-toolbar-pointer"></i>';
+    html += '<div class="quickedit-toolbar-content">';
+    html += '<div class="quickedit-toolbar quickedit-toolbar-entity clearfix icon icon-pencil">';
+    html += '<div class="quickedit-toolbar-label" />';
+    html += '</div>';
+    html += '<div class="quickedit-toolbar quickedit-toolbar-field clearfix" />';
+    html += '</div><div class="quickedit-toolbar-lining"></div></div>';
+    return html;
+  };
+
+  /**
+   * Theme function for a toolbar container of the Quick Edit module.
+   *
+   * @param Object settings
+   *   An object with the following keys:
+   *   - String entityLabel: The title of the active entity.
+   *   - String fieldLabel: The label of the highlighted or active field.
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditEntityToolbarLabel = function (settings) {
+    return '<span class="field">' + settings.fieldLabel + '</span>' + settings.entityLabel;
+  };
+
+  /**
+   * Element that defines a containing box of the placement of the entity toolbar.
+   *
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditEntityToolbarFence = function () {
+    return '<div id="quickedit-toolbar-fence" />';
+  };
+
+  /**
+   * Theme function for a toolbar container of the Quick Edit module.
+   *
+   * @param settings
+   *   An object with the following keys:
+   *   - id: the id to apply to the toolbar container.
+   * @return
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditFieldToolbar = function (settings) {
+    return '<div id="' + settings.id + '" />';
+  };
+
+  /**
+   * Theme function for a toolbar toolgroup of the Quick Edit module.
+   *
+   * @param Object settings
+   *   An object with the following keys:
+   *   - String id: (optional) the id of the toolgroup
+   *   - String classes: the class of the toolgroup.
+   *   - Array buttons: @see Drupal.theme.quickeditButtons().
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditToolgroup = function (settings) {
+    // Classes.
+    var classes = (settings.classes || []);
+    classes.unshift('quickedit-toolgroup');
+    var html = '';
+    html += '<div class="' + classes.join(' ') + '"';
+    if (settings.id) {
+      html += ' id="' + settings.id + '"';
+    }
+    html += '>';
+    html += Drupal.theme('quickeditButtons', {buttons: settings.buttons});
+    html += '</div>';
+    return html;
+  };
+
+  /**
+   * Theme function for buttons of the Quick Edit module.
+   *
+   * Can be used for the buttons both in the toolbar toolgroups and in the modal.
+   *
+   * @param Object settings
+   *   An object with the following keys:
+   *   - buttons: an array of objects with the following keys:
+   *     - String type: the type of the button (defaults to 'button')
+   *     - Array classes: the classes of the button.
+   *     - String label: the label of the button.
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditButtons = function (settings) {
+    var html = '';
+    for (var i = 0; i < settings.buttons.length; i++) {
+      var button = settings.buttons[i];
+      if (!button.hasOwnProperty('type')) {
+        button.type = 'button';
+      }
+      // Attributes.
+      var attributes = [];
+      var attrMap = settings.buttons[i].attributes || {};
+      for (var attr in attrMap) {
+        if (attrMap.hasOwnProperty(attr)) {
+          attributes.push(attr + ((attrMap[attr]) ? '="' + attrMap[attr] + '"' : ''));
+        }
+      }
+      html += '<button type="' + button.type + '" class="' + button.classes + '"' + ' ' + attributes.join(' ') + '>';
+      html += button.label;
+      html += '</button>';
+    }
+    return html;
+  };
+
+  /**
+   * Theme function for a form container of the Quick Edit module.
+   *
+   * @param Object settings
+   *   An object with the following keys:
+   *   - String id: the id to apply to the toolbar container.
+   *   - String loadingMsg: The message to show while loading.
+   * @return String
+   *   The corresponding HTML.
+   */
+  Drupal.theme.quickeditFormContainer = function (settings) {
+    var html = '';
+    html += '<div id="' + settings.id + '" class="quickedit-form-container">';
+    html += '  <div class="quickedit-form">';
+    html += '    <div class="placeholder">';
+    html += settings.loadingMsg;
+    html += '    </div>';
+    html += '  </div>';
+    html += '</div>';
+    return html;
+  };
+
+})(jQuery, Drupal);
+;
diff --git a/sites/default/files/js/js_wJbt5ARIR71oMld_oFPa1OBqnCKtpw5NWqeojynqHn8.js.gz b/sites/default/files/js/js_wJbt5ARIR71oMld_oFPa1OBqnCKtpw5NWqeojynqHn8.js.gz
new file mode 100644
index 0000000..b457d66
--- /dev/null
+++ b/sites/default/files/js/js_wJbt5ARIR71oMld_oFPa1OBqnCKtpw5NWqeojynqHn8.js.gz
@@ -0,0 +1,115 @@
+     vu/?ljvwHIF[Ț4dZJh=n@3Zy$߾UծKBQ:+Etw]w>⋃wj^?V첳x_5m6_]ٿɻɴZef9<y_W>.岬Eͺ_Uys7YvMbQMU֖li6iUa.ټueExV{`Xy:ʖe{44弘Y	ơ-U1-VE+Weϊyqs! >9_&8XjeVwcS\9=><ˋ+hnUY]VTpE5Kk#(le`Wޫ&E4Pָ#]R.º+[z{Qu]88\|Mkh.qSfZa(8]LڲXSCex0)y@G,UZ]a
+>Z60":RUC쪹A2W-$CT:**W8%}pKӬp'+|mx{g_wgM]zYٔei?\8/GOYvOm5Y6kpn0E8xCH8N8{^<ht\4rEKXAʩ3ԉ!˨Wd/'2|5#7ɛhN2<-,Rg	Z]4%<{{ZT0rWhf2'+<Pϳr~I.=~gZǲމkͦá^Gso:2;M[_rw[i{sH9\(+ݪ Ne凪[Vu]iu-5Q!7hyь/~HÖahub:pXF"+1G3b?Y1,ySLsppLlGpcb4Si}W-jҕ䶜YvZ^:r7xp	=|^@?c֧)|6+bdQ2,UU(R<ۣ--([EKbt-FW74Q~˄|,yO.B e׉ZiM3nvm{!T(r
+HU10м֪4(t qv^C3Zb/"F4ɺ)#Tc(1x<#B}H{)O˄ 4?
+X;Nk^A@W]s5J-h`wM:&Y!M4sa,VEgz>٧<Ev̔#b?ȟ#Yv^VSQLCy-~[i[vE=1d$VۖBI=*%|QɷB0hԭ϶Th`"j܍ħRӅ,)Kch@e놄7HW`]>ЃN4k)ͻ`#q0_#mMy|>损XT&DQw402C3-]
+:wY=wbvJfA[V{'1ܶ|˥G%++BDg'<oDusͧNab5.D,INtlU.8-gՇz$jNtϦn.YYfWC(L!9t(=/+{&ղ3\`
+aFOh~m :Vdwfw(evݡlrQG_V2p%gï1ڪO%؅˓*2E-FtԀav1Pv%٠^(ň&؍ޛ tlH3ڡeue2f͌r>/\eEwHYe|:b?r-'080D-/d܂'IWosXȪ6,eĤikn'uGܗ*y_B_~3<&=efE+EFo(;TA#֒s{8m&kҬ@x}t
+W˔pjkNx\ym}όW`A^#攡^c0Yc
+XsIe#@VIyi8,Z
++8ûZʄWxxU[۳8l@f_Cn9禍rt3S/YWQљՠDxYut]"fᐴ&M[r]*	O>R=fmV$ew aCCIVB|6Vbe{2)\e=j?P{.a7y"
+QгWx0ʻy(Frbpd1)B0Pc=L38U{f^դܲ}`Gz4GPF:$	 ~N~KPĬzsp^M#ȉDZ֊>ZC+hW~k?g&29ȖdOY-w3;Vd-{ΟN!g7)j{79	y<w܄¶իM tvl$+ŴwGu^j/GC&ci~EwjE[iU
+۶RC!i>|m|rҮ߹c>=PI>|=teU1N] x
+w Q	eC2H@WF7"lfk}LdF=M]s#6ojۃ>Eʂҫڷu{Pxzn=_kCMuư杸)
+#u~,4,Vj2f"DV٠_wiAz[OMS&;vLP9$Quy5z33mғ9T#pO89;FI۩j1
+eXc :UZ]Cnա>H;EΑ;e-JSΓ_	_빓誱\'OboXS4:-jfbM_Լ#>-#H3sԒu˄f΃b\tFU.c:p{%lq(VA=:k'(عv")7[R(F>q%ٿي2+L}Kc-eSO]>i)
+<Wy,EbD'%>!u׭I2)Z=$WJ R"I	@j0JMbz\HtO#H1HP6f#PLE3^*u9R!rɗ8)$A}~+HQg=V©ۥn'^;yX \ ڛf!mzu3X%%#rdo3%R_B`8iM{;QF$
+GRTv w)8gEJ3b.Y#SweߖBTࠥGBMZB2.XFuҬù'R8"/:3Z
+iv[,~cX0w`B	
+H:0C|JfhKAw}<xgq*Wy%ydj6Ii$xܾN5/~,>(x-+{lzծ49do_|5{Κ{ܽ~3|"7L[owctkkxz|'$
+`cAȩVǡWū%vb^^cʇDNpӡD97M1u+
+#g2#/'m\˗&:fğK	şX%%qNR=裘AG$B|飘Vh7P# TY9',+I:z{x<EVNb䳏LRq9^ADLEi>͉,Pc
+Wil譄ᒙs4ї<+*M٩FDj}F˖<> QV^bFjY,(v8/:#ID[ۦ"IS,A+l)6aN.ֺC9Ys_&rVef}Wc	~:4
+PK?lPDr+DiCe=v#nLeXΫٕ^.vZ-cțm_׿?c6rLWݯ*J=X#֌lU.M,0/P6}mPȆxoZόEzG[n6AmE5{҃(dR9UNazx
+I*t K,tO2/u	Zӧ)/01񧁡XO|9ooIxmc$h&W)Mm@_up'͒.m|٤Y0!vc=Ǚ0H4D_KS ̦fc67-Alh	9r:ƃwܵmVN.1]'ʴ.d1@[ZQY_w:zIwh0ol6Lf8Srd=m(+OPbŤwc+.c+T:=H0.\+NJqn;1ߚ̾	%!<*~SKWLd~b؋%1#Wyv,0y[0J٣]]0/
+<-9R
+'zێ27`h;_:-!pT8P.#⢙Oi)ÄEuˢ6|Gvkd^&sP(QL{|`_}XVg0 iUE	nQ&"ΜEqU,g5@2h%Zq/J8	f ٭0SAdj%YPkֶǥCa?@D8Ν0>pۯ7^ 6w"AB>s$GZάٿD&P2ϻ`E?牕C<y7m1MunsEgP|i))v:K|N,Ԝow'?[-qIyvA0skγ`{Dy,Aw<obc+%djթl!ަ{oj)
+1oD(oyc0gaOK|[(>ENO֥1ߧsqVη9osb%<zhT-F{ȣIEquVkMx\v`D7~"1jѢgg\r~6FK֮ܤt+)`~Nc)Y( Ws8GMe^zBQr$9җHFuPh֪,u g#@&<)h/8<MM\Ga[Jq;'YVP&v%#wOA7nߡ>i>ʘylE[֫USfE[G˖2mv^im=ޞ駅$BOt`+xb3HLbr[U7Pfӓ=>^B(`zf}~Ty扛H*ҳ<HIKa>051LIU*
+4cb_Fnt)ɣˆ  v"媛N#Pb8yC<WbL}#!>$Ca(Jv@q$M;-#Q#<,7͖*6A( p.GJS$lnyÜC^GsrY'L6WE%;߅I	#WUv[HIoO <o߻`@,H[
+?YÅ5&EC6!}܄Z4n%+A 19'C膛_mƲdяD)5O`([͕:UǀTC[b!QQ
+)00'CߑԽQ))SG8ΘmSQz~i.w۝]<?lVǩY48y
+;L`*:^x=4Ԑ}ĐJe6j2	GCHv|u\*m..[9K/~H`f#j>Rl~HK9Adr{->g~.˳wUSUhzypf	P<TH7ʐvR?=ݥɡmpIgOCq6`1;F1lF<ڱG.tѳ&>ciK[ߪǷ"|3'8[(5E~7pR|};%`0["j2O!%=jK$е,=	w 0agWY[)7o4wEs4X˦}m?ysO{$Zk`]JLz[TϽv䧭-L	9}96hrm/Lk~LsQ`UɕsB91;P>"Y0_bT4xaj49Nѩe[-ꄔ=f	}]&@uusDkvVG4kE/:V+UJ^^TB)HRO=䫢O7+ՉM9r%BajwXb
+dLd;*Tp^v:jg, [	DB%92Q,D.,Sg85p ~4-$:\BZ:PB&A{Peq_u;و3-{c^6I|bXt铿pyiT1Tdu3;ogLp&&n(R|á:$P*x{_
+&d`c[vqU$qۥQ7*K)1KoI|Nqoĵ5IHpLcE*`$Y)6ąQ{!m;h0\K0uz
+0/X9O4##+۞O"@}t:Ұ\DRuړkW~{(trg*O&n:PiEK/-G`B;Ę#cNαwK:Ӡ-':4{J_-:>gW6ehL		"#huiMy~}-:pJB攀@eh(_6m{u܌`qY#KNT塪dwLnZ"g< @3Nms:HŶ&صY,r8ǧ
+]s.:>*s~g t`hY+k_.9IY;.;q*zxg$G=w$\w}5}&S4'xЍ	i$]?Ȣm!Z0C^±｡:&JvcoӂXj}U{_Rͷgk<Z_8ⷵb =PCij4=@@Dk#VQ	ٓDFIJ +Ik4eӦ.hI}5jYCz-C'7τmKo®2>ze7mmhmMӞY'``ΆX7opf ϮG\A]{,Ė{9]vWoyiKH(o\RΜO	x%Josq*NBMVnM+pFw|29K[6,$~WHմ|VE)&ض[WƤF7Y&tz23ew~wH}w	=`|\rDrY#!yH9'xԭXz|xx[Ŕ ݅V`15@,[4IHlɟ>9ZqǭEx'qC#N1[ !qk*RonQji9+«ίd@3UNkL3ͩ7s镨(OHY:O5a}WJh3[<אJ" Z~dV-t1L.  fK6$MXCЋl߂1LO6GfWZ9XD'"v";ԜҺu{K#D,@2HyL''ㅚ£EhZK<.M >;pk<JD#	F]JTU e9ff0.
+f3HԈ/1Rzl%cRtMB`R V:4z*_ \	$eUenVP0b۟|\Yl=;pFz>TukLDqT2'!q=@Qdv/HO8|)jSl;ɾh/e^Av,>]Ni*ڣpLM;TJQ>TJBV0ӽY}x\\طB;&kbb(a}/
+1xhpazܰQc+)CE@y7?=!SNa)i[C{ؑu(xʂ)#gCQʫO]I%*󺚼 #	@D65@[lpL@L.B{7?uIɒQ%U$7;ڽp؈Ֆők꼪Ak-CϖMV,*gZWmuI8mvnjOu6"FT/a2'r ^?B19P$djIb{(=Lzg,A4%^7!xD~i!:ݢqpV`%ʆQ~ԹE#6+JXGF2VC~'aA0P}~$:c֕\<ed`Apǎ7@sI).t^Z\`aӭ7USCğd:9~m<19ADZ<R{v7@Ap 11Aܗ9"ԍ=u6w"FsP8/=A!%x0K	bf6F7>4;1mXgaS,X8!%EZK6(!mHFl$#wJiIUDՔ'%~ۍ!zAh'{Y)"9xr]#әpl/4XP/wLE6̫wan~$Fs8iMvK+\uбe$YwhQ/Su7Z4kS!._[z?$EuŒM|l<[q g2&Y2Tk2]`p)l$0VrK؄;}z.o9TZ`d!+y9'(<wӼ1ҵ|=(6?>d$M-ŉcmaPHxמhzX:$4H8G$0d2}ҳm240-acp<
+6ÜxgdÐW9Ic#-^Sע5uYK)I1(fdPơhdF?(Wuܘ?y9^Ҧ<QT#)rـ2SמA0O>T8 pPM]i.4غjPѼ5:\햇,e=Qn=KlRZ'
+odejćbZPцz}KXot9\P	ظHo20fYPء_=C6P=m6Gdkl+"a)xCB'Nլ;mk6KA$<VTQ< q`=m(gC`D+DvY0n"Ş;<iR*[r`[!eeLqaXk.5%~H6h"3$lC|TcPA5¡F_AbKd@	
+`FKeAך ^)Y>FhR^|Y9gѹ]#("xFDL+ެdlW]X ([mbD.FPscF̎_M:&F&mNCABqOVФ5|s^J=~%Bs+E}~wxd)JGq]+z%ٹ$Mݐ'&W@%H{땽\	2y1w8դ?v"F+r6#u}^94k VO[04PXY*lЎiv.1hcu7y(º%;79ծTF{0hP^@Ib+z؀	2́|:/u!˘ٱ *u+RlH=DQ;o+IDß6%pjH$Irs.RfwxCI*)OO'mrMAs 8] i7ĢhM~'WP=f݃`2(O&NbB]
+n.9)'p4h#^	j4!O#½6%يు_W1CKaJ/DGD:ת5	nUb`KDC_OdKUHD{b @tƶ7C4e87hDxE	Z  RD{:mP{u=mbAA<#67)k0>!-%=V,m?۹afeȆ7[)Zn.6O}V /!f^Ŵ
+b!7N/-YiqG[e|nЉaurbrsLU>E6z1ԫ$3kILUiwe  DI͆Q[n >}'^o@]#cz")È:8A!<N	1G?8ͼZѹIRo'I&?P?jl4r$lM1ip­/HqnI:6.yM;NJlW){TvoC Dل,	`Aّjz :uD<! 3b?m^oD(gtlԷ$j]VvP-J,-&`tjA*VH%ҎM'*;=anPhw6wH=e*7	GѠnr$-b,,yFDʍNmh}-N1QN
+`)R{1rI:|`Kl:~RtOp9$Br8pb\*<|
+3)p0Xg=6~83$Kz[lBKlθdaj-7s7I7k(P#>lk-Ýܥaudx@}PB`)t~Z>U-mq'iMہh"Y	Ws	H?K6+@bj|A:ڈVP*Sh!&DEOf.\_H  $jV&'ccdn:S%1<6]Z7ԠD'_߿AP݉ӗjOB%/_'%7o2lƕNfV{1ּHC=
+෰&!0a b.;-?v=AfX/E(܁_(P6@{z-5sOЕyT*[NWbsjlfS=LA
+8 `~WH*UnAvgEcݶD2cnpoGcZt`ShZꄉQB[N-qos^|ƧP87XeȊ[!x&k ctg49zĲpcF
+HloxVM(6Pee]'pΜaHW獍p"pDΡpHNh<`^_"F*DRnEKE䥌ӮGvR#7P˓LL8,2E6K`XG)BŕaO2	qE`Q,]el.J2-jt.$|+bZG4OHʘw乤QI=|>k/+veyПq<gƖerYמdt;QSR#7fLG{:P3ޫP!r?qh#.z L{HFt0}\Œt녒[	q,jgB+@ͧ6ɼ*ZR&s98їʡ+#J3OKJ}-k8+ZQ|9_ŔRoE"_I]uI-(:j&x*'H$`px<lc'&i(,sd\Sy+us1|-z6˛YɁ><=emh'=+nDQ߰T6ڰ0YOlaHJ[.c(UnJ22!U>l}9N.*L+I,MtmCɇ%GplHᩬNڽͥ
+ϤWB~쏽i;m9,afaT Q\2GT_59{tѳ637&$yQm=+Ͼ_6	h\ÌUQ*VoԥeHkk!t>B{k @bA!`q|n3ksКi+YBзA+[Μpu	+-Ru1ajGmi w}[ҚoB7{¨\7 ]<ZLS*p5D*WVkG 9a(Ahc\)
+'	~cxL9y	hXsꒌ*DP]eJt)Pu&Ӷl͗#tlM<"ٶNS:%kQ%dI<~[}eH
+̉~gWZU= SZAv׋
+F#Y6S3l)}wV{tR,3&3䋢A]Č;TJ\(Yno0wWD+	wjҕ*)X+Kɠf. \feo-:Zv(3@ա9<hz`
+V\lj*7Fʲ26;EB)QQv14yUxRuq5Aގ3SR곖;usu]K~ܷOMy?KiIAOW!X"&_+^VV-b(HP]7X.zk៶D)= c*λu==Ƌy߹ć*GV#*AT>j!7sA3֩4k+ }Kv²?h[<*)/0;*ɜeh
+^8|`k&Eّ[uͶ"
+t_dqw,Gg.?ŐhL|bF;8oq}ot:V :OٖNSY7	j@M"dVsuo~K<Os֦U+i,`8c2Y֘+d2daa+긮 LT F&jA`v!_n!CvOt)п	1E=@iZN@ɪnXlfӊ=WbDeLY)kuTh2ë߸pF<{[ԓ@%#8ʡo^Q6Zi h*!Jv$֓E֘ϫKay]l2 SC0e^&=NLp,i&i_`HϹ±+7rFGyTg`,sw@<ғ$*nk$S12%bn9gބDTf1r 
+~8ΫI9;~3l~n²x%mIYJqi<2Ͻ$RZ(PS5ra>_qv`[$pcnǻ{K1-``dֈ`7D>ͪ&n˃vƲ/B¼ېJP;a*csdvc_)V{rWk*?ef9
+c6
+($&o:(K:B-dbB6^3,pJĈ.jtwE"/g1;g0/+a삎s/Q*zMRFpMI"<F<4l<"bzab	
+$S#U$'l$;!n	ى5ZO
+7W'~8prn.HAQb1Ge&~:_;:IX]B0Qj9{Ph1вjCc=T\nNr=Eko`	U#6F٢:emu8GpY\Xlz΄+-ƁՅ 0i|tg	A>kme2Hwvkֲ!cjYV/93Ƙprai23#BpTU)I	\dSO7G%1=4Zsiq@[?nBp}-[A\ɀ7G[QD+j(G2F'0"+7F-p.jsToF`X]`4S?/`ojk50fUV:1Ag--)$ƮMqdYWsDһ~1K$j#r꘾t	46vn<1&v!=rGUfVß<Te>h>qRtyzc;G6kmVNAE;IّXEc;ig0ŀ뚂'uFNyGJUjdR*yC(},a\]N~geXJfAPaѼGoZf$}u$Qfa)1+-DGIASќOKXve#R%@#3uGd~n	bC]VK1Vy,'뭦qȾmwl>%.%>W8'n$Xk|_O&>Ϯ1yjVѡ^L	|CǦ޶."g%!t0Db3j`W3C3(/9-_i,^#1*J	DV)kXȵyMe2f.ao&7RU@ȷ>=|b\[וsqQ`:m-ؽ
+X|V%;Hxl\N%d/n;QEWUעA,\Ln1y&jd* CpX##?/i\X[EEbOe|#E]DQ4Ϯx(趣` ɺcd#Žvg7i'Γh󍭆w)\_w٠̓u[ذR`viFc:VP7C<3eKVwTsʂXȘd~|ë0;|"\Ȁqr=/%-3?bVƒYH,#4w\9˦sy$ xLBdra^&4k-s.*Mۥ_M\ ӫ!՞NI_OկLߘ`; aP_/Wt'l;	2Ɗ?U,ϝ̋Gqp#8N]z_(2x~XnM|GwfŠ\zHAE;b_c
+.-t, @P h͊&A#ŏ޾ٔ5W=~IzAE,[K*|23-vN'ðRcj@Y=5]K,E2]!5깉L2e4'>gbt37?\*B}R/9|_B70rUa4JF5\ pQǘ1+IPR>[CJ0k$k~X`m[.9,|:5^bj!\K<AckOI]Gk^$P/G>jlpޓ8PZU-ptc<|T#I#jԫ3$:~{<RWߒ8	rl\әCDȲ^hJ#S~NW<@&&v@FQˁq9@6rޱ	6D8)c%
+~aw,~=
+Ǣm հm?l:5pD㘹E%ZMSQ",!hql>ez("*5ghyscH̽&Sjrc2liQf¶2El۴mE0y˄[MIL77&n &jh֦6$osҺ@jqIR%/m<p`sξ5VXYl~eg3N&4X@亪TTr}8M^8,wmm65W$<dJa(!'CAS D+U{=&(Nh8EIP
+IN@)~&hh|ލ#<w1}11;"FCaIbDa&MPv7ycڈ~c!NVO>A?~5;,OɄ̐j}&Sf=[;=UY-/T\d+VZ&mO6 sSg(^!yXئo	ts]lm}U7\~6ȠKެ Վo+ϫrmͥ%Ii'H7iY`-MS4/)B	1Yq	@q:vN&M&QSX*nN!Z'
+PsN?8)j&](|z+qvR5&:3ztȈlT8cD5jشqKjѴz'.ncEX/g<R\Q1SႢ>/_J*k`I[ܨ7,.VXW2B6Tm[ֽS& h;mZdv4`ʗF?%Bb=C=õj)D2a"L+i?q*2ٱ3<@G./nLÖ88u; BH~/R/]V<Dn/5.s1$ۦYrHgMA$ܾ8jp/x)H KiO{e8dk77͎h^lw'
+vD4#p
+x?jv58Y$vV`g豀ۡEg@}#n=vs{=ᩢ hrGyDOx@wpCڹ}D{|٤rjh:ɖ	r380rtpE՜R&ԸTȸ怛26]WuV|CýhR*]\r)v/"HW~]n]?N7}NeRO+Aư]Lۯ3c~R#*l5摫ei ob@tì>8.}}:);8.d9&2#(CZH}}db45Q7v\52>c9PbJM08:1eRanPyR(ݻETyG\pռ.W֊m<:9(=~-a9	E}Qc
+Z?>1oy%^9Sxl9~5Sl .Ǘqj&hR#69){3pqhq.dUGuǃ^uWoer)ȝ`C7j=E.
+唒f`ʀuU|InHi"4~-%qj-1fcF(VyQ"IvՑIV(F8JA8xȥ?
+]^״d{x87?@|Ik젓~5[ S>A4λ찮DAx#}h@/w 91DĪ '4Hj[T''
+_أ0ȸ>^6`op&H7ۖ*H@%"8dׯ1&AH0%^&@C΁ǿͯ?ԜzzQ?	-SÙ6c6 ƕ#p##}(m.SjLq)qE#*28%bMǞSrL{qN_̵}n'JKmtI^sN;YPTԫϕӋ`1)vh+'!с	,fn:
++0X(d	
+.Fա<lb18x^v}o]0;LXwk^[][yG-ԮiM2*Djoiݧ&I/hsbE0o1؝+&1f5F7hRl'[4S
+?@ز";'˄0d\[YLn<.uҢ\ӑ%*T7Am"8x!.8ⶭ8(9{][,mM]Т%%mm2{O1˥:U<^ ^	2Si@f,Ar22/ ] X*(S
+^؆Bk	,Ohk_:S>]<LC	a[eUr3fr1$SF3qPnapR9]@fCC/:
+㰧MUq#yH*Ɇ1y̬A*GCi +nXlN8:\9&ݬWW2d(hHY #s)W2f^tfb%_Sxt(c{*`!qSh傏`֭ؐY`tkFy:/tey&Sb"&9N3DzIBUK]Q[j$C!~4ȝ[T?M:EMb-eK=k1%HSVJ!sgHAဆQu ,':Qy~5MX+J#x8j*A\¿@9@53*BJJvl)^G	8pպh/F1Y$H=t6Kċuå_T:4Mп_FlZ0DJIDU8U.6&];ƕlfTt	5s	"htOV(Wȩ`+#V/ێB_cw8t!ɺPl476<n(</j)1_;AVO9FE'&䇯ƻbrot?l8Q'-WYW$ DhJqxrΠ11iU"Mڳ{C沇!c*M?}zh.!'!!y~:*~sT=x6O#-L:U'ZHo_"xrL8Uc)8 *Dc4EfXTGa"cMrGEtboKwJ +wRS|$exjE68Rr$LL+)/ىl_W,嘑a2+]xDX1<êӲd*2U<[ޢx\Zu
+zc<TB8?˺P ;m^~}m,D巗tuϺ'm0tÌT0?t]NAS?'OQcɷ26ŧGOg./֫Svu|卸u>B*5|=]nw{UHܫbuJ\sJok}]Uudk$ spj=v-rD$]=oLVqf977F҉:Tr	DGs8-5/ 6KG,,muiv~ižt+6&8Cofq2L@tjzR	'ciGe\Go2ĔL.rxT3dkJ8	^z@.yNbPǕp[3Zّי(MN`M,`}*9<^	dop}<HykTK˒"!URZ^˝D6RQTݾn[r{A,)UŰicEL%Xc3"XO	G}bwLc^?[M9("[ioS9(U>TAVCXha1\c%ۗYO"bJ ZܓXcmE&7ͼYN|mǉNwUr5VQL>dnv)\lx3ih]a9ˮGRE-'X[`j?no`N2xIZ/3Пn^Núb.|6: 
+jy[9lIUh4
+r{PcxQFm 2)zF]8*Oq$pl4	&"z9W\Zը߲Y&`d?YI~Ӕ.vWwokQrY6|
+tgڑr-}T{97E =S@n)R,xA%EHAQ/	n8m֒AT0
+Žr6@( ^NnB;E0r=]~s#&!s(3f]~kYŴ8bʢ,Ы[VK[QjImz_U7oPY	9le:D)jx_n ҘĲ ٍN%E1=79qܜDat΀(kڴt$JLE"<L7؝Ca8JF=GX6J"-0ok[6SKd;}"Ȱ7UHGidC6n82(XzYA?2?qAPU,`qb4G<췘8:/g+.֑k7喯._}Kx~Cgj,RMȓm,	X/J^vص>ɓ[EO1܆Lb{/ɫK'r+g^٦YhJڸi9KqUL8{QSw=_5ju1/YA$ZxnJR%1U6'ww>+}"W>d|t\蓹BVޕmRp:f)Ͳ(gZHa{V89G/׋XjrXX$~Ae:֝I=1Sp=ڽ0YXNԼXLir uuAM:+[J?b5u3̻Wv߂IoہkzcR!8c}w_!SMށwqtcaRqqď@@Q}X_?7;/M+7N=i_/gJeIoz^Z]Fc8QH#Ar",WXAp؃CCh=p %$0r2؝őeL-ch/	(Rbfew0AQȆEn[^&q?L_g1}~ ]cYiƂ6MAY~dyJG.E3̚қ< }cT "WSL |O7x@\Á9.:ٗ}0􍱤!dt24sY8TprgOE,<8	3ЪbEo155HpX^5"HMqi~:IӸAHxT)6;wauY+LzFFe6%H{օoY27rɌ~6ApV /v;0M6V	yLtٴ+i;+$Yv@4$a2P﬛\DN?\̹Lv
+1V~{'هS"k_<Q<iG1ptiJ2\<NoZAD( ²짦aAnɥD_o1yʟ2S@#ZN3gr'
+/,wo%-̛.]Fsf)wM+)1%};U]bU_	glo4fY3ef=='!0"I:c>yq+8ml:RBdP
+ G$"E5S1`0#8I`^ *aӓmr# D'Ђv_;i}k)a7nk`̥Pq-SAZ26h}zhU+z I0d\97`3nn-U`pNj	VbEU4wuiI^U'4z2DwDUA{	Ao}p
+jp+c4ՍA%6޸݆mΘD(BBf-4Ga1PiO;s`AX-<09#7LzPa<Ju>9F:j@E556E˪*	U422|m
+2d9ͬ$WŮY۰(S3ML!Λ#kNeL11ڣpZG1YWRR JCC6uĊsBڞvyR-~X9hN)R*87&7EIOa,N+TPܞOgG	)~\ZZWEh(puNBEAߪjRvW&~7a՗vN T`kr2l}t	L:e@V$RG[([	Ryމv52.D_ZJ#h岀]ò{In)%S-SYW⑤;.ߧJtAUp~/Ojeɤ}o82j~Zś{;0Q|!8^	G,EVJSge9G;v\)`f65Yh;
+JSٙ=!5[`="$7?z93S s[U5S66I{(e>多U@!ݷͼ'c.ܥKt;ߡڢ@h˽ukWC^!>Zbv}1Vq8
+~
+5y!c,yTtzF(Ui5 ب]X`y7<޺.wfBRuIߺsP[7h&K}լ7:O,nT-	FpD
+8kzb}4`Qht(@$U_)^6$x{ܽn1MQ[3n~)cTfj2beܱo53+əU<t~'_cv{VoV{&URMu0?+ݑ$ԭI:MRF<KJ7x(XKN}s	iQqW#=}ֈv8F˃f6ЍlYO©inam[$P 	IjC.piMgP;m"Skpآ]^7hE3xaіέC?1#* *I0PKE+E)wU$wQQ*̝	_2>*UJFp5¸@ LeHئd)skwߐ'.ӃGԘx(ƯE	&M!{5x}0]zt#áY쟰fՉ~F%ć  fytkͳ0̯k?&Df Q7WU4/Wު7^P8۞@?	;z<2ObbwƸWVܳ,0Vo]l:h?.=n{IS	ofGa
+'buMӪy#$(Ux2J֞HIb@J_2V1("<*F{i4O</Nؚx'duNMX_.?Q`SwQ{]WJ6y1
+R>ҥ~A9o5VfTh-Cʭ<+Rѩ4pFYPIdlσټZΪU'cx
+'rCRK"o)}%t_JUP%9Ňj^41Y2|Kb4+Ic'R8e]|vzPjJ0~s<DU7F_sRCGPAᠦ6HmJw'`S]HTʏt]gU～0=L/=i_VR߄VuUQC1Nw	Nsd|r&
+;%hȒArf	FQ*J{N|cvؠʑ#aպeIC[kwyc*n~RBhBe@PN+opם+%m%5pI3-:b=SdMB.*a	~+cLќk϶Vl&O0^35qJ9PT^ݧ/#l]v
+<1Gl(т$d^ucP"1 7q5io]܂Y1:%..x~caQR8ϏOQ1ٻ"SpC
+Prg^^ڦڅJѰTͲ;:DNC3Woj;^S}CK<쉗Ex
+=qR|n6gHUPqvϰ	᷶WR)fhtF~N%'J&^_RzpUg?KV2 bņE$yaR{F3i[忎)?V*g*gZ~yjh!l~g˕R̖l.".)QI0KL1:l ߂o),zVOŦ t/~6@~y:T_^0/0}REЌ j0?9MM#vOFvo#RzER'+	b-h<Z/2TN8+cV^ǟ\Կ$ڽP)R#~IH{ae͐5]Yw?e1A:8Z0X*]cXFN15
+ڙx췴5iY&/:V[Wy5:Ag`a31} \+337C\4g2mp %'p0 𒄢0ih
+fWM(Fl^n#7P.8X^H+JvD=J  Ƕj֓'kJFЬJd,VLl0;ռ/²|
+LF*jҼOt~O@WHcxO8MQS|t'ä?jtI\;T[mrնqL Lm84&2N^ ߝ .dnbiA H%s}jZ`-J	wtr`v(u򍣝$P;wMҾo7FN2ճ$lI˽vTگ((JpHI9O6ŉ.eD%AL,A.HZxe 	M+#^.u-b[1DƣIXE[ǖw0	RD
+8ABw1V\0ǯry[e47jMIY1+1dDΓc@yUY^Cp0NMlbg/u6}^ChJ7ܗ%9Pxɂy(Wg{>CA7Ǎ{R9-K6"D`΋)v{Za[v}E:׭>9+~LE:0-kF,.^j]WpTÿ|ÿ_=ݞ;IITeE_Zgy7#@Q%t~˫sų*%z4/Q׎8'ξ|L#j;+Usr<kI)܌L:&L+D^ };4MqJSʸL"W|ۏ_2ƦTW@@%x@|>4(	399quT5P~6&I+H1<><~WK
+Gˇv]ۀnfWIJYܾˌp557uh?~viq` _6rjzRi1WmCUka%W<hވǛ
+lFWco`27.KXFҀNە] DQ1uij&iJ)K 3v͒2vY5^i_g_lG]Xf+x]I:9h=CՀQ,\R<Z[8\gr:D0VŗU'~{}t&[1ٔ;r C-^1D~,XBӲ\d[	mP=oRl1 $tǯ(?83o~וe©E<7%o=/\qWWjBAW͚fU%wPm$>4pl\˟2ᷔ!V߈dYZÏSZlFJcLOȘyIʪUrDefF=;n\y-7xt9Ǳ1vI{(&u::p{|LDٝuB\ʯ~<>{`#l*O a'm0erHl Z`ѹ،MMz͔7n"}]8!]Q,A|)3g3gkQ-\5h!^6\ؔHE̘f0H(bC,ge;|F`T=Sy)z}3$$sAf$WmIb
+`xߙ#\F)ޭOgf=i#|:y6aZıgxkٔآ|Y7:z}:FY&D34 &EFo̤ٙ\LbRkO\,@D a15ENbέ
+}  :o噕pCCjS]vFpb%+j
+ZaRq~ޠnSEܗ\k&bΌt%Y1༅(?%r>ݰebtuo}v,ãJE1LT+4K @̨$]#H E<ϾAAiJOێyj#<icEVDlzOg>LՋKCnsi̬ʼrg0t3@g|'mW{?]ϭ,BEXpAX'74g׿A'W唾z7"|y}rV1B]bdkUWIq02QׯRfq0C
+tyr8-\d9`\@M]Nr>ܾ	iW, 4JX4t>t6^Gwf(=O8ˢlǹOGKhK8AdQ|{=N䀴:p0!F4F_m?dcq2Ǌ-?JW\N3p{68>o˕sBl	ӮFFծNe3ָ0bhb3 9~k,RGc[q[f7%aWm`\RD71aj(ކ"%yQ~@a T-c#%!YJLg$bt[ް!3L.|G&V3@o:r)[;tFaVvkz;},1Z O3&:	=*DF\} YmYMëH@J=PM
+]-|uHl3{=k\% ṍQY}q\YjuF~	ğg~[5ۿtr}Bfp~ӗiCZ)0Tc5ÚO9:E{U\:t2*ջD$Ŵ{Ohݼu9|cߜ fj4Pp؜Jwy88Fky/ysf0aR0L
+G2ŗ:T-~^jgO"qklgۛn&]c.y[m"Aeu3|/=thC+v@z^i ^cBN8Ğ鍺E[TȾi@X,!
+)修Kc<6[Ksnʵu{<TH&o`X$z=+s&#X<RL_JpaIT) ߲M'٭$%FY]GW	/S:N:CuttӏŇ -dV!IbRJ»H|/>rܐ=D4ZS84b̐C.E5:4oSZtŖ!<Z\KŊ8ڱQ_Ṇ5ZFlFZ:n.)yGwcKךr.ȝ%!ow6%Z	qxqqmlHiԇKm `!2Xby0V@f8NOљE[AH#e\֕\&-	EpR7pѫfW\?2Q]cj"yW6t.
+3h7'u4H"W:^OՐrtD~SygpVcdKX_xN})T3UW5Ava/K8 [P|`.Up*f6 r!KAd%dtQuϛ/^k}fP$(tŖ|v6MznPts=qpĂ3u)F0m&zhD"?ݤbuB%Ox6ÆaQB-rjY{K5څNK"a`Jza"l4!}rL>LUD;VpI\-/MIN@>i͆e[=Ygq$PTkǲXWխeC$"RORߋ6=Z[ܚH[d/7ER[8D-9d֦Lj(n~-)=ܛV9,8*"NAMCf$?׾(.4j	yr2sg=s9k,5<fJF^
+qFSǦ1*e[vBR^	,ߴq(z?H2[#FyAL\8ᜐ*?"-Udh鯼>KO5\^I^wP'Ng
+hU	6IQ:}ud~ГdS&M˗8]R~8-y71H ,)@UM̯?DS0iy_ƌw)4h9}FvL]Yk60gՇQ'U|u$G,CEPKc*w=e.wo?[IFFLz"Y,mJJխ>`5XM!pGz[r>nxnO4T*:b`d*m@3S2LOQvL4؞~>}bkHt`v7)@PȔ=PX6̂\tŠ-,g6~Grgn`t%\n|߽Q#|]wl0U6tf PC
+V:BtJm^F^>OocIK{N'B;0*EWuPϢ6(@h>⯻ȅb$<
+R-e(1CVlDRb
+7.3x^DR޹d)GޜdEVܖWU^o%, Rǫa_9=/C`[?٘c>EVp3zTSg?i]Or]+X4VC0k~g攝Fqڏ!'[֪zff2p>czfzb}wh&9%bU%k$lsxy~+Yn\4ii;6֒|nmߡ ;qmv0 
\ No newline at end of file
diff --git a/sites/default/files/php/service_container/.htaccess b/sites/default/files/php/service_container/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/service_container/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/service_container/service_container_prod/.htaccess b/sites/default/files/php/service_container/service_container_prod/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/service_container/service_container_prod/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/service_container/service_container_prod/f17cc1f69d35a363299e3e6c9605e34b55648fc44aff7dc5c95c27d000e6f941.php b/sites/default/files/php/service_container/service_container_prod/f17cc1f69d35a363299e3e6c9605e34b55648fc44aff7dc5c95c27d000e6f941.php
new file mode 100644
index 0000000..1dbee28
--- /dev/null
+++ b/sites/default/files/php/service_container/service_container_prod/f17cc1f69d35a363299e3e6c9605e34b55648fc44aff7dc5c95c27d000e6f941.php
@@ -0,0 +1,6057 @@
+<?php
+
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\LogicException;
+use Symfony\Component\DependencyInjection\Exception\RuntimeException;
+use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
+
+/**
+ * service_container_prod
+ *
+ * This class has been auto-generated
+ * by the Symfony Dependency Injection Component.
+ */
+class service_container_prod extends \Drupal\Core\DependencyInjection\Container
+{
+    private $parameters;
+
+    /**
+     * Constructor.
+     */
+    public function __construct()
+    {
+        $this->services =
+        $this->scopedServices =
+        $this->scopeStacks = array();
+        $this->parameters = array(
+            'kernel.environment' => 'prod',
+            'container.modules' => array(
+                'block' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/block/block.info.yml',
+                    'filename' => 'block.module',
+                ),
+                'block_content' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/block_content/block_content.info.yml',
+                    'filename' => 'block_content.module',
+                ),
+                'breakpoint' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/breakpoint/breakpoint.info.yml',
+                    'filename' => 'breakpoint.module',
+                ),
+                'ckeditor' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/ckeditor/ckeditor.info.yml',
+                    'filename' => 'ckeditor.module',
+                ),
+                'color' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/color/color.info.yml',
+                    'filename' => 'color.module',
+                ),
+                'comment' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/comment/comment.info.yml',
+                    'filename' => 'comment.module',
+                ),
+                'config' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/config/config.info.yml',
+                    'filename' => 'config.module',
+                ),
+                'contact' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/contact/contact.info.yml',
+                    'filename' => 'contact.module',
+                ),
+                'contextual' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/contextual/contextual.info.yml',
+                    'filename' => 'contextual.module',
+                ),
+                'datetime' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/datetime/datetime.info.yml',
+                    'filename' => 'datetime.module',
+                ),
+                'dblog' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/dblog/dblog.info.yml',
+                    'filename' => 'dblog.module',
+                ),
+                'editor' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/editor/editor.info.yml',
+                    'filename' => 'editor.module',
+                ),
+                'entity_reference' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/entity_reference/entity_reference.info.yml',
+                    'filename' => 'entity_reference.module',
+                ),
+                'field' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/field/field.info.yml',
+                    'filename' => 'field.module',
+                ),
+                'field_ui' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/field_ui/field_ui.info.yml',
+                    'filename' => 'field_ui.module',
+                ),
+                'file' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/file/file.info.yml',
+                    'filename' => 'file.module',
+                ),
+                'filter' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/filter/filter.info.yml',
+                    'filename' => 'filter.module',
+                ),
+                'help' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/help/help.info.yml',
+                    'filename' => 'help.module',
+                ),
+                'history' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/history/history.info.yml',
+                    'filename' => 'history.module',
+                ),
+                'image' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/image/image.info.yml',
+                    'filename' => 'image.module',
+                ),
+                'menu_link_content' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/menu_link_content/menu_link_content.info.yml',
+                    'filename' => 'menu_link_content.module',
+                ),
+                'menu_ui' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/menu_ui/menu_ui.info.yml',
+                    'filename' => 'menu_ui.module',
+                ),
+                'node' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/node/node.info.yml',
+                    'filename' => 'node.module',
+                ),
+                'options' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/options/options.info.yml',
+                    'filename' => 'options.module',
+                ),
+                'path' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/path/path.info.yml',
+                    'filename' => 'path.module',
+                ),
+                'quickedit' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/quickedit/quickedit.info.yml',
+                    'filename' => 'quickedit.module',
+                ),
+                'rdf' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/rdf/rdf.info.yml',
+                    'filename' => 'rdf.module',
+                ),
+                'search' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/search/search.info.yml',
+                    'filename' => 'search.module',
+                ),
+                'shortcut' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/shortcut/shortcut.info.yml',
+                    'filename' => 'shortcut.module',
+                ),
+                'standard' => array(
+                    'type' => 'profile',
+                    'pathname' => 'core/profiles/standard/standard.info.yml',
+                    'filename' => 'standard.profile',
+                ),
+                'system' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/system/system.info.yml',
+                    'filename' => 'system.module',
+                ),
+                'taxonomy' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/taxonomy/taxonomy.info.yml',
+                    'filename' => 'taxonomy.module',
+                ),
+                'text' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/text/text.info.yml',
+                    'filename' => 'text.module',
+                ),
+                'toolbar' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/toolbar/toolbar.info.yml',
+                    'filename' => 'toolbar.module',
+                ),
+                'tour' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/tour/tour.info.yml',
+                    'filename' => 'tour.module',
+                ),
+                'update' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/update/update.info.yml',
+                    'filename' => 'update.module',
+                ),
+                'user' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/user/user.info.yml',
+                    'filename' => 'user.module',
+                ),
+                'views_ui' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/views_ui/views_ui.info.yml',
+                    'filename' => 'views_ui.module',
+                ),
+                'views' => array(
+                    'type' => 'module',
+                    'pathname' => 'core/modules/views/views.info.yml',
+                    'filename' => 'views.module',
+                ),
+            ),
+            'container.namespaces' => array(
+                'Drupal\\block' => '/usr/share/nginx/www/drupal/core/modules/block/src',
+                'Drupal\\block_content' => '/usr/share/nginx/www/drupal/core/modules/block_content/src',
+                'Drupal\\breakpoint' => '/usr/share/nginx/www/drupal/core/modules/breakpoint/src',
+                'Drupal\\ckeditor' => '/usr/share/nginx/www/drupal/core/modules/ckeditor/src',
+                'Drupal\\color' => '/usr/share/nginx/www/drupal/core/modules/color/src',
+                'Drupal\\comment' => '/usr/share/nginx/www/drupal/core/modules/comment/src',
+                'Drupal\\config' => '/usr/share/nginx/www/drupal/core/modules/config/src',
+                'Drupal\\contact' => '/usr/share/nginx/www/drupal/core/modules/contact/src',
+                'Drupal\\contextual' => '/usr/share/nginx/www/drupal/core/modules/contextual/src',
+                'Drupal\\datetime' => '/usr/share/nginx/www/drupal/core/modules/datetime/src',
+                'Drupal\\dblog' => '/usr/share/nginx/www/drupal/core/modules/dblog/src',
+                'Drupal\\editor' => '/usr/share/nginx/www/drupal/core/modules/editor/src',
+                'Drupal\\entity_reference' => '/usr/share/nginx/www/drupal/core/modules/entity_reference/src',
+                'Drupal\\field' => '/usr/share/nginx/www/drupal/core/modules/field/src',
+                'Drupal\\field_ui' => '/usr/share/nginx/www/drupal/core/modules/field_ui/src',
+                'Drupal\\file' => '/usr/share/nginx/www/drupal/core/modules/file/src',
+                'Drupal\\filter' => '/usr/share/nginx/www/drupal/core/modules/filter/src',
+                'Drupal\\help' => '/usr/share/nginx/www/drupal/core/modules/help/src',
+                'Drupal\\history' => '/usr/share/nginx/www/drupal/core/modules/history/src',
+                'Drupal\\image' => '/usr/share/nginx/www/drupal/core/modules/image/src',
+                'Drupal\\menu_link_content' => '/usr/share/nginx/www/drupal/core/modules/menu_link_content/src',
+                'Drupal\\menu_ui' => '/usr/share/nginx/www/drupal/core/modules/menu_ui/src',
+                'Drupal\\node' => '/usr/share/nginx/www/drupal/core/modules/node/src',
+                'Drupal\\options' => '/usr/share/nginx/www/drupal/core/modules/options/src',
+                'Drupal\\path' => '/usr/share/nginx/www/drupal/core/modules/path/src',
+                'Drupal\\quickedit' => '/usr/share/nginx/www/drupal/core/modules/quickedit/src',
+                'Drupal\\rdf' => '/usr/share/nginx/www/drupal/core/modules/rdf/src',
+                'Drupal\\search' => '/usr/share/nginx/www/drupal/core/modules/search/src',
+                'Drupal\\shortcut' => '/usr/share/nginx/www/drupal/core/modules/shortcut/src',
+                'Drupal\\standard' => '/usr/share/nginx/www/drupal/core/profiles/standard/src',
+                'Drupal\\system' => '/usr/share/nginx/www/drupal/core/modules/system/src',
+                'Drupal\\taxonomy' => '/usr/share/nginx/www/drupal/core/modules/taxonomy/src',
+                'Drupal\\text' => '/usr/share/nginx/www/drupal/core/modules/text/src',
+                'Drupal\\toolbar' => '/usr/share/nginx/www/drupal/core/modules/toolbar/src',
+                'Drupal\\tour' => '/usr/share/nginx/www/drupal/core/modules/tour/src',
+                'Drupal\\update' => '/usr/share/nginx/www/drupal/core/modules/update/src',
+                'Drupal\\user' => '/usr/share/nginx/www/drupal/core/modules/user/src',
+                'Drupal\\views_ui' => '/usr/share/nginx/www/drupal/core/modules/views_ui/src',
+                'Drupal\\views' => '/usr/share/nginx/www/drupal/core/modules/views/src',
+                'Drupal\\Core\\Render' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Render',
+                'Drupal\\Core\\TypedData' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/TypedData',
+                'Drupal\\Core\\Field' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Field',
+                'Drupal\\Core\\Datetime' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Datetime',
+                'Drupal\\Core\\Mail' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Mail',
+                'Drupal\\Core\\Validation' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Validation',
+                'Drupal\\Core\\Config' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Config',
+                'Drupal\\Core\\Block' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Block',
+                'Drupal\\Core\\Entity' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Entity',
+                'Drupal\\Component\\Annotation' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Component/Annotation',
+            ),
+            'language.default_values' => array(
+                'id' => 'en',
+                'name' => 'English',
+                'direction' => 'ltr',
+                'weight' => 0,
+                'locked' => false,
+            ),
+            'twig.config' => array(
+                'debug' => false,
+                'auto_reload' => NULL,
+                'cache' => true,
+            ),
+            'factory.keyvalue' => array(
+
+            ),
+            'factory.keyvalue.expirable' => array(
+
+            ),
+            'user.tempstore.expire' => 604800,
+            'persistids' => array(
+                0 => 'class_loader',
+                1 => 'kernel',
+                2 => 'service_container',
+                3 => 'request_stack',
+                4 => 'router.request_context',
+            ),
+            'main_content_renderers' => array(
+                'html' => 'main_content_renderer.html',
+                'drupal_ajax' => 'main_content_renderer.ajax',
+                'drupal_dialog' => 'main_content_renderer.dialog',
+                'drupal_modal' => 'main_content_renderer.modal',
+            ),
+            'cache_bins' => array(
+                'cache.bootstrap' => 'bootstrap',
+                'cache.config' => 'config',
+                'cache.default' => 'default',
+                'cache.entity' => 'entity',
+                'cache.menu' => 'menu',
+                'cache.render' => 'render',
+                'cache.data' => 'data',
+                'cache.discovery' => 'discovery',
+                'cache.toolbar' => 'toolbar',
+            ),
+            'cache_default_bin_backends' => array(
+                'bootstrap' => 'cache.backend.chainedfast',
+                'config' => 'cache.backend.chainedfast',
+                'discovery' => 'cache.backend.chainedfast',
+            ),
+            'cache_contexts' => array(
+                0 => 'cache_context.url',
+                1 => 'cache_context.language',
+                2 => 'cache_context.theme',
+                3 => 'cache_context.timezone',
+                4 => 'cache_context.node_view_grants',
+                5 => 'cache_context.user',
+                6 => 'cache_context.user.roles',
+            ),
+        );
+
+        $this->set('service_container', $this);
+
+        $this->scopes = array();
+        $this->scopeChildren = array();
+        $this->methodMap = array(
+            'accept_header_matcher' => 'getAcceptHeaderMatcherService',
+            'access_arguments_resolver_factory' => 'getAccessArgumentsResolverFactoryService',
+            'access_check.contact_personal' => 'getAccessCheck_ContactPersonalService',
+            'access_check.cron' => 'getAccessCheck_CronService',
+            'access_check.csrf' => 'getAccessCheck_CsrfService',
+            'access_check.custom' => 'getAccessCheck_CustomService',
+            'access_check.db_update' => 'getAccessCheck_DbUpdateService',
+            'access_check.default' => 'getAccessCheck_DefaultService',
+            'access_check.entity' => 'getAccessCheck_EntityService',
+            'access_check.entity_create' => 'getAccessCheck_EntityCreateService',
+            'access_check.field_ui.form_mode' => 'getAccessCheck_FieldUi_FormModeService',
+            'access_check.field_ui.view_mode' => 'getAccessCheck_FieldUi_ViewModeService',
+            'access_check.node.add' => 'getAccessCheck_Node_AddService',
+            'access_check.node.preview' => 'getAccessCheck_Node_PreviewService',
+            'access_check.node.revision' => 'getAccessCheck_Node_RevisionService',
+            'access_check.permission' => 'getAccessCheck_PermissionService',
+            'access_check.quickedit.entity_field' => 'getAccessCheck_Quickedit_EntityFieldService',
+            'access_check.theme' => 'getAccessCheck_ThemeService',
+            'access_check.update.manager_access' => 'getAccessCheck_Update_ManagerAccessService',
+            'access_check.user.login_status' => 'getAccessCheck_User_LoginStatusService',
+            'access_check.user.register' => 'getAccessCheck_User_RegisterService',
+            'access_check.user.role' => 'getAccessCheck_User_RoleService',
+            'access_manager' => 'getAccessManagerService',
+            'access_manager.check_provider' => 'getAccessManager_CheckProviderService',
+            'account_switcher' => 'getAccountSwitcherService',
+            'ajax.subscriber' => 'getAjax_SubscriberService',
+            'ajax_subscriber' => 'getAjaxSubscriberService',
+            'app.root' => 'getApp_RootService',
+            'app.root.factory' => 'getApp_Root_FactoryService',
+            'asset.css.collection_grouper' => 'getAsset_Css_CollectionGrouperService',
+            'asset.css.collection_optimizer' => 'getAsset_Css_CollectionOptimizerService',
+            'asset.css.collection_renderer' => 'getAsset_Css_CollectionRendererService',
+            'asset.css.dumper' => 'getAsset_Css_DumperService',
+            'asset.css.optimizer' => 'getAsset_Css_OptimizerService',
+            'asset.js.collection_grouper' => 'getAsset_Js_CollectionGrouperService',
+            'asset.js.collection_optimizer' => 'getAsset_Js_CollectionOptimizerService',
+            'asset.js.collection_renderer' => 'getAsset_Js_CollectionRendererService',
+            'asset.js.dumper' => 'getAsset_Js_DumperService',
+            'asset.js.optimizer' => 'getAsset_Js_OptimizerService',
+            'authentication' => 'getAuthenticationService',
+            'authentication.cookie' => 'getAuthentication_CookieService',
+            'authentication_subscriber' => 'getAuthenticationSubscriberService',
+            'bare_html_page_renderer' => 'getBareHtmlPageRendererService',
+            'batch.storage' => 'getBatch_StorageService',
+            'block.current_language_context' => 'getBlock_CurrentLanguageContextService',
+            'block.current_user_context' => 'getBlock_CurrentUserContextService',
+            'block.node_route_context' => 'getBlock_NodeRouteContextService',
+            'block.page_display_variant_subscriber' => 'getBlock_PageDisplayVariantSubscriberService',
+            'block.repository' => 'getBlock_RepositoryService',
+            'breadcrumb' => 'getBreadcrumbService',
+            'breakpoint.manager' => 'getBreakpoint_ManagerService',
+            'cache.backend.apcu' => 'getCache_Backend_ApcuService',
+            'cache.backend.chainedfast' => 'getCache_Backend_ChainedfastService',
+            'cache.backend.database' => 'getCache_Backend_DatabaseService',
+            'cache.backend.php' => 'getCache_Backend_PhpService',
+            'cache.bootstrap' => 'getCache_BootstrapService',
+            'cache.config' => 'getCache_ConfigService',
+            'cache.data' => 'getCache_DataService',
+            'cache.default' => 'getCache_DefaultService',
+            'cache.discovery' => 'getCache_DiscoveryService',
+            'cache.entity' => 'getCache_EntityService',
+            'cache.menu' => 'getCache_MenuService',
+            'cache.render' => 'getCache_RenderService',
+            'cache.toolbar' => 'getCache_ToolbarService',
+            'cache_context.language' => 'getCacheContext_LanguageService',
+            'cache_context.node_view_grants' => 'getCacheContext_NodeViewGrantsService',
+            'cache_context.theme' => 'getCacheContext_ThemeService',
+            'cache_context.timezone' => 'getCacheContext_TimezoneService',
+            'cache_context.url' => 'getCacheContext_UrlService',
+            'cache_context.user' => 'getCacheContext_UserService',
+            'cache_context.user.roles' => 'getCacheContext_User_RolesService',
+            'cache_contexts' => 'getCacheContextsService',
+            'cache_factory' => 'getCacheFactoryService',
+            'cache_tags.invalidator' => 'getCacheTags_InvalidatorService',
+            'cache_tags.invalidator.checksum' => 'getCacheTags_Invalidator_ChecksumService',
+            'class_loader' => 'getClassLoaderService',
+            'class_resolver' => 'getClassResolverService',
+            'comment.breadcrumb' => 'getComment_BreadcrumbService',
+            'comment.link_builder' => 'getComment_LinkBuilderService',
+            'comment.manager' => 'getComment_ManagerService',
+            'comment.post_render_cache' => 'getComment_PostRenderCacheService',
+            'comment.statistics' => 'getComment_StatisticsService',
+            'config.config_subscriber' => 'getConfig_ConfigSubscriberService',
+            'config.factory' => 'getConfig_FactoryService',
+            'config.installer' => 'getConfig_InstallerService',
+            'config.manager' => 'getConfig_ManagerService',
+            'config.storage' => 'getConfig_StorageService',
+            'config.storage.installer' => 'getConfig_Storage_InstallerService',
+            'config.storage.schema' => 'getConfig_Storage_SchemaService',
+            'config.storage.snapshot' => 'getConfig_Storage_SnapshotService',
+            'config.storage.staging' => 'getConfig_Storage_StagingService',
+            'config.typed' => 'getConfig_TypedService',
+            'config_import_subscriber' => 'getConfigImportSubscriberService',
+            'config_snapshot_subscriber' => 'getConfigSnapshotSubscriberService',
+            'contact.mail_handler' => 'getContact_MailHandlerService',
+            'container.namespaces' => 'getContainer_NamespacesService',
+            'content_negotiation' => 'getContentNegotiationService',
+            'content_type_header_matcher' => 'getContentTypeHeaderMatcherService',
+            'content_uninstall_validator' => 'getContentUninstallValidatorService',
+            'context.handler' => 'getContext_HandlerService',
+            'controller.entity_form' => 'getController_EntityFormService',
+            'controller.form' => 'getController_FormService',
+            'controller_resolver' => 'getControllerResolverService',
+            'country_manager' => 'getCountryManagerService',
+            'cron' => 'getCronService',
+            'csrf_token' => 'getCsrfTokenService',
+            'current_route_match' => 'getCurrentRouteMatchService',
+            'current_user' => 'getCurrentUserService',
+            'database' => 'getDatabaseService',
+            'database.replica' => 'getDatabase_ReplicaService',
+            'date.formatter' => 'getDate_FormatterService',
+            'diff.formatter' => 'getDiff_FormatterService',
+            'element.editor' => 'getElement_EditorService',
+            'entity.bundle_config_import_validator' => 'getEntity_BundleConfigImportValidatorService',
+            'entity.definition_update_manager' => 'getEntity_DefinitionUpdateManagerService',
+            'entity.definitions.installed' => 'getEntity_Definitions_InstalledService',
+            'entity.form_builder' => 'getEntity_FormBuilderService',
+            'entity.manager' => 'getEntity_ManagerService',
+            'entity.query' => 'getEntity_QueryService',
+            'entity.query.config' => 'getEntity_Query_ConfigService',
+            'entity.query.keyvalue' => 'getEntity_Query_KeyvalueService',
+            'entity.query.sql' => 'getEntity_Query_SqlService',
+            'entity_reference.autocomplete' => 'getEntityReference_AutocompleteService',
+            'entity_route_subscriber' => 'getEntityRouteSubscriberService',
+            'event_dispatcher' => 'getEventDispatcherService',
+            'exception.custom_page_html' => 'getException_CustomPageHtmlService',
+            'exception.custom_page_json' => 'getException_CustomPageJsonService',
+            'exception.default' => 'getException_DefaultService',
+            'exception.default_html' => 'getException_DefaultHtmlService',
+            'exception.default_json' => 'getException_DefaultJsonService',
+            'exception.enforced_form_response' => 'getException_EnforcedFormResponseService',
+            'exception.fast_404_html' => 'getException_Fast404HtmlService',
+            'exception.logger' => 'getException_LoggerService',
+            'exception.test_site' => 'getException_TestSiteService',
+            'feed.bridge.reader' => 'getFeed_Bridge_ReaderService',
+            'feed.bridge.writer' => 'getFeed_Bridge_WriterService',
+            'feed.reader.atomentry' => 'getFeed_Reader_AtomentryService',
+            'feed.reader.atomfeed' => 'getFeed_Reader_AtomfeedService',
+            'feed.reader.contententry' => 'getFeed_Reader_ContententryService',
+            'feed.reader.dublincoreentry' => 'getFeed_Reader_DublincoreentryService',
+            'feed.reader.dublincorefeed' => 'getFeed_Reader_DublincorefeedService',
+            'feed.reader.podcastentry' => 'getFeed_Reader_PodcastentryService',
+            'feed.reader.podcastfeed' => 'getFeed_Reader_PodcastfeedService',
+            'feed.reader.slashentry' => 'getFeed_Reader_SlashentryService',
+            'feed.reader.threadentry' => 'getFeed_Reader_ThreadentryService',
+            'feed.reader.wellformedwebentry' => 'getFeed_Reader_WellformedwebentryService',
+            'feed.writer.atomrendererfeed' => 'getFeed_Writer_AtomrendererfeedService',
+            'feed.writer.contentrendererentry' => 'getFeed_Writer_ContentrendererentryService',
+            'feed.writer.dublincorerendererentry' => 'getFeed_Writer_DublincorerendererentryService',
+            'feed.writer.dublincorerendererfeed' => 'getFeed_Writer_DublincorerendererfeedService',
+            'feed.writer.itunesentry' => 'getFeed_Writer_ItunesentryService',
+            'feed.writer.itunesfeed' => 'getFeed_Writer_ItunesfeedService',
+            'feed.writer.itunesrendererentry' => 'getFeed_Writer_ItunesrendererentryService',
+            'feed.writer.itunesrendererfeed' => 'getFeed_Writer_ItunesrendererfeedService',
+            'feed.writer.slashrendererentry' => 'getFeed_Writer_SlashrendererentryService',
+            'feed.writer.threadingrendererentry' => 'getFeed_Writer_ThreadingrendererentryService',
+            'feed.writer.wellformedwebrendererentry' => 'getFeed_Writer_WellformedwebrendererentryService',
+            'field_ui.subscriber' => 'getFieldUi_SubscriberService',
+            'field_uninstall_validator' => 'getFieldUninstallValidatorService',
+            'file.mime_type.guesser' => 'getFile_MimeType_GuesserService',
+            'file.mime_type.guesser.extension' => 'getFile_MimeType_Guesser_ExtensionService',
+            'file.usage' => 'getFile_UsageService',
+            'finish_response_subscriber' => 'getFinishResponseSubscriberService',
+            'flood' => 'getFloodService',
+            'form_builder' => 'getFormBuilderService',
+            'form_submitter' => 'getFormSubmitterService',
+            'form_validator' => 'getFormValidatorService',
+            'http_client' => 'getHttpClientService',
+            'http_kernel' => 'getHttpKernelService',
+            'http_kernel.basic' => 'getHttpKernel_BasicService',
+            'http_middleware.kernel_pre_handle' => 'getHttpMiddleware_KernelPreHandleService',
+            'http_middleware.page_cache' => 'getHttpMiddleware_PageCacheService',
+            'http_middleware.reverse_proxy' => 'getHttpMiddleware_ReverseProxyService',
+            'image.factory' => 'getImage_FactoryService',
+            'image.page_cache_request_policy.deny_private_image_style_download' => 'getImage_PageCacheRequestPolicy_DenyPrivateImageStyleDownloadService',
+            'image.toolkit.manager' => 'getImage_Toolkit_ManagerService',
+            'image.toolkit.operation.manager' => 'getImage_Toolkit_Operation_ManagerService',
+            'info_parser' => 'getInfoParserService',
+            'kernel' => 'getKernelService',
+            'kernel_destruct_subscriber' => 'getKernelDestructSubscriberService',
+            'keyvalue' => 'getKeyvalueService',
+            'keyvalue.database' => 'getKeyvalue_DatabaseService',
+            'keyvalue.expirable' => 'getKeyvalue_ExpirableService',
+            'keyvalue.expirable.database' => 'getKeyvalue_Expirable_DatabaseService',
+            'language.default' => 'getLanguage_DefaultService',
+            'language_manager' => 'getLanguageManagerService',
+            'library.discovery' => 'getLibrary_DiscoveryService',
+            'library.discovery.collector' => 'getLibrary_Discovery_CollectorService',
+            'library.discovery.parser' => 'getLibrary_Discovery_ParserService',
+            'link_generator' => 'getLinkGeneratorService',
+            'lock' => 'getLockService',
+            'lock.persistent' => 'getLock_PersistentService',
+            'logger.channel.contact' => 'getLogger_Channel_ContactService',
+            'logger.channel.cron' => 'getLogger_Channel_CronService',
+            'logger.channel.default' => 'getLogger_Channel_DefaultService',
+            'logger.channel.form' => 'getLogger_Channel_FormService',
+            'logger.channel.image' => 'getLogger_Channel_ImageService',
+            'logger.channel.php' => 'getLogger_Channel_PhpService',
+            'logger.dblog' => 'getLogger_DblogService',
+            'logger.factory' => 'getLogger_FactoryService',
+            'logger.log_message_parser' => 'getLogger_LogMessageParserService',
+            'main_content_renderer.ajax' => 'getMainContentRenderer_AjaxService',
+            'main_content_renderer.dialog' => 'getMainContentRenderer_DialogService',
+            'main_content_renderer.html' => 'getMainContentRenderer_HtmlService',
+            'main_content_renderer.modal' => 'getMainContentRenderer_ModalService',
+            'main_content_view_subscriber' => 'getMainContentViewSubscriberService',
+            'maintenance_mode' => 'getMaintenanceModeService',
+            'maintenance_mode_subscriber' => 'getMaintenanceModeSubscriberService',
+            'menu.active_trail' => 'getMenu_ActiveTrailService',
+            'menu.default_tree_manipulators' => 'getMenu_DefaultTreeManipulatorsService',
+            'menu.link_tree' => 'getMenu_LinkTreeService',
+            'menu.parent_form_selector' => 'getMenu_ParentFormSelectorService',
+            'menu.rebuild_subscriber' => 'getMenu_RebuildSubscriberService',
+            'menu.tree_storage' => 'getMenu_TreeStorageService',
+            'menu_link.static.overrides' => 'getMenuLink_Static_OverridesService',
+            'module_handler' => 'getModuleHandlerService',
+            'module_installer' => 'getModuleInstallerService',
+            'node.admin_path.route_subscriber' => 'getNode_AdminPath_RouteSubscriberService',
+            'node.grant_storage' => 'getNode_GrantStorageService',
+            'node.page_cache_request_policy.deny_node_preview' => 'getNode_PageCacheRequestPolicy_DenyNodePreviewService',
+            'node.route_subscriber' => 'getNode_RouteSubscriberService',
+            'node_preview' => 'getNodePreviewService',
+            'page_cache_kill_switch' => 'getPageCacheKillSwitchService',
+            'page_cache_request_policy' => 'getPageCacheRequestPolicyService',
+            'page_cache_response_policy' => 'getPageCacheResponsePolicyService',
+            'paramconverter.configentity_admin' => 'getParamconverter_ConfigentityAdminService',
+            'paramconverter.entity' => 'getParamconverter_EntityService',
+            'paramconverter.menu_link' => 'getParamconverter_MenuLinkService',
+            'paramconverter.views_ui' => 'getParamconverter_ViewsUiService',
+            'paramconverter_manager' => 'getParamconverterManagerService',
+            'paramconverter_subscriber' => 'getParamconverterSubscriberService',
+            'password' => 'getPasswordService',
+            'path.alias_manager' => 'getPath_AliasManagerService',
+            'path.alias_storage' => 'getPath_AliasStorageService',
+            'path.alias_whitelist' => 'getPath_AliasWhitelistService',
+            'path.matcher' => 'getPath_MatcherService',
+            'path.validator' => 'getPath_ValidatorService',
+            'path_processor.files' => 'getPathProcessor_FilesService',
+            'path_processor.image_styles' => 'getPathProcessor_ImageStylesService',
+            'path_processor_alias' => 'getPathProcessorAliasService',
+            'path_processor_decode' => 'getPathProcessorDecodeService',
+            'path_processor_front' => 'getPathProcessorFrontService',
+            'path_processor_manager' => 'getPathProcessorManagerService',
+            'path_subscriber' => 'getPathSubscriberService',
+            'plugin.cache_clearer' => 'getPlugin_CacheClearerService',
+            'plugin.manager.action' => 'getPlugin_Manager_ActionService',
+            'plugin.manager.archiver' => 'getPlugin_Manager_ArchiverService',
+            'plugin.manager.block' => 'getPlugin_Manager_BlockService',
+            'plugin.manager.ckeditor.plugin' => 'getPlugin_Manager_Ckeditor_PluginService',
+            'plugin.manager.condition' => 'getPlugin_Manager_ConditionService',
+            'plugin.manager.display_variant' => 'getPlugin_Manager_DisplayVariantService',
+            'plugin.manager.editor' => 'getPlugin_Manager_EditorService',
+            'plugin.manager.element_info' => 'getPlugin_Manager_ElementInfoService',
+            'plugin.manager.entity_reference.selection' => 'getPlugin_Manager_EntityReference_SelectionService',
+            'plugin.manager.field.field_type' => 'getPlugin_Manager_Field_FieldTypeService',
+            'plugin.manager.field.formatter' => 'getPlugin_Manager_Field_FormatterService',
+            'plugin.manager.field.widget' => 'getPlugin_Manager_Field_WidgetService',
+            'plugin.manager.filter' => 'getPlugin_Manager_FilterService',
+            'plugin.manager.image.effect' => 'getPlugin_Manager_Image_EffectService',
+            'plugin.manager.mail' => 'getPlugin_Manager_MailService',
+            'plugin.manager.menu.contextual_link' => 'getPlugin_Manager_Menu_ContextualLinkService',
+            'plugin.manager.menu.link' => 'getPlugin_Manager_Menu_LinkService',
+            'plugin.manager.menu.local_action' => 'getPlugin_Manager_Menu_LocalActionService',
+            'plugin.manager.menu.local_task' => 'getPlugin_Manager_Menu_LocalTaskService',
+            'plugin.manager.queue_worker' => 'getPlugin_Manager_QueueWorkerService',
+            'plugin.manager.quickedit.editor' => 'getPlugin_Manager_Quickedit_EditorService',
+            'plugin.manager.search' => 'getPlugin_Manager_SearchService',
+            'plugin.manager.tour.tip' => 'getPlugin_Manager_Tour_TipService',
+            'plugin.manager.views.access' => 'getPlugin_Manager_Views_AccessService',
+            'plugin.manager.views.area' => 'getPlugin_Manager_Views_AreaService',
+            'plugin.manager.views.argument' => 'getPlugin_Manager_Views_ArgumentService',
+            'plugin.manager.views.argument_default' => 'getPlugin_Manager_Views_ArgumentDefaultService',
+            'plugin.manager.views.argument_validator' => 'getPlugin_Manager_Views_ArgumentValidatorService',
+            'plugin.manager.views.cache' => 'getPlugin_Manager_Views_CacheService',
+            'plugin.manager.views.display' => 'getPlugin_Manager_Views_DisplayService',
+            'plugin.manager.views.display_extender' => 'getPlugin_Manager_Views_DisplayExtenderService',
+            'plugin.manager.views.exposed_form' => 'getPlugin_Manager_Views_ExposedFormService',
+            'plugin.manager.views.field' => 'getPlugin_Manager_Views_FieldService',
+            'plugin.manager.views.filter' => 'getPlugin_Manager_Views_FilterService',
+            'plugin.manager.views.join' => 'getPlugin_Manager_Views_JoinService',
+            'plugin.manager.views.pager' => 'getPlugin_Manager_Views_PagerService',
+            'plugin.manager.views.query' => 'getPlugin_Manager_Views_QueryService',
+            'plugin.manager.views.relationship' => 'getPlugin_Manager_Views_RelationshipService',
+            'plugin.manager.views.row' => 'getPlugin_Manager_Views_RowService',
+            'plugin.manager.views.sort' => 'getPlugin_Manager_Views_SortService',
+            'plugin.manager.views.style' => 'getPlugin_Manager_Views_StyleService',
+            'plugin.manager.views.wizard' => 'getPlugin_Manager_Views_WizardService',
+            'private_key' => 'getPrivateKeyService',
+            'queue' => 'getQueueService',
+            'queue.database' => 'getQueue_DatabaseService',
+            'quickedit.editor.selector' => 'getQuickedit_Editor_SelectorService',
+            'quickedit.metadata.generator' => 'getQuickedit_Metadata_GeneratorService',
+            'redirect_response_subscriber' => 'getRedirectResponseSubscriberService',
+            'renderer' => 'getRendererService',
+            'replica_database_ignore__subscriber' => 'getReplicaDatabaseIgnoreSubscriberService',
+            'request_close_subscriber' => 'getRequestCloseSubscriberService',
+            'request_stack' => 'getRequestStackService',
+            'resolver_manager.entity' => 'getResolverManager_EntityService',
+            'route_content_controller_subscriber' => 'getRouteContentControllerSubscriberService',
+            'route_enhancer.authentication' => 'getRouteEnhancer_AuthenticationService',
+            'route_enhancer.entity' => 'getRouteEnhancer_EntityService',
+            'route_enhancer.param_conversion' => 'getRouteEnhancer_ParamConversionService',
+            'route_http_method_subscriber' => 'getRouteHttpMethodSubscriberService',
+            'route_processor_csrf' => 'getRouteProcessorCsrfService',
+            'route_processor_current' => 'getRouteProcessorCurrentService',
+            'route_processor_manager' => 'getRouteProcessorManagerService',
+            'route_special_attributes_subscriber' => 'getRouteSpecialAttributesSubscriberService',
+            'route_subscriber.entity' => 'getRouteSubscriber_EntityService',
+            'route_subscriber.module' => 'getRouteSubscriber_ModuleService',
+            'router' => 'getRouterService',
+            'router.admin_context' => 'getRouter_AdminContextService',
+            'router.builder' => 'getRouter_BuilderService',
+            'router.builder_indicator' => 'getRouter_BuilderIndicatorService',
+            'router.dumper' => 'getRouter_DumperService',
+            'router.dynamic' => 'getRouter_DynamicService',
+            'router.matcher' => 'getRouter_MatcherService',
+            'router.matcher.final_matcher' => 'getRouter_Matcher_FinalMatcherService',
+            'router.no_access_checks' => 'getRouter_NoAccessChecksService',
+            'router.path_roots_subscriber' => 'getRouter_PathRootsSubscriberService',
+            'router.rebuild_subscriber' => 'getRouter_RebuildSubscriberService',
+            'router.request_context' => 'getRouter_RequestContextService',
+            'router.route_preloader' => 'getRouter_RoutePreloaderService',
+            'router.route_provider' => 'getRouter_RouteProviderService',
+            'router_listener' => 'getRouterListenerService',
+            'search.search_page_repository' => 'getSearch_SearchPageRepositoryService',
+            'serialization.json' => 'getSerialization_JsonService',
+            'serialization.phpserialize' => 'getSerialization_PhpserializeService',
+            'serialization.yaml' => 'getSerialization_YamlService',
+            'service_container' => 'getServiceContainerService',
+            'session_manager' => 'getSessionManagerService',
+            'session_manager.metadata_bag' => 'getSessionManager_MetadataBagService',
+            'settings' => 'getSettingsService',
+            'state' => 'getStateService',
+            'stream_wrapper.public' => 'getStreamWrapper_PublicService',
+            'stream_wrapper.temporary' => 'getStreamWrapper_TemporaryService',
+            'stream_wrapper_manager' => 'getStreamWrapperManagerService',
+            'string_translation' => 'getStringTranslationService',
+            'string_translator.custom_strings' => 'getStringTranslator_CustomStringsService',
+            'system.admin_path.route_subscriber' => 'getSystem_AdminPath_RouteSubscriberService',
+            'system.automatic_cron' => 'getSystem_AutomaticCronService',
+            'system.breadcrumb.default' => 'getSystem_Breadcrumb_DefaultService',
+            'system.config_subscriber' => 'getSystem_ConfigSubscriberService',
+            'system.manager' => 'getSystem_ManagerService',
+            'taxonomy_term.breadcrumb' => 'getTaxonomyTerm_BreadcrumbService',
+            'theme.initialization' => 'getTheme_InitializationService',
+            'theme.manager' => 'getTheme_ManagerService',
+            'theme.negotiator' => 'getTheme_NegotiatorService',
+            'theme.negotiator.admin_theme' => 'getTheme_Negotiator_AdminThemeService',
+            'theme.negotiator.ajax_base_page' => 'getTheme_Negotiator_AjaxBasePageService',
+            'theme.negotiator.block.admin_demo' => 'getTheme_Negotiator_Block_AdminDemoService',
+            'theme.negotiator.default' => 'getTheme_Negotiator_DefaultService',
+            'theme.negotiator.system.batch' => 'getTheme_Negotiator_System_BatchService',
+            'theme.negotiator.system.db_update' => 'getTheme_Negotiator_System_DbUpdateService',
+            'theme.registry' => 'getTheme_RegistryService',
+            'theme_handler' => 'getThemeHandlerService',
+            'title_resolver' => 'getTitleResolverService',
+            'token' => 'getTokenService',
+            'toolbar.page_cache_request_policy.allow_toolbar_path' => 'getToolbar_PageCacheRequestPolicy_AllowToolbarPathService',
+            'transliteration' => 'getTransliterationService',
+            'twig' => 'getTwigService',
+            'twig.extension' => 'getTwig_ExtensionService',
+            'twig.extension.debug' => 'getTwig_Extension_DebugService',
+            'twig.loader.filesystem' => 'getTwig_Loader_FilesystemService',
+            'typed_data_manager' => 'getTypedDataManagerService',
+            'unrouted_url_assembler' => 'getUnroutedUrlAssemblerService',
+            'update.fetcher' => 'getUpdate_FetcherService',
+            'update.manager' => 'getUpdate_ManagerService',
+            'update.processor' => 'getUpdate_ProcessorService',
+            'url_generator' => 'getUrlGeneratorService',
+            'user.auth' => 'getUser_AuthService',
+            'user.autocomplete' => 'getUser_AutocompleteService',
+            'user.data' => 'getUser_DataService',
+            'user.permissions' => 'getUser_PermissionsService',
+            'user.permissions_hash' => 'getUser_PermissionsHashService',
+            'user.tempstore' => 'getUser_TempstoreService',
+            'user_access_denied_subscriber' => 'getUserAccessDeniedSubscriberService',
+            'user_maintenance_mode_subscriber' => 'getUserMaintenanceModeSubscriberService',
+            'uuid' => 'getUuidService',
+            'validation.constraint' => 'getValidation_ConstraintService',
+            'view_subscriber' => 'getViewSubscriberService',
+            'views.analyzer' => 'getViews_AnalyzerService',
+            'views.executable' => 'getViews_ExecutableService',
+            'views.exposed_form_cache' => 'getViews_ExposedFormCacheService',
+            'views.route_subscriber' => 'getViews_RouteSubscriberService',
+            'views.views_data' => 'getViews_ViewsDataService',
+            'views.views_data_helper' => 'getViews_ViewsDataHelperService',
+        );
+        $this->aliases = array(
+            'element_info' => 'plugin.manager.element_info',
+            'twig.loader' => 'twig.loader.filesystem',
+        );
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function compile()
+    {
+        throw new LogicException('You cannot compile a dumped frozen container.');
+    }
+
+    /**
+     * Gets the 'accept_header_matcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\AcceptHeaderMatcher A Drupal\Core\Routing\AcceptHeaderMatcher instance.
+     */
+    protected function getAcceptHeaderMatcherService()
+    {
+        return $this->services['accept_header_matcher'] = new \Drupal\Core\Routing\AcceptHeaderMatcher($this->get('content_negotiation'));
+    }
+
+    /**
+     * Gets the 'access_arguments_resolver_factory' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\AccessArgumentsResolverFactory A Drupal\Core\Access\AccessArgumentsResolverFactory instance.
+     */
+    protected function getAccessArgumentsResolverFactoryService()
+    {
+        return $this->services['access_arguments_resolver_factory'] = new \Drupal\Core\Access\AccessArgumentsResolverFactory();
+    }
+
+    /**
+     * Gets the 'access_check.contact_personal' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\contact\Access\ContactPageAccess A Drupal\contact\Access\ContactPageAccess instance.
+     */
+    protected function getAccessCheck_ContactPersonalService()
+    {
+        return $this->services['access_check.contact_personal'] = new \Drupal\contact\Access\ContactPageAccess($this->get('config.factory'), $this->get('user.data'));
+    }
+
+    /**
+     * Gets the 'access_check.cron' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\Access\CronAccessCheck A Drupal\system\Access\CronAccessCheck instance.
+     */
+    protected function getAccessCheck_CronService()
+    {
+        return $this->services['access_check.cron'] = new \Drupal\system\Access\CronAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.csrf' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\CsrfAccessCheck A Drupal\Core\Access\CsrfAccessCheck instance.
+     */
+    protected function getAccessCheck_CsrfService()
+    {
+        return $this->services['access_check.csrf'] = new \Drupal\Core\Access\CsrfAccessCheck($this->get('csrf_token'));
+    }
+
+    /**
+     * Gets the 'access_check.custom' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\CustomAccessCheck A Drupal\Core\Access\CustomAccessCheck instance.
+     */
+    protected function getAccessCheck_CustomService()
+    {
+        return $this->services['access_check.custom'] = new \Drupal\Core\Access\CustomAccessCheck($this->get('controller_resolver'), $this->get('access_arguments_resolver_factory'));
+    }
+
+    /**
+     * Gets the 'access_check.db_update' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\Access\DbUpdateAccessCheck A Drupal\system\Access\DbUpdateAccessCheck instance.
+     */
+    protected function getAccessCheck_DbUpdateService()
+    {
+        return $this->services['access_check.db_update'] = new \Drupal\system\Access\DbUpdateAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\DefaultAccessCheck A Drupal\Core\Access\DefaultAccessCheck instance.
+     */
+    protected function getAccessCheck_DefaultService()
+    {
+        return $this->services['access_check.default'] = new \Drupal\Core\Access\DefaultAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.entity' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\EntityAccessCheck A Drupal\Core\Entity\EntityAccessCheck instance.
+     */
+    protected function getAccessCheck_EntityService()
+    {
+        return $this->services['access_check.entity'] = new \Drupal\Core\Entity\EntityAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.entity_create' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\EntityCreateAccessCheck A Drupal\Core\Entity\EntityCreateAccessCheck instance.
+     */
+    protected function getAccessCheck_EntityCreateService()
+    {
+        return $this->services['access_check.entity_create'] = new \Drupal\Core\Entity\EntityCreateAccessCheck($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'access_check.field_ui.form_mode' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\field_ui\Access\FormModeAccessCheck A Drupal\field_ui\Access\FormModeAccessCheck instance.
+     */
+    protected function getAccessCheck_FieldUi_FormModeService()
+    {
+        return $this->services['access_check.field_ui.form_mode'] = new \Drupal\field_ui\Access\FormModeAccessCheck($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'access_check.field_ui.view_mode' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\field_ui\Access\ViewModeAccessCheck A Drupal\field_ui\Access\ViewModeAccessCheck instance.
+     */
+    protected function getAccessCheck_FieldUi_ViewModeService()
+    {
+        return $this->services['access_check.field_ui.view_mode'] = new \Drupal\field_ui\Access\ViewModeAccessCheck($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'access_check.node.add' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\Access\NodeAddAccessCheck A Drupal\node\Access\NodeAddAccessCheck instance.
+     */
+    protected function getAccessCheck_Node_AddService()
+    {
+        return $this->services['access_check.node.add'] = new \Drupal\node\Access\NodeAddAccessCheck($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'access_check.node.preview' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\Access\NodePreviewAccessCheck A Drupal\node\Access\NodePreviewAccessCheck instance.
+     */
+    protected function getAccessCheck_Node_PreviewService()
+    {
+        return $this->services['access_check.node.preview'] = new \Drupal\node\Access\NodePreviewAccessCheck($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'access_check.node.revision' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\Access\NodeRevisionAccessCheck A Drupal\node\Access\NodeRevisionAccessCheck instance.
+     */
+    protected function getAccessCheck_Node_RevisionService()
+    {
+        return $this->services['access_check.node.revision'] = new \Drupal\node\Access\NodeRevisionAccessCheck($this->get('entity.manager'), $this->get('database'));
+    }
+
+    /**
+     * Gets the 'access_check.permission' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Access\PermissionAccessCheck A Drupal\user\Access\PermissionAccessCheck instance.
+     */
+    protected function getAccessCheck_PermissionService()
+    {
+        return $this->services['access_check.permission'] = new \Drupal\user\Access\PermissionAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.quickedit.entity_field' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\quickedit\Access\EditEntityFieldAccessCheck A Drupal\quickedit\Access\EditEntityFieldAccessCheck instance.
+     */
+    protected function getAccessCheck_Quickedit_EntityFieldService()
+    {
+        return $this->services['access_check.quickedit.entity_field'] = new \Drupal\quickedit\Access\EditEntityFieldAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.theme' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\ThemeAccessCheck A Drupal\Core\Theme\ThemeAccessCheck instance.
+     */
+    protected function getAccessCheck_ThemeService()
+    {
+        return $this->services['access_check.theme'] = new \Drupal\Core\Theme\ThemeAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.update.manager_access' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\update\Access\UpdateManagerAccessCheck A Drupal\update\Access\UpdateManagerAccessCheck instance.
+     */
+    protected function getAccessCheck_Update_ManagerAccessService()
+    {
+        return $this->services['access_check.update.manager_access'] = new \Drupal\update\Access\UpdateManagerAccessCheck($this->get('settings'));
+    }
+
+    /**
+     * Gets the 'access_check.user.login_status' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Access\LoginStatusCheck A Drupal\user\Access\LoginStatusCheck instance.
+     */
+    protected function getAccessCheck_User_LoginStatusService()
+    {
+        return $this->services['access_check.user.login_status'] = new \Drupal\user\Access\LoginStatusCheck();
+    }
+
+    /**
+     * Gets the 'access_check.user.register' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Access\RegisterAccessCheck A Drupal\user\Access\RegisterAccessCheck instance.
+     */
+    protected function getAccessCheck_User_RegisterService()
+    {
+        return $this->services['access_check.user.register'] = new \Drupal\user\Access\RegisterAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_check.user.role' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Access\RoleAccessCheck A Drupal\user\Access\RoleAccessCheck instance.
+     */
+    protected function getAccessCheck_User_RoleService()
+    {
+        return $this->services['access_check.user.role'] = new \Drupal\user\Access\RoleAccessCheck();
+    }
+
+    /**
+     * Gets the 'access_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\AccessManager A Drupal\Core\Access\AccessManager instance.
+     */
+    protected function getAccessManagerService()
+    {
+        return $this->services['access_manager'] = new \Drupal\Core\Access\AccessManager($this->get('router.route_provider'), $this->get('paramconverter_manager'), $this->get('access_arguments_resolver_factory'), $this->get('current_user'), $this->get('access_manager.check_provider'));
+    }
+
+    /**
+     * Gets the 'account_switcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Session\AccountSwitcher A Drupal\Core\Session\AccountSwitcher instance.
+     */
+    protected function getAccountSwitcherService()
+    {
+        return $this->services['account_switcher'] = new \Drupal\Core\Session\AccountSwitcher($this->get('current_user'), $this->get('session_manager'));
+    }
+
+    /**
+     * Gets the 'ajax.subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Ajax\AjaxSubscriber A Drupal\Core\Ajax\AjaxSubscriber instance.
+     */
+    protected function getAjax_SubscriberService()
+    {
+        return $this->services['ajax.subscriber'] = new \Drupal\Core\Ajax\AjaxSubscriber();
+    }
+
+    /**
+     * Gets the 'ajax_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\AjaxSubscriber A Drupal\Core\EventSubscriber\AjaxSubscriber instance.
+     */
+    protected function getAjaxSubscriberService()
+    {
+        return $this->services['ajax_subscriber'] = new \Drupal\Core\EventSubscriber\AjaxSubscriber();
+    }
+
+    /**
+     * Gets the 'app.root' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \SplString A SplString instance.
+     */
+    protected function getApp_RootService()
+    {
+        return $this->services['app.root'] = $this->get('app.root.factory')->get();
+    }
+
+    /**
+     * Gets the 'app.root.factory' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\AppRootFactory A Drupal\Core\AppRootFactory instance.
+     */
+    protected function getApp_Root_FactoryService()
+    {
+        return $this->services['app.root.factory'] = new \Drupal\Core\AppRootFactory($this->get('kernel'));
+    }
+
+    /**
+     * Gets the 'asset.css.collection_grouper' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\CssCollectionGrouper A Drupal\Core\Asset\CssCollectionGrouper instance.
+     */
+    protected function getAsset_Css_CollectionGrouperService()
+    {
+        return $this->services['asset.css.collection_grouper'] = new \Drupal\Core\Asset\CssCollectionGrouper();
+    }
+
+    /**
+     * Gets the 'asset.css.collection_optimizer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\CssCollectionOptimizer A Drupal\Core\Asset\CssCollectionOptimizer instance.
+     */
+    protected function getAsset_Css_CollectionOptimizerService()
+    {
+        return $this->services['asset.css.collection_optimizer'] = new \Drupal\Core\Asset\CssCollectionOptimizer($this->get('asset.css.collection_grouper'), $this->get('asset.css.optimizer'), $this->get('asset.css.dumper'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'asset.css.collection_renderer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\CssCollectionRenderer A Drupal\Core\Asset\CssCollectionRenderer instance.
+     */
+    protected function getAsset_Css_CollectionRendererService()
+    {
+        return $this->services['asset.css.collection_renderer'] = new \Drupal\Core\Asset\CssCollectionRenderer($this->get('state'));
+    }
+
+    /**
+     * Gets the 'asset.css.dumper' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\AssetDumper A Drupal\Core\Asset\AssetDumper instance.
+     */
+    protected function getAsset_Css_DumperService()
+    {
+        return $this->services['asset.css.dumper'] = new \Drupal\Core\Asset\AssetDumper();
+    }
+
+    /**
+     * Gets the 'asset.css.optimizer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\CssOptimizer A Drupal\Core\Asset\CssOptimizer instance.
+     */
+    protected function getAsset_Css_OptimizerService()
+    {
+        return $this->services['asset.css.optimizer'] = new \Drupal\Core\Asset\CssOptimizer();
+    }
+
+    /**
+     * Gets the 'asset.js.collection_grouper' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\JsCollectionGrouper A Drupal\Core\Asset\JsCollectionGrouper instance.
+     */
+    protected function getAsset_Js_CollectionGrouperService()
+    {
+        return $this->services['asset.js.collection_grouper'] = new \Drupal\Core\Asset\JsCollectionGrouper();
+    }
+
+    /**
+     * Gets the 'asset.js.collection_optimizer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\JsCollectionOptimizer A Drupal\Core\Asset\JsCollectionOptimizer instance.
+     */
+    protected function getAsset_Js_CollectionOptimizerService()
+    {
+        return $this->services['asset.js.collection_optimizer'] = new \Drupal\Core\Asset\JsCollectionOptimizer($this->get('asset.js.collection_grouper'), $this->get('asset.js.optimizer'), $this->get('asset.js.dumper'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'asset.js.collection_renderer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\JsCollectionRenderer A Drupal\Core\Asset\JsCollectionRenderer instance.
+     */
+    protected function getAsset_Js_CollectionRendererService()
+    {
+        return $this->services['asset.js.collection_renderer'] = new \Drupal\Core\Asset\JsCollectionRenderer($this->get('state'));
+    }
+
+    /**
+     * Gets the 'asset.js.dumper' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\AssetDumper A Drupal\Core\Asset\AssetDumper instance.
+     */
+    protected function getAsset_Js_DumperService()
+    {
+        return $this->services['asset.js.dumper'] = new \Drupal\Core\Asset\AssetDumper();
+    }
+
+    /**
+     * Gets the 'asset.js.optimizer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\JsOptimizer A Drupal\Core\Asset\JsOptimizer instance.
+     */
+    protected function getAsset_Js_OptimizerService()
+    {
+        return $this->services['asset.js.optimizer'] = new \Drupal\Core\Asset\JsOptimizer();
+    }
+
+    /**
+     * Gets the 'authentication' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Authentication\AuthenticationManager A Drupal\Core\Authentication\AuthenticationManager instance.
+     */
+    protected function getAuthenticationService()
+    {
+        $this->services['authentication'] = $instance = new \Drupal\Core\Authentication\AuthenticationManager();
+
+        $instance->addProvider($this->get('authentication.cookie'), 'authentication.cookie', 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'authentication.cookie' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Authentication\Provider\Cookie A Drupal\Core\Authentication\Provider\Cookie instance.
+     */
+    protected function getAuthentication_CookieService()
+    {
+        return $this->services['authentication.cookie'] = new \Drupal\Core\Authentication\Provider\Cookie($this->get('session_manager'));
+    }
+
+    /**
+     * Gets the 'authentication_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\AuthenticationSubscriber A Drupal\Core\EventSubscriber\AuthenticationSubscriber instance.
+     */
+    protected function getAuthenticationSubscriberService()
+    {
+        return $this->services['authentication_subscriber'] = new \Drupal\Core\EventSubscriber\AuthenticationSubscriber($this->get('authentication'));
+    }
+
+    /**
+     * Gets the 'bare_html_page_renderer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\BareHtmlPageRenderer A Drupal\Core\Render\BareHtmlPageRenderer instance.
+     */
+    protected function getBareHtmlPageRendererService()
+    {
+        return $this->services['bare_html_page_renderer'] = new \Drupal\Core\Render\BareHtmlPageRenderer($this->get('renderer'));
+    }
+
+    /**
+     * Gets the 'batch.storage' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Batch\BatchStorage A Drupal\Core\Batch\BatchStorage instance.
+     */
+    protected function getBatch_StorageService()
+    {
+        return $this->services['batch.storage'] = new \Drupal\Core\Batch\BatchStorage($this->get('database'), $this->get('session_manager'), $this->get('csrf_token'));
+    }
+
+    /**
+     * Gets the 'block.current_language_context' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\block\EventSubscriber\CurrentLanguageContext A Drupal\block\EventSubscriber\CurrentLanguageContext instance.
+     */
+    protected function getBlock_CurrentLanguageContextService()
+    {
+        return $this->services['block.current_language_context'] = new \Drupal\block\EventSubscriber\CurrentLanguageContext($this->get('language_manager'));
+    }
+
+    /**
+     * Gets the 'block.current_user_context' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\block\EventSubscriber\CurrentUserContext A Drupal\block\EventSubscriber\CurrentUserContext instance.
+     */
+    protected function getBlock_CurrentUserContextService()
+    {
+        return $this->services['block.current_user_context'] = new \Drupal\block\EventSubscriber\CurrentUserContext($this->get('current_user'), $this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'block.node_route_context' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\block\EventSubscriber\NodeRouteContext A Drupal\block\EventSubscriber\NodeRouteContext instance.
+     */
+    protected function getBlock_NodeRouteContextService()
+    {
+        return $this->services['block.node_route_context'] = new \Drupal\block\EventSubscriber\NodeRouteContext($this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'block.page_display_variant_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\block\EventSubscriber\BlockPageDisplayVariantSubscriber A Drupal\block\EventSubscriber\BlockPageDisplayVariantSubscriber instance.
+     */
+    protected function getBlock_PageDisplayVariantSubscriberService()
+    {
+        return $this->services['block.page_display_variant_subscriber'] = new \Drupal\block\EventSubscriber\BlockPageDisplayVariantSubscriber();
+    }
+
+    /**
+     * Gets the 'block.repository' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\block\BlockRepository A Drupal\block\BlockRepository instance.
+     */
+    protected function getBlock_RepositoryService()
+    {
+        return $this->services['block.repository'] = new \Drupal\block\BlockRepository($this->get('entity.manager'), $this->get('theme.manager'), $this->get('context.handler'));
+    }
+
+    /**
+     * Gets the 'breadcrumb' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Breadcrumb\BreadcrumbManager A Drupal\Core\Breadcrumb\BreadcrumbManager instance.
+     */
+    protected function getBreadcrumbService()
+    {
+        $this->services['breadcrumb'] = $instance = new \Drupal\Core\Breadcrumb\BreadcrumbManager($this->get('module_handler'));
+
+        $instance->addBuilder($this->get('taxonomy_term.breadcrumb'), 1002);
+        $instance->addBuilder($this->get('comment.breadcrumb'), 100);
+        $instance->addBuilder($this->get('system.breadcrumb.default'), 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'breakpoint.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\breakpoint\BreakpointManager A Drupal\breakpoint\BreakpointManager instance.
+     */
+    protected function getBreakpoint_ManagerService()
+    {
+        return $this->services['breakpoint.manager'] = new \Drupal\breakpoint\BreakpointManager($this->get('module_handler'), $this->get('theme_handler'), $this->get('cache.discovery'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'cache.backend.apcu' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\ApcuBackendFactory A Drupal\Core\Cache\ApcuBackendFactory instance.
+     */
+    protected function getCache_Backend_ApcuService()
+    {
+        return $this->services['cache.backend.apcu'] = new \Drupal\Core\Cache\ApcuBackendFactory($this->get('app.root'), $this->get('cache_tags.invalidator.checksum'));
+    }
+
+    /**
+     * Gets the 'cache.backend.chainedfast' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\ChainedFastBackendFactory A Drupal\Core\Cache\ChainedFastBackendFactory instance.
+     */
+    protected function getCache_Backend_ChainedfastService()
+    {
+        $this->services['cache.backend.chainedfast'] = $instance = new \Drupal\Core\Cache\ChainedFastBackendFactory($this->get('settings'));
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'cache.backend.database' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\DatabaseBackendFactory A Drupal\Core\Cache\DatabaseBackendFactory instance.
+     */
+    protected function getCache_Backend_DatabaseService()
+    {
+        return $this->services['cache.backend.database'] = new \Drupal\Core\Cache\DatabaseBackendFactory($this->get('database'), $this->get('cache_tags.invalidator.checksum'));
+    }
+
+    /**
+     * Gets the 'cache.backend.php' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\PhpBackendFactory A Drupal\Core\Cache\PhpBackendFactory instance.
+     */
+    protected function getCache_Backend_PhpService()
+    {
+        return $this->services['cache.backend.php'] = new \Drupal\Core\Cache\PhpBackendFactory($this->get('cache_tags.invalidator.checksum'));
+    }
+
+    /**
+     * Gets the 'cache.bootstrap' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_BootstrapService()
+    {
+        return $this->services['cache.bootstrap'] = $this->get('cache_factory')->get('bootstrap');
+    }
+
+    /**
+     * Gets the 'cache.config' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_ConfigService()
+    {
+        return $this->services['cache.config'] = $this->get('cache_factory')->get('config');
+    }
+
+    /**
+     * Gets the 'cache.data' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_DataService()
+    {
+        return $this->services['cache.data'] = $this->get('cache_factory')->get('data');
+    }
+
+    /**
+     * Gets the 'cache.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_DefaultService()
+    {
+        return $this->services['cache.default'] = $this->get('cache_factory')->get('default');
+    }
+
+    /**
+     * Gets the 'cache.discovery' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_DiscoveryService()
+    {
+        return $this->services['cache.discovery'] = $this->get('cache_factory')->get('discovery');
+    }
+
+    /**
+     * Gets the 'cache.entity' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_EntityService()
+    {
+        return $this->services['cache.entity'] = $this->get('cache_factory')->get('entity');
+    }
+
+    /**
+     * Gets the 'cache.menu' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_MenuService()
+    {
+        return $this->services['cache.menu'] = $this->get('cache_factory')->get('menu');
+    }
+
+    /**
+     * Gets the 'cache.render' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_RenderService()
+    {
+        return $this->services['cache.render'] = $this->get('cache_factory')->get('render');
+    }
+
+    /**
+     * Gets the 'cache.toolbar' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheBackendInterface A Drupal\Core\Cache\CacheBackendInterface instance.
+     */
+    protected function getCache_ToolbarService()
+    {
+        return $this->services['cache.toolbar'] = $this->get('cache_factory')->get('toolbar');
+    }
+
+    /**
+     * Gets the 'cache_context.language' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\LanguageCacheContext A Drupal\Core\Cache\LanguageCacheContext instance.
+     */
+    protected function getCacheContext_LanguageService()
+    {
+        return $this->services['cache_context.language'] = new \Drupal\Core\Cache\LanguageCacheContext($this->get('language_manager'));
+    }
+
+    /**
+     * Gets the 'cache_context.node_view_grants' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\Cache\NodeAccessViewGrantsCacheContext A Drupal\node\Cache\NodeAccessViewGrantsCacheContext instance.
+     */
+    protected function getCacheContext_NodeViewGrantsService()
+    {
+        return $this->services['cache_context.node_view_grants'] = new \Drupal\node\Cache\NodeAccessViewGrantsCacheContext($this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'cache_context.theme' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\ThemeCacheContext A Drupal\Core\Cache\ThemeCacheContext instance.
+     */
+    protected function getCacheContext_ThemeService()
+    {
+        return $this->services['cache_context.theme'] = new \Drupal\Core\Cache\ThemeCacheContext($this->get('theme.manager'));
+    }
+
+    /**
+     * Gets the 'cache_context.timezone' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\TimeZoneCacheContext A Drupal\Core\Cache\TimeZoneCacheContext instance.
+     */
+    protected function getCacheContext_TimezoneService()
+    {
+        return $this->services['cache_context.timezone'] = new \Drupal\Core\Cache\TimeZoneCacheContext();
+    }
+
+    /**
+     * Gets the 'cache_context.url' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\UrlCacheContext A Drupal\Core\Cache\UrlCacheContext instance.
+     */
+    protected function getCacheContext_UrlService()
+    {
+        return $this->services['cache_context.url'] = new \Drupal\Core\Cache\UrlCacheContext($this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'cache_context.user' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Cache\UserCacheContext A Drupal\user\Cache\UserCacheContext instance.
+     */
+    protected function getCacheContext_UserService()
+    {
+        return $this->services['cache_context.user'] = new \Drupal\user\Cache\UserCacheContext($this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'cache_context.user.roles' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Cache\UserRolesCacheContext A Drupal\user\Cache\UserRolesCacheContext instance.
+     */
+    protected function getCacheContext_User_RolesService()
+    {
+        return $this->services['cache_context.user.roles'] = new \Drupal\user\Cache\UserRolesCacheContext($this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'cache_contexts' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheContexts A Drupal\Core\Cache\CacheContexts instance.
+     */
+    protected function getCacheContextsService()
+    {
+        return $this->services['cache_contexts'] = new \Drupal\Core\Cache\CacheContexts($this, array(0 => 'cache_context.url', 1 => 'cache_context.language', 2 => 'cache_context.theme', 3 => 'cache_context.timezone', 4 => 'cache_context.node_view_grants', 5 => 'cache_context.user', 6 => 'cache_context.user.roles'));
+    }
+
+    /**
+     * Gets the 'cache_factory' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheFactory A Drupal\Core\Cache\CacheFactory instance.
+     */
+    protected function getCacheFactoryService()
+    {
+        $this->services['cache_factory'] = $instance = new \Drupal\Core\Cache\CacheFactory($this->get('settings'), array('bootstrap' => 'cache.backend.chainedfast', 'config' => 'cache.backend.chainedfast', 'discovery' => 'cache.backend.chainedfast'));
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'cache_tags.invalidator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\CacheTagsInvalidator A Drupal\Core\Cache\CacheTagsInvalidator instance.
+     */
+    protected function getCacheTags_InvalidatorService()
+    {
+        $this->services['cache_tags.invalidator'] = $instance = new \Drupal\Core\Cache\CacheTagsInvalidator();
+
+        $instance->setContainer($this);
+        $instance->setContainer($this);
+        $instance->addInvalidator($this->get('cache_tags.invalidator.checksum'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'cache_tags.invalidator.checksum' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cache\DatabaseCacheTagsChecksum A Drupal\Core\Cache\DatabaseCacheTagsChecksum instance.
+     */
+    protected function getCacheTags_Invalidator_ChecksumService()
+    {
+        return $this->services['cache_tags.invalidator.checksum'] = new \Drupal\Core\Cache\DatabaseCacheTagsChecksum($this->get('database'));
+    }
+
+    /**
+     * Gets the 'class_loader' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @throws RuntimeException always since this service is expected to be injected dynamically
+     */
+    protected function getClassLoaderService()
+    {
+        throw new RuntimeException('You have requested a synthetic service ("class_loader"). The DIC does not know how to construct this service.');
+    }
+
+    /**
+     * Gets the 'class_resolver' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\DependencyInjection\ClassResolver A Drupal\Core\DependencyInjection\ClassResolver instance.
+     */
+    protected function getClassResolverService()
+    {
+        $this->services['class_resolver'] = $instance = new \Drupal\Core\DependencyInjection\ClassResolver();
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'comment.breadcrumb' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\comment\CommentBreadcrumbBuilder A Drupal\comment\CommentBreadcrumbBuilder instance.
+     */
+    protected function getComment_BreadcrumbService()
+    {
+        return $this->services['comment.breadcrumb'] = new \Drupal\comment\CommentBreadcrumbBuilder();
+    }
+
+    /**
+     * Gets the 'comment.link_builder' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\comment\CommentLinkBuilder A Drupal\comment\CommentLinkBuilder instance.
+     */
+    protected function getComment_LinkBuilderService()
+    {
+        return $this->services['comment.link_builder'] = new \Drupal\comment\CommentLinkBuilder($this->get('current_user'), $this->get('comment.manager'), $this->get('module_handler'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'comment.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\comment\CommentManager A Drupal\comment\CommentManager instance.
+     */
+    protected function getComment_ManagerService()
+    {
+        return $this->services['comment.manager'] = new \Drupal\comment\CommentManager($this->get('entity.manager'), $this->get('entity.query'), $this->get('config.factory'), $this->get('string_translation'), $this->get('url_generator'), $this->get('module_handler'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'comment.post_render_cache' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\comment\CommentPostRenderCache A Drupal\comment\CommentPostRenderCache instance.
+     */
+    protected function getComment_PostRenderCacheService()
+    {
+        return $this->services['comment.post_render_cache'] = new \Drupal\comment\CommentPostRenderCache($this->get('entity.manager'), $this->get('entity.form_builder'));
+    }
+
+    /**
+     * Gets the 'comment.statistics' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\comment\CommentStatistics A Drupal\comment\CommentStatistics instance.
+     */
+    protected function getComment_StatisticsService()
+    {
+        return $this->services['comment.statistics'] = new \Drupal\comment\CommentStatistics($this->get('database'), $this->get('current_user'), $this->get('entity.manager'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'config.config_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\config\ConfigSubscriber A Drupal\config\ConfigSubscriber instance.
+     */
+    protected function getConfig_ConfigSubscriberService()
+    {
+        return $this->services['config.config_subscriber'] = new \Drupal\config\ConfigSubscriber();
+    }
+
+    /**
+     * Gets the 'config.factory' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\ConfigFactory A Drupal\Core\Config\ConfigFactory instance.
+     */
+    protected function getConfig_FactoryService()
+    {
+        return $this->services['config.factory'] = new \Drupal\Core\Config\ConfigFactory($this->get('config.storage'), $this->get('event_dispatcher'), $this->get('config.typed'));
+    }
+
+    /**
+     * Gets the 'config.installer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\ConfigInstaller A Drupal\Core\Config\ConfigInstaller instance.
+     */
+    protected function getConfig_InstallerService()
+    {
+        return $this->services['config.installer'] = new \Drupal\Core\Config\ConfigInstaller($this->get('config.factory'), $this->get('config.storage'), $this->get('config.typed'), $this->get('config.manager'), $this->get('event_dispatcher'));
+    }
+
+    /**
+     * Gets the 'config.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\ConfigManager A Drupal\Core\Config\ConfigManager instance.
+     */
+    protected function getConfig_ManagerService()
+    {
+        return $this->services['config.manager'] = new \Drupal\Core\Config\ConfigManager($this->get('entity.manager'), $this->get('config.factory'), $this->get('config.typed'), $this->get('string_translation'), $this->get('config.storage'), $this->get('event_dispatcher'));
+    }
+
+    /**
+     * Gets the 'config.storage' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\CachedStorage A Drupal\Core\Config\CachedStorage instance.
+     */
+    protected function getConfig_StorageService()
+    {
+        return $this->services['config.storage'] = new \Drupal\Core\Config\CachedStorage(new \Drupal\Core\Config\DatabaseStorage($this->get('database'), 'config'), $this->get('cache.config'));
+    }
+
+    /**
+     * Gets the 'config.storage.installer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\InstallStorage A Drupal\Core\Config\InstallStorage instance.
+     */
+    protected function getConfig_Storage_InstallerService()
+    {
+        return $this->services['config.storage.installer'] = new \Drupal\Core\Config\InstallStorage();
+    }
+
+    /**
+     * Gets the 'config.storage.schema' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\ExtensionInstallStorage A Drupal\Core\Config\ExtensionInstallStorage instance.
+     */
+    protected function getConfig_Storage_SchemaService()
+    {
+        return $this->services['config.storage.schema'] = new \Drupal\Core\Config\ExtensionInstallStorage($this->get('config.storage'), 'config/schema');
+    }
+
+    /**
+     * Gets the 'config.storage.snapshot' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\DatabaseStorage A Drupal\Core\Config\DatabaseStorage instance.
+     */
+    protected function getConfig_Storage_SnapshotService()
+    {
+        return $this->services['config.storage.snapshot'] = new \Drupal\Core\Config\DatabaseStorage($this->get('database'), 'config_snapshot');
+    }
+
+    /**
+     * Gets the 'config.storage.staging' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\FileStorage A Drupal\Core\Config\FileStorage instance.
+     */
+    protected function getConfig_Storage_StagingService()
+    {
+        return $this->services['config.storage.staging'] = \Drupal\Core\Config\FileStorageFactory::getStaging();
+    }
+
+    /**
+     * Gets the 'config.typed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\TypedConfigManager A Drupal\Core\Config\TypedConfigManager instance.
+     */
+    protected function getConfig_TypedService()
+    {
+        return $this->services['config.typed'] = new \Drupal\Core\Config\TypedConfigManager($this->get('config.storage'), $this->get('config.storage.schema'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'config_import_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ConfigImportSubscriber A Drupal\Core\EventSubscriber\ConfigImportSubscriber instance.
+     */
+    protected function getConfigImportSubscriberService()
+    {
+        return $this->services['config_import_subscriber'] = new \Drupal\Core\EventSubscriber\ConfigImportSubscriber();
+    }
+
+    /**
+     * Gets the 'config_snapshot_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber A Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber instance.
+     */
+    protected function getConfigSnapshotSubscriberService()
+    {
+        return $this->services['config_snapshot_subscriber'] = new \Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber($this->get('config.manager'), $this->get('config.storage'), $this->get('config.storage.snapshot'));
+    }
+
+    /**
+     * Gets the 'contact.mail_handler' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\contact\MailHandler A Drupal\contact\MailHandler instance.
+     */
+    protected function getContact_MailHandlerService()
+    {
+        return $this->services['contact.mail_handler'] = new \Drupal\contact\MailHandler($this->get('plugin.manager.mail'), $this->get('language_manager'), $this->get('logger.channel.contact'), $this->get('string_translation'), $this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'container.namespaces' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \ArrayObject A ArrayObject instance.
+     */
+    protected function getContainer_NamespacesService()
+    {
+        return $this->services['container.namespaces'] = new \ArrayObject(array('Drupal\\block' => '/usr/share/nginx/www/drupal/core/modules/block/src', 'Drupal\\block_content' => '/usr/share/nginx/www/drupal/core/modules/block_content/src', 'Drupal\\breakpoint' => '/usr/share/nginx/www/drupal/core/modules/breakpoint/src', 'Drupal\\ckeditor' => '/usr/share/nginx/www/drupal/core/modules/ckeditor/src', 'Drupal\\color' => '/usr/share/nginx/www/drupal/core/modules/color/src', 'Drupal\\comment' => '/usr/share/nginx/www/drupal/core/modules/comment/src', 'Drupal\\config' => '/usr/share/nginx/www/drupal/core/modules/config/src', 'Drupal\\contact' => '/usr/share/nginx/www/drupal/core/modules/contact/src', 'Drupal\\contextual' => '/usr/share/nginx/www/drupal/core/modules/contextual/src', 'Drupal\\datetime' => '/usr/share/nginx/www/drupal/core/modules/datetime/src', 'Drupal\\dblog' => '/usr/share/nginx/www/drupal/core/modules/dblog/src', 'Drupal\\editor' => '/usr/share/nginx/www/drupal/core/modules/editor/src', 'Drupal\\entity_reference' => '/usr/share/nginx/www/drupal/core/modules/entity_reference/src', 'Drupal\\field' => '/usr/share/nginx/www/drupal/core/modules/field/src', 'Drupal\\field_ui' => '/usr/share/nginx/www/drupal/core/modules/field_ui/src', 'Drupal\\file' => '/usr/share/nginx/www/drupal/core/modules/file/src', 'Drupal\\filter' => '/usr/share/nginx/www/drupal/core/modules/filter/src', 'Drupal\\help' => '/usr/share/nginx/www/drupal/core/modules/help/src', 'Drupal\\history' => '/usr/share/nginx/www/drupal/core/modules/history/src', 'Drupal\\image' => '/usr/share/nginx/www/drupal/core/modules/image/src', 'Drupal\\menu_link_content' => '/usr/share/nginx/www/drupal/core/modules/menu_link_content/src', 'Drupal\\menu_ui' => '/usr/share/nginx/www/drupal/core/modules/menu_ui/src', 'Drupal\\node' => '/usr/share/nginx/www/drupal/core/modules/node/src', 'Drupal\\options' => '/usr/share/nginx/www/drupal/core/modules/options/src', 'Drupal\\path' => '/usr/share/nginx/www/drupal/core/modules/path/src', 'Drupal\\quickedit' => '/usr/share/nginx/www/drupal/core/modules/quickedit/src', 'Drupal\\rdf' => '/usr/share/nginx/www/drupal/core/modules/rdf/src', 'Drupal\\search' => '/usr/share/nginx/www/drupal/core/modules/search/src', 'Drupal\\shortcut' => '/usr/share/nginx/www/drupal/core/modules/shortcut/src', 'Drupal\\standard' => '/usr/share/nginx/www/drupal/core/profiles/standard/src', 'Drupal\\system' => '/usr/share/nginx/www/drupal/core/modules/system/src', 'Drupal\\taxonomy' => '/usr/share/nginx/www/drupal/core/modules/taxonomy/src', 'Drupal\\text' => '/usr/share/nginx/www/drupal/core/modules/text/src', 'Drupal\\toolbar' => '/usr/share/nginx/www/drupal/core/modules/toolbar/src', 'Drupal\\tour' => '/usr/share/nginx/www/drupal/core/modules/tour/src', 'Drupal\\update' => '/usr/share/nginx/www/drupal/core/modules/update/src', 'Drupal\\user' => '/usr/share/nginx/www/drupal/core/modules/user/src', 'Drupal\\views_ui' => '/usr/share/nginx/www/drupal/core/modules/views_ui/src', 'Drupal\\views' => '/usr/share/nginx/www/drupal/core/modules/views/src', 'Drupal\\Core\\Render' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Render', 'Drupal\\Core\\TypedData' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/TypedData', 'Drupal\\Core\\Field' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Field', 'Drupal\\Core\\Datetime' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Datetime', 'Drupal\\Core\\Mail' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Mail', 'Drupal\\Core\\Validation' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Validation', 'Drupal\\Core\\Config' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Config', 'Drupal\\Core\\Block' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Block', 'Drupal\\Core\\Entity' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Core/Entity', 'Drupal\\Component\\Annotation' => '/usr/share/nginx/www/drupal/core/lib/Drupal/Component/Annotation'));
+    }
+
+    /**
+     * Gets the 'content_negotiation' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ContentNegotiation A Drupal\Core\ContentNegotiation instance.
+     */
+    protected function getContentNegotiationService()
+    {
+        return $this->services['content_negotiation'] = new \Drupal\Core\ContentNegotiation();
+    }
+
+    /**
+     * Gets the 'content_type_header_matcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\ContentTypeHeaderMatcher A Drupal\Core\Routing\ContentTypeHeaderMatcher instance.
+     */
+    protected function getContentTypeHeaderMatcherService()
+    {
+        return $this->services['content_type_header_matcher'] = new \Drupal\Core\Routing\ContentTypeHeaderMatcher();
+    }
+
+    /**
+     * Gets the 'content_uninstall_validator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\ContentUninstallValidator A Drupal\Core\Entity\ContentUninstallValidator instance.
+     */
+    protected function getContentUninstallValidatorService()
+    {
+        return $this->services['content_uninstall_validator'] = new \Drupal\Core\Entity\ContentUninstallValidator($this->get('entity.manager'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'context.handler' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Plugin\Context\ContextHandler A Drupal\Core\Plugin\Context\ContextHandler instance.
+     */
+    protected function getContext_HandlerService()
+    {
+        return $this->services['context.handler'] = new \Drupal\Core\Plugin\Context\ContextHandler($this->get('typed_data_manager'));
+    }
+
+    /**
+     * Gets the 'controller.entity_form' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\HtmlEntityFormController A Drupal\Core\Entity\HtmlEntityFormController instance.
+     */
+    protected function getController_EntityFormService()
+    {
+        return $this->services['controller.entity_form'] = new \Drupal\Core\Entity\HtmlEntityFormController($this->get('controller_resolver'), $this->get('form_builder'), $this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'controller.form' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Controller\HtmlFormController A Drupal\Core\Controller\HtmlFormController instance.
+     */
+    protected function getController_FormService()
+    {
+        return $this->services['controller.form'] = new \Drupal\Core\Controller\HtmlFormController($this->get('controller_resolver'), $this->get('form_builder'), $this->get('class_resolver'));
+    }
+
+    /**
+     * Gets the 'controller_resolver' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Controller\ControllerResolver A Drupal\Core\Controller\ControllerResolver instance.
+     */
+    protected function getControllerResolverService()
+    {
+        return $this->services['controller_resolver'] = new \Drupal\Core\Controller\ControllerResolver($this->get('class_resolver'), $this->get('logger.channel.default'));
+    }
+
+    /**
+     * Gets the 'country_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Locale\CountryManager A Drupal\Core\Locale\CountryManager instance.
+     */
+    protected function getCountryManagerService()
+    {
+        return $this->services['country_manager'] = new \Drupal\Core\Locale\CountryManager($this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'cron' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Cron A Drupal\Core\Cron instance.
+     */
+    protected function getCronService()
+    {
+        return $this->services['cron'] = new \Drupal\Core\Cron($this->get('module_handler'), $this->get('lock'), $this->get('queue'), $this->get('state'), $this->get('account_switcher'), $this->get('logger.channel.cron'), $this->get('plugin.manager.queue_worker'));
+    }
+
+    /**
+     * Gets the 'csrf_token' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\CsrfTokenGenerator A Drupal\Core\Access\CsrfTokenGenerator instance.
+     */
+    protected function getCsrfTokenService()
+    {
+        return $this->services['csrf_token'] = new \Drupal\Core\Access\CsrfTokenGenerator($this->get('private_key'), $this->get('session_manager.metadata_bag'));
+    }
+
+    /**
+     * Gets the 'current_route_match' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\CurrentRouteMatch A Drupal\Core\Routing\CurrentRouteMatch instance.
+     */
+    protected function getCurrentRouteMatchService()
+    {
+        return $this->services['current_route_match'] = new \Drupal\Core\Routing\CurrentRouteMatch($this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'current_user' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Session\AccountProxy A Drupal\Core\Session\AccountProxy instance.
+     */
+    protected function getCurrentUserService()
+    {
+        return $this->services['current_user'] = new \Drupal\Core\Session\AccountProxy($this->get('authentication'), $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'database' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Database\Connection A Drupal\Core\Database\Connection instance.
+     */
+    protected function getDatabaseService()
+    {
+        return $this->services['database'] = \Drupal\Core\Database\Database::getConnection('default');
+    }
+
+    /**
+     * Gets the 'database.replica' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Database\Connection A Drupal\Core\Database\Connection instance.
+     */
+    protected function getDatabase_ReplicaService()
+    {
+        return $this->services['database.replica'] = \Drupal\Core\Database\Database::getConnection('replica');
+    }
+
+    /**
+     * Gets the 'date.formatter' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Datetime\DateFormatter A Drupal\Core\Datetime\DateFormatter instance.
+     */
+    protected function getDate_FormatterService()
+    {
+        return $this->services['date.formatter'] = new \Drupal\Core\Datetime\DateFormatter($this->get('entity.manager'), $this->get('language_manager'), $this->get('string_translation'), $this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'diff.formatter' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Diff\DiffFormatter A Drupal\Core\Diff\DiffFormatter instance.
+     */
+    protected function getDiff_FormatterService()
+    {
+        return $this->services['diff.formatter'] = new \Drupal\Core\Diff\DiffFormatter($this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'element.editor' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\editor\Element A Drupal\editor\Element instance.
+     */
+    protected function getElement_EditorService()
+    {
+        return $this->services['element.editor'] = new \Drupal\editor\Element($this->get('plugin.manager.editor'));
+    }
+
+    /**
+     * Gets the 'entity.bundle_config_import_validator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\Event\BundleConfigImportValidate A Drupal\Core\Entity\Event\BundleConfigImportValidate instance.
+     */
+    protected function getEntity_BundleConfigImportValidatorService()
+    {
+        return $this->services['entity.bundle_config_import_validator'] = new \Drupal\Core\Entity\Event\BundleConfigImportValidate($this->get('config.manager'), $this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'entity.definition_update_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\EntityDefinitionUpdateManager A Drupal\Core\Entity\EntityDefinitionUpdateManager instance.
+     */
+    protected function getEntity_DefinitionUpdateManagerService()
+    {
+        return $this->services['entity.definition_update_manager'] = new \Drupal\Core\Entity\EntityDefinitionUpdateManager($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'entity.definitions.installed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\KeyValueStore\KeyValueStoreInterface A Drupal\Core\KeyValueStore\KeyValueStoreInterface instance.
+     */
+    protected function getEntity_Definitions_InstalledService()
+    {
+        return $this->services['entity.definitions.installed'] = $this->get('keyvalue')->get('entity.definitions.installed');
+    }
+
+    /**
+     * Gets the 'entity.form_builder' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\EntityFormBuilder A Drupal\Core\Entity\EntityFormBuilder instance.
+     */
+    protected function getEntity_FormBuilderService()
+    {
+        return $this->services['entity.form_builder'] = new \Drupal\Core\Entity\EntityFormBuilder($this->get('entity.manager'), $this->get('form_builder'));
+    }
+
+    /**
+     * Gets the 'entity.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\EntityManager A Drupal\Core\Entity\EntityManager instance.
+     */
+    protected function getEntity_ManagerService()
+    {
+        $this->services['entity.manager'] = $instance = new \Drupal\Core\Entity\EntityManager($this->get('container.namespaces'), $this->get('module_handler'), $this->get('cache.discovery'), $this->get('language_manager'), $this->get('string_translation'), $this->get('class_resolver'), $this->get('typed_data_manager'), $this->get('entity.definitions.installed'), $this->get('event_dispatcher'));
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'entity.query' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\Query\QueryFactory A Drupal\Core\Entity\Query\QueryFactory instance.
+     */
+    protected function getEntity_QueryService()
+    {
+        $this->services['entity.query'] = $instance = new \Drupal\Core\Entity\Query\QueryFactory($this->get('entity.manager'));
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'entity.query.config' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Config\Entity\Query\QueryFactory A Drupal\Core\Config\Entity\Query\QueryFactory instance.
+     */
+    protected function getEntity_Query_ConfigService()
+    {
+        return $this->services['entity.query.config'] = new \Drupal\Core\Config\Entity\Query\QueryFactory($this->get('config.storage'), $this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'entity.query.keyvalue' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\KeyValueStore\Query\QueryFactory A Drupal\Core\Entity\KeyValueStore\Query\QueryFactory instance.
+     */
+    protected function getEntity_Query_KeyvalueService()
+    {
+        return $this->services['entity.query.keyvalue'] = new \Drupal\Core\Entity\KeyValueStore\Query\QueryFactory($this->get('keyvalue'));
+    }
+
+    /**
+     * Gets the 'entity.query.sql' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\Query\Sql\QueryFactory A Drupal\Core\Entity\Query\Sql\QueryFactory instance.
+     */
+    protected function getEntity_Query_SqlService()
+    {
+        return $this->services['entity.query.sql'] = new \Drupal\Core\Entity\Query\Sql\QueryFactory($this->get('database'));
+    }
+
+    /**
+     * Gets the 'entity_reference.autocomplete' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\entity_reference\EntityReferenceAutocomplete A Drupal\entity_reference\EntityReferenceAutocomplete instance.
+     */
+    protected function getEntityReference_AutocompleteService()
+    {
+        return $this->services['entity_reference.autocomplete'] = new \Drupal\entity_reference\EntityReferenceAutocomplete($this->get('entity.manager'), $this->get('plugin.manager.entity_reference.selection'));
+    }
+
+    /**
+     * Gets the 'entity_route_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber A Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber instance.
+     */
+    protected function getEntityRouteSubscriberService()
+    {
+        return $this->services['entity_route_subscriber'] = new \Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'event_dispatcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher A Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher instance.
+     */
+    protected function getEventDispatcherService()
+    {
+        return $this->services['event_dispatcher'] = new \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher($this, array('config.save' => array(255 => array(0 => array('service' => array(0 => 'config.factory', 1 => 'onConfigSave')))), 'config.delete' => array(255 => array(0 => array('service' => array(0 => 'config.factory', 1 => 'onConfigDelete')))), 'routing.route_dynamic' => array(0 => array(0 => array('service' => array(0 => 'entity_route_subscriber', 1 => 'onDynamicRouteEvent')))), 'config.importer.validate' => array(20 => array(0 => array('service' => array(0 => 'entity.bundle_config_import_validator', 1 => 'onConfigImporterValidate')), 1 => array('service' => array(0 => 'config_import_subscriber', 1 => 'onConfigImporterValidate')), 2 => array('service' => array(0 => 'config.config_subscriber', 1 => 'onConfigImporterValidate')), 3 => array('service' => array(0 => 'system.config_subscriber', 1 => 'onConfigImporterValidate')))), 'routing.route_finished' => array(200 => array(0 => array('service' => array(0 => 'menu.rebuild_subscriber', 1 => 'onRouterRebuild'))), 0 => array(0 => array('service' => array(0 => 'router.route_provider', 1 => 'reset')), 1 => array('service' => array(0 => 'router.route_preloader', 1 => 'onFinishedRoutes')), 2 => array('service' => array(0 => 'router.path_roots_subscriber', 1 => 'onRouteFinished')), 3 => array('service' => array(0 => 'views.route_subscriber', 1 => 'routeRebuildFinished')))), 'routing.route_alter' => array(5000 => array(0 => array('service' => array(0 => 'route_http_method_subscriber', 1 => 'onRouteBuilding'))), 0 => array(0 => array('service' => array(0 => 'route_subscriber.module', 1 => 'onAlterRoutes')), 1 => array('service' => array(0 => 'route_special_attributes_subscriber', 1 => 'onAlterRoutes')), 2 => array('service' => array(0 => 'node.route_subscriber', 1 => 'onAlterRoutes')), 3 => array('service' => array(0 => 'node.admin_path.route_subscriber', 1 => 'onAlterRoutes'))), -100 => array(0 => array('service' => array(0 => 'field_ui.subscriber', 1 => 'onAlterRoutes'))), -150 => array(0 => array('service' => array(0 => 'route_subscriber.entity', 1 => 'onRoutingRouteAlterSetType'))), -175 => array(0 => array('service' => array(0 => 'views.route_subscriber', 1 => 'onAlterRoutes'))), -200 => array(0 => array('service' => array(0 => 'system.admin_path.route_subscriber', 1 => 'onAlterRoutes'))), -220 => array(0 => array('service' => array(0 => 'paramconverter_subscriber', 1 => 'onRoutingRouteAlterSetParameterConverters'))), -1024 => array(0 => array('service' => array(0 => 'router.route_preloader', 1 => 'onAlterRoutes')), 1 => array('service' => array(0 => 'router.path_roots_subscriber', 1 => 'onRouteAlter')))), 'kernel.request' => array(200 => array(0 => array('service' => array(0 => 'path_subscriber', 1 => 'onKernelRequestConvertPath'))), 50 => array(0 => array('service' => array(0 => 'ajax_subscriber', 1 => 'onRequest')), 1 => array('service' => array(0 => 'ajax.subscriber', 1 => 'onKernelRequest'))), 32 => array(0 => array('service' => array(0 => 'router_listener', 1 => 'onKernelRequest'))), 31 => array(0 => array('service' => array(0 => 'route_content_controller_subscriber', 1 => 'onRequestDeriveFormat')), 1 => array('service' => array(0 => 'user_maintenance_mode_subscriber', 1 => 'onKernelRequestMaintenance'))), 30 => array(0 => array('service' => array(0 => 'maintenance_mode_subscriber', 1 => 'onKernelRequestMaintenance'))), 29 => array(0 => array('service' => array(0 => 'route_content_controller_subscriber', 1 => 'onRequestDeriveFormWrapper'))), 0 => array(0 => array('service' => array(0 => 'router.route_preloader', 1 => 'onRequest')), 1 => array('service' => array(0 => 'replica_database_ignore__subscriber', 1 => 'checkReplicaServer')))), 'kernel.terminate' => array(200 => array(0 => array('service' => array(0 => 'router.rebuild_subscriber', 1 => 'onKernelTerminate')), 1 => array('service' => array(0 => 'path_subscriber', 1 => 'onKernelTerminate'))), 100 => array(0 => array('service' => array(0 => 'request_close_subscriber', 1 => 'onTerminate')), 1 => array('service' => array(0 => 'kernel_destruct_subscriber', 1 => 'onKernelTerminate')), 2 => array('service' => array(0 => 'system.automatic_cron', 1 => 'onTerminate')))), 'kernel.response' => array(128 => array(0 => array('service' => array(0 => 'exception.enforced_form_response', 1 => 'onKernelResponse'))), 0 => array(0 => array('service' => array(0 => 'finish_response_subscriber', 1 => 'onRespond')), 1 => array('service' => array(0 => 'redirect_response_subscriber', 1 => 'checkRedirectUrl')), 2 => array('service' => array(0 => 'authentication_subscriber', 1 => 'onRespond'))), -100 => array(0 => array('service' => array(0 => 'ajax_subscriber', 1 => 'onResponse')))), 'kernel.exception' => array(200 => array(0 => array('service' => array(0 => 'exception.fast_404_html', 1 => 'onException'))), 128 => array(0 => array('service' => array(0 => 'exception.enforced_form_response', 1 => 'onKernelException'))), 75 => array(0 => array('service' => array(0 => 'route_enhancer.param_conversion', 1 => 'onException')), 1 => array('service' => array(0 => 'authentication_subscriber', 1 => 'onException')), 2 => array('service' => array(0 => 'user_access_denied_subscriber', 1 => 'onException'))), 50 => array(0 => array('service' => array(0 => 'exception.logger', 1 => 'onException'))), 3 => array(0 => array('service' => array(0 => 'exception.test_site', 1 => 'onException'))), 0 => array(0 => array('service' => array(0 => 'maintenance_mode_subscriber', 1 => 'onKernelRequestMaintenance'))), -50 => array(0 => array('service' => array(0 => 'exception.custom_page_html', 1 => 'onException'))), -75 => array(0 => array('service' => array(0 => 'exception.default_json', 1 => 'onException')), 1 => array('service' => array(0 => 'exception.custom_page_json', 1 => 'onException'))), -128 => array(0 => array('service' => array(0 => 'exception.default_html', 1 => 'onException'))), -256 => array(0 => array('service' => array(0 => 'exception.default', 1 => 'onException')))), 'kernel.view' => array(0 => array(0 => array('service' => array(0 => 'main_content_view_subscriber', 1 => 'onViewRenderArray')), 1 => array('service' => array(0 => 'view_subscriber', 1 => 'onView')))), 'kernel.finish_request' => array(0 => array(0 => array('service' => array(0 => 'router_listener', 1 => 'onKernelFinishRequest')))), 'config.importer.import' => array(40 => array(0 => array('service' => array(0 => 'config_snapshot_subscriber', 1 => 'onConfigImporterImport')))), 'render.page_display_variant.select' => array(0 => array(0 => array('service' => array(0 => 'block.page_display_variant_subscriber', 1 => 'onSelectPageDisplayVariant')))), 'block.active_context' => array(0 => array(0 => array('service' => array(0 => 'block.current_user_context', 1 => 'onBlockActiveContext')), 1 => array('service' => array(0 => 'block.current_language_context', 1 => 'onBlockActiveContext')), 2 => array('service' => array(0 => 'block.node_route_context', 1 => 'onBlockActiveContext')))), 'block.administrative_context' => array(0 => array(0 => array('service' => array(0 => 'block.current_user_context', 1 => 'onBlockAdministrativeContext')), 1 => array('service' => array(0 => 'block.current_language_context', 1 => 'onBlockAdministrativeContext')), 2 => array('service' => array(0 => 'block.node_route_context', 1 => 'onBlockAdministrativeContext'))))));
+    }
+
+    /**
+     * Gets the 'exception.custom_page_html' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber A Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber instance.
+     */
+    protected function getException_CustomPageHtmlService()
+    {
+        return $this->services['exception.custom_page_html'] = new \Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber($this->get('config.factory'), $this->get('path.alias_manager'), $this->get('http_kernel'), $this->get('logger.channel.php'));
+    }
+
+    /**
+     * Gets the 'exception.custom_page_json' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ExceptionJsonSubscriber A Drupal\Core\EventSubscriber\ExceptionJsonSubscriber instance.
+     */
+    protected function getException_CustomPageJsonService()
+    {
+        return $this->services['exception.custom_page_json'] = new \Drupal\Core\EventSubscriber\ExceptionJsonSubscriber($this->get('config.factory'), $this->get('path.alias_manager'), $this->get('http_kernel'));
+    }
+
+    /**
+     * Gets the 'exception.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\DefaultExceptionSubscriber A Drupal\Core\EventSubscriber\DefaultExceptionSubscriber instance.
+     */
+    protected function getException_DefaultService()
+    {
+        return $this->services['exception.default'] = new \Drupal\Core\EventSubscriber\DefaultExceptionSubscriber($this->get('config.factory'), $this->get('bare_html_page_renderer'));
+    }
+
+    /**
+     * Gets the 'exception.default_html' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber A Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber instance.
+     */
+    protected function getException_DefaultHtmlService()
+    {
+        return $this->services['exception.default_html'] = new \Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber($this->get('http_kernel'), $this->get('logger.channel.php'));
+    }
+
+    /**
+     * Gets the 'exception.default_json' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ExceptionJsonSubscriber A Drupal\Core\EventSubscriber\ExceptionJsonSubscriber instance.
+     */
+    protected function getException_DefaultJsonService()
+    {
+        return $this->services['exception.default_json'] = new \Drupal\Core\EventSubscriber\ExceptionJsonSubscriber();
+    }
+
+    /**
+     * Gets the 'exception.enforced_form_response' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber A Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber instance.
+     */
+    protected function getException_EnforcedFormResponseService()
+    {
+        return $this->services['exception.enforced_form_response'] = new \Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber();
+    }
+
+    /**
+     * Gets the 'exception.fast_404_html' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber A Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber instance.
+     */
+    protected function getException_Fast404HtmlService()
+    {
+        return $this->services['exception.fast_404_html'] = new \Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber($this->get('config.factory'), $this->get('http_kernel'));
+    }
+
+    /**
+     * Gets the 'exception.logger' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber A Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber instance.
+     */
+    protected function getException_LoggerService()
+    {
+        return $this->services['exception.logger'] = new \Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber($this->get('logger.factory'));
+    }
+
+    /**
+     * Gets the 'exception.test_site' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber A Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber instance.
+     */
+    protected function getException_TestSiteService()
+    {
+        return $this->services['exception.test_site'] = new \Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber();
+    }
+
+    /**
+     * Gets the 'feed.bridge.reader' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\Bridge\ZfExtensionManagerSfContainer A Drupal\Component\Bridge\ZfExtensionManagerSfContainer instance.
+     */
+    protected function getFeed_Bridge_ReaderService()
+    {
+        $this->services['feed.bridge.reader'] = $instance = new \Drupal\Component\Bridge\ZfExtensionManagerSfContainer('feed.reader.');
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'feed.bridge.writer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\Bridge\ZfExtensionManagerSfContainer A Drupal\Component\Bridge\ZfExtensionManagerSfContainer instance.
+     */
+    protected function getFeed_Bridge_WriterService()
+    {
+        $this->services['feed.bridge.writer'] = $instance = new \Drupal\Component\Bridge\ZfExtensionManagerSfContainer('feed.writer.');
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'feed.reader.atomentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Atom\Entry A Zend\Feed\Reader\Extension\Atom\Entry instance.
+     */
+    protected function getFeed_Reader_AtomentryService()
+    {
+        return $this->services['feed.reader.atomentry'] = new \Zend\Feed\Reader\Extension\Atom\Entry();
+    }
+
+    /**
+     * Gets the 'feed.reader.atomfeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Atom\Feed A Zend\Feed\Reader\Extension\Atom\Feed instance.
+     */
+    protected function getFeed_Reader_AtomfeedService()
+    {
+        return $this->services['feed.reader.atomfeed'] = new \Zend\Feed\Reader\Extension\Atom\Feed();
+    }
+
+    /**
+     * Gets the 'feed.reader.contententry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Content\Entry A Zend\Feed\Reader\Extension\Content\Entry instance.
+     */
+    protected function getFeed_Reader_ContententryService()
+    {
+        return $this->services['feed.reader.contententry'] = new \Zend\Feed\Reader\Extension\Content\Entry();
+    }
+
+    /**
+     * Gets the 'feed.reader.dublincoreentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\DublinCore\Entry A Zend\Feed\Reader\Extension\DublinCore\Entry instance.
+     */
+    protected function getFeed_Reader_DublincoreentryService()
+    {
+        return $this->services['feed.reader.dublincoreentry'] = new \Zend\Feed\Reader\Extension\DublinCore\Entry();
+    }
+
+    /**
+     * Gets the 'feed.reader.dublincorefeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\DublinCore\Feed A Zend\Feed\Reader\Extension\DublinCore\Feed instance.
+     */
+    protected function getFeed_Reader_DublincorefeedService()
+    {
+        return $this->services['feed.reader.dublincorefeed'] = new \Zend\Feed\Reader\Extension\DublinCore\Feed();
+    }
+
+    /**
+     * Gets the 'feed.reader.podcastentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Podcast\Entry A Zend\Feed\Reader\Extension\Podcast\Entry instance.
+     */
+    protected function getFeed_Reader_PodcastentryService()
+    {
+        return $this->services['feed.reader.podcastentry'] = new \Zend\Feed\Reader\Extension\Podcast\Entry();
+    }
+
+    /**
+     * Gets the 'feed.reader.podcastfeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Podcast\Feed A Zend\Feed\Reader\Extension\Podcast\Feed instance.
+     */
+    protected function getFeed_Reader_PodcastfeedService()
+    {
+        return $this->services['feed.reader.podcastfeed'] = new \Zend\Feed\Reader\Extension\Podcast\Feed();
+    }
+
+    /**
+     * Gets the 'feed.reader.slashentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Slash\Entry A Zend\Feed\Reader\Extension\Slash\Entry instance.
+     */
+    protected function getFeed_Reader_SlashentryService()
+    {
+        return $this->services['feed.reader.slashentry'] = new \Zend\Feed\Reader\Extension\Slash\Entry();
+    }
+
+    /**
+     * Gets the 'feed.reader.threadentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\Thread\Entry A Zend\Feed\Reader\Extension\Thread\Entry instance.
+     */
+    protected function getFeed_Reader_ThreadentryService()
+    {
+        return $this->services['feed.reader.threadentry'] = new \Zend\Feed\Reader\Extension\Thread\Entry();
+    }
+
+    /**
+     * Gets the 'feed.reader.wellformedwebentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Reader\Extension\WellFormedWeb\Entry A Zend\Feed\Reader\Extension\WellFormedWeb\Entry instance.
+     */
+    protected function getFeed_Reader_WellformedwebentryService()
+    {
+        return $this->services['feed.reader.wellformedwebentry'] = new \Zend\Feed\Reader\Extension\WellFormedWeb\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.atomrendererfeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\Atom\Renderer\Feed A Zend\Feed\Writer\Extension\Atom\Renderer\Feed instance.
+     */
+    protected function getFeed_Writer_AtomrendererfeedService()
+    {
+        return $this->services['feed.writer.atomrendererfeed'] = new \Zend\Feed\Writer\Extension\Atom\Renderer\Feed();
+    }
+
+    /**
+     * Gets the 'feed.writer.contentrendererentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\Content\Renderer\Entry A Zend\Feed\Writer\Extension\Content\Renderer\Entry instance.
+     */
+    protected function getFeed_Writer_ContentrendererentryService()
+    {
+        return $this->services['feed.writer.contentrendererentry'] = new \Zend\Feed\Writer\Extension\Content\Renderer\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.dublincorerendererentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry A Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry instance.
+     */
+    protected function getFeed_Writer_DublincorerendererentryService()
+    {
+        return $this->services['feed.writer.dublincorerendererentry'] = new \Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.dublincorerendererfeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed A Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed instance.
+     */
+    protected function getFeed_Writer_DublincorerendererfeedService()
+    {
+        return $this->services['feed.writer.dublincorerendererfeed'] = new \Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed();
+    }
+
+    /**
+     * Gets the 'feed.writer.itunesentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\ITunes\Entry A Zend\Feed\Writer\Extension\ITunes\Entry instance.
+     */
+    protected function getFeed_Writer_ItunesentryService()
+    {
+        return $this->services['feed.writer.itunesentry'] = new \Zend\Feed\Writer\Extension\ITunes\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.itunesfeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\ITunes\Feed A Zend\Feed\Writer\Extension\ITunes\Feed instance.
+     */
+    protected function getFeed_Writer_ItunesfeedService()
+    {
+        return $this->services['feed.writer.itunesfeed'] = new \Zend\Feed\Writer\Extension\ITunes\Feed();
+    }
+
+    /**
+     * Gets the 'feed.writer.itunesrendererentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\ITunes\Renderer\Entry A Zend\Feed\Writer\Extension\ITunes\Renderer\Entry instance.
+     */
+    protected function getFeed_Writer_ItunesrendererentryService()
+    {
+        return $this->services['feed.writer.itunesrendererentry'] = new \Zend\Feed\Writer\Extension\ITunes\Renderer\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.itunesrendererfeed' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\ITunes\Renderer\Feed A Zend\Feed\Writer\Extension\ITunes\Renderer\Feed instance.
+     */
+    protected function getFeed_Writer_ItunesrendererfeedService()
+    {
+        return $this->services['feed.writer.itunesrendererfeed'] = new \Zend\Feed\Writer\Extension\ITunes\Renderer\Feed();
+    }
+
+    /**
+     * Gets the 'feed.writer.slashrendererentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\Slash\Renderer\Entry A Zend\Feed\Writer\Extension\Slash\Renderer\Entry instance.
+     */
+    protected function getFeed_Writer_SlashrendererentryService()
+    {
+        return $this->services['feed.writer.slashrendererentry'] = new \Zend\Feed\Writer\Extension\Slash\Renderer\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.threadingrendererentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\Threading\Renderer\Entry A Zend\Feed\Writer\Extension\Threading\Renderer\Entry instance.
+     */
+    protected function getFeed_Writer_ThreadingrendererentryService()
+    {
+        return $this->services['feed.writer.threadingrendererentry'] = new \Zend\Feed\Writer\Extension\Threading\Renderer\Entry();
+    }
+
+    /**
+     * Gets the 'feed.writer.wellformedwebrendererentry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry A Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry instance.
+     */
+    protected function getFeed_Writer_WellformedwebrendererentryService()
+    {
+        return $this->services['feed.writer.wellformedwebrendererentry'] = new \Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry();
+    }
+
+    /**
+     * Gets the 'field_ui.subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\field_ui\Routing\RouteSubscriber A Drupal\field_ui\Routing\RouteSubscriber instance.
+     */
+    protected function getFieldUi_SubscriberService()
+    {
+        return $this->services['field_ui.subscriber'] = new \Drupal\field_ui\Routing\RouteSubscriber($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'field_uninstall_validator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Field\FieldModuleUninstallValidator A Drupal\Core\Field\FieldModuleUninstallValidator instance.
+     */
+    protected function getFieldUninstallValidatorService()
+    {
+        return $this->services['field_uninstall_validator'] = new \Drupal\Core\Field\FieldModuleUninstallValidator($this->get('entity.manager'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'file.mime_type.guesser' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\File\MimeType\MimeTypeGuesser A Drupal\Core\File\MimeType\MimeTypeGuesser instance.
+     */
+    protected function getFile_MimeType_GuesserService()
+    {
+        $this->services['file.mime_type.guesser'] = $instance = new \Drupal\Core\File\MimeType\MimeTypeGuesser();
+
+        $instance->addGuesser($this->get('file.mime_type.guesser.extension'), 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'file.mime_type.guesser.extension' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser A Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser instance.
+     */
+    protected function getFile_MimeType_Guesser_ExtensionService()
+    {
+        return $this->services['file.mime_type.guesser.extension'] = new \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser($this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'file.usage' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\file\FileUsage\DatabaseFileUsageBackend A Drupal\file\FileUsage\DatabaseFileUsageBackend instance.
+     */
+    protected function getFile_UsageService()
+    {
+        return $this->services['file.usage'] = new \Drupal\file\FileUsage\DatabaseFileUsageBackend($this->get('database'));
+    }
+
+    /**
+     * Gets the 'finish_response_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\FinishResponseSubscriber A Drupal\Core\EventSubscriber\FinishResponseSubscriber instance.
+     */
+    protected function getFinishResponseSubscriberService()
+    {
+        return $this->services['finish_response_subscriber'] = new \Drupal\Core\EventSubscriber\FinishResponseSubscriber($this->get('language_manager'), $this->get('config.factory'), $this->get('page_cache_request_policy'), $this->get('page_cache_response_policy'));
+    }
+
+    /**
+     * Gets the 'flood' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Flood\DatabaseBackend A Drupal\Core\Flood\DatabaseBackend instance.
+     */
+    protected function getFloodService()
+    {
+        return $this->services['flood'] = new \Drupal\Core\Flood\DatabaseBackend($this->get('database'), $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'form_builder' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Form\FormBuilder A Drupal\Core\Form\FormBuilder instance.
+     */
+    protected function getFormBuilderService()
+    {
+        $a = $this->get('module_handler');
+        $b = $this->get('request_stack');
+        $c = $this->get('csrf_token');
+
+        return $this->services['form_builder'] = new \Drupal\Core\Form\FormBuilder($this->get('form_validator'), $this->get('form_submitter'), new \Drupal\Core\Form\FormCache($this->get('app.root'), $this->get('keyvalue.expirable'), $a, $this->get('current_user'), $c, $this->get('logger.channel.form'), $this->get('config.factory'), $b, $this->get('page_cache_request_policy')), $a, $this->get('event_dispatcher'), $b, $this->get('class_resolver'), $this->get('theme.manager'), $c);
+    }
+
+    /**
+     * Gets the 'form_submitter' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Form\FormSubmitter A Drupal\Core\Form\FormSubmitter instance.
+     */
+    protected function getFormSubmitterService()
+    {
+        return $this->services['form_submitter'] = new \Drupal\Core\Form\FormSubmitter($this->get('request_stack'), $this->get('url_generator'));
+    }
+
+    /**
+     * Gets the 'form_validator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Form\FormValidator A Drupal\Core\Form\FormValidator instance.
+     */
+    protected function getFormValidatorService()
+    {
+        return $this->services['form_validator'] = new \Drupal\Core\Form\FormValidator($this->get('request_stack'), $this->get('string_translation'), $this->get('csrf_token'), $this->get('logger.channel.form'));
+    }
+
+    /**
+     * Gets the 'http_client' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Http\Client A Drupal\Core\Http\Client instance.
+     */
+    protected function getHttpClientService()
+    {
+        return $this->services['http_client'] = new \Drupal\Core\Http\Client();
+    }
+
+    /**
+     * Gets the 'http_kernel' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Stack\StackedHttpKernel A Stack\StackedHttpKernel instance.
+     */
+    protected function getHttpKernelService()
+    {
+        $a = $this->get('http_middleware.reverse_proxy');
+
+        return $this->services['http_kernel'] = new \Stack\StackedHttpKernel($a, array(0 => $a, 1 => $this->get('http_middleware.page_cache'), 2 => $this->get('http_middleware.kernel_pre_handle'), 3 => $this->get('http_kernel.basic')));
+    }
+
+    /**
+     * Gets the 'http_kernel.basic' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Symfony\Component\HttpKernel\HttpKernel A Symfony\Component\HttpKernel\HttpKernel instance.
+     */
+    protected function getHttpKernel_BasicService()
+    {
+        return $this->services['http_kernel.basic'] = new \Symfony\Component\HttpKernel\HttpKernel($this->get('event_dispatcher'), $this->get('controller_resolver'), $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'http_middleware.kernel_pre_handle' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StackMiddleware\KernelPreHandle A Drupal\Core\StackMiddleware\KernelPreHandle instance.
+     */
+    protected function getHttpMiddleware_KernelPreHandleService()
+    {
+        return $this->services['http_middleware.kernel_pre_handle'] = new \Drupal\Core\StackMiddleware\KernelPreHandle($this->get('http_kernel.basic'), $this->get('kernel'));
+    }
+
+    /**
+     * Gets the 'http_middleware.page_cache' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StackMiddleware\PageCache A Drupal\Core\StackMiddleware\PageCache instance.
+     */
+    protected function getHttpMiddleware_PageCacheService()
+    {
+        return $this->services['http_middleware.page_cache'] = new \Drupal\Core\StackMiddleware\PageCache($this->get('http_middleware.kernel_pre_handle'), $this->get('kernel'));
+    }
+
+    /**
+     * Gets the 'http_middleware.reverse_proxy' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StackMiddleware\ReverseProxyMiddleware A Drupal\Core\StackMiddleware\ReverseProxyMiddleware instance.
+     */
+    protected function getHttpMiddleware_ReverseProxyService()
+    {
+        return $this->services['http_middleware.reverse_proxy'] = new \Drupal\Core\StackMiddleware\ReverseProxyMiddleware($this->get('http_middleware.page_cache'), $this->get('settings'));
+    }
+
+    /**
+     * Gets the 'image.factory' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Image\ImageFactory A Drupal\Core\Image\ImageFactory instance.
+     */
+    protected function getImage_FactoryService()
+    {
+        return $this->services['image.factory'] = new \Drupal\Core\Image\ImageFactory($this->get('image.toolkit.manager'));
+    }
+
+    /**
+     * Gets the 'image.page_cache_request_policy.deny_private_image_style_download' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\image\PageCache\DenyPrivateImageStyleDownload A Drupal\image\PageCache\DenyPrivateImageStyleDownload instance.
+     */
+    protected function getImage_PageCacheRequestPolicy_DenyPrivateImageStyleDownloadService()
+    {
+        return $this->services['image.page_cache_request_policy.deny_private_image_style_download'] = new \Drupal\image\PageCache\DenyPrivateImageStyleDownload($this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'image.toolkit.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ImageToolkit\ImageToolkitManager A Drupal\Core\ImageToolkit\ImageToolkitManager instance.
+     */
+    protected function getImage_Toolkit_ManagerService()
+    {
+        return $this->services['image.toolkit.manager'] = new \Drupal\Core\ImageToolkit\ImageToolkitManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'), $this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'image.toolkit.operation.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ImageToolkit\ImageToolkitOperationManager A Drupal\Core\ImageToolkit\ImageToolkitOperationManager instance.
+     */
+    protected function getImage_Toolkit_Operation_ManagerService()
+    {
+        return $this->services['image.toolkit.operation.manager'] = new \Drupal\Core\ImageToolkit\ImageToolkitOperationManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'), $this->get('logger.channel.image'));
+    }
+
+    /**
+     * Gets the 'info_parser' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Extension\InfoParser A Drupal\Core\Extension\InfoParser instance.
+     */
+    protected function getInfoParserService()
+    {
+        return $this->services['info_parser'] = new \Drupal\Core\Extension\InfoParser();
+    }
+
+    /**
+     * Gets the 'kernel' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @throws RuntimeException always since this service is expected to be injected dynamically
+     */
+    protected function getKernelService()
+    {
+        throw new RuntimeException('You have requested a synthetic service ("kernel"). The DIC does not know how to construct this service.');
+    }
+
+    /**
+     * Gets the 'kernel_destruct_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\KernelDestructionSubscriber A Drupal\Core\EventSubscriber\KernelDestructionSubscriber instance.
+     */
+    protected function getKernelDestructSubscriberService()
+    {
+        $this->services['kernel_destruct_subscriber'] = $instance = new \Drupal\Core\EventSubscriber\KernelDestructionSubscriber();
+
+        $instance->setContainer($this);
+        $instance->registerService('path.alias_whitelist');
+        $instance->registerService('theme.registry');
+        $instance->registerService('library.discovery.collector');
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'keyvalue' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\KeyValueStore\KeyValueFactory A Drupal\Core\KeyValueStore\KeyValueFactory instance.
+     */
+    protected function getKeyvalueService()
+    {
+        return $this->services['keyvalue'] = new \Drupal\Core\KeyValueStore\KeyValueFactory($this, array());
+    }
+
+    /**
+     * Gets the 'keyvalue.database' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\KeyValueStore\KeyValueDatabaseFactory A Drupal\Core\KeyValueStore\KeyValueDatabaseFactory instance.
+     */
+    protected function getKeyvalue_DatabaseService()
+    {
+        return $this->services['keyvalue.database'] = new \Drupal\Core\KeyValueStore\KeyValueDatabaseFactory($this->get('serialization.phpserialize'), $this->get('database'));
+    }
+
+    /**
+     * Gets the 'keyvalue.expirable' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\KeyValueStore\KeyValueExpirableFactory A Drupal\Core\KeyValueStore\KeyValueExpirableFactory instance.
+     */
+    protected function getKeyvalue_ExpirableService()
+    {
+        return $this->services['keyvalue.expirable'] = new \Drupal\Core\KeyValueStore\KeyValueExpirableFactory($this, array());
+    }
+
+    /**
+     * Gets the 'keyvalue.expirable.database' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory A Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory instance.
+     */
+    protected function getKeyvalue_Expirable_DatabaseService()
+    {
+        return $this->services['keyvalue.expirable.database'] = new \Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory($this->get('serialization.phpserialize'), $this->get('database'));
+    }
+
+    /**
+     * Gets the 'language.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Language\LanguageDefault A Drupal\Core\Language\LanguageDefault instance.
+     */
+    protected function getLanguage_DefaultService()
+    {
+        return $this->services['language.default'] = new \Drupal\Core\Language\LanguageDefault(array('id' => 'en', 'name' => 'English', 'direction' => 'ltr', 'weight' => 0, 'locked' => false));
+    }
+
+    /**
+     * Gets the 'language_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Language\LanguageManager A Drupal\Core\Language\LanguageManager instance.
+     */
+    protected function getLanguageManagerService()
+    {
+        return $this->services['language_manager'] = new \Drupal\Core\Language\LanguageManager($this->get('language.default'));
+    }
+
+    /**
+     * Gets the 'library.discovery' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\LibraryDiscovery A Drupal\Core\Asset\LibraryDiscovery instance.
+     */
+    protected function getLibrary_DiscoveryService()
+    {
+        return $this->services['library.discovery'] = new \Drupal\Core\Asset\LibraryDiscovery($this->get('library.discovery.collector'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'library.discovery.collector' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\LibraryDiscoveryCollector A Drupal\Core\Asset\LibraryDiscoveryCollector instance.
+     */
+    protected function getLibrary_Discovery_CollectorService()
+    {
+        return $this->services['library.discovery.collector'] = new \Drupal\Core\Asset\LibraryDiscoveryCollector($this->get('cache.discovery'), $this->get('lock'), $this->get('library.discovery.parser'));
+    }
+
+    /**
+     * Gets the 'library.discovery.parser' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Asset\LibraryDiscoveryParser A Drupal\Core\Asset\LibraryDiscoveryParser instance.
+     */
+    protected function getLibrary_Discovery_ParserService()
+    {
+        return $this->services['library.discovery.parser'] = new \Drupal\Core\Asset\LibraryDiscoveryParser($this->get('app.root'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'link_generator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Utility\LinkGenerator A Drupal\Core\Utility\LinkGenerator instance.
+     */
+    protected function getLinkGeneratorService()
+    {
+        return $this->services['link_generator'] = new \Drupal\Core\Utility\LinkGenerator($this->get('url_generator'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'lock' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Lock\DatabaseLockBackend A Drupal\Core\Lock\DatabaseLockBackend instance.
+     */
+    protected function getLockService()
+    {
+        return $this->services['lock'] = new \Drupal\Core\Lock\DatabaseLockBackend($this->get('database'));
+    }
+
+    /**
+     * Gets the 'lock.persistent' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Lock\PersistentDatabaseLockBackend A Drupal\Core\Lock\PersistentDatabaseLockBackend instance.
+     */
+    protected function getLock_PersistentService()
+    {
+        return $this->services['lock.persistent'] = new \Drupal\Core\Lock\PersistentDatabaseLockBackend($this->get('database'));
+    }
+
+    /**
+     * Gets the 'logger.channel.contact' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannel A Drupal\Core\Logger\LoggerChannel instance.
+     */
+    protected function getLogger_Channel_ContactService()
+    {
+        return $this->services['logger.channel.contact'] = $this->get('logger.factory')->get('contact');
+    }
+
+    /**
+     * Gets the 'logger.channel.cron' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannel A Drupal\Core\Logger\LoggerChannel instance.
+     */
+    protected function getLogger_Channel_CronService()
+    {
+        return $this->services['logger.channel.cron'] = $this->get('logger.factory')->get('cron');
+    }
+
+    /**
+     * Gets the 'logger.channel.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannel A Drupal\Core\Logger\LoggerChannel instance.
+     */
+    protected function getLogger_Channel_DefaultService()
+    {
+        return $this->services['logger.channel.default'] = $this->get('logger.factory')->get('system');
+    }
+
+    /**
+     * Gets the 'logger.channel.form' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannel A Drupal\Core\Logger\LoggerChannel instance.
+     */
+    protected function getLogger_Channel_FormService()
+    {
+        return $this->services['logger.channel.form'] = $this->get('logger.factory')->get('form');
+    }
+
+    /**
+     * Gets the 'logger.channel.image' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannel A Drupal\Core\Logger\LoggerChannel instance.
+     */
+    protected function getLogger_Channel_ImageService()
+    {
+        return $this->services['logger.channel.image'] = $this->get('logger.factory')->get('image');
+    }
+
+    /**
+     * Gets the 'logger.channel.php' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannel A Drupal\Core\Logger\LoggerChannel instance.
+     */
+    protected function getLogger_Channel_PhpService()
+    {
+        return $this->services['logger.channel.php'] = $this->get('logger.factory')->get('php');
+    }
+
+    /**
+     * Gets the 'logger.dblog' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\dblog\Logger\DbLog A Drupal\dblog\Logger\DbLog instance.
+     */
+    protected function getLogger_DblogService()
+    {
+        return $this->services['logger.dblog'] = new \Drupal\dblog\Logger\DbLog($this->get('database'), $this->get('logger.log_message_parser'));
+    }
+
+    /**
+     * Gets the 'logger.factory' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LoggerChannelFactory A Drupal\Core\Logger\LoggerChannelFactory instance.
+     */
+    protected function getLogger_FactoryService()
+    {
+        $this->services['logger.factory'] = $instance = new \Drupal\Core\Logger\LoggerChannelFactory();
+
+        $instance->setContainer($this);
+        $instance->addLogger($this->get('logger.dblog'), 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'logger.log_message_parser' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Logger\LogMessageParser A Drupal\Core\Logger\LogMessageParser instance.
+     */
+    protected function getLogger_LogMessageParserService()
+    {
+        return $this->services['logger.log_message_parser'] = new \Drupal\Core\Logger\LogMessageParser();
+    }
+
+    /**
+     * Gets the 'main_content_renderer.ajax' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\MainContent\AjaxRenderer A Drupal\Core\Render\MainContent\AjaxRenderer instance.
+     */
+    protected function getMainContentRenderer_AjaxService()
+    {
+        return $this->services['main_content_renderer.ajax'] = new \Drupal\Core\Render\MainContent\AjaxRenderer($this->get('plugin.manager.element_info'));
+    }
+
+    /**
+     * Gets the 'main_content_renderer.dialog' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\MainContent\DialogRenderer A Drupal\Core\Render\MainContent\DialogRenderer instance.
+     */
+    protected function getMainContentRenderer_DialogService()
+    {
+        return $this->services['main_content_renderer.dialog'] = new \Drupal\Core\Render\MainContent\DialogRenderer($this->get('title_resolver'));
+    }
+
+    /**
+     * Gets the 'main_content_renderer.html' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\MainContent\HtmlRenderer A Drupal\Core\Render\MainContent\HtmlRenderer instance.
+     */
+    protected function getMainContentRenderer_HtmlService()
+    {
+        return $this->services['main_content_renderer.html'] = new \Drupal\Core\Render\MainContent\HtmlRenderer($this->get('title_resolver'), $this->get('plugin.manager.display_variant'), $this->get('event_dispatcher'), $this->get('module_handler'), $this->get('renderer'));
+    }
+
+    /**
+     * Gets the 'main_content_renderer.modal' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\MainContent\ModalRenderer A Drupal\Core\Render\MainContent\ModalRenderer instance.
+     */
+    protected function getMainContentRenderer_ModalService()
+    {
+        return $this->services['main_content_renderer.modal'] = new \Drupal\Core\Render\MainContent\ModalRenderer($this->get('title_resolver'));
+    }
+
+    /**
+     * Gets the 'main_content_view_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\MainContentViewSubscriber A Drupal\Core\EventSubscriber\MainContentViewSubscriber instance.
+     */
+    protected function getMainContentViewSubscriberService()
+    {
+        return $this->services['main_content_view_subscriber'] = new \Drupal\Core\EventSubscriber\MainContentViewSubscriber($this->get('class_resolver'), $this->get('current_route_match'), array('html' => 'main_content_renderer.html', 'drupal_ajax' => 'main_content_renderer.ajax', 'drupal_dialog' => 'main_content_renderer.dialog', 'drupal_modal' => 'main_content_renderer.modal'));
+    }
+
+    /**
+     * Gets the 'maintenance_mode' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Site\MaintenanceMode A Drupal\Core\Site\MaintenanceMode instance.
+     */
+    protected function getMaintenanceModeService()
+    {
+        return $this->services['maintenance_mode'] = new \Drupal\Core\Site\MaintenanceMode($this->get('state'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'maintenance_mode_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\MaintenanceModeSubscriber A Drupal\Core\EventSubscriber\MaintenanceModeSubscriber instance.
+     */
+    protected function getMaintenanceModeSubscriberService()
+    {
+        return $this->services['maintenance_mode_subscriber'] = new \Drupal\Core\EventSubscriber\MaintenanceModeSubscriber($this->get('maintenance_mode'), $this->get('config.factory'), $this->get('string_translation'), $this->get('url_generator'), $this->get('current_user'), $this->get('bare_html_page_renderer'));
+    }
+
+    /**
+     * Gets the 'menu.active_trail' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\MenuActiveTrail A Drupal\Core\Menu\MenuActiveTrail instance.
+     */
+    protected function getMenu_ActiveTrailService()
+    {
+        return $this->services['menu.active_trail'] = new \Drupal\Core\Menu\MenuActiveTrail($this->get('plugin.manager.menu.link'), $this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'menu.default_tree_manipulators' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\DefaultMenuLinkTreeManipulators A Drupal\Core\Menu\DefaultMenuLinkTreeManipulators instance.
+     */
+    protected function getMenu_DefaultTreeManipulatorsService()
+    {
+        return $this->services['menu.default_tree_manipulators'] = new \Drupal\Core\Menu\DefaultMenuLinkTreeManipulators($this->get('access_manager'), $this->get('current_user'), $this->get('entity.query'));
+    }
+
+    /**
+     * Gets the 'menu.link_tree' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\MenuLinkTree A Drupal\Core\Menu\MenuLinkTree instance.
+     */
+    protected function getMenu_LinkTreeService()
+    {
+        return $this->services['menu.link_tree'] = new \Drupal\Core\Menu\MenuLinkTree($this->get('menu.tree_storage'), $this->get('plugin.manager.menu.link'), $this->get('router.route_provider'), $this->get('menu.active_trail'), $this->get('controller_resolver'), $this->get('cache.menu'), $this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'menu.parent_form_selector' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\MenuParentFormSelector A Drupal\Core\Menu\MenuParentFormSelector instance.
+     */
+    protected function getMenu_ParentFormSelectorService()
+    {
+        return $this->services['menu.parent_form_selector'] = new \Drupal\Core\Menu\MenuParentFormSelector($this->get('menu.link_tree'), $this->get('entity.manager'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'menu.rebuild_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber A Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber instance.
+     */
+    protected function getMenu_RebuildSubscriberService()
+    {
+        return $this->services['menu.rebuild_subscriber'] = new \Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber($this->get('lock'), $this->get('plugin.manager.menu.link'));
+    }
+
+    /**
+     * Gets the 'menu_link.static.overrides' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\StaticMenuLinkOverrides A Drupal\Core\Menu\StaticMenuLinkOverrides instance.
+     */
+    protected function getMenuLink_Static_OverridesService()
+    {
+        return $this->services['menu_link.static.overrides'] = new \Drupal\Core\Menu\StaticMenuLinkOverrides($this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'module_handler' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Extension\ModuleHandler A Drupal\Core\Extension\ModuleHandler instance.
+     */
+    protected function getModuleHandlerService()
+    {
+        return $this->services['module_handler'] = new \Drupal\Core\Extension\ModuleHandler($this->get('app.root'), array('block' => array('type' => 'module', 'pathname' => 'core/modules/block/block.info.yml', 'filename' => 'block.module'), 'block_content' => array('type' => 'module', 'pathname' => 'core/modules/block_content/block_content.info.yml', 'filename' => 'block_content.module'), 'breakpoint' => array('type' => 'module', 'pathname' => 'core/modules/breakpoint/breakpoint.info.yml', 'filename' => 'breakpoint.module'), 'ckeditor' => array('type' => 'module', 'pathname' => 'core/modules/ckeditor/ckeditor.info.yml', 'filename' => 'ckeditor.module'), 'color' => array('type' => 'module', 'pathname' => 'core/modules/color/color.info.yml', 'filename' => 'color.module'), 'comment' => array('type' => 'module', 'pathname' => 'core/modules/comment/comment.info.yml', 'filename' => 'comment.module'), 'config' => array('type' => 'module', 'pathname' => 'core/modules/config/config.info.yml', 'filename' => 'config.module'), 'contact' => array('type' => 'module', 'pathname' => 'core/modules/contact/contact.info.yml', 'filename' => 'contact.module'), 'contextual' => array('type' => 'module', 'pathname' => 'core/modules/contextual/contextual.info.yml', 'filename' => 'contextual.module'), 'datetime' => array('type' => 'module', 'pathname' => 'core/modules/datetime/datetime.info.yml', 'filename' => 'datetime.module'), 'dblog' => array('type' => 'module', 'pathname' => 'core/modules/dblog/dblog.info.yml', 'filename' => 'dblog.module'), 'editor' => array('type' => 'module', 'pathname' => 'core/modules/editor/editor.info.yml', 'filename' => 'editor.module'), 'entity_reference' => array('type' => 'module', 'pathname' => 'core/modules/entity_reference/entity_reference.info.yml', 'filename' => 'entity_reference.module'), 'field' => array('type' => 'module', 'pathname' => 'core/modules/field/field.info.yml', 'filename' => 'field.module'), 'field_ui' => array('type' => 'module', 'pathname' => 'core/modules/field_ui/field_ui.info.yml', 'filename' => 'field_ui.module'), 'file' => array('type' => 'module', 'pathname' => 'core/modules/file/file.info.yml', 'filename' => 'file.module'), 'filter' => array('type' => 'module', 'pathname' => 'core/modules/filter/filter.info.yml', 'filename' => 'filter.module'), 'help' => array('type' => 'module', 'pathname' => 'core/modules/help/help.info.yml', 'filename' => 'help.module'), 'history' => array('type' => 'module', 'pathname' => 'core/modules/history/history.info.yml', 'filename' => 'history.module'), 'image' => array('type' => 'module', 'pathname' => 'core/modules/image/image.info.yml', 'filename' => 'image.module'), 'menu_link_content' => array('type' => 'module', 'pathname' => 'core/modules/menu_link_content/menu_link_content.info.yml', 'filename' => 'menu_link_content.module'), 'menu_ui' => array('type' => 'module', 'pathname' => 'core/modules/menu_ui/menu_ui.info.yml', 'filename' => 'menu_ui.module'), 'node' => array('type' => 'module', 'pathname' => 'core/modules/node/node.info.yml', 'filename' => 'node.module'), 'options' => array('type' => 'module', 'pathname' => 'core/modules/options/options.info.yml', 'filename' => 'options.module'), 'path' => array('type' => 'module', 'pathname' => 'core/modules/path/path.info.yml', 'filename' => 'path.module'), 'quickedit' => array('type' => 'module', 'pathname' => 'core/modules/quickedit/quickedit.info.yml', 'filename' => 'quickedit.module'), 'rdf' => array('type' => 'module', 'pathname' => 'core/modules/rdf/rdf.info.yml', 'filename' => 'rdf.module'), 'search' => array('type' => 'module', 'pathname' => 'core/modules/search/search.info.yml', 'filename' => 'search.module'), 'shortcut' => array('type' => 'module', 'pathname' => 'core/modules/shortcut/shortcut.info.yml', 'filename' => 'shortcut.module'), 'standard' => array('type' => 'profile', 'pathname' => 'core/profiles/standard/standard.info.yml', 'filename' => 'standard.profile'), 'system' => array('type' => 'module', 'pathname' => 'core/modules/system/system.info.yml', 'filename' => 'system.module'), 'taxonomy' => array('type' => 'module', 'pathname' => 'core/modules/taxonomy/taxonomy.info.yml', 'filename' => 'taxonomy.module'), 'text' => array('type' => 'module', 'pathname' => 'core/modules/text/text.info.yml', 'filename' => 'text.module'), 'toolbar' => array('type' => 'module', 'pathname' => 'core/modules/toolbar/toolbar.info.yml', 'filename' => 'toolbar.module'), 'tour' => array('type' => 'module', 'pathname' => 'core/modules/tour/tour.info.yml', 'filename' => 'tour.module'), 'update' => array('type' => 'module', 'pathname' => 'core/modules/update/update.info.yml', 'filename' => 'update.module'), 'user' => array('type' => 'module', 'pathname' => 'core/modules/user/user.info.yml', 'filename' => 'user.module'), 'views_ui' => array('type' => 'module', 'pathname' => 'core/modules/views_ui/views_ui.info.yml', 'filename' => 'views_ui.module'), 'views' => array('type' => 'module', 'pathname' => 'core/modules/views/views.info.yml', 'filename' => 'views.module')), $this->get('cache.bootstrap'));
+    }
+
+    /**
+     * Gets the 'module_installer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Extension\ModuleInstaller A Drupal\Core\Extension\ModuleInstaller instance.
+     */
+    protected function getModuleInstallerService()
+    {
+        $this->services['module_installer'] = $instance = new \Drupal\Core\Extension\ModuleInstaller($this->get('app.root'), $this->get('module_handler'), $this->get('kernel'));
+
+        $instance->addUninstallValidator($this->get('field_uninstall_validator'));
+        $instance->addUninstallValidator($this->get('content_uninstall_validator'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'node.admin_path.route_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\EventSubscriber\NodeAdminRouteSubscriber A Drupal\node\EventSubscriber\NodeAdminRouteSubscriber instance.
+     */
+    protected function getNode_AdminPath_RouteSubscriberService()
+    {
+        return $this->services['node.admin_path.route_subscriber'] = new \Drupal\node\EventSubscriber\NodeAdminRouteSubscriber($this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'node.grant_storage' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\NodeGrantDatabaseStorage A Drupal\node\NodeGrantDatabaseStorage instance.
+     */
+    protected function getNode_GrantStorageService()
+    {
+        return $this->services['node.grant_storage'] = new \Drupal\node\NodeGrantDatabaseStorage($this->get('database'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'node.page_cache_request_policy.deny_node_preview' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\PageCache\DenyNodePreview A Drupal\node\PageCache\DenyNodePreview instance.
+     */
+    protected function getNode_PageCacheRequestPolicy_DenyNodePreviewService()
+    {
+        return $this->services['node.page_cache_request_policy.deny_node_preview'] = new \Drupal\node\PageCache\DenyNodePreview($this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'node.route_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\Routing\RouteSubscriber A Drupal\node\Routing\RouteSubscriber instance.
+     */
+    protected function getNode_RouteSubscriberService()
+    {
+        return $this->services['node.route_subscriber'] = new \Drupal\node\Routing\RouteSubscriber();
+    }
+
+    /**
+     * Gets the 'node_preview' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\node\ParamConverter\NodePreviewConverter A Drupal\node\ParamConverter\NodePreviewConverter instance.
+     */
+    protected function getNodePreviewService()
+    {
+        return $this->services['node_preview'] = new \Drupal\node\ParamConverter\NodePreviewConverter($this->get('user.tempstore'));
+    }
+
+    /**
+     * Gets the 'page_cache_kill_switch' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PageCache\ResponsePolicy\KillSwitch A Drupal\Core\PageCache\ResponsePolicy\KillSwitch instance.
+     */
+    protected function getPageCacheKillSwitchService()
+    {
+        return $this->services['page_cache_kill_switch'] = new \Drupal\Core\PageCache\ResponsePolicy\KillSwitch();
+    }
+
+    /**
+     * Gets the 'page_cache_request_policy' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PageCache\DefaultRequestPolicy A Drupal\Core\PageCache\DefaultRequestPolicy instance.
+     */
+    protected function getPageCacheRequestPolicyService()
+    {
+        $this->services['page_cache_request_policy'] = $instance = new \Drupal\Core\PageCache\DefaultRequestPolicy();
+
+        $instance->addPolicy($this->get('toolbar.page_cache_request_policy.allow_toolbar_path'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'page_cache_response_policy' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PageCache\ChainResponsePolicy A Drupal\Core\PageCache\ChainResponsePolicy instance.
+     */
+    protected function getPageCacheResponsePolicyService()
+    {
+        $this->services['page_cache_response_policy'] = $instance = new \Drupal\Core\PageCache\ChainResponsePolicy();
+
+        $instance->addPolicy($this->get('node.page_cache_request_policy.deny_node_preview'));
+        $instance->addPolicy($this->get('image.page_cache_request_policy.deny_private_image_style_download'));
+        $instance->addPolicy($this->get('page_cache_kill_switch'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'paramconverter.configentity_admin' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ParamConverter\AdminPathConfigEntityConverter A Drupal\Core\ParamConverter\AdminPathConfigEntityConverter instance.
+     */
+    protected function getParamconverter_ConfigentityAdminService()
+    {
+        return $this->services['paramconverter.configentity_admin'] = new \Drupal\Core\ParamConverter\AdminPathConfigEntityConverter($this->get('entity.manager'), $this->get('config.factory'), $this->get('router.admin_context'));
+    }
+
+    /**
+     * Gets the 'paramconverter.entity' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ParamConverter\EntityConverter A Drupal\Core\ParamConverter\EntityConverter instance.
+     */
+    protected function getParamconverter_EntityService()
+    {
+        return $this->services['paramconverter.entity'] = new \Drupal\Core\ParamConverter\EntityConverter($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'paramconverter.menu_link' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ParamConverter\MenuLinkPluginConverter A Drupal\Core\ParamConverter\MenuLinkPluginConverter instance.
+     */
+    protected function getParamconverter_MenuLinkService()
+    {
+        return $this->services['paramconverter.menu_link'] = new \Drupal\Core\ParamConverter\MenuLinkPluginConverter($this->get('plugin.manager.menu.link'));
+    }
+
+    /**
+     * Gets the 'paramconverter.views_ui' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views_ui\ParamConverter\ViewUIConverter A Drupal\views_ui\ParamConverter\ViewUIConverter instance.
+     */
+    protected function getParamconverter_ViewsUiService()
+    {
+        return $this->services['paramconverter.views_ui'] = new \Drupal\views_ui\ParamConverter\ViewUIConverter($this->get('entity.manager'), $this->get('user.tempstore'));
+    }
+
+    /**
+     * Gets the 'paramconverter_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\ParamConverter\ParamConverterManager A Drupal\Core\ParamConverter\ParamConverterManager instance.
+     */
+    protected function getParamconverterManagerService()
+    {
+        $this->services['paramconverter_manager'] = $instance = new \Drupal\Core\ParamConverter\ParamConverterManager();
+
+        $instance->addConverter($this->get('paramconverter.views_ui'), 'paramconverter.views_ui');
+        $instance->addConverter($this->get('paramconverter.configentity_admin'), 'paramconverter.configentity_admin');
+        $instance->addConverter($this->get('paramconverter.entity'), 'paramconverter.entity');
+        $instance->addConverter($this->get('node_preview'), 'node_preview');
+        $instance->addConverter($this->get('paramconverter.menu_link'), 'paramconverter.menu_link');
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'paramconverter_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ParamConverterSubscriber A Drupal\Core\EventSubscriber\ParamConverterSubscriber instance.
+     */
+    protected function getParamconverterSubscriberService()
+    {
+        return $this->services['paramconverter_subscriber'] = new \Drupal\Core\EventSubscriber\ParamConverterSubscriber($this->get('paramconverter_manager'));
+    }
+
+    /**
+     * Gets the 'password' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Password\PhpassHashedPassword A Drupal\Core\Password\PhpassHashedPassword instance.
+     */
+    protected function getPasswordService()
+    {
+        return $this->services['password'] = new \Drupal\Core\Password\PhpassHashedPassword(16);
+    }
+
+    /**
+     * Gets the 'path.alias_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Path\AliasManager A Drupal\Core\Path\AliasManager instance.
+     */
+    protected function getPath_AliasManagerService()
+    {
+        return $this->services['path.alias_manager'] = new \Drupal\Core\Path\AliasManager($this->get('path.alias_storage'), $this->get('path.alias_whitelist'), $this->get('language_manager'), $this->get('cache.data'));
+    }
+
+    /**
+     * Gets the 'path.alias_storage' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Path\AliasStorage A Drupal\Core\Path\AliasStorage instance.
+     */
+    protected function getPath_AliasStorageService()
+    {
+        return $this->services['path.alias_storage'] = new \Drupal\Core\Path\AliasStorage($this->get('database'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'path.alias_whitelist' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Path\AliasWhitelist A Drupal\Core\Path\AliasWhitelist instance.
+     */
+    protected function getPath_AliasWhitelistService()
+    {
+        return $this->services['path.alias_whitelist'] = new \Drupal\Core\Path\AliasWhitelist('path_alias_whitelist', $this->get('cache.default'), $this->get('lock'), $this->get('state'), $this->get('path.alias_storage'));
+    }
+
+    /**
+     * Gets the 'path.matcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Path\PathMatcher A Drupal\Core\Path\PathMatcher instance.
+     */
+    protected function getPath_MatcherService()
+    {
+        return $this->services['path.matcher'] = new \Drupal\Core\Path\PathMatcher($this->get('config.factory'), $this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'path.validator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Path\PathValidator A Drupal\Core\Path\PathValidator instance.
+     */
+    protected function getPath_ValidatorService()
+    {
+        return $this->services['path.validator'] = new \Drupal\Core\Path\PathValidator($this->get('router'), $this->get('router.no_access_checks'), $this->get('current_user'), $this->get('path_processor_manager'));
+    }
+
+    /**
+     * Gets the 'path_processor.files' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\PathProcessor\PathProcessorFiles A Drupal\system\PathProcessor\PathProcessorFiles instance.
+     */
+    protected function getPathProcessor_FilesService()
+    {
+        return $this->services['path_processor.files'] = new \Drupal\system\PathProcessor\PathProcessorFiles();
+    }
+
+    /**
+     * Gets the 'path_processor.image_styles' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\image\PathProcessor\PathProcessorImageStyles A Drupal\image\PathProcessor\PathProcessorImageStyles instance.
+     */
+    protected function getPathProcessor_ImageStylesService()
+    {
+        return $this->services['path_processor.image_styles'] = new \Drupal\image\PathProcessor\PathProcessorImageStyles();
+    }
+
+    /**
+     * Gets the 'path_processor_alias' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PathProcessor\PathProcessorAlias A Drupal\Core\PathProcessor\PathProcessorAlias instance.
+     */
+    protected function getPathProcessorAliasService()
+    {
+        return $this->services['path_processor_alias'] = new \Drupal\Core\PathProcessor\PathProcessorAlias($this->get('path.alias_manager'));
+    }
+
+    /**
+     * Gets the 'path_processor_decode' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PathProcessor\PathProcessorDecode A Drupal\Core\PathProcessor\PathProcessorDecode instance.
+     */
+    protected function getPathProcessorDecodeService()
+    {
+        return $this->services['path_processor_decode'] = new \Drupal\Core\PathProcessor\PathProcessorDecode();
+    }
+
+    /**
+     * Gets the 'path_processor_front' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PathProcessor\PathProcessorFront A Drupal\Core\PathProcessor\PathProcessorFront instance.
+     */
+    protected function getPathProcessorFrontService()
+    {
+        return $this->services['path_processor_front'] = new \Drupal\Core\PathProcessor\PathProcessorFront($this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'path_processor_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PathProcessor\PathProcessorManager A Drupal\Core\PathProcessor\PathProcessorManager instance.
+     */
+    protected function getPathProcessorManagerService()
+    {
+        $a = $this->get('path_processor_front');
+        $b = $this->get('path_processor_alias');
+
+        $this->services['path_processor_manager'] = $instance = new \Drupal\Core\PathProcessor\PathProcessorManager();
+
+        $instance->addInbound($this->get('path_processor_decode'), 1000);
+        $instance->addInbound($this->get('path_processor.image_styles'), 300);
+        $instance->addInbound($a, 200);
+        $instance->addInbound($this->get('path_processor.files'), 200);
+        $instance->addInbound($b, 100);
+        $instance->addOutbound($b, 300);
+        $instance->addOutbound($a, 200);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'path_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\PathSubscriber A Drupal\Core\EventSubscriber\PathSubscriber instance.
+     */
+    protected function getPathSubscriberService()
+    {
+        return $this->services['path_subscriber'] = new \Drupal\Core\EventSubscriber\PathSubscriber($this->get('path.alias_manager'), $this->get('path_processor_manager'));
+    }
+
+    /**
+     * Gets the 'plugin.cache_clearer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Plugin\CachedDiscoveryClearer A Drupal\Core\Plugin\CachedDiscoveryClearer instance.
+     */
+    protected function getPlugin_CacheClearerService()
+    {
+        $this->services['plugin.cache_clearer'] = $instance = new \Drupal\Core\Plugin\CachedDiscoveryClearer();
+
+        $instance->addCachedDiscovery($this->get('config.typed'));
+        $instance->addCachedDiscovery($this->get('entity.manager'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.block'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.field.field_type'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.field.widget'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.field.formatter'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.archiver'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.action'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.menu.local_action'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.menu.local_task'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.menu.contextual_link'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.display_variant'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.queue_worker'));
+        $instance->addCachedDiscovery($this->get('typed_data_manager'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.mail'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.condition'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.element_info'));
+        $instance->addCachedDiscovery($this->get('breakpoint.manager'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.ckeditor.plugin'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.editor'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.entity_reference.selection'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.filter'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.image.effect'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.quickedit.editor'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.search'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.tour.tip'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.access'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.area'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.argument'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.argument_default'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.argument_validator'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.cache'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.display_extender'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.display'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.exposed_form'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.field'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.filter'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.join'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.pager'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.query'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.relationship'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.row'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.sort'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.style'));
+        $instance->addCachedDiscovery($this->get('plugin.manager.views.wizard'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'plugin.manager.action' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Action\ActionManager A Drupal\Core\Action\ActionManager instance.
+     */
+    protected function getPlugin_Manager_ActionService()
+    {
+        return $this->services['plugin.manager.action'] = new \Drupal\Core\Action\ActionManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.archiver' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Archiver\ArchiverManager A Drupal\Core\Archiver\ArchiverManager instance.
+     */
+    protected function getPlugin_Manager_ArchiverService()
+    {
+        return $this->services['plugin.manager.archiver'] = new \Drupal\Core\Archiver\ArchiverManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.block' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Block\BlockManager A Drupal\Core\Block\BlockManager instance.
+     */
+    protected function getPlugin_Manager_BlockService()
+    {
+        return $this->services['plugin.manager.block'] = new \Drupal\Core\Block\BlockManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.ckeditor.plugin' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\ckeditor\CKEditorPluginManager A Drupal\ckeditor\CKEditorPluginManager instance.
+     */
+    protected function getPlugin_Manager_Ckeditor_PluginService()
+    {
+        return $this->services['plugin.manager.ckeditor.plugin'] = new \Drupal\ckeditor\CKEditorPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.condition' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Condition\ConditionManager A Drupal\Core\Condition\ConditionManager instance.
+     */
+    protected function getPlugin_Manager_ConditionService()
+    {
+        return $this->services['plugin.manager.condition'] = new \Drupal\Core\Condition\ConditionManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.display_variant' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Display\VariantManager A Drupal\Core\Display\VariantManager instance.
+     */
+    protected function getPlugin_Manager_DisplayVariantService()
+    {
+        return $this->services['plugin.manager.display_variant'] = new \Drupal\Core\Display\VariantManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.editor' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\editor\Plugin\EditorManager A Drupal\editor\Plugin\EditorManager instance.
+     */
+    protected function getPlugin_Manager_EditorService()
+    {
+        return $this->services['plugin.manager.editor'] = new \Drupal\editor\Plugin\EditorManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.element_info' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\ElementInfoManager A Drupal\Core\Render\ElementInfoManager instance.
+     */
+    protected function getPlugin_Manager_ElementInfoService()
+    {
+        return $this->services['plugin.manager.element_info'] = new \Drupal\Core\Render\ElementInfoManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.entity_reference.selection' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\entity_reference\Plugin\Type\SelectionPluginManager A Drupal\entity_reference\Plugin\Type\SelectionPluginManager instance.
+     */
+    protected function getPlugin_Manager_EntityReference_SelectionService()
+    {
+        return $this->services['plugin.manager.entity_reference.selection'] = new \Drupal\entity_reference\Plugin\Type\SelectionPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.field.field_type' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Field\FieldTypePluginManager A Drupal\Core\Field\FieldTypePluginManager instance.
+     */
+    protected function getPlugin_Manager_Field_FieldTypeService()
+    {
+        return $this->services['plugin.manager.field.field_type'] = new \Drupal\Core\Field\FieldTypePluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.field.formatter' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Field\FormatterPluginManager A Drupal\Core\Field\FormatterPluginManager instance.
+     */
+    protected function getPlugin_Manager_Field_FormatterService()
+    {
+        return $this->services['plugin.manager.field.formatter'] = new \Drupal\Core\Field\FormatterPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'), $this->get('plugin.manager.field.field_type'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.field.widget' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Field\WidgetPluginManager A Drupal\Core\Field\WidgetPluginManager instance.
+     */
+    protected function getPlugin_Manager_Field_WidgetService()
+    {
+        return $this->services['plugin.manager.field.widget'] = new \Drupal\Core\Field\WidgetPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'), $this->get('plugin.manager.field.field_type'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.filter' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\filter\FilterPluginManager A Drupal\filter\FilterPluginManager instance.
+     */
+    protected function getPlugin_Manager_FilterService()
+    {
+        return $this->services['plugin.manager.filter'] = new \Drupal\filter\FilterPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.image.effect' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\image\ImageEffectManager A Drupal\image\ImageEffectManager instance.
+     */
+    protected function getPlugin_Manager_Image_EffectService()
+    {
+        return $this->services['plugin.manager.image.effect'] = new \Drupal\image\ImageEffectManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.mail' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Mail\MailManager A Drupal\Core\Mail\MailManager instance.
+     */
+    protected function getPlugin_Manager_MailService()
+    {
+        return $this->services['plugin.manager.mail'] = new \Drupal\Core\Mail\MailManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'), $this->get('config.factory'), $this->get('logger.factory'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.menu.contextual_link' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\ContextualLinkManager A Drupal\Core\Menu\ContextualLinkManager instance.
+     */
+    protected function getPlugin_Manager_Menu_ContextualLinkService()
+    {
+        return $this->services['plugin.manager.menu.contextual_link'] = new \Drupal\Core\Menu\ContextualLinkManager($this->get('controller_resolver'), $this->get('module_handler'), $this->get('cache.discovery'), $this->get('language_manager'), $this->get('access_manager'), $this->get('current_user'), $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.menu.link' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\MenuLinkManager A Drupal\Core\Menu\MenuLinkManager instance.
+     */
+    protected function getPlugin_Manager_Menu_LinkService()
+    {
+        return $this->services['plugin.manager.menu.link'] = new \Drupal\Core\Menu\MenuLinkManager($this->get('menu.tree_storage'), $this->get('menu_link.static.overrides'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.menu.local_action' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\LocalActionManager A Drupal\Core\Menu\LocalActionManager instance.
+     */
+    protected function getPlugin_Manager_Menu_LocalActionService()
+    {
+        return $this->services['plugin.manager.menu.local_action'] = new \Drupal\Core\Menu\LocalActionManager($this->get('controller_resolver'), $this->get('request_stack'), $this->get('current_route_match'), $this->get('router.route_provider'), $this->get('module_handler'), $this->get('cache.discovery'), $this->get('language_manager'), $this->get('access_manager'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.menu.local_task' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Menu\LocalTaskManager A Drupal\Core\Menu\LocalTaskManager instance.
+     */
+    protected function getPlugin_Manager_Menu_LocalTaskService()
+    {
+        return $this->services['plugin.manager.menu.local_task'] = new \Drupal\Core\Menu\LocalTaskManager($this->get('controller_resolver'), $this->get('request_stack'), $this->get('current_route_match'), $this->get('router.route_provider'), $this->get('router.builder'), $this->get('module_handler'), $this->get('cache.discovery'), $this->get('language_manager'), $this->get('access_manager'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.queue_worker' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Queue\QueueWorkerManager A Drupal\Core\Queue\QueueWorkerManager instance.
+     */
+    protected function getPlugin_Manager_QueueWorkerService()
+    {
+        return $this->services['plugin.manager.queue_worker'] = new \Drupal\Core\Queue\QueueWorkerManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.quickedit.editor' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\quickedit\Plugin\InPlaceEditorManager A Drupal\quickedit\Plugin\InPlaceEditorManager instance.
+     */
+    protected function getPlugin_Manager_Quickedit_EditorService()
+    {
+        return $this->services['plugin.manager.quickedit.editor'] = new \Drupal\quickedit\Plugin\InPlaceEditorManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.search' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\search\SearchPluginManager A Drupal\search\SearchPluginManager instance.
+     */
+    protected function getPlugin_Manager_SearchService()
+    {
+        return $this->services['plugin.manager.search'] = new \Drupal\search\SearchPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.tour.tip' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\tour\TipPluginManager A Drupal\tour\TipPluginManager instance.
+     */
+    protected function getPlugin_Manager_Tour_TipService()
+    {
+        return $this->services['plugin.manager.tour.tip'] = new \Drupal\tour\TipPluginManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.access' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_AccessService()
+    {
+        return $this->services['plugin.manager.views.access'] = new \Drupal\views\Plugin\ViewsPluginManager('access', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.area' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_AreaService()
+    {
+        return $this->services['plugin.manager.views.area'] = new \Drupal\views\Plugin\ViewsHandlerManager('area', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.argument' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_ArgumentService()
+    {
+        return $this->services['plugin.manager.views.argument'] = new \Drupal\views\Plugin\ViewsHandlerManager('argument', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.argument_default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_ArgumentDefaultService()
+    {
+        return $this->services['plugin.manager.views.argument_default'] = new \Drupal\views\Plugin\ViewsPluginManager('argument_default', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.argument_validator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_ArgumentValidatorService()
+    {
+        return $this->services['plugin.manager.views.argument_validator'] = new \Drupal\views\Plugin\ViewsPluginManager('argument_validator', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.cache' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_CacheService()
+    {
+        return $this->services['plugin.manager.views.cache'] = new \Drupal\views\Plugin\ViewsPluginManager('cache', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.display' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_DisplayService()
+    {
+        return $this->services['plugin.manager.views.display'] = new \Drupal\views\Plugin\ViewsPluginManager('display', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.display_extender' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_DisplayExtenderService()
+    {
+        return $this->services['plugin.manager.views.display_extender'] = new \Drupal\views\Plugin\ViewsPluginManager('display_extender', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.exposed_form' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_ExposedFormService()
+    {
+        return $this->services['plugin.manager.views.exposed_form'] = new \Drupal\views\Plugin\ViewsPluginManager('exposed_form', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.field' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_FieldService()
+    {
+        return $this->services['plugin.manager.views.field'] = new \Drupal\views\Plugin\ViewsHandlerManager('field', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.filter' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_FilterService()
+    {
+        return $this->services['plugin.manager.views.filter'] = new \Drupal\views\Plugin\ViewsHandlerManager('filter', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.join' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_JoinService()
+    {
+        return $this->services['plugin.manager.views.join'] = new \Drupal\views\Plugin\ViewsHandlerManager('join', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.pager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_PagerService()
+    {
+        return $this->services['plugin.manager.views.pager'] = new \Drupal\views\Plugin\ViewsPluginManager('pager', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.query' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_QueryService()
+    {
+        return $this->services['plugin.manager.views.query'] = new \Drupal\views\Plugin\ViewsPluginManager('query', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.relationship' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_RelationshipService()
+    {
+        return $this->services['plugin.manager.views.relationship'] = new \Drupal\views\Plugin\ViewsHandlerManager('relationship', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.row' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_RowService()
+    {
+        return $this->services['plugin.manager.views.row'] = new \Drupal\views\Plugin\ViewsPluginManager('row', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.sort' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsHandlerManager A Drupal\views\Plugin\ViewsHandlerManager instance.
+     */
+    protected function getPlugin_Manager_Views_SortService()
+    {
+        return $this->services['plugin.manager.views.sort'] = new \Drupal\views\Plugin\ViewsHandlerManager('sort', $this->get('container.namespaces'), $this->get('views.views_data'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.style' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_StyleService()
+    {
+        return $this->services['plugin.manager.views.style'] = new \Drupal\views\Plugin\ViewsPluginManager('style', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'plugin.manager.views.wizard' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Plugin\ViewsPluginManager A Drupal\views\Plugin\ViewsPluginManager instance.
+     */
+    protected function getPlugin_Manager_Views_WizardService()
+    {
+        return $this->services['plugin.manager.views.wizard'] = new \Drupal\views\Plugin\ViewsPluginManager('wizard', $this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'private_key' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\PrivateKey A Drupal\Core\PrivateKey instance.
+     */
+    protected function getPrivateKeyService()
+    {
+        return $this->services['private_key'] = new \Drupal\Core\PrivateKey($this->get('state'));
+    }
+
+    /**
+     * Gets the 'queue' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Queue\QueueFactory A Drupal\Core\Queue\QueueFactory instance.
+     */
+    protected function getQueueService()
+    {
+        $this->services['queue'] = $instance = new \Drupal\Core\Queue\QueueFactory($this->get('settings'));
+
+        $instance->setContainer($this);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'queue.database' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Queue\QueueDatabaseFactory A Drupal\Core\Queue\QueueDatabaseFactory instance.
+     */
+    protected function getQueue_DatabaseService()
+    {
+        return $this->services['queue.database'] = new \Drupal\Core\Queue\QueueDatabaseFactory($this->get('database'));
+    }
+
+    /**
+     * Gets the 'quickedit.editor.selector' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\quickedit\EditorSelector A Drupal\quickedit\EditorSelector instance.
+     */
+    protected function getQuickedit_Editor_SelectorService()
+    {
+        return $this->services['quickedit.editor.selector'] = new \Drupal\quickedit\EditorSelector($this->get('plugin.manager.quickedit.editor'), $this->get('plugin.manager.field.formatter'));
+    }
+
+    /**
+     * Gets the 'quickedit.metadata.generator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\quickedit\MetadataGenerator A Drupal\quickedit\MetadataGenerator instance.
+     */
+    protected function getQuickedit_Metadata_GeneratorService()
+    {
+        return $this->services['quickedit.metadata.generator'] = new \Drupal\quickedit\MetadataGenerator($this->get('access_check.quickedit.entity_field'), $this->get('quickedit.editor.selector'), $this->get('plugin.manager.quickedit.editor'));
+    }
+
+    /**
+     * Gets the 'redirect_response_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\RedirectResponseSubscriber A Drupal\Core\EventSubscriber\RedirectResponseSubscriber instance.
+     */
+    protected function getRedirectResponseSubscriberService()
+    {
+        return $this->services['redirect_response_subscriber'] = new \Drupal\Core\EventSubscriber\RedirectResponseSubscriber($this->get('url_generator'));
+    }
+
+    /**
+     * Gets the 'renderer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Render\Renderer A Drupal\Core\Render\Renderer instance.
+     */
+    protected function getRendererService()
+    {
+        return $this->services['renderer'] = new \Drupal\Core\Render\Renderer($this->get('controller_resolver'), $this->get('theme.manager'), $this->get('plugin.manager.element_info'));
+    }
+
+    /**
+     * Gets the 'replica_database_ignore__subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber A Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber instance.
+     */
+    protected function getReplicaDatabaseIgnoreSubscriberService()
+    {
+        return $this->services['replica_database_ignore__subscriber'] = new \Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber();
+    }
+
+    /**
+     * Gets the 'request_close_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\RequestCloseSubscriber A Drupal\Core\EventSubscriber\RequestCloseSubscriber instance.
+     */
+    protected function getRequestCloseSubscriberService()
+    {
+        return $this->services['request_close_subscriber'] = new \Drupal\Core\EventSubscriber\RequestCloseSubscriber($this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'request_stack' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Symfony\Component\HttpFoundation\RequestStack A Symfony\Component\HttpFoundation\RequestStack instance.
+     */
+    protected function getRequestStackService()
+    {
+        return $this->services['request_stack'] = new \Symfony\Component\HttpFoundation\RequestStack();
+    }
+
+    /**
+     * Gets the 'resolver_manager.entity' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\EntityResolverManager A Drupal\Core\Entity\EntityResolverManager instance.
+     */
+    protected function getResolverManager_EntityService()
+    {
+        return $this->services['resolver_manager.entity'] = new \Drupal\Core\Entity\EntityResolverManager($this->get('entity.manager'), $this->get('class_resolver'));
+    }
+
+    /**
+     * Gets the 'route_content_controller_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ContentControllerSubscriber A Drupal\Core\EventSubscriber\ContentControllerSubscriber instance.
+     */
+    protected function getRouteContentControllerSubscriberService()
+    {
+        return $this->services['route_content_controller_subscriber'] = new \Drupal\Core\EventSubscriber\ContentControllerSubscriber($this->get('content_negotiation'));
+    }
+
+    /**
+     * Gets the 'route_enhancer.authentication' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\Enhancer\AuthenticationEnhancer A Drupal\Core\Routing\Enhancer\AuthenticationEnhancer instance.
+     */
+    protected function getRouteEnhancer_AuthenticationService()
+    {
+        return $this->services['route_enhancer.authentication'] = new \Drupal\Core\Routing\Enhancer\AuthenticationEnhancer($this->get('authentication'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'route_enhancer.entity' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer A Drupal\Core\Entity\Enhancer\EntityRouteEnhancer instance.
+     */
+    protected function getRouteEnhancer_EntityService()
+    {
+        return $this->services['route_enhancer.entity'] = new \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer();
+    }
+
+    /**
+     * Gets the 'route_enhancer.param_conversion' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\Enhancer\ParamConversionEnhancer A Drupal\Core\Routing\Enhancer\ParamConversionEnhancer instance.
+     */
+    protected function getRouteEnhancer_ParamConversionService()
+    {
+        return $this->services['route_enhancer.param_conversion'] = new \Drupal\Core\Routing\Enhancer\ParamConversionEnhancer($this->get('paramconverter_manager'));
+    }
+
+    /**
+     * Gets the 'route_http_method_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\RouteMethodSubscriber A Drupal\Core\EventSubscriber\RouteMethodSubscriber instance.
+     */
+    protected function getRouteHttpMethodSubscriberService()
+    {
+        return $this->services['route_http_method_subscriber'] = new \Drupal\Core\EventSubscriber\RouteMethodSubscriber();
+    }
+
+    /**
+     * Gets the 'route_processor_csrf' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Access\RouteProcessorCsrf A Drupal\Core\Access\RouteProcessorCsrf instance.
+     */
+    protected function getRouteProcessorCsrfService()
+    {
+        return $this->services['route_processor_csrf'] = new \Drupal\Core\Access\RouteProcessorCsrf($this->get('csrf_token'));
+    }
+
+    /**
+     * Gets the 'route_processor_current' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\RouteProcessor\RouteProcessorCurrent A Drupal\Core\RouteProcessor\RouteProcessorCurrent instance.
+     */
+    protected function getRouteProcessorCurrentService()
+    {
+        return $this->services['route_processor_current'] = new \Drupal\Core\RouteProcessor\RouteProcessorCurrent($this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'route_processor_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\RouteProcessor\RouteProcessorManager A Drupal\Core\RouteProcessor\RouteProcessorManager instance.
+     */
+    protected function getRouteProcessorManagerService()
+    {
+        $this->services['route_processor_manager'] = $instance = new \Drupal\Core\RouteProcessor\RouteProcessorManager();
+
+        $instance->addOutbound($this->get('route_processor_current'), 200);
+        $instance->addOutbound($this->get('route_processor_csrf'), 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'route_special_attributes_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber A Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber instance.
+     */
+    protected function getRouteSpecialAttributesSubscriberService()
+    {
+        return $this->services['route_special_attributes_subscriber'] = new \Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber();
+    }
+
+    /**
+     * Gets the 'route_subscriber.entity' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber A Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber instance.
+     */
+    protected function getRouteSubscriber_EntityService()
+    {
+        return $this->services['route_subscriber.entity'] = new \Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber($this->get('resolver_manager.entity'));
+    }
+
+    /**
+     * Gets the 'route_subscriber.module' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ModuleRouteSubscriber A Drupal\Core\EventSubscriber\ModuleRouteSubscriber instance.
+     */
+    protected function getRouteSubscriber_ModuleService()
+    {
+        return $this->services['route_subscriber.module'] = new \Drupal\Core\EventSubscriber\ModuleRouteSubscriber($this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'router' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\AccessAwareRouter A Drupal\Core\Routing\AccessAwareRouter instance.
+     */
+    protected function getRouterService()
+    {
+        return $this->services['router'] = new \Drupal\Core\Routing\AccessAwareRouter($this->get('router.no_access_checks'), $this->get('access_manager'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'router.admin_context' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\AdminContext A Drupal\Core\Routing\AdminContext instance.
+     */
+    protected function getRouter_AdminContextService()
+    {
+        return $this->services['router.admin_context'] = new \Drupal\Core\Routing\AdminContext($this->get('current_route_match'));
+    }
+
+    /**
+     * Gets the 'router.builder' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\RouteBuilder A Drupal\Core\Routing\RouteBuilder instance.
+     */
+    protected function getRouter_BuilderService()
+    {
+        return $this->services['router.builder'] = new \Drupal\Core\Routing\RouteBuilder($this->get('router.dumper'), $this->get('lock'), $this->get('event_dispatcher'), $this->get('module_handler'), $this->get('controller_resolver'), $this->get('access_manager.check_provider'), $this->get('router.builder_indicator'));
+    }
+
+    /**
+     * Gets the 'router.builder_indicator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\RouteBuilderIndicator A Drupal\Core\Routing\RouteBuilderIndicator instance.
+     */
+    protected function getRouter_BuilderIndicatorService()
+    {
+        return $this->services['router.builder_indicator'] = new \Drupal\Core\Routing\RouteBuilderIndicator($this->get('state'));
+    }
+
+    /**
+     * Gets the 'router.dumper' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\MatcherDumper A Drupal\Core\Routing\MatcherDumper instance.
+     */
+    protected function getRouter_DumperService()
+    {
+        return $this->services['router.dumper'] = new \Drupal\Core\Routing\MatcherDumper($this->get('database'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'router.dynamic' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Symfony\Cmf\Component\Routing\DynamicRouter A Symfony\Cmf\Component\Routing\DynamicRouter instance.
+     */
+    protected function getRouter_DynamicService()
+    {
+        $this->services['router.dynamic'] = $instance = new \Symfony\Cmf\Component\Routing\DynamicRouter($this->get('router.request_context'), $this->get('router.matcher'), $this->get('url_generator'));
+
+        $instance->addRouteEnhancer($this->get('route_enhancer.authentication'), 1000);
+        $instance->addRouteEnhancer($this->get('route_enhancer.entity'), 20);
+        $instance->addRouteEnhancer($this->get('route_enhancer.param_conversion'), 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'router.matcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher A Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher instance.
+     */
+    protected function getRouter_MatcherService()
+    {
+        $this->services['router.matcher'] = $instance = new \Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher($this->get('router.route_provider'));
+
+        $instance->setFinalMatcher($this->get('router.matcher.final_matcher'));
+        $instance->addRouteFilter($this->get('content_type_header_matcher'), 0);
+        $instance->addRouteFilter($this->get('accept_header_matcher'), 0);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'router.matcher.final_matcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\UrlMatcher A Drupal\Core\Routing\UrlMatcher instance.
+     */
+    protected function getRouter_Matcher_FinalMatcherService()
+    {
+        return $this->services['router.matcher.final_matcher'] = new \Drupal\Core\Routing\UrlMatcher();
+    }
+
+    /**
+     * Gets the 'router.no_access_checks' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Symfony\Cmf\Component\Routing\ChainRouter A Symfony\Cmf\Component\Routing\ChainRouter instance.
+     */
+    protected function getRouter_NoAccessChecksService()
+    {
+        $this->services['router.no_access_checks'] = $instance = new \Symfony\Cmf\Component\Routing\ChainRouter();
+
+        $instance->setContext($this->get('router.request_context'));
+        $instance->add($this->get('router.dynamic'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'router.path_roots_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\PathRootsSubscriber A Drupal\Core\EventSubscriber\PathRootsSubscriber instance.
+     */
+    protected function getRouter_PathRootsSubscriberService()
+    {
+        return $this->services['router.path_roots_subscriber'] = new \Drupal\Core\EventSubscriber\PathRootsSubscriber($this->get('state'));
+    }
+
+    /**
+     * Gets the 'router.rebuild_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\RouterRebuildSubscriber A Drupal\Core\EventSubscriber\RouterRebuildSubscriber instance.
+     */
+    protected function getRouter_RebuildSubscriberService()
+    {
+        return $this->services['router.rebuild_subscriber'] = new \Drupal\Core\EventSubscriber\RouterRebuildSubscriber($this->get('router.builder'));
+    }
+
+    /**
+     * Gets the 'router.request_context' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\RequestContext A Drupal\Core\Routing\RequestContext instance.
+     */
+    protected function getRouter_RequestContextService()
+    {
+        $this->services['router.request_context'] = $instance = new \Drupal\Core\Routing\RequestContext();
+
+        $instance->fromRequestStack($this->get('request_stack'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'router.route_preloader' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\RoutePreloader A Drupal\Core\Routing\RoutePreloader instance.
+     */
+    protected function getRouter_RoutePreloaderService()
+    {
+        return $this->services['router.route_preloader'] = new \Drupal\Core\Routing\RoutePreloader($this->get('router.route_provider'), $this->get('state'), $this->get('content_negotiation'));
+    }
+
+    /**
+     * Gets the 'router.route_provider' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\RouteProvider A Drupal\Core\Routing\RouteProvider instance.
+     */
+    protected function getRouter_RouteProviderService()
+    {
+        return $this->services['router.route_provider'] = new \Drupal\Core\Routing\RouteProvider($this->get('database'), $this->get('router.builder'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'router_listener' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Symfony\Component\HttpKernel\EventListener\RouterListener A Symfony\Component\HttpKernel\EventListener\RouterListener instance.
+     */
+    protected function getRouterListenerService()
+    {
+        return $this->services['router_listener'] = new \Symfony\Component\HttpKernel\EventListener\RouterListener($this->get('router'), $this->get('router.request_context'), NULL, $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'search.search_page_repository' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\search\SearchPageRepository A Drupal\search\SearchPageRepository instance.
+     */
+    protected function getSearch_SearchPageRepositoryService()
+    {
+        return $this->services['search.search_page_repository'] = new \Drupal\search\SearchPageRepository($this->get('config.factory'), $this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'serialization.json' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\Serialization\Json A Drupal\Component\Serialization\Json instance.
+     */
+    protected function getSerialization_JsonService()
+    {
+        return $this->services['serialization.json'] = new \Drupal\Component\Serialization\Json();
+    }
+
+    /**
+     * Gets the 'serialization.phpserialize' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\Serialization\PhpSerialize A Drupal\Component\Serialization\PhpSerialize instance.
+     */
+    protected function getSerialization_PhpserializeService()
+    {
+        return $this->services['serialization.phpserialize'] = new \Drupal\Component\Serialization\PhpSerialize();
+    }
+
+    /**
+     * Gets the 'serialization.yaml' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\Serialization\Yaml A Drupal\Component\Serialization\Yaml instance.
+     */
+    protected function getSerialization_YamlService()
+    {
+        return $this->services['serialization.yaml'] = new \Drupal\Component\Serialization\Yaml();
+    }
+
+    /**
+     * Gets the 'service_container' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @throws RuntimeException always since this service is expected to be injected dynamically
+     */
+    protected function getServiceContainerService()
+    {
+        throw new RuntimeException('You have requested a synthetic service ("service_container"). The DIC does not know how to construct this service.');
+    }
+
+    /**
+     * Gets the 'session_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Session\SessionManager A Drupal\Core\Session\SessionManager instance.
+     */
+    protected function getSessionManagerService()
+    {
+        return $this->services['session_manager'] = new \Drupal\Core\Session\SessionManager($this->get('request_stack'), $this->get('database'), $this->get('session_manager.metadata_bag'), $this->get('settings'));
+    }
+
+    /**
+     * Gets the 'session_manager.metadata_bag' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Session\MetadataBag A Drupal\Core\Session\MetadataBag instance.
+     */
+    protected function getSessionManager_MetadataBagService()
+    {
+        return $this->services['session_manager.metadata_bag'] = new \Drupal\Core\Session\MetadataBag($this->get('settings'));
+    }
+
+    /**
+     * Gets the 'settings' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Site\Settings A Drupal\Core\Site\Settings instance.
+     */
+    protected function getSettingsService()
+    {
+        return $this->services['settings'] = \Drupal\Core\Site\Settings::getInstance();
+    }
+
+    /**
+     * Gets the 'state' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\State\State A Drupal\Core\State\State instance.
+     */
+    protected function getStateService()
+    {
+        return $this->services['state'] = new \Drupal\Core\State\State($this->get('keyvalue'));
+    }
+
+    /**
+     * Gets the 'stream_wrapper.public' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StreamWrapper\PublicStream A Drupal\Core\StreamWrapper\PublicStream instance.
+     */
+    protected function getStreamWrapper_PublicService()
+    {
+        return $this->services['stream_wrapper.public'] = new \Drupal\Core\StreamWrapper\PublicStream();
+    }
+
+    /**
+     * Gets the 'stream_wrapper.temporary' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StreamWrapper\TemporaryStream A Drupal\Core\StreamWrapper\TemporaryStream instance.
+     */
+    protected function getStreamWrapper_TemporaryService()
+    {
+        return $this->services['stream_wrapper.temporary'] = new \Drupal\Core\StreamWrapper\TemporaryStream();
+    }
+
+    /**
+     * Gets the 'stream_wrapper_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StreamWrapper\StreamWrapperManager A Drupal\Core\StreamWrapper\StreamWrapperManager instance.
+     */
+    protected function getStreamWrapperManagerService()
+    {
+        $this->services['stream_wrapper_manager'] = $instance = new \Drupal\Core\StreamWrapper\StreamWrapperManager();
+
+        $instance->setContainer($this);
+        $instance->addStreamWrapper('stream_wrapper.public', 'Drupal\\Core\\StreamWrapper\\PublicStream', 'public');
+        $instance->addStreamWrapper('stream_wrapper.temporary', 'Drupal\\Core\\StreamWrapper\\TemporaryStream', 'temporary');
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'string_translation' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StringTranslation\TranslationManager A Drupal\Core\StringTranslation\TranslationManager instance.
+     */
+    protected function getStringTranslationService()
+    {
+        $this->services['string_translation'] = $instance = new \Drupal\Core\StringTranslation\TranslationManager($this->get('language_manager'));
+
+        $instance->initLanguageManager();
+        $instance->addTranslator($this->get('string_translator.custom_strings'), 30);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'string_translator.custom_strings' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\StringTranslation\Translator\CustomStrings A Drupal\Core\StringTranslation\Translator\CustomStrings instance.
+     */
+    protected function getStringTranslator_CustomStringsService()
+    {
+        return $this->services['string_translator.custom_strings'] = new \Drupal\Core\StringTranslation\Translator\CustomStrings($this->get('settings'));
+    }
+
+    /**
+     * Gets the 'system.admin_path.route_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\EventSubscriber\AdminRouteSubscriber A Drupal\system\EventSubscriber\AdminRouteSubscriber instance.
+     */
+    protected function getSystem_AdminPath_RouteSubscriberService()
+    {
+        return $this->services['system.admin_path.route_subscriber'] = new \Drupal\system\EventSubscriber\AdminRouteSubscriber();
+    }
+
+    /**
+     * Gets the 'system.automatic_cron' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\EventSubscriber\AutomaticCron A Drupal\system\EventSubscriber\AutomaticCron instance.
+     */
+    protected function getSystem_AutomaticCronService()
+    {
+        return $this->services['system.automatic_cron'] = new \Drupal\system\EventSubscriber\AutomaticCron($this->get('cron'), $this->get('config.factory'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'system.breadcrumb.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\PathBasedBreadcrumbBuilder A Drupal\system\PathBasedBreadcrumbBuilder instance.
+     */
+    protected function getSystem_Breadcrumb_DefaultService()
+    {
+        return $this->services['system.breadcrumb.default'] = new \Drupal\system\PathBasedBreadcrumbBuilder($this->get('router.request_context'), $this->get('access_manager'), $this->get('router'), $this->get('path_processor_manager'), $this->get('config.factory'), $this->get('title_resolver'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'system.config_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\SystemConfigSubscriber A Drupal\system\SystemConfigSubscriber instance.
+     */
+    protected function getSystem_ConfigSubscriberService()
+    {
+        return $this->services['system.config_subscriber'] = new \Drupal\system\SystemConfigSubscriber();
+    }
+
+    /**
+     * Gets the 'system.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\SystemManager A Drupal\system\SystemManager instance.
+     */
+    protected function getSystem_ManagerService()
+    {
+        return $this->services['system.manager'] = new \Drupal\system\SystemManager($this->get('module_handler'), $this->get('entity.manager'), $this->get('request_stack'), $this->get('menu.link_tree'), $this->get('menu.active_trail'));
+    }
+
+    /**
+     * Gets the 'taxonomy_term.breadcrumb' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\taxonomy\TermBreadcrumbBuilder A Drupal\taxonomy\TermBreadcrumbBuilder instance.
+     */
+    protected function getTaxonomyTerm_BreadcrumbService()
+    {
+        return $this->services['taxonomy_term.breadcrumb'] = new \Drupal\taxonomy\TermBreadcrumbBuilder($this->get('entity.manager'));
+    }
+
+    /**
+     * Gets the 'theme.initialization' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\ThemeInitialization A Drupal\Core\Theme\ThemeInitialization instance.
+     */
+    protected function getTheme_InitializationService()
+    {
+        return $this->services['theme.initialization'] = new \Drupal\Core\Theme\ThemeInitialization($this->get('app.root'), $this->get('theme_handler'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'theme.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\ThemeManager A Drupal\Core\Theme\ThemeManager instance.
+     */
+    protected function getTheme_ManagerService()
+    {
+        return $this->services['theme.manager'] = new \Drupal\Core\Theme\ThemeManager($this->get('app.root'), $this->get('theme.registry'), $this->get('theme.negotiator'), $this->get('theme.initialization'), $this->get('request_stack'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'theme.negotiator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\ThemeNegotiator A Drupal\Core\Theme\ThemeNegotiator instance.
+     */
+    protected function getTheme_NegotiatorService()
+    {
+        $this->services['theme.negotiator'] = $instance = new \Drupal\Core\Theme\ThemeNegotiator($this->get('access_check.theme'));
+
+        $instance->addNegotiator($this->get('theme.negotiator.system.batch'), 1000);
+        $instance->addNegotiator($this->get('theme.negotiator.block.admin_demo'), 1000);
+        $instance->addNegotiator($this->get('theme.negotiator.ajax_base_page'), 1000);
+        $instance->addNegotiator($this->get('theme.negotiator.system.db_update'), 100);
+        $instance->addNegotiator($this->get('theme.negotiator.admin_theme'), -40);
+        $instance->addNegotiator($this->get('theme.negotiator.default'), -100);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'theme.negotiator.admin_theme' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\Theme\AdminNegotiator A Drupal\user\Theme\AdminNegotiator instance.
+     */
+    protected function getTheme_Negotiator_AdminThemeService()
+    {
+        return $this->services['theme.negotiator.admin_theme'] = new \Drupal\user\Theme\AdminNegotiator($this->get('current_user'), $this->get('config.factory'), $this->get('entity.manager'), $this->get('router.admin_context'));
+    }
+
+    /**
+     * Gets the 'theme.negotiator.ajax_base_page' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\AjaxBasePageNegotiator A Drupal\Core\Theme\AjaxBasePageNegotiator instance.
+     */
+    protected function getTheme_Negotiator_AjaxBasePageService()
+    {
+        return $this->services['theme.negotiator.ajax_base_page'] = new \Drupal\Core\Theme\AjaxBasePageNegotiator($this->get('csrf_token'), $this->get('config.factory'), $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'theme.negotiator.block.admin_demo' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\block\Theme\AdminDemoNegotiator A Drupal\block\Theme\AdminDemoNegotiator instance.
+     */
+    protected function getTheme_Negotiator_Block_AdminDemoService()
+    {
+        return $this->services['theme.negotiator.block.admin_demo'] = new \Drupal\block\Theme\AdminDemoNegotiator();
+    }
+
+    /**
+     * Gets the 'theme.negotiator.default' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\DefaultNegotiator A Drupal\Core\Theme\DefaultNegotiator instance.
+     */
+    protected function getTheme_Negotiator_DefaultService()
+    {
+        return $this->services['theme.negotiator.default'] = new \Drupal\Core\Theme\DefaultNegotiator($this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'theme.negotiator.system.batch' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\Theme\BatchNegotiator A Drupal\system\Theme\BatchNegotiator instance.
+     */
+    protected function getTheme_Negotiator_System_BatchService()
+    {
+        return $this->services['theme.negotiator.system.batch'] = new \Drupal\system\Theme\BatchNegotiator($this->get('batch.storage'), $this->get('request_stack'));
+    }
+
+    /**
+     * Gets the 'theme.negotiator.system.db_update' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\system\Theme\DbUpdateNegotiator A Drupal\system\Theme\DbUpdateNegotiator instance.
+     */
+    protected function getTheme_Negotiator_System_DbUpdateService()
+    {
+        return $this->services['theme.negotiator.system.db_update'] = new \Drupal\system\Theme\DbUpdateNegotiator($this->get('config.factory'));
+    }
+
+    /**
+     * Gets the 'theme.registry' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Theme\Registry A Drupal\Core\Theme\Registry instance.
+     */
+    protected function getTheme_RegistryService()
+    {
+        return $this->services['theme.registry'] = new \Drupal\Core\Theme\Registry($this->get('app.root'), $this->get('cache.default'), $this->get('lock'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'theme_handler' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Extension\ThemeHandler A Drupal\Core\Extension\ThemeHandler instance.
+     */
+    protected function getThemeHandlerService()
+    {
+        return $this->services['theme_handler'] = new \Drupal\Core\Extension\ThemeHandler($this->get('app.root'), $this->get('config.factory'), $this->get('module_handler'), $this->get('state'), $this->get('info_parser'), $this->get('logger.channel.default'), $this->get('asset.css.collection_optimizer'), $this->get('config.installer'), $this->get('config.manager'), $this->get('router.builder_indicator'));
+    }
+
+    /**
+     * Gets the 'title_resolver' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Controller\TitleResolver A Drupal\Core\Controller\TitleResolver instance.
+     */
+    protected function getTitleResolverService()
+    {
+        return $this->services['title_resolver'] = new \Drupal\Core\Controller\TitleResolver($this->get('controller_resolver'), $this->get('string_translation'));
+    }
+
+    /**
+     * Gets the 'token' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Utility\Token A Drupal\Core\Utility\Token instance.
+     */
+    protected function getTokenService()
+    {
+        return $this->services['token'] = new \Drupal\Core\Utility\Token($this->get('module_handler'), $this->get('cache.discovery'), $this->get('language_manager'));
+    }
+
+    /**
+     * Gets the 'toolbar.page_cache_request_policy.allow_toolbar_path' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\toolbar\PageCache\AllowToolbarPath A Drupal\toolbar\PageCache\AllowToolbarPath instance.
+     */
+    protected function getToolbar_PageCacheRequestPolicy_AllowToolbarPathService()
+    {
+        return $this->services['toolbar.page_cache_request_policy.allow_toolbar_path'] = new \Drupal\toolbar\PageCache\AllowToolbarPath();
+    }
+
+    /**
+     * Gets the 'transliteration' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Transliteration\PHPTransliteration A Drupal\Core\Transliteration\PHPTransliteration instance.
+     */
+    protected function getTransliterationService()
+    {
+        return $this->services['transliteration'] = new \Drupal\Core\Transliteration\PHPTransliteration();
+    }
+
+    /**
+     * Gets the 'twig' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Template\TwigEnvironment A Drupal\Core\Template\TwigEnvironment instance.
+     */
+    protected function getTwigService()
+    {
+        $this->services['twig'] = $instance = new \Drupal\Core\Template\TwigEnvironment($this->get('app.root'), $this->get('twig.loader.filesystem'), $this->get('module_handler'), $this->get('theme_handler'), array('debug' => false, 'auto_reload' => NULL, 'cache' => true));
+
+        $instance->addExtension($this->get('twig.extension'));
+        $instance->addExtension($this->get('twig.extension.debug'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'twig.extension' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Template\TwigExtension A Drupal\Core\Template\TwigExtension instance.
+     */
+    protected function getTwig_ExtensionService()
+    {
+        $this->services['twig.extension'] = $instance = new \Drupal\Core\Template\TwigExtension();
+
+        $instance->setGenerators($this->get('url_generator'));
+        $instance->setLinkGenerator($this->get('link_generator'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'twig.extension.debug' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Twig_Extension_Debug A Twig_Extension_Debug instance.
+     */
+    protected function getTwig_Extension_DebugService()
+    {
+        return $this->services['twig.extension.debug'] = new \Twig_Extension_Debug();
+    }
+
+    /**
+     * Gets the 'twig.loader.filesystem' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Twig_Loader_Filesystem A Twig_Loader_Filesystem instance.
+     */
+    protected function getTwig_Loader_FilesystemService()
+    {
+        return $this->services['twig.loader.filesystem'] = new \Twig_Loader_Filesystem($this->get('app.root'));
+    }
+
+    /**
+     * Gets the 'typed_data_manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\TypedData\TypedDataManager A Drupal\Core\TypedData\TypedDataManager instance.
+     */
+    protected function getTypedDataManagerService()
+    {
+        $this->services['typed_data_manager'] = $instance = new \Drupal\Core\TypedData\TypedDataManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+
+        $instance->setValidationConstraintManager($this->get('validation.constraint'));
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'unrouted_url_assembler' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Utility\UnroutedUrlAssembler A Drupal\Core\Utility\UnroutedUrlAssembler instance.
+     */
+    protected function getUnroutedUrlAssemblerService()
+    {
+        return $this->services['unrouted_url_assembler'] = new \Drupal\Core\Utility\UnroutedUrlAssembler($this->get('request_stack'), $this->get('config.factory'), $this->get('path_processor_manager'));
+    }
+
+    /**
+     * Gets the 'update.fetcher' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\update\UpdateFetcher A Drupal\update\UpdateFetcher instance.
+     */
+    protected function getUpdate_FetcherService()
+    {
+        return $this->services['update.fetcher'] = new \Drupal\update\UpdateFetcher($this->get('config.factory'), $this->get('http_client'));
+    }
+
+    /**
+     * Gets the 'update.manager' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\update\UpdateManager A Drupal\update\UpdateManager instance.
+     */
+    protected function getUpdate_ManagerService()
+    {
+        return $this->services['update.manager'] = new \Drupal\update\UpdateManager($this->get('config.factory'), $this->get('module_handler'), $this->get('update.processor'), $this->get('string_translation'), $this->get('keyvalue.expirable'));
+    }
+
+    /**
+     * Gets the 'update.processor' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\update\UpdateProcessor A Drupal\update\UpdateProcessor instance.
+     */
+    protected function getUpdate_ProcessorService()
+    {
+        return $this->services['update.processor'] = new \Drupal\update\UpdateProcessor($this->get('config.factory'), $this->get('queue'), $this->get('update.fetcher'), $this->get('state'), $this->get('private_key'), $this->get('keyvalue'), $this->get('keyvalue.expirable'));
+    }
+
+    /**
+     * Gets the 'url_generator' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Routing\UrlGenerator A Drupal\Core\Routing\UrlGenerator instance.
+     */
+    protected function getUrlGeneratorService()
+    {
+        $this->services['url_generator'] = $instance = new \Drupal\Core\Routing\UrlGenerator($this->get('router.route_provider'), $this->get('path_processor_manager'), $this->get('route_processor_manager'), $this->get('config.factory'), $this->get('logger.channel.default'), $this->get('request_stack'));
+
+        if ($this->has('router.request_context')) {
+            $instance->setContext($this->get('router.request_context', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+        }
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'user.auth' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\UserAuth A Drupal\user\UserAuth instance.
+     */
+    protected function getUser_AuthService()
+    {
+        return $this->services['user.auth'] = new \Drupal\user\UserAuth($this->get('entity.manager'), $this->get('password'));
+    }
+
+    /**
+     * Gets the 'user.autocomplete' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\UserAutocomplete A Drupal\user\UserAutocomplete instance.
+     */
+    protected function getUser_AutocompleteService()
+    {
+        return $this->services['user.autocomplete'] = new \Drupal\user\UserAutocomplete($this->get('config.factory'), $this->get('entity.manager'), $this->get('entity.query'));
+    }
+
+    /**
+     * Gets the 'user.data' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\UserData A Drupal\user\UserData instance.
+     */
+    protected function getUser_DataService()
+    {
+        return $this->services['user.data'] = new \Drupal\user\UserData($this->get('database'));
+    }
+
+    /**
+     * Gets the 'user.permissions' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\PermissionHandler A Drupal\user\PermissionHandler instance.
+     */
+    protected function getUser_PermissionsService()
+    {
+        return $this->services['user.permissions'] = new \Drupal\user\PermissionHandler($this->get('module_handler'), $this->get('string_translation'), $this->get('controller_resolver'));
+    }
+
+    /**
+     * Gets the 'user.permissions_hash' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\PermissionsHash A Drupal\user\PermissionsHash instance.
+     */
+    protected function getUser_PermissionsHashService()
+    {
+        return $this->services['user.permissions_hash'] = new \Drupal\user\PermissionsHash($this->get('private_key'), $this->get('cache.default'));
+    }
+
+    /**
+     * Gets the 'user.tempstore' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\TempStoreFactory A Drupal\user\TempStoreFactory instance.
+     */
+    protected function getUser_TempstoreService()
+    {
+        return $this->services['user.tempstore'] = new \Drupal\user\TempStoreFactory($this->get('serialization.phpserialize'), $this->get('database'), $this->get('lock'), 604800);
+    }
+
+    /**
+     * Gets the 'user_access_denied_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\EventSubscriber\AccessDeniedSubscriber A Drupal\user\EventSubscriber\AccessDeniedSubscriber instance.
+     */
+    protected function getUserAccessDeniedSubscriberService()
+    {
+        return $this->services['user_access_denied_subscriber'] = new \Drupal\user\EventSubscriber\AccessDeniedSubscriber($this->get('current_user'), $this->get('url_generator'));
+    }
+
+    /**
+     * Gets the 'user_maintenance_mode_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\user\EventSubscriber\MaintenanceModeSubscriber A Drupal\user\EventSubscriber\MaintenanceModeSubscriber instance.
+     */
+    protected function getUserMaintenanceModeSubscriberService()
+    {
+        return $this->services['user_maintenance_mode_subscriber'] = new \Drupal\user\EventSubscriber\MaintenanceModeSubscriber($this->get('maintenance_mode'), $this->get('current_user'));
+    }
+
+    /**
+     * Gets the 'uuid' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Component\Uuid\Php A Drupal\Component\Uuid\Php instance.
+     */
+    protected function getUuidService()
+    {
+        return $this->services['uuid'] = new \Drupal\Component\Uuid\Php();
+    }
+
+    /**
+     * Gets the 'validation.constraint' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\Validation\ConstraintManager A Drupal\Core\Validation\ConstraintManager instance.
+     */
+    protected function getValidation_ConstraintService()
+    {
+        return $this->services['validation.constraint'] = new \Drupal\Core\Validation\ConstraintManager($this->get('container.namespaces'), $this->get('cache.discovery'), $this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'view_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\Core\EventSubscriber\ViewSubscriber A Drupal\Core\EventSubscriber\ViewSubscriber instance.
+     */
+    protected function getViewSubscriberService()
+    {
+        return $this->services['view_subscriber'] = new \Drupal\Core\EventSubscriber\ViewSubscriber($this->get('content_negotiation'), $this->get('title_resolver'));
+    }
+
+    /**
+     * Gets the 'views.analyzer' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\Analyzer A Drupal\views\Analyzer instance.
+     */
+    protected function getViews_AnalyzerService()
+    {
+        return $this->services['views.analyzer'] = new \Drupal\views\Analyzer($this->get('module_handler'));
+    }
+
+    /**
+     * Gets the 'views.executable' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\ViewExecutableFactory A Drupal\views\ViewExecutableFactory instance.
+     */
+    protected function getViews_ExecutableService()
+    {
+        return $this->services['views.executable'] = new \Drupal\views\ViewExecutableFactory($this->get('current_user'), $this->get('request_stack'), $this->get('views.views_data'));
+    }
+
+    /**
+     * Gets the 'views.exposed_form_cache' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\ExposedFormCache A Drupal\views\ExposedFormCache instance.
+     */
+    protected function getViews_ExposedFormCacheService()
+    {
+        return $this->services['views.exposed_form_cache'] = new \Drupal\views\ExposedFormCache();
+    }
+
+    /**
+     * Gets the 'views.route_subscriber' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\EventSubscriber\RouteSubscriber A Drupal\views\EventSubscriber\RouteSubscriber instance.
+     */
+    protected function getViews_RouteSubscriberService()
+    {
+        return $this->services['views.route_subscriber'] = new \Drupal\views\EventSubscriber\RouteSubscriber($this->get('entity.manager'), $this->get('state'));
+    }
+
+    /**
+     * Gets the 'views.views_data' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\ViewsData A Drupal\views\ViewsData instance.
+     */
+    protected function getViews_ViewsDataService()
+    {
+        return $this->services['views.views_data'] = new \Drupal\views\ViewsData($this->get('cache.discovery'), $this->get('config.factory'), $this->get('module_handler'), $this->get('language_manager'));
+    }
+
+    /**
+     * Gets the 'views.views_data_helper' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * @return \Drupal\views\ViewsDataHelper A Drupal\views\ViewsDataHelper instance.
+     */
+    protected function getViews_ViewsDataHelperService()
+    {
+        return $this->services['views.views_data_helper'] = new \Drupal\views\ViewsDataHelper($this->get('views.views_data'));
+    }
+
+    /**
+     * Gets the 'access_manager.check_provider' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * This service is private.
+     * If you want to be able to request this service from the container directly,
+     * make it public, otherwise you might end up with broken code.
+     *
+     * @return \Drupal\Core\Access\CheckProvider A Drupal\Core\Access\CheckProvider instance.
+     */
+    protected function getAccessManager_CheckProviderService()
+    {
+        $this->services['access_manager.check_provider'] = $instance = new \Drupal\Core\Access\CheckProvider();
+
+        $instance->setContainer($this);
+        $instance->addCheckService('access_check.default', 'access', array(0 => '_access'), false);
+        $instance->addCheckService('access_check.entity', 'access', array(0 => '_entity_access'), false);
+        $instance->addCheckService('access_check.entity_create', 'access', array(0 => '_entity_create_access'), false);
+        $instance->addCheckService('access_check.theme', 'access', array(0 => '_access_theme'), false);
+        $instance->addCheckService('access_check.custom', 'access', array(0 => '_custom_access'), false);
+        $instance->addCheckService('access_check.csrf', 'access', array(0 => '_csrf_token'), true);
+        $instance->addCheckService('access_check.contact_personal', 'access', array(0 => '_access_contact_personal_tab'), false);
+        $instance->addCheckService('access_check.field_ui.view_mode', 'access', array(0 => '_field_ui_view_mode_access'), false);
+        $instance->addCheckService('access_check.field_ui.form_mode', 'access', array(0 => '_field_ui_form_mode_access'), false);
+        $instance->addCheckService('access_check.node.revision', 'access', array(0 => '_access_node_revision'), false);
+        $instance->addCheckService('access_check.node.add', 'access', array(0 => '_node_add_access'), false);
+        $instance->addCheckService('access_check.node.preview', 'access', array(0 => '_node_preview_access'), false);
+        $instance->addCheckService('access_check.quickedit.entity_field', 'access', array(0 => '_access_quickedit_entity_field'), false);
+        $instance->addCheckService('access_check.cron', 'access', array(0 => '_access_system_cron'), false);
+        $instance->addCheckService('access_check.db_update', 'access', array(0 => '_access_system_update'), false);
+        $instance->addCheckService('access_check.update.manager_access', 'access', array(0 => '_access_update_manager'), false);
+        $instance->addCheckService('access_check.permission', 'access', array(0 => '_permission'), false);
+        $instance->addCheckService('access_check.user.register', 'access', array(0 => '_access_user_register'), false);
+        $instance->addCheckService('access_check.user.role', 'access', array(0 => '_role'), false);
+        $instance->addCheckService('access_check.user.login_status', 'access', array(0 => '_user_is_logged_in'), false);
+
+        return $instance;
+    }
+
+    /**
+     * Gets the 'menu.tree_storage' service.
+     *
+     * This service is shared.
+     * This method always returns the same instance of the service.
+     *
+     * This service is private.
+     * If you want to be able to request this service from the container directly,
+     * make it public, otherwise you might end up with broken code.
+     *
+     * @return \Drupal\Core\Menu\MenuTreeStorage A Drupal\Core\Menu\MenuTreeStorage instance.
+     */
+    protected function getMenu_TreeStorageService()
+    {
+        return $this->services['menu.tree_storage'] = new \Drupal\Core\Menu\MenuTreeStorage($this->get('database'), $this->get('cache.menu'), 'menu_tree');
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getParameter($name)
+    {
+        $name = strtolower($name);
+
+        if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters))) {
+            throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
+        }
+
+        return $this->parameters[$name];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function hasParameter($name)
+    {
+        $name = strtolower($name);
+
+        return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setParameter($name, $value)
+    {
+        throw new LogicException('Impossible to call set() on a frozen ParameterBag.');
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getParameterBag()
+    {
+        if (null === $this->parameterBag) {
+            $this->parameterBag = new FrozenParameterBag($this->parameters);
+        }
+
+        return $this->parameterBag;
+    }
+}
diff --git a/sites/default/files/php/twig/.htaccess b/sites/default/files/php/twig/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#20#17#46be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637/.htaccess b/sites/default/files/php/twig/1#20#17#46be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#20#17#46be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#20#17#46be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637/c3e3be1c974581407bfa5d12d13ffab01dea434a64429432a39aa22a3e2328ad.php b/sites/default/files/php/twig/1#20#17#46be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637/c3e3be1c974581407bfa5d12d13ffab01dea434a64429432a39aa22a3e2328ad.php
new file mode 100644
index 0000000..d5005dd
--- /dev/null
+++ b/sites/default/files/php/twig/1#20#17#46be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637/c3e3be1c974581407bfa5d12d13ffab01dea434a64429432a39aa22a3e2328ad.php
@@ -0,0 +1,41 @@
+<?php
+
+/* core/modules/system/templates/checkboxes.html.twig */
+class __TwigTemplate_201746be24570f429f6fb5d43c86ae8c1e547bf36ca4642b3a5b85ed4ad4d637 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 17
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => "form-checkboxes"), "method"), "html", null, true);
+        echo ">";
+        echo twig_drupal_escape_filter($this->env, (isset($context["children"]) ? $context["children"] : null), "html", null, true);
+        echo "</div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/checkboxes.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  19 => 17,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#20#1f#3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801/.htaccess b/sites/default/files/php/twig/1#20#1f#3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#20#1f#3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#20#1f#3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801/5538a48d1fa16456114623ee83b2b3261de810b6efc2a2a83376d2d9b52194ee.php b/sites/default/files/php/twig/1#20#1f#3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801/5538a48d1fa16456114623ee83b2b3261de810b6efc2a2a83376d2d9b52194ee.php
new file mode 100644
index 0000000..00f0a97
--- /dev/null
+++ b/sites/default/files/php/twig/1#20#1f#3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801/5538a48d1fa16456114623ee83b2b3261de810b6efc2a2a83376d2d9b52194ee.php
@@ -0,0 +1,45 @@
+<?php
+
+/* core/modules/system/templates/form-element-label.html.twig */
+class __TwigTemplate_201f3741ace79f9aba267e3fa256116a85570fc610313c1952e43a048fb49801 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 18
+        $context["classes"] = array(0 => ((((isset($context["title_display"]) ? $context["title_display"] : null) == "after")) ? ("option") : ("")), 1 => ((((isset($context["title_display"]) ? $context["title_display"] : null) == "invisible")) ? ("visually-hidden") : ("")), 2 => (((isset($context["required"]) ? $context["required"] : null)) ? ("form-required") : ("")));
+        // line 24
+        if (((!twig_test_empty((isset($context["title"]) ? $context["title"] : null))) || (isset($context["required"]) ? $context["required"] : null))) {
+            // line 25
+            echo "<label";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+            echo ">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["title"]) ? $context["title"] : null), "html", null, true);
+            echo "</label>";
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/form-element-label.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  23 => 25,  21 => 24,  19 => 18,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#22#5f#899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734/.htaccess b/sites/default/files/php/twig/1#22#5f#899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#22#5f#899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#22#5f#899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734/0c67e8993ce6b40f0d1bc15e29530af7cacb8a80bee7e1e55d6f47a88088eef8.php b/sites/default/files/php/twig/1#22#5f#899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734/0c67e8993ce6b40f0d1bc15e29530af7cacb8a80bee7e1e55d6f47a88088eef8.php
new file mode 100644
index 0000000..71f4bd2
--- /dev/null
+++ b/sites/default/files/php/twig/1#22#5f#899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734/0c67e8993ce6b40f0d1bc15e29530af7cacb8a80bee7e1e55d6f47a88088eef8.php
@@ -0,0 +1,41 @@
+<?php
+
+/* core/modules/system/templates/container.html.twig */
+class __TwigTemplate_225f899b83ce88f9e5e8023a70ae8fe7d40a3fe932fa7ab63599a457ac76e734 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 20
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (((isset($context["has_parent"]) ? $context["has_parent"] : null)) ? ("form-wrapper") : (""))), "method"), "html", null, true);
+        echo ">";
+        echo twig_drupal_escape_filter($this->env, (isset($context["children"]) ? $context["children"] : null), "html", null, true);
+        echo "</div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/container.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  19 => 20,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#27#0d#9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8/.htaccess b/sites/default/files/php/twig/1#27#0d#9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#27#0d#9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#27#0d#9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8/4e07ad0366679777987ef443bdc19fae3eddd2c24f3bc905ca28a796161bde5e.php b/sites/default/files/php/twig/1#27#0d#9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8/4e07ad0366679777987ef443bdc19fae3eddd2c24f3bc905ca28a796161bde5e.php
new file mode 100644
index 0000000..d981850
--- /dev/null
+++ b/sites/default/files/php/twig/1#27#0d#9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8/4e07ad0366679777987ef443bdc19fae3eddd2c24f3bc905ca28a796161bde5e.php
@@ -0,0 +1,79 @@
+<?php
+
+/* core/modules/system/templates/breadcrumb.html.twig */
+class __TwigTemplate_270d9abae0f824d3328fb4a63aac8edf620ee998f32f0a7fb8b2982153f3bcc8 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 12
+        if ((isset($context["breadcrumb"]) ? $context["breadcrumb"] : null)) {
+            // line 13
+            echo "  <nav class=\"breadcrumb\" role=\"navigation\" aria-labelledby=\"system-breadcrumb\">
+    <h2 id=\"system-breadcrumb\" class=\"visually-hidden\">";
+            // line 14
+            echo twig_render_var(t("Breadcrumb"));
+            echo "</h2>
+    <ol>
+    ";
+            // line 16
+            $context['_parent'] = (array) $context;
+            $context['_seq'] = twig_ensure_traversable((isset($context["breadcrumb"]) ? $context["breadcrumb"] : null));
+            foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
+                // line 17
+                echo "      <li>
+        ";
+                // line 18
+                if ($this->getAttribute($context["item"], "url", array())) {
+                    // line 19
+                    echo "          <a href=\"";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "url", array()), "html", null, true);
+                    echo "\">";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "text", array()), "html", null, true);
+                    echo "</a>
+        ";
+                } else {
+                    // line 21
+                    echo "          ";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "text", array()), "html", null, true);
+                    echo "
+        ";
+                }
+                // line 23
+                echo "      </li>
+    ";
+            }
+            $_parent = $context['_parent'];
+            unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
+            $context = array_intersect_key($context, $_parent) + $_parent;
+            // line 25
+            echo "    </ol>
+  </nav>
+";
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/breadcrumb.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  59 => 25,  52 => 23,  46 => 21,  38 => 19,  36 => 18,  33 => 17,  29 => 16,  24 => 14,  21 => 13,  19 => 12,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#40#73#4739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23/.htaccess b/sites/default/files/php/twig/1#40#73#4739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#40#73#4739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#40#73#4739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23/f64314dbafe58f1237df7dbc9e502a8fb04146703e40f291cc17e82ca6edc429.php b/sites/default/files/php/twig/1#40#73#4739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23/f64314dbafe58f1237df7dbc9e502a8fb04146703e40f291cc17e82ca6edc429.php
new file mode 100644
index 0000000..7ffe47b
--- /dev/null
+++ b/sites/default/files/php/twig/1#40#73#4739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23/f64314dbafe58f1237df7dbc9e502a8fb04146703e40f291cc17e82ca6edc429.php
@@ -0,0 +1,76 @@
+<?php
+
+/* @classy/block--search-form-block.html.twig */
+class __TwigTemplate_40734739a50de990a553ecf11e59110a204248099f40c7011731d1e8bca5de23 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+            'content' => array($this, 'block_content'),
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 39
+        $context["classes"] = array(0 => "block", 1 => "block-search", 2 => "container-inline");
+        // line 45
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+        echo ">
+  ";
+        // line 46
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_prefix"]) ? $context["title_prefix"] : null), "html", null, true);
+        echo "
+  ";
+        // line 47
+        if ((isset($context["label"]) ? $context["label"] : null)) {
+            // line 48
+            echo "    <h2";
+            echo twig_drupal_escape_filter($this->env, (isset($context["title_attributes"]) ? $context["title_attributes"] : null), "html", null, true);
+            echo ">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["label"]) ? $context["label"] : null), "html", null, true);
+            echo "</h2>
+  ";
+        }
+        // line 50
+        echo "  ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_suffix"]) ? $context["title_suffix"] : null), "html", null, true);
+        echo "
+  ";
+        // line 51
+        $this->displayBlock('content', $context, $blocks);
+        // line 54
+        echo "</div>
+";
+    }
+
+    // line 51
+    public function block_content($context, array $blocks = array())
+    {
+        // line 52
+        echo "    ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["content"]) ? $context["content"] : null), "html", null, true);
+        echo "
+  ";
+    }
+
+    public function getTemplateName()
+    {
+        return "@classy/block--search-form-block.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  56 => 52,  53 => 51,  48 => 54,  46 => 51,  41 => 50,  33 => 48,  31 => 47,  27 => 46,  22 => 45,  20 => 39,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#41#98#9c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8/.htaccess b/sites/default/files/php/twig/1#41#98#9c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#41#98#9c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#41#98#9c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8/387cbde2b8f9400875edebfabe822bef2d19df68c3dcc07bdea88f7cf33d962f.php b/sites/default/files/php/twig/1#41#98#9c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8/387cbde2b8f9400875edebfabe822bef2d19df68c3dcc07bdea88f7cf33d962f.php
new file mode 100644
index 0000000..5f5d346
--- /dev/null
+++ b/sites/default/files/php/twig/1#41#98#9c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8/387cbde2b8f9400875edebfabe822bef2d19df68c3dcc07bdea88f7cf33d962f.php
@@ -0,0 +1,81 @@
+<?php
+
+/* core/themes/bartik/templates/block.html.twig */
+class __TwigTemplate_41989c421dd53bc59a3afdc62b0538ff107c76e1c33f6c485bbe4bcafcf99bb8 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+            'content' => array($this, 'block_content'),
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 40
+        $context["classes"] = array(0 => "block", 1 => ("block-" . \Drupal\Component\Utility\Html::getClass($this->getAttribute((isset($context["configuration"]) ? $context["configuration"] : null), "provider", array()))));
+        // line 45
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+        echo ">
+  ";
+        // line 46
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_prefix"]) ? $context["title_prefix"] : null), "html", null, true);
+        echo "
+  ";
+        // line 47
+        if ((isset($context["label"]) ? $context["label"] : null)) {
+            // line 48
+            echo "    <h2";
+            echo twig_drupal_escape_filter($this->env, (isset($context["title_attributes"]) ? $context["title_attributes"] : null), "html", null, true);
+            echo ">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["label"]) ? $context["label"] : null), "html", null, true);
+            echo "</h2>
+  ";
+        }
+        // line 50
+        echo "  ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_suffix"]) ? $context["title_suffix"] : null), "html", null, true);
+        echo "
+  ";
+        // line 51
+        $this->displayBlock('content', $context, $blocks);
+        // line 56
+        echo "</div>
+";
+    }
+
+    // line 51
+    public function block_content($context, array $blocks = array())
+    {
+        // line 52
+        echo "    <div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["content_attributes"]) ? $context["content_attributes"] : null), "addClass", array(0 => "content"), "method"), "html", null, true);
+        echo ">
+      ";
+        // line 53
+        echo twig_drupal_escape_filter($this->env, (isset($context["content"]) ? $context["content"] : null), "html", null, true);
+        echo "
+    </div>
+  ";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/themes/bartik/templates/block.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  61 => 53,  56 => 52,  53 => 51,  48 => 56,  46 => 51,  41 => 50,  33 => 48,  31 => 47,  27 => 46,  22 => 45,  20 => 40,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#43#8f#a4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c/.htaccess b/sites/default/files/php/twig/1#43#8f#a4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#43#8f#a4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#43#8f#a4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c/f761b9cc549d93d8cf78f056a01f56262ca922671abf73d5f7f8041bc6c1631f.php b/sites/default/files/php/twig/1#43#8f#a4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c/f761b9cc549d93d8cf78f056a01f56262ca922671abf73d5f7f8041bc6c1631f.php
new file mode 100644
index 0000000..49a2f80
--- /dev/null
+++ b/sites/default/files/php/twig/1#43#8f#a4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c/f761b9cc549d93d8cf78f056a01f56262ca922671abf73d5f7f8041bc6c1631f.php
@@ -0,0 +1,41 @@
+<?php
+
+/* core/modules/system/templates/image.html.twig */
+class __TwigTemplate_438fa4d130c57dcd48c38a7e25ba3c1ac44876333eb81e693bcf7be5e9ad7b8c extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 16
+        $context["classes"] = array(0 => (((isset($context["style_name"]) ? $context["style_name"] : null)) ? (("image-style-" . \Drupal\Component\Utility\Html::getClass((isset($context["style_name"]) ? $context["style_name"] : null)))) : ("")));
+        // line 20
+        echo "<img";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+        echo " />
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/image.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  21 => 20,  19 => 16,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#56#21#0bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628/.htaccess b/sites/default/files/php/twig/1#56#21#0bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#56#21#0bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#56#21#0bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628/718d4aae934cb73ccbaac1f6099e5c8c5c6842138506ba2cc4ba22340a29c8f9.php b/sites/default/files/php/twig/1#56#21#0bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628/718d4aae934cb73ccbaac1f6099e5c8c5c6842138506ba2cc4ba22340a29c8f9.php
new file mode 100644
index 0000000..4ef0557
--- /dev/null
+++ b/sites/default/files/php/twig/1#56#21#0bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628/718d4aae934cb73ccbaac1f6099e5c8c5c6842138506ba2cc4ba22340a29c8f9.php
@@ -0,0 +1,49 @@
+<?php
+
+/* core/modules/system/templates/region.html.twig */
+class __TwigTemplate_56210bce9b0da732e1929d25c19eb0b2d31d09fe3411bd03157edd7b0032b628 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 18
+        $context["classes"] = array(0 => "region", 1 => ("region-" . \Drupal\Component\Utility\Html::getClass((isset($context["region"]) ? $context["region"] : null))));
+        // line 23
+        if ((isset($context["content"]) ? $context["content"] : null)) {
+            // line 24
+            echo "  <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+            echo ">
+    ";
+            // line 25
+            echo twig_drupal_escape_filter($this->env, (isset($context["content"]) ? $context["content"] : null), "html", null, true);
+            echo "
+  </div>
+";
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/region.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  28 => 25,  23 => 24,  21 => 23,  19 => 18,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#5f#36#854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e/.htaccess b/sites/default/files/php/twig/1#5f#36#854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#5f#36#854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#5f#36#854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e/00613ba0d3f82368c561d107fe44297982bfcbf2d8347c55f710698281466b2d.php b/sites/default/files/php/twig/1#5f#36#854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e/00613ba0d3f82368c561d107fe44297982bfcbf2d8347c55f710698281466b2d.php
new file mode 100644
index 0000000..0496fd2
--- /dev/null
+++ b/sites/default/files/php/twig/1#5f#36#854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e/00613ba0d3f82368c561d107fe44297982bfcbf2d8347c55f710698281466b2d.php
@@ -0,0 +1,115 @@
+<?php
+
+/* core/themes/seven/templates/install-page.html.twig */
+class __TwigTemplate_5f36854a64de90d1ccc04b1723b8d0e4c1aed350f896852d83169679d070109e extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 12
+        echo "<div class=\"layout-container\">
+
+  <header role=\"banner\">
+    ";
+        // line 15
+        if ((isset($context["site_name"]) ? $context["site_name"] : null)) {
+            // line 16
+            echo "      <h1 class=\"page-title\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["site_name"]) ? $context["site_name"] : null), "html", null, true);
+            echo "</h1>
+    ";
+        }
+        // line 18
+        echo "  </header>
+
+  ";
+        // line 20
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_first", array())) {
+            // line 21
+            echo "    <aside class=\"layout-sidebar-first\" role=\"complementary\">
+      ";
+            // line 22
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_first", array()), "html", null, true);
+            echo "
+    </aside>";
+            // line 24
+            echo "  ";
+        }
+        // line 25
+        echo "
+  <main role=\"main\">
+    ";
+        // line 27
+        if ((isset($context["title"]) ? $context["title"] : null)) {
+            // line 28
+            echo "      <h1>";
+            echo twig_drupal_escape_filter($this->env, (isset($context["title"]) ? $context["title"] : null), "html", null, true);
+            echo "</h1>
+    ";
+        }
+        // line 30
+        echo "    ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["messages"]) ? $context["messages"] : null), "html", null, true);
+        echo "
+    ";
+        // line 31
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "content", array()), "html", null, true);
+        echo "
+  </main>
+
+  ";
+        // line 34
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_second", array())) {
+            // line 35
+            echo "    <aside class=\"layout-sidebar-second\" role=\"complementary\">
+      ";
+            // line 36
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_second", array()), "html", null, true);
+            echo "
+    </aside>";
+            // line 38
+            echo "  ";
+        }
+        // line 39
+        echo "
+  ";
+        // line 40
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "page_bottom", array())) {
+            // line 41
+            echo "    <footer role=\"contentinfo\">
+      ";
+            // line 42
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "page_bottom", array()), "html", null, true);
+            echo "
+    </footer>
+  ";
+        }
+        // line 45
+        echo "
+</div>";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/themes/seven/templates/install-page.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  97 => 45,  91 => 42,  88 => 41,  86 => 40,  83 => 39,  80 => 38,  76 => 36,  73 => 35,  71 => 34,  65 => 31,  60 => 30,  54 => 28,  52 => 27,  48 => 25,  45 => 24,  41 => 22,  38 => 21,  36 => 20,  32 => 18,  26 => 16,  24 => 15,  19 => 12,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#70#66#cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743/.htaccess b/sites/default/files/php/twig/1#70#66#cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#70#66#cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#70#66#cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743/1bb238e8106c84c7407abf33b9b4ef38ef944bf8993f2d75c387ad2fb4b3994b.php b/sites/default/files/php/twig/1#70#66#cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743/1bb238e8106c84c7407abf33b9b4ef38ef944bf8993f2d75c387ad2fb4b3994b.php
new file mode 100644
index 0000000..e4575bd
--- /dev/null
+++ b/sites/default/files/php/twig/1#70#66#cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743/1bb238e8106c84c7407abf33b9b4ef38ef944bf8993f2d75c387ad2fb4b3994b.php
@@ -0,0 +1,91 @@
+<?php
+
+/* core/themes/bartik/templates/block--system-menu-block.html.twig */
+class __TwigTemplate_7066cd224a163dd51f0bbff0c21f250717085940fef3cb3bad619c3b0a74c743 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = $this->env->loadTemplate("@system/block--system-menu-block.html.twig");
+
+        $this->blocks = array(
+            'content' => array($this, 'block_content'),
+        );
+    }
+
+    protected function doGetParent(array $context)
+    {
+        return "@system/block--system-menu-block.html.twig";
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 10
+        $context["show_anchor"] = ("show-" . drupal_clean_id_identifier($this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "id", array())));
+        // line 11
+        $context["hide_anchor"] = ("hide-" . drupal_clean_id_identifier($this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "id", array())));
+        $this->parent->display($context, array_merge($this->blocks, $blocks));
+    }
+
+    // line 12
+    public function block_content($context, array $blocks = array())
+    {
+        // line 13
+        echo "  ";
+        // line 14
+        echo "  ";
+        if ($this->getAttribute((isset($context["configuration"]) ? $context["configuration"] : null), "label_display", array())) {
+            // line 15
+            echo "    <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["content_attributes"]) ? $context["content_attributes"] : null), "addClass", array(0 => "content"), "method"), "html", null, true);
+            echo ">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["content"]) ? $context["content"] : null), "html", null, true);
+            echo "</div>
+  ";
+        } else {
+            // line 17
+            echo "    ";
+            // line 18
+            echo "    <div class=\"menu-toggle-target menu-toggle-target-show\" id=\"";
+            echo twig_drupal_escape_filter($this->env, (isset($context["show_anchor"]) ? $context["show_anchor"] : null), "html", null, true);
+            echo "\"></div>
+    <div class=\"menu-toggle-target\" id=\"";
+            // line 19
+            echo twig_drupal_escape_filter($this->env, (isset($context["hide_anchor"]) ? $context["hide_anchor"] : null), "html", null, true);
+            echo "\"></div>
+    <a class=\"menu-toggle\" href=\"#";
+            // line 20
+            echo twig_drupal_escape_filter($this->env, (isset($context["show_anchor"]) ? $context["show_anchor"] : null), "html", null, true);
+            echo "\">";
+            echo twig_render_var(t("Menu"));
+            echo "</a>
+    <a class=\"menu-toggle menu-toggle--hide\" href=\"#";
+            // line 21
+            echo twig_drupal_escape_filter($this->env, (isset($context["hide_anchor"]) ? $context["hide_anchor"] : null), "html", null, true);
+            echo "\">";
+            echo twig_render_var(t("Menu"));
+            echo "</a>
+    ";
+            // line 22
+            echo twig_drupal_escape_filter($this->env, (isset($context["content"]) ? $context["content"] : null), "html", null, true);
+            echo "
+  ";
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return "core/themes/bartik/templates/block--system-menu-block.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  71 => 22,  65 => 21,  59 => 20,  55 => 19,  50 => 18,  48 => 17,  40 => 15,  37 => 14,  35 => 13,  32 => 12,  27 => 11,  25 => 10,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#74#9b#878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40/.htaccess b/sites/default/files/php/twig/1#74#9b#878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#74#9b#878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#74#9b#878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40/120670650d132db469b7a1414d6070315dd59e53310254f6e21d99a32401eb0f.php b/sites/default/files/php/twig/1#74#9b#878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40/120670650d132db469b7a1414d6070315dd59e53310254f6e21d99a32401eb0f.php
new file mode 100644
index 0000000..e71f30a
--- /dev/null
+++ b/sites/default/files/php/twig/1#74#9b#878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40/120670650d132db469b7a1414d6070315dd59e53310254f6e21d99a32401eb0f.php
@@ -0,0 +1,89 @@
+<?php
+
+/* @system/block--system-menu-block.html.twig */
+class __TwigTemplate_749b878e3643633fa38c2af337e75fa5b430c3b3598d85f7e8c8a86fa40e4b40 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+            'content' => array($this, 'block_content'),
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 44
+        $context["classes"] = array(0 => "block", 1 => "block-menu", 2 => "navigation", 3 => ("menu--" . \Drupal\Component\Utility\Html::getClass((isset($context["derivative_plugin_id"]) ? $context["derivative_plugin_id"] : null))));
+        // line 51
+        $context["heading_id"] = ($this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "id", array()) . drupal_clean_id_identifier("-menu"));
+        // line 52
+        echo "<nav";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+        echo " role=\"navigation\" aria-labelledby=\"";
+        echo twig_drupal_escape_filter($this->env, (isset($context["heading_id"]) ? $context["heading_id"] : null), "html", null, true);
+        echo "\">
+  ";
+        // line 54
+        echo "  ";
+        if ((!$this->getAttribute((isset($context["configuration"]) ? $context["configuration"] : null), "label_display", array()))) {
+            // line 55
+            echo "    ";
+            $context["title_attributes"] = $this->getAttribute((isset($context["title_attributes"]) ? $context["title_attributes"] : null), "addClass", array(0 => "visually-hidden"), "method");
+            // line 56
+            echo "  ";
+        }
+        // line 57
+        echo "  ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_prefix"]) ? $context["title_prefix"] : null), "html", null, true);
+        echo "
+  <h2 id=\"";
+        // line 58
+        echo twig_drupal_escape_filter($this->env, (isset($context["heading_id"]) ? $context["heading_id"] : null), "html", null, true);
+        echo "\"";
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_attributes"]) ? $context["title_attributes"] : null), "html", null, true);
+        echo ">";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["configuration"]) ? $context["configuration"] : null), "label", array()), "html", null, true);
+        echo "</h2>
+  ";
+        // line 59
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_suffix"]) ? $context["title_suffix"] : null), "html", null, true);
+        echo "
+
+  ";
+        // line 62
+        echo "  ";
+        $this->displayBlock('content', $context, $blocks);
+        // line 65
+        echo "</nav>
+";
+    }
+
+    // line 62
+    public function block_content($context, array $blocks = array())
+    {
+        // line 63
+        echo "    ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["content"]) ? $context["content"] : null), "html", null, true);
+        echo "
+  ";
+    }
+
+    public function getTemplateName()
+    {
+        return "@system/block--system-menu-block.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  69 => 63,  66 => 62,  61 => 65,  58 => 62,  53 => 59,  45 => 58,  40 => 57,  37 => 56,  34 => 55,  31 => 54,  24 => 52,  22 => 51,  20 => 44,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#7a#6d#c16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649/.htaccess b/sites/default/files/php/twig/1#7a#6d#c16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#7a#6d#c16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#7a#6d#c16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649/7d6108edd03e55a5f6f3ef5dc3462fe06aff18494b67921b753f84a643ceba19.php b/sites/default/files/php/twig/1#7a#6d#c16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649/7d6108edd03e55a5f6f3ef5dc3462fe06aff18494b67921b753f84a643ceba19.php
new file mode 100644
index 0000000..eef8062
--- /dev/null
+++ b/sites/default/files/php/twig/1#7a#6d#c16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649/7d6108edd03e55a5f6f3ef5dc3462fe06aff18494b67921b753f84a643ceba19.php
@@ -0,0 +1,41 @@
+<?php
+
+/* core/modules/system/templates/input.html.twig */
+class __TwigTemplate_7a6dc16e7ac6d9399e7261be653f781d86a1774ce8414816cb58cd7833222649 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 15
+        echo "<input";
+        echo twig_drupal_escape_filter($this->env, (isset($context["attributes"]) ? $context["attributes"] : null), "html", null, true);
+        echo " />";
+        echo twig_drupal_escape_filter($this->env, (isset($context["children"]) ? $context["children"] : null), "html", null, true);
+        echo "
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/input.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  19 => 15,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#7c#76#1b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c/.htaccess b/sites/default/files/php/twig/1#7c#76#1b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#7c#76#1b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#7c#76#1b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c/2cf019a7238a90d680e0e3b880c53f855d52341cbfb17f62e6e43b05e3d03d77.php b/sites/default/files/php/twig/1#7c#76#1b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c/2cf019a7238a90d680e0e3b880c53f855d52341cbfb17f62e6e43b05e3d03d77.php
new file mode 100644
index 0000000..05c2efd
--- /dev/null
+++ b/sites/default/files/php/twig/1#7c#76#1b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c/2cf019a7238a90d680e0e3b880c53f855d52341cbfb17f62e6e43b05e3d03d77.php
@@ -0,0 +1,92 @@
+<?php
+
+/* core/modules/system/templates/fieldset.html.twig */
+class __TwigTemplate_7c761b4c61f2fcc1056ac82a44720b320387eefa22b632c126e67feb79741e0c extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 24
+        echo "<fieldset";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => "form-item", 1 => "form-wrapper"), "method"), "html", null, true);
+        echo ">
+  ";
+        // line 26
+        $context["legend_span_classes"] = array(0 => "fieldset-legend", 1 => (((isset($context["required"]) ? $context["required"] : null)) ? ("form-required") : ("")));
+        // line 31
+        echo "  ";
+        // line 32
+        echo "  <legend";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["legend"]) ? $context["legend"] : null), "attributes", array()), "html", null, true);
+        echo ">
+    <span";
+        // line 33
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["legend_span"]) ? $context["legend_span"] : null), "attributes", array()), "addClass", array(0 => (isset($context["legend_span_classes"]) ? $context["legend_span_classes"] : null)), "method"), "html", null, true);
+        echo ">";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["legend"]) ? $context["legend"] : null), "title", array()), "html", null, true);
+        echo "</span>
+  </legend>
+  <div class=\"fieldset-wrapper\">
+    ";
+        // line 36
+        if ((isset($context["prefix"]) ? $context["prefix"] : null)) {
+            // line 37
+            echo "      <span class=\"field-prefix\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["prefix"]) ? $context["prefix"] : null), "html", null, true);
+            echo "</span>
+    ";
+        }
+        // line 39
+        echo "    ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["children"]) ? $context["children"] : null), "html", null, true);
+        echo "
+    ";
+        // line 40
+        if ((isset($context["suffix"]) ? $context["suffix"] : null)) {
+            // line 41
+            echo "      <span class=\"field-suffix\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["suffix"]) ? $context["suffix"] : null), "html", null, true);
+            echo "</span>
+    ";
+        }
+        // line 43
+        echo "    ";
+        if ($this->getAttribute((isset($context["description"]) ? $context["description"] : null), "content", array())) {
+            // line 44
+            echo "      <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["description"]) ? $context["description"] : null), "attributes", array()), "addClass", array(0 => "description"), "method"), "html", null, true);
+            echo ">";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["description"]) ? $context["description"] : null), "content", array()), "html", null, true);
+            echo "</div>
+    ";
+        }
+        // line 46
+        echo "  </div>
+</fieldset>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/fieldset.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  73 => 46,  65 => 44,  62 => 43,  56 => 41,  54 => 40,  49 => 39,  43 => 37,  41 => 36,  33 => 33,  28 => 32,  26 => 31,  24 => 26,  19 => 24,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#80#e6#09a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929/.htaccess b/sites/default/files/php/twig/1#80#e6#09a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#80#e6#09a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#80#e6#09a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929/514a49b9c16604bc544dbb1cfd68654ad912508b0b9f5d56799df3e630501e10.php b/sites/default/files/php/twig/1#80#e6#09a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929/514a49b9c16604bc544dbb1cfd68654ad912508b0b9f5d56799df3e630501e10.php
new file mode 100644
index 0000000..18fa316
--- /dev/null
+++ b/sites/default/files/php/twig/1#80#e6#09a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929/514a49b9c16604bc544dbb1cfd68654ad912508b0b9f5d56799df3e630501e10.php
@@ -0,0 +1,43 @@
+<?php
+
+/* core/modules/system/templates/feed-icon.html.twig */
+class __TwigTemplate_80e609a2ec7089380ea32763c5f89a5c506fb5af11fed2eef3809605a0b62929 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 18
+        echo "<a href=\"";
+        echo twig_drupal_escape_filter($this->env, (isset($context["url"]) ? $context["url"] : null), "html", null, true);
+        echo "\"";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => "feed-icon"), "method"), "html", null, true);
+        echo ">";
+        echo twig_drupal_escape_filter($this->env, (isset($context["icon"]) ? $context["icon"] : null), "html", null, true);
+        echo "</a>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/feed-icon.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  19 => 18,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#82#f8#e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0/.htaccess b/sites/default/files/php/twig/1#82#f8#e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#82#f8#e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#82#f8#e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0/8d88a652c831b071a38823ce37de1b49c8ab33637bfb38a156c7d9ca5a134f66.php b/sites/default/files/php/twig/1#82#f8#e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0/8d88a652c831b071a38823ce37de1b49c8ab33637bfb38a156c7d9ca5a134f66.php
new file mode 100644
index 0000000..0737473
--- /dev/null
+++ b/sites/default/files/php/twig/1#82#f8#e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0/8d88a652c831b071a38823ce37de1b49c8ab33637bfb38a156c7d9ca5a134f66.php
@@ -0,0 +1,173 @@
+<?php
+
+/* core/modules/views/templates/views-view.html.twig */
+class __TwigTemplate_82f8e95541904b8ec06f5091917f394e484834ebe2b325008020bf580b7d9bf0 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 40
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, (isset($context["attributes"]) ? $context["attributes"] : null), "html", null, true);
+        echo ">
+  ";
+        // line 41
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_prefix"]) ? $context["title_prefix"] : null), "html", null, true);
+        echo "
+  ";
+        // line 42
+        if ((isset($context["title"]) ? $context["title"] : null)) {
+            // line 43
+            echo "    ";
+            echo twig_drupal_escape_filter($this->env, (isset($context["title"]) ? $context["title"] : null), "html", null, true);
+            echo "
+  ";
+        }
+        // line 45
+        echo "  ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_suffix"]) ? $context["title_suffix"] : null), "html", null, true);
+        echo "
+  ";
+        // line 46
+        if ((isset($context["header"]) ? $context["header"] : null)) {
+            // line 47
+            echo "    <div class=\"view-header\">
+      ";
+            // line 48
+            echo twig_drupal_escape_filter($this->env, (isset($context["header"]) ? $context["header"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 51
+        echo "  ";
+        if ((isset($context["exposed"]) ? $context["exposed"] : null)) {
+            // line 52
+            echo "    <div class=\"view-filters\">
+      ";
+            // line 53
+            echo twig_drupal_escape_filter($this->env, (isset($context["exposed"]) ? $context["exposed"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 56
+        echo "  ";
+        if ((isset($context["attachment_before"]) ? $context["attachment_before"] : null)) {
+            // line 57
+            echo "    <div class=\"attachment attachment-before\">
+      ";
+            // line 58
+            echo twig_drupal_escape_filter($this->env, (isset($context["attachment_before"]) ? $context["attachment_before"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 61
+        echo "
+  ";
+        // line 62
+        if ((isset($context["rows"]) ? $context["rows"] : null)) {
+            // line 63
+            echo "    <div class=\"view-content\">
+      ";
+            // line 64
+            echo twig_drupal_escape_filter($this->env, (isset($context["rows"]) ? $context["rows"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        } elseif ((isset($context["empty"]) ? $context["empty"] : null)) {
+            // line 67
+            echo "    <div class=\"view-empty\">
+      ";
+            // line 68
+            echo twig_drupal_escape_filter($this->env, (isset($context["empty"]) ? $context["empty"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 71
+        echo "
+  ";
+        // line 72
+        if ((isset($context["pager"]) ? $context["pager"] : null)) {
+            // line 73
+            echo "    ";
+            echo twig_drupal_escape_filter($this->env, (isset($context["pager"]) ? $context["pager"] : null), "html", null, true);
+            echo "
+  ";
+        }
+        // line 75
+        echo "  ";
+        if ((isset($context["attachment_after"]) ? $context["attachment_after"] : null)) {
+            // line 76
+            echo "    <div class=\"attachment attachment-after\">
+      ";
+            // line 77
+            echo twig_drupal_escape_filter($this->env, (isset($context["attachment_after"]) ? $context["attachment_after"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 80
+        echo "  ";
+        if ((isset($context["more"]) ? $context["more"] : null)) {
+            // line 81
+            echo "    ";
+            echo twig_drupal_escape_filter($this->env, (isset($context["more"]) ? $context["more"] : null), "html", null, true);
+            echo "
+  ";
+        }
+        // line 83
+        echo "  ";
+        if ((isset($context["footer"]) ? $context["footer"] : null)) {
+            // line 84
+            echo "    <div class=\"view-footer\">
+      ";
+            // line 85
+            echo twig_drupal_escape_filter($this->env, (isset($context["footer"]) ? $context["footer"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 88
+        echo "  ";
+        if ((isset($context["feed_icons"]) ? $context["feed_icons"] : null)) {
+            // line 89
+            echo "    <div class=\"feed-icons\">
+      ";
+            // line 90
+            echo twig_drupal_escape_filter($this->env, (isset($context["feed_icons"]) ? $context["feed_icons"] : null), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 93
+        echo "</div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/views/templates/views-view.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  155 => 93,  149 => 90,  146 => 89,  143 => 88,  137 => 85,  134 => 84,  131 => 83,  125 => 81,  122 => 80,  116 => 77,  113 => 76,  110 => 75,  104 => 73,  102 => 72,  99 => 71,  93 => 68,  90 => 67,  84 => 64,  81 => 63,  79 => 62,  76 => 61,  70 => 58,  67 => 57,  64 => 56,  58 => 53,  55 => 52,  52 => 51,  46 => 48,  43 => 47,  41 => 46,  36 => 45,  30 => 43,  28 => 42,  24 => 41,  19 => 40,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#84#e8#702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7/.htaccess b/sites/default/files/php/twig/1#84#e8#702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#84#e8#702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#84#e8#702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7/fa3ba3819170dd9f359c454c96a11290f5ffef1a38a341dce2139aa04f23f4b9.php b/sites/default/files/php/twig/1#84#e8#702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7/fa3ba3819170dd9f359c454c96a11290f5ffef1a38a341dce2139aa04f23f4b9.php
new file mode 100644
index 0000000..76b2d5f
--- /dev/null
+++ b/sites/default/files/php/twig/1#84#e8#702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7/fa3ba3819170dd9f359c454c96a11290f5ffef1a38a341dce2139aa04f23f4b9.php
@@ -0,0 +1,41 @@
+<?php
+
+/* core/modules/system/templates/select.html.twig */
+class __TwigTemplate_84e8702dc5a9d8cb6cc809c46927f78f55417e9443e5d346dd76579d4c9d6bc7 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 15
+        echo "<select";
+        echo twig_drupal_escape_filter($this->env, (isset($context["attributes"]) ? $context["attributes"] : null), "html", null, true);
+        echo ">";
+        echo twig_drupal_escape_filter($this->env, (isset($context["options"]) ? $context["options"] : null), "html", null, true);
+        echo "</select>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/select.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  19 => 15,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#90#08#ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5/.htaccess b/sites/default/files/php/twig/1#90#08#ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#90#08#ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#90#08#ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5/3ba0d1c79c15ef18beb24e65aecccd8f8a7912f19a2f34a2ad2f13da1f161000.php b/sites/default/files/php/twig/1#90#08#ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5/3ba0d1c79c15ef18beb24e65aecccd8f8a7912f19a2f34a2ad2f13da1f161000.php
new file mode 100644
index 0000000..8589ec0
--- /dev/null
+++ b/sites/default/files/php/twig/1#90#08#ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5/3ba0d1c79c15ef18beb24e65aecccd8f8a7912f19a2f34a2ad2f13da1f161000.php
@@ -0,0 +1,223 @@
+<?php
+
+/* core/modules/system/templates/pager.html.twig */
+class __TwigTemplate_9008ab4c208952b76edc01546a787186059b6fc487bc7016957c02a84d2da5d5 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 34
+        if ((isset($context["items"]) ? $context["items"] : null)) {
+            // line 35
+            echo "  <nav class=\"pager\" role=\"navigation\" aria-labelledby=\"pagination-heading\">
+    <h4 id=\"pagination-heading\" class=\"visually-hidden\">";
+            // line 36
+            echo twig_render_var(t("Pagination"));
+            echo "</h4>
+    <ul class=\"pager__items\">
+      ";
+            // line 39
+            echo "      ";
+            if ($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "first", array())) {
+                // line 40
+                echo "        <li class=\"pager__item pager__item--first\">
+          <a href=\"";
+                // line 41
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "first", array()), "href", array()), "html", null, true);
+                echo "\" title=\"";
+                echo twig_render_var(t("Go to first page"));
+                echo "\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "first", array()), "attributes", array()), "html", null, true);
+                echo ">
+            <span class=\"visually-hidden\">";
+                // line 42
+                echo twig_render_var(t("First page"));
+                echo "</span>
+            <span aria-hidden=\"true\">";
+                // line 43
+                echo twig_drupal_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "first", array(), "any", false, true), "text", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "first", array(), "any", false, true), "text", array()), t("« first"))) : (t("« first"))), "html", null, true);
+                echo "</span>
+          </a>
+        </li>
+      ";
+            }
+            // line 47
+            echo "      ";
+            // line 48
+            echo "      ";
+            if ($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "previous", array())) {
+                // line 49
+                echo "        <li class=\"pager__item pager__item--previous\">
+          <a href=\"";
+                // line 50
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "previous", array()), "href", array()), "html", null, true);
+                echo "\" title=\"";
+                echo twig_render_var(t("Go to previous page"));
+                echo "\" rel=\"prev\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "previous", array()), "attributes", array()), "html", null, true);
+                echo ">
+            <span class=\"visually-hidden\">";
+                // line 51
+                echo twig_render_var(t("Previous page"));
+                echo "</span>
+            <span aria-hidden=\"true\">";
+                // line 52
+                echo twig_drupal_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "previous", array(), "any", false, true), "text", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "previous", array(), "any", false, true), "text", array()), t("‹ previous"))) : (t("‹ previous"))), "html", null, true);
+                echo "</span>
+          </a>
+        </li>
+      ";
+            }
+            // line 56
+            echo "      ";
+            // line 57
+            echo "      ";
+            if ($this->getAttribute((isset($context["ellipses"]) ? $context["ellipses"] : null), "previous", array())) {
+                // line 58
+                echo "        <li class=\"pager__item pager__item--ellipsis\" role=\"presentation\">&hellip;</li>
+      ";
+            }
+            // line 60
+            echo "      ";
+            // line 61
+            echo "      ";
+            $context['_parent'] = (array) $context;
+            $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "pages", array()));
+            foreach ($context['_seq'] as $context["key"] => $context["item"]) {
+                // line 62
+                echo "        <li class=\"pager__item";
+                echo twig_render_var(((((isset($context["current"]) ? $context["current"] : null) == $context["key"])) ? (" is-active") : ("")));
+                echo "\">
+          ";
+                // line 63
+                if (((isset($context["current"]) ? $context["current"] : null) == $context["key"])) {
+                    // line 64
+                    echo "            ";
+                    $context["title"] = t("Current page");
+                    // line 65
+                    echo "          ";
+                } else {
+                    // line 66
+                    echo "            ";
+                    $context["title"] = t("Go to page @key", array("@key" => $context["key"]));
+                    // line 67
+                    echo "          ";
+                }
+                // line 68
+                echo "          <a href=\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "href", array()), "html", null, true);
+                echo "\" title=\"";
+                echo twig_drupal_escape_filter($this->env, (isset($context["title"]) ? $context["title"] : null), "html", null, true);
+                echo "\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "attributes", array()), "html", null, true);
+                echo ">
+            <span class=\"visually-hidden\">
+              ";
+                // line 70
+                echo twig_render_var(((((isset($context["current"]) ? $context["current"] : null) == $context["key"])) ? (t("Current page")) : (t("Page"))));
+                echo "
+            </span>";
+                // line 72
+                echo twig_drupal_escape_filter($this->env, $context["key"], "html", null, true);
+                // line 73
+                echo "</a>
+        </li>
+      ";
+            }
+            $_parent = $context['_parent'];
+            unset($context['_seq'], $context['_iterated'], $context['key'], $context['item'], $context['_parent'], $context['loop']);
+            $context = array_intersect_key($context, $_parent) + $_parent;
+            // line 76
+            echo "      ";
+            // line 77
+            echo "      ";
+            if ($this->getAttribute((isset($context["ellipses"]) ? $context["ellipses"] : null), "next", array())) {
+                // line 78
+                echo "        <li class=\"pager__item pager__item--ellipsis\" role=\"presentation\">&hellip;</li>
+      ";
+            }
+            // line 80
+            echo "      ";
+            // line 81
+            echo "      ";
+            if ($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "next", array())) {
+                // line 82
+                echo "        <li class=\"pager__item pager__item--next\">
+          <a href=\"";
+                // line 83
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "next", array()), "href", array()), "html", null, true);
+                echo "\" title=\"";
+                echo twig_render_var(t("Go to next page"));
+                echo "\" rel=\"next\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "next", array()), "attributes", array()), "html", null, true);
+                echo ">
+            <span class=\"visually-hidden\">";
+                // line 84
+                echo twig_render_var(t("Next page"));
+                echo "</span>
+            <span aria-hidden=\"true\">";
+                // line 85
+                echo twig_drupal_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "next", array(), "any", false, true), "text", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "next", array(), "any", false, true), "text", array()), t("next ›"))) : (t("next ›"))), "html", null, true);
+                echo "</span>
+          </a>
+        </li>
+      ";
+            }
+            // line 89
+            echo "      ";
+            // line 90
+            echo "      ";
+            if ($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "last", array())) {
+                // line 91
+                echo "        <li class=\"pager__item pager__item--last\">
+          <a href=\"";
+                // line 92
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "last", array()), "href", array()), "html", null, true);
+                echo "\" title=\"";
+                echo twig_render_var(t("Go to last page"));
+                echo "\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "last", array()), "attributes", array()), "html", null, true);
+                echo ">
+            <span class=\"visually-hidden\">";
+                // line 93
+                echo twig_render_var(t("Last page"));
+                echo "</span>
+            <span aria-hidden=\"true\">";
+                // line 94
+                echo twig_drupal_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "last", array(), "any", false, true), "text", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["items"]) ? $context["items"] : null), "last", array(), "any", false, true), "text", array()), t("last »"))) : (t("last »"))), "html", null, true);
+                echo "</span>
+          </a>
+        </li>
+      ";
+            }
+            // line 98
+            echo "    </ul>
+  </nav>
+";
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/pager.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  203 => 98,  196 => 94,  192 => 93,  184 => 92,  181 => 91,  178 => 90,  176 => 89,  169 => 85,  165 => 84,  157 => 83,  154 => 82,  151 => 81,  149 => 80,  145 => 78,  142 => 77,  140 => 76,  132 => 73,  130 => 72,  126 => 70,  116 => 68,  113 => 67,  110 => 66,  107 => 65,  104 => 64,  102 => 63,  97 => 62,  92 => 61,  90 => 60,  86 => 58,  83 => 57,  81 => 56,  74 => 52,  70 => 51,  62 => 50,  59 => 49,  56 => 48,  54 => 47,  47 => 43,  43 => 42,  35 => 41,  32 => 40,  29 => 39,  24 => 36,  21 => 35,  19 => 34,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#9b#af#ab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73/.htaccess b/sites/default/files/php/twig/1#9b#af#ab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#9b#af#ab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#9b#af#ab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73/9beddcc2fddb9ffad3fdfd71e84cae7f5b28b2a13b7c2b87ba1dc144f24731c3.php b/sites/default/files/php/twig/1#9b#af#ab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73/9beddcc2fddb9ffad3fdfd71e84cae7f5b28b2a13b7c2b87ba1dc144f24731c3.php
new file mode 100644
index 0000000..3ebb1e7
--- /dev/null
+++ b/sites/default/files/php/twig/1#9b#af#ab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73/9beddcc2fddb9ffad3fdfd71e84cae7f5b28b2a13b7c2b87ba1dc144f24731c3.php
@@ -0,0 +1,87 @@
+<?php
+
+/* core/modules/system/templates/html.html.twig */
+class __TwigTemplate_9bafab82258f5fd22a18c57e937248aa35b487ebc05efcaa80a1a7ffd8452c73 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 29
+        echo "<!DOCTYPE html>
+<html";
+        // line 30
+        echo twig_drupal_escape_filter($this->env, (isset($context["html_attributes"]) ? $context["html_attributes"] : null), "html", null, true);
+        echo ">
+  <head>
+    ";
+        // line 32
+        echo twig_drupal_escape_filter($this->env, (isset($context["head"]) ? $context["head"] : null), "html", null, true);
+        echo "
+    <title>";
+        // line 33
+        echo twig_drupal_escape_filter($this->env, (isset($context["head_title"]) ? $context["head_title"] : null), "html", null, true);
+        echo "</title>
+    ";
+        // line 34
+        echo twig_drupal_escape_filter($this->env, (isset($context["styles"]) ? $context["styles"] : null), "html", null, true);
+        echo "
+    ";
+        // line 35
+        echo twig_drupal_escape_filter($this->env, (isset($context["scripts"]) ? $context["scripts"] : null), "html", null, true);
+        echo "
+  </head>
+  <body";
+        // line 37
+        echo twig_drupal_escape_filter($this->env, (isset($context["attributes"]) ? $context["attributes"] : null), "html", null, true);
+        echo ">
+    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">
+      ";
+        // line 39
+        echo twig_render_var(t("Skip to main content"));
+        echo "
+    </a>
+    ";
+        // line 41
+        echo twig_drupal_escape_filter($this->env, (isset($context["page_top"]) ? $context["page_top"] : null), "html", null, true);
+        echo "
+    ";
+        // line 42
+        echo twig_drupal_escape_filter($this->env, (isset($context["page"]) ? $context["page"] : null), "html", null, true);
+        echo "
+    ";
+        // line 43
+        echo twig_drupal_escape_filter($this->env, (isset($context["page_bottom"]) ? $context["page_bottom"] : null), "html", null, true);
+        echo "
+    ";
+        // line 44
+        echo twig_drupal_escape_filter($this->env, (isset($context["scripts_bottom"]) ? $context["scripts_bottom"] : null), "html", null, true);
+        echo "
+  </body>
+</html>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/html.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  66 => 44,  62 => 43,  58 => 42,  54 => 41,  49 => 39,  44 => 37,  39 => 35,  35 => 34,  31 => 33,  27 => 32,  22 => 30,  19 => 29,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#b6#ce#175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356/.htaccess b/sites/default/files/php/twig/1#b6#ce#175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#b6#ce#175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#b6#ce#175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356/c658165fde049e2afc31ffc5b72ca4dd0e381ae1c93ac0ccf61dba956ef9e854.php b/sites/default/files/php/twig/1#b6#ce#175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356/c658165fde049e2afc31ffc5b72ca4dd0e381ae1c93ac0ccf61dba956ef9e854.php
new file mode 100644
index 0000000..0495098
--- /dev/null
+++ b/sites/default/files/php/twig/1#b6#ce#175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356/c658165fde049e2afc31ffc5b72ca4dd0e381ae1c93ac0ccf61dba956ef9e854.php
@@ -0,0 +1,112 @@
+<?php
+
+/* core/modules/system/templates/status-messages.html.twig */
+class __TwigTemplate_b6ce175274d0b7f020b1e722e0dbfe4497f66fab33ce5a54f37c02b9a4774356 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 28
+        $context['_parent'] = (array) $context;
+        $context['_seq'] = twig_ensure_traversable((isset($context["message_list"]) ? $context["message_list"] : null));
+        foreach ($context['_seq'] as $context["type"] => $context["messages"]) {
+            // line 29
+            echo "  ";
+            // line 30
+            $context["classes"] = array(0 => "messages", 1 => ("messages--" . $context["type"]));
+            // line 35
+            echo "  <div class=\"";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "class", array()), "html", null, true);
+            echo "\" role=\"contentinfo\" aria-label=\"";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["status_headings"]) ? $context["status_headings"] : null), $context["type"], array(), "array"), "html", null, true);
+            echo "\">
+    ";
+            // line 36
+            if (($context["type"] == "error")) {
+                // line 37
+                echo "      <div role=\"alert\">
+    ";
+            }
+            // line 39
+            echo "      ";
+            if ($this->getAttribute((isset($context["status_headings"]) ? $context["status_headings"] : null), $context["type"], array(), "array")) {
+                // line 40
+                echo "        <h2 class=\"visually-hidden\">";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["status_headings"]) ? $context["status_headings"] : null), $context["type"], array(), "array"), "html", null, true);
+                echo "</h2>
+      ";
+            }
+            // line 42
+            echo "      ";
+            if ((twig_length_filter($this->env, $context["messages"]) > 1)) {
+                // line 43
+                echo "        <ul class=\"messages__list\">
+          ";
+                // line 44
+                $context['_parent'] = (array) $context;
+                $context['_seq'] = twig_ensure_traversable($context["messages"]);
+                foreach ($context['_seq'] as $context["_key"] => $context["message"]) {
+                    // line 45
+                    echo "            <li class=\"messages__item\">";
+                    echo twig_drupal_escape_filter($this->env, $context["message"], "html", null, true);
+                    echo "</li>
+          ";
+                }
+                $_parent = $context['_parent'];
+                unset($context['_seq'], $context['_iterated'], $context['_key'], $context['message'], $context['_parent'], $context['loop']);
+                $context = array_intersect_key($context, $_parent) + $_parent;
+                // line 47
+                echo "        </ul>
+      ";
+            } else {
+                // line 49
+                echo "        ";
+                echo twig_drupal_escape_filter($this->env, twig_first($this->env, $context["messages"]), "html", null, true);
+                echo "
+      ";
+            }
+            // line 51
+            echo "    ";
+            if (($context["type"] == "error")) {
+                // line 52
+                echo "      </div>
+    ";
+            }
+            // line 54
+            echo "  </div>
+  ";
+            // line 56
+            echo "  ";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "removeClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+            echo "
+";
+        }
+        $_parent = $context['_parent'];
+        unset($context['_seq'], $context['_iterated'], $context['type'], $context['messages'], $context['_parent'], $context['loop']);
+        $context = array_intersect_key($context, $_parent) + $_parent;
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/status-messages.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  88 => 56,  85 => 54,  81 => 52,  78 => 51,  72 => 49,  68 => 47,  59 => 45,  55 => 44,  52 => 43,  49 => 42,  43 => 40,  40 => 39,  36 => 37,  34 => 36,  27 => 35,  25 => 30,  23 => 29,  19 => 28,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#ba#6e#10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d/.htaccess b/sites/default/files/php/twig/1#ba#6e#10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#ba#6e#10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#ba#6e#10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d/f54007d130b9054055e29c5c9fec17f4195c616dc7ea07f2a44d5cf0e9dbedb1.php b/sites/default/files/php/twig/1#ba#6e#10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d/f54007d130b9054055e29c5c9fec17f4195c616dc7ea07f2a44d5cf0e9dbedb1.php
new file mode 100644
index 0000000..85acb02
--- /dev/null
+++ b/sites/default/files/php/twig/1#ba#6e#10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d/f54007d130b9054055e29c5c9fec17f4195c616dc7ea07f2a44d5cf0e9dbedb1.php
@@ -0,0 +1,59 @@
+<?php
+
+/* core/modules/system/templates/progress-bar.html.twig */
+class __TwigTemplate_ba6e10e787a00d6bf797f8492cb505dd7d6f231199788f09317d5c8bda4bd59d extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 16
+        echo "<div class=\"progress\" data-drupal-progress>
+  ";
+        // line 17
+        if ((isset($context["label"]) ? $context["label"] : null)) {
+            // line 18
+            echo "    <div class=\"progress__label\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["label"]) ? $context["label"] : null), "html", null, true);
+            echo "</div>
+  ";
+        }
+        // line 20
+        echo "  <div class=\"progress__track\"><div class=\"progress__bar\" style=\"width: ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["percent"]) ? $context["percent"] : null), "html", null, true);
+        echo "%\"></div></div>
+  <div class=\"progress__percentage\">";
+        // line 21
+        echo twig_drupal_escape_filter($this->env, (isset($context["percent"]) ? $context["percent"] : null), "html", null, true);
+        echo "%</div>
+  <div class=\"progress__description\">";
+        // line 22
+        echo twig_drupal_escape_filter($this->env, (isset($context["message"]) ? $context["message"] : null), "html", null, true);
+        echo "</div>
+</div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/progress-bar.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  39 => 22,  35 => 21,  30 => 20,  24 => 18,  22 => 17,  19 => 16,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#bb#5c#eaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058/.htaccess b/sites/default/files/php/twig/1#bb#5c#eaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#bb#5c#eaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#bb#5c#eaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058/f2969f9ea91e12985a3cce755e3971903db7c19dc3761a015682778cf58073ea.php b/sites/default/files/php/twig/1#bb#5c#eaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058/f2969f9ea91e12985a3cce755e3971903db7c19dc3761a015682778cf58073ea.php
new file mode 100644
index 0000000..718f9c9
--- /dev/null
+++ b/sites/default/files/php/twig/1#bb#5c#eaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058/f2969f9ea91e12985a3cce755e3971903db7c19dc3761a015682778cf58073ea.php
@@ -0,0 +1,44 @@
+<?php
+
+/* core/modules/system/templates/form.html.twig */
+class __TwigTemplate_bb5ceaa2f15d309778c7d481f65da59a55afb231135d708fea03bfd58b8c6058 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 15
+        echo "<form";
+        echo twig_drupal_escape_filter($this->env, (isset($context["attributes"]) ? $context["attributes"] : null), "html", null, true);
+        echo ">
+  ";
+        // line 16
+        echo twig_drupal_escape_filter($this->env, (isset($context["children"]) ? $context["children"] : null), "html", null, true);
+        echo "
+</form>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/form.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  24 => 16,  19 => 15,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#c1#a0#54d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e/.htaccess b/sites/default/files/php/twig/1#c1#a0#54d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#c1#a0#54d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#c1#a0#54d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e/b156727152d6b2caa2a7812b5aa266735e6cea302f6dcd8ab6a2b1ee5afd8dc4.php b/sites/default/files/php/twig/1#c1#a0#54d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e/b156727152d6b2caa2a7812b5aa266735e6cea302f6dcd8ab6a2b1ee5afd8dc4.php
new file mode 100644
index 0000000..f717d46
--- /dev/null
+++ b/sites/default/files/php/twig/1#c1#a0#54d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e/b156727152d6b2caa2a7812b5aa266735e6cea302f6dcd8ab6a2b1ee5afd8dc4.php
@@ -0,0 +1,118 @@
+<?php
+
+/* core/modules/system/templates/menu.html.twig */
+class __TwigTemplate_c1a054d1fe61c81fa0f05f2f294b21a700f0e08ac436961af39ab5dbe7eaf78e extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 18
+        $context["menus"] = $this;
+        // line 19
+        echo "
+";
+        // line 24
+        echo twig_render_var($context["menus"]->getmenu_links((isset($context["items"]) ? $context["items"] : null), (isset($context["attributes"]) ? $context["attributes"] : null), 0));
+        echo "
+
+";
+    }
+
+    // line 26
+    public function getmenu_links($__items__ = null, $__attributes__ = null, $__menu_level__ = null)
+    {
+        $context = $this->env->mergeGlobals(array(
+            "items" => $__items__,
+            "attributes" => $__attributes__,
+            "menu_level" => $__menu_level__,
+        ));
+
+        $blocks = array();
+
+        ob_start();
+        try {
+            // line 27
+            echo "  ";
+            $context["menus"] = $this;
+            // line 28
+            echo "  ";
+            if ((isset($context["items"]) ? $context["items"] : null)) {
+                // line 29
+                echo "    ";
+                if (((isset($context["menu_level"]) ? $context["menu_level"] : null) == 0)) {
+                    // line 30
+                    echo "      <ul";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => "menu"), "method"), "html", null, true);
+                    echo ">
+    ";
+                } else {
+                    // line 32
+                    echo "      <ul class=\"menu\">
+    ";
+                }
+                // line 34
+                echo "      ";
+                $context['_parent'] = (array) $context;
+                $context['_seq'] = twig_ensure_traversable((isset($context["items"]) ? $context["items"] : null));
+                foreach ($context['_seq'] as $context["_key"] => $context["item"]) {
+                    // line 35
+                    echo "        <li";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "attributes", array()), "html", null, true);
+                    echo ">
+          ";
+                    // line 36
+                    echo twig_drupal_escape_filter($this->env, $this->env->getExtension('drupal_core')->getLink($this->getAttribute($context["item"], "title", array()), $this->getAttribute($context["item"], "url", array())), "html", null, true);
+                    echo "
+          ";
+                    // line 37
+                    if ($this->getAttribute($context["item"], "below", array())) {
+                        // line 38
+                        echo "            ";
+                        echo twig_render_var($context["menus"]->getmenu_links($this->getAttribute($context["item"], "below", array()), (isset($context["attributes"]) ? $context["attributes"] : null), ((isset($context["menu_level"]) ? $context["menu_level"] : null) + 1)));
+                        echo "
+          ";
+                    }
+                    // line 40
+                    echo "        </li>
+      ";
+                }
+                $_parent = $context['_parent'];
+                unset($context['_seq'], $context['_iterated'], $context['_key'], $context['item'], $context['_parent'], $context['loop']);
+                $context = array_intersect_key($context, $_parent) + $_parent;
+                // line 42
+                echo "    </ul>
+  ";
+            }
+        } catch (Exception $e) {
+            ob_end_clean();
+
+            throw $e;
+        }
+
+        return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset());
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/menu.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  92 => 42,  85 => 40,  79 => 38,  77 => 37,  73 => 36,  68 => 35,  63 => 34,  59 => 32,  53 => 30,  50 => 29,  47 => 28,  44 => 27,  31 => 26,  24 => 24,  21 => 19,  19 => 18,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#c8#02#ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d/.htaccess b/sites/default/files/php/twig/1#c8#02#ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#c8#02#ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#c8#02#ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d/b2614cd5a4d5002486fa30efa87e887a19c6109f594351aee2a00f5c0145eaae.php b/sites/default/files/php/twig/1#c8#02#ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d/b2614cd5a4d5002486fa30efa87e887a19c6109f594351aee2a00f5c0145eaae.php
new file mode 100644
index 0000000..1de28c6
--- /dev/null
+++ b/sites/default/files/php/twig/1#c8#02#ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d/b2614cd5a4d5002486fa30efa87e887a19c6109f594351aee2a00f5c0145eaae.php
@@ -0,0 +1,113 @@
+<?php
+
+/* core/modules/toolbar/templates/toolbar.html.twig */
+class __TwigTemplate_c802ec6d29bfef021cb1a9fec847834c76da61619be24abc06ede828e3a5601d extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 25
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => "toolbar"), "method"), "html", null, true);
+        echo ">
+  <nav";
+        // line 26
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["toolbar_attributes"]) ? $context["toolbar_attributes"] : null), "addClass", array(0 => "toolbar-bar", 1 => "clearfix"), "method"), "html", null, true);
+        echo ">
+    <h2 class=\"visually-hidden\">";
+        // line 27
+        echo twig_drupal_escape_filter($this->env, (isset($context["toolbar_heading"]) ? $context["toolbar_heading"] : null), "html", null, true);
+        echo "</h2>
+    ";
+        // line 28
+        $context['_parent'] = (array) $context;
+        $context['_seq'] = twig_ensure_traversable((isset($context["tabs"]) ? $context["tabs"] : null));
+        foreach ($context['_seq'] as $context["_key"] => $context["tab"]) {
+            // line 29
+            echo "      <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["tab"], "attributes", array()), "addClass", array(0 => "toolbar-tab"), "method"), "html", null, true);
+            echo ">";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["tab"], "link", array()), "html", null, true);
+            echo "</div>
+    ";
+        }
+        $_parent = $context['_parent'];
+        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['tab'], $context['_parent'], $context['loop']);
+        $context = array_intersect_key($context, $_parent) + $_parent;
+        // line 31
+        echo "  </nav>
+  ";
+        // line 32
+        $context['_parent'] = (array) $context;
+        $context['_seq'] = twig_ensure_traversable((isset($context["trays"]) ? $context["trays"] : null));
+        foreach ($context['_seq'] as $context["_key"] => $context["tray"]) {
+            // line 33
+            echo "    ";
+            ob_start();
+            // line 34
+            echo "    <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["tray"], "attributes", array()), "html", null, true);
+            echo ">
+    ";
+            // line 35
+            if ($this->getAttribute($context["tray"], "label", array())) {
+                // line 36
+                echo "      <nav class=\"toolbar-lining clearfix\" role=\"navigation\" aria-label=\"";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["tray"], "label", array()), "html", null, true);
+                echo "\">
+          <h3 class=\"toolbar-tray-name visually-hidden\">";
+                // line 37
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["tray"], "label", array()), "html", null, true);
+                echo "</h3>
+    ";
+            } else {
+                // line 39
+                echo "      <nav class=\"toolbar-lining clearfix\" role=\"navigation\">
+    ";
+            }
+            // line 41
+            echo "        ";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["tray"], "links", array()), "html", null, true);
+            echo "
+      </nav>
+    </div>
+    ";
+            echo trim(preg_replace('/>\s+</', '><', ob_get_clean()));
+            // line 45
+            echo "  ";
+        }
+        $_parent = $context['_parent'];
+        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['tray'], $context['_parent'], $context['loop']);
+        $context = array_intersect_key($context, $_parent) + $_parent;
+        // line 46
+        echo "  ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["remainder"]) ? $context["remainder"] : null), "html", null, true);
+        echo "
+</div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/toolbar/templates/toolbar.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  92 => 46,  86 => 45,  78 => 41,  74 => 39,  69 => 37,  64 => 36,  62 => 35,  57 => 34,  54 => 33,  50 => 32,  47 => 31,  36 => 29,  32 => 28,  28 => 27,  24 => 26,  19 => 25,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#cd#48#7f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37/.htaccess b/sites/default/files/php/twig/1#cd#48#7f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#cd#48#7f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#cd#48#7f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37/b7c88bf46b8c4c7c04e23045f7c6c8b1b2ad10f5029acb539235dc83a76a1f09.php b/sites/default/files/php/twig/1#cd#48#7f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37/b7c88bf46b8c4c7c04e23045f7c6c8b1b2ad10f5029acb539235dc83a76a1f09.php
new file mode 100644
index 0000000..ecd3163
--- /dev/null
+++ b/sites/default/files/php/twig/1#cd#48#7f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37/b7c88bf46b8c4c7c04e23045f7c6c8b1b2ad10f5029acb539235dc83a76a1f09.php
@@ -0,0 +1,337 @@
+<?php
+
+/* core/themes/bartik/templates/page.html.twig */
+class __TwigTemplate_cd487f178a940f642b61ff51ccec71b3f7318ef68f1fdf1ddbb4ddd4c0bf9b37 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 77
+        echo "<div id=\"page-wrapper\">
+  <div id=\"page\">
+    <header id=\"header\" role=\"banner\" aria-label=\"";
+        // line 79
+        echo twig_render_var(t("Site header"));
+        echo "\">
+      <div class=\"section clearfix\">
+        ";
+        // line 81
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "secondary_menu", array()), "html", null, true);
+        echo "
+        ";
+        // line 82
+        if ((isset($context["logo"]) ? $context["logo"] : null)) {
+            // line 83
+            echo "          <a href=\"";
+            echo twig_drupal_escape_filter($this->env, (isset($context["front_page"]) ? $context["front_page"] : null), "html", null, true);
+            echo "\" title=\"";
+            echo twig_render_var(t("Home"));
+            echo "\" rel=\"home\" id=\"logo\">
+            <img src=\"";
+            // line 84
+            echo twig_drupal_escape_filter($this->env, (isset($context["logo"]) ? $context["logo"] : null), "html", null, true);
+            echo "\" alt=\"";
+            echo twig_render_var(t("Home"));
+            echo "\" />
+          </a>
+        ";
+        }
+        // line 87
+        echo "        ";
+        if (((isset($context["site_name"]) ? $context["site_name"] : null) || (isset($context["site_slogan"]) ? $context["site_slogan"] : null))) {
+            // line 88
+            echo "          <div id=\"name-and-slogan\"";
+            if (((isset($context["hide_site_name"]) ? $context["hide_site_name"] : null) && (isset($context["hide_site_slogan"]) ? $context["hide_site_slogan"] : null))) {
+                echo " class=\"visually-hidden\"";
+            }
+            echo ">
+            ";
+            // line 89
+            if ((isset($context["site_name"]) ? $context["site_name"] : null)) {
+                // line 90
+                echo "              ";
+                if ((isset($context["title"]) ? $context["title"] : null)) {
+                    // line 91
+                    echo "                <div id=\"site-name\"";
+                    if ((isset($context["hide_site_name"]) ? $context["hide_site_name"] : null)) {
+                        echo " class=\"visually-hidden\"";
+                    }
+                    echo ">
+                  <strong>
+                    <a href=\"";
+                    // line 93
+                    echo twig_drupal_escape_filter($this->env, (isset($context["front_page"]) ? $context["front_page"] : null), "html", null, true);
+                    echo "\" title=\"";
+                    echo twig_render_var(t("Home"));
+                    echo "\" rel=\"home\"><span>";
+                    echo twig_drupal_escape_filter($this->env, (isset($context["site_name"]) ? $context["site_name"] : null), "html", null, true);
+                    echo "</span></a>
+                  </strong>
+                </div>
+              ";
+                    // line 97
+                    echo "              ";
+                } else {
+                    // line 98
+                    echo "                <h1 id=\"site-name\"";
+                    if ((isset($context["hide_site_name"]) ? $context["hide_site_name"] : null)) {
+                        echo " class=\"visually-hidden\" ";
+                    }
+                    echo ">
+                  <a href=\"";
+                    // line 99
+                    echo twig_drupal_escape_filter($this->env, (isset($context["front_page"]) ? $context["front_page"] : null), "html", null, true);
+                    echo "\" title=\"";
+                    echo twig_render_var(t("Home"));
+                    echo "\" rel=\"home\"><span>";
+                    echo twig_drupal_escape_filter($this->env, (isset($context["site_name"]) ? $context["site_name"] : null), "html", null, true);
+                    echo "</span></a>
+                </h1>
+              ";
+                }
+                // line 102
+                echo "            ";
+            }
+            // line 103
+            echo "            ";
+            if ((isset($context["site_slogan"]) ? $context["site_slogan"] : null)) {
+                // line 104
+                echo "              <div id=\"site-slogan\"";
+                if ((isset($context["hide_site_slogan"]) ? $context["hide_site_slogan"] : null)) {
+                    echo " class=\"visually-hidden\"";
+                }
+                echo ">
+                ";
+                // line 105
+                echo twig_drupal_escape_filter($this->env, (isset($context["site_slogan"]) ? $context["site_slogan"] : null), "html", null, true);
+                echo "
+              </div>
+            ";
+            }
+            // line 108
+            echo "          </div><!-- /#name-and-slogan -->
+        ";
+        }
+        // line 110
+        echo "        ";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "header", array()), "html", null, true);
+        echo "
+        ";
+        // line 111
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "primary_menu", array()), "html", null, true);
+        echo "
+      </div> <!-- /.section -->
+    </header> <!-- /.section -->
+    ";
+        // line 114
+        if ((isset($context["messages"]) ? $context["messages"] : null)) {
+            // line 115
+            echo "      <div id=\"messages\">
+        <div class=\"section clearfix\">";
+            // line 116
+            echo twig_drupal_escape_filter($this->env, (isset($context["messages"]) ? $context["messages"] : null), "html", null, true);
+            echo "</div>
+      </div> <!-- /#messages -->
+    ";
+        }
+        // line 119
+        echo "    ";
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "featured", array())) {
+            // line 120
+            echo "      <div id=\"featured\">
+        <aside class=\"section clearfix\" role=\"complementary\">
+          ";
+            // line 122
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "featured", array()), "html", null, true);
+            echo "
+        </aside> <!-- /.section -->
+      </div> <!-- /#featured -->
+    ";
+        }
+        // line 126
+        echo "    <div id=\"main-wrapper\" class=\"clearfix\">
+      <div id=\"main\" class=\"clearfix\">
+        ";
+        // line 128
+        echo twig_drupal_escape_filter($this->env, (isset($context["breadcrumb"]) ? $context["breadcrumb"] : null), "html", null, true);
+        echo "
+        <main id=\"content\" class=\"column\" role=\"main\">
+          <section class=\"section\">
+            <a id=\"main-content\" tabindex=\"-1\"></a>
+            ";
+        // line 132
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_prefix"]) ? $context["title_prefix"] : null), "html", null, true);
+        echo "
+            ";
+        // line 133
+        if ((isset($context["title"]) ? $context["title"] : null)) {
+            // line 134
+            echo "              <h1 class=\"title\" id=\"page-title\">
+                ";
+            // line 135
+            echo twig_drupal_escape_filter($this->env, (isset($context["title"]) ? $context["title"] : null), "html", null, true);
+            echo "
+              </h1>
+            ";
+        }
+        // line 138
+        echo "            ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["title_suffix"]) ? $context["title_suffix"] : null), "html", null, true);
+        echo "
+            ";
+        // line 139
+        if ((isset($context["tabs"]) ? $context["tabs"] : null)) {
+            // line 140
+            echo "              <nav class=\"tabs\" role=\"navigation\" aria-label=\"";
+            echo twig_render_var(t("Tabs"));
+            echo "\">
+                ";
+            // line 141
+            echo twig_drupal_escape_filter($this->env, (isset($context["tabs"]) ? $context["tabs"] : null), "html", null, true);
+            echo "
+              </nav>
+            ";
+        }
+        // line 144
+        echo "            ";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "help", array()), "html", null, true);
+        echo "
+            ";
+        // line 145
+        if ((isset($context["action_links"]) ? $context["action_links"] : null)) {
+            // line 146
+            echo "              <ul class=\"action-links\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["action_links"]) ? $context["action_links"] : null), "html", null, true);
+            echo "</ul>
+            ";
+        }
+        // line 148
+        echo "            ";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "content", array()), "html", null, true);
+        echo "
+          </section>  <!-- /.section -->
+        </main> <!-- /#content -->
+        ";
+        // line 151
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_first", array())) {
+            // line 152
+            echo "          <div id=\"sidebar-first\" class=\"column sidebar\">
+            <aside class=\"section\" role=\"complementary\">
+              ";
+            // line 154
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_first", array()), "html", null, true);
+            echo "
+            </aside><!-- /.section -->
+          </div><!-- /#sidebar-first -->
+        ";
+        }
+        // line 158
+        echo "        ";
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_second", array())) {
+            // line 159
+            echo "          <div id=\"sidebar-second\" class=\"column sidebar\">
+            <aside class=\"section\" role=\"complementary\">
+              ";
+            // line 161
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "sidebar_second", array()), "html", null, true);
+            echo "
+            </aside> <!-- /.section -->
+          </div><!-- /#sidebar-second -->
+        ";
+        }
+        // line 165
+        echo "      </div> <!-- /#main -->
+    </div> <!-- /#main-wrapper -->
+    ";
+        // line 167
+        if ((($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "triptych_first", array()) || $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "triptych_middle", array())) || $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "triptych_last", array()))) {
+            // line 168
+            echo "      <div id=\"triptych-wrapper\">
+        <aside id=\"triptych\" class=\"clearfix\" role=\"complementary\">
+          ";
+            // line 170
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "triptych_first", array()), "html", null, true);
+            echo "
+          ";
+            // line 171
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "triptych_middle", array()), "html", null, true);
+            echo "
+          ";
+            // line 172
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "triptych_last", array()), "html", null, true);
+            echo "
+        </aside> <!-- /#triptych -->
+      </div> <!-- /#triptych-wrapper -->
+    ";
+        }
+        // line 176
+        echo "    <div id=\"footer-wrapper\">
+      <footer class=\"section\">
+        ";
+        // line 178
+        if (((($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_firstcolumn", array()) || $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_secondcolumn", array())) || $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_thirdcolumn", array())) || $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_fourthcolumn", array()))) {
+            // line 179
+            echo "          <div id=\"footer-columns\" class=\"clearfix\">
+            ";
+            // line 180
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_firstcolumn", array()), "html", null, true);
+            echo "
+            ";
+            // line 181
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_secondcolumn", array()), "html", null, true);
+            echo "
+            ";
+            // line 182
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_thirdcolumn", array()), "html", null, true);
+            echo "
+            ";
+            // line 183
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer_fourthcolumn", array()), "html", null, true);
+            echo "
+          </div> <!-- /#footer-columns -->
+        ";
+        }
+        // line 186
+        echo "        ";
+        if ($this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer", array())) {
+            // line 187
+            echo "          <div id=\"footer\" role=\"contentinfo\" class=\"clearfix\">
+            ";
+            // line 188
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["page"]) ? $context["page"] : null), "footer", array()), "html", null, true);
+            echo "
+          </div> <!-- /#footer -->
+        ";
+        }
+        // line 191
+        echo "      </footer> <!-- /.section -->
+    </div> <!-- /#footer-wrapper -->
+  </div> <!-- /#page -->
+</div> <!-- /#page-wrapper -->
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/themes/bartik/templates/page.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  316 => 191,  310 => 188,  307 => 187,  304 => 186,  298 => 183,  294 => 182,  290 => 181,  286 => 180,  283 => 179,  281 => 178,  277 => 176,  270 => 172,  266 => 171,  262 => 170,  258 => 168,  256 => 167,  252 => 165,  245 => 161,  241 => 159,  238 => 158,  231 => 154,  227 => 152,  225 => 151,  218 => 148,  212 => 146,  210 => 145,  205 => 144,  199 => 141,  194 => 140,  192 => 139,  187 => 138,  181 => 135,  178 => 134,  176 => 133,  172 => 132,  165 => 128,  161 => 126,  154 => 122,  150 => 120,  147 => 119,  141 => 116,  138 => 115,  136 => 114,  130 => 111,  125 => 110,  121 => 108,  115 => 105,  108 => 104,  105 => 103,  102 => 102,  92 => 99,  85 => 98,  82 => 97,  72 => 93,  64 => 91,  61 => 90,  59 => 89,  52 => 88,  49 => 87,  41 => 84,  34 => 83,  32 => 82,  28 => 81,  23 => 79,  19 => 77,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#d1#02#cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0/.htaccess b/sites/default/files/php/twig/1#d1#02#cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#d1#02#cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#d1#02#cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0/1ab623cdc0006fba4a58a7af81e7d388a581e15fe9bb3abce7dd8964cec09017.php b/sites/default/files/php/twig/1#d1#02#cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0/1ab623cdc0006fba4a58a7af81e7d388a581e15fe9bb3abce7dd8964cec09017.php
new file mode 100644
index 0000000..3afde7c
--- /dev/null
+++ b/sites/default/files/php/twig/1#d1#02#cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0/1ab623cdc0006fba4a58a7af81e7d388a581e15fe9bb3abce7dd8964cec09017.php
@@ -0,0 +1,67 @@
+<?php
+
+/* core/modules/system/templates/maintenance-task-list.html.twig */
+class __TwigTemplate_d102cf629174b5aa23813a0826f72e75aaa031545da6baec1c5ea2641a855cd0 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 17
+        echo "<h2 class=\"visually-hidden\">Installation tasks</h2>
+<ol class=\"task-list\">
+";
+        // line 19
+        $context['_parent'] = (array) $context;
+        $context['_seq'] = twig_ensure_traversable((isset($context["tasks"]) ? $context["tasks"] : null));
+        foreach ($context['_seq'] as $context["_key"] => $context["task"]) {
+            // line 20
+            echo "  <li";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["task"], "attributes", array()), "html", null, true);
+            echo ">
+    ";
+            // line 21
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["task"], "item", array()), "html", null, true);
+            echo "
+    ";
+            // line 22
+            if ($this->getAttribute($context["task"], "status", array())) {
+                echo "<span class=\"visually-hidden\"> (";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["task"], "status", array()), "html", null, true);
+                echo ")</span>";
+            }
+            // line 23
+            echo "  </li>
+";
+        }
+        $_parent = $context['_parent'];
+        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['task'], $context['_parent'], $context['loop']);
+        $context = array_intersect_key($context, $_parent) + $_parent;
+        // line 25
+        echo "</ol>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/maintenance-task-list.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  49 => 25,  42 => 23,  36 => 22,  32 => 21,  27 => 20,  23 => 19,  19 => 17,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#e1#59#98aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4/.htaccess b/sites/default/files/php/twig/1#e1#59#98aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#e1#59#98aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#e1#59#98aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4/cb555c13d4f894d147fa0501120a1aa815eddf3cf21429ac2828adb81aef14ce.php b/sites/default/files/php/twig/1#e1#59#98aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4/cb555c13d4f894d147fa0501120a1aa815eddf3cf21429ac2828adb81aef14ce.php
new file mode 100644
index 0000000..ee04240
--- /dev/null
+++ b/sites/default/files/php/twig/1#e1#59#98aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4/cb555c13d4f894d147fa0501120a1aa815eddf3cf21429ac2828adb81aef14ce.php
@@ -0,0 +1,94 @@
+<?php
+
+/* core/modules/system/templates/links.html.twig */
+class __TwigTemplate_e15998aa23139fe9d98af2c3300d8679744a9f989e72bd6d1f4c72f5ebd460b4 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 39
+        if ((isset($context["links"]) ? $context["links"] : null)) {
+            // line 40
+            if ((isset($context["heading"]) ? $context["heading"] : null)) {
+                // line 41
+                if ($this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "level", array())) {
+                    // line 42
+                    echo "<";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "level", array()), "html", null, true);
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "attributes", array()), "html", null, true);
+                    echo ">";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "text", array()), "html", null, true);
+                    echo "</";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "level", array()), "html", null, true);
+                    echo ">";
+                } else {
+                    // line 44
+                    echo "<h2";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "attributes", array()), "html", null, true);
+                    echo ">";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["heading"]) ? $context["heading"] : null), "text", array()), "html", null, true);
+                    echo "</h2>";
+                }
+            }
+            // line 47
+            echo "<ul";
+            echo twig_drupal_escape_filter($this->env, (isset($context["attributes"]) ? $context["attributes"] : null), "html", null, true);
+            echo ">";
+            // line 48
+            $context['_parent'] = (array) $context;
+            $context['_seq'] = twig_ensure_traversable((isset($context["links"]) ? $context["links"] : null));
+            foreach ($context['_seq'] as $context["key"] => $context["item"]) {
+                // line 49
+                echo "<li";
+                echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["item"], "attributes", array()), "addClass", array(0 => \Drupal\Component\Utility\Html::getClass($context["key"])), "method"), "html", null, true);
+                echo ">";
+                // line 50
+                if ($this->getAttribute($context["item"], "link", array())) {
+                    // line 51
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "link", array()), "html", null, true);
+                } elseif ($this->getAttribute($context["item"], "text_attributes", array())) {
+                    // line 53
+                    echo "<span";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "text_attributes", array()), "html", null, true);
+                    echo ">";
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "text", array()), "html", null, true);
+                    echo "</span>";
+                } else {
+                    // line 55
+                    echo twig_drupal_escape_filter($this->env, $this->getAttribute($context["item"], "text", array()), "html", null, true);
+                }
+                // line 57
+                echo "</li>";
+            }
+            $_parent = $context['_parent'];
+            unset($context['_seq'], $context['_iterated'], $context['key'], $context['item'], $context['_parent'], $context['loop']);
+            $context = array_intersect_key($context, $_parent) + $_parent;
+            // line 59
+            echo "</ul>";
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/links.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  76 => 59,  70 => 57,  67 => 55,  60 => 53,  57 => 51,  55 => 50,  51 => 49,  47 => 48,  43 => 47,  35 => 44,  25 => 42,  23 => 41,  21 => 40,  19 => 39,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#f1#7f#0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308/.htaccess b/sites/default/files/php/twig/1#f1#7f#0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#f1#7f#0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#f1#7f#0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308/b3e151793dc96843238e05d3feac8b24d874b74fef0d4c800efde21647c9fb12.php b/sites/default/files/php/twig/1#f1#7f#0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308/b3e151793dc96843238e05d3feac8b24d874b74fef0d4c800efde21647c9fb12.php
new file mode 100644
index 0000000..073af3f
--- /dev/null
+++ b/sites/default/files/php/twig/1#f1#7f#0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308/b3e151793dc96843238e05d3feac8b24d874b74fef0d4c800efde21647c9fb12.php
@@ -0,0 +1,56 @@
+<?php
+
+/* core/themes/bartik/templates/block--search-form-block.html.twig */
+class __TwigTemplate_f17f0449f57c046ad96e9966bf410fbb9aa22af2c95e0c94c0784f26676d8308 extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = $this->env->loadTemplate("@classy/block--search-form-block.html.twig");
+
+        $this->blocks = array(
+            'content' => array($this, 'block_content'),
+        );
+    }
+
+    protected function doGetParent(array $context)
+    {
+        return "@classy/block--search-form-block.html.twig";
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        $this->parent->display($context, array_merge($this->blocks, $blocks));
+    }
+
+    // line 19
+    public function block_content($context, array $blocks = array())
+    {
+        // line 20
+        echo "  <div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["content_attributes"]) ? $context["content_attributes"] : null), "addClass", array(0 => "content", 1 => "container-inline"), "method"), "html", null, true);
+        echo ">
+    ";
+        // line 21
+        $this->displayParentBlock("content", $context, $blocks);
+        echo "
+  </div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/themes/bartik/templates/block--search-form-block.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  36 => 21,  31 => 20,  28 => 19,);
+    }
+}
diff --git a/sites/default/files/php/twig/1#fc#be#1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b/.htaccess b/sites/default/files/php/twig/1#fc#be#1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b/.htaccess
new file mode 100644
index 0000000..91883a3
--- /dev/null
+++ b/sites/default/files/php/twig/1#fc#be#1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b/.htaccess
@@ -0,0 +1,23 @@
+# Deny all requests from Apache 2.4+.
+<IfModule mod_authz_core.c>
+  Require all denied
+</IfModule>
+
+# Deny all requests from Apache 2.0-2.2.
+<IfModule !mod_authz_core.c>
+  Deny from all
+</IfModule># Turn off all options we don't need.
+Options None
+Options +FollowSymLinks
+
+# Set the catch-all handler to prevent scripts from being executed.
+SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
+<Files *>
+  # Override the handler again if we're run later in the evaluation list.
+  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
+</Files>
+
+# If we know how to do it safely, disable the PHP engine entirely.
+<IfModule mod_php5.c>
+  php_flag engine off
+</IfModule>
\ No newline at end of file
diff --git a/sites/default/files/php/twig/1#fc#be#1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b/12cc5af0bf5b714416431c04a67ad2f1a6b9f0694a06a053a803b57714061158.php b/sites/default/files/php/twig/1#fc#be#1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b/12cc5af0bf5b714416431c04a67ad2f1a6b9f0694a06a053a803b57714061158.php
new file mode 100644
index 0000000..f635483
--- /dev/null
+++ b/sites/default/files/php/twig/1#fc#be#1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b/12cc5af0bf5b714416431c04a67ad2f1a6b9f0694a06a053a803b57714061158.php
@@ -0,0 +1,113 @@
+<?php
+
+/* core/modules/system/templates/form-element.html.twig */
+class __TwigTemplate_fcbe1f43c1d075c79d6ebc611521f5ef2ca956038c8b0e04b07da610d187a74b extends Twig_Template
+{
+    public function __construct(Twig_Environment $env)
+    {
+        parent::__construct($env);
+
+        $this->parent = false;
+
+        $this->blocks = array(
+        );
+    }
+
+    protected function doDisplay(array $context, array $blocks = array())
+    {
+        // line 49
+        $context["classes"] = array(0 => "form-item", 1 => ("form-type-" . \Drupal\Component\Utility\Html::getClass((isset($context["type"]) ? $context["type"] : null))), 2 => ("form-item-" . \Drupal\Component\Utility\Html::getClass((isset($context["name"]) ? $context["name"] : null))), 3 => ((!twig_in_filter((isset($context["title_display"]) ? $context["title_display"] : null), array(0 => "after", 1 => "before"))) ? ("form-no-label") : ("")), 4 => ((((isset($context["disabled"]) ? $context["disabled"] : null) == "disabled")) ? ("form-disabled") : ("")));
+        // line 58
+        $context["description_classes"] = array(0 => "description", 1 => ((((isset($context["description_display"]) ? $context["description_display"] : null) == "invisible")) ? ("visually-hidden") : ("")));
+        // line 63
+        echo "<div";
+        echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["attributes"]) ? $context["attributes"] : null), "addClass", array(0 => (isset($context["classes"]) ? $context["classes"] : null)), "method"), "html", null, true);
+        echo ">
+  ";
+        // line 64
+        if (twig_in_filter((isset($context["label_display"]) ? $context["label_display"] : null), array(0 => "before", 1 => "invisible"))) {
+            // line 65
+            echo "    ";
+            echo twig_drupal_escape_filter($this->env, (isset($context["label"]) ? $context["label"] : null), "html", null, true);
+            echo "
+  ";
+        }
+        // line 67
+        echo "  ";
+        if ((!twig_test_empty((isset($context["prefix"]) ? $context["prefix"] : null)))) {
+            // line 68
+            echo "    <span class=\"field-prefix\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["prefix"]) ? $context["prefix"] : null), "html", null, true);
+            echo "</span>
+  ";
+        }
+        // line 70
+        echo "  ";
+        if ((((isset($context["description_display"]) ? $context["description_display"] : null) == "before") && $this->getAttribute((isset($context["description"]) ? $context["description"] : null), "content", array()))) {
+            // line 71
+            echo "    <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["description"]) ? $context["description"] : null), "attributes", array()), "html", null, true);
+            echo ">
+      ";
+            // line 72
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["description"]) ? $context["description"] : null), "content", array()), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 75
+        echo "  ";
+        echo twig_drupal_escape_filter($this->env, (isset($context["children"]) ? $context["children"] : null), "html", null, true);
+        echo "
+  ";
+        // line 76
+        if ((!twig_test_empty((isset($context["suffix"]) ? $context["suffix"] : null)))) {
+            // line 77
+            echo "    <span class=\"field-suffix\">";
+            echo twig_drupal_escape_filter($this->env, (isset($context["suffix"]) ? $context["suffix"] : null), "html", null, true);
+            echo "</span>
+  ";
+        }
+        // line 79
+        echo "  ";
+        if (((isset($context["label_display"]) ? $context["label_display"] : null) == "after")) {
+            // line 80
+            echo "    ";
+            echo twig_drupal_escape_filter($this->env, (isset($context["label"]) ? $context["label"] : null), "html", null, true);
+            echo "
+  ";
+        }
+        // line 82
+        echo "  ";
+        if ((twig_in_filter((isset($context["description_display"]) ? $context["description_display"] : null), array(0 => "after", 1 => "invisible")) && $this->getAttribute((isset($context["description"]) ? $context["description"] : null), "content", array()))) {
+            // line 83
+            echo "    <div";
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["description"]) ? $context["description"] : null), "attributes", array()), "addClass", array(0 => (isset($context["description_classes"]) ? $context["description_classes"] : null)), "method"), "html", null, true);
+            echo ">
+      ";
+            // line 84
+            echo twig_drupal_escape_filter($this->env, $this->getAttribute((isset($context["description"]) ? $context["description"] : null), "content", array()), "html", null, true);
+            echo "
+    </div>
+  ";
+        }
+        // line 87
+        echo "</div>
+";
+    }
+
+    public function getTemplateName()
+    {
+        return "core/modules/system/templates/form-element.html.twig";
+    }
+
+    public function isTraitable()
+    {
+        return false;
+    }
+
+    public function getDebugInfo()
+    {
+        return array (  95 => 87,  89 => 84,  84 => 83,  81 => 82,  75 => 80,  72 => 79,  66 => 77,  64 => 76,  59 => 75,  53 => 72,  48 => 71,  45 => 70,  39 => 68,  36 => 67,  30 => 65,  28 => 64,  23 => 63,  21 => 58,  19 => 49,);
+    }
+}
diff --git a/sites/default/services.yml b/sites/default/services.yml
new file mode 100755
index 0000000..a5307ec
--- /dev/null
+++ b/sites/default/services.yml
@@ -0,0 +1,53 @@
+parameters:
+  twig.config:
+    # Twig debugging:
+    #
+    # When debugging is enabled:
+    # - The markup of each Twig template is surrounded by HTML comments that
+    #   contain theming information, such as template file name suggestions.
+    # - Note that this debugging markup will cause automated tests that directly
+    #   check rendered HTML to fail. When running automated tests, 'debug'
+    #   should be set to FALSE.
+    # - The dump() function can be used in Twig templates to output information
+    #   about template variables.
+    # - Twig templates are automatically recompiled whenever the source code
+    #   changes (see auto_reload below).
+    #
+    # For more information about debugging Twig templates, see
+    # http://drupal.org/node/1906392.
+    #
+    # Not recommended in production environments
+    # @default false
+    debug: false
+    # Twig auto-reload:
+    #
+    # Automatically recompile Twig templates whenever the source code changes.
+    # If you don't provide a value for auto_reload, it will be determined
+    # based on the value of debug.
+    #
+    # Not recommended in production environments
+    # @default null
+    auto_reload: null
+    # Twig cache:
+    #
+    # By default, Twig templates will be compiled and stored in the filesystem
+    # to increase performance. Disabling the Twig cache will recompile the
+    # templates from source each time they are used. In most cases the
+    # auto_reload setting above should be enabled rather than disabling the
+    # Twig cache.
+    #
+    # Not recommended in production environments
+    # @default true
+    cache: true
+  factory.keyvalue:
+    {}
+    # Default key/value storage service to use.
+    # @default keyvalue.database
+    # default: keyvalue.database
+    # Collection-specific overrides.
+    # state: keyvalue.database
+  factory.keyvalue.expirable:
+    {}
+    # Default key/value expirable storage service to use.
+    # @default keyvalue.database.expirable
+    # default: keyvalue.database.expirable
diff --git a/sites/default/settings.php b/sites/default/settings.php
new file mode 100755
index 0000000..87f3f26
--- /dev/null
+++ b/sites/default/settings.php
@@ -0,0 +1,646 @@
+<?php
+
+/**
+ * @file
+ * Drupal site-specific configuration file.
+ *
+ * IMPORTANT NOTE:
+ * This file may have been set to read-only by the Drupal installation program.
+ * If you make changes to this file, be sure to protect it again after making
+ * your modifications. Failure to remove write permissions to this file is a
+ * security risk.
+ *
+ * In order to use the selection rules below the multisite aliasing file named
+ * sites/sites.php must be present. Its optional settings will be loaded, and
+ * the aliases in the array $sites will override the default directory rules
+ * below. See sites/example.sites.php for more information about aliases.
+ *
+ * The configuration directory will be discovered by stripping the website's
+ * hostname from left to right and pathname from right to left. The first
+ * configuration file found will be used and any others will be ignored. If no
+ * other configuration file is found then the default configuration file at
+ * 'sites/default' will be used.
+ *
+ * For example, for a fictitious site installed at
+ * http://www.drupal.org:8080/mysite/test/, the 'settings.php' file is searched
+ * for in the following directories:
+ *
+ * - sites/8080.www.drupal.org.mysite.test
+ * - sites/www.drupal.org.mysite.test
+ * - sites/drupal.org.mysite.test
+ * - sites/org.mysite.test
+ *
+ * - sites/8080.www.drupal.org.mysite
+ * - sites/www.drupal.org.mysite
+ * - sites/drupal.org.mysite
+ * - sites/org.mysite
+ *
+ * - sites/8080.www.drupal.org
+ * - sites/www.drupal.org
+ * - sites/drupal.org
+ * - sites/org
+ *
+ * - sites/default
+ *
+ * Note that if you are installing on a non-standard port number, prefix the
+ * hostname with that number. For example,
+ * http://www.drupal.org:8080/mysite/test/ could be loaded from
+ * sites/8080.www.drupal.org.mysite.test/.
+ *
+ * @see example.sites.php
+ * @see conf_path()
+ *
+ * In addition to customizing application settings through variables in
+ * settings.php, you can create a services.yml file in the same directory to
+ * register custom, site-specific service definitions and/or swap out default
+ * implementations with custom ones.
+ */
+
+/**
+ * Database settings:
+ *
+ * The $databases array specifies the database connection or
+ * connections that Drupal may use.  Drupal is able to connect
+ * to multiple databases, including multiple types of databases,
+ * during the same request.
+ *
+ * Each database connection is specified as an array of settings,
+ * similar to the following:
+ * @code
+ * array(
+ *   'driver' => 'mysql',
+ *   'database' => 'databasename',
+ *   'username' => 'username',
+ *   'password' => 'password',
+ *   'host' => 'localhost',
+ *   'port' => 3306,
+ *   'prefix' => 'myprefix_',
+ *   'collation' => 'utf8_general_ci',
+ * );
+ * @endcode
+ *
+ * The "driver" property indicates what Drupal database driver the
+ * connection should use.  This is usually the same as the name of the
+ * database type, such as mysql or sqlite, but not always.  The other
+ * properties will vary depending on the driver.  For SQLite, you must
+ * specify a database file name in a directory that is writable by the
+ * webserver.  For most other drivers, you must specify a
+ * username, password, host, and database name.
+ *
+ * Transaction support is enabled by default for all drivers that support it,
+ * including MySQL. To explicitly disable it, set the 'transactions' key to
+ * FALSE.
+ * Note that some configurations of MySQL, such as the MyISAM engine, don't
+ * support it and will proceed silently even if enabled. If you experience
+ * transaction related crashes with such configuration, set the 'transactions'
+ * key to FALSE.
+ *
+ * For each database, you may optionally specify multiple "target" databases.
+ * A target database allows Drupal to try to send certain queries to a
+ * different database if it can but fall back to the default connection if not.
+ * That is useful for primary/replica replication, as Drupal may try to connect
+ * to a replica server when appropriate and if one is not available will simply
+ * fall back to the single primary server (The terms primary/replica are
+ * traditionally referred to as master/slave in database server documentation).
+ *
+ * The general format for the $databases array is as follows:
+ * @code
+ * $databases['default']['default'] = $info_array;
+ * $databases['default']['replica'][] = $info_array;
+ * $databases['default']['replica'][] = $info_array;
+ * $databases['extra']['default'] = $info_array;
+ * @endcode
+ *
+ * In the above example, $info_array is an array of settings described above.
+ * The first line sets a "default" database that has one primary database
+ * (the second level default).  The second and third lines create an array
+ * of potential replica databases.  Drupal will select one at random for a given
+ * request as needed.  The fourth line creates a new database with a name of
+ * "extra".
+ *
+ * For a single database configuration, the following is sufficient:
+ * @code
+ * $databases['default']['default'] = array(
+ *   'driver' => 'mysql',
+ *   'database' => 'databasename',
+ *   'username' => 'username',
+ *   'password' => 'password',
+ *   'host' => 'localhost',
+ *   'prefix' => 'main_',
+ *   'collation' => 'utf8_general_ci',
+ * );
+ * @endcode
+ *
+ * You can optionally set prefixes for some or all database table names
+ * by using the 'prefix' setting. If a prefix is specified, the table
+ * name will be prepended with its value. Be sure to use valid database
+ * characters only, usually alphanumeric and underscore. If no prefixes
+ * are desired, leave it as an empty string ''.
+ *
+ * To have all database names prefixed, set 'prefix' as a string:
+ * @code
+ *   'prefix' => 'main_',
+ * @endcode
+ * To provide prefixes for specific tables, set 'prefix' as an array.
+ * The array's keys are the table names and the values are the prefixes.
+ * The 'default' element is mandatory and holds the prefix for any tables
+ * not specified elsewhere in the array. Example:
+ * @code
+ *   'prefix' => array(
+ *     'default'   => 'main_',
+ *     'users'     => 'shared_',
+ *     'sessions'  => 'shared_',
+ *     'role'      => 'shared_',
+ *     'authmap'   => 'shared_',
+ *   ),
+ * @endcode
+ * You can also use a reference to a schema/database as a prefix. This may be
+ * useful if your Drupal installation exists in a schema that is not the default
+ * or you want to access several databases from the same code base at the same
+ * time.
+ * Example:
+ * @code
+ *   'prefix' => array(
+ *     'default'   => 'main.',
+ *     'users'     => 'shared.',
+ *     'sessions'  => 'shared.',
+ *     'role'      => 'shared.',
+ *     'authmap'   => 'shared.',
+ *   );
+ * @endcode
+ * NOTE: MySQL and SQLite's definition of a schema is a database.
+ *
+ * Advanced users can add or override initial commands to execute when
+ * connecting to the database server, as well as PDO connection settings. For
+ * example, to enable MySQL SELECT queries to exceed the max_join_size system
+ * variable, and to reduce the database connection timeout to 5 seconds:
+ *
+ * @code
+ * $databases['default']['default'] = array(
+ *   'init_commands' => array(
+ *     'big_selects' => 'SET SQL_BIG_SELECTS=1',
+ *   ),
+ *   'pdo' => array(
+ *     PDO::ATTR_TIMEOUT => 5,
+ *   ),
+ * );
+ * @endcode
+ *
+ * WARNING: These defaults are designed for database portability. Changing them
+ * may cause unexpected behavior, including potential data loss.
+ *
+ * @see DatabaseConnection_mysql::__construct
+ * @see DatabaseConnection_pgsql::__construct
+ * @see DatabaseConnection_sqlite::__construct
+ *
+ * Database configuration format:
+ * @code
+ *   $databases['default']['default'] = array(
+ *     'driver' => 'mysql',
+ *     'database' => 'databasename',
+ *     'username' => 'username',
+ *     'password' => 'password',
+ *     'host' => 'localhost',
+ *     'prefix' => '',
+ *   );
+ *   $databases['default']['default'] = array(
+ *     'driver' => 'pgsql',
+ *     'database' => 'databasename',
+ *     'username' => 'username',
+ *     'password' => 'password',
+ *     'host' => 'localhost',
+ *     'prefix' => '',
+ *   );
+ *   $databases['default']['default'] = array(
+ *     'driver' => 'sqlite',
+ *     'database' => '/path/to/databasefilename',
+ *   );
+ * @endcode
+ */
+$databases = array();
+
+/**
+ * Location of the site configuration files.
+ *
+ * The $config_directories array specifies the location of file system
+ * directories used for configuration data. On install, "active" and "staging"
+ * directories are created for configuration. The staging directory is used for
+ * configuration imports; the active directory is not used by default, since the
+ * default storage for active configuration is the database rather than the file
+ * system (this can be changed; see "Active configuration settings" below).
+ *
+ * The default location for the active and staging directories is inside a
+ * randomly-named directory in the public files path; this setting allows you to
+ * override these locations. If you use files for the active configuration, you
+ * can enhance security by putting the active configuration outside your
+ * document root.
+ *
+ * Example:
+ * @code
+ *   $config_directories = array(
+ *     CONFIG_ACTIVE_DIRECTORY => '/some/directory/outside/webroot',
+ *     CONFIG_STAGING_DIRECTORY => '/another/directory/outside/webroot',
+ *   );
+ * @endcode
+ */
+$config_directories = array();
+
+/**
+ * Settings:
+ *
+ * $settings contains environment-specific configuration, such as the files
+ * directory and reverse proxy address, and temporary configuration, such as
+ * security overrides.
+ *
+ * @see \Drupal\Core\Site\Settings::get()
+ */
+
+/**
+ * Salt for one-time login links, cancel links, form tokens, etc.
+ *
+ * This variable will be set to a random value by the installer. All one-time
+ * login links will be invalidated if the value is changed. Note that if your
+ * site is deployed on a cluster of web servers, you must ensure that this
+ * variable has the same value on each server.
+ *
+ * For enhanced security, you may set this variable to the contents of a file
+ * outside your document root; you should also ensure that this file is not
+ * stored with backups of your database.
+ *
+ * Example:
+ * @code
+ *   $settings['hash_salt'] = file_get_contents('/home/example/salt.txt');
+ * @endcode
+ */
+$settings['hash_salt'] = 'oikQgvm4UqDemWW1gZss_OK8n2_agvt3l0e0tcmE-E-rdF6fFklUtNHAX6Mrlfyt8Sje_J5giw';
+
+/**
+ * Access control for update.php script.
+ *
+ * If you are updating your Drupal installation using the update.php script but
+ * are not logged in using either an account with the "Administer software
+ * updates" permission or the site maintenance account (the account that was
+ * created during installation), you will need to modify the access check
+ * statement below. Change the FALSE to a TRUE to disable the access check.
+ * After finishing the upgrade, be sure to open this file again and change the
+ * TRUE back to a FALSE!
+ */
+$settings['update_free_access'] = FALSE;
+
+/**
+ * External access proxy settings:
+ *
+ * If your site must access the Internet via a web proxy then you can enter
+ * the proxy settings here. Currently only basic authentication is supported
+ * by using the username and password variables. The proxy_user_agent variable
+ * can be set to NULL for proxies that require no User-Agent header or to a
+ * non-empty string for proxies that limit requests to a specific agent. The
+ * proxy_exceptions variable is an array of host names to be accessed directly,
+ * not via proxy.
+ */
+# $settings['proxy_server'] = '';
+# $settings['proxy_port'] = 8080;
+# $settings['proxy_username'] = '';
+# $settings['proxy_password'] = '';
+# $settings['proxy_user_agent'] = '';
+# $settings['proxy_exceptions'] = array('127.0.0.1', 'localhost');
+
+/**
+ * Reverse Proxy Configuration:
+ *
+ * Reverse proxy servers are often used to enhance the performance
+ * of heavily visited sites and may also provide other site caching,
+ * security, or encryption benefits. In an environment where Drupal
+ * is behind a reverse proxy, the real IP address of the client should
+ * be determined such that the correct client IP address is available
+ * to Drupal's logging, statistics, and access management systems. In
+ * the most simple scenario, the proxy server will add an
+ * X-Forwarded-For header to the request that contains the client IP
+ * address. However, HTTP headers are vulnerable to spoofing, where a
+ * malicious client could bypass restrictions by setting the
+ * X-Forwarded-For header directly. Therefore, Drupal's proxy
+ * configuration requires the IP addresses of all remote proxies to be
+ * specified in $settings['reverse_proxy_addresses'] to work correctly.
+ *
+ * Enable this setting to get Drupal to determine the client IP from
+ * the X-Forwarded-For header (or $settings['reverse_proxy_header'] if set).
+ * If you are unsure about this setting, do not have a reverse proxy,
+ * or Drupal operates in a shared hosting environment, this setting
+ * should remain commented out.
+ *
+ * In order for this setting to be used you must specify every possible
+ * reverse proxy IP address in $settings['reverse_proxy_addresses'].
+ * If a complete list of reverse proxies is not available in your
+ * environment (for example, if you use a CDN) you may set the
+ * $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
+ * Be aware, however, that it is likely that this would allow IP
+ * address spoofing unless more advanced precautions are taken.
+ */
+# $settings['reverse_proxy'] = TRUE;
+
+/**
+ * Specify every reverse proxy IP address in your environment.
+ * This setting is required if $settings['reverse_proxy'] is TRUE.
+ */
+# $settings['reverse_proxy_addresses'] = array('a.b.c.d', ...);
+
+/**
+ * Set this value if your proxy server sends the client IP in a header
+ * other than X-Forwarded-For.
+ */
+# $settings['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
+
+/**
+ * Page caching:
+ *
+ * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page
+ * views. This tells a HTTP proxy that it may return a page from its local
+ * cache without contacting the web server, if the user sends the same Cookie
+ * header as the user who originally requested the cached page. Without "Vary:
+ * Cookie", authenticated users would also be served the anonymous page from
+ * the cache. If the site has mostly anonymous users except a few known
+ * editors/administrators, the Vary header can be omitted. This allows for
+ * better caching in HTTP proxies (including reverse proxies), i.e. even if
+ * clients send different cookies, they still get content served from the cache.
+ * However, authenticated users should access the site directly (i.e. not use an
+ * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid
+ * getting cached pages from the proxy.
+ */
+# $settings['omit_vary_cookie'] = TRUE;
+
+/**
+ * Class Loader.
+ *
+ * By default, Composer's ClassLoader is used, which is best for development, as
+ * it does not break when code is moved in the file system. You can decorate the
+ * class loader with a cached solution for better performance, which is
+ * recommended for production sites.
+ *
+ * To do so, you may decorate and replace the local $class_loader variable.
+ *
+ * For example, to use Symfony's APC class loader, uncomment the code below.
+ */
+/*
+if ($settings['hash_salt']) {
+  $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader('drupal.' . $settings['hash_salt'], $class_loader);
+  $class_loader->unregister();
+  $apc_loader->register();
+  $class_loader = $apc_loader;
+}
+*/
+
+/**
+ * Authorized file system operations:
+ *
+ * The Update Manager module included with Drupal provides a mechanism for
+ * site administrators to securely install missing updates for the site
+ * directly through the web user interface. On securely-configured servers,
+ * the Update manager will require the administrator to provide SSH or FTP
+ * credentials before allowing the installation to proceed; this allows the
+ * site to update the new files as the user who owns all the Drupal files,
+ * instead of as the user the webserver is running as. On servers where the
+ * webserver user is itself the owner of the Drupal files, the administrator
+ * will not be prompted for SSH or FTP credentials (note that these server
+ * setups are common on shared hosting, but are inherently insecure).
+ *
+ * Some sites might wish to disable the above functionality, and only update
+ * the code directly via SSH or FTP themselves. This setting completely
+ * disables all functionality related to these authorized file operations.
+ *
+ * @see http://drupal.org/node/244924
+ *
+ * Remove the leading hash signs to disable.
+ */
+# $settings['allow_authorize_operations'] = FALSE;
+
+/**
+ * Default mode for for directories and files written by Drupal.
+ *
+ * Value should be in PHP Octal Notation, with leading zero.
+ */
+# $settings['file_chmod_directory'] = 0775;
+# $settings['file_chmod_file'] = 0664;
+
+/**
+ * Public file path:
+ *
+ * A local file system path where public files will be stored. This directory
+ * must exist and be writable by Drupal. This directory must be relative to
+ * the Drupal installation directory and be accessible over the web.
+ */
+# $settings['file_public_path'] = 'sites/default/files';
+
+/**
+ * Private file path:
+ *
+ * A local file system path where private files will be stored. This directory
+ * must be absolute, outside of the the Drupal installation directory and not
+ * accessible over the web.
+ *
+ * Note: Caches need to be cleared when this value is changed to make the
+ * private:// stream wrapper available to the system.
+ *
+ * See http://drupal.org/documentation/modules/file for more information about
+ * securing private files.
+ */
+# $settings['file_private_path'] = '';
+
+/**
+ * Session write interval:
+ *
+ * Set the minimum interval between each session write to database.
+ * For performance reasons it defaults to 180.
+ */
+# $settings['session_write_interval'] = 180;
+
+/**
+ * String overrides:
+ *
+ * To override specific strings on your site with or without enabling the Locale
+ * module, add an entry to this list. This functionality allows you to change
+ * a small number of your site's default English language interface strings.
+ *
+ * Remove the leading hash signs to enable.
+ *
+ * The "en" part of the variable name, is dynamic and can be any langcode of
+ * any added language. (eg locale_custom_strings_de for german).
+ */
+# $settings['locale_custom_strings_en'][''] = array(
+#   'forum'      => 'Discussion board',
+#   '@count min' => '@count minutes',
+# );
+
+/**
+ * A custom theme for the offline page:
+ *
+ * This applies when the site is explicitly set to maintenance mode through the
+ * administration page or when the database is inactive due to an error.
+ * The template file should also be copied into the theme. It is located inside
+ * 'core/modules/system/templates/maintenance-page.html.twig'.
+ *
+ * Note: This setting does not apply to installation and update pages.
+ */
+# $settings['maintenance_theme'] = 'bartik';
+
+/**
+ * Base URL (optional).
+ *
+ * If Drupal is generating incorrect URLs on your site, which could
+ * be in HTML headers (links to CSS and JS files) or visible links on pages
+ * (such as in menus), uncomment the Base URL statement below (remove the
+ * leading hash sign) and fill in the absolute URL to your Drupal installation.
+ *
+ * You might also want to force users to use a given domain.
+ * See the .htaccess file for more information.
+ *
+ * Examples:
+ *   $base_url = 'http://www.example.com';
+ *   $base_url = 'http://www.example.com:8888';
+ *   $base_url = 'http://www.example.com/drupal';
+ *   $base_url = 'https://www.example.com:8888/drupal';
+ *
+ * It is not allowed to have a trailing slash; Drupal will add it
+ * for you.
+ */
+# $base_url = 'http://www.example.com';  // NO trailing slash!
+
+/**
+ * PHP settings:
+ *
+ * To see what PHP settings are possible, including whether they can be set at
+ * runtime (by using ini_set()), read the PHP documentation:
+ * http://php.net/manual/ini.list.php
+ * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime
+ * settings and the .htaccess file for non-runtime settings.
+ * Settings defined there should not be duplicated here so as to avoid conflict
+ * issues.
+ */
+
+/**
+ * Some distributions of Linux (most notably Debian) ship their PHP
+ * installations with garbage collection (gc) disabled. Since Drupal depends on
+ * PHP's garbage collection for clearing sessions, ensure that garbage
+ * collection occurs by using the most common settings.
+ */
+ini_set('session.gc_probability', 1);
+ini_set('session.gc_divisor', 100);
+
+/**
+ * Set session lifetime (in seconds), i.e. the time from the user's last visit
+ * to the active session may be deleted by the session garbage collector. When
+ * a session is deleted, authenticated users are logged out, and the contents
+ * of the user's $_SESSION variable is discarded.
+ */
+ini_set('session.gc_maxlifetime', 200000);
+
+/**
+ * Set session cookie lifetime (in seconds), i.e. the time from the session is
+ * created to the cookie expires, i.e. when the browser is expected to discard
+ * the cookie. The value 0 means "until the browser is closed".
+ */
+ini_set('session.cookie_lifetime', 2000000);
+
+/**
+ * If you encounter a situation where users post a large amount of text, and
+ * the result is stripped out upon viewing but can still be edited, Drupal's
+ * output filter may not have sufficient memory to process it.  If you
+ * experience this issue, you may wish to uncomment the following two lines
+ * and increase the limits of these variables.  For more information, see
+ * http://php.net/manual/pcre.configuration.php.
+ */
+# ini_set('pcre.backtrack_limit', 200000);
+# ini_set('pcre.recursion_limit', 200000);
+
+/**
+ * Drupal automatically generates a unique session cookie name for each site
+ * based on its full domain name. If you have multiple domains pointing at the
+ * same Drupal site, you can either redirect them all to a single domain (see
+ * comment in .htaccess), or uncomment the line below and specify their shared
+ * base domain. Doing so assures that users remain logged in as they cross
+ * between your various domains. Make sure to always start the $cookie_domain
+ * with a leading dot, as per RFC 2109.
+ */
+# $cookie_domain = '.example.com';
+
+/**
+ * Active configuration settings.
+ *
+ * By default, the active configuration is stored in the database in the
+ * {config} table. To use a different storage mechanism for the active
+ * configuration, do the following prior to installing:
+ * - Override the 'bootstrap_config_storage' setting here. It must be set to a
+ *   callable that returns an object that implements
+ *   \Drupal\Core\Config\StorageInterface.
+ * - Override the service definition 'config.storage.active'. Put this
+ *   override in a services.yml file in the same directory as settings.php
+ *   (definitions in this file will override service definition defaults).
+ */
+# $settings['bootstrap_config_storage'] = array('Drupal\Core\Config\BootstrapConfigStorageFactory', 'getFileStorage');
+
+/**
+ * Configuration overrides.
+ *
+ * To globally override specific configuration values for this site,
+ * set them here. You usually don't need to use this feature. This is
+ * useful in a configuration file for a vhost or directory, rather than
+ * the default settings.php.
+ *
+ * Note that any values you provide in these variable overrides will not be
+ * modifiable from the Drupal administration interface.
+ */
+# $config['system.site']['name'] = 'My Drupal site';
+# $config['system.theme']['default'] = 'stark';
+# $config['user.settings']['anonymous'] = 'Visitor';
+
+/**
+ * Fast 404 pages:
+ *
+ * Drupal can generate fully themed 404 pages. However, some of these responses
+ * are for images or other resource files that are not displayed to the user.
+ * This can waste bandwidth, and also generate server load.
+ *
+ * The options below return a simple, fast 404 page for URLs matching a
+ * specific pattern:
+ * - $conf['system.performance]['fast_404']['exclude_paths']: A regular
+ *   expression to match paths to exclude, such as images generated by image
+ *   styles, or dynamically-resized images. If you need to add more paths, you
+ *   can add '|path' to the expression.
+ * - $conf['system.performance]['fast_404']['paths']: A regular expression to
+ *   match paths that should return a simple 404 page, rather than the fully
+ *   themed 404 page. If you don't have any aliases ending in htm or html you
+ *   can add '|s?html?' to the expression.
+ * - $conf['system.performance]['fast_404']['html']: The html to return for
+ *   simple 404 pages.
+ *
+ * Remove the leading hash signs if you would like to alter this functionality.
+ */
+# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)\//';
+# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
+# $config['system.performance']['fast_404']['html'] = '<!DOCTYPE html><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL "@path" was not found on this server.</p></body></html>';
+
+/**
+ * Load local development override configuration, if available.
+ *
+ * Use settings.local.php to override variables on secondary (staging,
+ * development, etc) installations of this site. Typically used to disable
+ * caching, JavaScript/CSS compression, re-routing of outgoing emails, and
+ * other things that should not happen on development and testing sites.
+ *
+ * Keep this code block at the end of this file to take full effect.
+ */
+# if (file_exists(__DIR__ . '/settings.local.php')) {
+#   include __DIR__ . '/settings.local.php';
+# }
+$databases['default']['default'] = array (
+  'database' => 'drupal8',
+  'username' => 'root',
+  'password' => 'root',
+  'prefix' => '',
+  'host' => 'localhost',
+  'port' => '3306',
+  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
+  'driver' => 'mysql',
+);
+$settings['install_profile'] = 'standard';
+$config_directories['active'] = 'sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/active';
+$config_directories['staging'] = 'sites/default/files/config_16TsdGAmJT-BXm-dtcIEoMSsG9nnBrvT_5cNN7C4dmdrKQWokU8GdP8x3TfvhEVcSE9rkWRZBg/staging';
